<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>190733</bug_id>
          
          <creation_ts>2018-10-18 14:12:37 -0700</creation_ts>
          <short_desc>Check in corresponding C code in JetStream 2</short_desc>
          <delta_ts>2018-10-28 11:12:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>rniwa</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1470662</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-18 14:12:37 -0700</bug_when>
    <thetext>For Wasm and asm.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472266</commentid>
    <comment_count>1</comment_count>
      <attachid>353131</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-25 17:16:03 -0700</bug_when>
    <thetext>Created attachment 353131
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472267</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-25 17:18:16 -0700</bug_when>
    <thetext>Filip Pizlo has rubber stamped this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472268</commentid>
    <comment_count>3</comment_count>
      <attachid>353132</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-25 17:19:11 -0700</bug_when>
    <thetext>Created attachment 353132
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472830</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-28 11:11:15 -0700</bug_when>
    <thetext>I forgot to update this, I landed this already:
https://trac.webkit.org/changeset/237442/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472831</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-28 11:12:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/45622154&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353131</attachid>
            <date>2018-10-25 17:16:03 -0700</date>
            <delta_ts>2018-10-25 17:19:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>1793685</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzc0MzkpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBAQAorMjAxOC0xMC0yNSAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBDaGVjayBpbiBjb3Jy
ZXNwb25kaW5nIEMgY29kZSBpbiBKZXRTdHJlYW0gMgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKZXRTdHJlYW0yL3NpbXBsZS9mbG9hdC1tbS5jOiBB
ZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vSGFzaFNldC5jcHA6IEFkZGVkLgorICAg
ICAgICAqIEpldFN0cmVhbTIvd2FzbS9nY2MtbG9vcHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBK
ZXRTdHJlYW0yL3dhc20vcXVpY2tzb3J0LmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIv
d2FzbS90c2Y6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvYnVpbGQuc2g6
IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvY29uZmlnLmg6IEFkZGVkLgor
ICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvZ3BjLmg6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvZ3BjX2NvZGVfZ2VuX3V0aWwuYzogQWRkZWQuCisgICAgICAgICog
SmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb24uYzogQWRkZWQuCisgICAgICAgICog
SmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fZGlzcGF0Y2guZ2VuOiBBZGRlZC4K
KyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnN0cnVjdGlvbl9zaXplLmdlbjog
QWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3Rh
Y2tfZWZmZWN0cy5nZW46IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvZ3Bj
X2luc3RydWN0aW9uX3N0YXRpY19zaXplLmdlbjogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFt
Mi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fdG9fc3RyaW5nLmdlbjogQWRkZWQuCisgICAgICAg
ICogSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW50X2NvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAg
KiBKZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRhYmxlLmM6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvZ3BjX2ludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0
cmVhbTIvd2FzbS90c2YvZ3BjX2ludGVycHJldGVyLmdlbjogQWRkZWQuCisgICAgICAgICogSmV0
U3RyZWFtMi93YXNtL3RzZi9ncGNfcHJvZ3JhbS5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJl
YW0yL3dhc20vdHNmL2dwY19wcm90by5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dh
c20vdHNmL2dwY19zdGFja19oZWlnaHQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93
YXNtL3RzZi9ncGNfdGhyZWFkZWQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNt
L3RzZi9ncGNfd29ya2xpc3QuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2YuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYWRhcHRp
dmVfcmVhZGVyLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2Fz
cHJpbnRmLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2F0b21p
Y3MuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3JlYWRl
ci5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9idWZfd3JpdGVy
LmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1ZmZlci5jOiBB
ZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9idWlsZF9kZWZpbmVzLmg6
IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2NvbmZpZy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb25maWdfc3R1Yi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb3BpZXIuYzogQWRkZWQuCisg
ICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVmaW5lX2hlbHBlcnMuYzogQWRkZWQu
CisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVmaW5lX2hlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVzdHJ1Y3Rvci5jOiBBZGRl
ZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9lcnJvci5jOiBBZGRlZC4KKyAg
ICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mb3JtYXQuaDogQWRkZWQuCisgICAgICAg
ICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZnNkYi5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRT
dHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiX3Byb3RvY29sLmM6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX2ZzZGJfcHJvdG9jb2wuaDogQWRkZWQuCisgICAgICAgICog
SmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZ2VuZXJhdG9yLmM6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX2dwY19jb2RlX2dlbi5jOiBBZGRlZC4KKyAgICAgICAgKiBK
ZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pbmRlbnQuaDogQWRkZWQuCisgICAgICAgICogSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2ZfaW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfaW50ZXJuYWxfY29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0
cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsX2NvbmZpZ19zdHViLmg6IEFkZGVkLgorICAgICAg
ICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludHR5cGVzLmg6IEFkZGVkLgorICAgICAgICAq
IEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lvLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVh
bTIvd2FzbS90c2YvdHNmX2lvX3V0aWxzLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIv
d2FzbS90c2YvdHNmX2lyLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX2lyLmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyX2Rp
ZmZlcmVudC5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pcl9k
aWZmZXJlbnQuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaXJf
c3BlZWQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbGltaXRz
LmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX25hbWVkX3R5cGUu
YzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbmF0aXZlLmM6IEFk
ZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3BhcnNlci5jOiBBZGRlZC4K
KyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9wcmltaXRpdmUuYzogQWRkZWQuCisg
ICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmFfdHlwZV9tYW4uYzogQWRkZWQuCisg
ICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmVmbGVjdC5jOiBBZGRlZC4KKyAgICAg
ICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9yZWdpb24uaDogQWRkZWQuCisgICAgICAgICog
SmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc2VyaWFsX2luX21hbi5jOiBBZGRlZC4KKyAgICAgICAg
KiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfb3V0X21hbi5jOiBBZGRlZC4KKyAgICAg
ICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfcHJvdG9jb2wuaDogQWRkZWQuCisg
ICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc2hhMS5jOiBBZGRlZC4KKyAgICAgICAg
KiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zaGExLmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3NoYTFfd3JpdGVyLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3NvcnQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93
YXNtL3RzZi90c2Zfc3QuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90
c2Zfc3QuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc3RfdHlw
ZXRhYmxlLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3N0cmVh
bV9maWxlX2lucHV0LmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3N0cmVhbV9maWxlX291dHB1dC5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl90eXBlLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3R5cGVfaW5fbWFwLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3R5cGVfb3V0X21hcC5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl90eXBlX3RhYmxlLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3R5cGVzLmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3V0aWwu
aDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfdmVyc2lvbi5jOiBB
ZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfYWJzdHJhY3QuYzog
QWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2Fic3RyYWN0Lmg6
IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9hdHRyLmM6IEFk
ZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9yZWFkZXIuYzogQWRk
ZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX3dyaXRlci5jOiBBZGRl
ZC4KKwogMjAxOC0xMC0xOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYWtlIEpldFN0cmVhbSAyCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
c2ltcGxlL2Zsb2F0LW1tLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3NpbXBsZS9mbG9hdC1tbS5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
SmV0U3RyZWFtMi9zaW1wbGUvZmxvYXQtbW0uYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
MCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNkZWZpbmUg
IG5pbAkJMAorI2RlZmluZQkgZmFsc2UJCTAKKyNkZWZpbmUgIHRydWUJCTEKKyNkZWZpbmUgIGJ1
YmJsZWJhc2UJMS42MWYKKyNkZWZpbmUgIGRuZmJhc2UgCTMuNWYKKyNkZWZpbmUgIHBlcm1iYXNl
IAkxLjc1ZgorI2RlZmluZSAgcXVlZW5zYmFzZSAxLjgzZgorI2RlZmluZSAgdG93ZXJzYmFzZSAy
LjM5ZgorI2RlZmluZSAgcXVpY2tiYXNlIAkxLjkyZgorI2RlZmluZSAgaW50bW1iYXNlIAkxLjQ2
ZgorI2RlZmluZSAgdHJlZWJhc2UgCTIuNWYKKyNkZWZpbmUgIG1tYmFzZSAJMC4wZgorI2RlZmlu
ZSAgZnBtbWJhc2UgCTIuOTJmCisjZGVmaW5lICBwdXp6bGViYXNlCTAuNWYKKyNkZWZpbmUgIGZm
dGJhc2UgCTAuMGYKKyNkZWZpbmUgIGZwZmZ0YmFzZSAJNC40NGYKKyAgICAvKiBUb3dlcnMgKi8K
KyNkZWZpbmUgbWF4Y2VsbHMgCSAxOAorCisgICAgLyogSW50bW0sIE1tICovCisjZGVmaW5lIHJv
d3NpemUgCSA0MAorCisgICAgLyogUHV6emxlICovCisjZGVmaW5lIHNpemUJIAkgNTExCisjZGVm
aW5lIGNsYXNzbWF4IAkgMworI2RlZmluZSB0eXBlbWF4IAkgMTIKKyNkZWZpbmUgZCAJCSAgICAg
OAorCisgICAgLyogQnViYmxlLCBRdWljayAqLworI2RlZmluZSBzb3J0ZWxlbWVudHMgNTAwMAor
I2RlZmluZSBzcnRlbGVtZW50cyAgNTAwCisKKyAgICAvKiBmZnQgKi8KKyNkZWZpbmUgZmZ0c2l6
ZSAJIDI1NiAKKyNkZWZpbmUgZmZ0c2l6ZTIgCSAxMjkgIAorLyoKK3R5cGUgKi8KKyAgICAvKiBQ
ZXJtICovCisjZGVmaW5lIHBlcm1yYW5nZSAgICAgMTAKKworICAgLyogdHJlZSAqLworc3RydWN0
IG5vZGUgeworCXN0cnVjdCBub2RlICpsZWZ0LCpyaWdodDsKKwlpbnQgdmFsOworfTsKKworICAg
IC8qIFRvd2VycyAqLyAvKgorICAgIGRpc2NzaXpyYW5nZSA9IDEuLm1heGNlbGxzOyAqLworI2Rl
ZmluZSAgICBzdGFja3JhbmdlCTMKKy8qICAgIGNlbGxjdXJzb3IgPSAwLi5tYXhjZWxsczsgKi8K
K3N0cnVjdCAgICBlbGVtZW50IHsKKwlpbnQgZGlzY3NpemU7CisJaW50IG5leHQ7Cit9OworLyog
ICAgZW1zZ3R5cGUgPSBwYWNrZWQgYXJyYXlbMS4uMTVdIG9mIGNoYXI7CisqLworICAgIC8qIElu
dG1tLCBNbSAqLyAvKgorICAgIGluZGV4ID0gMSAuLiByb3dzaXplOworICAgIGludG1hdHJpeCA9
IGFycmF5IFtpbmRleCxpbmRleF0gb2YgaW50ZWdlcjsKKyAgICByZWFsbWF0cml4ID0gYXJyYXkg
W2luZGV4LGluZGV4XSBvZiByZWFsOworKi8KKyAgICAvKiBQdXp6bGUgKi8gLyoKKyAgICBwaWVj
ZWNsYXNzID0gMC4uY2xhc3NtYXg7CisgICAgcGllY2V0eXBlID0gMC4udHlwZW1heDsKKyAgICBw
b3NpdGlvbiA9IDAuLnNpemU7CisqLworICAgIC8qIEJ1YmJsZSwgUXVpY2sgKi8gLyoKKyAgICBs
aXN0c2l6ZSA9IDAuLnNvcnRlbGVtZW50czsKKyAgICBzb3J0YXJyYXkgPSBhcnJheSBbbGlzdHNp
emVdIG9mIGludGVnZXI7CisqLworICAgIC8qIEZGVCAqLworc3RydWN0ICAgIGNvbXBsZXggeyBm
bG9hdCBycCwgaXA7IH0gOworLyoKKyAgICBjYXJyYXkgPSBhcnJheSBbMS4uZmZ0c2l6ZV0gb2Yg
Y29tcGxleCA7CisgICAgYzJhcnJheSA9IGFycmF5IFsxLi5mZnRzaXplMl0gb2YgY29tcGxleCA7
CisqLworCitmbG9hdCB2YWx1ZSwgZml4ZWQsIGZsb2F0ZWQ7CisKKyAgICAvKiBnbG9iYWwgKi8K
K2xvbmcgICAgc2VlZDsgIC8qIGNvbnZlcnRlZCB0byBsb25nIGZvciAxNiBiaXQgV1IqLworCisg
ICAgLyogUGVybSAqLworaW50ICAgIHBlcm1hcnJheVtwZXJtcmFuZ2UrMV07CisvKiBjb252ZXJ0
ZWQgcGN0ciB0byB1bnNpZ25lZCBpbnQgZm9yIDE2IGJpdCBXUiovCit1bnNpZ25lZCBpbnQgICAg
cGN0cjsKKworICAgIC8qIHRyZWUgKi8KK3N0cnVjdCBub2RlICp0cmVlOworCisgICAgLyogVG93
ZXJzICovCitpbnQJICAgc3RhY2tbc3RhY2tyYW5nZSsxXTsKK3N0cnVjdCBlbGVtZW50ICAgIGNl
bGxzcGFjZVttYXhjZWxscysxXTsKK2ludCAgICBmcmVlbGlzdCwgIG1vdmVzZG9uZTsKKworICAg
IC8qIEludG1tLCBNbSAqLworCitpbnQgICBpbWFbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBpbWJb
cm93c2l6ZSsxXVtyb3dzaXplKzFdLCBpbXJbcm93c2l6ZSsxXVtyb3dzaXplKzFdOworZmxvYXQg
cm1hW3Jvd3NpemUrMV1bcm93c2l6ZSsxXSwgcm1iW3Jvd3NpemUrMV1bcm93c2l6ZSsxXSwgcm1y
W3Jvd3NpemUrMV1bcm93c2l6ZSsxXTsKKworICAgIC8qIFB1enpsZSAqLworaW50CXBpZWNlY291
bnRbY2xhc3NtYXgrMV0sCWNsYXNzW3R5cGVtYXgrMV0sIHBpZWNlbWF4W3R5cGVtYXgrMV07Citp
bnQJcHV6emxbc2l6ZSsxXSwgcFt0eXBlbWF4KzFdW3NpemUrMV0sIG4sIGtvdW50OworCisgICAg
LyogQnViYmxlLCBRdWljayAqLworaW50IHNvcnRsaXN0W3NvcnRlbGVtZW50cysxXSwgYmlnZ2Vz
dCwgbGl0dGxlc3QsIHRvcDsKKworICAgIC8qIEZGVCAqLworc3RydWN0IGNvbXBsZXggICAgeltm
ZnRzaXplKzFdLCB3W2ZmdHNpemUrMV0sIGVbZmZ0c2l6ZTIrMV07CitmbG9hdCAgICB6ciwgemk7
CisKK3ZvaWQgSW5pdHJhbmQgKCkgeworICAgIHNlZWQgPSA3NDc1NUw7ICAgLyogY29uc3RhbnQg
dG8gbG9uZyBXUiovCit9CisKK2ludCBSYW5kICgpIHsKKyAgICBzZWVkID0gKHNlZWQgKiAxMzA5
TCArIDEzODQ5TCkgJiA2NTUzNUw7ICAvKiBjb25zdGFudHMgdG8gbG9uZyBXUiovCisgICAgcmV0
dXJuKCAoaW50KXNlZWQgKTsgICAgIC8qIHR5cGVjYXN0IGJhY2sgdG8gaW50IFdSKi8KK30KKwor
CisgICAgLyogTXVsdGlwbGllcyB0d28gcmVhbCBtYXRyaWNlcy4gKi8KKwordm9pZCBySW5pdG1h
dHJpeCAoIGZsb2F0IG1bcm93c2l6ZSsxXVtyb3dzaXplKzFdICkgeworCWludCB0ZW1wLCBpLCBq
OworCWZvciAoIGkgPSAxOyBpIDw9IHJvd3NpemU7IGkrKyApCisJICAgIGZvciAoIGogPSAxOyBq
IDw9IHJvd3NpemU7IGorKyApIHsKKwkgICAgCXRlbXAgPSBSYW5kKCk7CisJCQltW2ldW2pdID0g
KGZsb2F0KSh0ZW1wIC0gKHRlbXAvMTIwKSoxMjAgLSA2MCkvMzsKKyAgICAgICAgfQorfQorCit2
b2lkIHJJbm5lcnByb2R1Y3QoZmxvYXQgKnJlc3VsdCwgZmxvYXQgYVtyb3dzaXplKzFdW3Jvd3Np
emUrMV0sIGZsb2F0IGJbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBpbnQgcm93LCBpbnQgY29sdW1u
KSB7CisJLyogY29tcHV0ZXMgdGhlIGlubmVyIHByb2R1Y3Qgb2YgQVtyb3csKl0gYW5kIEJbKixj
b2x1bW5dICovCisJaW50IGk7CisJKnJlc3VsdCA9IDAuMGY7CisJZm9yIChpID0gMTsgaTw9cm93
c2l6ZTsgaSsrKSAqcmVzdWx0ID0gKnJlc3VsdCthW3Jvd11baV0qYltpXVtjb2x1bW5dOworfQor
Cit2b2lkIE1tIChpbnQgcnVuKSAgICB7CisgICAgaW50IGksIGo7CisgICAgSW5pdHJhbmQoKTsK
KyAgICBySW5pdG1hdHJpeCAocm1hKTsKKyAgICBySW5pdG1hdHJpeCAocm1iKTsKKyAgICBmb3Ig
KCBpID0gMTsgaSA8PSByb3dzaXplOyBpKysgKQorCQlmb3IgKCBqID0gMTsgaiA8PSByb3dzaXpl
OyBqKysgKSAKKwkJCXJJbm5lcnByb2R1Y3QoJnJtcltpXVtqXSxybWEscm1iLGksaik7CisgICAg
aWYgKHJ1biA8IHJvd3NpemUpCisgICAgICBwcmludGYoIiVmXG4iLCBybXJbcnVuICsgMV1bcnVu
ICsgMV0pOworfQorCitpbnQgbWFpbigpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IDUw
MDA7IGkrKykgTW0oaSk7CisJcmV0dXJuIDA7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0pldFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzNDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2RlZmluZSBOREVCVUcgMQorCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKy8vIENvbXBpbGUgd2l0aDogeGNy
dW4gY2xhbmcrKyAtbyBIYXNoU2V0IEhhc2hTZXQuY3BwIC1PMiAtVyAtZnJhbWV3b3JrIEZvdW5k
YXRpb24gLWxpY3Vjb3JlIC1zdGQ9YysrMTEgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtRE5ERUJVRz0x
CisvLyBPciBmb3Igd2FzbTogZW0rKyAtbyBIYXNoU2V0LmpzIC1vIEhhc2hTZXQuaHRtbCBIYXNo
U2V0LmNwcCAtTzIgLVcgLXN0ZD1jKysxMSAtRE5ERUJVRz0xIC1nMSAtcyBXQVNNPTEgLXMgVE9U
QUxfTUVNT1JZPTUyNDI4ODAwCisKKyNkZWZpbmUgQUxXQVlTX0lOTElORSBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQorCisjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0
ZDo6bW92ZSh2YWx1ZSkKKworI2RlZmluZSBBU1NFUlQoZXhwKSBkbyB7IH0gd2hpbGUoMCkKKyNk
ZWZpbmUgQVNTRVJUX1VOVVNFRCh2YXIsIGV4cCkgZG8geyAodm9pZCkodmFyKTsgfSB3aGlsZSgw
KQorI2RlZmluZSBSRUxFQVNFX0FTU0VSVChleHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIShleHApKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIlczolZDogYXNzZXJ0aW9uIGZhaWxlZDogJXNcbiIsIF9fRklMRV9fLCBfX0xJ
TkVfXywgI2V4cCk7IFwKKyAgICAgICAgICAgIGFib3J0KCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlKDApCisKKyNkZWZpbmUgQVNTRVJUX0RJU0FCTEVEIDEKKworI2RlZmluZSBEVU1QX0hB
U0hUQUJMRV9TVEFUUyAwCisjZGVmaW5lIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRSAw
CisKKy8vIFRoaXMgdmVyc2lvbiBvZiBwbGFjZW1lbnQgbmV3IG9taXRzIGEgMCBjaGVjay4KK2Vu
dW0gTm90TnVsbFRhZyB7IE5vdE51bGwgfTsKK2lubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikKK3sKKyAgICBBU1NFUlQobG9jYXRpb24p
OworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB1
aW50MzJfdCByb3VuZFVwVG9Qb3dlck9mVHdvKHVpbnQzMl90IHYpCit7CisgICAgdi0tOworICAg
IHYgfD0gdiA+PiAxOworICAgIHYgfD0gdiA+PiAyOworICAgIHYgfD0gdiA+PiA0OworICAgIHYg
fD0gdiA+PiA4OworICAgIHYgfD0gdiA+PiAxNjsKKyAgICB2Kys7CisgICAgcmV0dXJuIHY7Cit9
CisKKy8qCisgKiBDKysncyBpZGVhIG9mIGEgcmVpbnRlcnByZXRfY2FzdCBsYWNrcyBzdWZmaWNp
ZW50IGNvam9uZXMuCisgKi8KK3RlbXBsYXRlPHR5cGVuYW1lIFRvVHlwZSwgdHlwZW5hbWUgRnJv
bVR5cGU+CitpbmxpbmUgVG9UeXBlIGJpdHdpc2VfY2FzdChGcm9tVHlwZSBmcm9tKQoreworICAg
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFRvVHlwZT46OnR5cGUgdG8geyB9OworICAgIHN0
ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOworICAgIHJldHVybiB0bzsKK30KKwor
ZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07
CitlbnVtIEhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlIHsgSGFzaFRhYmxlRW1wdHlWYWx1ZSB9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihUKiBwKSB7IHJldHVybiBw
OyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNTbWFydFB0ciB7CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBib29sIGlzU21hcnRQdHI+CitzdHJ1Y3QgR2V0UHRySGVscGVyQmFzZTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR2V0UHRySGVscGVyQmFzZTxULCBmYWxzZSAvKiBpc1NtYXJ0
UHRyICovPiB7CisgICAgdHlwZWRlZiBUKiBQdHJUeXBlOworICAgIHN0YXRpYyBUKiBnZXRQdHIo
VCYgcCkgeyByZXR1cm4gc3RkOjphZGRyZXNzb2YocCk7IH0KK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorc3RydWN0IEdldFB0ckhlbHBlckJhc2U8VCwgdHJ1ZSAvKiBpc1NtYXJ0UHRyICov
PiB7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpQdHJUeXBlIFB0clR5cGU7CisgICAgc3RhdGlj
IFB0clR5cGUgZ2V0UHRyKGNvbnN0IFQmIHApIHsgcmV0dXJuIHAuZ2V0KCk7IH0KK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEdldFB0ckhlbHBlciA6IEdldFB0ckhlbHBlckJh
c2U8VCwgSXNTbWFydFB0cjxUPjo6dmFsdWU+IHsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgoraW5saW5lIHR5cGVuYW1lIEdldFB0ckhlbHBlcjxUPjo6UHRyVHlwZSBnZXRQdHIoVCYgcCkK
K3sKKyAgICByZXR1cm4gR2V0UHRySGVscGVyPFQ+OjpnZXRQdHIocCk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgoraW5saW5lIHR5cGVuYW1lIEdldFB0ckhlbHBlcjxUPjo6UHRyVHlwZSBn
ZXRQdHIoY29uc3QgVCYgcCkKK3sKKyAgICByZXR1cm4gR2V0UHRySGVscGVyPFQ+OjpnZXRQdHIo
cCk7Cit9CisKKy8vIEV4cGxpY2l0IHNwZWNpYWxpemF0aW9uIGZvciBDKysgc3RhbmRhcmQgbGli
cmFyeSB0eXBlcy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERlbGV0ZXI+IHN0
cnVjdCBJc1NtYXJ0UHRyPHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPj4geworICAgIHN0YXRp
YyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBEZWxldGVyPgorc3RydWN0IEdldFB0ckhlbHBlcjxzdGQ6OnVuaXF1ZV9wdHI8VCwg
RGVsZXRlcj4+IHsKKyAgICB0eXBlZGVmIFQqIFB0clR5cGU7CisgICAgc3RhdGljIFQqIGdldFB0
cihjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4mIHApIHsgcmV0dXJuIHAuZ2V0KCk7
IH0KK307CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4gc3RydWN0IEludFR5cGVzOworICAg
IHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDE+IHsgdHlwZWRlZiBpbnQ4X3QgU2lnbmVkVHlw
ZTsgdHlwZWRlZiB1aW50OF90IFVuc2lnbmVkVHlwZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBJbnRUeXBlczwyPiB7IHR5cGVkZWYgaW50MTZfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQx
Nl90IFVuc2lnbmVkVHlwZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw0PiB7
IHR5cGVkZWYgaW50MzJfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQzMl90IFVuc2lnbmVkVHlw
ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw4PiB7IHR5cGVkZWYgaW50NjRf
dCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2lnbmVkVHlwZTsgfTsKKworICAgIC8v
IGludGVnZXIgaGFzaCBmdW5jdGlvbgorCisgICAgLy8gVGhvbWFzIFdhbmcncyAzMiBCaXQgTWl4
IEZ1bmN0aW9uOiBodHRwOi8vd3d3LmNyaXMuY29tL35UdHdhbmcvdGVjaC9pbnRoYXNoLmh0bQor
ICAgIGlubGluZSB1bnNpZ25lZCBpbnRIYXNoKHVpbnQ4X3Qga2V5OCkKKyAgICB7CisgICAgICAg
IHVuc2lnbmVkIGtleSA9IGtleTg7CisgICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7CisgICAg
ICAgIGtleSBePSAoa2V5ID4+IDEwKTsKKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7CisgICAg
ICAgIGtleSBePSAoa2V5ID4+IDYpOworICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOworICAg
ICAgICBrZXkgXj0gKGtleSA+PiAxNik7CisgICAgICAgIHJldHVybiBrZXk7CisgICAgfQorCisg
ICAgLy8gVGhvbWFzIFdhbmcncyAzMiBCaXQgTWl4IEZ1bmN0aW9uOiBodHRwOi8vd3d3LmNyaXMu
Y29tL35UdHdhbmcvdGVjaC9pbnRoYXNoLmh0bQorICAgIGlubGluZSB1bnNpZ25lZCBpbnRIYXNo
KHVpbnQxNl90IGtleTE2KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQga2V5ID0ga2V5MTY7Cisg
ICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7CisgICAgICAgIGtleSBePSAoa2V5ID4+IDEwKTsK
KyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7CisgICAgICAgIGtleSBePSAoa2V5ID4+IDYpOwor
ICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOworICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7
CisgICAgICAgIHJldHVybiBrZXk7CisgICAgfQorCisgICAgLy8gVGhvbWFzIFdhbmcncyAzMiBC
aXQgTWl4IEZ1bmN0aW9uOiBodHRwOi8vd3d3LmNyaXMuY29tL35UdHdhbmcvdGVjaC9pbnRoYXNo
Lmh0bQorICAgIGlubGluZSB1bnNpZ25lZCBpbnRIYXNoKHVpbnQzMl90IGtleSkgCisgICAgewor
ICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTUpOworICAgICAgICBrZXkgXj0gKGtleSA+PiAxMCk7
CisgICAgICAgIGtleSArPSAoa2V5IDw8IDMpOworICAgICAgICBrZXkgXj0gKGtleSA+PiA2KTsK
KyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDExKTsKKyAgICAgICAga2V5IF49IChrZXkgPj4gMTYp
OworICAgICAgICByZXR1cm4ga2V5OworICAgIH0KKyAgICAKKyAgICAvLyBUaG9tYXMgV2FuZydz
IDY0IGJpdCBNaXggRnVuY3Rpb246IGh0dHA6Ly93d3cuY3Jpcy5jb20vflR0d2FuZy90ZWNoL2lu
dGhhc2guaHRtCisgICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQorICAg
IHsKKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDMyKTsKKyAgICAgICAga2V5IF49IChrZXkgPj4g
MjIpOworICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTMpOworICAgICAgICBrZXkgXj0gKGtleSA+
PiA4KTsKKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7CisgICAgICAgIGtleSBePSAoa2V5ID4+
IDE1KTsKKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDI3KTsKKyAgICAgICAga2V5IF49IChrZXkg
Pj4gMzEpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSk7CisgICAg
fQorCisgICAgLy8gQ29tcG91bmQgaW50ZWdlciBoYXNoIG1ldGhvZDogaHR0cDovL29wZW5kYXRh
c3RydWN0dXJlcy5vcmcvdmVyc2lvbnMvZWRpdGlvbi0wLjFkL29kcy1qYXZhL25vZGUzMy5odG1s
I1NFQ1RJT04wMDgzMjAwMDAwMDAwMDAwMDAwMAorICAgIGlubGluZSB1bnNpZ25lZCBwYWlySW50
SGFzaCh1bnNpZ25lZCBrZXkxLCB1bnNpZ25lZCBrZXkyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgc2hvcnRSYW5kb20xID0gMjc3OTUxMjI1OyAvLyBBIHJhbmRvbSAzMi1iaXQgdmFsdWUuCisg
ICAgICAgIHVuc2lnbmVkIHNob3J0UmFuZG9tMiA9IDk1MTg3OTY2OyAvLyBBIHJhbmRvbSAzMi1i
aXQgdmFsdWUuCisgICAgICAgIHVpbnQ2NF90IGxvbmdSYW5kb20gPSAxOTI0ODY1ODE2NTk1MjYy
MkxMOyAvLyBBIHJhbmRvbSA2NC1iaXQgdmFsdWUuCisKKyAgICAgICAgdWludDY0X3QgcHJvZHVj
dCA9IGxvbmdSYW5kb20gKiAoc2hvcnRSYW5kb20xICoga2V5MSArIHNob3J0UmFuZG9tMiAqIGtl
eTIpOworICAgICAgICB1bnNpZ25lZCBoaWdoQml0cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
cm9kdWN0ID4+IChzaXplb2YodWludDY0X3QpIC0gc2l6ZW9mKHVuc2lnbmVkKSkpOworICAgICAg
ICByZXR1cm4gaGlnaEJpdHM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEludEhhc2ggeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChUIGtleSkgeyByZXR1
cm4gaW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpVbnNp
Z25lZFR5cGU+KGtleSkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKFQgYSwgVCBiKSB7
IHJldHVybiBhID09IGI7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgRmxvYXRIYXNoIHsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbnRUeXBl
czxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGUgQml0czsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goVCBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbnRIYXNoKGJpdHdp
c2VfY2FzdDxCaXRzPihrZXkpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChUIGEsIFQgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxC
aXRzPihhKSA9PSBiaXR3aXNlX2Nhc3Q8Qml0cz4oYik7CisgICAgICAgIH0KKyAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAg
IH07CisKKyAgICAvLyBwb2ludGVyIGlkZW50aXR5IGhhc2ggZnVuY3Rpb24KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIGJvb2wgaXNTbWFydFBvaW50ZXI+IAorICAgIHN0cnVjdCBQdHJIYXNo
QmFzZTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0cnVjdCBQdHJIYXNoQmFz
ZTxULCBmYWxzZSAvKiBpc1NtYXJ0UHRyICovPiB7CisgICAgICAgIHR5cGVkZWYgVCBQdHJUeXBl
OyAKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChQdHJUeXBlIGtleSkgeyByZXR1cm4g
SW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihrZXkp
KTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQdHJUeXBlIGEsIFB0clR5cGUgYikgeyBy
ZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgc3RydWN0IFB0ckhhc2hCYXNlPFQsIHRydWUgLyogaXNTbWFydFB0ciAqLz4gewor
ICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEdldFB0ckhlbHBlcjxUPjo6UHRyVHlwZSBQdHJUeXBl
OyAKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChQdHJUeXBlIGtleSkgeyByZXR1cm4g
SW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihrZXkp
KTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQdHJUeXBlIGEsIFB0clR5cGUgYikgeyBy
ZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBUJiBrZXkpIHsgcmV0dXJuIGhhc2goZ2V0UHRyKGtleSkpOyB9CisgICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpIHsgcmV0dXJuIGdldFB0cihhKSA9
PSBnZXRQdHIoYik7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoUHRyVHlwZSBhLCBjb25z
dCBUJiBiKSB7IHJldHVybiBhID09IGdldFB0cihiKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBUJiBhLCBQdHJUeXBlIGIpIHsgcmV0dXJuIGdldFB0cihhKSA9PSBiOyB9Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQdHJIYXNoIDogUHRySGFz
aEJhc2U8VCwgSXNTbWFydFB0cjxUPjo6dmFsdWU+IHsKKyAgICB9OworCisgICAgLy8gZGVmYXVs
dCBoYXNoIGZ1bmN0aW9uIGZvciBlYWNoIHR5cGUKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBEZWZhdWx0SGFzaDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IHN0cnVjdCBQYWlySGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IHN0ZDo6cGFpcjxULCBVPiYgcCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHBhaXJJ
bnRIYXNoKERlZmF1bHRIYXNoPFQ+OjpIYXNoOjpoYXNoKHAuZmlyc3QpLCBEZWZhdWx0SGFzaDxV
Pjo6SGFzaDo6aGFzaChwLnNlY29uZCkpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjxULCBVPiYgYSwgY29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBi
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8VD46Okhhc2g6OmVx
dWFsKGEuZmlyc3QsIGIuZmlyc3QpICYmIERlZmF1bHRIYXNoPFU+OjpIYXNoOjplcXVhbChhLnNl
Y29uZCwgYi5zZWNvbmQpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gRGVmYXVsdEhhc2g8VD46Okhhc2g6OnNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkICYmIERlZmF1bHRIYXNoPFU+OjpIYXNoOjpzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gc3RydWN0IEludFBhaXJIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBwKSB7IHJldHVybiBwYWlySW50SGFzaChw
LmZpcnN0LCBwLnNlY29uZCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qgc3Rk
OjpwYWlyPFQsIFU+JiBhLCBjb25zdCBzdGQ6OnBhaXI8VCwgVT4mIGIpIHsgcmV0dXJuIFBhaXJI
YXNoPFQsIFQ+OjplcXVhbChhLCBiKTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IFBhaXJIYXNoPFQsIFU+OjpzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlw
ZXM+CisgICAgc3RydWN0IFR1cGxlSGFzaCB7CisgICAgICAgIHRlbXBsYXRlPHNpemVfdCBJID0g
MD4KKyAgICAgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPCBzaXplb2YuLi4o
VHlwZXMpIC0gMSwgdW5zaWduZWQ+Ojp0eXBlIGhhc2goY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4u
Lj4mIHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5cGUg
PSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBl
cy4uLj4+Ojp0eXBlOworICAgICAgICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKERlZmF1bHRIYXNo
PEl0aFR1cGxlRWxlbWVudFR5cGU+OjpIYXNoOjpoYXNoKHN0ZDo6Z2V0PEk+KHQpKSwgaGFzaDxJ
ICsgMT4odCkpOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8c2l6ZV90IEkgPSAwPgor
ICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA9PSBzaXplb2YuLi4oVHlw
ZXMpIC0gMSwgdW5zaWduZWQ+Ojp0eXBlIGhhc2goY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4m
IHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5cGUgPSB0
eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBlcy4u
Lj4+Ojp0eXBlOworICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRIYXNoPEl0aFR1cGxlRWxlbWVu
dFR5cGU+OjpIYXNoOjpoYXNoKHN0ZDo6Z2V0PEk+KHQpKTsKKyAgICAgICAgfQorCisgICAgICAg
IHRlbXBsYXRlPHNpemVfdCBJID0gMD4KKyAgICAgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPEkgPCBzaXplb2YuLi4oVHlwZXMpIC0gMSwgYm9vbD46OnR5cGUgZXF1YWwoY29uc3Qg
c3RkOjp0dXBsZTxUeXBlcy4uLj4mIGEsIGNvbnN0IHN0ZDo6dHVwbGU8VHlwZXMuLi4+JiBiKQor
ICAgICAgICB7CisgICAgICAgICAgICB1c2luZyBJdGhUdXBsZUVsZW1lbnRUeXBlID0gdHlwZW5h
bWUgc3RkOjp0dXBsZV9lbGVtZW50PEksIHR5cGVuYW1lIHN0ZDo6dHVwbGU8VHlwZXMuLi4+Pjo6
dHlwZTsKKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxJdGhUdXBsZUVsZW1lbnRUeXBl
Pjo6SGFzaDo6ZXF1YWwoc3RkOjpnZXQ8ST4oYSksIHN0ZDo6Z2V0PEk+KGIpKSAmJiBlcXVhbDxJ
ICsgMT4oYSwgYik7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxzaXplX3QgSSA9IDA+
CisgICAgICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJID09IHNpemVvZi4uLihU
eXBlcykgLSAxLCBib29sPjo6dHlwZSBlcXVhbChjb25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4uPiYg
YSwgY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4mIGIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8
SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBlcy4uLj4+Ojp0eXBlOworICAgICAgICAgICAgcmV0
dXJuIERlZmF1bHRIYXNoPEl0aFR1cGxlRWxlbWVudFR5cGU+OjpIYXNoOjplcXVhbChzdGQ6Omdl
dDxJPihhKSwgc3RkOjpnZXQ8ST4oYikpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugc2hv
dWxkIHVzZSBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1bHRIYXNoPFR5cGVz
Pjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgJiYuLi4gd2hlbmV2ZXIKKyAg
ICAgICAgLy8gd2Ugc3dpdGNoIHRvIEMrKzE3LiBXZSBjYW4ndCBkbyBhbnl0aGluZyBiZXR0ZXIg
aGVyZSByaWdodCBub3cgYmVjYXVzZSBHQ0MgY2FuJ3QgZG8gQysrLgorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBCb29sVHlwZT4KKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGFsbFRy
dWUoQm9vbFR5cGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEJvb2xUeXBlLCB0eXBlbmFtZS4uLiBCb29sVHlwZXM+CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBhbGxUcnVlKEJvb2xUeXBlIHZhbHVlLCBCb29sVHlwZXMuLi4gdmFsdWVz
KSB7IHJldHVybiB2YWx1ZSAmJiBhbGxUcnVlKHZhbHVlcy4uLik7IH0KKyAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBhbGxUcnVlKERlZmF1
bHRIYXNoPFR5cGVzPjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQuLi4pOwor
ICAgIH07CisKKyAgICAvLyBtYWtlIEludEhhc2ggdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiBm
b3IgbWFueSBpbnRlZ2VyIHR5cGVzCisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxib29sPiB7IHR5cGVkZWYgSW50SGFzaDx1aW50OF90PiBIYXNoOyB9OworICAgIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPHNob3J0PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4g
SGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBzaG9y
dD4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4gSGFzaDsg
fTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZD4geyB0eXBlZGVm
IEludEhhc2g8dW5zaWduZWQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8bG9uZz4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZz4gSGFzaDsgfTsKKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBsb25nPiB7IHR5cGVkZWYg
SW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPGxvbmcgbG9uZz4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZyBsb25n
PiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHVuc2lnbmVkIGxv
bmcgbG9uZz4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiBIYXNoOyB9Owor
CisjaWYgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDx3Y2hhcl90PiB7IHR5cGVkZWYgSW50SGFzaDx3Y2hhcl90PiBIYXNo
OyB9OworI2VuZGlmCisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxmbG9hdD4g
eyB0eXBlZGVmIEZsb2F0SGFzaDxmbG9hdD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxkb3VibGU+IHsgdHlwZWRlZiBGbG9hdEhhc2g8ZG91YmxlPiBIYXNoOyB9
OworCisgICAgLy8gbWFrZSBQdHJIYXNoIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIHBv
aW50ZXIgdHlwZXMgdGhhdCBkb24ndCBzcGVjaWFsaXplCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UCo+IHsgdHlwZWRlZiBQdHJIYXNoPFAqPiBIYXNoOyB9
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUCwgdHlwZW5hbWUgRGVsZXRlcj4gc3RydWN0IERl
ZmF1bHRIYXNoPHN0ZDo6dW5pcXVlX3B0cjxQLCBEZWxldGVyPj4geyB0eXBlZGVmIFB0ckhhc2g8
c3RkOjp1bmlxdWVfcHRyPFAsIERlbGV0ZXI+PiBIYXNoOyB9OworCisgICAgLy8gbWFrZSBJbnRQ
YWlySGFzaCB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBwYWlycyBvZiAoYXQgbW9zdCkg
MzItYml0IGludGVnZXJzLgorCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3Rk
OjpwYWlyPHNob3J0LCBzaG9ydD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgc2hvcnQ+
IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHNo
b3J0LCB1bnNpZ25lZCBzaG9ydD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgdW5zaWdu
ZWQgc2hvcnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3Rk
OjpwYWlyPHNob3J0LCBpbnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8c2hvcnQsIGludD4gSGFz
aDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8c2hvcnQs
IHVuc2lnbmVkPj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHNob3J0LCB1bnNpZ25lZD4gSGFzaDsg
fTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQg
c2hvcnQsIHNob3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHVuc2lnbmVkIHNob3J0LCBzaG9y
dD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8
dW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNob3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHVu
c2lnbmVkIHNob3J0LCB1bnNpZ25lZCBzaG9ydD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIGludD4+IHsgdHlwZWRl
ZiBJbnRQYWlySGFzaDx1bnNpZ25lZCBzaG9ydCwgaW50PiBIYXNoOyB9OworICAgIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQ+
PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkPiBIYXNoOyB9
OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxpbnQsIHNob3J0
Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPGludCwgc2hvcnQ+IEhhc2g7IH07CisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPGludCwgdW5zaWduZWQgc2hvcnQ+PiB7
IHR5cGVkZWYgSW50UGFpckhhc2g8aW50LCB1bnNpZ25lZCBzaG9ydD4gSGFzaDsgfTsKKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8aW50LCBpbnQ+PiB7IHR5cGVk
ZWYgSW50UGFpckhhc2g8aW50LCBpbnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8c3RkOjpwYWlyPGludCwgdW5zaWduZWQ+PiB7IHR5cGVkZWYgSW50UGFpckhh
c2g8dW5zaWduZWQsIHVuc2lnbmVkPiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgc2hvcnQ+PiB7IHR5cGVkZWYgSW50UGFpckhh
c2g8dW5zaWduZWQsIHNob3J0PiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQgc2hvcnQ+PiB7IHR5cGVkZWYgSW50
UGFpckhhc2g8dW5zaWduZWQsIHVuc2lnbmVkIHNob3J0PiBIYXNoOyB9OworICAgIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgaW50Pj4geyB0eXBlZGVm
IEludFBhaXJIYXNoPHVuc2lnbmVkLCBpbnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+IHsgdHlwZWRlZiBJ
bnRQYWlySGFzaDx1bnNpZ25lZCwgdW5zaWduZWQ+IEhhc2g7IH07CisKKyAgICAvLyBtYWtlIFBh
aXJIYXNoIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIHBhaXJzIG9mIGFyYml0cmFyeSB2
YWx1ZXMuCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8c3RkOjpwYWlyPFQsIFU+PiB7IHR5cGVkZWYgUGFpckhhc2g8VCwgVT4gSGFzaDsg
fTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0IERlZmF1bHRIYXNoPHN0
ZDo6dHVwbGU8VHlwZXMuLi4+PiB7IHR5cGVkZWYgVHVwbGVIYXNoPFR5cGVzLi4uPiBIYXNoOyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKKwordGVtcGxhdGU8
Ym9vbCBpc0ludGVnZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8ZmFs
c2UsIFQ+IHsKKyAgICAvLyBUaGUgZW1wdHlWYWx1ZUlzWmVybyBmbGFnIGlzIHVzZWQgdG8gb3B0
aW1pemUgYWxsb2NhdGlvbiBvZiBlbXB0eSBoYXNoIHRhYmxlcyB3aXRoIHplcm9lZCBtZW1vcnku
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIAor
ICAgIC8vIFRoZSBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiBmbGFnIGFsbG93cyB0aGUgaGFzaCB0
YWJsZSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGNvZGUgdG8gY2hlY2sKKyAgICAvLyBmb3Ig
dGhlIGVtcHR5IHZhbHVlIHdoZW4gaXQgY2FuIGJlIGRvbmUgd2l0aCB0aGUgZXF1YWxpdHkgb3Bl
cmF0b3IsIGJ1dCBhbGxvd3MgY3VzdG9tIGZ1bmN0aW9ucworICAgIC8vIGZvciBjYXNlcyBsaWtl
IFN0cmluZyB0aGF0IG5lZWQgdGhlbS4KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5
VmFsdWVGdW5jdGlvbiA9IGZhbHNlOworCisgICAgLy8gVGhlIHN0YXJ0aW5nIHRhYmxlIHNpemUu
IENhbiBiZSBvdmVycmlkZGVuIHdoZW4gd2Uga25vdyBiZWZvcmVoYW5kIHRoYXQKKyAgICAvLyBh
IGhhc2ggdGFibGUgd2lsbCBoYXZlIGF0IGxlYXN0IE4gZW50cmllcy4KKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bVRhYmxlU2l6ZSA9IDg7Cit9OworCisvLyBEZWZhdWx0IGludGVn
ZXIgdHJhaXRzIGRpc2FsbG93IGJvdGggMCBhbmQgLTEgYXMga2V5cyAobWF4IHZhbHVlIGluc3Rl
YWQgb2YgLTEgZm9yIHVuc2lnbmVkKS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5l
cmljSGFzaFRyYWl0c0Jhc2U8dHJ1ZSwgVD4gOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8ZmFsc2Us
IFQ+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAg
ICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYgc2xvdCkgeyBzbG90ID0gc3Rh
dGljX2Nhc3Q8VD4oLTEpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoVCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPT0gc3RhdGljX2Nhc3Q8VD4oLTEpOyB9Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0
c0Jhc2U8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+IHsKKyAgICB0eXBlZGVmIFQgVHJh
aXRUeXBlOworICAgIHR5cGVkZWYgVCBFbXB0eVZhbHVlVHlwZTsKKworICAgIHN0YXRpYyBUIGVt
cHR5VmFsdWUoKSB7IHJldHVybiBUKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+IAorICAgIHN0YXRpYyB2b2lkIGFzc2lnblRvRW1wdHkoVSYgZW1wdHlWYWx1ZSwg
ViYmIHZhbHVlKQorICAgIHsgCisgICAgICAgIGVtcHR5VmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4o
dmFsdWUpOworICAgIH0KKworICAgIC8vIFR5cGUgZm9yIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlv
bnMgdGhhdCBkbyBub3QgdHJhbnNmZXIgb3duZXJzaGlwLCBzdWNoIGFzIGdldC4KKyAgICB0eXBl
ZGVmIFQgUGVla1R5cGU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIFUmJiBwZWVr
KFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQorCisgICAgdHlw
ZWRlZiBUIFRha2VUeXBlOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBUYWtlVHlw
ZSB0YWtlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQorfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRy
YWl0czxUPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBGbG9hdEhhc2hUcmFp
dHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7CisgICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCk7IH0KKyAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYgc2xvdCkgeyBzbG90ID0gLXN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46OmluZmluaXR5KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1
ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5m
aW5pdHkoKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxmbG9hdD4gOiBG
bG9hdEhhc2hUcmFpdHM8ZmxvYXQ+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
ZG91YmxlPiA6IEZsb2F0SGFzaFRyYWl0czxkb3VibGU+IHsgfTsKKworLy8gRGVmYXVsdCB1bnNp
Z25lZCB0cmFpdHMgZGlzYWxsb3cgYm90aCAwIGFuZCBtYXggYXMga2V5cyAtLSB1c2UgdGhlc2Ug
dHJhaXRzIHRvIGFsbG93IHplcm8gYW5kIGRpc2FsbG93IG1heCAtIDEuCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgVW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHMgOiBHZW5lcmljSGFz
aFRyYWl0czxUPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZh
bHNlOworICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPFQ+OjptYXgoKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShU
JiBzbG90KSB7IHNsb3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAtIDE7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAtIDE7IH0KK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBTaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRy
YWl0czxUPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNl
OworICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptaW4oKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBz
bG90KSB7IHNsb3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQorICAgIHN0YXRp
YyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8VD46Om1heCgpOyB9Cit9OworCisvLyBDYW4gYmUgdXNlZCB3aXRoIHN0cm9u
ZyBlbnVtcywgYWxsb3dzIHplcm8gYXMga2V5LgordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IFN0cm9uZ0VudW1IYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4geworICAgIHVzaW5n
IFVuZGVybHlpbmdUeXBlID0gdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0
YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUPihzdGQ6Om51bWVyaWNf
bGltaXRzPFVuZGVybHlpbmdUeXBlPjo6bWF4KCkpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0RGVsZXRlZFZhbHVlKFQmIHNsb3QpIHsgc2xvdCA9IHN0YXRpY19jYXN0PFQ+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8VW5kZXJseWluZ1R5cGU+OjptYXgoKSAtIDEpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gc3RhdGljX2Nhc3Q8
VD4oc3RkOjpudW1lcmljX2xpbWl0czxVbmRlcmx5aW5nVHlwZT46Om1heCgpIC0gMSk7IH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJhaXRzPFAqPiA6IEdlbmVyaWNI
YXNoVHJhaXRzPFAqPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFAqJiBzbG90KSB7
IHNsb3QgPSByZWludGVycHJldF9jYXN0PFAqPigtMSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gcmVpbnRlcnByZXRfY2FzdDxQ
Kj4oLTEpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4geworICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShUJiBzbG90KSB7IG5ldyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2Yoc2xvdCkpIFQo
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KGNvbnN0IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
OyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVyPiBzdHJ1Y3Qg
SGFzaFRyYWl0czxzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4+IDogU2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPj4geworICAgIHR5cGVkZWYgc3RkOjpu
dWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5
VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RE
ZWxldGVkVmFsdWUoc3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+JiBzbG90KSB7IG5ldyAoTm90
TnVsbCwgc3RkOjphZGRyZXNzb2Yoc2xvdCkpIHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiB7
IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKSB9OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+JiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUuZ2V0KCkgPT0gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9CisKKyAgICB0eXBlZGVm
IFQqIFBlZWtUeXBlOworICAgIHN0YXRpYyBUKiBwZWVrKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxU
LCBEZWxldGVyPiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CisgICAgc3RhdGljIFQq
IHBlZWsoc3RkOjpudWxscHRyX3QpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHN0YXRpYyB2
b2lkIGN1c3RvbURlbGV0ZUJ1Y2tldChzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4mIHZhbHVl
KQorICAgIHsKKyAgICAgICAgLy8gVGhlIGN1c3RvbSBkZWxldGUgZnVuY3Rpb24gZXhpc3RzIHRv
IGF2b2lkIGEgZGVhZCBzdG9yZSBiZWZvcmUgdGhlIHZhbHVlIGlzIGRlc3RydWN0ZWQuCisgICAg
ICAgIC8vIFRoZSBub3JtYWwgZGVzdHJ1Y3Rpb24gc2VxdWVuY2Ugb2YgYSBidWNrZXQgd291bGQg
YmU6CisgICAgICAgIC8vIDEpIENhbGwgdGhlIGRlc3RydWN0b3Igb2YgdW5pcXVlX3B0ci4KKyAg
ICAgICAgLy8gMikgdW5pcXVlX3B0ciBzdG9yZSBhIHplcm8gZm9yIGl0cyBpbnRlcm5hbCBwb2lu
dGVyLgorICAgICAgICAvLyAzKSB1bmlxdWVfcHRyIGRlc3Ryb3lzIGl0cyB2YWx1ZS4KKyAgICAg
ICAgLy8gNCkgQ2FsbCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoKSB0byBzZXQgdGhlIGJ1Y2tldCBh
cyBkZXN0cnVjdGVkLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgcHJvYmxlbSBpcyB0aGUg
Y2FsbCBpbiAoMykgcHJldmVudHMgdGhlIGNvbXBpbGUgZnJvbSBlbGltaW5hdGluZyB0aGUgZGVh
ZCBzdG9yZSBpbiAoMikKKyAgICAgICAgLy8gYmVjYXNlIGEgc2lkZSBlZmZlY3Qgb2YgZnJlZSgp
IGNvdWxkIGJlIG9ic2VydmluZyB0aGUgdmFsdWUuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRo
aXMgdmVyc2lvbiBvZiBkZWxldGVCdWNrZXQoKSBlbnN1cmVzIHRoZSBkZWFkIDIgc3RvcmVzIGNo
YW5naW5nICJ2YWx1ZSIKKyAgICAgICAgLy8gYXJlIG9uIHRoZSBzYW1lIHNpZGUgb2YgdGhlIGZ1
bmN0aW9uIGNhbGwuCisgICAgICAgIEFTU0VSVCghaXNEZWxldGVkVmFsdWUodmFsdWUpKTsKKyAg
ICAgICAgVCogcG9pbnRlciA9IHZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKHZhbHVlKTsKKworICAgICAgICAvLyBUaGUgbnVsbCBjYXNlIGhhcHBlbnMgaWYg
YSBjYWxsZXIgdXNlcyBzdGQ6Om1vdmUoKSB0byByZW1vdmUgdGhlIHBvaW50ZXIgYmVmb3JlIGNh
bGxpbmcgcmVtb3ZlKCkKKyAgICAgICAgLy8gd2l0aCBhbiBpdGVyYXRvci4gVGhpcyBpcyB2ZXJ5
IHVuY29tbW9uLgorICAgICAgICBpZiAoTElLRUxZKHBvaW50ZXIpKQorICAgICAgICAgICAgRGVs
ZXRlcigpKHBvaW50ZXIpOworICAgIH0KK307CisKKy8vIFRoaXMgc3RydWN0IHRlbXBsYXRlIGlz
IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUgaXNIYXNoVHJhaXRzRW1wdHlWYWx1ZSBm
dW5jdGlvbiwKKy8vIHdoaWNoIHNlbGVjdHMgZWl0aGVyIHRoZSBlbXB0eVZhbHVlIGZ1bmN0aW9u
IG9yIHRoZSBpc0VtcHR5VmFsdWUgZnVuY3Rpb24gdG8gY2hlY2sgZm9yIGVtcHR5IHZhbHVlcy4K
K3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgYm9vbCBoYXNFbXB0eVZhbHVlRnVuY3Rpb24+IHN0
cnVjdCBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNrZXI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHM+IHN0cnVjdCBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNrZXI8VHJhaXRzLCB0cnVlPiB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFQm
IHZhbHVlKSB7IHJldHVybiBUcmFpdHM6OmlzRW1wdHlWYWx1ZSh2YWx1ZSk7IH0KK307Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNrZXI8
VHJhaXRzLCBmYWxzZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBib29sIGlz
RW1wdHlWYWx1ZShjb25zdCBUJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gVHJhaXRzOjplbXB0
eVZhbHVlKCk7IH0KK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFQ+IGlu
bGluZSBib29sIGlzSGFzaFRyYWl0c0VtcHR5VmFsdWUoY29uc3QgVCYgdmFsdWUpCit7CisgICAg
cmV0dXJuIEhhc2hUcmFpdHNFbXB0eVZhbHVlQ2hlY2tlcjxUcmFpdHMsIFRyYWl0czo6aGFzSXNF
bXB0eVZhbHVlRnVuY3Rpb24+Ojppc0VtcHR5VmFsdWUodmFsdWUpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzaFRyYWl0SGFzQ3VzdG9tRGVs
ZXRlIHsKKyAgICBzdGF0aWMgVCYgYnVja2V0QXJnOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFg+
IHN0YXRpYyBzdGQ6OnRydWVfdHlwZSBUZXN0SGFzQ3VzdG9tRGVsZXRlKFgqLCBkZWNsdHlwZShY
OjpjdXN0b21EZWxldGVCdWNrZXQoYnVja2V0QXJnKSkqID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IHN0ZDo6ZmFsc2VfdHlwZSBUZXN0SGFzQ3VzdG9tRGVsZXRlKC4uLik7CisgICAgdHlwZWRlZiBk
ZWNsdHlwZShUZXN0SGFzQ3VzdG9tRGVsZXRlKHN0YXRpY19jYXN0PFRyYWl0cyo+KG51bGxwdHIp
KSkgUmVzdWx0VHlwZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IFJlc3VsdFR5cGU6
OnZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBUPgordHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SGFzaFRyYWl0SGFzQ3VzdG9tRGVsZXRlPFRyYWl0cywgVD46
OnZhbHVlPjo6dHlwZQoraGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldChUJiB2YWx1ZSkKK3sKKyAgICBU
cmFpdHM6OmN1c3RvbURlbGV0ZUJ1Y2tldCh2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFIYXNoVHJhaXRI
YXNDdXN0b21EZWxldGU8VHJhaXRzLCBUPjo6dmFsdWU+Ojp0eXBlCitoYXNoVHJhaXRzRGVsZXRl
QnVja2V0KFQmIHZhbHVlKQoreworICAgIHZhbHVlLn5UKCk7CisgICAgVHJhaXRzOjpjb25zdHJ1
Y3REZWxldGVkVmFsdWUodmFsdWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0
c0FyZywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzQXJnPgorc3RydWN0IFBhaXJIYXNoVHJhaXRzIDog
R2VuZXJpY0hhc2hUcmFpdHM8c3RkOjpwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFp
dFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPj4geworICAgIHR5cGVk
ZWYgRmlyc3RUcmFpdHNBcmcgRmlyc3RUcmFpdHM7CisgICAgdHlwZWRlZiBTZWNvbmRUcmFpdHNB
cmcgU2Vjb25kVHJhaXRzOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPHR5cGVuYW1lIEZpcnN0VHJh
aXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6VHJhaXRUeXBlPiBUcmFpdFR5
cGU7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dHlwZW5hbWUgRmlyc3RUcmFpdHM6OkVtcHR5VmFs
dWVUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OkVtcHR5VmFsdWVUeXBlPiBFbXB0eVZhbHVl
VHlwZTsKKworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBGaXJzdFRy
YWl0czo6ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm87
CisgICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om1h
a2VfcGFpcihGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFs
dWUoKSk7IH0KKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0g
Rmlyc3RUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoVHJhaXRUeXBlJiBzbG90KSB7IEZpcnN0VHJhaXRzOjpjb25zdHJ1Y3RE
ZWxldGVkVmFsdWUoc2xvdC5maXJzdCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1
ZShjb25zdCBUcmFpdFR5cGUmIHZhbHVlKSB7IHJldHVybiBGaXJzdFRyYWl0czo6aXNEZWxldGVk
VmFsdWUodmFsdWUuZmlyc3QpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlw
ZW5hbWUgU2Vjb25kPgorc3RydWN0IEhhc2hUcmFpdHM8c3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+
PiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEZpcnN0PiwgSGFzaFRyYWl0czxT
ZWNvbmQ+PiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXQsIHR5cGVuYW1lLi4u
IFRyYWl0cz4KK3N0cnVjdCBUdXBsZUhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxzdGQ6
OnR1cGxlPHR5cGVuYW1lIEZpcnN0VHJhaXQ6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVHJhaXRzOjpU
cmFpdFR5cGUuLi4+PiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIEZpcnN0VHJh
aXQ6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5cGUuLi4+IFRyYWl0VHlwZTsK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgRmlyc3RUcmFpdDo6RW1wdHlWYWx1ZVR5
cGUsIHR5cGVuYW1lIFRyYWl0czo6RW1wdHlWYWx1ZVR5cGUuLi4+IEVtcHR5VmFsdWVUeXBlOwor
CisgICAgLy8gV2Ugc2hvdWxkIHVzZSBlbXB0eVZhbHVlSXNaZXJvID0gVHJhaXRzOjplbXB0eVZh
bHVlSXNaZXJvICYmLi4uIHdoZW5ldmVyIHdlIHN3aXRjaCB0byBDKysxNy4gV2UgY2FuJ3QgZG8g
YW55dGhpbmcKKyAgICAvLyBiZXR0ZXIgaGVyZSByaWdodCBub3cgYmVjYXVzZSBHQ0MgY2FuJ3Qg
ZG8gQysrLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlPgorICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBhbGxUcnVlKEJvb2xUeXBlIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlLCB0eXBlbmFtZS4uLiBCb29sVHlwZXM+CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGFsbFRydWUoQm9vbFR5cGUgdmFsdWUsIEJvb2xUeXBlcy4u
LiB2YWx1ZXMpIHsgcmV0dXJuIHZhbHVlICYmIGFsbFRydWUodmFsdWVzLi4uKTsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBhbGxUcnVlKEZpcnN0VHJhaXQ6OmVt
cHR5VmFsdWVJc1plcm8sIFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVyby4uLik7CisgICAgc3RhdGlj
IEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoRmly
c3RUcmFpdDo6ZW1wdHlWYWx1ZSgpLCBUcmFpdHM6OmVtcHR5VmFsdWUoKS4uLik7IH0KKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0gRmlyc3RUcmFpdDo6bWlu
aW11bVRhYmxlU2l6ZTsKKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShU
cmFpdFR5cGUmIHNsb3QpIHsgRmlyc3RUcmFpdDo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKHN0ZDo6
Z2V0PDA+KHNsb3QpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFRy
YWl0VHlwZSYgdmFsdWUpIHsgcmV0dXJuIEZpcnN0VHJhaXQ6OmlzRGVsZXRlZFZhbHVlKHN0ZDo6
Z2V0PDA+KHZhbHVlKSk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFRyYWl0cz4KK3N0
cnVjdCBIYXNoVHJhaXRzPHN0ZDo6dHVwbGU8VHJhaXRzLi4uPj4gOiBwdWJsaWMgVHVwbGVIYXNo
VHJhaXRzPEhhc2hUcmFpdHM8VHJhaXRzPi4uLj4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlUeXBlQXJnLCB0eXBlbmFtZSBWYWx1ZVR5cGVBcmc+CitzdHJ1Y3QgS2V5VmFsdWVQYWlyIHsK
KyAgICB0eXBlZGVmIEtleVR5cGVBcmcgS2V5VHlwZTsKKworICAgIEtleVZhbHVlUGFpcigpCisg
ICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAg
S2V5VmFsdWVQYWlyKEsmJiBrZXksIFYmJiB2YWx1ZSkKKyAgICAgICAgOiBrZXkoc3RkOjpmb3J3
YXJkPEs+KGtleSkpCisgICAgICAgICwgdmFsdWUoc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSkKKyAg
ICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyS2V5VHlwZSwgdHlwZW5h
bWUgT3RoZXJWYWx1ZVR5cGU+CisgICAgS2V5VmFsdWVQYWlyKEtleVZhbHVlUGFpcjxPdGhlcktl
eVR5cGUsIE90aGVyVmFsdWVUeXBlPiYmIG90aGVyKQorICAgICAgICA6IGtleShzdGQ6OmZvcndh
cmQ8T3RoZXJLZXlUeXBlPihvdGhlci5rZXkpKQorICAgICAgICAsIHZhbHVlKHN0ZDo6Zm9yd2Fy
ZDxPdGhlclZhbHVlVHlwZT4ob3RoZXIudmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICBLZXlU
eXBlQXJnIGtleTsKKyAgICBWYWx1ZVR5cGVBcmcgdmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIFZhbHVlVHJhaXRzQXJnPgorc3RydWN0IEtleVZh
bHVlUGFpckhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxLZXlWYWx1ZVBhaXI8dHlwZW5h
bWUgS2V5VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzQXJnOjpUcmFp
dFR5cGU+PiB7CisgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOworICAgIHR5cGVk
ZWYgVmFsdWVUcmFpdHNBcmcgVmFsdWVUcmFpdHM7CisgICAgdHlwZWRlZiBLZXlWYWx1ZVBhaXI8
dHlwZW5hbWUgS2V5VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFp
dFR5cGU+IFRyYWl0VHlwZTsKKyAgICB0eXBlZGVmIEtleVZhbHVlUGFpcjx0eXBlbmFtZSBLZXlU
cmFpdHM6OkVtcHR5VmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6RW1wdHlWYWx1ZVR5
cGU+IEVtcHR5VmFsdWVUeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHNBcmc6
OlRyYWl0VHlwZSBWYWx1ZVR5cGU7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVl
SXNaZXJvID0gS2V5VHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvICYmIFZhbHVlVHJhaXRzOjplbXB0
eVZhbHVlSXNaZXJvOworICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyBy
ZXR1cm4gS2V5VmFsdWVQYWlyPHR5cGVuYW1lIEtleVRyYWl0czo6RW1wdHlWYWx1ZVR5cGUsIHR5
cGVuYW1lIFZhbHVlVHJhaXRzOjpFbXB0eVZhbHVlVHlwZT4oS2V5VHJhaXRzOjplbXB0eVZhbHVl
KCksIFZhbHVlVHJhaXRzOjplbXB0eVZhbHVlKCkpOyB9CisKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWluaW11bVRhYmxlU2l6ZSA9IEtleVRyYWl0czo6bWluaW11bVRhYmxlU2l6ZTsKKwor
ICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUcmFpdFR5cGUmIHNsb3QpIHsg
S2V5VHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5rZXkpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gS2V5
VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5rZXkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBj
dXN0b21EZWxldGVCdWNrZXQoVHJhaXRUeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEtleVZhbHVlUGFpcjxpbnQs
IGludD4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICJUaGUgd3JhcHBlciBpdHNlbGYgaGFzIHRvIGJl
IHRyaXZpYWxseSBkZXN0cnVjdGlibGUgZm9yIGN1c3RvbURlbGV0ZUJ1Y2tldCgpIHRvIG1ha2Ug
c2Vuc2UsIHNpbmNlIHdlIGRvIG5vdCBkZXN0cnVjdCB0aGUgd3JhcHBlciBpdHNlbGYuIik7CisK
KyAgICAgICAgaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldDxLZXlUcmFpdHM+KHZhbHVlLmtleSk7Cisg
ICAgICAgIHZhbHVlLnZhbHVlLn5WYWx1ZVR5cGUoKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgorc3RydWN0IEhhc2hUcmFpdHM8S2V5VmFsdWVQ
YWlyPEtleSwgVmFsdWU+PiA6IHB1YmxpYyBLZXlWYWx1ZVBhaXJIYXNoVHJhaXRzPEhhc2hUcmFp
dHM8S2V5PiwgSGFzaFRyYWl0czxWYWx1ZT4+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBOdWxsYWJsZUhhc2hUcmFpdHMgOiBwdWJsaWMgSGFzaFRyYWl0czxUPiB7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyBU
IGVtcHR5VmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KDEpOyB9Cit9OworCisv
LyBVc2VmdWwgZm9yIGNsYXNzZXMgdGhhdCB3YW50IGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB3aGF0
IGlzIGVtcHR5IGFuZCB3aGF0IGlzIGRlbGV0ZWQsCisvLyBhbmQgaG93IHRvIGNvbnN0cnVjdCBi
b3RoLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBDdXN0b21IYXNoVHJhaXRzIDogcHVi
bGljIEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVl
RnVuY3Rpb24gPSB0cnVlOworICAgIAorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRW
YWx1ZShUJiBzbG90KQorICAgIHsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3Nv
ZihzbG90KSkgVChUOjpEZWxldGVkVmFsdWUpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9v
bCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2
YWx1ZS5pc0RlbGV0ZWRWYWx1ZSgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgVCBlbXB0eVZh
bHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUKFQ6OkVtcHR5VmFsdWUpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgVCYgdmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gdmFsdWUuaXNFbXB0eVZhbHVlKCk7CisgICAgfQorfTsKKworLy8gRW5h
YmxlcyBpbnRlcm5hbCBXVEYgY29uc2lzdGVuY3kgY2hlY2tzIHRoYXQgYXJlIGludm9rZWQgYXV0
b21hdGljYWxseS4gTm9uLVdURiBjYWxsZXJzIGNhbiBjYWxsIGNoZWNrVGFibGVDb25zaXN0ZW5j
eSgpIGV2ZW4gaWYgaW50ZXJuYWwgY2hlY2tzIGFyZSBkaXNhYmxlZC4KKyNkZWZpbmUgQ0hFQ0tf
SEFTSFRBQkxFX0NPTlNJU1RFTkNZIDAKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBDSEVDS19I
QVNIVEFCTEVfSVRFUkFUT1JTIDAKKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX1VTRV9BRlRFUl9E
RVNUUlVDVElPTiAwCisjZWxzZQorI2RlZmluZSBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTIDEK
KyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX1VTRV9BRlRFUl9ERVNUUlVDVElPTiAxCisjZW5kaWYK
KworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCisKKyAgICBzdHJ1Y3QgSGFzaFRhYmxlU3RhdHMg
eworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgYWxsIGF0b21pY2FsbHkg
aW5jcmVtZW50ZWQgd2hlbiBtb2RpZmllZC4KKyAgICAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGlj
IHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1BY2Nlc3NlczsKKyAgICAgICAgV1RGX0VYUE9SVERB
VEEgc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZWhhc2hlczsKKyAgICAgICAgV1RG
X0VYUE9SVERBVEEgc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZW1vdmVzOworICAg
ICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bVJlaW5z
ZXJ0czsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgb25seSBtb2Rp
ZmllZCBpbiB0aGUgcmVjb3JkQ29sbGlzaW9uQXRDb3VudCBtZXRob2Qgd2l0aGluIGEgbXV0ZXgu
CisgICAgICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyB1bnNpZ25lZCBtYXhDb2xsaXNpb25zOwor
ICAgICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMgdW5zaWduZWQgbnVtQ29sbGlzaW9uczsKKyAg
ICAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIHVuc2lnbmVkIGNvbGxpc2lvbkdyYXBoWzQwOTZd
OworCisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWNvcmRDb2xsaXNp
b25BdENvdW50KHVuc2lnbmVkIGNvdW50KTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGR1bXBTdGF0cygpOworICAgIH07CisKKyNlbmRpZgorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICBjbGFzcyBIYXNoVGFibGU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRv
cjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgorICAgIGNsYXNzIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwKKyAgICAgICAgSGFz
aFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIHJlbW92ZUl0ZXJh
dG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKTsKKworI2lmICFDSEVDS19IQVNIVEFCTEVfSVRF
UkFUT1JTCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPiosCisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7IH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
PiopIHsgfQorCisjZW5kaWYKKworICAgIHR5cGVkZWYgZW51bSB7IEhhc2hJdGVtS25vd25Hb29k
IH0gSGFzaEl0ZW1Lbm93bkdvb2RUYWc7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGNsYXNzIEhhc2hUYWJs
ZUNvbnN0SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0
b3JfdGFnLCBWYWx1ZSwgc3RkOjpwdHJkaWZmX3QsIGNvbnN0IFZhbHVlKiwgY29uc3QgVmFsdWUm
PiB7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlw
ZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKKyAgICAgICAg
dHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0
eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUm
IFJlZmVyZW5jZVR5cGU7CisgICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2ludGVy
VHlwZTsKKworICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OworICAgICAgICBmcmllbmQg
Y2xhc3MgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz47CisKKyAgICAgICAgdm9pZCBza2lwRW1wdHlCdWNrZXRz
KCkKKyAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKG1fcG9zaXRpb24gIT0gbV9lbmRQb3Np
dGlvbiAmJiBIYXNoVGFibGVUeXBlOjppc0VtcHR5T3JEZWxldGVkQnVja2V0KCptX3Bvc2l0aW9u
KSkKKyAgICAgICAgICAgICAgICArK21fcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBI
YXNoVGFibGVDb25zdEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVy
VHlwZSBwb3NpdGlvbiwgUG9pbnRlclR5cGUgZW5kUG9zaXRpb24pCisgICAgICAgICAgICA6IG1f
cG9zaXRpb24ocG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKQorICAgICAgICB7
CisgICAgICAgICAgICBhZGRJdGVyYXRvcih0YWJsZSwgdGhpcyk7CisgICAgICAgICAgICBza2lw
RW1wdHlCdWNrZXRzKCk7CisgICAgICAgIH0KKworICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJh
dG9yKGNvbnN0IEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBwb3NpdGlvbiwgUG9p
bnRlclR5cGUgZW5kUG9zaXRpb24sIEhhc2hJdGVtS25vd25Hb29kVGFnKQorICAgICAgICAgICAg
OiBtX3Bvc2l0aW9uKHBvc2l0aW9uKSwgbV9lbmRQb3NpdGlvbihlbmRQb3NpdGlvbikKKyAgICAg
ICAgeworICAgICAgICAgICAgYWRkSXRlcmF0b3IodGFibGUsIHRoaXMpOworICAgICAgICB9CisK
KyAgICBwdWJsaWM6CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IoKQorICAgICAgICB7
CisgICAgICAgICAgICBhZGRJdGVyYXRvcihzdGF0aWNfY2FzdDxjb25zdCBIYXNoVGFibGVUeXBl
Kj4oMCksIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZGVmYXVsdCBjb3B5LCBhc3Np
Z25tZW50IGFuZCBkZXN0cnVjdG9yIGFyZSBPSyBpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JT
IGlzIDAKKworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgfkhhc2hUYWJs
ZUNvbnN0SXRlcmF0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0
aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IoY29uc3Qg
Y29uc3RfaXRlcmF0b3ImIG90aGVyKQorICAgICAgICAgICAgOiBtX3Bvc2l0aW9uKG90aGVyLm1f
cG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKG90aGVyLm1fZW5kUG9zaXRpb24pCisgICAgICAgIHsK
KyAgICAgICAgICAgIGFkZEl0ZXJhdG9yKG90aGVyLm1fdGFibGUsIHRoaXMpOworICAgICAgICB9
CisKKyAgICAgICAgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBjb25zdF9pdGVyYXRv
ciYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcG9zaXRpb24gPSBvdGhlci5tX3Bv
c2l0aW9uOworICAgICAgICAgICAgbV9lbmRQb3NpdGlvbiA9IG90aGVyLm1fZW5kUG9zaXRpb247
CisKKyAgICAgICAgICAgIHJlbW92ZUl0ZXJhdG9yKHRoaXMpOworICAgICAgICAgICAgYWRkSXRl
cmF0b3Iob3RoZXIubV90YWJsZSwgdGhpcyk7CisKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgY2hlY2tWYWxpZGl0eSgpOworICAgICAgICAgICAgcmV0dXJu
IG1fcG9zaXRpb247CisgICAgICAgIH0KKyAgICAgICAgUmVmZXJlbmNlVHlwZSBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisKKyAgICAgICAgY29uc3RfaXRlcmF0b3ImIG9w
ZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7CisgICAg
ICAgICAgICBBU1NFUlQobV9wb3NpdGlvbiAhPSBtX2VuZFBvc2l0aW9uKTsKKyAgICAgICAgICAg
ICsrbV9wb3NpdGlvbjsKKyAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsKKyAgICAgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHBvc3RmaXggKysgaW50
ZW50aW9uYWxseSBvbWl0dGVkCisKKyAgICAgICAgLy8gQ29tcGFyaXNvbi4KKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7CisgICAgICAgICAgICByZXR1cm4g
bV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOworICAgICAgICB9CisgICAgICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkob3RoZXIpOworICAgICAgICAgICAgcmV0dXJuIG1f
cG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gKnRoaXMgPT0gc3RhdGljX2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVyKTsK
KyAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKnRoaXMgIT0gc3RhdGljX2Nh
c3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVyKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgdm9pZCBjaGVja1ZhbGlkaXR5KCkgY29uc3QKKyAgICAgICAgeworI2lmIENIRUNLX0hB
U0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyNlbmRpZgor
ICAgICAgICB9CisKKworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgdm9p
ZCBjaGVja1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdGFibGUpOworICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChvdGhlciwgb3RoZXIubV90YWJsZSk7CisgICAgICAgICAgICBBU1NFUlQobV90YWJsZSA9
PSBvdGhlci5tX3RhYmxlKTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgdm9pZCBjaGVja1Zh
bGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJikgY29uc3QgeyB9CisjZW5kaWYKKworICAgICAg
ICBQb2ludGVyVHlwZSBtX3Bvc2l0aW9uOworICAgICAgICBQb2ludGVyVHlwZSBtX2VuZFBvc2l0
aW9uOworCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgIHB1YmxpYzoKKyAgICAg
ICAgLy8gQW55IG1vZGlmaWNhdGlvbnMgb2YgdGhlIG1fbmV4dCBvciBtX3ByZXZpb3VzIG9mIGFu
IGl0ZXJhdG9yIHRoYXQgaXMgaW4gYSBsaW5rZWQgbGlzdCBvZiBhIEhhc2hUYWJsZTo6bV9pdGVy
YXRvciwKKyAgICAgICAgLy8gc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBtX3RhYmxlLT5tX211dGV4
LgorICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7CisgICAgICAg
IG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1fbmV4dDsKKyAgICAgICAgbXV0YWJsZSBjb25zdF9p
dGVyYXRvciogbV9wcmV2aW91czsKKyNlbmRpZgorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGNs
YXNzIEhhc2hUYWJsZUl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJk
X2l0ZXJhdG9yX3RhZywgVmFsdWUsIHN0ZDo6cHRyZGlmZl90LCBWYWx1ZSosIFZhbHVlJj4gewor
ICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Cisg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7CisgICAgICAgIHR5cGVk
ZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRl
ZiBWYWx1ZSBWYWx1ZVR5cGU7CisgICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlJiBSZWZlcmVuY2VU
eXBlOworICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7CisKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKKworICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNo
VGFibGVUeXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQpIDogbV9p
dGVyYXRvcih0YWJsZSwgcG9zLCBlbmQpIHsgfQorICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihI
YXNoVGFibGVUeXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQsIEhh
c2hJdGVtS25vd25Hb29kVGFnIHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCwgdGFn
KSB7IH0KKworICAgIHB1YmxpYzoKKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoKSB7IH0KKwor
ICAgICAgICAvLyBkZWZhdWx0IGNvcHksIGFzc2lnbm1lbnQgYW5kIGRlc3RydWN0b3IgYXJlIE9L
CisKKyAgICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQ
b2ludGVyVHlwZT4obV9pdGVyYXRvci5nZXQoKSk7IH0KKyAgICAgICAgUmVmZXJlbmNlVHlwZSBv
cGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICAgICAgUG9pbnRlclR5cGUg
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisKKyAgICAgICAgaXRlcmF0b3Im
IG9wZXJhdG9yKysoKSB7ICsrbV9pdGVyYXRvcjsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAgICAg
Ly8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQKKworICAgICAgICAvLyBDb21wYXJp
c29uLgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX2l0ZXJhdG9yID09IG90aGVyLm1faXRlcmF0b3I7IH0KKyAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVy
YXRvciAhPSBvdGhlci5tX2l0ZXJhdG9yOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgPT0gb3Ro
ZXI7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhlcjsgfQorCisgICAgICAgIG9wZXJh
dG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgY29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvcjsKKyAgICB9OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+
IGNsYXNzIElkZW50aXR5SGFzaFRyYW5zbGF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJl
dHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYg
YikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNs
YXRlKFQmIGxvY2F0aW9uLCBjb25zdCBVJiwgViYmIHZhbHVlKQorICAgICAgICB7IAorICAgICAg
ICAgICAgVmFsdWVUcmFpdHM6OmFzc2lnblRvRW1wdHkobG9jYXRpb24sIHN0ZDo6Zm9yd2FyZDxW
Pih2YWx1ZSkpOyAKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
dGVyYXRvclR5cGU+IHN0cnVjdCBIYXNoVGFibGVBZGRSZXN1bHQgeworICAgICAgICBIYXNoVGFi
bGVBZGRSZXN1bHQoKSA6IGlzTmV3RW50cnkoZmFsc2UpIHsgfQorICAgICAgICBIYXNoVGFibGVB
ZGRSZXN1bHQoSXRlcmF0b3JUeXBlIGl0ZXIsIGJvb2wgaXNOZXdFbnRyeSkgOiBpdGVyYXRvcihp
dGVyKSwgaXNOZXdFbnRyeShpc05ld0VudHJ5KSB7IH0KKyAgICAgICAgSXRlcmF0b3JUeXBlIGl0
ZXJhdG9yOworICAgICAgICBib29sIGlzTmV3RW50cnk7CisKKyAgICAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzTmV3RW50cnk7IH0KKyAgICB9OworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KKyAgICBjbGFzcyBIYXNoVGFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFRyYWl0cyBWYWx1
ZVRyYWl0czsKKyAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKKyAgICAgICAgdHlwZWRlZiBW
YWx1ZSBWYWx1ZVR5cGU7CisgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNoVHJhbnNsYXRvcjxW
YWx1ZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKKyAgICAg
ICAgdHlwZWRlZiBIYXNoVGFibGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKKworI2lm
IERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQorICAgICAgICBzdHJ1Y3QgU3RhdHMgewor
ICAgICAgICAgICAgU3RhdHMoKQorICAgICAgICAgICAgICAgIDogbnVtQWNjZXNzZXMoMCkKKyAg
ICAgICAgICAgICAgICAsIG51bVJlaGFzaGVzKDApCisgICAgICAgICAgICAgICAgLCBudW1SZW1v
dmVzKDApCisgICAgICAgICAgICAgICAgLCBudW1SZWluc2VydHMoMCkKKyAgICAgICAgICAgICAg
ICAsIG1heENvbGxpc2lvbnMoMCkKKyAgICAgICAgICAgICAgICAsIG51bUNvbGxpc2lvbnMoMCkK
KyAgICAgICAgICAgICAgICAsIGNvbGxpc2lvbkdyYXBoKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbnVtQWNjZXNzZXM7CisgICAgICAgICAg
ICB1bnNpZ25lZCBudW1SZWhhc2hlczsKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bVJlbW92ZXM7
CisgICAgICAgICAgICB1bnNpZ25lZCBudW1SZWluc2VydHM7CisKKyAgICAgICAgICAgIHVuc2ln
bmVkIG1heENvbGxpc2lvbnM7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1Db2xsaXNpb25zOwor
ICAgICAgICAgICAgdW5zaWduZWQgY29sbGlzaW9uR3JhcGhbNDA5Nl07CisKKyAgICAgICAgICAg
IHZvaWQgcmVjb3JkQ29sbGlzaW9uQXRDb3VudCh1bnNpZ25lZCBjb3VudCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQgPiBtYXhDb2xsaXNpb25zKQorICAgICAgICAg
ICAgICAgICAgICBtYXhDb2xsaXNpb25zID0gY291bnQ7CisgICAgICAgICAgICAgICAgbnVtQ29s
bGlzaW9ucysrOworICAgICAgICAgICAgICAgIGNvbGxpc2lvbkdyYXBoW2NvdW50XSsrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIGR1bXBTdGF0cygpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlxuV1RGOjpIYXNoVGFibGU6OlN0YXRzIGR1bXBc
blxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVkIGFjY2Vzc2VzXG4iLCBudW1BY2Nl
c3Nlcyk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVkIHRvdGFsIGNvbGxpc2lvbnMsIGF2
ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xuIiwgbnVtQ29sbGlzaW9ucywgMS4wICogKG51
bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBudW1BY2Nlc3Nlcyk7CisgICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoImxvbmdlc3QgY29sbGlzaW9uIGNoYWluOiAlZFxuIiwgbWF4Q29sbGlzaW9u
cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBtYXhDb2xsaXNp
b25zOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgJWQgbG9va3VwcyB3
aXRoIGV4YWN0bHkgJWQgY29sbGlzaW9ucyAoJS4yZiUlICwgJS4yZiUlIHdpdGggdGhpcyBtYW55
IG9yIG1vcmUpXG4iLCBjb2xsaXNpb25HcmFwaFtpXSwgaSwgMTAwLjAgKiAoY29sbGlzaW9uR3Jh
cGhbaV0gLSBjb2xsaXNpb25HcmFwaFtpKzFdKSAvIG51bUFjY2Vzc2VzLCAxMDAuMCAqIGNvbGxp
c2lvbkdyYXBoW2ldIC8gbnVtQWNjZXNzZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBkYXRhTG9nRigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nRigiJWQgcmVpbnNlcnRzXG4iLCBudW1SZWluc2VydHMpOworICAgICAg
ICAgICAgfQorICAgICAgICB9OworI2VuZGlmCisKKyAgICAgICAgSGFzaFRhYmxlKCk7CisgICAg
ICAgIH5IYXNoVGFibGUoKSAKKyAgICAgICAgeworICAgICAgICAgICAgaW52YWxpZGF0ZUl0ZXJh
dG9ycygpOyAKKyAgICAgICAgICAgIGlmIChtX3RhYmxlKQorICAgICAgICAgICAgICAgIGRlYWxs
b2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7CisjaWYgQ0hFQ0tfSEFTSFRBQkxFX1VT
RV9BRlRFUl9ERVNUUlVDVElPTgorICAgICAgICAgICAgbV90YWJsZSA9IChWYWx1ZVR5cGUqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZjsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgSGFzaFRh
YmxlKGNvbnN0IEhhc2hUYWJsZSYpOworICAgICAgICB2b2lkIHN3YXAoSGFzaFRhYmxlJik7Cisg
ICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYpOworCisgICAgICAg
IEhhc2hUYWJsZShIYXNoVGFibGUmJik7CisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KEhh
c2hUYWJsZSYmKTsKKworICAgICAgICAvLyBXaGVuIHRoZSBoYXNoIHRhYmxlIGlzIGVtcHR5LCBq
dXN0IHJldHVybiB0aGUgc2FtZSBpdGVyYXRvciBmb3IgZW5kIGFzIGZvciBiZWdpbi4KKyAgICAg
ICAgLy8gVGhpcyBpcyBtb3JlIGVmZmljaWVudCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdG8gc2tp
cCBhbGwgdGhlIGVtcHR5IGFuZCBkZWxldGVkCisgICAgICAgIC8vIGJ1Y2tldHMsIGFuZCBpdGVy
YXRpbmcgYW4gZW1wdHkgdGFibGUgaXMgYSBjb21tb24gY2FzZSB0aGF0J3Mgd29ydGggb3B0aW1p
emluZy4KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQo
KSA6IG1ha2VJdGVyYXRvcihtX3RhYmxlKTsgfQorICAgICAgICBpdGVyYXRvciBlbmQoKSB7IHJl
dHVybiBtYWtlS25vd25Hb29kSXRlcmF0b3IobV90YWJsZSArIG1fdGFibGVTaXplKTsgfQorICAg
ICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKSA/IGVu
ZCgpIDogbWFrZUNvbnN0SXRlcmF0b3IobV90YWJsZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IobV90YWJs
ZSArIG1fdGFibGVTaXplKTsgfQorCisgICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2tleUNvdW50OyB9CisgICAgICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV90YWJsZVNpemU7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1fa2V5Q291bnQ7IH0KKworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlw
ZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6
OmV4dHJhY3QodmFsdWUpLCB2YWx1ZSk7IH0KKyAgICAgICAgQWRkUmVzdWx0IGFkZChWYWx1ZVR5
cGUmJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rv
cjo6ZXh0cmFjdCh2YWx1ZSksIFdURk1vdmUodmFsdWUpKTsgfQorCisgICAgICAgIC8vIEEgc3Bl
Y2lhbCB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFu
ZCBjb21wYXJpbmcKKyAgICAgICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRo
ZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKKyAgICAg
ICAgLy8gaW4gdGhlIHRhYmxlLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJlc3VsdCBhZGQoVCYmIGtleSwg
RXh0cmEmJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZFBhc3NpbmdIYXNoQ29kZShUJiYg
a2V5LCBFeHRyYSYmKTsKKworICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtl
eSkgeyByZXR1cm4gZmluZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9CisgICAgICAg
IGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVybiBm
aW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KKyAgICAgICAgYm9vbCBjb250YWlu
cyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGNvbnRhaW5zPElkZW50aXR5VHJh
bnNsYXRvclR5cGU+KGtleSk7IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVD4gaXRlcmF0b3IgZmluZChjb25zdCBUJik7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBjb25zdF9pdGVyYXRv
ciBmaW5kKGNvbnN0IFQmKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3IsIHR5cGVuYW1lIFQ+IGJvb2wgY29udGFpbnMoY29uc3QgVCYpIGNvbnN0OworCisg
ICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsKKyAgICAgICAgdm9pZCByZW1vdmUo
aXRlcmF0b3IpOworICAgICAgICB2b2lkIHJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hl
Y2soaXRlcmF0b3IpOworICAgICAgICB2b2lkIHJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5
Q2hlY2soY29uc3RfaXRlcmF0b3IpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdm9pZCBj
bGVhcigpOworCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlCdWNrZXQoY29uc3QgVmFsdWVU
eXBlJiB2YWx1ZSkgeyByZXR1cm4gaXNIYXNoVHJhaXRzRW1wdHlWYWx1ZTxLZXlUcmFpdHM+KEV4
dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZEJ1Y2tldChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBLZXlUcmFpdHM6OmlzRGVs
ZXRlZFZhbHVlKEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkpOyB9CisgICAgICAgIHN0YXRpYyBi
b29sIGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1
cm4gaXNFbXB0eUJ1Y2tldCh2YWx1ZSkgfHwgaXNEZWxldGVkQnVja2V0KHZhbHVlKTsgfQorCisg
ICAgICAgIFZhbHVlVHlwZSogbG9va3VwKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBsb29rdXA8
SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBsb29rdXAoY29uc3QgVCYp
OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4g
VmFsdWVUeXBlKiBpbmxpbmVMb29rdXAoY29uc3QgVCYpOworCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0OworI2Vsc2UKKyAg
ICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgeyB9CisjZW5kaWYKKyNp
ZiBDSEVDS19IQVNIVEFCTEVfQ09OU0lTVEVOQ1kKKyAgICAgICAgdm9pZCBpbnRlcm5hbENoZWNr
VGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0IHsgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7IH0KKyAg
ICAgICAgdm9pZCBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25z
dCB7IGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsgfQorI2Vsc2UKKyAgICAgICAg
c3RhdGljIHZvaWQgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkgeyB9
CisgICAgICAgIHN0YXRpYyB2b2lkIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgeyB9
CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBWYWx1ZVR5cGUqIGFsbG9j
YXRlVGFibGUodW5zaWduZWQgc2l6ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVU
YWJsZShWYWx1ZVR5cGUqIHRhYmxlLCB1bnNpZ25lZCBzaXplKTsKKworICAgICAgICB0eXBlZGVm
IHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCBib29sPiBMb29rdXBUeXBlOworICAgICAgICB0eXBlZGVm
IHN0ZDo6cGFpcjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7CisKKyAgICAg
ICAgTG9va3VwVHlwZSBsb29rdXBGb3JXcml0aW5nKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBs
b29rdXBGb3JXcml0aW5nPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH07CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBGdWxsTG9va3Vw
VHlwZSBmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJik7CisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBMb29rdXBUeXBlIGxvb2t1cEZvcldy
aXRpbmcoY29uc3QgVCYpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xh
dG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gdm9pZCBhZGRVbmlxdWVGb3JJbml0aWFs
aXphdGlvbihUJiYga2V5LCBFeHRyYSYmKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gdm9pZCBjaGVja0tleShjb25zdCBUJik7CisKKyAg
ICAgICAgdm9pZCByZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVj
ayhWYWx1ZVR5cGUqKTsKKyAgICAgICAgdm9pZCByZW1vdmVBbmRJbnZhbGlkYXRlKFZhbHVlVHlw
ZSopOworICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsKKworICAgICAgICBib29sIHNo
b3VsZEV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIChtX2tleUNvdW50ICsgbV9kZWxldGVkQ291bnQp
ICogbV9tYXhMb2FkID49IG1fdGFibGVTaXplOyB9CisgICAgICAgIGJvb2wgbXVzdFJlaGFzaElu
UGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwgbV90YWJsZVNp
emUgKiAyOyB9CisgICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29uc3QgeyByZXR1cm4gbV9r
ZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICYmIG1fdGFibGVTaXplID4gS2V5VHJh
aXRzOjptaW5pbXVtVGFibGVTaXplOyB9CisgICAgICAgIFZhbHVlVHlwZSogZXhwYW5kKFZhbHVl
VHlwZSogZW50cnkgPSBudWxscHRyKTsKKyAgICAgICAgdm9pZCBzaHJpbmsoKSB7IHJlaGFzaCht
X3RhYmxlU2l6ZSAvIDIsIG51bGxwdHIpOyB9CisKKyAgICAgICAgVmFsdWVUeXBlKiByZWhhc2go
dW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KTsKKyAgICAgICAgVmFsdWVU
eXBlKiByZWluc2VydChWYWx1ZVR5cGUmJik7CisKKyAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0
ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkgeyBoYXNoVHJhaXRzRGVsZXRlQnVja2V0PFRyYWl0
cz4oYnVja2V0KTsgfQorCisgICAgICAgIEZ1bGxMb29rdXBUeXBlIG1ha2VMb29rdXBSZXN1bHQo
VmFsdWVUeXBlKiBwb3NpdGlvbiwgYm9vbCBmb3VuZCwgdW5zaWduZWQgaGFzaCkKKyAgICAgICAg
ICAgIHsgcmV0dXJuIEZ1bGxMb29rdXBUeXBlKExvb2t1cFR5cGUocG9zaXRpb24sIGZvdW5kKSwg
aGFzaCk7IH0KKworICAgICAgICBpdGVyYXRvciBtYWtlSXRlcmF0b3IoVmFsdWVUeXBlKiBwb3Mp
IHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplKTsgfQor
ICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykg
Y29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJs
ZVNpemUpOyB9CisgICAgICAgIGl0ZXJhdG9yIG1ha2VLbm93bkdvb2RJdGVyYXRvcihWYWx1ZVR5
cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNp
emUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlS25v
d25Hb29kQ29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3Rf
aXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25H
b29kKTsgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB2b2lkIGNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25zdDsKKyNlbHNlCisgICAgICAgIHN0YXRpYyB2b2lk
IGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0KKyNlbmRpZgorCisjaWYgQ0hF
Q0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMo
KTsKKyNlbHNlCisgICAgICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKSB7IH0K
KyNlbmRpZgorCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtX21heExvYWQgPSAyOwor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbV9taW5Mb2FkID0gNjsKKworICAgICAgICBW
YWx1ZVR5cGUqIG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVkIG1fdGFibGVTaXplOworICAgICAg
ICB1bnNpZ25lZCBtX3RhYmxlU2l6ZU1hc2s7CisgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7
CisgICAgICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OworCisjaWYgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gQWxsIGFjY2VzcyB0byBtX2l0ZXJh
dG9ycyBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIG1fbXV0ZXguCisgICAgICAgIG11dGFibGUgY29u
c3RfaXRlcmF0b3IqIG1faXRlcmF0b3JzOworICAgICAgICAvLyBVc2Ugc3RkOjp1bmlxdWVfcHRy
IHNvIEhhc2hUYWJsZSBjYW4gc3RpbGwgYmUgbWVtbW92ZSdkIG9yIG1lbWNweSdlZC4KKyAgICAg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8TG9jaz4gbV9tdXRleDsKKyNlbmRpZgorCisjaWYg
RFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgcHVibGljOgorICAgICAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxTdGF0cz4gbV9zdGF0czsKKyNlbmRpZgorICAgIH07CisKKyAg
ICAvLyBTZXQgYWxsIHRoZSBiaXRzIHRvIG9uZSBhZnRlciB0aGUgbW9zdCBzaWduaWZpY2FudCBi
aXQ6IDAwMTEwMTAxMDEwIC0+IDAwMTExMTExMTExLgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNp
emU+IHN0cnVjdCBPbmVpZnlMb3dCaXRzOworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgT25l
aWZ5TG93Qml0czwwPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IDA7
CisgICAgfTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1iZXI+CisgICAgc3RydWN0IE9uZWlm
eUxvd0JpdHMgeworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSBudW1iZXIg
fCBPbmVpZnlMb3dCaXRzPChudW1iZXIgPj4gMSk+Ojp2YWx1ZTsKKyAgICB9OworICAgIC8vIENv
bXB1dGUgdGhlIGZpcnN0IHBvd2VyIG9mIHR3byBpbnRlZ2VyIHRoYXQgaXMgYW4gdXBwZXIgYm91
bmQgb2YgdGhlIHBhcmFtZXRlciAnbnVtYmVyJy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1i
ZXI+CisgICAgc3RydWN0IFVwcGVyUG93ZXJPZlR3b0JvdW5kIHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHZhbHVlID0gKE9uZWlmeUxvd0JpdHM8bnVtYmVyIC0gMT46OnZhbHVlICsg
MSkgKiAyOworICAgIH07CisKKyAgICAvLyBCZWNhdXNlIHBvd2VyIG9mIHR3byBudW1iZXJzIGFy
ZSB0aGUgbGltaXQgb2YgbWF4TG9hZCwgdGhlaXIgY2FwYWNpdHkgaXMgdHdpY2UgdGhlCisgICAg
Ly8gVXBwZXJQb3dlck9mVHdvQm91bmQsIG9yIDQgdGltZXMgdGhlaXIgdmFsdWVzLgorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIHNpemUsIGJvb2wgaXNQb3dlck9mVHdvPiBzdHJ1Y3QgSGFzaFRhYmxl
Q2FwYWNpdHlGb3JTaXplU3BsaXR0ZXI7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KKyAg
ICBzdHJ1Y3QgSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplU3BsaXR0ZXI8c2l6ZSwgdHJ1ZT4gewor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSBzaXplICogNDsKKyAgICB9Owor
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IEhhc2hUYWJsZUNhcGFjaXR5
Rm9yU2l6ZVNwbGl0dGVyPHNpemUsIGZhbHNlPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB2YWx1ZSA9IFVwcGVyUG93ZXJPZlR3b0JvdW5kPHNpemU+Ojp2YWx1ZTsKKyAgICB9Owor
CisgICAgLy8gSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIGNvbXB1dGVzIHRoZSB1cHBlciBwb3dl
ciBvZiB0d28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgc2l6ZSBwYXJhbWV0ZXIuCisgICAgLy8gVGhp
cyBpcyBkb25lIGF0IGNvbXBpbGUgdGltZSB0byBpbml0aWFsaXplIHRoZSBIYXNoVHJhaXRzLgor
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IEhhc2hUYWJsZUNhcGFjaXR5
Rm9yU2l6ZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IEhhc2hUYWJs
ZUNhcGFjaXR5Rm9yU2l6ZVNwbGl0dGVyPHNpemUsICEoc2l6ZSAmIChzaXplIC0gMSkpPjo6dmFs
dWU7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxl
KCkKKyAgICAgICAgOiBtX3RhYmxlKDApCisgICAgICAgICwgbV90YWJsZVNpemUoMCkKKyAgICAg
ICAgLCBtX3RhYmxlU2l6ZU1hc2soMCkKKyAgICAgICAgLCBtX2tleUNvdW50KDApCisgICAgICAg
ICwgbV9kZWxldGVkQ291bnQoMCkKKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisgICAg
ICAgICwgbV9pdGVyYXRvcnMoMCkKKyAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8
TG9jaz4oKSkKKyNlbmRpZgorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQorICAg
ICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CisKKyAgICBpbmxpbmUgdW5zaWduZWQgZG91YmxlSGFzaCh1bnNpZ25lZCBrZXkpCisg
ICAgeworICAgICAgICBrZXkgPSB+a2V5ICsgKGtleSA+PiAyMyk7CisgICAgICAgIGtleSBePSAo
a2V5IDw8IDEyKTsKKyAgICAgICAga2V5IF49IChrZXkgPj4gNyk7CisgICAgICAgIGtleSBePSAo
a2V5IDw8IDIpOworICAgICAgICBrZXkgXj0gKGtleSA+PiAyMCk7CisgICAgICAgIHJldHVybiBr
ZXk7CisgICAgfQorCisjaWYgQVNTRVJUX0RJU0FCTEVECisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIGlubGluZSB2b2lk
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPjo6Y2hlY2tLZXkoY29uc3QgVCYpCisgICAgeworICAgIH0KKworI2Vsc2UKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrS2V5KGNvbnN0IFQmIGtleSkKKyAgICB7Cisg
ICAgICAgIGlmICghSGFzaEZ1bmN0aW9uczo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVCghSGFzaFRyYW5zbGF0b3I6OmVx
dWFsKEtleVRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBrZXkpKTsKKyAgICAgICAgdHlwZW5hbWUgc3Rk
OjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFZhbHVlVHlwZSksIHN0ZDo6YWxpZ25tZW50X29mPFZh
bHVlVHlwZT46OnZhbHVlPjo6dHlwZSBkZWxldGVkVmFsdWVCdWZmZXI7CisgICAgICAgIFZhbHVl
VHlwZSogZGVsZXRlZFZhbHVlUHRyID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8VmFsdWVUeXBlKj4o
JmRlbGV0ZWRWYWx1ZUJ1ZmZlcik7CisgICAgICAgIFZhbHVlVHlwZSYgZGVsZXRlZFZhbHVlID0g
KmRlbGV0ZWRWYWx1ZVB0cjsKKyAgICAgICAgVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUo
ZGVsZXRlZFZhbHVlKTsKKyAgICAgICAgQVNTRVJUKCFIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0
cmFjdG9yOjpleHRyYWN0KGRlbGV0ZWRWYWx1ZSksIGtleSkpOworICAgIH0KKworI2VuZGlmCisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6bG9va3VwKGNvbnN0IFQmIGtleSkgLT4g
VmFsdWVUeXBlKgorICAgIHsKKyAgICAgICAgcmV0dXJuIGlubGluZUxvb2t1cDxIYXNoVHJhbnNs
YXRvcj4oa2V5KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OmlubGluZUxvb2t1cChjb25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoKKyAgICB7CisgICAg
ICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOworCisgICAgICAgIHVuc2lnbmVkIGsg
PSAwOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAgICAg
ICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVkIGggPSBIYXNo
VHJhbnNsYXRvcjo6aGFzaChrZXkpOworICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNr
OworCisgICAgICAgIGlmICghdGFibGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKworI2lmIERV
TVBfSEFTSFRBQkxFX1NUQVRTCisgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bUFjY2Vzc2Vz
OworICAgICAgICB1bnNpZ25lZCBwcm9iZUNvdW50ID0gMDsKKyNlbmRpZgorCisjaWYgRFVNUF9I
QVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgICsrbV9zdGF0cy0+bnVtQWNjZXNzZXM7
CisjZW5kaWYKKworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgVmFsdWVUeXBlKiBl
bnRyeSA9IHRhYmxlICsgaTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHdlIGNv
dW50IG9uIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBvdXQgdGhpcyBicmFuY2gKKyAgICAgICAg
ICAgIGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgewor
ICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRy
YWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFp
c0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSAmJiBIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9y
OjpleHRyYWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRy
eTsKKyAgICAgICAgICAgIH0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUworICAgICAgICAgICAg
Kytwcm9iZUNvdW50OworICAgICAgICAgICAgSGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lv
bkF0Q291bnQocHJvYmVDb3VudCk7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRT
X1BFUl9UQUJMRQorICAgICAgICAgICAgbV9zdGF0cy0+cmVjb3JkQ29sbGlzaW9uQXRDb3VudChw
cm9iZUNvdW50KTsKKyNlbmRpZgorCisgICAgICAgICAgICBpZiAoayA9PSAwKQorICAgICAgICAg
ICAgICAgIGsgPSAxIHwgZG91YmxlSGFzaChoKTsKKyAgICAgICAgICAgIGkgPSAoaSArIGspICYg
c2l6ZU1hc2s7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIGlubGluZSBhdXRvIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6bG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IExvb2t1cFR5cGUKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0
b3I+KGtleSk7CisKKyAgICAgICAgdW5zaWduZWQgayA9IDA7CisgICAgICAgIFZhbHVlVHlwZSog
dGFibGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXpl
TWFzazsKKyAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7Cisg
ICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CisKKyNpZiBEVU1QX0hBU0hUQUJMRV9T
VEFUUworICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsKKyAgICAgICAgdW5z
aWduZWQgcHJvYmVDb3VudCA9IDA7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRT
X1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51bUFjY2Vzc2VzOworI2VuZGlmCisKKyAg
ICAgICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOworCisgICAgICAgIHdoaWxlICgxKSB7
CisgICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gdGFibGUgKyBpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyB3ZSBjb3VudCBvbiB0aGUgY29tcGlsZXIgdG8gb3B0aW1pemUgb3V0
IHRoaXMgYnJhbmNoCisgICAgICAgICAgICBpZiAoSGFzaEZ1bmN0aW9uczo6c2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgq
ZW50cnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTG9va3VwVHlwZShkZWxldGVkRW50
cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFsc2UpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0
KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMb29rdXBUeXBlKGVu
dHJ5LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNEZWxl
dGVkQnVja2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVu
dHJ5OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1
Y2tldCgqZW50cnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTG9va3VwVHlwZShkZWxl
dGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFsc2UpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQorICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChI
YXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBMb29rdXBUeXBlKGVudHJ5LCB0cnVlKTsKKyAgICAg
ICAgICAgIH0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUworICAgICAgICAgICAgKytwcm9iZUNv
dW50OworICAgICAgICAgICAgSGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291bnQo
cHJvYmVDb3VudCk7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJM
RQorICAgICAgICAgICAgbV9zdGF0cy0+cmVjb3JkQ29sbGlzaW9uQXRDb3VudChwcm9iZUNvdW50
KTsKKyNlbmRpZgorCisgICAgICAgICAgICBpZiAoayA9PSAwKQorICAgICAgICAgICAgICAgIGsg
PSAxIHwgZG91YmxlSGFzaChoKTsKKyAgICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1hc2s7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZnVs
bExvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYga2V5KSAtPiBGdWxsTG9va3VwVHlwZQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdGFibGUpOworICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRv
cj4oa2V5KTsKKworICAgICAgICB1bnNpZ25lZCBrID0gMDsKKyAgICAgICAgVmFsdWVUeXBlKiB0
YWJsZSA9IG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gbV90YWJsZVNpemVN
YXNrOworICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKKyAg
ICAgICAgdW5zaWduZWQgaSA9IGggJiBzaXplTWFzazsKKworI2lmIERVTVBfSEFTSFRBQkxFX1NU
QVRTCisgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bUFjY2Vzc2VzOworICAgICAgICB1bnNp
Z25lZCBwcm9iZUNvdW50ID0gMDsKKyNlbmRpZgorCisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNf
UEVSX1RBQkxFCisgICAgICAgICsrbV9zdGF0cy0+bnVtQWNjZXNzZXM7CisjZW5kaWYKKworICAg
ICAgICBWYWx1ZVR5cGUqIGRlbGV0ZWRFbnRyeSA9IDA7CisKKyAgICAgICAgd2hpbGUgKDEpIHsK
KyAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSB0YWJsZSArIGk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIHdlIGNvdW50IG9uIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBvdXQg
dGhpcyBicmFuY2gKKyAgICAgICAgICAgIGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCkgeworICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCpl
bnRyeSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGRlbGV0
ZWRFbnRyeSA/IGRlbGV0ZWRFbnRyeSA6IGVudHJ5LCBmYWxzZSwgaCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6
OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VM
b29rdXBSZXN1bHQoZW50cnksIHRydWUsIGgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlTG9va3VwUmVzdWx0KGRlbGV0ZWRFbnRyeSA/IGRlbGV0ZWRFbnRyeSA6IGVudHJ5LCBm
YWxzZSwgaCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVj
a2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Owor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6
OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VM
b29rdXBSZXN1bHQoZW50cnksIHRydWUsIGgpOworICAgICAgICAgICAgfQorI2lmIERVTVBfSEFT
SFRBQkxFX1NUQVRTCisgICAgICAgICAgICArK3Byb2JlQ291bnQ7CisgICAgICAgICAgICBIYXNo
VGFibGVTdGF0czo6cmVjb3JkQ29sbGlzaW9uQXRDb3VudChwcm9iZUNvdW50KTsKKyNlbmRpZgor
CisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgICAgICBtX3N0YXRz
LT5yZWNvcmRDb2xsaXNpb25BdENvdW50KHByb2JlQ291bnQpOworI2VuZGlmCisKKyAgICAgICAg
ICAgIGlmIChrID09IDApCisgICAgICAgICAgICAgICAgayA9IDEgfCBkb3VibGVIYXNoKGgpOwor
ICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFk
ZFVuaXF1ZUZvckluaXRpYWxpemF0aW9uKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpCisgICAgewor
ICAgICAgICBBU1NFUlQobV90YWJsZSk7CisKKyAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0
b3I+KGtleSk7CisKKyAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOworCisgICAgICAgIGlu
dGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CisKKyAgICAgICAgdW5zaWduZWQgayA9IDA7
CisgICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBz
aXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFu
c2xhdG9yOjpoYXNoKGtleSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CisK
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUworICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1B
Y2Nlc3NlczsKKyAgICAgICAgdW5zaWduZWQgcHJvYmVDb3VudCA9IDA7CisjZW5kaWYKKworI2lm
IERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51bUFj
Y2Vzc2VzOworI2VuZGlmCisKKyAgICAgICAgVmFsdWVUeXBlKiBlbnRyeTsKKyAgICAgICAgd2hp
bGUgKDEpIHsKKyAgICAgICAgICAgIGVudHJ5ID0gdGFibGUgKyBpOworCisgICAgICAgICAgICBp
ZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisjaWYg
RFVNUF9IQVNIVEFCTEVfU1RBVFMKKyAgICAgICAgICAgICsrcHJvYmVDb3VudDsKKyAgICAgICAg
ICAgIEhhc2hUYWJsZVN0YXRzOjpyZWNvcmRDb2xsaXNpb25BdENvdW50KHByb2JlQ291bnQpOwor
I2VuZGlmCisKKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKKyAgICAgICAgICAg
IG1fc3RhdHMtPnJlY29yZENvbGxpc2lvbkF0Q291bnQocHJvYmVDb3VudCk7CisjZW5kaWYKKwor
ICAgICAgICAgICAgaWYgKGsgPT0gMCkKKyAgICAgICAgICAgICAgICBrID0gMSB8IGRvdWJsZUhh
c2goaCk7CisgICAgICAgICAgICBpID0gKGkgKyBrKSAmIHNpemVNYXNrOworICAgICAgICB9CisK
KyAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxU
PihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CisKKyAgICAgICAgaW50ZXJuYWxD
aGVja1RhYmxlQ29uc2lzdGVuY3koKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxib29sIGVtcHR5
VmFsdWVJc1plcm8+IHN0cnVjdCBIYXNoVGFibGVCdWNrZXRJbml0aWFsaXplcjsKKworICAgIHRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPGZhbHNlPiB7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgVmFsdWU+IHN0YXRpYyB2b2lk
IGluaXRpYWxpemUoVmFsdWUmIGJ1Y2tldCkKKyAgICAgICAgeworICAgICAgICAgICAgbmV3IChO
b3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihidWNrZXQpKSBWYWx1ZShUcmFpdHM6OmVtcHR5VmFsdWUo
KSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRhYmxl
QnVja2V0SW5pdGlhbGl6ZXI8dHJ1ZT4geworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIFZhbHVlPiBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFZhbHVlJiBidWNrZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaW5pdGlhbGl6ZXMgdGhlIGJ1Y2tldCB3
aXRob3V0IGNvcHlpbmcgdGhlIGVtcHR5IHZhbHVlLgorICAgICAgICAgICAgLy8gVGhhdCBtYWtl
cyBpdCBwb3NzaWJsZSB0byB1c2UgdGhpcyB3aXRoIHR5cGVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBj
b3B5aW5nLgorICAgICAgICAgICAgLy8gVGhlIG1lbXNldCB0byAwIGxvb2tzIGxpa2UgYSBzbG93
IG9wZXJhdGlvbiBidXQgaXMgb3B0aW1pemVkIGJ5IHRoZSBjb21waWxlcnMuCisgICAgICAgICAg
ICBtZW1zZXQoc3RkOjphZGRyZXNzb2YoYnVja2V0KSwgMCwgc2l6ZW9mKGJ1Y2tldCkpOworICAg
ICAgICB9CisgICAgfTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6aW5pdGlhbGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkKKyAgICB7CisgICAgICAgIEhh
c2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybz46OnRlbXBs
YXRlIGluaXRpYWxpemU8VHJhaXRzPihidWNrZXQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4
dHJhPgorICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChUJiYga2V5LCBFeHRy
YSYmIGV4dHJhKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFu
c2xhdG9yPihrZXkpOworCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKKworICAgICAg
ICBpZiAoIW1fdGFibGUpCisgICAgICAgICAgICBleHBhbmQobnVsbHB0cik7CisKKyAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKKworICAgICAgICBBU1NFUlQobV90YWJs
ZSk7CisKKyAgICAgICAgdW5zaWduZWQgayA9IDA7CisgICAgICAgIFZhbHVlVHlwZSogdGFibGUg
PSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsK
KyAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7CisgICAgICAg
IHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CisKKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUwor
ICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsKKyAgICAgICAgdW5zaWduZWQg
cHJvYmVDb3VudCA9IDA7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9U
QUJMRQorICAgICAgICArK21fc3RhdHMtPm51bUFjY2Vzc2VzOworI2VuZGlmCisKKyAgICAgICAg
VmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOworICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5Owor
ICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgZW50cnkgPSB0YWJsZSArIGk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIC8vIHdlIGNvdW50IG9uIHRoZSBjb21waWxlciB0byBvcHRp
bWl6ZSBvdXQgdGhpcyBicmFuY2gKKyAgICAgICAgICAgIGlmIChIYXNoRnVuY3Rpb25zOjpzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgeworICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5
QnVja2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9y
OjpleHRyYWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBZGRS
ZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKKyAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzRGVs
ZXRlZEJ1Y2tldCgqZW50cnkpKQorICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBl
bnRyeTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0
cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOworICAgICAg
ICAgICAgfQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCisgICAgICAgICAgICArK3Byb2JlQ291
bnQ7CisgICAgICAgICAgICBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlzaW9uQXRDb3VudChw
cm9iZUNvdW50KTsKKyNlbmRpZgorCisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxF
CisgICAgICAgICAgICBtX3N0YXRzLT5yZWNvcmRDb2xsaXNpb25BdENvdW50KHByb2JlQ291bnQp
OworI2VuZGlmCisKKyAgICAgICAgICAgIGlmIChrID09IDApCisgICAgICAgICAgICAgICAgayA9
IDEgfCBkb3VibGVIYXNoKGgpOworICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChkZWxldGVkRW50cnkpIHsKKyAgICAgICAgICAgIGlu
aXRpYWxpemVCdWNrZXQoKmRlbGV0ZWRFbnRyeSk7CisgICAgICAgICAgICBlbnRyeSA9IGRlbGV0
ZWRFbnRyeTsKKyAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7IAorICAgICAgICB9CisKKyAg
ICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxUPihr
ZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CisgICAgICAgICsrbV9rZXlDb3VudDsK
KyAgICAgICAgCisgICAgICAgIGlmIChzaG91bGRFeHBhbmQoKSkKKyAgICAgICAgICAgIGVudHJ5
ID0gZXhwYW5kKGVudHJ5KTsKKworICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5j
eSgpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRl
cmF0b3IoZW50cnkpLCB0cnVlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KKyAgICBp
bmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRyYSYm
IGV4dHJhKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xh
dG9yPihrZXkpOworCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKKworICAgICAgICBp
ZiAoIW1fdGFibGUpCisgICAgICAgICAgICBleHBhbmQoKTsKKworICAgICAgICBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpOworCisgICAgICAgIEZ1bGxMb29rdXBUeXBlIGxvb2t1cFJl
c3VsdCA9IGZ1bGxMb29rdXBGb3JXcml0aW5nPEhhc2hUcmFuc2xhdG9yPihrZXkpOworCisgICAg
ICAgIFZhbHVlVHlwZSogZW50cnkgPSBsb29rdXBSZXN1bHQuZmlyc3QuZmlyc3Q7CisgICAgICAg
IGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vjb25kOworICAgICAgICB1bnNpZ25l
ZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKKyAgICAgICAgCisgICAgICAgIGlmIChmb3VuZCkK
KyAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5
KSwgZmFsc2UpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkp
KSB7CisgICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7CisgICAgICAgICAgICAt
LW1fZGVsZXRlZENvdW50OworICAgICAgICB9CisKKyAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRy
YW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+
KGV4dHJhKSwgaCk7CisgICAgICAgICsrbV9rZXlDb3VudDsKKworICAgICAgICBpZiAoc2hvdWxk
RXhwYW5kKCkpCisgICAgICAgICAgICBlbnRyeSA9IGV4cGFuZChlbnRyeSk7CisKKyAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKKworICAgICAgICByZXR1cm4gQWRkUmVz
dWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZWluc2VydChWYWx1ZVR5cGUmJiBlbnRy
eSkgLT4gVmFsdWVUeXBlKgorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdGFibGUpOworICAgICAg
ICBBU1NFUlQoIWxvb2t1cEZvcldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuc2Vj
b25kKTsKKyAgICAgICAgQVNTRVJUKCFpc0RlbGV0ZWRCdWNrZXQoKihsb29rdXBGb3JXcml0aW5n
KEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkpLmZpcnN0KSkpOworI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTCisgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaW5zZXJ0czsKKyNlbmRpZgor
I2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51
bVJlaW5zZXJ0czsKKyNlbmRpZgorCisgICAgICAgIFZhbHVlKiBuZXdFbnRyeSA9IGxvb2t1cEZv
cldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuZmlyc3Q7CisgICAgICAgIG5ld0Vu
dHJ5LT5+VmFsdWUoKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBuZXdFbnRyeSkgVmFsdWVUeXBl
KFdURk1vdmUoZW50cnkpKTsKKworICAgICAgICByZXR1cm4gbmV3RW50cnk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+IAorICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgLT4gaXRlcmF0b3IK
KyAgICB7CisgICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgICAgIHJldHVybiBlbmQoKTsK
KworICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbG9va3VwPEhhc2hUcmFuc2xhdG9yPihrZXkp
OworICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIGVuZCgpOworCisgICAg
ICAgIHJldHVybiBtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAK
KyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCisgICAgeworICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgICAgICByZXR1cm4g
ZW5kKCk7CisKKyAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxl
Kj4odGhpcyktPmxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKKyAgICAgICAgaWYgKCFlbnRy
eSkKKyAgICAgICAgICAgIHJldHVybiBlbmQoKTsKKworICAgICAgICByZXR1cm4gbWFrZUtub3du
R29vZENvbnN0SXRlcmF0b3IoZW50cnkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAKKyAgICBib29sIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFt
X3RhYmxlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBjb25z
dF9jYXN0PEhhc2hUYWJsZSo+KHRoaXMpLT5sb29rdXA8SGFzaFRyYW5zbGF0b3I+KGtleSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlQW5kSW52YWxpZGF0
ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soVmFsdWVUeXBlKiBwb3MpCisgICAgeworICAg
ICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CisgICAgICAgIHJlbW92ZShwb3MpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZEludmFsaWRhdGUoVmFs
dWVUeXBlKiBwb3MpCisgICAgeworICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CisgICAg
ICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CisgICAgICAgIHJlbW92ZShwb3Mp
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShWYWx1ZVR5
cGUqIHBvcykKKyAgICB7CisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKKyAgICAgICAgKytIYXNo
VGFibGVTdGF0czo6bnVtUmVtb3ZlczsKKyNlbmRpZgorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRT
X1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51bVJlbW92ZXM7CisjZW5kaWYKKworICAg
ICAgICBkZWxldGVCdWNrZXQoKnBvcyk7CisgICAgICAgICsrbV9kZWxldGVkQ291bnQ7CisgICAg
ICAgIC0tbV9rZXlDb3VudDsKKworICAgICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCisgICAgICAg
ICAgICBzaHJpbmsoKTsKKworICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgp
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmUo
aXRlcmF0b3IgaXQpCisgICAgeworICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgcmVtb3ZlQW5kSW52YWxpZGF0ZShjb25zdF9jYXN0PFZhbHVl
VHlwZSo+KGl0Lm1faXRlcmF0b3IubV9wb3NpdGlvbikpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Cisg
ICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNo
ZWNrKGl0ZXJhdG9yIGl0KQorICAgIHsKKyAgICAgICAgaWYgKGl0ID09IGVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0RW50cnlD
b25zaXN0ZW5jeUNoZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bv
c2l0aW9uKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfaXRlcmF0b3IgaXQpCisg
ICAgeworICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgcmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29u
c3RfY2FzdDxWYWx1ZVR5cGUqPihpdC5tX3Bvc2l0aW9uKSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
KyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkpCisg
ICAgeworICAgICAgICByZW1vdmUoZmluZChrZXkpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpy
ZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVz
dCB1c2UgbG9jYWwgY29waWVzIGluIGNhc2UgImZ1bmN0b3IiIG9yICJkZWxldGVCdWNrZXQiCisg
ICAgICAgIC8vIG1ha2UgYSBmdW5jdGlvbiBjYWxsLCB3aGljaCBwcmV2ZW50cyB0aGUgY29tcGls
ZXIgZnJvbSBrZWVwaW5nCisgICAgICAgIC8vIHRoZSB2YWx1ZXMgaW4gcmVnaXN0ZXIuCisgICAg
ICAgIHVuc2lnbmVkIHJlbW92ZWRCdWNrZXRDb3VudCA9IDA7CisgICAgICAgIFZhbHVlVHlwZSog
dGFibGUgPSBtX3RhYmxlOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fdGFibGVTaXpl
OyBpLS07KSB7CisgICAgICAgICAgICBWYWx1ZVR5cGUmIGJ1Y2tldCA9IHRhYmxlW2ldOworICAg
ICAgICAgICAgaWYgKGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQoYnVja2V0KSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFmdW5jdG9yKGJ1
Y2tldCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGRlbGV0ZUJ1Y2tldChidWNrZXQpOworICAgICAgICAgICAgKytyZW1vdmVkQnVja2V0Q291
bnQ7CisgICAgICAgIH0KKyAgICAgICAgbV9kZWxldGVkQ291bnQgKz0gcmVtb3ZlZEJ1Y2tldENv
dW50OworICAgICAgICBtX2tleUNvdW50IC09IHJlbW92ZWRCdWNrZXRDb3VudDsKKworICAgICAg
ICBpZiAoc2hvdWxkU2hyaW5rKCkpCisgICAgICAgICAgICBzaHJpbmsoKTsKKyAgICAgICAgCisg
ICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWxsb2NhdGVUYWJsZSh1bnNpZ25lZCBzaXplKSAtPiBW
YWx1ZVR5cGUqCisgICAgeworICAgICAgICAvLyB3b3VsZCB1c2UgYSB0ZW1wbGF0ZSBtZW1iZXIg
ZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMgaGVyZSwgYnV0CisgICAgICAg
IC8vIGdjYyBkb2Vzbid0IGFwcGVhciB0byBzdXBwb3J0IHRoYXQKKyAgICAgICAgaWYgKFRyYWl0
czo6ZW1wdHlWYWx1ZUlzWmVybykKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1
ZVR5cGUqPihjYWxsb2Moc2l6ZSwgc2l6ZW9mKFZhbHVlVHlwZSkpKTsKKyAgICAgICAgVmFsdWVU
eXBlKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUqPihjYWxsb2Moc2l6ZSwgc2l6ZW9m
KFZhbHVlVHlwZSkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkr
KykKKyAgICAgICAgICAgIGluaXRpYWxpemVCdWNrZXQocmVzdWx0W2ldKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFs
bG9jYXRlVGFibGUoVmFsdWVUeXBlKiB0YWJsZSwgdW5zaWduZWQgc2l6ZSkKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICghaXNEZWxldGVkQnVja2V0KHRhYmxlW2ldKSkKKyAgICAgICAgICAgICAgICB0YWJsZVtpXS5+
VmFsdWVUeXBlKCk7CisgICAgICAgIH0KKyAgICAgICAgZnJlZSh0YWJsZSk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZXhwYW5kKFZhbHVlVHlwZSogZW50cnkpIC0+
IFZhbHVlVHlwZSoKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG5ld1NpemU7CisgICAgICAgIGlm
IChtX3RhYmxlU2l6ZSA9PSAwKQorICAgICAgICAgICAgbmV3U2l6ZSA9IEtleVRyYWl0czo6bWlu
aW11bVRhYmxlU2l6ZTsKKyAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxhY2UoKSkKKyAg
ICAgICAgICAgIG5ld1NpemUgPSBtX3RhYmxlU2l6ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbmV3U2l6ZSA9IG1fdGFibGVTaXplICogMjsKKworICAgICAgICByZXR1cm4gcmVoYXNoKG5l
d1NpemUsIGVudHJ5KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGF1dG8gSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpy
ZWhhc2godW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KSAtPiBWYWx1ZVR5
cGUqCisgICAgeworICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNp
emUoKTsKKworICAgICAgICB1bnNpZ25lZCBvbGRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsKKyAg
ICAgICAgVmFsdWVUeXBlKiBvbGRUYWJsZSA9IG1fdGFibGU7CisKKyNpZiBEVU1QX0hBU0hUQUJM
RV9TVEFUUworICAgICAgICBpZiAob2xkVGFibGVTaXplICE9IDApCisgICAgICAgICAgICArK0hh
c2hUYWJsZVN0YXRzOjpudW1SZWhhc2hlczsKKyNlbmRpZgorCisjaWYgRFVNUF9IQVNIVEFCTEVf
U1RBVFNfUEVSX1RBQkxFCisgICAgICAgIGlmIChvbGRUYWJsZVNpemUgIT0gMCkKKyAgICAgICAg
ICAgICsrbV9zdGF0cy0+bnVtUmVoYXNoZXM7CisjZW5kaWYKKworICAgICAgICBtX3RhYmxlU2l6
ZSA9IG5ld1RhYmxlU2l6ZTsKKyAgICAgICAgbV90YWJsZVNpemVNYXNrID0gbmV3VGFibGVTaXpl
IC0gMTsKKyAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRlVGFibGUobmV3VGFibGVTaXplKTsKKwor
ICAgICAgICBWYWx1ZSogbmV3RW50cnkgPSBudWxscHRyOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpICE9IG9sZFRhYmxlU2l6ZTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaXNEZWxl
dGVkQnVja2V0KG9sZFRhYmxlW2ldKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChzdGQ6OmFk
ZHJlc3NvZihvbGRUYWJsZVtpXSkgIT0gZW50cnkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldChvbGRUYWJs
ZVtpXSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RkOjphZGRyZXNzb2Yob2xkVGFibGVb
aV0pICE9IGVudHJ5KTsKKyAgICAgICAgICAgICAgICBvbGRUYWJsZVtpXS5+VmFsdWVUeXBlKCk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFZhbHVlKiByZWluc2VydGVkRW50cnkgPSByZWluc2VydChXVEZNb3ZlKG9sZFRhYmxlW2ldKSk7
CisgICAgICAgICAgICBvbGRUYWJsZVtpXS5+VmFsdWVUeXBlKCk7CisgICAgICAgICAgICBpZiAo
c3RkOjphZGRyZXNzb2Yob2xkVGFibGVbaV0pID09IGVudHJ5KSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFuZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgbmV3RW50cnkgPSByZWluc2VydGVk
RW50cnk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX2RlbGV0ZWRDb3Vu
dCA9IDA7CisKKyAgICAgICAgZnJlZShvbGRUYWJsZSk7CisKKyAgICAgICAgaW50ZXJuYWxDaGVj
a1RhYmxlQ29uc2lzdGVuY3koKTsKKyAgICAgICAgcmV0dXJuIG5ld0VudHJ5OworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNsZWFyKCkKKyAgICB7CisgICAgICAgIGlu
dmFsaWRhdGVJdGVyYXRvcnMoKTsKKyAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7
CisgICAgICAgIG1fdGFibGUgPSAwOworICAgICAgICBtX3RhYmxlU2l6ZSA9IDA7CisgICAgICAg
IG1fdGFibGVTaXplTWFzayA9IDA7CisgICAgICAgIG1fa2V5Q291bnQgPSAwOworICAgICAgICBt
X2RlbGV0ZWRDb3VudCA9IDA7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhh
c2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQorICAgICAgICA6IG1fdGFibGUobnVsbHB0
cikKKyAgICAgICAgLCBtX3RhYmxlU2l6ZSgwKQorICAgICAgICAsIG1fdGFibGVTaXplTWFzaygw
KQorICAgICAgICAsIG1fa2V5Q291bnQoMCkKKyAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQor
I2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgLCBtX2l0ZXJhdG9ycyhudWxs
cHRyKQorICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorI2VuZGlm
CisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgICwgbV9zdGF0cyhz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisjZW5kaWYKKyAgICB7Cisg
ICAgICAgIHVuc2lnbmVkIG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CisgICAgICAgIGlm
ICghb3RoZXJLZXlDb3VudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25l
ZCBiZXN0VGFibGVTaXplID0gV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKG90aGVyS2V5Q291bnQp
ICogMjsKKworICAgICAgICAvLyBXaXRoIG1heExvYWQgYXQgMS8yIGFuZCBtaW5Mb2FkIGF0IDEv
Niwgb3VyIGF2ZXJhZ2UgbG9hZCBpcyAyLzYuCisgICAgICAgIC8vIElmIHdlIGFyZSBnZXR0aW5n
IGhhbGZ3YXkgYmV0d2VlbiAyLzYgYW5kIDEvMiAocGFzdCA1LzEyKSwgd2UgZG91YmxlIHRoZSBz
aXplIHRvIGF2b2lkIGJlaW5nIHRvbyBjbG9zZSB0bworICAgICAgICAvLyBsb2FkTWF4IGFuZCBi
cmluZyB0aGUgcmF0aW8gY2xvc2UgdG8gMi82LiBUaGlzIGdpdmUgdXMgYSBsb2FkIGluIHRoZSBi
b3VuZHMgWzMvMTIsIDUvMTIpLgorICAgICAgICBib29sIGFib3ZlVGhyZWVRdWFydGVyTG9hZCA9
IG90aGVyS2V5Q291bnQgKiAxMiA+PSBiZXN0VGFibGVTaXplICogNTsKKyAgICAgICAgaWYgKGFi
b3ZlVGhyZWVRdWFydGVyTG9hZCkKKyAgICAgICAgICAgIGJlc3RUYWJsZVNpemUgKj0gMjsKKwor
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0gS2V5VHJhaXRzOjptaW5pbXVtVGFi
bGVTaXplOworICAgICAgICBtX3RhYmxlU2l6ZSA9IHN0ZDo6bWF4PHVuc2lnbmVkPihiZXN0VGFi
bGVTaXplLCBtaW5pbXVtVGFibGVTaXplKTsKKyAgICAgICAgbV90YWJsZVNpemVNYXNrID0gbV90
YWJsZVNpemUgLSAxOworICAgICAgICBtX2tleUNvdW50ID0gb3RoZXJLZXlDb3VudDsKKyAgICAg
ICAgbV90YWJsZSA9IGFsbG9jYXRlVGFibGUobV90YWJsZVNpemUpOworCisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgb3RoZXJWYWx1ZSA6IG90aGVyKQorICAgICAgICAgICAgYWRkVW5pcXVlRm9y
SW5pdGlhbGl6YXRpb248SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0
KG90aGVyVmFsdWUpLCBvdGhlclZhbHVlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHZvaWQg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+Ojpzd2FwKEhhc2hUYWJsZSYgb3RoZXIpCisgICAgeworICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7CisgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKKwor
ICAgICAgICBzdGQ6OnN3YXAobV90YWJsZSwgb3RoZXIubV90YWJsZSk7CisgICAgICAgIHN0ZDo6
c3dhcChtX3RhYmxlU2l6ZSwgb3RoZXIubV90YWJsZVNpemUpOworICAgICAgICBzdGQ6OnN3YXAo
bV90YWJsZVNpemVNYXNrLCBvdGhlci5tX3RhYmxlU2l6ZU1hc2spOworICAgICAgICBzdGQ6OnN3
YXAobV9rZXlDb3VudCwgb3RoZXIubV9rZXlDb3VudCk7CisgICAgICAgIHN0ZDo6c3dhcChtX2Rl
bGV0ZWRDb3VudCwgb3RoZXIubV9kZWxldGVkQ291bnQpOworCisjaWYgRFVNUF9IQVNIVEFCTEVf
U1RBVFNfUEVSX1RBQkxFCisgICAgICAgIG1fc3RhdHMuc3dhcChvdGhlci5tX3N0YXRzKTsKKyNl
bmRpZgorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJhdG9yPShj
b25zdCBIYXNoVGFibGUmIG90aGVyKSAtPiBIYXNoVGFibGUmCisgICAgeworICAgICAgICBIYXNo
VGFibGUgdG1wKG90aGVyKTsKKyAgICAgICAgc3dhcCh0bXApOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUo
SGFzaFRhYmxlJiYgb3RoZXIpCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgICAg
ICA6IG1faXRlcmF0b3JzKG51bGxwdHIpCisgICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5p
cXVlPExvY2s+KCkpCisjZW5kaWYKKyAgICB7CisgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVy
YXRvcnMoKTsKKworICAgICAgICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsKKyAgICAgICAgbV90
YWJsZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsKKyAgICAgICAgbV90YWJsZVNpemVNYXNrID0g
b3RoZXIubV90YWJsZVNpemVNYXNrOworICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlD
b3VudDsKKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5tX2RlbGV0ZWRDb3VudDsKKwor
ICAgICAgICBvdGhlci5tX3RhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgb3RoZXIubV90YWJsZVNp
emUgPSAwOworICAgICAgICBvdGhlci5tX3RhYmxlU2l6ZU1hc2sgPSAwOworICAgICAgICBvdGhl
ci5tX2tleUNvdW50ID0gMDsKKyAgICAgICAgb3RoZXIubV9kZWxldGVkQ291bnQgPSAwOworCisj
aWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgIG1fc3RhdHMgPSBXVEZN
b3ZlKG90aGVyLm1fc3RhdHMpOworICAgICAgICBvdGhlci5tX3N0YXRzID0gbnVsbHB0cjsKKyNl
bmRpZgorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpvcGVy
YXRvcj0oSGFzaFRhYmxlJiYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKKyAgICB7CisgICAgICAgIEhh
c2hUYWJsZSB0ZW1wID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIHN3YXAodGVtcCk7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBjb25zdAor
ICAgIHsKKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpOworICAgICAg
ICBBU1NFUlQoIW1fdGFibGUgfHwgIXNob3VsZEV4cGFuZCgpKTsKKyAgICAgICAgQVNTRVJUKCFz
aG91bGRTaHJpbmsoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoIW1fdGFibGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdW5zaWduZWQgY291
bnQgPSAwOworICAgICAgICB1bnNpZ25lZCBkZWxldGVkQ291bnQgPSAwOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwOyBqIDwgbV90YWJsZVNpemU7ICsraikgeworICAgICAgICAgICAgVmFs
dWVUeXBlKiBlbnRyeSA9IG1fdGFibGUgKyBqOworICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNr
ZXQoKmVudHJ5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYg
KGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7CisgICAgICAgICAgICAgICAgKytkZWxldGVkQ291
bnQ7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNvbnN0X2l0ZXJhdG9yIGl0ID0gZmluZChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSk7
CisgICAgICAgICAgICBBU1NFUlQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7CisgICAgICAgICAg
ICArK2NvdW50OworCisgICAgICAgICAgICBWYWx1ZUNoZWNrPEtleT46OmNoZWNrQ29uc2lzdGVu
Y3koaXQtPmtleSk7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoY291bnQgPT0gbV9rZXlD
b3VudCk7CisgICAgICAgIEFTU0VSVChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVkQ291bnQpOwor
ICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPj0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXpl
KTsKKyAgICAgICAgQVNTRVJUKG1fdGFibGVTaXplTWFzayk7CisgICAgICAgIEFTU0VSVChtX3Rh
YmxlU2l6ZSA9PSBtX3RhYmxlU2l6ZU1hc2sgKyAxKTsKKyAgICB9CisKKyNlbmRpZiAvLyBBU1NF
UlRfRElTQUJMRUQKKworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmludmFsaWRhdGVJdGVyYXRvcnMoKQorICAgIHsKKyAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soKm1fbXV0ZXgpOworICAgICAgICBjb25zdF9p
dGVyYXRvciogbmV4dDsKKyAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciogcCA9IG1faXRlcmF0
b3JzOyBwOyBwID0gbmV4dCkgeworICAgICAgICAgICAgbmV4dCA9IHAtPm1fbmV4dDsKKyAgICAg
ICAgICAgIHAtPm1fdGFibGUgPSAwOworICAgICAgICAgICAgcC0+bV9uZXh0ID0gMDsKKyAgICAg
ICAgICAgIHAtPm1fcHJldmlvdXMgPSAwOworICAgICAgICB9CisgICAgICAgIG1faXRlcmF0b3Jz
ID0gMDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+KiB0YWJsZSwKKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpCisgICAg
eworICAgICAgICBpdC0+bV90YWJsZSA9IHRhYmxlOworICAgICAgICBpdC0+bV9wcmV2aW91cyA9
IDA7CisKKyAgICAgICAgLy8gSW5zZXJ0IGl0ZXJhdG9yIGF0IGhlYWQgb2YgZG91Ymx5LWxpbmtl
ZCBsaXN0IG9mIGl0ZXJhdG9ycy4KKyAgICAgICAgaWYgKCF0YWJsZSkgeworICAgICAgICAgICAg
aXQtPm1fbmV4dCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jaygqdGFibGUtPm1fbXV0ZXgpOworICAgICAgICAgICAgQVNTRVJUKHRh
YmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7CisgICAgICAgICAgICBpdC0+bV9uZXh0ID0gdGFibGUt
Pm1faXRlcmF0b3JzOworICAgICAgICAgICAgdGFibGUtPm1faXRlcmF0b3JzID0gaXQ7CisgICAg
ICAgICAgICBpZiAoaXQtPm1fbmV4dCkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaXQtPm1f
bmV4dC0+bV9wcmV2aW91cyk7CisgICAgICAgICAgICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91
cyA9IGl0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQorICAgIHsK
KyAgICAgICAgLy8gRGVsZXRlIGl0ZXJhdG9yIGZyb20gZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGl0
ZXJhdG9ycy4KKyAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgeworICAgICAgICAgICAgQVNTRVJU
KCFpdC0+bV9uZXh0KTsKKyAgICAgICAgICAgIEFTU0VSVCghaXQtPm1fcHJldmlvdXMpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soKml0
LT5tX3RhYmxlLT5tX211dGV4KTsKKyAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGl0LT5tX25leHQtPm1fcHJldmlvdXMgPT0gaXQpOworICAgICAg
ICAgICAgICAgIGl0LT5tX25leHQtPm1fcHJldmlvdXMgPSBpdC0+bV9wcmV2aW91czsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpdC0+bV9wcmV2aW91cykgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChpdC0+bV90YWJsZS0+bV9pdGVyYXRvcnMgIT0gaXQpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0KTsKKyAgICAgICAgICAgICAg
ICBpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID0gaXQtPm1fbmV4dDsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9PSBp
dCk7CisgICAgICAgICAgICAgICAgaXQtPm1fdGFibGUtPm1faXRlcmF0b3JzID0gaXQtPm1fbmV4
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGl0LT5tX3RhYmxlID0gMDsK
KyAgICAgICAgaXQtPm1fbmV4dCA9IDA7CisgICAgICAgIGl0LT5tX3ByZXZpb3VzID0gMDsKKyAg
ICB9CisKKyNlbmRpZiAvLyBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisKKyAgICAvLyBpdGVy
YXRvciBhZGFwdGVycworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlw
ZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIgOiBw
dWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWYWx1ZVR5cGUs
IHN0ZDo6cHRyZGlmZl90LCBjb25zdCBWYWx1ZVR5cGUqLCBjb25zdCBWYWx1ZVR5cGUmPiB7Cisg
ICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyKCkge30KKyAgICAgICAgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29u
c3RfaXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9CisKKyAgICAgICAgY29uc3QgVmFs
dWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoY29uc3QgVmFsdWVUeXBlKiltX2ltcGwuZ2V0
KCk7IH0KKyAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biAqZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gZ2V0KCk7IH0KKworICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRl
ciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQorICAgICAgICAvLyBw
b3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAorCisgICAgICAgIHR5cGVuYW1lIEhhc2hU
YWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yIG1faW1wbDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgSGFzaFRh
YmxlSXRlcmF0b3JBZGFwdGVyIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0
ZXJhdG9yX3RhZywgVmFsdWVUeXBlLCBzdGQ6OnB0cmRpZmZfdCwgVmFsdWVUeXBlKiwgVmFsdWVU
eXBlJj4geworICAgICAgICBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXIoKSB7fQorICAgICAgICBI
YXNoVGFibGVJdGVyYXRvckFkYXB0ZXIoY29uc3QgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6aXRl
cmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9CisKKyAgICAgICAgVmFsdWVUeXBlKiBnZXQo
KSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2ltcGwuZ2V0KCk7IH0KKyAgICAgICAgVmFs
dWVUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICAgICAgVmFs
dWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKworICAgICAgICBI
YXNoVGFibGVJdGVyYXRvckFkYXB0ZXImIG9wZXJhdG9yKysoKSB7ICsrbV9pbXBsOyByZXR1cm4g
KnRoaXM7IH0KKyAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQKKwor
ICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVU
eXBlLCBWYWx1ZVR5cGU+KCkgeworICAgICAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6
Y29uc3RfaXRlcmF0b3IgaSA9IG1faW1wbDsKKyAgICAgICAgICAgIHJldHVybiBpOworICAgICAg
ICB9CisKKyAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOwor
ICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwg
VT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBiKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFz
aFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1
cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJs
ZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVy
PFQsIFU+JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEs
IGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKKyAgICB7CisgICAgICAg
IHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsKKyAgICB9CisKKyAgICAvLyBBbGwgNCBjb21i
aW5hdGlvbnMgb2YgPT0sICE9IGFuZCBDb25zdCxub24gY29uc3QuCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVy
YXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0g
Yi5tX2ltcGw7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
KyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIp
CisgICAgeworICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFz
aFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1
cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJs
ZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFk
YXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2lt
cGw7CisgICAgfQorCisgICAgc3RydWN0IElkZW50aXR5RXh0cmFjdG9yOworICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHM+IGNsYXNzIEhhc2hTZXQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywg
dHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaCwK
KyAgICAgICAgdHlwZW5hbWUgVHJhaXRzQXJnID0gSGFzaFRyYWl0czxWYWx1ZUFyZz4+IGNsYXNz
IEhhc2hTZXQgZmluYWwgeworICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgSGFzaEFyZyBI
YXNoRnVuY3Rpb25zOworICAgICAgICB0eXBlZGVmIFRyYWl0c0FyZyBWYWx1ZVRyYWl0czsKKyAg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6VGFrZVR5cGUgVGFrZVR5cGU7CisK
KyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0
VHlwZSBWYWx1ZVR5cGU7CisKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hUYWJs
ZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwgSWRlbnRpdHlFeHRyYWN0b3IsCisgICAgICAgICAgICBI
YXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CisK
KyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0
ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBI
YXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNv
bnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFk
ZFJlc3VsdCBBZGRSZXN1bHQ7CisKKyAgICAgICAgSGFzaFNldCgpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIEhhc2hTZXQoc3RkOjppbml0aWFsaXplcl9saXN0PFZhbHVlQXJnPiBp
bml0aWFsaXplckxpc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
dmFsdWUgOiBpbml0aWFsaXplckxpc3QpCisgICAgICAgICAgICAgICAgYWRkKHZhbHVlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7CisKKyAgICAgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0OworICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNv
bnN0OworICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdDsKKworICAgICAgICBpdGVyYXRvciBm
aW5kKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OworICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0
IFZhbHVlVHlwZSYpIGNvbnN0OworCisgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9uIG9m
IGZpbmQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3QgYnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCisg
ICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBlLCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBl
IGNvbnZlcnNpb24uIEhhc2hUcmFuc2xhdG9yCisgICAgICAgIC8vIG11c3QgaGF2ZSB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9uIG1lbWJlcnM6CisgICAgICAgIC8vICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgVCYpOworICAgICAgICAvLyAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFZhbHVl
VHlwZSYsIGNvbnN0IFQmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFQ+IGl0ZXJhdG9yIGZpbmQoY29uc3QgVCYpIGNvbnN0OworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gYm9vbCBjb250YWlu
cyhjb25zdCBUJikgY29uc3Q7CisKKyAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpbmNsdWRl
cyBib3RoIGFuIGl0ZXJhdG9yIHRvIHRoZSBhZGRlZCB2YWx1ZSdzIGxvY2F0aW9uLAorICAgICAg
ICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sIHRoYXQgaW5kaWNhdGVzIGlmIGl0IGlzIGEgbmV3
IG9yIGV4aXN0aW5nIGVudHJ5IGluIHRoZSBzZXQuCisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29u
c3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYpOworICAg
ICAgICAKKyAgICAgICAgdm9pZCBhZGRWb2lkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICB2
b2lkIGFkZFZvaWQoVmFsdWVUeXBlJiYpOworCisgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJz
aW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJp
bmcKKyAgICAgICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9m
IHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKKyAgICAgICAgLy8gaW4g
dGhlIHRhYmxlLiBIYXNoVHJhbnNsYXRvciBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZyBmdW5jdGlv
biBtZW1iZXJzOgorICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmKTsK
KyAgICAgICAgLy8gICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1ZVR5cGUmLCBjb25zdCBU
Jik7CisgICAgICAgIC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwg
dW5zaWduZWQgaGFzaENvZGUpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVD4gQWRkUmVzdWx0IGFkZChjb25zdCBUJik7CisgICAgICAgIAorICAg
ICAgICAvLyBBdHRlbXB0cyB0byBhZGQgYSBsaXN0IG9mIHRoaW5ncyB0byB0aGUgc2V0LiBSZXR1
cm5zIHRydWUgaWYgYW55IG9mCisgICAgICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0LiBS
ZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQgaXMgdW5jaGFuZ2VkLgorICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJdGVyYXRvclR5cGU+CisgICAgICAgIGJvb2wgYWRkKEl0ZXJhdG9yVHlwZSBiZWdp
biwgSXRlcmF0b3JUeXBlIGVuZCk7CisKKyAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgVmFsdWVU
eXBlJik7CisgICAgICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICAgICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJik7
CisgICAgICAgIHZvaWQgY2xlYXIoKTsKKworICAgICAgICBUYWtlVHlwZSB0YWtlKGNvbnN0IFZh
bHVlVHlwZSYpOworICAgICAgICBUYWtlVHlwZSB0YWtlKGl0ZXJhdG9yKTsKKyAgICAgICAgVGFr
ZVR5cGUgdGFrZUFueSgpOworCisgICAgICAgIC8vIE92ZXJsb2FkcyBmb3Igc21hcnQgcG9pbnRl
ciB2YWx1ZXMgdGhhdCB0YWtlIHRoZSByYXcgcG9pbnRlciB0eXBlIGFzIHRoZSBwYXJhbWV0ZXIu
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUgZmluZCh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRy
PFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgY29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlw
ZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0
eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJ
c1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgVGFrZVR5cGU+Ojp0eXBlIHRha2UodHlwZW5hbWUgR2V0UHRy
SGVscGVyPFY+OjpQdHJUeXBlKTsKKworICAgICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkVmFsdWUo
Y29uc3QgVmFsdWVUeXBlJik7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJDb2xs
ZWN0aW9uPgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3RoZXJDb2xsZWN0aW9uJikg
Y29uc3Q7CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rp
b24+CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPdGhlckNvbGxlY3Rpb24mKSBjb25z
dDsKKworICAgIHByaXZhdGU6CisgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOworICAgIH07
CisKKyAgICBzdHJ1Y3QgSWRlbnRpdHlFeHRyYWN0b3IgeworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCYgZXh0cmFjdChjb25zdCBUJiB0KSB7IHJldHVybiB0OyB9
CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zPgorICAgIHN0cnVjdCBIYXNoU2V0VHJhbnNsYXRvciB7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyBy
ZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUm
IGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5z
bGF0ZShUJiBsb2NhdGlvbiwgVSYmLCBWJiYgdmFsdWUpCisgICAgICAgIHsgCisgICAgICAgICAg
ICBWYWx1ZVRyYWl0czo6YXNzaWduVG9FbXB0eShsb2NhdGlvbiwgc3RkOjpmb3J3YXJkPFY+KHZh
bHVlKSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNs
YXRvcj4KKyAgICBzdHJ1Y3QgSGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyIHsKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJl
dHVybiBUcmFuc2xhdG9yOjpoYXNoKGtleSk7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikg
eyByZXR1cm4gVHJhbnNsYXRvcjo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBj
b25zdCBVJiBrZXksIGNvbnN0IFUmLCB1bnNpZ25lZCBoYXNoQ29kZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgVHJhbnNsYXRvcjo6dHJhbnNsYXRlKGxvY2F0aW9uLCBrZXksIGhhc2hDb2RlKTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OnN3YXAoSGFz
aFNldCYgb3RoZXIpCisgICAgeworICAgICAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOyAK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PgorICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpzaXplKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB1bnNpZ25l
ZCBIYXNoU2V0PFQsIFUsIFY+OjpjYXBhY2l0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9pbXBsLmNhcGFjaXR5KCk7IAorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
Pjo6aXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbXBsLmlzRW1wdHko
KTsgCisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjpiZWdpbigpIGNvbnN0IC0+
IGl0ZXJhdG9yCisgICAgeworICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7IAorICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAg
aW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6ZW5kKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7IAorICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFz
aFNldDxULCBVLCBWPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBpdGVy
YXRvcgorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1wbC5maW5kKHZhbHVlKTsgCisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KKyAgICBp
bmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZh
bHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1ZSk7
IAorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3IsIHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoU2V0VHJhbnNs
YXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KKyAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250
YWlucyhjb25zdCBUJiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgY29udGFpbnM8SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9y
Pj4odmFsdWUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6YWRkKGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
aW1wbC5hZGQodmFsdWUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6YWRk
KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2ltcGwuYWRkKFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwg
VSwgVj46OmFkZFZvaWQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1f
aW1wbC5hZGQodmFsdWUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6YWRk
Vm9pZChWYWx1ZVR5cGUmJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1faW1wbC5hZGQoV1RGTW92
ZSh2YWx1ZSkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1
ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1
bHQKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hD
b2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlLCB2YWx1
ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CisgICAgaW5saW5lIGJv
b2wgSGFzaFNldDxULCBVLCBWPjo6YWRkKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBl
IGVuZCkKKyAgICB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3Ig
KEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IGFkZCgqaXRlcikuaXNOZXdFbnRyeTsKKyAgICAgICAgcmV0dXJuIGNo
YW5nZWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0
b3IgaXQpCisgICAgeworICAgICAgICBpZiAoaXQubV9pbXBsID09IG1faW1wbC5lbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9pbXBsLmludGVybmFsQ2hlY2tUYWJs
ZUNvbnNpc3RlbmN5KCk7CisgICAgICAgIG1faW1wbC5yZW1vdmVXaXRob3V0RW50cnlDb25zaXN0
ZW5jeUNoZWNrKGl0Lm1faW1wbCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5l
IGJvb2wgSGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6cmVt
b3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIG1faW1wbC5yZW1v
dmVJZihmdW5jdG9yKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OmNsZWFy
KCkKKyAgICB7CisgICAgICAgIG1faW1wbC5jbGVhcigpOyAKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSBhdXRvIEhh
c2hTZXQ8VCwgVSwgVj46OnRha2UoaXRlcmF0b3IgaXQpIC0+IFRha2VUeXBlCisgICAgeworICAg
ICAgICBpZiAoaXQgPT0gZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gVmFsdWVUcmFpdHM6OnRh
a2UoVmFsdWVUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBW
YWx1ZVRyYWl0czo6dGFrZShXVEZNb3ZlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlJj4oKml0KSkpOwor
ICAgICAgICByZW1vdmUoaXQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5l
IGF1dG8gSGFzaFNldDxULCBVLCBWPjo6dGFrZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBU
YWtlVHlwZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRha2UoZmluZCh2YWx1ZSkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAg
aW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6dGFrZUFueSgpIC0+IFRha2VUeXBlCisgICAg
eworICAgICAgICByZXR1cm4gdGFrZShiZWdpbigpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0
clR5cGUgdmFsdWUpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8
Vj46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvcjxUcmFpdHMsIEhhc2hGdW5jdGlvbnM+Pih2
YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgor
ICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNv
bnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBl
CisgICAgeworICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEhhc2hTZXRU
cmFuc2xhdG9yPFRyYWl0cywgSGFzaEZ1bmN0aW9ucz4+KHZhbHVlKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhl
bHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFy
dFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCisgICAgeworICAgICAgICByZXR1cm4gcmVtb3Zl
KGZpbmQodmFsdWUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUpIC0+IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBUYWtlVHlwZT46OnR5
cGUKKyAgICB7CisgICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFsdWUpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGlu
ZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKEhhc2hGdW5jdGlv
bnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkKSB7CisgICAgICAgICAgICBpZiAodmFs
dWUgPT0gVmFsdWVUcmFpdHM6OmVtcHR5VmFsdWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNIYXNoVHJhaXRzRW1w
dHlWYWx1ZTxWYWx1ZVRyYWl0cz4odmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIFc+CisgICAgaW5saW5lIHZvaWQgY29weVRvVmVjdG9y
KGNvbnN0IEMmIGNvbGxlY3Rpb24sIFcmIHZlY3RvcikKKyAgICB7CisgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CisgICAgICAgIAorICAgICAgICB2
ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsKKyAgICAgICAgCisgICAgICAgIGl0ZXJh
dG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigpOworICAgICAgICBpdGVyYXRvciBlbmQgPSBjb2xs
ZWN0aW9uLmVuZCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsr
aXQsICsraSkKKyAgICAgICAgICAgIHZlY3RvcltpXSA9ICppdDsKKyAgICB9ICAKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgorICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwg
Vj46Om9wZXJhdG9yPT0oY29uc3QgT3RoZXJDb2xsZWN0aW9uJiBvdGhlckNvbGxlY3Rpb24pIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoc2l6ZSgpICE9IG90aGVyQ29sbGVjdGlvbi5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3Ro
ZXIgOiBvdGhlckNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghY29udGFpbnMob3RoZXIp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+Cisg
ICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6b3BlcmF0b3IhPShjb25zdCBPdGhlckNv
bGxlY3Rpb24mIG90aGVyQ29sbGVjdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyQ29sbGVjdGlvbik7CisgICAgfQorCit9CisKK3VzaW5nIFdURjo6RGVm
YXVsdEhhc2g7Cit1c2luZyBXVEY6Okhhc2hTZXQ7Cit1c2luZyBXVEY6OmJpdHdpc2VfY2FzdDsK
Kworc3RhdGljIGRvdWJsZSBjdXJyZW50VGltZSgpCit7CisgICAgdGltZXZhbCByZXN1bHQ7Cisg
ICAgZ2V0dGltZW9mZGF5KCZyZXN1bHQsIG51bGxwdHIpOworICAgIHJldHVybiByZXN1bHQudHZf
c2VjICsgcmVzdWx0LnR2X3VzZWMgLyAxMDAwLiAvIDEwMDAuOworfQorCituYW1lc3BhY2UgSlND
IHsKKyAgICBuYW1lc3BhY2UgREZHIHsKKyAgICAgICAgc3RydWN0IE5vZGU7CisgICAgfQorfQor
Cit2b2lkIGJlbmNobWFyaygpCit7CisgICAgYXV0byogXzQyODEgPSBuZXcgSGFzaFNldDw6OkpT
Qzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI4MiA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MjgzID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6
Tm9kZSo+KCk7CisgICAgYXV0byogXzQyODQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2Rl
Kj4oKTsKKyAgICBhdXRvKiBfNDI4NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIGF1dG8qIF80Mjg2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7Cisg
ICAgYXV0byogXzQyODcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBh
dXRvKiBfNDI4OCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8q
IF80Mjg5ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQy
OTAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI5MSA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MjkyID0gbmV3
IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQyOTMgPSBuZXcgSGFz
aFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI5NCA9IG5ldyBIYXNoU2V0
PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80Mjk1ID0gbmV3IEhhc2hTZXQ8OjpK
U0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQyOTYgPSBuZXcgSGFzaFNldDw6OkpTQzo6
REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI5NyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGF1dG8qIF80Mjk4ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9k
ZSo+KCk7CisgICAgYXV0byogXzQyOTkgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICBhdXRvKiBfNDMwMCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIGF1dG8qIF80MzAxID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAg
YXV0byogXzQzMDIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRv
KiBfNDMwMyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80
MzA0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQzMDUg
PSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMwNiA9IG5l
dyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MzA3ID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQzMDggPSBuZXcgSGFzaFNl
dDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMwOSA9IG5ldyBIYXNoU2V0PDo6
SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MzEwID0gbmV3IEhhc2hTZXQ8OjpKU0M6
OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQzMTEgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZH
OjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMxMiA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIGF1dG8qIF80MzEzID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+
KCk7CisgICAgYXV0byogXzQzMTQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBhdXRvKiBfNDMxNSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAg
IGF1dG8qIF80MzE2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0
byogXzQzMTcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBf
NDMxOCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MzE5
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgKl80MjgxID0gV1RGTW92
ZSgqXzQzMTkpOworICAgIGRlbGV0ZSBfNDMxOTsKKyAgICBhdXRvKiBfNDMyMCA9IG5ldyBIYXNo
U2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzIwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80
MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBs
dSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzIwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkpOworICAg
IF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2
MDhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzIwLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOwor
ICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTE3NzBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzIw
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkp
OworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTkyYjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzIwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80
MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBs
dSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZThmNzBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiYjhsdSkpOworICAgIF80MzIwLT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQz
MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYmI4bHUpKTsK
KyAgICBfNDMyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBk
MjBsdSkpOworICAgICpfNDI4MiA9IFdURk1vdmUoKl80MzIwKTsKKyAgICBkZWxldGUgXzQzMjA7
CisgICAgYXV0byogXzQzMjEgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAg
ICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5
YzkwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmU5MWM4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYTUwbHUpKTsKKyAgICBfNDMyMS0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsK
KyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmU0MzgwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmU2MDkwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNjA4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1MDI4bHUpKTsKKyAgICBfNDMy
MS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYjQwbHUp
KTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmU0ZTQ4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNzcwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1YjY4bHUpKTsKKyAgICBf
NDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3MDA4
bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUxZmUwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MGQ4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MmI4bHUpKTsKKyAgICBfNDMyMS0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYWI4bHUpKTsKKyAg
ICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3
ZjA4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmU5MDYwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU4ZjcwbHUpKTsKKyAgICBfNDMyMS0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsK
KyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNmYWM4bHUpKTsKKyAgICBfNDMyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzIxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmFjOGx1KSk7CisgICAgXzQzMjEtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICAqXzQyODMgPSBXVEZNb3Zl
KCpfNDMyMSk7CisgICAgZGVsZXRlIF80MzIxOworICAgIGF1dG8qIF80MzIyID0gbmV3IEhhc2hT
ZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQz
MjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1
KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMjItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAg
XzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJi
OGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMjItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7Cisg
ICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmI0MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMjIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7
CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNjA5MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQz
MjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1
KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMjItPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMi0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI4NCA9
IFdURk1vdmUoKl80MzIyKTsKKyAgICBkZWxldGUgXzQzMjI7CisgICAgYXV0byogXzQzMjMgPSBu
ZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5YzkwbHUpKTsKKyAgICBfNDMyMy0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYzMwbHUpKTsK
KyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNmYjQwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNjA4bHUpKTsKKyAgICBfNDMy
My0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNzcwbHUp
KTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmUxZmUwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmUxYWI4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBf
NDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYw
bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU0NTYwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3MDA4bHUpKTsKKyAgICBfNDMyMy0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1YjY4bHUpKTsKKyAg
ICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNm
YTUwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmU0ZTQ4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MDYwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2MDkwbHUpKTsKKyAgICBfNDMyMy0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3ZjA4bHUpKTsK
KyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmU5MmI4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmU5MWM4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU4ZjcwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MGQ4bHUpKTsKKyAgICBfNDMy
My0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1MDI4bHUp
KTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmU0MzgwbHUpKTsKKyAgICBfNDMyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNDU2MGx1KSk7CisgICAgXzQzMjMtPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyMy0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzIz
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7Cisg
ICAgXzQzMjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYw
bHUpKTsKKyAgICBfNDMyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTMxYjBsdSkpOworICAgIF80MzIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMy0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzIzLT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80Mjg1
ID0gV1RGTW92ZSgqXzQzMjMpOworICAgIGRlbGV0ZSBfNDMyMzsKKyAgICBhdXRvKiBfNDMyNCA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzI0LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzI0
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBsdSkp
OworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTEwZTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI0LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80
MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhs
dSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzI0LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkpOworICAg
IF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkx
YzhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80MzI0LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkpOwor
ICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTdmMDhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzI0
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkp
OworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTQzODBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI0LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80
MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhs
dSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU0MGIwbHUpKTsKKyAgICBfNDMyNC0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI0LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQz
MjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYTUwbHUpKTsK
KyAgICBfNDMyNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJk
ZjBsdSkpOworICAgIF80MzI0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMyNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI0LT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMjQtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICAqXzQy
ODYgPSBXVEZNb3ZlKCpfNDMyNCk7CisgICAgZGVsZXRlIF80MzI0OworICAgIGF1dG8qIF80MzI1
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQzMjUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQz
MjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1
KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMjUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAg
XzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYw
OGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMjUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7Cisg
ICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmI0MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMjUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7
CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOTBkOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQz
MjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1
KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlODYxMGx1KSk7CisgICAgXzQzMjUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAg
XzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAw
OGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMjUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7Cisg
ICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU4NjEw
bHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTEzYjBsdSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzI1LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMjUt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAg
ICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwYTBs
dSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWMyMGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUzMWIwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyNS0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAg
IF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1
KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmUzMWIwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYzMwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI4NyA9
IFdURk1vdmUoKl80MzI1KTsKKyAgICBkZWxldGUgXzQzMjU7CisgICAgYXV0byogXzQzMjYgPSBu
ZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5YzkwbHUpKTsKKyAgICBfNDMyNi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsK
KyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNmYTUwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MmI4bHUpKTsKKyAgICBfNDMy
Ni0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNjA4bHUp
KTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmU1MGEwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmU4ZjcwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYzMwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU0M2Y4bHUpKTsKKyAgICBf
NDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYjQw
bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MWM4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNzcwbHUpKTsKKyAgICBfNDMyNi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxZmUwbHUpKTsKKyAg
ICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5
MGQ4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUxYWI4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MDYwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyNi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsK
KyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmU0MzgwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3ZjA4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1MDI4bHUpKTsKKyAgICBfNDMy
Ni0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3MDA4bHUp
KTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmU0ZTQ4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmU2MDkwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1YjY4bHUpKTsKKyAgICBfNDMyNi0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzI2
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7Cisg
ICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUw
bHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTFjMjBsdSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI2LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMjYt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAg
ICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBs
dSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNGU0OGx1KSk7CisgICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjYtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMyNi0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAg
IF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1
KSk7CisgICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmUxMGUwbHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80Mjg4ID0gV1RGTW92ZSgqXzQzMjYp
OworICAgIGRlbGV0ZSBfNDMyNjsKKyAgICBhdXRvKiBfNDMyNyA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzI3LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAg
IF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEz
YjBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI3LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOwor
ICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTAyZDBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzI3
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkp
OworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTkyYjhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI3LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80
MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBs
dSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTQzODBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTY0NTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI3LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAg
IF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUw
YTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzI3LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOwor
ICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTcwMDhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjctPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyNy0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzI3
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7Cisg
ICAgXzQzMjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUw
bHUpKTsKKyAgICBfNDMyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTEzYjBsdSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyNy0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzI3LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMjct
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAg
ICBfNDMyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBs
dSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZmE1MGx1KSk7CisgICAgXzQzMjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMjctPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyNy0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAg
IF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1
KSk7CisgICAgKl80Mjg5ID0gV1RGTW92ZSgqXzQzMjcpOworICAgIGRlbGV0ZSBfNDMyNzsKKyAg
ICBhdXRvKiBfNDMyOCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80
MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBs
dSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80MzI4LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAg
IF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFj
MjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzI4LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkpOwor
ICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTkxYzhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80MzI4
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkp
OworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTEzYjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80
MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTY0NTBs
dSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzI4LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAg
IF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRl
NDhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzI4LT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAg
XzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUp
KTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTFjMjBsdSkpOworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI4LT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMjgtPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBf
NDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkp
OworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NGU0OGx1KSk7CisgICAgXzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjgtPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMyOC0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80
MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7
CisgICAgXzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUx
MGUwbHUpKTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80MjkwID0gV1RGTW92ZSgqXzQzMjgpOwor
ICAgIGRlbGV0ZSBfNDMyODsKKyAgICBhdXRvKiBfNDMyOSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI5LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80
MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhs
dSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzI5LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAg
IF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2Zi
NDBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI5LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOwor
ICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTkwZDhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTkyYjhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI5
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBsdSkp
OworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTQzODBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTY0NTBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI5LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80
MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhs
dSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzI5LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkpOworICAg
IF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTVi
NjhsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMjktPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMy
OS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOwor
ICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBh
MGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI5
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7Cisg
ICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYw
bHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTMxYjBsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI5LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80Mjkx
ID0gV1RGTW92ZSgqXzQzMjkpOworICAgIGRlbGV0ZSBfNDMyOTsKKyAgICBhdXRvKiBfNDMzMCA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzMwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzMw
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkp
OworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2M2ZiNDBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzMwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80
MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3NzBs
dSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzMwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAg
IF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJk
ZjBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTY0NTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzMwLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkpOwor
ICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTkwZDhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzMw
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkp
OworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTcwMDhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80
MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhs
dSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMzAtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMzMC0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAg
IF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1
KSk7CisgICAgXzQzMzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmU2NDUwbHUpKTsKKyAgICBfNDMzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMzAtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMzMC0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzMwLT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAg
XzQzMzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUp
KTsKKyAgICBfNDMzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTEwZTBsdSkpOworICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMzMC0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzMwLT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMzAtPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBf
NDMzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkp
OworICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MGQyMGx1KSk7CisgICAgKl80MjkyID0gV1RGTW92ZSgqXzQzMzApOworICAgIGRlbGV0ZSBfNDMz
MDsKKyAgICBhdXRvKiBfNDMzMSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTJkZjBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzMx
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkp
OworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTE3NzBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzMxLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80
MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBs
dSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzMxLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAg
IF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcw
MDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzMxLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkpOwor
ICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTkyYjhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzMx
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkp
OworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTUwMjhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80MzMxLT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMzEtPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMzMS0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80
MzMxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7
CisgICAgXzQzMzEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUy
ZGYwbHUpKTsKKyAgICBfNDMzMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzMxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMzEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMzMS0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzMxLT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80
MjkzID0gV1RGTW92ZSgqXzQzMzEpOworICAgIGRlbGV0ZSBfNDMzMTsKKyAgICBhdXRvKiBfNDMz
MiA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzMyLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80
MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBs
dSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzMyLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAg
IF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFj
MjBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzMyLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOwor
ICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
M2ZjYThsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzMy
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkp
OworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTkwNjBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80MzMyLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkpOworICAgIF80
MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBs
dSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzMyLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAg
IF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRl
NDhsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzMyLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmNhOGx1KSk7CisgICAgXzQzMzItPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMzMi0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzMyLT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAg
XzQzMzItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUp
KTsKKyAgICAqXzQyOTQgPSBXVEZNb3ZlKCpfNDMzMik7CisgICAgZGVsZXRlIF80MzMyOworICAg
IGF1dG8qIF80MzMzID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQz
MzMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsK
KyAgICBfNDMzMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2Zj
MzBsdSkpOworICAgIF80MzMzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMGQyMGx1KSk7CisgICAgKl80Mjk1ID0gV1RGTW92ZSgqXzQzMzMpOworICAgIGRlbGV0
ZSBfNDMzMzsKKyAgICBhdXRvKiBfNDMzNCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzM0LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAg
IF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2
MDhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzM0LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOwor
ICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
M2ZhNTBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzM0
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkp
OworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTdmMDhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzM0LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80
MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhs
dSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzM0LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAg
IF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTky
YjhsdSkpOworICAgIF80MzM0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMzQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmVhZTYwbHUpKTsKKyAgICBfNDMzNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI5NiA9IFdURk1vdmUoKl80
MzM0KTsKKyAgICBkZWxldGUgXzQzMzQ7CisgICAgYXV0byogXzQzMzUgPSBuZXcgSGFzaFNldDw6
OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMzNS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMzNS0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMzNS0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAg
ICpfNDI5NyA9IFdURk1vdmUoKl80MzM1KTsKKyAgICBkZWxldGUgXzQzMzU7CisgICAgYXV0byog
XzQzMzYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMzNi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwMmQwbHUpKTsKKyAg
ICBfNDMzNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUx
M2IwbHUpKTsKKyAgICBfNDMzNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI5OCA9IFdURk1vdmUoKl80MzM2KTsKKyAgICBkZWxl
dGUgXzQzMzY7CisgICAgYXV0byogXzQzMzcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2Rl
Kj4oKTsKKyAgICBfNDMzNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMzNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMzNy0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI5OSA9IFdURk1v
dmUoKl80MzM3KTsKKyAgICBkZWxldGUgXzQzMzc7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmFjOGx1KSk7CisgICAgXzQzMDAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7Cisg
ICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTA2MGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7
CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMDJkMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQz
MDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1
KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAg
XzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBk
OGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7Cisg
ICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTFjOGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7
CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMTNiMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQz
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1
KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAg
XzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5
MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7Cisg
ICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTc3MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7
CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNTAyOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQz
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1
KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAg
XzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBl
MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7Cisg
ICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OWM5MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7
CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMTc3MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQz
MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1
KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAg
XzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNi
MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7Cisg
ICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTA2MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7
CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNjA5MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQz
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1
KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAg
XzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3
MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7Cisg
ICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MWFiOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDU2MGx1KSk7CisgICAgXzQzMDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7
CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNzAwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQz
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1
KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAg
XzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJi
OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7Cisg
ICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmMzMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDBiMGx1KSk7CisgICAgXzQzMDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7
CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNGU0OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQz
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1
KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAg
XzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZl
MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7Cisg
ICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NWI2OGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7
CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOTJiOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQz
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1
KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAg
XzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0
OGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7Cisg
ICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NTAyOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7
CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNDM4MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQz
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1
KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAg
XzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJk
MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7Cisg
ICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MGQyMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7
CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNGU0OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQz
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1
KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAg
XzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAw
OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7Cisg
ICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NDNmOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7
CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNjA5MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQz
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1
KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAg
XzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1
MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7Cisg
ICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OGY3MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7
CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWZlMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQz
MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1
KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDYtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAg
XzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5
MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDYtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7Cisg
ICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NjQ1MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDYt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7
CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWMyMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQz
MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1
KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDYtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAg
XzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFj
OGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDYtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7Cisg
ICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NWI2OGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7
CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMTBlMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQz
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1
KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAg
XzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMz
MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7Cisg
ICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MmRmMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7
CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZmI0MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQz
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1
KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAg
XzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBh
MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlODYxMGx1KSk7CisgICAgXzQzMDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7Cisg
ICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NjA5MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7
CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNjQ1MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQz
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1
KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAg
XzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBk
OGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7Cisg
ICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTFjOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7
CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNTBhMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQz
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1
KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAg
XzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJk
MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7Cisg
ICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MWMyMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7
CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMmRmMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQz
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1
KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAg
XzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAw
OGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7Cisg
ICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NDNmOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7
CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNjA5MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQz
MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1
KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAg
XzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1
MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7Cisg
ICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OGY3MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7
CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWZlMGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQz
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1
KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAg
XzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFi
MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7Cisg
ICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTNiMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7
CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZmMzMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQz
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1
KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAg
XzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0
MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7Cisg
ICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTBlMGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMTEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7
CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWMyMGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQz
MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1
KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAg
XzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1
MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMTEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7Cisg
ICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OGY3MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMTEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7
CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWZlMGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQz
MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1
KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmNhOGx1KSk7CisgICAgXzQzMTItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAg
XzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5
MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMTItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7Cisg
ICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
N2YwOGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMTIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7
CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNGU0OGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQz
MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1
KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMTItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAg
XzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNi
MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMTItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7Cisg
ICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
YWU2MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMTMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7
CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOTJiOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQz
MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1
KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMTMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAg
XzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0
OGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMTMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7Cisg
ICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmI0MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMTMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7
CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNDM4MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQz
MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1
KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAg
XzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5
MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMTUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmJiOGx1KSk7Cisg
ICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MWMyMGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMTUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7
CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWFiOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQz
MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1
KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAg
XzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQy
MGx1KSk7CisgICAgXzQzMTYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMTYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7Cisg
ICAgXzQzMTctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTNiMGx1KSk7CisgICAgXzQzMTctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgYXV0byogXzQzMzggPSBuZXcgSGFzaFNldDw6OkpT
Qzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMzOSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDMzOTsKKyAgICBkZWxldGUgXzQzMzg7CisgICAg
YXV0byogXzQzNDAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRv
KiBfNDM0MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBf
NDM0MTsKKyAgICBkZWxldGUgXzQzNDA7CisgICAgYXV0byogXzQzNDIgPSBuZXcgSGFzaFNldDw6
OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM0MyA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM0MzsKKyAgICBkZWxldGUgXzQzNDI7Cisg
ICAgYXV0byogXzQzNDQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBh
dXRvKiBfNDM0NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0
ZSBfNDM0NTsKKyAgICBkZWxldGUgXzQzNDQ7CisgICAgYXV0byogXzQzNDYgPSBuZXcgSGFzaFNl
dDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM0NyA9IG5ldyBIYXNoU2V0PDo6
SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM0NzsKKyAgICBkZWxldGUgXzQzNDY7
CisgICAgYXV0byogXzQzNDggPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAg
ICBhdXRvKiBfNDM0OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRl
bGV0ZSBfNDM0OTsKKyAgICBkZWxldGUgXzQzNDg7CisgICAgYXV0byogXzQzNTAgPSBuZXcgSGFz
aFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM1MSA9IG5ldyBIYXNoU2V0
PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM1MTsKKyAgICBkZWxldGUgXzQz
NTA7CisgICAgYXV0byogXzQzNTIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBhdXRvKiBfNDM1MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAg
IGRlbGV0ZSBfNDM1MzsKKyAgICBkZWxldGUgXzQzNTI7CisgICAgYXV0byogXzQzNTQgPSBuZXcg
SGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM1NSA9IG5ldyBIYXNo
U2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM1NTsKKyAgICBkZWxldGUg
XzQzNTQ7CisgICAgYXV0byogXzQzNTYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICBhdXRvKiBfNDM1NyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIGRlbGV0ZSBfNDM1NzsKKyAgICBkZWxldGUgXzQzNTY7CisgICAgYXV0byogXzQzNTggPSBu
ZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM1OSA9IG5ldyBI
YXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM1OTsKKyAgICBkZWxl
dGUgXzQzNTg7CisgICAgYXV0byogXzQzNjAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2Rl
Kj4oKTsKKyAgICBhdXRvKiBfNDM2MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIGRlbGV0ZSBfNDM2MTsKKyAgICBkZWxldGUgXzQzNjA7CisgICAgYXV0byogXzQzNjIg
PSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2MyA9IG5l
dyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM2MzsKKyAgICBk
ZWxldGUgXzQzNjI7CisgICAgYXV0byogXzQzNjQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpO
b2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIGRlbGV0ZSBfNDM2NTsKKyAgICBkZWxldGUgXzQzNjQ7CisgICAgYXV0byogXzQz
NjYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2NyA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM2NzsKKyAg
ICBkZWxldGUgXzQzNjY7CisgICAgYXV0byogXzQzNjggPSBuZXcgSGFzaFNldDw6OkpTQzo6REZH
OjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIGRlbGV0ZSBfNDM2OTsKKyAgICBkZWxldGUgXzQzNjg7CisgICAgYXV0byog
XzQzNzAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM3
MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM3MTsK
KyAgICBkZWxldGUgXzQzNzA7CisgICAgYXV0byogXzQzNzIgPSBuZXcgSGFzaFNldDw6OkpTQzo6
REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM3MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM3MzsKKyAgICBkZWxldGUgXzQzNzI7CisgICAgYXV0
byogXzQzNzQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBf
NDM3NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM3
NTsKKyAgICBkZWxldGUgXzQzNzQ7CisgICAgZGVsZXRlIF80MzAwOworICAgIGRlbGV0ZSBfNDMw
MTsKKyAgICBkZWxldGUgXzQzMDI7CisgICAgZGVsZXRlIF80MzAzOworICAgIGRlbGV0ZSBfNDMw
NDsKKyAgICBkZWxldGUgXzQzMDU7CisgICAgZGVsZXRlIF80MzA2OworICAgIGRlbGV0ZSBfNDMw
NzsKKyAgICBkZWxldGUgXzQzMDg7CisgICAgZGVsZXRlIF80MzA5OworICAgIGRlbGV0ZSBfNDMx
MDsKKyAgICBkZWxldGUgXzQzMTE7CisgICAgZGVsZXRlIF80MzEyOworICAgIGRlbGV0ZSBfNDMx
MzsKKyAgICBkZWxldGUgXzQzMTQ7CisgICAgZGVsZXRlIF80MzE1OworICAgIGRlbGV0ZSBfNDMx
NjsKKyAgICBkZWxldGUgXzQzMTc7CisgICAgZGVsZXRlIF80MzE4OworICAgIGRlbGV0ZSBfNDI4
MTsKKyAgICBkZWxldGUgXzQyODI7CisgICAgZGVsZXRlIF80MjgzOworICAgIGRlbGV0ZSBfNDI4
NDsKKyAgICBkZWxldGUgXzQyODU7CisgICAgZGVsZXRlIF80Mjg2OworICAgIGRlbGV0ZSBfNDI4
NzsKKyAgICBkZWxldGUgXzQyODg7CisgICAgZGVsZXRlIF80Mjg5OworICAgIGRlbGV0ZSBfNDI5
MDsKKyAgICBkZWxldGUgXzQyOTE7CisgICAgZGVsZXRlIF80MjkyOworICAgIGRlbGV0ZSBfNDI5
MzsKKyAgICBkZWxldGUgXzQyOTQ7CisgICAgZGVsZXRlIF80Mjk1OworICAgIGRlbGV0ZSBfNDI5
NjsKKyAgICBkZWxldGUgXzQyOTc7CisgICAgZGVsZXRlIF80Mjk4OworICAgIGRlbGV0ZSBfNDI5
OTsKKyAgICBhdXRvKiBfNDM3NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80Mzc3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzNzggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM3OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80MzgwID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzODEgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM4MiA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80MzgzID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQz
ODQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDM4NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80Mzg2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQzODcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDM4OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80Mzg5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzOTAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM5MSA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80MzkyID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzOTMgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM5NCA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIF80MzkyLT5hZGQo
NSk7CisgICAgXzQzOTItPmFkZCg0MSk7CisgICAgXzQzOTMtPmFkZCg1KTsKKyAgICBfNDM5My0+
YWRkKDQxKTsKKyAgICBfNDM3Ni0+YWRkKDUpOworICAgIF80Mzc2LT5hZGQoNDEpOworICAgIF80
MzkxLT5hZGQoNSk7CisgICAgXzQzOTEtPmFkZCg0MSk7CisgICAgXzQzODktPmFkZCg1KTsKKyAg
ICBfNDM4OS0+YWRkKDQxKTsKKyAgICBfNDM4OS0+YWRkKDQ5KTsKKyAgICBfNDM4OS0+YWRkKDY3
KTsKKyAgICBfNDM4OS0+YWRkKDQ2KTsKKyAgICBfNDM4OS0+YWRkKDU5KTsKKyAgICBfNDM4OS0+
YWRkKDU2KTsKKyAgICBfNDM4OS0+YWRkKDM4Nyk7CisgICAgXzQzODgtPmFkZCg0Nik7CisgICAg
XzQzODgtPmFkZCg1KTsKKyAgICBfNDM4OC0+YWRkKDQ5KTsKKyAgICBfNDM4OC0+YWRkKDY3KTsK
KyAgICBfNDM4OC0+YWRkKDU2KTsKKyAgICBfNDM4OC0+YWRkKDQxKTsKKyAgICBfNDM4OC0+YWRk
KDU5KTsKKyAgICBfNDM4OC0+YWRkKDI4MCk7CisgICAgXzQzODgtPmFkZCgxMDMpOworICAgIF80
Mzg4LT5hZGQoMjcpOworICAgIF80Mzg4LT5hZGQoMzUpOworICAgIF80Mzg4LT5hZGQoMjc1KTsK
KyAgICBfNDM4OC0+YWRkKDk3KTsKKyAgICBfNDM4MC0+YWRkKDk3KTsKKyAgICBfNDM4MC0+YWRk
KDI4MCk7CisgICAgXzQzODAtPmFkZCgxMDMpOworICAgIF80MzgwLT5hZGQoMzUpOworICAgIF80
MzgwLT5hZGQoNSk7CisgICAgXzQzODAtPmFkZCg0OSk7CisgICAgXzQzODAtPmFkZCg2Nyk7Cisg
ICAgXzQzODAtPmFkZCg1Nik7CisgICAgXzQzODAtPmFkZCg0MSk7CisgICAgXzQzODAtPmFkZCgy
Nyk7CisgICAgXzQzODAtPmFkZCg1OSk7CisgICAgXzQzODAtPmFkZCg0Nik7CisgICAgXzQzODAt
PmFkZCgzMzMpOworICAgIF80MzgwLT5hZGQoMzg2KTsKKyAgICBfNDM4Ny0+YWRkKDk3KTsKKyAg
ICBfNDM4Ny0+YWRkKDI4MCk7CisgICAgXzQzODctPmFkZCgxMDMpOworICAgIF80Mzg3LT5hZGQo
MzUpOworICAgIF80Mzg3LT5hZGQoNSk7CisgICAgXzQzODctPmFkZCg0OSk7CisgICAgXzQzODct
PmFkZCg2Nyk7CisgICAgXzQzODctPmFkZCg1Nik7CisgICAgXzQzODctPmFkZCg0MSk7CisgICAg
XzQzODctPmFkZCgyNyk7CisgICAgXzQzODctPmFkZCg1OSk7CisgICAgXzQzODctPmFkZCg0Nik7
CisgICAgXzQzODctPmFkZCgzMzMpOworICAgIF80Mzg3LT5hZGQoMzg2KTsKKyAgICBfNDM4NS0+
YWRkKDMzMyk7CisgICAgXzQzODUtPmFkZCgyODApOworICAgIF80Mzg1LT5hZGQoMTAzKTsKKyAg
ICBfNDM4NS0+YWRkKDM1KTsKKyAgICBfNDM4NS0+YWRkKDUpOworICAgIF80Mzg1LT5hZGQoNDYp
OworICAgIF80Mzg1LT5hZGQoNDkpOworICAgIF80Mzg1LT5hZGQoNjcpOworICAgIF80Mzg1LT5h
ZGQoNTYpOworICAgIF80Mzg1LT5hZGQoNDEpOworICAgIF80Mzg1LT5hZGQoMjcpOworICAgIF80
Mzg1LT5hZGQoOTcpOworICAgIF80Mzg1LT5hZGQoNTkpOworICAgIF80Mzg1LT5hZGQoMjEzKTsK
KyAgICBfNDM4NS0+YWRkKDE0NCk7CisgICAgXzQzODUtPmFkZCgzMTIpOworICAgIF80Mzg1LT5h
ZGQoMzA4KTsKKyAgICBfNDM4NS0+YWRkKDE0Myk7CisgICAgXzQzODUtPmFkZCgzMDUpOworICAg
IF80Mzg1LT5hZGQoMzEwKTsKKyAgICBfNDM4NS0+YWRkKDMwNyk7CisgICAgXzQzODYtPmFkZCgz
MzMpOworICAgIF80Mzg2LT5hZGQoMjgwKTsKKyAgICBfNDM4Ni0+YWRkKDEwMyk7CisgICAgXzQz
ODYtPmFkZCgzNSk7CisgICAgXzQzODYtPmFkZCg1KTsKKyAgICBfNDM4Ni0+YWRkKDQ2KTsKKyAg
ICBfNDM4Ni0+YWRkKDQ5KTsKKyAgICBfNDM4Ni0+YWRkKDY3KTsKKyAgICBfNDM4Ni0+YWRkKDU2
KTsKKyAgICBfNDM4Ni0+YWRkKDQxKTsKKyAgICBfNDM4Ni0+YWRkKDI3KTsKKyAgICBfNDM4Ni0+
YWRkKDk3KTsKKyAgICBfNDM4Ni0+YWRkKDU5KTsKKyAgICBfNDM4Ni0+YWRkKDIxMyk7CisgICAg
XzQzODYtPmFkZCgxNDQpOworICAgIF80Mzg2LT5hZGQoMzEyKTsKKyAgICBfNDM4Ni0+YWRkKDMw
OCk7CisgICAgXzQzODYtPmFkZCgxNDMpOworICAgIF80Mzg2LT5hZGQoMzA1KTsKKyAgICBfNDM4
Ni0+YWRkKDMxMCk7CisgICAgXzQzODYtPmFkZCgzMDcpOworICAgIF80MzgxLT5hZGQoMzMzKTsK
KyAgICBfNDM4MS0+YWRkKDM1KTsKKyAgICBfNDM4MS0+YWRkKDMwNyk7CisgICAgXzQzODEtPmFk
ZCg0Nik7CisgICAgXzQzODEtPmFkZCg1Nik7CisgICAgXzQzODEtPmFkZCg1OSk7CisgICAgXzQz
ODEtPmFkZCgzMDUpOworICAgIF80MzgxLT5hZGQoMjgwKTsKKyAgICBfNDM4MS0+YWRkKDEwMyk7
CisgICAgXzQzODEtPmFkZCg1KTsKKyAgICBfNDM4MS0+YWRkKDMxMCk7CisgICAgXzQzODEtPmFk
ZCg0OSk7CisgICAgXzQzODEtPmFkZCg2Nyk7CisgICAgXzQzODEtPmFkZCgzMDgpOworICAgIF80
MzgxLT5hZGQoMzEyKTsKKyAgICBfNDM4MS0+YWRkKDQxKTsKKyAgICBfNDM4MS0+YWRkKDI3KTsK
KyAgICBfNDM4MS0+YWRkKDk3KTsKKyAgICBfNDM4MS0+YWRkKDE0Myk7CisgICAgXzQzODEtPmFk
ZCgyMTMpOworICAgIF80MzgxLT5hZGQoMTQ0KTsKKyAgICBfNDM4NC0+YWRkKDMzMyk7CisgICAg
XzQzODQtPmFkZCgzNSk7CisgICAgXzQzODQtPmFkZCgzMDcpOworICAgIF80Mzg0LT5hZGQoNDYp
OworICAgIF80Mzg0LT5hZGQoNTYpOworICAgIF80Mzg0LT5hZGQoNTkpOworICAgIF80Mzg0LT5h
ZGQoMzA1KTsKKyAgICBfNDM4NC0+YWRkKDI4MCk7CisgICAgXzQzODQtPmFkZCgxMDMpOworICAg
IF80Mzg0LT5hZGQoNSk7CisgICAgXzQzODQtPmFkZCgzMTApOworICAgIF80Mzg0LT5hZGQoNDkp
OworICAgIF80Mzg0LT5hZGQoNjcpOworICAgIF80Mzg0LT5hZGQoMzA4KTsKKyAgICBfNDM4NC0+
YWRkKDMxMik7CisgICAgXzQzODQtPmFkZCg0MSk7CisgICAgXzQzODQtPmFkZCgyNyk7CisgICAg
XzQzODQtPmFkZCg5Nyk7CisgICAgXzQzODQtPmFkZCgxNDMpOworICAgIF80Mzg0LT5hZGQoMjEz
KTsKKyAgICBfNDM4NC0+YWRkKDE0NCk7CisgICAgXzQzODMtPmFkZCgzMzMpOworICAgIF80Mzgz
LT5hZGQoOTcpOworICAgIF80MzgzLT5hZGQoMzUpOworICAgIF80MzgzLT5hZGQoNDEpOworICAg
IF80MzgzLT5hZGQoNDYpOworICAgIF80MzgzLT5hZGQoNTYpOworICAgIF80MzgzLT5hZGQoMjgw
KTsKKyAgICBfNDM4My0+YWRkKDEwMyk7CisgICAgXzQzODMtPmFkZCg1KTsKKyAgICBfNDM4My0+
YWRkKDMxMCk7CisgICAgXzQzODMtPmFkZCg0OSk7CisgICAgXzQzODMtPmFkZCg2Nyk7CisgICAg
XzQzODMtPmFkZCgzMDgpOworICAgIF80MzgzLT5hZGQoMzEyKTsKKyAgICBfNDM4My0+YWRkKDMw
Nyk7CisgICAgXzQzODMtPmFkZCgyNyk7CisgICAgXzQzODMtPmFkZCgzMDUpOworICAgIF80Mzgz
LT5hZGQoNTkpOworICAgIF80MzgzLT5hZGQoMTQzKTsKKyAgICBfNDM4My0+YWRkKDIxMyk7Cisg
ICAgXzQzODMtPmFkZCgxNDQpOworICAgIF80MzgzLT5hZGQoNDQpOworICAgIF80MzgzLT5hZGQo
MTcxKTsKKyAgICBfNDM4My0+YWRkKDM4NSk7CisgICAgXzQzODItPmFkZCgzMzMpOworICAgIF80
MzgyLT5hZGQoOTcpOworICAgIF80MzgyLT5hZGQoMzUpOworICAgIF80MzgyLT5hZGQoNDEpOwor
ICAgIF80MzgyLT5hZGQoNDYpOworICAgIF80MzgyLT5hZGQoNTYpOworICAgIF80MzgyLT5hZGQo
MjgwKTsKKyAgICBfNDM4Mi0+YWRkKDEwMyk7CisgICAgXzQzODItPmFkZCg1KTsKKyAgICBfNDM4
Mi0+YWRkKDMxMCk7CisgICAgXzQzODItPmFkZCg0OSk7CisgICAgXzQzODItPmFkZCg2Nyk7Cisg
ICAgXzQzODItPmFkZCgzMDgpOworICAgIF80MzgyLT5hZGQoMzEyKTsKKyAgICBfNDM4Mi0+YWRk
KDMwNyk7CisgICAgXzQzODItPmFkZCgyNyk7CisgICAgXzQzODItPmFkZCgzMDUpOworICAgIF80
MzgyLT5hZGQoNTkpOworICAgIF80MzgyLT5hZGQoMTQzKTsKKyAgICBfNDM4Mi0+YWRkKDIxMyk7
CisgICAgXzQzODItPmFkZCgxNDQpOworICAgIF80MzgyLT5hZGQoNDQpOworICAgIF80MzgyLT5h
ZGQoMTcxKTsKKyAgICBfNDM4Mi0+YWRkKDM4NSk7CisgICAgXzQzODEtPmFkZCgzMzMpOworICAg
IF80MzgxLT5hZGQoMzUpOworICAgIF80MzgxLT5hZGQoNDQpOworICAgIF80MzgxLT5hZGQoNDEp
OworICAgIF80MzgxLT5hZGQoMjEzKTsKKyAgICBfNDM4MS0+YWRkKDMxMik7CisgICAgXzQzODEt
PmFkZCg0Nik7CisgICAgXzQzODEtPmFkZCgxNzEpOworICAgIF80MzgxLT5hZGQoMzA1KTsKKyAg
ICBfNDM4MS0+YWRkKDI4MCk7CisgICAgXzQzODEtPmFkZCgxNDQpOworICAgIF80MzgxLT5hZGQo
MTAzKTsKKyAgICBfNDM4MS0+YWRkKDUpOworICAgIF80MzgxLT5hZGQoMzEwKTsKKyAgICBfNDM4
MS0+YWRkKDQ5KTsKKyAgICBfNDM4MS0+YWRkKDY3KTsKKyAgICBfNDM4MS0+YWRkKDMwOCk7Cisg
ICAgXzQzODEtPmFkZCg1Nik7CisgICAgXzQzODEtPmFkZCgzMDcpOworICAgIF80MzgxLT5hZGQo
MjcpOworICAgIF80MzgxLT5hZGQoOTcpOworICAgIF80MzgxLT5hZGQoMTQzKTsKKyAgICBfNDM4
MS0+YWRkKDU5KTsKKyAgICBfNDM4MS0+YWRkKDI3MCk7CisgICAgXzQzODQtPmFkZCgzMzMpOwor
ICAgIF80Mzg0LT5hZGQoMzUpOworICAgIF80Mzg0LT5hZGQoNDQpOworICAgIF80Mzg0LT5hZGQo
NDEpOworICAgIF80Mzg0LT5hZGQoMjEzKTsKKyAgICBfNDM4NC0+YWRkKDMxMik7CisgICAgXzQz
ODQtPmFkZCg0Nik7CisgICAgXzQzODQtPmFkZCgxNzEpOworICAgIF80Mzg0LT5hZGQoMzA1KTsK
KyAgICBfNDM4NC0+YWRkKDI4MCk7CisgICAgXzQzODQtPmFkZCgxNDQpOworICAgIF80Mzg0LT5h
ZGQoMTAzKTsKKyAgICBfNDM4NC0+YWRkKDUpOworICAgIF80Mzg0LT5hZGQoMzEwKTsKKyAgICBf
NDM4NC0+YWRkKDQ5KTsKKyAgICBfNDM4NC0+YWRkKDY3KTsKKyAgICBfNDM4NC0+YWRkKDMwOCk7
CisgICAgXzQzODQtPmFkZCg1Nik7CisgICAgXzQzODQtPmFkZCgzMDcpOworICAgIF80Mzg0LT5h
ZGQoMjcpOworICAgIF80Mzg0LT5hZGQoOTcpOworICAgIF80Mzg0LT5hZGQoMTQzKTsKKyAgICBf
NDM4NC0+YWRkKDU5KTsKKyAgICBfNDM4NC0+YWRkKDI4NSk7CisgICAgXzQzNzktPmFkZCgzMzMp
OworICAgIF80Mzc5LT5hZGQoOTcpOworICAgIF80Mzc5LT5hZGQoMzUpOworICAgIF80Mzc5LT5h
ZGQoNDQpOworICAgIF80Mzc5LT5hZGQoNDEpOworICAgIF80Mzc5LT5hZGQoNDYpOworICAgIF80
Mzc5LT5hZGQoNTYpOworICAgIF80Mzc5LT5hZGQoMjA1KTsKKyAgICBfNDM3OS0+YWRkKDI4MCk7
CisgICAgXzQzNzktPmFkZCgxMDMpOworICAgIF80Mzc5LT5hZGQoNSk7CisgICAgXzQzNzktPmFk
ZCgzMTApOworICAgIF80Mzc5LT5hZGQoNDkpOworICAgIF80Mzc5LT5hZGQoNjcpOworICAgIF80
Mzc5LT5hZGQoMzA4KTsKKyAgICBfNDM3OS0+YWRkKDMxMik7CisgICAgXzQzNzktPmFkZCgyNzAp
OworICAgIF80Mzc5LT5hZGQoMzA3KTsKKyAgICBfNDM3OS0+YWRkKDI3KTsKKyAgICBfNDM3OS0+
YWRkKDMwNSk7CisgICAgXzQzNzktPmFkZCg1OSk7CisgICAgXzQzNzktPmFkZCgxNDMpOworICAg
IF80Mzc5LT5hZGQoMjM4KTsKKyAgICBfNDM3OS0+YWRkKDE0NCk7CisgICAgXzQzNzktPmFkZCgx
OTQpOworICAgIF80Mzc5LT5hZGQoMTcwKTsKKyAgICBfNDM3OS0+YWRkKDE2Nik7CisgICAgXzQz
NzktPmFkZCgzMzMpOworICAgIF80Mzc5LT5hZGQoMjgwKTsKKyAgICBfNDM3OS0+YWRkKDEwMyk7
CisgICAgXzQzNzktPmFkZCgzNSk7CisgICAgXzQzNzktPmFkZCg1KTsKKyAgICBfNDM3OS0+YWRk
KDQ2KTsKKyAgICBfNDM3OS0+YWRkKDQ5KTsKKyAgICBfNDM3OS0+YWRkKDY3KTsKKyAgICBfNDM3
OS0+YWRkKDU2KTsKKyAgICBfNDM3OS0+YWRkKDQxKTsKKyAgICBfNDM3OS0+YWRkKDI3KTsKKyAg
ICBfNDM3OS0+YWRkKDk3KTsKKyAgICBfNDM3OS0+YWRkKDU5KTsKKyAgICBfNDM3OS0+YWRkKDE0
Nyk7CisgICAgXzQzNzgtPmFkZCgzMzMpOworICAgIF80Mzc4LT5hZGQoMjM4KTsKKyAgICBfNDM3
OC0+YWRkKDM1KTsKKyAgICBfNDM3OC0+YWRkKDQ0KTsKKyAgICBfNDM3OC0+YWRkKDE2Nik7Cisg
ICAgXzQzNzgtPmFkZCgxNDMpOworICAgIF80Mzc4LT5hZGQoMzA3KTsKKyAgICBfNDM3OC0+YWRk
KDMxMik7CisgICAgXzQzNzgtPmFkZCg0Nik7CisgICAgXzQzNzgtPmFkZCgzMDUpOworICAgIF80
Mzc4LT5hZGQoNTkpOworICAgIF80Mzc4LT5hZGQoMTcwKTsKKyAgICBfNDM3OC0+YWRkKDEwMyk7
CisgICAgXzQzNzgtPmFkZCg1KTsKKyAgICBfNDM3OC0+YWRkKDMxMCk7CisgICAgXzQzNzgtPmFk
ZCg0OSk7CisgICAgXzQzNzgtPmFkZCgxOTQpOworICAgIF80Mzc4LT5hZGQoMjA1KTsKKyAgICBf
NDM3OC0+YWRkKDY3KTsKKyAgICBfNDM3OC0+YWRkKDMwOCk7CisgICAgXzQzNzgtPmFkZCg1Nik7
CisgICAgXzQzNzgtPmFkZCgyNzApOworICAgIF80Mzc4LT5hZGQoNDEpOworICAgIF80Mzc4LT5h
ZGQoMjcpOworICAgIF80Mzc4LT5hZGQoMzg0KTsKKyAgICBfNDM3Ny0+YWRkKDMzMyk7CisgICAg
XzQzNzctPmFkZCgyMzgpOworICAgIF80Mzc3LT5hZGQoMzUpOworICAgIF80Mzc3LT5hZGQoNDQp
OworICAgIF80Mzc3LT5hZGQoMTY2KTsKKyAgICBfNDM3Ny0+YWRkKDE0Myk7CisgICAgXzQzNzct
PmFkZCgzMDcpOworICAgIF80Mzc3LT5hZGQoMzEyKTsKKyAgICBfNDM3Ny0+YWRkKDQ2KTsKKyAg
ICBfNDM3Ny0+YWRkKDMwNSk7CisgICAgXzQzNzctPmFkZCg1OSk7CisgICAgXzQzNzctPmFkZCgx
NzApOworICAgIF80Mzc3LT5hZGQoMTAzKTsKKyAgICBfNDM3Ny0+YWRkKDUpOworICAgIF80Mzc3
LT5hZGQoMzEwKTsKKyAgICBfNDM3Ny0+YWRkKDQ5KTsKKyAgICBfNDM3Ny0+YWRkKDE5NCk7Cisg
ICAgXzQzNzctPmFkZCgyMDUpOworICAgIF80Mzc3LT5hZGQoNjcpOworICAgIF80Mzc3LT5hZGQo
MzA4KTsKKyAgICBfNDM3Ny0+YWRkKDU2KTsKKyAgICBfNDM3Ny0+YWRkKDI3MCk7CisgICAgXzQz
NzctPmFkZCg0MSk7CisgICAgXzQzNzctPmFkZCgyNyk7CisgICAgXzQzNzctPmFkZCgzODQpOwor
ICAgIF80Mzc2LT5hZGQoMzMzKTsKKyAgICBfNDM3Ni0+YWRkKDMxMCk7CisgICAgXzQzNzYtPmFk
ZCgzNSk7CisgICAgXzQzNzYtPmFkZCg0NCk7CisgICAgXzQzNzYtPmFkZCg0MSk7CisgICAgXzQz
NzYtPmFkZCgxNDMpOworICAgIF80Mzc2LT5hZGQoMjA1KTsKKyAgICBfNDM3Ni0+YWRkKDQ2KTsK
KyAgICBfNDM3Ni0+YWRkKDE3MCk7CisgICAgXzQzNzYtPmFkZCgxMDMpOworICAgIF80Mzc2LT5h
ZGQoNSk7CisgICAgXzQzNzYtPmFkZCgxNjYpOworICAgIF80Mzc2LT5hZGQoNDkpOworICAgIF80
Mzc2LT5hZGQoMTk0KTsKKyAgICBfNDM3Ni0+YWRkKDIzOCk7CisgICAgXzQzNzYtPmFkZCg2Nyk7
CisgICAgXzQzNzYtPmFkZCgzMDgpOworICAgIF80Mzc2LT5hZGQoMzEyKTsKKyAgICBfNDM3Ni0+
YWRkKDU2KTsKKyAgICBfNDM3Ni0+YWRkKDI3MCk7CisgICAgXzQzNzYtPmFkZCgzMDcpOworICAg
IF80Mzc2LT5hZGQoMjcpOworICAgIF80Mzc2LT5hZGQoMzA1KTsKKyAgICBfNDM3Ni0+YWRkKDU5
KTsKKyAgICBfNDM3Ni0+YWRkKDQ4KTsKKyAgICBfNDM5MS0+YWRkKDMzMyk7CisgICAgXzQzOTEt
PmFkZCgzMTApOworICAgIF80MzkxLT5hZGQoMzUpOworICAgIF80MzkxLT5hZGQoNDQpOworICAg
IF80MzkxLT5hZGQoNDEpOworICAgIF80MzkxLT5hZGQoMTQzKTsKKyAgICBfNDM5MS0+YWRkKDIw
NSk7CisgICAgXzQzOTEtPmFkZCg0Nik7CisgICAgXzQzOTEtPmFkZCgxNzApOworICAgIF80Mzkx
LT5hZGQoMTAzKTsKKyAgICBfNDM5MS0+YWRkKDUpOworICAgIF80MzkxLT5hZGQoMTY2KTsKKyAg
ICBfNDM5MS0+YWRkKDQ5KTsKKyAgICBfNDM5MS0+YWRkKDE5NCk7CisgICAgXzQzOTEtPmFkZCgy
MzgpOworICAgIF80MzkxLT5hZGQoNjcpOworICAgIF80MzkxLT5hZGQoMzA4KTsKKyAgICBfNDM5
MS0+YWRkKDMxMik7CisgICAgXzQzOTEtPmFkZCg1Nik7CisgICAgXzQzOTEtPmFkZCgyNzApOwor
ICAgIF80MzkxLT5hZGQoMzA3KTsKKyAgICBfNDM5MS0+YWRkKDI3KTsKKyAgICBfNDM5MS0+YWRk
KDMwNSk7CisgICAgXzQzOTEtPmFkZCg1OSk7CisgICAgXzQzOTEtPmFkZCgxNDYpOworICAgIF80
Mzg5LT5hZGQoMzMzKTsKKyAgICBfNDM4OS0+YWRkKDM1KTsKKyAgICBfNDM4OS0+YWRkKDQ0KTsK
KyAgICBfNDM4OS0+YWRkKDE2Nik7CisgICAgXzQzODktPmFkZCgxNDMpOworICAgIF80Mzg5LT5h
ZGQoMzA3KTsKKyAgICBfNDM4OS0+YWRkKDIwNSk7CisgICAgXzQzODktPmFkZCgyNzApOworICAg
IF80Mzg5LT5hZGQoMzA1KTsKKyAgICBfNDM4OS0+YWRkKDE3MCk7CisgICAgXzQzODktPmFkZCgx
MDMpOworICAgIF80Mzg5LT5hZGQoMzA4KTsKKyAgICBfNDM4OS0+YWRkKDMxMCk7CisgICAgXzQz
ODktPmFkZCgyNyk7CisgICAgXzQzODktPmFkZCgxOTQpOworICAgIF80Mzg5LT5hZGQoMjM4KTsK
KyAgICBfNDM4OS0+YWRkKDMxMik7CisgICAgXzQzODgtPmFkZCgzMzMpOworICAgIF80Mzg4LT5h
ZGQoMjM4KTsKKyAgICBfNDM4OC0+YWRkKDE0Myk7CisgICAgXzQzODgtPmFkZCgzMDcpOworICAg
IF80Mzg4LT5hZGQoNDQpOworICAgIF80Mzg4LT5hZGQoMzA4KTsKKyAgICBfNDM4OC0+YWRkKDMx
Mik7CisgICAgXzQzODgtPmFkZCgyMDUpOworICAgIF80Mzg4LT5hZGQoMzEwKTsKKyAgICBfNDM4
OC0+YWRkKDE3MCk7CisgICAgXzQzODgtPmFkZCgzMDUpOworICAgIF80Mzg4LT5hZGQoMTk0KTsK
KyAgICBfNDM4OC0+YWRkKDE2Nik7CisgICAgXzQzODgtPmFkZCgyNzApOworICAgIF80MzgwLT5h
ZGQoMzEwKTsKKyAgICBfNDM4MC0+YWRkKDIzOCk7CisgICAgXzQzODAtPmFkZCg0NCk7CisgICAg
XzQzODAtPmFkZCgxNjYpOworICAgIF80MzgwLT5hZGQoMzA3KTsKKyAgICBfNDM4MC0+YWRkKDIw
NSk7CisgICAgXzQzODAtPmFkZCgzMTIpOworICAgIF80MzgwLT5hZGQoMjcwKTsKKyAgICBfNDM4
MC0+YWRkKDE0Myk7CisgICAgXzQzODAtPmFkZCgzMDUpOworICAgIF80MzgwLT5hZGQoMTk0KTsK
KyAgICBfNDM4MC0+YWRkKDE3MCk7CisgICAgXzQzODAtPmFkZCgzMDgpOworICAgIF80Mzg3LT5h
ZGQoMzEwKTsKKyAgICBfNDM4Ny0+YWRkKDIzOCk7CisgICAgXzQzODctPmFkZCg0NCk7CisgICAg
XzQzODctPmFkZCgxNjYpOworICAgIF80Mzg3LT5hZGQoMzA3KTsKKyAgICBfNDM4Ny0+YWRkKDIw
NSk7CisgICAgXzQzODctPmFkZCgzMTIpOworICAgIF80Mzg3LT5hZGQoMjcwKTsKKyAgICBfNDM4
Ny0+YWRkKDE0Myk7CisgICAgXzQzODctPmFkZCgzMDUpOworICAgIF80Mzg3LT5hZGQoMTk0KTsK
KyAgICBfNDM4Ny0+YWRkKDE3MCk7CisgICAgXzQzODctPmFkZCgzMDgpOworICAgIF80Mzg1LT5h
ZGQoMjM4KTsKKyAgICBfNDM4NS0+YWRkKDI3MCk7CisgICAgXzQzODUtPmFkZCg0NCk7CisgICAg
XzQzODUtPmFkZCgxNjYpOworICAgIF80Mzg1LT5hZGQoMTk0KTsKKyAgICBfNDM4NS0+YWRkKDIw
NSk7CisgICAgXzQzODUtPmFkZCgxNzApOworICAgIF80Mzg2LT5hZGQoMjM4KTsKKyAgICBfNDM4
Ni0+YWRkKDI3MCk7CisgICAgXzQzODYtPmFkZCg0NCk7CisgICAgXzQzODYtPmFkZCgxNjYpOwor
ICAgIF80Mzg2LT5hZGQoMTk0KTsKKyAgICBfNDM4Ni0+YWRkKDIwNSk7CisgICAgXzQzODYtPmFk
ZCgxNzApOworICAgIF80MzgxLT5hZGQoMTcwKTsKKyAgICBfNDM4MS0+YWRkKDIzOCk7CisgICAg
XzQzODEtPmFkZCg0NCk7CisgICAgXzQzODEtPmFkZCgxNjYpOworICAgIF80MzgxLT5hZGQoMjcw
KTsKKyAgICBfNDM4MS0+YWRkKDIwNSk7CisgICAgXzQzODEtPmFkZCgxOTQpOworICAgIF80Mzg0
LT5hZGQoMTcwKTsKKyAgICBfNDM4NC0+YWRkKDIzOCk7CisgICAgXzQzODQtPmFkZCg0NCk7Cisg
ICAgXzQzODQtPmFkZCgxNjYpOworICAgIF80Mzg0LT5hZGQoMjcwKTsKKyAgICBfNDM4NC0+YWRk
KDIwNSk7CisgICAgXzQzODQtPmFkZCgxOTQpOworICAgIF80MzgzLT5hZGQoMjA1KTsKKyAgICBf
NDM4My0+YWRkKDE5NCk7CisgICAgXzQzODMtPmFkZCgxNzApOworICAgIF80MzgzLT5hZGQoMjcw
KTsKKyAgICBfNDM4My0+YWRkKDIzOCk7CisgICAgXzQzODMtPmFkZCgxNjYpOworICAgIF80Mzgy
LT5hZGQoMjA1KTsKKyAgICBfNDM4Mi0+YWRkKDE5NCk7CisgICAgXzQzODItPmFkZCgxNzApOwor
ICAgIF80MzgyLT5hZGQoMjcwKTsKKyAgICBfNDM4Mi0+YWRkKDIzOCk7CisgICAgXzQzODItPmFk
ZCgxNjYpOworICAgIF80MzgxLT5hZGQoMTcwKTsKKyAgICBfNDM4MS0+YWRkKDIzOCk7CisgICAg
XzQzODEtPmFkZCgxNjYpOworICAgIF80MzgxLT5hZGQoMjA1KTsKKyAgICBfNDM4MS0+YWRkKDE5
NCk7CisgICAgXzQzODQtPmFkZCgxNzApOworICAgIF80Mzg0LT5hZGQoMjM4KTsKKyAgICBfNDM4
NC0+YWRkKDE5NCk7CisgICAgXzQzODQtPmFkZCgyNzApOworICAgIF80Mzg0LT5hZGQoMjA1KTsK
KyAgICBfNDM4NC0+YWRkKDE2Nik7CisgICAgXzQzNzktPmFkZCgyMzgpOworICAgIF80Mzc5LT5h
ZGQoMTk0KTsKKyAgICBfNDM3OS0+YWRkKDQ0KTsKKyAgICBfNDM3OS0+YWRkKDE2Nik7CisgICAg
XzQzNzktPmFkZCgzMDcpOworICAgIF80Mzc5LT5hZGQoMjA1KTsKKyAgICBfNDM3OS0+YWRkKDI3
MCk7CisgICAgXzQzNzktPmFkZCgzMTIpOworICAgIF80Mzc5LT5hZGQoMzEwKTsKKyAgICBfNDM3
OS0+YWRkKDMwNSk7CisgICAgXzQzNzktPmFkZCgzMDgpOworICAgIF80Mzc5LT5hZGQoMTcwKTsK
KyAgICBfNDM3OS0+YWRkKDE0Myk7CisgICAgZGVsZXRlIF80Mzc2OworICAgIGRlbGV0ZSBfNDM3
NzsKKyAgICBkZWxldGUgXzQzNzg7CisgICAgZGVsZXRlIF80Mzc5OworICAgIGRlbGV0ZSBfNDM4
MDsKKyAgICBkZWxldGUgXzQzODE7CisgICAgZGVsZXRlIF80MzgyOworICAgIGRlbGV0ZSBfNDM4
MzsKKyAgICBkZWxldGUgXzQzODQ7CisgICAgZGVsZXRlIF80Mzg1OworICAgIGRlbGV0ZSBfNDM4
NjsKKyAgICBkZWxldGUgXzQzODc7CisgICAgZGVsZXRlIF80Mzg4OworICAgIGRlbGV0ZSBfNDM4
OTsKKyAgICBkZWxldGUgXzQzOTA7CisgICAgZGVsZXRlIF80MzkxOworICAgIGRlbGV0ZSBfNDM5
MjsKKyAgICBkZWxldGUgXzQzOTM7CisgICAgZGVsZXRlIF80Mzk0OworICAgIGF1dG8qIF80Mzk1
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQzOTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDM5NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80Mzk4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQzOTkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDQwMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDAxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MDIgPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQwMyA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDA0ID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MDUgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQwNiA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
NDA3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ0MDggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDQwOSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NDEwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ0MTEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQxMiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDEzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgXzQ0MTEtPmFkZCg1KTsKKyAgICBfNDQxMS0+YWRk
KDQxKTsKKyAgICBfNDQxMi0+YWRkKDUpOworICAgIF80NDEyLT5hZGQoNDEpOworICAgIF80Mzk1
LT5hZGQoNSk7CisgICAgXzQzOTUtPmFkZCg0MSk7CisgICAgXzQ0MTAtPmFkZCg1KTsKKyAgICBf
NDQxMC0+YWRkKDQxKTsKKyAgICBfNDQwOC0+YWRkKDUpOworICAgIF80NDA4LT5hZGQoNDEpOwor
ICAgIF80NDA4LT5hZGQoNDkpOworICAgIF80NDA4LT5hZGQoNjcpOworICAgIF80NDA4LT5hZGQo
NDYpOworICAgIF80NDA4LT5hZGQoNTkpOworICAgIF80NDA4LT5hZGQoNTYpOworICAgIF80NDA4
LT5hZGQoMzg4KTsKKyAgICBfNDQwNy0+YWRkKDUpOworICAgIF80NDA3LT5hZGQoNDkpOworICAg
IF80NDA3LT5hZGQoNjcpOworICAgIF80NDA3LT5hZGQoNTYpOworICAgIF80NDA3LT5hZGQoNDEp
OworICAgIF80NDA3LT5hZGQoNDYpOworICAgIF80NDA3LT5hZGQoNTkpOworICAgIF80NDA3LT5h
ZGQoMjgwKTsKKyAgICBfNDQwNy0+YWRkKDEwMyk7CisgICAgXzQ0MDctPmFkZCgyNyk7CisgICAg
XzQ0MDctPmFkZCgzNSk7CisgICAgXzQ0MDctPmFkZCgyNzUpOworICAgIF80NDA3LT5hZGQoOTcp
OworICAgIF80Mzk5LT5hZGQoOTcpOworICAgIF80Mzk5LT5hZGQoMjgwKTsKKyAgICBfNDM5OS0+
YWRkKDEwMyk7CisgICAgXzQzOTktPmFkZCgzNSk7CisgICAgXzQzOTktPmFkZCg1KTsKKyAgICBf
NDM5OS0+YWRkKDQ5KTsKKyAgICBfNDM5OS0+YWRkKDY3KTsKKyAgICBfNDM5OS0+YWRkKDU2KTsK
KyAgICBfNDM5OS0+YWRkKDQxKTsKKyAgICBfNDM5OS0+YWRkKDI3KTsKKyAgICBfNDM5OS0+YWRk
KDU5KTsKKyAgICBfNDM5OS0+YWRkKDQ2KTsKKyAgICBfNDM5OS0+YWRkKDMzMyk7CisgICAgXzQz
OTktPmFkZCgzMzQpOworICAgIF80Mzk5LT5hZGQoMzg3KTsKKyAgICBfNDQwNi0+YWRkKDk3KTsK
KyAgICBfNDQwNi0+YWRkKDI4MCk7CisgICAgXzQ0MDYtPmFkZCgxMDMpOworICAgIF80NDA2LT5h
ZGQoMzUpOworICAgIF80NDA2LT5hZGQoNSk7CisgICAgXzQ0MDYtPmFkZCg0OSk7CisgICAgXzQ0
MDYtPmFkZCg2Nyk7CisgICAgXzQ0MDYtPmFkZCg1Nik7CisgICAgXzQ0MDYtPmFkZCg0MSk7Cisg
ICAgXzQ0MDYtPmFkZCgyNyk7CisgICAgXzQ0MDYtPmFkZCg1OSk7CisgICAgXzQ0MDYtPmFkZCg0
Nik7CisgICAgXzQ0MDYtPmFkZCgzMzMpOworICAgIF80NDA2LT5hZGQoMzM0KTsKKyAgICBfNDQw
Ni0+YWRkKDM4Nyk7CisgICAgXzQ0MDQtPmFkZCgzMzMpOworICAgIF80NDA0LT5hZGQoMjgwKTsK
KyAgICBfNDQwNC0+YWRkKDQ2KTsKKyAgICBfNDQwNC0+YWRkKDEwMyk7CisgICAgXzQ0MDQtPmFk
ZCgzNSk7CisgICAgXzQ0MDQtPmFkZCg1KTsKKyAgICBfNDQwNC0+YWRkKDQ5KTsKKyAgICBfNDQw
NC0+YWRkKDY3KTsKKyAgICBfNDQwNC0+YWRkKDU2KTsKKyAgICBfNDQwNC0+YWRkKDQxKTsKKyAg
ICBfNDQwNC0+YWRkKDI3KTsKKyAgICBfNDQwNC0+YWRkKDk3KTsKKyAgICBfNDQwNC0+YWRkKDMz
NCk7CisgICAgXzQ0MDQtPmFkZCg1OSk7CisgICAgXzQ0MDQtPmFkZCgyMTMpOworICAgIF80NDA0
LT5hZGQoMTQ0KTsKKyAgICBfNDQwNC0+YWRkKDMxMik7CisgICAgXzQ0MDQtPmFkZCgzMDgpOwor
ICAgIF80NDA0LT5hZGQoMTQzKTsKKyAgICBfNDQwNC0+YWRkKDMwNSk7CisgICAgXzQ0MDQtPmFk
ZCgzMTApOworICAgIF80NDA0LT5hZGQoMzA3KTsKKyAgICBfNDQwNS0+YWRkKDMzMyk7CisgICAg
XzQ0MDUtPmFkZCgyODApOworICAgIF80NDA1LT5hZGQoNDYpOworICAgIF80NDA1LT5hZGQoMTAz
KTsKKyAgICBfNDQwNS0+YWRkKDM1KTsKKyAgICBfNDQwNS0+YWRkKDUpOworICAgIF80NDA1LT5h
ZGQoNDkpOworICAgIF80NDA1LT5hZGQoNjcpOworICAgIF80NDA1LT5hZGQoNTYpOworICAgIF80
NDA1LT5hZGQoNDEpOworICAgIF80NDA1LT5hZGQoMjcpOworICAgIF80NDA1LT5hZGQoOTcpOwor
ICAgIF80NDA1LT5hZGQoMzM0KTsKKyAgICBfNDQwNS0+YWRkKDU5KTsKKyAgICBfNDQwNS0+YWRk
KDIxMyk7CisgICAgXzQ0MDUtPmFkZCgxNDQpOworICAgIF80NDA1LT5hZGQoMzEyKTsKKyAgICBf
NDQwNS0+YWRkKDMwOCk7CisgICAgXzQ0MDUtPmFkZCgxNDMpOworICAgIF80NDA1LT5hZGQoMzA1
KTsKKyAgICBfNDQwNS0+YWRkKDMxMCk7CisgICAgXzQ0MDUtPmFkZCgzMDcpOworICAgIF80NDAw
LT5hZGQoMzMzKTsKKyAgICBfNDQwMC0+YWRkKDM1KTsKKyAgICBfNDQwMC0+YWRkKDMwNyk7Cisg
ICAgXzQ0MDAtPmFkZCgzMzQpOworICAgIF80NDAwLT5hZGQoMzEyKTsKKyAgICBfNDQwMC0+YWRk
KDQ2KTsKKyAgICBfNDQwMC0+YWRkKDU5KTsKKyAgICBfNDQwMC0+YWRkKDMwNSk7CisgICAgXzQ0
MDAtPmFkZCgyODApOworICAgIF80NDAwLT5hZGQoMTAzKTsKKyAgICBfNDQwMC0+YWRkKDUpOwor
ICAgIF80NDAwLT5hZGQoMzEwKTsKKyAgICBfNDQwMC0+YWRkKDQ5KTsKKyAgICBfNDQwMC0+YWRk
KDY3KTsKKyAgICBfNDQwMC0+YWRkKDMwOCk7CisgICAgXzQ0MDAtPmFkZCg1Nik7CisgICAgXzQ0
MDAtPmFkZCg0MSk7CisgICAgXzQ0MDAtPmFkZCgyNyk7CisgICAgXzQ0MDAtPmFkZCg5Nyk7Cisg
ICAgXzQ0MDAtPmFkZCgxNDMpOworICAgIF80NDAwLT5hZGQoMjEzKTsKKyAgICBfNDQwMC0+YWRk
KDE0NCk7CisgICAgXzQ0MDMtPmFkZCgzMzMpOworICAgIF80NDAzLT5hZGQoMzUpOworICAgIF80
NDAzLT5hZGQoMzA3KTsKKyAgICBfNDQwMy0+YWRkKDMzNCk7CisgICAgXzQ0MDMtPmFkZCgzMTIp
OworICAgIF80NDAzLT5hZGQoNDYpOworICAgIF80NDAzLT5hZGQoNTkpOworICAgIF80NDAzLT5h
ZGQoMzA1KTsKKyAgICBfNDQwMy0+YWRkKDI4MCk7CisgICAgXzQ0MDMtPmFkZCgxMDMpOworICAg
IF80NDAzLT5hZGQoNSk7CisgICAgXzQ0MDMtPmFkZCgzMTApOworICAgIF80NDAzLT5hZGQoNDkp
OworICAgIF80NDAzLT5hZGQoNjcpOworICAgIF80NDAzLT5hZGQoMzA4KTsKKyAgICBfNDQwMy0+
YWRkKDU2KTsKKyAgICBfNDQwMy0+YWRkKDQxKTsKKyAgICBfNDQwMy0+YWRkKDI3KTsKKyAgICBf
NDQwMy0+YWRkKDk3KTsKKyAgICBfNDQwMy0+YWRkKDE0Myk7CisgICAgXzQ0MDMtPmFkZCgyMTMp
OworICAgIF80NDAzLT5hZGQoMTQ0KTsKKyAgICBfNDQwMi0+YWRkKDMzMyk7CisgICAgXzQ0MDIt
PmFkZCg5Nyk7CisgICAgXzQ0MDItPmFkZCgzNSk7CisgICAgXzQ0MDItPmFkZCg0MSk7CisgICAg
XzQ0MDItPmFkZCgzMzQpOworICAgIF80NDAyLT5hZGQoNDYpOworICAgIF80NDAyLT5hZGQoNTYp
OworICAgIF80NDAyLT5hZGQoMjgwKTsKKyAgICBfNDQwMi0+YWRkKDEwMyk7CisgICAgXzQ0MDIt
PmFkZCg1KTsKKyAgICBfNDQwMi0+YWRkKDMxMCk7CisgICAgXzQ0MDItPmFkZCg0OSk7CisgICAg
XzQ0MDItPmFkZCg2Nyk7CisgICAgXzQ0MDItPmFkZCgzMDgpOworICAgIF80NDAyLT5hZGQoMzEy
KTsKKyAgICBfNDQwMi0+YWRkKDMwNyk7CisgICAgXzQ0MDItPmFkZCgyNyk7CisgICAgXzQ0MDIt
PmFkZCgzMDUpOworICAgIF80NDAyLT5hZGQoNTkpOworICAgIF80NDAyLT5hZGQoMTQzKTsKKyAg
ICBfNDQwMi0+YWRkKDIxMyk7CisgICAgXzQ0MDItPmFkZCgxNDQpOworICAgIF80NDAyLT5hZGQo
NDQpOworICAgIF80NDAyLT5hZGQoMTcxKTsKKyAgICBfNDQwMi0+YWRkKDM4Nik7CisgICAgXzQ0
MDEtPmFkZCgzMzMpOworICAgIF80NDAxLT5hZGQoOTcpOworICAgIF80NDAxLT5hZGQoMzUpOwor
ICAgIF80NDAxLT5hZGQoNDEpOworICAgIF80NDAxLT5hZGQoMzM0KTsKKyAgICBfNDQwMS0+YWRk
KDQ2KTsKKyAgICBfNDQwMS0+YWRkKDU2KTsKKyAgICBfNDQwMS0+YWRkKDI4MCk7CisgICAgXzQ0
MDEtPmFkZCgxMDMpOworICAgIF80NDAxLT5hZGQoNSk7CisgICAgXzQ0MDEtPmFkZCgzMTApOwor
ICAgIF80NDAxLT5hZGQoNDkpOworICAgIF80NDAxLT5hZGQoNjcpOworICAgIF80NDAxLT5hZGQo
MzA4KTsKKyAgICBfNDQwMS0+YWRkKDMxMik7CisgICAgXzQ0MDEtPmFkZCgzMDcpOworICAgIF80
NDAxLT5hZGQoMjcpOworICAgIF80NDAxLT5hZGQoMzA1KTsKKyAgICBfNDQwMS0+YWRkKDU5KTsK
KyAgICBfNDQwMS0+YWRkKDE0Myk7CisgICAgXzQ0MDEtPmFkZCgyMTMpOworICAgIF80NDAxLT5h
ZGQoMTQ0KTsKKyAgICBfNDQwMS0+YWRkKDQ0KTsKKyAgICBfNDQwMS0+YWRkKDE3MSk7CisgICAg
XzQ0MDEtPmFkZCgzODYpOworICAgIF80NDAwLT5hZGQoMzMzKTsKKyAgICBfNDQwMC0+YWRkKDM1
KTsKKyAgICBfNDQwMC0+YWRkKDQ0KTsKKyAgICBfNDQwMC0+YWRkKDE0NCk7CisgICAgXzQ0MDAt
PmFkZCgzMDcpOworICAgIF80NDAwLT5hZGQoMzM0KTsKKyAgICBfNDQwMC0+YWRkKDMxMik7Cisg
ICAgXzQ0MDAtPmFkZCg0Nik7CisgICAgXzQ0MDAtPmFkZCgxNzEpOworICAgIF80NDAwLT5hZGQo
MzA1KTsKKyAgICBfNDQwMC0+YWRkKDI4MCk7CisgICAgXzQ0MDAtPmFkZCgxMDMpOworICAgIF80
NDAwLT5hZGQoNSk7CisgICAgXzQ0MDAtPmFkZCgzMTApOworICAgIF80NDAwLT5hZGQoNDkpOwor
ICAgIF80NDAwLT5hZGQoNjcpOworICAgIF80NDAwLT5hZGQoMzA4KTsKKyAgICBfNDQwMC0+YWRk
KDU2KTsKKyAgICBfNDQwMC0+YWRkKDQxKTsKKyAgICBfNDQwMC0+YWRkKDI3KTsKKyAgICBfNDQw
MC0+YWRkKDk3KTsKKyAgICBfNDQwMC0+YWRkKDU5KTsKKyAgICBfNDQwMC0+YWRkKDE0Myk7Cisg
ICAgXzQ0MDAtPmFkZCgyMTMpOworICAgIF80NDAwLT5hZGQoMjcwKTsKKyAgICBfNDQwMy0+YWRk
KDMzMyk7CisgICAgXzQ0MDMtPmFkZCgzNSk7CisgICAgXzQ0MDMtPmFkZCg0NCk7CisgICAgXzQ0
MDMtPmFkZCgxNDQpOworICAgIF80NDAzLT5hZGQoMzA3KTsKKyAgICBfNDQwMy0+YWRkKDMzNCk7
CisgICAgXzQ0MDMtPmFkZCgzMTIpOworICAgIF80NDAzLT5hZGQoNDYpOworICAgIF80NDAzLT5h
ZGQoMTcxKTsKKyAgICBfNDQwMy0+YWRkKDMwNSk7CisgICAgXzQ0MDMtPmFkZCgyODApOworICAg
IF80NDAzLT5hZGQoMTAzKTsKKyAgICBfNDQwMy0+YWRkKDUpOworICAgIF80NDAzLT5hZGQoMzEw
KTsKKyAgICBfNDQwMy0+YWRkKDQ5KTsKKyAgICBfNDQwMy0+YWRkKDY3KTsKKyAgICBfNDQwMy0+
YWRkKDMwOCk7CisgICAgXzQ0MDMtPmFkZCg1Nik7CisgICAgXzQ0MDMtPmFkZCg0MSk7CisgICAg
XzQ0MDMtPmFkZCgyNyk7CisgICAgXzQ0MDMtPmFkZCg5Nyk7CisgICAgXzQ0MDMtPmFkZCg1OSk7
CisgICAgXzQ0MDMtPmFkZCgxNDMpOworICAgIF80NDAzLT5hZGQoMjEzKTsKKyAgICBfNDQwMy0+
YWRkKDI4NSk7CisgICAgXzQzOTgtPmFkZCgzMzMpOworICAgIF80Mzk4LT5hZGQoOTcpOworICAg
IF80Mzk4LT5hZGQoMzUpOworICAgIF80Mzk4LT5hZGQoNDQpOworICAgIF80Mzk4LT5hZGQoNDEp
OworICAgIF80Mzk4LT5hZGQoMzM0KTsKKyAgICBfNDM5OC0+YWRkKDQ2KTsKKyAgICBfNDM5OC0+
YWRkKDU2KTsKKyAgICBfNDM5OC0+YWRkKDIwNSk7CisgICAgXzQzOTgtPmFkZCgyODApOworICAg
IF80Mzk4LT5hZGQoMTAzKTsKKyAgICBfNDM5OC0+YWRkKDUpOworICAgIF80Mzk4LT5hZGQoMzEw
KTsKKyAgICBfNDM5OC0+YWRkKDQ5KTsKKyAgICBfNDM5OC0+YWRkKDY3KTsKKyAgICBfNDM5OC0+
YWRkKDMwOCk7CisgICAgXzQzOTgtPmFkZCgzMTIpOworICAgIF80Mzk4LT5hZGQoMjcwKTsKKyAg
ICBfNDM5OC0+YWRkKDMwNyk7CisgICAgXzQzOTgtPmFkZCgyNyk7CisgICAgXzQzOTgtPmFkZCgz
MDUpOworICAgIF80Mzk4LT5hZGQoNTkpOworICAgIF80Mzk4LT5hZGQoMTQzKTsKKyAgICBfNDM5
OC0+YWRkKDIzOCk7CisgICAgXzQzOTgtPmFkZCgxNDQpOworICAgIF80Mzk4LT5hZGQoMTk0KTsK
KyAgICBfNDM5OC0+YWRkKDE3MCk7CisgICAgXzQzOTgtPmFkZCgxNjYpOworICAgIF80Mzk4LT5h
ZGQoMzMzKTsKKyAgICBfNDM5OC0+YWRkKDI4MCk7CisgICAgXzQzOTgtPmFkZCg0Nik7CisgICAg
XzQzOTgtPmFkZCgxMDMpOworICAgIF80Mzk4LT5hZGQoMzUpOworICAgIF80Mzk4LT5hZGQoNSk7
CisgICAgXzQzOTgtPmFkZCg0OSk7CisgICAgXzQzOTgtPmFkZCg2Nyk7CisgICAgXzQzOTgtPmFk
ZCg1Nik7CisgICAgXzQzOTgtPmFkZCg0MSk7CisgICAgXzQzOTgtPmFkZCgyNyk7CisgICAgXzQz
OTgtPmFkZCg5Nyk7CisgICAgXzQzOTgtPmFkZCgzMzQpOworICAgIF80Mzk4LT5hZGQoNTkpOwor
ICAgIF80Mzk4LT5hZGQoMTQ3KTsKKyAgICBfNDM5Ny0+YWRkKDMzMyk7CisgICAgXzQzOTctPmFk
ZCgyMzgpOworICAgIF80Mzk3LT5hZGQoMzUpOworICAgIF80Mzk3LT5hZGQoNDQpOworICAgIF80
Mzk3LT5hZGQoMTY2KTsKKyAgICBfNDM5Ny0+YWRkKDE0Myk7CisgICAgXzQzOTctPmFkZCgzMDcp
OworICAgIF80Mzk3LT5hZGQoMzM0KTsKKyAgICBfNDM5Ny0+YWRkKDMxMik7CisgICAgXzQzOTct
PmFkZCg0Nik7CisgICAgXzQzOTctPmFkZCgzMDUpOworICAgIF80Mzk3LT5hZGQoNTkpOworICAg
IF80Mzk3LT5hZGQoMTcwKTsKKyAgICBfNDM5Ny0+YWRkKDEwMyk7CisgICAgXzQzOTctPmFkZCg1
KTsKKyAgICBfNDM5Ny0+YWRkKDMxMCk7CisgICAgXzQzOTctPmFkZCg0OSk7CisgICAgXzQzOTct
PmFkZCgxOTQpOworICAgIF80Mzk3LT5hZGQoMjA1KTsKKyAgICBfNDM5Ny0+YWRkKDY3KTsKKyAg
ICBfNDM5Ny0+YWRkKDMwOCk7CisgICAgXzQzOTctPmFkZCg1Nik7CisgICAgXzQzOTctPmFkZCgy
NzApOworICAgIF80Mzk3LT5hZGQoNDEpOworICAgIF80Mzk3LT5hZGQoMjcpOworICAgIF80Mzk3
LT5hZGQoMzg1KTsKKyAgICBfNDM5Ni0+YWRkKDMzMyk7CisgICAgXzQzOTYtPmFkZCgyMzgpOwor
ICAgIF80Mzk2LT5hZGQoMzUpOworICAgIF80Mzk2LT5hZGQoNDQpOworICAgIF80Mzk2LT5hZGQo
MTY2KTsKKyAgICBfNDM5Ni0+YWRkKDE0Myk7CisgICAgXzQzOTYtPmFkZCgzMDcpOworICAgIF80
Mzk2LT5hZGQoMzM0KTsKKyAgICBfNDM5Ni0+YWRkKDMxMik7CisgICAgXzQzOTYtPmFkZCg0Nik7
CisgICAgXzQzOTYtPmFkZCgzMDUpOworICAgIF80Mzk2LT5hZGQoNTkpOworICAgIF80Mzk2LT5h
ZGQoMTcwKTsKKyAgICBfNDM5Ni0+YWRkKDEwMyk7CisgICAgXzQzOTYtPmFkZCg1KTsKKyAgICBf
NDM5Ni0+YWRkKDMxMCk7CisgICAgXzQzOTYtPmFkZCg0OSk7CisgICAgXzQzOTYtPmFkZCgxOTQp
OworICAgIF80Mzk2LT5hZGQoMjA1KTsKKyAgICBfNDM5Ni0+YWRkKDY3KTsKKyAgICBfNDM5Ni0+
YWRkKDMwOCk7CisgICAgXzQzOTYtPmFkZCg1Nik7CisgICAgXzQzOTYtPmFkZCgyNzApOworICAg
IF80Mzk2LT5hZGQoNDEpOworICAgIF80Mzk2LT5hZGQoMjcpOworICAgIF80Mzk2LT5hZGQoMzg1
KTsKKyAgICBfNDM5NS0+YWRkKDMzMyk7CisgICAgXzQzOTUtPmFkZCg0OSk7CisgICAgXzQzOTUt
PmFkZCgzMTApOworICAgIF80Mzk1LT5hZGQoMzUpOworICAgIF80Mzk1LT5hZGQoNDQpOworICAg
IF80Mzk1LT5hZGQoNDEpOworICAgIF80Mzk1LT5hZGQoMjA1KTsKKyAgICBfNDM5NS0+YWRkKDQ2
KTsKKyAgICBfNDM5NS0+YWRkKDU5KTsKKyAgICBfNDM5NS0+YWRkKDE3MCk7CisgICAgXzQzOTUt
PmFkZCgxMDMpOworICAgIF80Mzk1LT5hZGQoNSk7CisgICAgXzQzOTUtPmFkZCgxNjYpOworICAg
IF80Mzk1LT5hZGQoMTQzKTsKKyAgICBfNDM5NS0+YWRkKDE5NCk7CisgICAgXzQzOTUtPmFkZCgy
MzgpOworICAgIF80Mzk1LT5hZGQoNjcpOworICAgIF80Mzk1LT5hZGQoMzA4KTsKKyAgICBfNDM5
NS0+YWRkKDMxMik7CisgICAgXzQzOTUtPmFkZCg1Nik7CisgICAgXzQzOTUtPmFkZCgyNzApOwor
ICAgIF80Mzk1LT5hZGQoMzA3KTsKKyAgICBfNDM5NS0+YWRkKDI3KTsKKyAgICBfNDM5NS0+YWRk
KDMwNSk7CisgICAgXzQzOTUtPmFkZCg0OCk7CisgICAgXzQ0MTAtPmFkZCgzMzMpOworICAgIF80
NDEwLT5hZGQoNDkpOworICAgIF80NDEwLT5hZGQoMzEwKTsKKyAgICBfNDQxMC0+YWRkKDM1KTsK
KyAgICBfNDQxMC0+YWRkKDQ0KTsKKyAgICBfNDQxMC0+YWRkKDQxKTsKKyAgICBfNDQxMC0+YWRk
KDIwNSk7CisgICAgXzQ0MTAtPmFkZCg0Nik7CisgICAgXzQ0MTAtPmFkZCgxNDMpOworICAgIF80
NDEwLT5hZGQoMTcwKTsKKyAgICBfNDQxMC0+YWRkKDEwMyk7CisgICAgXzQ0MTAtPmFkZCg1KTsK
KyAgICBfNDQxMC0+YWRkKDE2Nik7CisgICAgXzQ0MTAtPmFkZCgzMzQpOworICAgIF80NDEwLT5h
ZGQoMTk0KTsKKyAgICBfNDQxMC0+YWRkKDIzOCk7CisgICAgXzQ0MTAtPmFkZCg2Nyk7CisgICAg
XzQ0MTAtPmFkZCgzMDgpOworICAgIF80NDEwLT5hZGQoMzEyKTsKKyAgICBfNDQxMC0+YWRkKDU2
KTsKKyAgICBfNDQxMC0+YWRkKDI3MCk7CisgICAgXzQ0MTAtPmFkZCgzMDcpOworICAgIF80NDEw
LT5hZGQoMjcpOworICAgIF80NDEwLT5hZGQoMzA1KTsKKyAgICBfNDQxMC0+YWRkKDU5KTsKKyAg
ICBfNDQxMC0+YWRkKDE0Nik7CisgICAgXzQ0MDgtPmFkZCgzMzMpOworICAgIF80NDA4LT5hZGQo
MjcpOworICAgIF80NDA4LT5hZGQoMzUpOworICAgIF80NDA4LT5hZGQoNDQpOworICAgIF80NDA4
LT5hZGQoMTY2KTsKKyAgICBfNDQwOC0+YWRkKDE0Myk7CisgICAgXzQ0MDgtPmFkZCgzMDcpOwor
ICAgIF80NDA4LT5hZGQoMjA1KTsKKyAgICBfNDQwOC0+YWRkKDI3MCk7CisgICAgXzQ0MDgtPmFk
ZCgzMDUpOworICAgIF80NDA4LT5hZGQoMTcwKTsKKyAgICBfNDQwOC0+YWRkKDEwMyk7CisgICAg
XzQ0MDgtPmFkZCgzMDgpOworICAgIF80NDA4LT5hZGQoMzEwKTsKKyAgICBfNDQwOC0+YWRkKDMz
NCk7CisgICAgXzQ0MDgtPmFkZCgxOTQpOworICAgIF80NDA4LT5hZGQoMjM4KTsKKyAgICBfNDQw
OC0+YWRkKDMxMik7CisgICAgXzQ0MDctPmFkZCgzMzMpOworICAgIF80NDA3LT5hZGQoMjM4KTsK
KyAgICBfNDQwNy0+YWRkKDMxMCk7CisgICAgXzQ0MDctPmFkZCgyNzApOworICAgIF80NDA3LT5h
ZGQoNDQpOworICAgIF80NDA3LT5hZGQoMTQzKTsKKyAgICBfNDQwNy0+YWRkKDMxMik7CisgICAg
XzQ0MDctPmFkZCgzMDgpOworICAgIF80NDA3LT5hZGQoMzA1KTsKKyAgICBfNDQwNy0+YWRkKDMz
NCk7CisgICAgXzQ0MDctPmFkZCgxNzApOworICAgIF80NDA3LT5hZGQoMzA3KTsKKyAgICBfNDQw
Ny0+YWRkKDIwNSk7CisgICAgXzQ0MDctPmFkZCgxNjYpOworICAgIF80NDA3LT5hZGQoMTk0KTsK
KyAgICBfNDM5OS0+YWRkKDMxMCk7CisgICAgXzQzOTktPmFkZCgyMzgpOworICAgIF80Mzk5LT5h
ZGQoNDQpOworICAgIF80Mzk5LT5hZGQoMTY2KTsKKyAgICBfNDM5OS0+YWRkKDMwNyk7CisgICAg
XzQzOTktPmFkZCgzMDgpOworICAgIF80Mzk5LT5hZGQoMjA1KTsKKyAgICBfNDM5OS0+YWRkKDMx
Mik7CisgICAgXzQzOTktPmFkZCgyNzApOworICAgIF80Mzk5LT5hZGQoMTQzKTsKKyAgICBfNDM5
OS0+YWRkKDMwNSk7CisgICAgXzQzOTktPmFkZCgxOTQpOworICAgIF80Mzk5LT5hZGQoMTcwKTsK
KyAgICBfNDQwNi0+YWRkKDMxMCk7CisgICAgXzQ0MDYtPmFkZCgyMzgpOworICAgIF80NDA2LT5h
ZGQoNDQpOworICAgIF80NDA2LT5hZGQoMTY2KTsKKyAgICBfNDQwNi0+YWRkKDMwNyk7CisgICAg
XzQ0MDYtPmFkZCgzMDgpOworICAgIF80NDA2LT5hZGQoMjA1KTsKKyAgICBfNDQwNi0+YWRkKDMx
Mik7CisgICAgXzQ0MDYtPmFkZCgyNzApOworICAgIF80NDA2LT5hZGQoMTQzKTsKKyAgICBfNDQw
Ni0+YWRkKDMwNSk7CisgICAgXzQ0MDYtPmFkZCgxOTQpOworICAgIF80NDA2LT5hZGQoMTcwKTsK
KyAgICBfNDQwNC0+YWRkKDE3MCk7CisgICAgXzQ0MDQtPmFkZCgyNzApOworICAgIF80NDA0LT5h
ZGQoMjM4KTsKKyAgICBfNDQwNC0+YWRkKDQ0KTsKKyAgICBfNDQwNC0+YWRkKDE2Nik7CisgICAg
XzQ0MDQtPmFkZCgyMDUpOworICAgIF80NDA0LT5hZGQoMTk0KTsKKyAgICBfNDQwNS0+YWRkKDE3
MCk7CisgICAgXzQ0MDUtPmFkZCgyNzApOworICAgIF80NDA1LT5hZGQoMjM4KTsKKyAgICBfNDQw
NS0+YWRkKDQ0KTsKKyAgICBfNDQwNS0+YWRkKDE2Nik7CisgICAgXzQ0MDUtPmFkZCgyMDUpOwor
ICAgIF80NDA1LT5hZGQoMTk0KTsKKyAgICBfNDQwMC0+YWRkKDIzOCk7CisgICAgXzQ0MDAtPmFk
ZCgxNzApOworICAgIF80NDAwLT5hZGQoNDQpOworICAgIF80NDAwLT5hZGQoMTY2KTsKKyAgICBf
NDQwMC0+YWRkKDI3MCk7CisgICAgXzQ0MDAtPmFkZCgxOTQpOworICAgIF80NDAwLT5hZGQoMjA1
KTsKKyAgICBfNDQwMy0+YWRkKDIzOCk7CisgICAgXzQ0MDMtPmFkZCgxNzApOworICAgIF80NDAz
LT5hZGQoNDQpOworICAgIF80NDAzLT5hZGQoMTY2KTsKKyAgICBfNDQwMy0+YWRkKDI3MCk7Cisg
ICAgXzQ0MDMtPmFkZCgxOTQpOworICAgIF80NDAzLT5hZGQoMjA1KTsKKyAgICBfNDQwMi0+YWRk
KDIzOCk7CisgICAgXzQ0MDItPmFkZCgyMDUpOworICAgIF80NDAyLT5hZGQoMTk0KTsKKyAgICBf
NDQwMi0+YWRkKDI3MCk7CisgICAgXzQ0MDItPmFkZCgxNzApOworICAgIF80NDAyLT5hZGQoMTY2
KTsKKyAgICBfNDQwMS0+YWRkKDIzOCk7CisgICAgXzQ0MDEtPmFkZCgyMDUpOworICAgIF80NDAx
LT5hZGQoMTk0KTsKKyAgICBfNDQwMS0+YWRkKDI3MCk7CisgICAgXzQ0MDEtPmFkZCgxNzApOwor
ICAgIF80NDAxLT5hZGQoMTY2KTsKKyAgICBfNDQwMC0+YWRkKDE5NCk7CisgICAgXzQ0MDAtPmFk
ZCgyMDUpOworICAgIF80NDAwLT5hZGQoMTcwKTsKKyAgICBfNDQwMC0+YWRkKDIzOCk7CisgICAg
XzQ0MDAtPmFkZCgxNjYpOworICAgIF80NDAzLT5hZGQoMjM4KTsKKyAgICBfNDQwMy0+YWRkKDIw
NSk7CisgICAgXzQ0MDMtPmFkZCgxOTQpOworICAgIF80NDAzLT5hZGQoMjcwKTsKKyAgICBfNDQw
My0+YWRkKDE2Nik7CisgICAgXzQ0MDMtPmFkZCgxNzApOworICAgIF80Mzk4LT5hZGQoMTcwKTsK
KyAgICBfNDM5OC0+YWRkKDE0Myk7CisgICAgXzQzOTgtPmFkZCgyNzApOworICAgIF80Mzk4LT5h
ZGQoNDQpOworICAgIF80Mzk4LT5hZGQoMTY2KTsKKyAgICBfNDM5OC0+YWRkKDMwNyk7CisgICAg
XzQzOTgtPmFkZCgyMzgpOworICAgIF80Mzk4LT5hZGQoMjA1KTsKKyAgICBfNDM5OC0+YWRkKDMw
OCk7CisgICAgXzQzOTgtPmFkZCgzMTIpOworICAgIF80Mzk4LT5hZGQoMTk0KTsKKyAgICBfNDM5
OC0+YWRkKDMwNSk7CisgICAgXzQzOTgtPmFkZCgzMTApOworICAgIGRlbGV0ZSBfNDM5NTsKKyAg
ICBkZWxldGUgXzQzOTY7CisgICAgZGVsZXRlIF80Mzk3OworICAgIGRlbGV0ZSBfNDM5ODsKKyAg
ICBkZWxldGUgXzQzOTk7CisgICAgZGVsZXRlIF80NDAwOworICAgIGRlbGV0ZSBfNDQwMTsKKyAg
ICBkZWxldGUgXzQ0MDI7CisgICAgZGVsZXRlIF80NDAzOworICAgIGRlbGV0ZSBfNDQwNDsKKyAg
ICBkZWxldGUgXzQ0MDU7CisgICAgZGVsZXRlIF80NDA2OworICAgIGRlbGV0ZSBfNDQwNzsKKyAg
ICBkZWxldGUgXzQ0MDg7CisgICAgZGVsZXRlIF80NDA5OworICAgIGRlbGV0ZSBfNDQxMDsKKyAg
ICBkZWxldGUgXzQ0MTE7CisgICAgZGVsZXRlIF80NDEyOworICAgIGRlbGV0ZSBfNDQxMzsKKyAg
ICBhdXRvKiBfNDQxNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NDE1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ0MTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQxNyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDE4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MTkgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQyMCA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDIxID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MjIgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQy
MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80NDI0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ0MjUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDQyNiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NDI3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ0MjggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQyOSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDMwID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MzEgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQzMiA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIF80NDMwLT5hZGQoNSk7Cisg
ICAgXzQ0MzAtPmFkZCg0MSk7CisgICAgXzQ0MzEtPmFkZCg1KTsKKyAgICBfNDQzMS0+YWRkKDQx
KTsKKyAgICBfNDQxNC0+YWRkKDUpOworICAgIF80NDE0LT5hZGQoNDEpOworICAgIF80NDI5LT5h
ZGQoNSk7CisgICAgXzQ0MjktPmFkZCg0MSk7CisgICAgXzQ0MjctPmFkZCg1KTsKKyAgICBfNDQy
Ny0+YWRkKDQxKTsKKyAgICBfNDQyNy0+YWRkKDQ5KTsKKyAgICBfNDQyNy0+YWRkKDY3KTsKKyAg
ICBfNDQyNy0+YWRkKDQ2KTsKKyAgICBfNDQyNy0+YWRkKDU5KTsKKyAgICBfNDQyNy0+YWRkKDU2
KTsKKyAgICBfNDQyNy0+YWRkKDM4OSk7CisgICAgXzQ0MjYtPmFkZCg0Nik7CisgICAgXzQ0MjYt
PmFkZCg1KTsKKyAgICBfNDQyNi0+YWRkKDQ5KTsKKyAgICBfNDQyNi0+YWRkKDY3KTsKKyAgICBf
NDQyNi0+YWRkKDU2KTsKKyAgICBfNDQyNi0+YWRkKDQxKTsKKyAgICBfNDQyNi0+YWRkKDU5KTsK
KyAgICBfNDQyNi0+YWRkKDI4MCk7CisgICAgXzQ0MjYtPmFkZCgxMDMpOworICAgIF80NDI2LT5h
ZGQoMjcpOworICAgIF80NDI2LT5hZGQoMzUpOworICAgIF80NDI2LT5hZGQoMjc1KTsKKyAgICBf
NDQyNi0+YWRkKDk3KTsKKyAgICBfNDQxOC0+YWRkKDk3KTsKKyAgICBfNDQxOC0+YWRkKDI4MCk7
CisgICAgXzQ0MTgtPmFkZCgxMDMpOworICAgIF80NDE4LT5hZGQoMzUpOworICAgIF80NDE4LT5h
ZGQoNSk7CisgICAgXzQ0MTgtPmFkZCg0OSk7CisgICAgXzQ0MTgtPmFkZCg2Nyk7CisgICAgXzQ0
MTgtPmFkZCg1Nik7CisgICAgXzQ0MTgtPmFkZCg0MSk7CisgICAgXzQ0MTgtPmFkZCgyNyk7Cisg
ICAgXzQ0MTgtPmFkZCg1OSk7CisgICAgXzQ0MTgtPmFkZCg0Nik7CisgICAgXzQ0MTgtPmFkZCgz
MzQpOworICAgIF80NDE4LT5hZGQoMzg4KTsKKyAgICBfNDQyNS0+YWRkKDk3KTsKKyAgICBfNDQy
NS0+YWRkKDI4MCk7CisgICAgXzQ0MjUtPmFkZCgxMDMpOworICAgIF80NDI1LT5hZGQoMzUpOwor
ICAgIF80NDI1LT5hZGQoNSk7CisgICAgXzQ0MjUtPmFkZCg0OSk7CisgICAgXzQ0MjUtPmFkZCg2
Nyk7CisgICAgXzQ0MjUtPmFkZCg1Nik7CisgICAgXzQ0MjUtPmFkZCg0MSk7CisgICAgXzQ0MjUt
PmFkZCgyNyk7CisgICAgXzQ0MjUtPmFkZCg1OSk7CisgICAgXzQ0MjUtPmFkZCg0Nik7CisgICAg
XzQ0MjUtPmFkZCgzMzQpOworICAgIF80NDI1LT5hZGQoMzg4KTsKKyAgICBfNDQyMy0+YWRkKDI4
MCk7CisgICAgXzQ0MjMtPmFkZCgxMDMpOworICAgIF80NDIzLT5hZGQoMzUpOworICAgIF80NDIz
LT5hZGQoNSk7CisgICAgXzQ0MjMtPmFkZCg0OSk7CisgICAgXzQ0MjMtPmFkZCg2Nyk7CisgICAg
XzQ0MjMtPmFkZCg1Nik7CisgICAgXzQ0MjMtPmFkZCg0MSk7CisgICAgXzQ0MjMtPmFkZCgyNyk7
CisgICAgXzQ0MjMtPmFkZCg5Nyk7CisgICAgXzQ0MjMtPmFkZCg0Nik7CisgICAgXzQ0MjMtPmFk
ZCgzMzQpOworICAgIF80NDIzLT5hZGQoNTkpOworICAgIF80NDIzLT5hZGQoMjEzKTsKKyAgICBf
NDQyMy0+YWRkKDE0NCk7CisgICAgXzQ0MjMtPmFkZCgzMTIpOworICAgIF80NDIzLT5hZGQoMzA4
KTsKKyAgICBfNDQyMy0+YWRkKDMwNSk7CisgICAgXzQ0MjMtPmFkZCgzMTApOworICAgIF80NDIz
LT5hZGQoMzA3KTsKKyAgICBfNDQyMy0+YWRkKDE0Myk7CisgICAgXzQ0MjQtPmFkZCgyODApOwor
ICAgIF80NDI0LT5hZGQoMTAzKTsKKyAgICBfNDQyNC0+YWRkKDM1KTsKKyAgICBfNDQyNC0+YWRk
KDUpOworICAgIF80NDI0LT5hZGQoNDkpOworICAgIF80NDI0LT5hZGQoNjcpOworICAgIF80NDI0
LT5hZGQoNTYpOworICAgIF80NDI0LT5hZGQoNDEpOworICAgIF80NDI0LT5hZGQoMjcpOworICAg
IF80NDI0LT5hZGQoOTcpOworICAgIF80NDI0LT5hZGQoNDYpOworICAgIF80NDI0LT5hZGQoMzM0
KTsKKyAgICBfNDQyNC0+YWRkKDU5KTsKKyAgICBfNDQyNC0+YWRkKDIxMyk7CisgICAgXzQ0MjQt
PmFkZCgxNDQpOworICAgIF80NDI0LT5hZGQoMzEyKTsKKyAgICBfNDQyNC0+YWRkKDMwOCk7Cisg
ICAgXzQ0MjQtPmFkZCgzMDUpOworICAgIF80NDI0LT5hZGQoMzEwKTsKKyAgICBfNDQyNC0+YWRk
KDMwNyk7CisgICAgXzQ0MjQtPmFkZCgxNDMpOworICAgIF80NDE5LT5hZGQoMzUpOworICAgIF80
NDE5LT5hZGQoMzA3KTsKKyAgICBfNDQxOS0+YWRkKDMzNCk7CisgICAgXzQ0MTktPmFkZCg0Nik7
CisgICAgXzQ0MTktPmFkZCg1Nik7CisgICAgXzQ0MTktPmFkZCg1OSk7CisgICAgXzQ0MTktPmFk
ZCgzMDUpOworICAgIF80NDE5LT5hZGQoMjgwKTsKKyAgICBfNDQxOS0+YWRkKDEwMyk7CisgICAg
XzQ0MTktPmFkZCg1KTsKKyAgICBfNDQxOS0+YWRkKDMxMCk7CisgICAgXzQ0MTktPmFkZCg0OSk7
CisgICAgXzQ0MTktPmFkZCg2Nyk7CisgICAgXzQ0MTktPmFkZCgzMDgpOworICAgIF80NDE5LT5h
ZGQoMzEyKTsKKyAgICBfNDQxOS0+YWRkKDQxKTsKKyAgICBfNDQxOS0+YWRkKDI3KTsKKyAgICBf
NDQxOS0+YWRkKDk3KTsKKyAgICBfNDQxOS0+YWRkKDE0Myk7CisgICAgXzQ0MTktPmFkZCgyMTMp
OworICAgIF80NDE5LT5hZGQoMTQ0KTsKKyAgICBfNDQyMi0+YWRkKDM1KTsKKyAgICBfNDQyMi0+
YWRkKDMwNyk7CisgICAgXzQ0MjItPmFkZCgzMzQpOworICAgIF80NDIyLT5hZGQoNDYpOworICAg
IF80NDIyLT5hZGQoNTYpOworICAgIF80NDIyLT5hZGQoNTkpOworICAgIF80NDIyLT5hZGQoMzA1
KTsKKyAgICBfNDQyMi0+YWRkKDI4MCk7CisgICAgXzQ0MjItPmFkZCgxMDMpOworICAgIF80NDIy
LT5hZGQoNSk7CisgICAgXzQ0MjItPmFkZCgzMTApOworICAgIF80NDIyLT5hZGQoNDkpOworICAg
IF80NDIyLT5hZGQoNjcpOworICAgIF80NDIyLT5hZGQoMzA4KTsKKyAgICBfNDQyMi0+YWRkKDMx
Mik7CisgICAgXzQ0MjItPmFkZCg0MSk7CisgICAgXzQ0MjItPmFkZCgyNyk7CisgICAgXzQ0MjIt
PmFkZCg5Nyk7CisgICAgXzQ0MjItPmFkZCgxNDMpOworICAgIF80NDIyLT5hZGQoMjEzKTsKKyAg
ICBfNDQyMi0+YWRkKDE0NCk7CisgICAgXzQ0MjEtPmFkZCg5Nyk7CisgICAgXzQ0MjEtPmFkZCgz
NSk7CisgICAgXzQ0MjEtPmFkZCg0MSk7CisgICAgXzQ0MjEtPmFkZCgzMzQpOworICAgIF80NDIx
LT5hZGQoNDYpOworICAgIF80NDIxLT5hZGQoNTYpOworICAgIF80NDIxLT5hZGQoMjgwKTsKKyAg
ICBfNDQyMS0+YWRkKDEwMyk7CisgICAgXzQ0MjEtPmFkZCg1KTsKKyAgICBfNDQyMS0+YWRkKDMx
MCk7CisgICAgXzQ0MjEtPmFkZCg0OSk7CisgICAgXzQ0MjEtPmFkZCg2Nyk7CisgICAgXzQ0MjEt
PmFkZCgzMDgpOworICAgIF80NDIxLT5hZGQoMzEyKTsKKyAgICBfNDQyMS0+YWRkKDMwNyk7Cisg
ICAgXzQ0MjEtPmFkZCgyNyk7CisgICAgXzQ0MjEtPmFkZCgzMDUpOworICAgIF80NDIxLT5hZGQo
NTkpOworICAgIF80NDIxLT5hZGQoMTQzKTsKKyAgICBfNDQyMS0+YWRkKDIxMyk7CisgICAgXzQ0
MjEtPmFkZCgxNDQpOworICAgIF80NDIxLT5hZGQoNDQpOworICAgIF80NDIxLT5hZGQoMTcxKTsK
KyAgICBfNDQyMS0+YWRkKDM4Nyk7CisgICAgXzQ0MjAtPmFkZCg5Nyk7CisgICAgXzQ0MjAtPmFk
ZCgzNSk7CisgICAgXzQ0MjAtPmFkZCg0MSk7CisgICAgXzQ0MjAtPmFkZCgzMzQpOworICAgIF80
NDIwLT5hZGQoNDYpOworICAgIF80NDIwLT5hZGQoNTYpOworICAgIF80NDIwLT5hZGQoMjgwKTsK
KyAgICBfNDQyMC0+YWRkKDEwMyk7CisgICAgXzQ0MjAtPmFkZCg1KTsKKyAgICBfNDQyMC0+YWRk
KDMxMCk7CisgICAgXzQ0MjAtPmFkZCg0OSk7CisgICAgXzQ0MjAtPmFkZCg2Nyk7CisgICAgXzQ0
MjAtPmFkZCgzMDgpOworICAgIF80NDIwLT5hZGQoMzEyKTsKKyAgICBfNDQyMC0+YWRkKDMwNyk7
CisgICAgXzQ0MjAtPmFkZCgyNyk7CisgICAgXzQ0MjAtPmFkZCgzMDUpOworICAgIF80NDIwLT5h
ZGQoNTkpOworICAgIF80NDIwLT5hZGQoMTQzKTsKKyAgICBfNDQyMC0+YWRkKDIxMyk7CisgICAg
XzQ0MjAtPmFkZCgxNDQpOworICAgIF80NDIwLT5hZGQoNDQpOworICAgIF80NDIwLT5hZGQoMTcx
KTsKKyAgICBfNDQyMC0+YWRkKDM4Nyk7CisgICAgXzQ0MTktPmFkZCgxNDQpOworICAgIF80NDE5
LT5hZGQoMzUpOworICAgIF80NDE5LT5hZGQoNDQpOworICAgIF80NDE5LT5hZGQoMjEzKTsKKyAg
ICBfNDQxOS0+YWRkKDMwNyk7CisgICAgXzQ0MTktPmFkZCgzMzQpOworICAgIF80NDE5LT5hZGQo
MzEyKTsKKyAgICBfNDQxOS0+YWRkKDQ2KTsKKyAgICBfNDQxOS0+YWRkKDE3MSk7CisgICAgXzQ0
MTktPmFkZCgzMDUpOworICAgIF80NDE5LT5hZGQoMjgwKTsKKyAgICBfNDQxOS0+YWRkKDEwMyk7
CisgICAgXzQ0MTktPmFkZCg1KTsKKyAgICBfNDQxOS0+YWRkKDMxMCk7CisgICAgXzQ0MTktPmFk
ZCg0OSk7CisgICAgXzQ0MTktPmFkZCg2Nyk7CisgICAgXzQ0MTktPmFkZCgzMDgpOworICAgIF80
NDE5LT5hZGQoNTYpOworICAgIF80NDE5LT5hZGQoNDEpOworICAgIF80NDE5LT5hZGQoMjcpOwor
ICAgIF80NDE5LT5hZGQoOTcpOworICAgIF80NDE5LT5hZGQoMTQzKTsKKyAgICBfNDQxOS0+YWRk
KDU5KTsKKyAgICBfNDQxOS0+YWRkKDI3MCk7CisgICAgXzQ0MjItPmFkZCgxNDQpOworICAgIF80
NDIyLT5hZGQoMzUpOworICAgIF80NDIyLT5hZGQoNDQpOworICAgIF80NDIyLT5hZGQoMjEzKTsK
KyAgICBfNDQyMi0+YWRkKDMwNyk7CisgICAgXzQ0MjItPmFkZCgzMzQpOworICAgIF80NDIyLT5h
ZGQoMzEyKTsKKyAgICBfNDQyMi0+YWRkKDQ2KTsKKyAgICBfNDQyMi0+YWRkKDE3MSk7CisgICAg
XzQ0MjItPmFkZCgzMDUpOworICAgIF80NDIyLT5hZGQoMjgwKTsKKyAgICBfNDQyMi0+YWRkKDEw
Myk7CisgICAgXzQ0MjItPmFkZCg1KTsKKyAgICBfNDQyMi0+YWRkKDMxMCk7CisgICAgXzQ0MjIt
PmFkZCg0OSk7CisgICAgXzQ0MjItPmFkZCg2Nyk7CisgICAgXzQ0MjItPmFkZCgzMDgpOworICAg
IF80NDIyLT5hZGQoNTYpOworICAgIF80NDIyLT5hZGQoNDEpOworICAgIF80NDIyLT5hZGQoMjcp
OworICAgIF80NDIyLT5hZGQoOTcpOworICAgIF80NDIyLT5hZGQoMTQzKTsKKyAgICBfNDQyMi0+
YWRkKDU5KTsKKyAgICBfNDQyMi0+YWRkKDI4NSk7CisgICAgXzQ0MTctPmFkZCg5Nyk7CisgICAg
XzQ0MTctPmFkZCgzNSk7CisgICAgXzQ0MTctPmFkZCg0NCk7CisgICAgXzQ0MTctPmFkZCg0MSk7
CisgICAgXzQ0MTctPmFkZCgzMzQpOworICAgIF80NDE3LT5hZGQoNDYpOworICAgIF80NDE3LT5h
ZGQoNTYpOworICAgIF80NDE3LT5hZGQoMjA1KTsKKyAgICBfNDQxNy0+YWRkKDI4MCk7CisgICAg
XzQ0MTctPmFkZCgxMDMpOworICAgIF80NDE3LT5hZGQoNSk7CisgICAgXzQ0MTctPmFkZCgzMTAp
OworICAgIF80NDE3LT5hZGQoNDkpOworICAgIF80NDE3LT5hZGQoNjcpOworICAgIF80NDE3LT5h
ZGQoMzA4KTsKKyAgICBfNDQxNy0+YWRkKDMxMik7CisgICAgXzQ0MTctPmFkZCgyNzApOworICAg
IF80NDE3LT5hZGQoMzA3KTsKKyAgICBfNDQxNy0+YWRkKDI3KTsKKyAgICBfNDQxNy0+YWRkKDMw
NSk7CisgICAgXzQ0MTctPmFkZCg1OSk7CisgICAgXzQ0MTctPmFkZCgxNDMpOworICAgIF80NDE3
LT5hZGQoMjM4KTsKKyAgICBfNDQxNy0+YWRkKDE0NCk7CisgICAgXzQ0MTctPmFkZCgxOTQpOwor
ICAgIF80NDE3LT5hZGQoMTcwKTsKKyAgICBfNDQxNy0+YWRkKDE2Nik7CisgICAgXzQ0MTctPmFk
ZCgyODApOworICAgIF80NDE3LT5hZGQoMTAzKTsKKyAgICBfNDQxNy0+YWRkKDM1KTsKKyAgICBf
NDQxNy0+YWRkKDUpOworICAgIF80NDE3LT5hZGQoNDkpOworICAgIF80NDE3LT5hZGQoNjcpOwor
ICAgIF80NDE3LT5hZGQoNTYpOworICAgIF80NDE3LT5hZGQoNDEpOworICAgIF80NDE3LT5hZGQo
MjcpOworICAgIF80NDE3LT5hZGQoOTcpOworICAgIF80NDE3LT5hZGQoNDYpOworICAgIF80NDE3
LT5hZGQoMzM0KTsKKyAgICBfNDQxNy0+YWRkKDU5KTsKKyAgICBfNDQxNy0+YWRkKDE0Nyk7Cisg
ICAgXzQ0MTYtPmFkZCgyMzgpOworICAgIF80NDE2LT5hZGQoMzUpOworICAgIF80NDE2LT5hZGQo
NDQpOworICAgIF80NDE2LT5hZGQoMTY2KTsKKyAgICBfNDQxNi0+YWRkKDE0Myk7CisgICAgXzQ0
MTYtPmFkZCgzMDcpOworICAgIF80NDE2LT5hZGQoMzM0KTsKKyAgICBfNDQxNi0+YWRkKDMxMik7
CisgICAgXzQ0MTYtPmFkZCg0Nik7CisgICAgXzQ0MTYtPmFkZCgzMDUpOworICAgIF80NDE2LT5h
ZGQoNTkpOworICAgIF80NDE2LT5hZGQoMTcwKTsKKyAgICBfNDQxNi0+YWRkKDEwMyk7CisgICAg
XzQ0MTYtPmFkZCg1KTsKKyAgICBfNDQxNi0+YWRkKDMxMCk7CisgICAgXzQ0MTYtPmFkZCg0OSk7
CisgICAgXzQ0MTYtPmFkZCgxOTQpOworICAgIF80NDE2LT5hZGQoMjA1KTsKKyAgICBfNDQxNi0+
YWRkKDY3KTsKKyAgICBfNDQxNi0+YWRkKDMwOCk7CisgICAgXzQ0MTYtPmFkZCg1Nik7CisgICAg
XzQ0MTYtPmFkZCgyNzApOworICAgIF80NDE2LT5hZGQoNDEpOworICAgIF80NDE2LT5hZGQoMjcp
OworICAgIF80NDE2LT5hZGQoMzg2KTsKKyAgICBfNDQxNS0+YWRkKDIzOCk7CisgICAgXzQ0MTUt
PmFkZCgzNSk7CisgICAgXzQ0MTUtPmFkZCg0NCk7CisgICAgXzQ0MTUtPmFkZCgxNjYpOworICAg
IF80NDE1LT5hZGQoMTQzKTsKKyAgICBfNDQxNS0+YWRkKDMwNyk7CisgICAgXzQ0MTUtPmFkZCgz
MzQpOworICAgIF80NDE1LT5hZGQoMzEyKTsKKyAgICBfNDQxNS0+YWRkKDQ2KTsKKyAgICBfNDQx
NS0+YWRkKDMwNSk7CisgICAgXzQ0MTUtPmFkZCg1OSk7CisgICAgXzQ0MTUtPmFkZCgxNzApOwor
ICAgIF80NDE1LT5hZGQoMTAzKTsKKyAgICBfNDQxNS0+YWRkKDUpOworICAgIF80NDE1LT5hZGQo
MzEwKTsKKyAgICBfNDQxNS0+YWRkKDQ5KTsKKyAgICBfNDQxNS0+YWRkKDE5NCk7CisgICAgXzQ0
MTUtPmFkZCgyMDUpOworICAgIF80NDE1LT5hZGQoNjcpOworICAgIF80NDE1LT5hZGQoMzA4KTsK
KyAgICBfNDQxNS0+YWRkKDU2KTsKKyAgICBfNDQxNS0+YWRkKDI3MCk7CisgICAgXzQ0MTUtPmFk
ZCg0MSk7CisgICAgXzQ0MTUtPmFkZCgyNyk7CisgICAgXzQ0MTUtPmFkZCgzODYpOworICAgIF80
NDE0LT5hZGQoMzMzKTsKKyAgICBfNDQxNC0+YWRkKDMxMCk7CisgICAgXzQ0MTQtPmFkZCgzNSk7
CisgICAgXzQ0MTQtPmFkZCg0NCk7CisgICAgXzQ0MTQtPmFkZCg0MSk7CisgICAgXzQ0MTQtPmFk
ZCgyMDUpOworICAgIF80NDE0LT5hZGQoNDYpOworICAgIF80NDE0LT5hZGQoMTQzKTsKKyAgICBf
NDQxNC0+YWRkKDE3MCk7CisgICAgXzQ0MTQtPmFkZCgxMDMpOworICAgIF80NDE0LT5hZGQoNSk7
CisgICAgXzQ0MTQtPmFkZCgxNjYpOworICAgIF80NDE0LT5hZGQoNDkpOworICAgIF80NDE0LT5h
ZGQoMTk0KTsKKyAgICBfNDQxNC0+YWRkKDIzOCk7CisgICAgXzQ0MTQtPmFkZCg2Nyk7CisgICAg
XzQ0MTQtPmFkZCgzMDgpOworICAgIF80NDE0LT5hZGQoMzEyKTsKKyAgICBfNDQxNC0+YWRkKDU2
KTsKKyAgICBfNDQxNC0+YWRkKDI3MCk7CisgICAgXzQ0MTQtPmFkZCgzMDcpOworICAgIF80NDE0
LT5hZGQoMjcpOworICAgIF80NDE0LT5hZGQoMzA1KTsKKyAgICBfNDQxNC0+YWRkKDU5KTsKKyAg
ICBfNDQxNC0+YWRkKDQ4KTsKKyAgICBfNDQyOS0+YWRkKDE0Myk7CisgICAgXzQ0MjktPmFkZCgz
MTApOworICAgIF80NDI5LT5hZGQoMzUpOworICAgIF80NDI5LT5hZGQoNDQpOworICAgIF80NDI5
LT5hZGQoNDEpOworICAgIF80NDI5LT5hZGQoMjA1KTsKKyAgICBfNDQyOS0+YWRkKDQ2KTsKKyAg
ICBfNDQyOS0+YWRkKDMzNCk7CisgICAgXzQ0MjktPmFkZCgxNzApOworICAgIF80NDI5LT5hZGQo
MTAzKTsKKyAgICBfNDQyOS0+YWRkKDUpOworICAgIF80NDI5LT5hZGQoMTY2KTsKKyAgICBfNDQy
OS0+YWRkKDQ5KTsKKyAgICBfNDQyOS0+YWRkKDE5NCk7CisgICAgXzQ0MjktPmFkZCgyMzgpOwor
ICAgIF80NDI5LT5hZGQoNjcpOworICAgIF80NDI5LT5hZGQoMzA4KTsKKyAgICBfNDQyOS0+YWRk
KDMxMik7CisgICAgXzQ0MjktPmFkZCg1Nik7CisgICAgXzQ0MjktPmFkZCgyNzApOworICAgIF80
NDI5LT5hZGQoMzA3KTsKKyAgICBfNDQyOS0+YWRkKDI3KTsKKyAgICBfNDQyOS0+YWRkKDMwNSk7
CisgICAgXzQ0MjktPmFkZCg1OSk7CisgICAgXzQ0MjktPmFkZCgxNDYpOworICAgIF80NDI3LT5h
ZGQoMzUpOworICAgIF80NDI3LT5hZGQoNDQpOworICAgIF80NDI3LT5hZGQoMTY2KTsKKyAgICBf
NDQyNy0+YWRkKDE0Myk7CisgICAgXzQ0MjctPmFkZCgzMDcpOworICAgIF80NDI3LT5hZGQoMjA1
KTsKKyAgICBfNDQyNy0+YWRkKDI3MCk7CisgICAgXzQ0MjctPmFkZCgzMDUpOworICAgIF80NDI3
LT5hZGQoMzM0KTsKKyAgICBfNDQyNy0+YWRkKDE3MCk7CisgICAgXzQ0MjctPmFkZCgxMDMpOwor
ICAgIF80NDI3LT5hZGQoMzA4KTsKKyAgICBfNDQyNy0+YWRkKDMxMCk7CisgICAgXzQ0MjctPmFk
ZCgyNyk7CisgICAgXzQ0MjctPmFkZCgxOTQpOworICAgIF80NDI3LT5hZGQoMjM4KTsKKyAgICBf
NDQyNy0+YWRkKDMxMik7CisgICAgXzQ0MjYtPmFkZCgyMzgpOworICAgIF80NDI2LT5hZGQoMTQz
KTsKKyAgICBfNDQyNi0+YWRkKDMwNyk7CisgICAgXzQ0MjYtPmFkZCg0NCk7CisgICAgXzQ0MjYt
PmFkZCgzMDgpOworICAgIF80NDI2LT5hZGQoMzEyKTsKKyAgICBfNDQyNi0+YWRkKDIwNSk7Cisg
ICAgXzQ0MjYtPmFkZCgzMTApOworICAgIF80NDI2LT5hZGQoMzM0KTsKKyAgICBfNDQyNi0+YWRk
KDE3MCk7CisgICAgXzQ0MjYtPmFkZCgzMDUpOworICAgIF80NDI2LT5hZGQoMTk0KTsKKyAgICBf
NDQyNi0+YWRkKDE2Nik7CisgICAgXzQ0MjYtPmFkZCgyNzApOworICAgIF80NDE4LT5hZGQoMjM4
KTsKKyAgICBfNDQxOC0+YWRkKDQ0KTsKKyAgICBfNDQxOC0+YWRkKDE2Nik7CisgICAgXzQ0MTgt
PmFkZCgzMDcpOworICAgIF80NDE4LT5hZGQoMzEwKTsKKyAgICBfNDQxOC0+YWRkKDIwNSk7Cisg
ICAgXzQ0MTgtPmFkZCgzMTIpOworICAgIF80NDE4LT5hZGQoMjcwKTsKKyAgICBfNDQxOC0+YWRk
KDE0Myk7CisgICAgXzQ0MTgtPmFkZCgzMDUpOworICAgIF80NDE4LT5hZGQoMTk0KTsKKyAgICBf
NDQxOC0+YWRkKDE3MCk7CisgICAgXzQ0MTgtPmFkZCgzMDgpOworICAgIF80NDI1LT5hZGQoMjM4
KTsKKyAgICBfNDQyNS0+YWRkKDQ0KTsKKyAgICBfNDQyNS0+YWRkKDE2Nik7CisgICAgXzQ0MjUt
PmFkZCgzMDcpOworICAgIF80NDI1LT5hZGQoMzEwKTsKKyAgICBfNDQyNS0+YWRkKDIwNSk7Cisg
ICAgXzQ0MjUtPmFkZCgzMTIpOworICAgIF80NDI1LT5hZGQoMjcwKTsKKyAgICBfNDQyNS0+YWRk
KDE0Myk7CisgICAgXzQ0MjUtPmFkZCgzMDUpOworICAgIF80NDI1LT5hZGQoMTk0KTsKKyAgICBf
NDQyNS0+YWRkKDE3MCk7CisgICAgXzQ0MjUtPmFkZCgzMDgpOworICAgIF80NDIzLT5hZGQoMTY2
KTsKKyAgICBfNDQyMy0+YWRkKDI3MCk7CisgICAgXzQ0MjMtPmFkZCg0NCk7CisgICAgXzQ0MjMt
PmFkZCgxNzApOworICAgIF80NDIzLT5hZGQoMTk0KTsKKyAgICBfNDQyMy0+YWRkKDIwNSk7Cisg
ICAgXzQ0MjMtPmFkZCgyMzgpOworICAgIF80NDI0LT5hZGQoMTY2KTsKKyAgICBfNDQyNC0+YWRk
KDI3MCk7CisgICAgXzQ0MjQtPmFkZCg0NCk7CisgICAgXzQ0MjQtPmFkZCgxNzApOworICAgIF80
NDI0LT5hZGQoMTk0KTsKKyAgICBfNDQyNC0+YWRkKDIwNSk7CisgICAgXzQ0MjQtPmFkZCgyMzgp
OworICAgIF80NDE5LT5hZGQoMjM4KTsKKyAgICBfNDQxOS0+YWRkKDE3MCk7CisgICAgXzQ0MTkt
PmFkZCg0NCk7CisgICAgXzQ0MTktPmFkZCgxNjYpOworICAgIF80NDE5LT5hZGQoMjA1KTsKKyAg
ICBfNDQxOS0+YWRkKDI3MCk7CisgICAgXzQ0MTktPmFkZCgxOTQpOworICAgIF80NDIyLT5hZGQo
MjM4KTsKKyAgICBfNDQyMi0+YWRkKDE3MCk7CisgICAgXzQ0MjItPmFkZCg0NCk7CisgICAgXzQ0
MjItPmFkZCgxNjYpOworICAgIF80NDIyLT5hZGQoMjA1KTsKKyAgICBfNDQyMi0+YWRkKDI3MCk7
CisgICAgXzQ0MjItPmFkZCgxOTQpOworICAgIF80NDIxLT5hZGQoMjA1KTsKKyAgICBfNDQyMS0+
YWRkKDE5NCk7CisgICAgXzQ0MjEtPmFkZCgyNzApOworICAgIF80NDIxLT5hZGQoMTcwKTsKKyAg
ICBfNDQyMS0+YWRkKDE2Nik7CisgICAgXzQ0MjEtPmFkZCgyMzgpOworICAgIF80NDIwLT5hZGQo
MjA1KTsKKyAgICBfNDQyMC0+YWRkKDE5NCk7CisgICAgXzQ0MjAtPmFkZCgyNzApOworICAgIF80
NDIwLT5hZGQoMTcwKTsKKyAgICBfNDQyMC0+YWRkKDE2Nik7CisgICAgXzQ0MjAtPmFkZCgyMzgp
OworICAgIF80NDE5LT5hZGQoMjM4KTsKKyAgICBfNDQxOS0+YWRkKDE3MCk7CisgICAgXzQ0MTkt
PmFkZCgxOTQpOworICAgIF80NDE5LT5hZGQoMjA1KTsKKyAgICBfNDQxOS0+YWRkKDE2Nik7Cisg
ICAgXzQ0MjItPmFkZCgyMzgpOworICAgIF80NDIyLT5hZGQoMTcwKTsKKyAgICBfNDQyMi0+YWRk
KDE5NCk7CisgICAgXzQ0MjItPmFkZCgyNzApOworICAgIF80NDIyLT5hZGQoMTY2KTsKKyAgICBf
NDQyMi0+YWRkKDIwNSk7CisgICAgXzQ0MTctPmFkZCgzMTApOworICAgIF80NDE3LT5hZGQoMTQz
KTsKKyAgICBfNDQxNy0+YWRkKDQ0KTsKKyAgICBfNDQxNy0+YWRkKDMwNyk7CisgICAgXzQ0MTct
PmFkZCgzMDgpOworICAgIF80NDE3LT5hZGQoMjA1KTsKKyAgICBfNDQxNy0+YWRkKDE5NCk7Cisg
ICAgXzQ0MTctPmFkZCgzMTIpOworICAgIF80NDE3LT5hZGQoMTY2KTsKKyAgICBfNDQxNy0+YWRk
KDMwNSk7CisgICAgXzQ0MTctPmFkZCgyNzApOworICAgIF80NDE3LT5hZGQoMTcwKTsKKyAgICBf
NDQxNy0+YWRkKDIzOCk7CisgICAgZGVsZXRlIF80NDE0OworICAgIGRlbGV0ZSBfNDQxNTsKKyAg
ICBkZWxldGUgXzQ0MTY7CisgICAgZGVsZXRlIF80NDE3OworICAgIGRlbGV0ZSBfNDQxODsKKyAg
ICBkZWxldGUgXzQ0MTk7CisgICAgZGVsZXRlIF80NDIwOworICAgIGRlbGV0ZSBfNDQyMTsKKyAg
ICBkZWxldGUgXzQ0MjI7CisgICAgZGVsZXRlIF80NDIzOworICAgIGRlbGV0ZSBfNDQyNDsKKyAg
ICBkZWxldGUgXzQ0MjU7CisgICAgZGVsZXRlIF80NDI2OworICAgIGRlbGV0ZSBfNDQyNzsKKyAg
ICBkZWxldGUgXzQ0Mjg7CisgICAgZGVsZXRlIF80NDI5OworICAgIGRlbGV0ZSBfNDQzMDsKKyAg
ICBkZWxldGUgXzQ0MzE7CisgICAgZGVsZXRlIF80NDMyOworICAgIGF1dG8qIF80NDMzID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MzQg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDQzNSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NDM2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ0MzcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDQzOCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NDM5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NDAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ0MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDQyID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NDMgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ0NCA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDQ1ID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0
NDYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDQ0NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NDQ4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ0NDkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDQ1MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NDUxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgXzQ0NDktPmFkZCg1KTsKKyAgICBfNDQ1MC0+YWRkKDUpOwor
ICAgIF80NDMzLT5hZGQoNSk7CisgICAgXzQ0NDgtPmFkZCg1KTsKKyAgICBfNDQ0Ni0+YWRkKDUp
OworICAgIF80NDQ2LT5hZGQoNTYpOworICAgIF80NDQ2LT5hZGQoNjcpOworICAgIF80NDQ2LT5h
ZGQoNDYpOworICAgIF80NDQ2LT5hZGQoMzg1KTsKKyAgICBfNDQ0NS0+YWRkKDU2KTsKKyAgICBf
NDQ0NS0+YWRkKDUpOworICAgIF80NDQ1LT5hZGQoNDYpOworICAgIF80NDQ1LT5hZGQoNjcpOwor
ICAgIF80NDQ1LT5hZGQoMjgwKTsKKyAgICBfNDQ0NS0+YWRkKDEwMyk7CisgICAgXzQ0NDUtPmFk
ZCgyNyk7CisgICAgXzQ0NDUtPmFkZCgzNSk7CisgICAgXzQ0NDUtPmFkZCgyNzUpOworICAgIF80
NDQ1LT5hZGQoOTcpOworICAgIF80NDM3LT5hZGQoMjgwKTsKKyAgICBfNDQzNy0+YWRkKDEwMyk7
CisgICAgXzQ0MzctPmFkZCgzNSk7CisgICAgXzQ0MzctPmFkZCg1KTsKKyAgICBfNDQzNy0+YWRk
KDY3KTsKKyAgICBfNDQzNy0+YWRkKDU2KTsKKyAgICBfNDQzNy0+YWRkKDI3KTsKKyAgICBfNDQz
Ny0+YWRkKDk3KTsKKyAgICBfNDQzNy0+YWRkKDQ2KTsKKyAgICBfNDQzNy0+YWRkKDMzNCk7Cisg
ICAgXzQ0MzctPmFkZCg1OSk7CisgICAgXzQ0MzctPmFkZCgzODQpOworICAgIF80NDQ0LT5hZGQo
MjgwKTsKKyAgICBfNDQ0NC0+YWRkKDEwMyk7CisgICAgXzQ0NDQtPmFkZCgzNSk7CisgICAgXzQ0
NDQtPmFkZCg1KTsKKyAgICBfNDQ0NC0+YWRkKDY3KTsKKyAgICBfNDQ0NC0+YWRkKDU2KTsKKyAg
ICBfNDQ0NC0+YWRkKDI3KTsKKyAgICBfNDQ0NC0+YWRkKDk3KTsKKyAgICBfNDQ0NC0+YWRkKDQ2
KTsKKyAgICBfNDQ0NC0+YWRkKDMzNCk7CisgICAgXzQ0NDQtPmFkZCg1OSk7CisgICAgXzQ0NDQt
PmFkZCgzODQpOworICAgIF80NDQyLT5hZGQoMjgwKTsKKyAgICBfNDQ0Mi0+YWRkKDEwMyk7Cisg
ICAgXzQ0NDItPmFkZCgzNSk7CisgICAgXzQ0NDItPmFkZCg1KTsKKyAgICBfNDQ0Mi0+YWRkKDMz
NCk7CisgICAgXzQ0NDItPmFkZCg2Nyk7CisgICAgXzQ0NDItPmFkZCg1Nik7CisgICAgXzQ0NDIt
PmFkZCg1OSk7CisgICAgXzQ0NDItPmFkZCgyNyk7CisgICAgXzQ0NDItPmFkZCg5Nyk7CisgICAg
XzQ0NDItPmFkZCg0Nik7CisgICAgXzQ0NDItPmFkZCgyMTMpOworICAgIF80NDQyLT5hZGQoMTQ0
KTsKKyAgICBfNDQ0Mi0+YWRkKDMxMik7CisgICAgXzQ0NDItPmFkZCgzMDgpOworICAgIF80NDQy
LT5hZGQoMzA1KTsKKyAgICBfNDQ0Mi0+YWRkKDMxMCk7CisgICAgXzQ0NDItPmFkZCgzMDcpOwor
ICAgIF80NDQyLT5hZGQoMTQzKTsKKyAgICBfNDQ0My0+YWRkKDI4MCk7CisgICAgXzQ0NDMtPmFk
ZCgxMDMpOworICAgIF80NDQzLT5hZGQoMzUpOworICAgIF80NDQzLT5hZGQoNSk7CisgICAgXzQ0
NDMtPmFkZCgzMzQpOworICAgIF80NDQzLT5hZGQoNjcpOworICAgIF80NDQzLT5hZGQoNTYpOwor
ICAgIF80NDQzLT5hZGQoNTkpOworICAgIF80NDQzLT5hZGQoMjcpOworICAgIF80NDQzLT5hZGQo
OTcpOworICAgIF80NDQzLT5hZGQoNDYpOworICAgIF80NDQzLT5hZGQoMjEzKTsKKyAgICBfNDQ0
My0+YWRkKDE0NCk7CisgICAgXzQ0NDMtPmFkZCgzMTIpOworICAgIF80NDQzLT5hZGQoMzA4KTsK
KyAgICBfNDQ0My0+YWRkKDMwNSk7CisgICAgXzQ0NDMtPmFkZCgzMTApOworICAgIF80NDQzLT5h
ZGQoMzA3KTsKKyAgICBfNDQ0My0+YWRkKDE0Myk7CisgICAgXzQ0MzgtPmFkZCgzNSk7CisgICAg
XzQ0MzgtPmFkZCg0Nik7CisgICAgXzQ0MzgtPmFkZCg1Nik7CisgICAgXzQ0MzgtPmFkZCgzMDUp
OworICAgIF80NDM4LT5hZGQoMjgwKTsKKyAgICBfNDQzOC0+YWRkKDEwMyk7CisgICAgXzQ0Mzgt
PmFkZCg1KTsKKyAgICBfNDQzOC0+YWRkKDMxMCk7CisgICAgXzQ0MzgtPmFkZCgzMzQpOworICAg
IF80NDM4LT5hZGQoNjcpOworICAgIF80NDM4LT5hZGQoMzA4KTsKKyAgICBfNDQzOC0+YWRkKDMx
Mik7CisgICAgXzQ0MzgtPmFkZCgzMDcpOworICAgIF80NDM4LT5hZGQoMjcpOworICAgIF80NDM4
LT5hZGQoOTcpOworICAgIF80NDM4LT5hZGQoNTkpOworICAgIF80NDM4LT5hZGQoMTQzKTsKKyAg
ICBfNDQzOC0+YWRkKDIxMyk7CisgICAgXzQ0MzgtPmFkZCgxNDQpOworICAgIF80NDQxLT5hZGQo
MzUpOworICAgIF80NDQxLT5hZGQoNDYpOworICAgIF80NDQxLT5hZGQoNTYpOworICAgIF80NDQx
LT5hZGQoMzA1KTsKKyAgICBfNDQ0MS0+YWRkKDI4MCk7CisgICAgXzQ0NDEtPmFkZCgxMDMpOwor
ICAgIF80NDQxLT5hZGQoNSk7CisgICAgXzQ0NDEtPmFkZCgzMTApOworICAgIF80NDQxLT5hZGQo
MzM0KTsKKyAgICBfNDQ0MS0+YWRkKDY3KTsKKyAgICBfNDQ0MS0+YWRkKDMwOCk7CisgICAgXzQ0
NDEtPmFkZCgzMTIpOworICAgIF80NDQxLT5hZGQoMzA3KTsKKyAgICBfNDQ0MS0+YWRkKDI3KTsK
KyAgICBfNDQ0MS0+YWRkKDk3KTsKKyAgICBfNDQ0MS0+YWRkKDU5KTsKKyAgICBfNDQ0MS0+YWRk
KDE0Myk7CisgICAgXzQ0NDEtPmFkZCgyMTMpOworICAgIF80NDQxLT5hZGQoMTQ0KTsKKyAgICBf
NDQ0MC0+YWRkKDM1KTsKKyAgICBfNDQ0MC0+YWRkKDMxMik7CisgICAgXzQ0NDAtPmFkZCg0Nik7
CisgICAgXzQ0NDAtPmFkZCgzMDUpOworICAgIF80NDQwLT5hZGQoMjgwKTsKKyAgICBfNDQ0MC0+
YWRkKDEwMyk7CisgICAgXzQ0NDAtPmFkZCg1KTsKKyAgICBfNDQ0MC0+YWRkKDMxMCk7CisgICAg
XzQ0NDAtPmFkZCgzMzQpOworICAgIF80NDQwLT5hZGQoNjcpOworICAgIF80NDQwLT5hZGQoMzA4
KTsKKyAgICBfNDQ0MC0+YWRkKDU2KTsKKyAgICBfNDQ0MC0+YWRkKDMwNyk7CisgICAgXzQ0NDAt
PmFkZCgyNyk7CisgICAgXzQ0NDAtPmFkZCg5Nyk7CisgICAgXzQ0NDAtPmFkZCg1OSk7CisgICAg
XzQ0NDAtPmFkZCgxNDMpOworICAgIF80NDQwLT5hZGQoMjEzKTsKKyAgICBfNDQ0MC0+YWRkKDE0
NCk7CisgICAgXzQ0NDAtPmFkZCg0NCk7CisgICAgXzQ0NDAtPmFkZCgxNzEpOworICAgIF80NDQw
LT5hZGQoMzgzKTsKKyAgICBfNDQzOS0+YWRkKDM1KTsKKyAgICBfNDQzOS0+YWRkKDMxMik7Cisg
ICAgXzQ0MzktPmFkZCg0Nik7CisgICAgXzQ0MzktPmFkZCgzMDUpOworICAgIF80NDM5LT5hZGQo
MjgwKTsKKyAgICBfNDQzOS0+YWRkKDEwMyk7CisgICAgXzQ0MzktPmFkZCg1KTsKKyAgICBfNDQz
OS0+YWRkKDMxMCk7CisgICAgXzQ0MzktPmFkZCgzMzQpOworICAgIF80NDM5LT5hZGQoNjcpOwor
ICAgIF80NDM5LT5hZGQoMzA4KTsKKyAgICBfNDQzOS0+YWRkKDU2KTsKKyAgICBfNDQzOS0+YWRk
KDMwNyk7CisgICAgXzQ0MzktPmFkZCgyNyk7CisgICAgXzQ0MzktPmFkZCg5Nyk7CisgICAgXzQ0
MzktPmFkZCg1OSk7CisgICAgXzQ0MzktPmFkZCgxNDMpOworICAgIF80NDM5LT5hZGQoMjEzKTsK
KyAgICBfNDQzOS0+YWRkKDE0NCk7CisgICAgXzQ0MzktPmFkZCg0NCk7CisgICAgXzQ0MzktPmFk
ZCgxNzEpOworICAgIF80NDM5LT5hZGQoMzgzKTsKKyAgICBfNDQzOC0+YWRkKDE0NCk7CisgICAg
XzQ0MzgtPmFkZCgzNSk7CisgICAgXzQ0MzgtPmFkZCg0NCk7CisgICAgXzQ0MzgtPmFkZCgyMTMp
OworICAgIF80NDM4LT5hZGQoMzEyKTsKKyAgICBfNDQzOC0+YWRkKDQ2KTsKKyAgICBfNDQzOC0+
YWRkKDE3MSk7CisgICAgXzQ0MzgtPmFkZCgzMDUpOworICAgIF80NDM4LT5hZGQoMjgwKTsKKyAg
ICBfNDQzOC0+YWRkKDEwMyk7CisgICAgXzQ0MzgtPmFkZCg1KTsKKyAgICBfNDQzOC0+YWRkKDMx
MCk7CisgICAgXzQ0MzgtPmFkZCgzMzQpOworICAgIF80NDM4LT5hZGQoNjcpOworICAgIF80NDM4
LT5hZGQoMzA4KTsKKyAgICBfNDQzOC0+YWRkKDU2KTsKKyAgICBfNDQzOC0+YWRkKDMwNyk7Cisg
ICAgXzQ0MzgtPmFkZCgyNyk7CisgICAgXzQ0MzgtPmFkZCg5Nyk7CisgICAgXzQ0MzgtPmFkZCgx
NDMpOworICAgIF80NDM4LT5hZGQoNTkpOworICAgIF80NDM4LT5hZGQoMjcwKTsKKyAgICBfNDQ0
MS0+YWRkKDE0NCk7CisgICAgXzQ0NDEtPmFkZCgzNSk7CisgICAgXzQ0NDEtPmFkZCg0NCk7Cisg
ICAgXzQ0NDEtPmFkZCgyMTMpOworICAgIF80NDQxLT5hZGQoMzEyKTsKKyAgICBfNDQ0MS0+YWRk
KDQ2KTsKKyAgICBfNDQ0MS0+YWRkKDE3MSk7CisgICAgXzQ0NDEtPmFkZCgzMDUpOworICAgIF80
NDQxLT5hZGQoMjgwKTsKKyAgICBfNDQ0MS0+YWRkKDEwMyk7CisgICAgXzQ0NDEtPmFkZCg1KTsK
KyAgICBfNDQ0MS0+YWRkKDMxMCk7CisgICAgXzQ0NDEtPmFkZCgzMzQpOworICAgIF80NDQxLT5h
ZGQoNjcpOworICAgIF80NDQxLT5hZGQoMzA4KTsKKyAgICBfNDQ0MS0+YWRkKDU2KTsKKyAgICBf
NDQ0MS0+YWRkKDMwNyk7CisgICAgXzQ0NDEtPmFkZCgyNyk7CisgICAgXzQ0NDEtPmFkZCg5Nyk7
CisgICAgXzQ0NDEtPmFkZCgxNDMpOworICAgIF80NDQxLT5hZGQoNTkpOworICAgIF80NDQxLT5h
ZGQoMjg1KTsKKyAgICBfNDQzNi0+YWRkKDM1KTsKKyAgICBfNDQzNi0+YWRkKDQ0KTsKKyAgICBf
NDQzNi0+YWRkKDMxMik7CisgICAgXzQ0MzYtPmFkZCg0Nik7CisgICAgXzQ0MzYtPmFkZCgxOTQp
OworICAgIF80NDM2LT5hZGQoMzA1KTsKKyAgICBfNDQzNi0+YWRkKDI4MCk7CisgICAgXzQ0MzYt
PmFkZCgxMDMpOworICAgIF80NDM2LT5hZGQoNSk7CisgICAgXzQ0MzYtPmFkZCgzMTApOworICAg
IF80NDM2LT5hZGQoMzM0KTsKKyAgICBfNDQzNi0+YWRkKDY3KTsKKyAgICBfNDQzNi0+YWRkKDMw
OCk7CisgICAgXzQ0MzYtPmFkZCg1Nik7CisgICAgXzQ0MzYtPmFkZCgyNzApOworICAgIF80NDM2
LT5hZGQoMzA3KTsKKyAgICBfNDQzNi0+YWRkKDI3KTsKKyAgICBfNDQzNi0+YWRkKDk3KTsKKyAg
ICBfNDQzNi0+YWRkKDU5KTsKKyAgICBfNDQzNi0+YWRkKDE0Myk7CisgICAgXzQ0MzYtPmFkZCg0
MSk7CisgICAgXzQ0MzYtPmFkZCgxNDQpOworICAgIF80NDM2LT5hZGQoMjM4KTsKKyAgICBfNDQz
Ni0+YWRkKDIwNSk7CisgICAgXzQ0MzYtPmFkZCgxNzApOworICAgIF80NDM2LT5hZGQoMTY2KTsK
KyAgICBfNDQzNi0+YWRkKDI4MCk7CisgICAgXzQ0MzYtPmFkZCgxMDMpOworICAgIF80NDM2LT5h
ZGQoMzUpOworICAgIF80NDM2LT5hZGQoNSk7CisgICAgXzQ0MzYtPmFkZCgzMzQpOworICAgIF80
NDM2LT5hZGQoNjcpOworICAgIF80NDM2LT5hZGQoNTYpOworICAgIF80NDM2LT5hZGQoNTkpOwor
ICAgIF80NDM2LT5hZGQoMjcpOworICAgIF80NDM2LT5hZGQoOTcpOworICAgIF80NDM2LT5hZGQo
NDYpOworICAgIF80NDM2LT5hZGQoMTQ3KTsKKyAgICBfNDQzNS0+YWRkKDE0Myk7CisgICAgXzQ0
MzUtPmFkZCgzNSk7CisgICAgXzQ0MzUtPmFkZCg0NCk7CisgICAgXzQ0MzUtPmFkZCg0MSk7Cisg
ICAgXzQ0MzUtPmFkZCgxNjYpOworICAgIF80NDM1LT5hZGQoNTkpOworICAgIF80NDM1LT5hZGQo
MjA1KTsKKyAgICBfNDQzNS0+YWRkKDU2KTsKKyAgICBfNDQzNS0+YWRkKDQ2KTsKKyAgICBfNDQz
NS0+YWRkKDE3MCk7CisgICAgXzQ0MzUtPmFkZCgxMDMpOworICAgIF80NDM1LT5hZGQoNSk7Cisg
ICAgXzQ0MzUtPmFkZCgzMTApOworICAgIF80NDM1LT5hZGQoMzM0KTsKKyAgICBfNDQzNS0+YWRk
KDE5NCk7CisgICAgXzQ0MzUtPmFkZCgyMzgpOworICAgIF80NDM1LT5hZGQoNjcpOworICAgIF80
NDM1LT5hZGQoMzA4KTsKKyAgICBfNDQzNS0+YWRkKDMxMik7CisgICAgXzQ0MzUtPmFkZCgyNzAp
OworICAgIF80NDM1LT5hZGQoMzA3KTsKKyAgICBfNDQzNS0+YWRkKDI3KTsKKyAgICBfNDQzNS0+
YWRkKDMwNSk7CisgICAgXzQ0MzUtPmFkZCgzODIpOworICAgIF80NDM0LT5hZGQoMTQzKTsKKyAg
ICBfNDQzNC0+YWRkKDM1KTsKKyAgICBfNDQzNC0+YWRkKDQ0KTsKKyAgICBfNDQzNC0+YWRkKDQx
KTsKKyAgICBfNDQzNC0+YWRkKDE2Nik7CisgICAgXzQ0MzQtPmFkZCg1OSk7CisgICAgXzQ0MzQt
PmFkZCgyMDUpOworICAgIF80NDM0LT5hZGQoNTYpOworICAgIF80NDM0LT5hZGQoNDYpOworICAg
IF80NDM0LT5hZGQoMTcwKTsKKyAgICBfNDQzNC0+YWRkKDEwMyk7CisgICAgXzQ0MzQtPmFkZCg1
KTsKKyAgICBfNDQzNC0+YWRkKDMxMCk7CisgICAgXzQ0MzQtPmFkZCgzMzQpOworICAgIF80NDM0
LT5hZGQoMTk0KTsKKyAgICBfNDQzNC0+YWRkKDIzOCk7CisgICAgXzQ0MzQtPmFkZCg2Nyk7Cisg
ICAgXzQ0MzQtPmFkZCgzMDgpOworICAgIF80NDM0LT5hZGQoMzEyKTsKKyAgICBfNDQzNC0+YWRk
KDI3MCk7CisgICAgXzQ0MzQtPmFkZCgzMDcpOworICAgIF80NDM0LT5hZGQoMjcpOworICAgIF80
NDM0LT5hZGQoMzA1KTsKKyAgICBfNDQzNC0+YWRkKDM4Mik7CisgICAgXzQ0MzMtPmFkZCgzMTAp
OworICAgIF80NDMzLT5hZGQoMzUpOworICAgIF80NDMzLT5hZGQoNDQpOworICAgIF80NDMzLT5h
ZGQoMzA3KTsKKyAgICBfNDQzMy0+YWRkKDIwNSk7CisgICAgXzQ0MzMtPmFkZCgzMTIpOworICAg
IF80NDMzLT5hZGQoNDYpOworICAgIF80NDMzLT5hZGQoMzA1KTsKKyAgICBfNDQzMy0+YWRkKDE3
MCk7CisgICAgXzQ0MzMtPmFkZCgxMDMpOworICAgIF80NDMzLT5hZGQoNSk7CisgICAgXzQ0MzMt
PmFkZCgxNjYpOworICAgIF80NDMzLT5hZGQoMTQzKTsKKyAgICBfNDQzMy0+YWRkKDE5NCk7Cisg
ICAgXzQ0MzMtPmFkZCgyMzgpOworICAgIF80NDMzLT5hZGQoNjcpOworICAgIF80NDMzLT5hZGQo
MzMzKTsKKyAgICBfNDQzMy0+YWRkKDMwOCk7CisgICAgXzQ0MzMtPmFkZCg1Nik7CisgICAgXzQ0
MzMtPmFkZCgyNzApOworICAgIF80NDMzLT5hZGQoNDEpOworICAgIF80NDMzLT5hZGQoMjcpOwor
ICAgIF80NDMzLT5hZGQoNTkpOworICAgIF80NDMzLT5hZGQoNDgpOworICAgIF80NDQ4LT5hZGQo
MzEwKTsKKyAgICBfNDQ0OC0+YWRkKDM1KTsKKyAgICBfNDQ0OC0+YWRkKDQ0KTsKKyAgICBfNDQ0
OC0+YWRkKDMwNyk7CisgICAgXzQ0NDgtPmFkZCgyMDUpOworICAgIF80NDQ4LT5hZGQoMzEyKTsK
KyAgICBfNDQ0OC0+YWRkKDQ2KTsKKyAgICBfNDQ0OC0+YWRkKDMwNSk7CisgICAgXzQ0NDgtPmFk
ZCgxNzApOworICAgIF80NDQ4LT5hZGQoMTAzKTsKKyAgICBfNDQ0OC0+YWRkKDUpOworICAgIF80
NDQ4LT5hZGQoMTY2KTsKKyAgICBfNDQ0OC0+YWRkKDMzNCk7CisgICAgXzQ0NDgtPmFkZCgxOTQp
OworICAgIF80NDQ4LT5hZGQoMjM4KTsKKyAgICBfNDQ0OC0+YWRkKDY3KTsKKyAgICBfNDQ0OC0+
YWRkKDE0Myk7CisgICAgXzQ0NDgtPmFkZCgzMDgpOworICAgIF80NDQ4LT5hZGQoNTYpOworICAg
IF80NDQ4LT5hZGQoMjcwKTsKKyAgICBfNDQ0OC0+YWRkKDQxKTsKKyAgICBfNDQ0OC0+YWRkKDI3
KTsKKyAgICBfNDQ0OC0+YWRkKDU5KTsKKyAgICBfNDQ0OC0+YWRkKDE0Nik7CisgICAgXzQ0NDYt
PmFkZCgzNSk7CisgICAgXzQ0NDYtPmFkZCg0NCk7CisgICAgXzQ0NDYtPmFkZCg0MSk7CisgICAg
XzQ0NDYtPmFkZCgxNjYpOworICAgIF80NDQ2LT5hZGQoMTQzKTsKKyAgICBfNDQ0Ni0+YWRkKDIw
NSk7CisgICAgXzQ0NDYtPmFkZCgyNyk7CisgICAgXzQ0NDYtPmFkZCgxNzApOworICAgIF80NDQ2
LT5hZGQoMTAzKTsKKyAgICBfNDQ0Ni0+YWRkKDMwNyk7CisgICAgXzQ0NDYtPmFkZCgzMTApOwor
ICAgIF80NDQ2LT5hZGQoMzM0KTsKKyAgICBfNDQ0Ni0+YWRkKDE5NCk7CisgICAgXzQ0NDYtPmFk
ZCgyMzgpOworICAgIF80NDQ2LT5hZGQoMzA1KTsKKyAgICBfNDQ0Ni0+YWRkKDMwOCk7CisgICAg
XzQ0NDYtPmFkZCgzMTIpOworICAgIF80NDQ2LT5hZGQoNTkpOworICAgIF80NDQ2LT5hZGQoMjcw
KTsKKyAgICBfNDQ0NS0+YWRkKDIzOCk7CisgICAgXzQ0NDUtPmFkZCgzMTApOworICAgIF80NDQ1
LT5hZGQoMTQzKTsKKyAgICBfNDQ0NS0+YWRkKDQ0KTsKKyAgICBfNDQ0NS0+YWRkKDMwNyk7Cisg
ICAgXzQ0NDUtPmFkZCgzMTIpOworICAgIF80NDQ1LT5hZGQoMjcwKTsKKyAgICBfNDQ0NS0+YWRk
KDMwNSk7CisgICAgXzQ0NDUtPmFkZCgxNzApOworICAgIF80NDQ1LT5hZGQoNDEpOworICAgIF80
NDQ1LT5hZGQoMzA4KTsKKyAgICBfNDQ0NS0+YWRkKDU5KTsKKyAgICBfNDQ0NS0+YWRkKDE2Nik7
CisgICAgXzQ0NDUtPmFkZCgzMzQpOworICAgIF80NDQ1LT5hZGQoMTk0KTsKKyAgICBfNDQ0NS0+
YWRkKDIwNSk7CisgICAgXzQ0MzctPmFkZCgzMDgpOworICAgIF80NDM3LT5hZGQoNDQpOworICAg
IF80NDM3LT5hZGQoNDEpOworICAgIF80NDM3LT5hZGQoMTY2KTsKKyAgICBfNDQzNy0+YWRkKDIw
NSk7CisgICAgXzQ0MzctPmFkZCgzMDcpOworICAgIF80NDM3LT5hZGQoMjcwKTsKKyAgICBfNDQz
Ny0+YWRkKDE5NCk7CisgICAgXzQ0MzctPmFkZCgzMDUpOworICAgIF80NDM3LT5hZGQoMjM4KTsK
KyAgICBfNDQzNy0+YWRkKDE3MCk7CisgICAgXzQ0MzctPmFkZCgxNDMpOworICAgIF80NDM3LT5h
ZGQoMzEyKTsKKyAgICBfNDQzNy0+YWRkKDMxMCk7CisgICAgXzQ0NDQtPmFkZCgzMDgpOworICAg
IF80NDQ0LT5hZGQoNDQpOworICAgIF80NDQ0LT5hZGQoNDEpOworICAgIF80NDQ0LT5hZGQoMTY2
KTsKKyAgICBfNDQ0NC0+YWRkKDIwNSk7CisgICAgXzQ0NDQtPmFkZCgzMDcpOworICAgIF80NDQ0
LT5hZGQoMjcwKTsKKyAgICBfNDQ0NC0+YWRkKDE5NCk7CisgICAgXzQ0NDQtPmFkZCgzMDUpOwor
ICAgIF80NDQ0LT5hZGQoMjM4KTsKKyAgICBfNDQ0NC0+YWRkKDE3MCk7CisgICAgXzQ0NDQtPmFk
ZCgxNDMpOworICAgIF80NDQ0LT5hZGQoMzEyKTsKKyAgICBfNDQ0NC0+YWRkKDMxMCk7CisgICAg
XzQ0NDItPmFkZCgyMzgpOworICAgIF80NDQyLT5hZGQoMjA1KTsKKyAgICBfNDQ0Mi0+YWRkKDE5
NCk7CisgICAgXzQ0NDItPmFkZCg0NCk7CisgICAgXzQ0NDItPmFkZCgxNzApOworICAgIF80NDQy
LT5hZGQoMjcwKTsKKyAgICBfNDQ0Mi0+YWRkKDQxKTsKKyAgICBfNDQ0Mi0+YWRkKDE2Nik7Cisg
ICAgXzQ0NDMtPmFkZCgyMzgpOworICAgIF80NDQzLT5hZGQoMjA1KTsKKyAgICBfNDQ0My0+YWRk
KDE5NCk7CisgICAgXzQ0NDMtPmFkZCg0NCk7CisgICAgXzQ0NDMtPmFkZCgxNzApOworICAgIF80
NDQzLT5hZGQoMjcwKTsKKyAgICBfNDQ0My0+YWRkKDQxKTsKKyAgICBfNDQ0My0+YWRkKDE2Nik7
CisgICAgXzQ0MzgtPmFkZCgyNzApOworICAgIF80NDM4LT5hZGQoNDQpOworICAgIF80NDM4LT5h
ZGQoNDEpOworICAgIF80NDM4LT5hZGQoMTY2KTsKKyAgICBfNDQzOC0+YWRkKDIwNSk7CisgICAg
XzQ0MzgtPmFkZCgxNzApOworICAgIF80NDM4LT5hZGQoMjM4KTsKKyAgICBfNDQzOC0+YWRkKDE5
NCk7CisgICAgXzQ0NDEtPmFkZCgyNzApOworICAgIF80NDQxLT5hZGQoNDQpOworICAgIF80NDQx
LT5hZGQoNDEpOworICAgIF80NDQxLT5hZGQoMTY2KTsKKyAgICBfNDQ0MS0+YWRkKDIwNSk7Cisg
ICAgXzQ0NDEtPmFkZCgxNzApOworICAgIF80NDQxLT5hZGQoMjM4KTsKKyAgICBfNDQ0MS0+YWRk
KDE5NCk7CisgICAgXzQ0NDAtPmFkZCgyMzgpOworICAgIF80NDQwLT5hZGQoMjA1KTsKKyAgICBf
NDQ0MC0+YWRkKDE3MCk7CisgICAgXzQ0NDAtPmFkZCg0MSk7CisgICAgXzQ0NDAtPmFkZCgxNjYp
OworICAgIF80NDQwLT5hZGQoMjcwKTsKKyAgICBfNDQ0MC0+YWRkKDE5NCk7CisgICAgXzQ0Mzkt
PmFkZCgyMzgpOworICAgIF80NDM5LT5hZGQoMjA1KTsKKyAgICBfNDQzOS0+YWRkKDE3MCk7Cisg
ICAgXzQ0MzktPmFkZCg0MSk7CisgICAgXzQ0MzktPmFkZCgxNjYpOworICAgIF80NDM5LT5hZGQo
MjcwKTsKKyAgICBfNDQzOS0+YWRkKDE5NCk7CisgICAgXzQ0MzgtPmFkZCgxOTQpOworICAgIF80
NDM4LT5hZGQoMjA1KTsKKyAgICBfNDQzOC0+YWRkKDE3MCk7CisgICAgXzQ0MzgtPmFkZCg0MSk7
CisgICAgXzQ0MzgtPmFkZCgxNjYpOworICAgIF80NDM4LT5hZGQoMjM4KTsKKyAgICBfNDQ0MS0+
YWRkKDIzOCk7CisgICAgXzQ0NDEtPmFkZCgxNzApOworICAgIF80NDQxLT5hZGQoMjcwKTsKKyAg
ICBfNDQ0MS0+YWRkKDQxKTsKKyAgICBfNDQ0MS0+YWRkKDE2Nik7CisgICAgXzQ0NDEtPmFkZCgx
OTQpOworICAgIF80NDQxLT5hZGQoMjA1KTsKKyAgICBfNDQzNi0+YWRkKDIzOCk7CisgICAgXzQ0
MzYtPmFkZCgzMTApOworICAgIF80NDM2LT5hZGQoMjcwKTsKKyAgICBfNDQzNi0+YWRkKDQ0KTsK
KyAgICBfNDQzNi0+YWRkKDMwNyk7CisgICAgXzQ0MzYtPmFkZCgzMTIpOworICAgIF80NDM2LT5h
ZGQoMjA1KTsKKyAgICBfNDQzNi0+YWRkKDMwNSk7CisgICAgXzQ0MzYtPmFkZCgxOTQpOworICAg
IF80NDM2LT5hZGQoMTcwKTsKKyAgICBfNDQzNi0+YWRkKDE0Myk7CisgICAgXzQ0MzYtPmFkZCgz
MDgpOworICAgIF80NDM2LT5hZGQoMTY2KTsKKyAgICBfNDQzNi0+YWRkKDQxKTsKKyAgICBkZWxl
dGUgXzQ0MzM7CisgICAgZGVsZXRlIF80NDM0OworICAgIGRlbGV0ZSBfNDQzNTsKKyAgICBkZWxl
dGUgXzQ0MzY7CisgICAgZGVsZXRlIF80NDM3OworICAgIGRlbGV0ZSBfNDQzODsKKyAgICBkZWxl
dGUgXzQ0Mzk7CisgICAgZGVsZXRlIF80NDQwOworICAgIGRlbGV0ZSBfNDQ0MTsKKyAgICBkZWxl
dGUgXzQ0NDI7CisgICAgZGVsZXRlIF80NDQzOworICAgIGRlbGV0ZSBfNDQ0NDsKKyAgICBkZWxl
dGUgXzQ0NDU7CisgICAgZGVsZXRlIF80NDQ2OworICAgIGRlbGV0ZSBfNDQ0NzsKKyAgICBkZWxl
dGUgXzQ0NDg7CisgICAgZGVsZXRlIF80NDQ5OworICAgIGRlbGV0ZSBfNDQ1MDsKKyAgICBkZWxl
dGUgXzQ0NTE7CisgICAgYXV0byogXzQ0NTIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ1MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDU0ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NTUgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ1NiA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDU3ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NTgg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDQ1OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NDYwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ0NjEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDQ2MiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NDYzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NjQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ2NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDY2ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NjcgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBfNDQ2Ni0+YWRkKDUxMik7Cisg
ICAgXzQ0NjQtPmFkZCg3MTcpOworICAgIF80NDY0LT5hZGQoMjI5KTsKKyAgICBfNDQ2NC0+YWRk
KDE4Mik7CisgICAgXzQ0NjQtPmFkZCg3MTYpOworICAgIF80NDY1LT5hZGQoNzE3KTsKKyAgICBf
NDQ2NS0+YWRkKDIyOSk7CisgICAgXzQ0NjUtPmFkZCgxODIpOworICAgIF80NDY1LT5hZGQoNzE2
KTsKKyAgICBfNDQ2Ni0+YWRkKDE4Mik7CisgICAgXzQ0NjYtPmFkZCgyMjkpOworICAgIF80NDY2
LT5hZGQoNTEyKTsKKyAgICBfNDQ2Ni0+YWRkKDUxOCk7CisgICAgXzQ0NjMtPmFkZCgxODIpOwor
ICAgIF80NDYzLT5hZGQoMjI5KTsKKyAgICBfNDQ2My0+YWRkKDE2OCk7CisgICAgXzQ0NjMtPmFk
ZCgyKTsKKyAgICBfNDQ2My0+YWRkKDEyNik7CisgICAgXzQ0NjMtPmFkZCgyMCk7CisgICAgXzQ0
NjMtPmFkZCgzNTkpOworICAgIF80NDYzLT5hZGQoMzcyKTsKKyAgICBfNDQ2My0+YWRkKDk4KTsK
KyAgICBfNDQ2My0+YWRkKDQyMCk7CisgICAgXzQ0NjMtPmFkZCg0MjQpOworICAgIF80NDYzLT5h
ZGQoNDI4KTsKKyAgICBfNDQ2My0+YWRkKDQzMik7CisgICAgXzQ0NjMtPmFkZCg0MzYpOworICAg
IF80NDYzLT5hZGQoNDQwKTsKKyAgICBfNDQ2My0+YWRkKDM2Nyk7CisgICAgXzQ0NjMtPmFkZCgy
Nik7CisgICAgXzQ0NjMtPmFkZCg0NSk7CisgICAgXzQ0NjMtPmFkZCg3MTUpOworICAgIF80NDYy
LT5hZGQoMTgyKTsKKyAgICBfNDQ2Mi0+YWRkKDIyOSk7CisgICAgXzQ0NjItPmFkZCgxNjgpOwor
ICAgIF80NDYyLT5hZGQoMik7CisgICAgXzQ0NjItPmFkZCgxMjYpOworICAgIF80NDYyLT5hZGQo
MjApOworICAgIF80NDYyLT5hZGQoMzU5KTsKKyAgICBfNDQ2Mi0+YWRkKDM3Mik7CisgICAgXzQ0
NjItPmFkZCg5OCk7CisgICAgXzQ0NjItPmFkZCg0MjApOworICAgIF80NDYyLT5hZGQoNDI0KTsK
KyAgICBfNDQ2Mi0+YWRkKDQyOCk7CisgICAgXzQ0NjItPmFkZCg0MzIpOworICAgIF80NDYyLT5h
ZGQoNDM2KTsKKyAgICBfNDQ2Mi0+YWRkKDQ0MCk7CisgICAgXzQ0NjItPmFkZCgzNjcpOworICAg
IF80NDYyLT5hZGQoMjYpOworICAgIF80NDYyLT5hZGQoNDUpOworICAgIF80NDYyLT5hZGQoNzE1
KTsKKyAgICBfNDQ1OC0+YWRkKDE4Mik7CisgICAgXzQ0NTgtPmFkZCg0MzYpOworICAgIF80NDU4
LT5hZGQoMjI5KTsKKyAgICBfNDQ1OC0+YWRkKDEyNik7CisgICAgXzQ0NTgtPmFkZCgzNjcpOwor
ICAgIF80NDU4LT5hZGQoNDUpOworICAgIF80NDU4LT5hZGQoMzU5KTsKKyAgICBfNDQ1OC0+YWRk
KDQ0MCk7CisgICAgXzQ0NTgtPmFkZCgyNik7CisgICAgXzQ0NTgtPmFkZCgxNjgpOworICAgIF80
NDU4LT5hZGQoNDI4KTsKKyAgICBfNDQ1OC0+YWRkKDk4KTsKKyAgICBfNDQ1OC0+YWRkKDQzMik7
CisgICAgXzQ0NTgtPmFkZCgyKTsKKyAgICBfNDQ1OC0+YWRkKDQyMCk7CisgICAgXzQ0NTgtPmFk
ZCgyMCk7CisgICAgXzQ0NTgtPmFkZCg0MjQpOworICAgIF80NDU4LT5hZGQoMzcyKTsKKyAgICBf
NDQ2MS0+YWRkKDE4Mik7CisgICAgXzQ0NjEtPmFkZCg0MzYpOworICAgIF80NDYxLT5hZGQoMjI5
KTsKKyAgICBfNDQ2MS0+YWRkKDEyNik7CisgICAgXzQ0NjEtPmFkZCgzNjcpOworICAgIF80NDYx
LT5hZGQoNDUpOworICAgIF80NDYxLT5hZGQoMzU5KTsKKyAgICBfNDQ2MS0+YWRkKDQ0MCk7Cisg
ICAgXzQ0NjEtPmFkZCgyNik7CisgICAgXzQ0NjEtPmFkZCgxNjgpOworICAgIF80NDYxLT5hZGQo
NDI4KTsKKyAgICBfNDQ2MS0+YWRkKDk4KTsKKyAgICBfNDQ2MS0+YWRkKDQzMik7CisgICAgXzQ0
NjEtPmFkZCgyKTsKKyAgICBfNDQ2MS0+YWRkKDQyMCk7CisgICAgXzQ0NjEtPmFkZCgyMCk7Cisg
ICAgXzQ0NjEtPmFkZCg0MjQpOworICAgIF80NDYxLT5hZGQoMzcyKTsKKyAgICBfNDQ2MS0+YWRk
KDMyMCk7CisgICAgXzQ0NjAtPmFkZCgxODIpOworICAgIF80NDYwLT5hZGQoNDM2KTsKKyAgICBf
NDQ2MC0+YWRkKDIyOSk7CisgICAgXzQ0NjAtPmFkZCgxMjYpOworICAgIF80NDYwLT5hZGQoNDI0
KTsKKyAgICBfNDQ2MC0+YWRkKDM2Nyk7CisgICAgXzQ0NjAtPmFkZCgyODcpOworICAgIF80NDYw
LT5hZGQoNDUpOworICAgIF80NDYwLT5hZGQoMjYpOworICAgIF80NDYwLT5hZGQoNDQwKTsKKyAg
ICBfNDQ2MC0+YWRkKDE2OCk7CisgICAgXzQ0NjAtPmFkZCg0MjgpOworICAgIF80NDYwLT5hZGQo
MzU5KTsKKyAgICBfNDQ2MC0+YWRkKDIpOworICAgIF80NDYwLT5hZGQoNDIwKTsKKyAgICBfNDQ2
MC0+YWRkKDIwKTsKKyAgICBfNDQ2MC0+YWRkKDk4KTsKKyAgICBfNDQ2MC0+YWRkKDM3Mik7Cisg
ICAgXzQ0NjAtPmFkZCg0MzIpOworICAgIF80NDYwLT5hZGQoMjUwKTsKKyAgICBfNDQ2MC0+YWRk
KDYzOSk7CisgICAgXzQ0NjAtPmFkZCg3MTQpOworICAgIF80NDYwLT5hZGQoMTExKTsKKyAgICBf
NDQ2MC0+YWRkKDYwMyk7CisgICAgXzQ0NjAtPmFkZCgyMzIpOworICAgIF80NDYwLT5hZGQoNzEz
KTsKKyAgICBfNDQ1OS0+YWRkKDE4Mik7CisgICAgXzQ0NTktPmFkZCg0MzYpOworICAgIF80NDU5
LT5hZGQoMjI5KTsKKyAgICBfNDQ1OS0+YWRkKDEyNik7CisgICAgXzQ0NTktPmFkZCg0MjQpOwor
ICAgIF80NDU5LT5hZGQoMzY3KTsKKyAgICBfNDQ1OS0+YWRkKDI4Nyk7CisgICAgXzQ0NTktPmFk
ZCg0NSk7CisgICAgXzQ0NTktPmFkZCgyNik7CisgICAgXzQ0NTktPmFkZCg0NDApOworICAgIF80
NDU5LT5hZGQoMTY4KTsKKyAgICBfNDQ1OS0+YWRkKDQyOCk7CisgICAgXzQ0NTktPmFkZCgzNTkp
OworICAgIF80NDU5LT5hZGQoMik7CisgICAgXzQ0NTktPmFkZCg0MjApOworICAgIF80NDU5LT5h
ZGQoMjApOworICAgIF80NDU5LT5hZGQoOTgpOworICAgIF80NDU5LT5hZGQoMzcyKTsKKyAgICBf
NDQ1OS0+YWRkKDQzMik7CisgICAgXzQ0NTktPmFkZCgyNTApOworICAgIF80NDU5LT5hZGQoNjM5
KTsKKyAgICBfNDQ1OS0+YWRkKDcxNCk7CisgICAgXzQ0NTktPmFkZCgxMTEpOworICAgIF80NDU5
LT5hZGQoNjAzKTsKKyAgICBfNDQ1OS0+YWRkKDIzMik7CisgICAgXzQ0NTktPmFkZCg3MTMpOwor
ICAgIF80NDU4LT5hZGQoMTgyKTsKKyAgICBfNDQ1OC0+YWRkKDQzNik7CisgICAgXzQ0NTgtPmFk
ZCgyMjkpOworICAgIF80NDU4LT5hZGQoMTI2KTsKKyAgICBfNDQ1OC0+YWRkKDI4Nyk7CisgICAg
XzQ0NTgtPmFkZCgzNjcpOworICAgIF80NDU4LT5hZGQoNDMyKTsKKyAgICBfNDQ1OC0+YWRkKDYz
OSk7CisgICAgXzQ0NTgtPmFkZCg2MDMpOworICAgIF80NDU4LT5hZGQoNDIwKTsKKyAgICBfNDQ1
OC0+YWRkKDIzMik7CisgICAgXzQ0NTgtPmFkZCg0NSk7CisgICAgXzQ0NTgtPmFkZCgyNTApOwor
ICAgIF80NDU4LT5hZGQoMTExKTsKKyAgICBfNDQ1OC0+YWRkKDI2KTsKKyAgICBfNDQ1OC0+YWRk
KDQ0MCk7CisgICAgXzQ0NTgtPmFkZCgxNjgpOworICAgIF80NDU4LT5hZGQoNDI4KTsKKyAgICBf
NDQ1OC0+YWRkKDk4KTsKKyAgICBfNDQ1OC0+YWRkKDM1OSk7CisgICAgXzQ0NTgtPmFkZCgyKTsK
KyAgICBfNDQ1OC0+YWRkKDQyNCk7CisgICAgXzQ0NTgtPmFkZCgyMCk7CisgICAgXzQ0NTgtPmFk
ZCgyMzYpOworICAgIF80NDU4LT5hZGQoMzcyKTsKKyAgICBfNDQ2MS0+YWRkKDE4Mik7CisgICAg
XzQ0NjEtPmFkZCg0MzYpOworICAgIF80NDYxLT5hZGQoMjI5KTsKKyAgICBfNDQ2MS0+YWRkKDEy
Nik7CisgICAgXzQ0NjEtPmFkZCgyODcpOworICAgIF80NDYxLT5hZGQoMzY3KTsKKyAgICBfNDQ2
MS0+YWRkKDQzMik7CisgICAgXzQ0NjEtPmFkZCg2MzkpOworICAgIF80NDYxLT5hZGQoNjAzKTsK
KyAgICBfNDQ2MS0+YWRkKDQyMCk7CisgICAgXzQ0NjEtPmFkZCgyMzIpOworICAgIF80NDYxLT5h
ZGQoNDUpOworICAgIF80NDYxLT5hZGQoMjUwKTsKKyAgICBfNDQ2MS0+YWRkKDExMSk7CisgICAg
XzQ0NjEtPmFkZCgyNik7CisgICAgXzQ0NjEtPmFkZCg0NDApOworICAgIF80NDYxLT5hZGQoMTY4
KTsKKyAgICBfNDQ2MS0+YWRkKDQyOCk7CisgICAgXzQ0NjEtPmFkZCg5OCk7CisgICAgXzQ0NjEt
PmFkZCgzNTkpOworICAgIF80NDYxLT5hZGQoMik7CisgICAgXzQ0NjEtPmFkZCg0MjQpOworICAg
IF80NDYxLT5hZGQoMjApOworICAgIF80NDYxLT5hZGQoMzM4KTsKKyAgICBfNDQ2MS0+YWRkKDM3
Mik7CisgICAgXzQ0NjEtPmFkZCgzMjApOworICAgIF80NDU2LT5hZGQoMTgyKTsKKyAgICBfNDQ1
Ni0+YWRkKDQzNik7CisgICAgXzQ0NTYtPmFkZCgyMjkpOworICAgIF80NDU2LT5hZGQoMTI2KTsK
KyAgICBfNDQ1Ni0+YWRkKDQyNCk7CisgICAgXzQ0NTYtPmFkZCgyODcpOworICAgIF80NDU2LT5h
ZGQoMzY3KTsKKyAgICBfNDQ1Ni0+YWRkKDYzOSk7CisgICAgXzQ0NTYtPmFkZCg5OCk7CisgICAg
XzQ0NTYtPmFkZCgzNzIpOworICAgIF80NDU2LT5hZGQoNDUpOworICAgIF80NDU2LT5hZGQoMjUw
KTsKKyAgICBfNDQ1Ni0+YWRkKDExMSk7CisgICAgXzQ0NTYtPmFkZCgyNik7CisgICAgXzQ0NTYt
PmFkZCg0NDApOworICAgIF80NDU2LT5hZGQoMTY4KTsKKyAgICBfNDQ1Ni0+YWRkKDQyOCk7Cisg
ICAgXzQ0NTYtPmFkZCgzNTkpOworICAgIF80NDU2LT5hZGQoMik7CisgICAgXzQ0NTYtPmFkZCg0
MzIpOworICAgIF80NDU2LT5hZGQoNDIwKTsKKyAgICBfNDQ1Ni0+YWRkKDIwKTsKKyAgICBfNDQ1
Ny0+YWRkKDE4Mik7CisgICAgXzQ0NTctPmFkZCg0MzYpOworICAgIF80NDU3LT5hZGQoMjI5KTsK
KyAgICBfNDQ1Ny0+YWRkKDEyNik7CisgICAgXzQ0NTctPmFkZCg0MjQpOworICAgIF80NDU3LT5h
ZGQoMjg3KTsKKyAgICBfNDQ1Ny0+YWRkKDM2Nyk7CisgICAgXzQ0NTctPmFkZCg2MzkpOworICAg
IF80NDU3LT5hZGQoOTgpOworICAgIF80NDU3LT5hZGQoMzcyKTsKKyAgICBfNDQ1Ny0+YWRkKDQ1
KTsKKyAgICBfNDQ1Ny0+YWRkKDI1MCk7CisgICAgXzQ0NTctPmFkZCgxMTEpOworICAgIF80NDU3
LT5hZGQoMjYpOworICAgIF80NDU3LT5hZGQoNDQwKTsKKyAgICBfNDQ1Ny0+YWRkKDE2OCk7Cisg
ICAgXzQ0NTctPmFkZCg0MjgpOworICAgIF80NDU3LT5hZGQoMzU5KTsKKyAgICBfNDQ1Ny0+YWRk
KDIpOworICAgIF80NDU3LT5hZGQoNDMyKTsKKyAgICBfNDQ1Ny0+YWRkKDQyMCk7CisgICAgXzQ0
NTctPmFkZCgyMCk7CisgICAgXzQ0NTUtPmFkZCgxODIpOworICAgIF80NDU1LT5hZGQoNDM2KTsK
KyAgICBfNDQ1NS0+YWRkKDIyOSk7CisgICAgXzQ0NTUtPmFkZCgxMjYpOworICAgIF80NDU1LT5h
ZGQoMjg3KTsKKyAgICBfNDQ1NS0+YWRkKDM2Nyk7CisgICAgXzQ0NTUtPmFkZCg0MzIpOworICAg
IF80NDU1LT5hZGQoNDIwKTsKKyAgICBfNDQ1NS0+YWRkKDQ1KTsKKyAgICBfNDQ1NS0+YWRkKDI1
MCk7CisgICAgXzQ0NTUtPmFkZCgxMTEpOworICAgIF80NDU1LT5hZGQoMjYpOworICAgIF80NDU1
LT5hZGQoNDQwKTsKKyAgICBfNDQ1NS0+YWRkKDE2OCk7CisgICAgXzQ0NTUtPmFkZCg2MzkpOwor
ICAgIF80NDU1LT5hZGQoMik7CisgICAgXzQ0NTUtPmFkZCgzNTkpOworICAgIF80NDU1LT5hZGQo
NDI0KTsKKyAgICBfNDQ1NS0+YWRkKDQyOCk7CisgICAgXzQ0NTUtPmFkZCgyMCk7CisgICAgXzQ0
NTUtPmFkZCgzNzIpOworICAgIF80NDU1LT5hZGQoOTgpOworICAgIF80NDUyLT5hZGQoMTgyKTsK
KyAgICBfNDQ1Mi0+YWRkKDQzNik7CisgICAgXzQ0NTItPmFkZCgyMjkpOworICAgIF80NDUyLT5h
ZGQoMTI2KTsKKyAgICBfNDQ1Mi0+YWRkKDI4Nyk7CisgICAgXzQ0NTItPmFkZCgzNjcpOworICAg
IF80NDUyLT5hZGQoNDMyKTsKKyAgICBfNDQ1Mi0+YWRkKDQyMCk7CisgICAgXzQ0NTItPmFkZCg0
NSk7CisgICAgXzQ0NTItPmFkZCgyNTApOworICAgIF80NDUyLT5hZGQoMTExKTsKKyAgICBfNDQ1
Mi0+YWRkKDI2KTsKKyAgICBfNDQ1Mi0+YWRkKDQ0MCk7CisgICAgXzQ0NTItPmFkZCgxNjgpOwor
ICAgIF80NDUyLT5hZGQoNjM5KTsKKyAgICBfNDQ1Mi0+YWRkKDIpOworICAgIF80NDUyLT5hZGQo
MzU5KTsKKyAgICBfNDQ1Mi0+YWRkKDQyNCk7CisgICAgXzQ0NTItPmFkZCg0MjgpOworICAgIF80
NDUyLT5hZGQoMjApOworICAgIF80NDUyLT5hZGQoMzcyKTsKKyAgICBfNDQ1Mi0+YWRkKDk4KTsK
KyAgICBfNDQ1My0+YWRkKDQyOCk7CisgICAgXzQ0NTMtPmFkZCgxODIpOworICAgIF80NDUzLT5h
ZGQoNDM2KTsKKyAgICBfNDQ1My0+YWRkKDIyOSk7CisgICAgXzQ0NTMtPmFkZCgxMjYpOworICAg
IF80NDUzLT5hZGQoMjg3KTsKKyAgICBfNDQ1My0+YWRkKDM2Nyk7CisgICAgXzQ0NTMtPmFkZCg0
NSk7CisgICAgXzQ0NTMtPmFkZCgyNTApOworICAgIF80NDUzLT5hZGQoMTExKTsKKyAgICBfNDQ1
My0+YWRkKDI2KTsKKyAgICBfNDQ1My0+YWRkKDQ0MCk7CisgICAgXzQ0NTMtPmFkZCgxNjgpOwor
ICAgIF80NDUzLT5hZGQoNjM5KTsKKyAgICBfNDQ1My0+YWRkKDk4KTsKKyAgICBfNDQ1My0+YWRk
KDM1OSk7CisgICAgXzQ0NTMtPmFkZCgyKTsKKyAgICBfNDQ1My0+YWRkKDQyMCk7CisgICAgXzQ0
NTMtPmFkZCgyMCk7CisgICAgXzQ0NTMtPmFkZCg0MjQpOworICAgIF80NDUzLT5hZGQoMzcyKTsK
KyAgICBfNDQ1My0+YWRkKDQzMik7CisgICAgXzQ0NTMtPmFkZCg3Mik7CisgICAgXzQ0NTMtPmFk
ZCg3MTIpOworICAgIF80NDU0LT5hZGQoNDI4KTsKKyAgICBfNDQ1NC0+YWRkKDE4Mik7CisgICAg
XzQ0NTQtPmFkZCg0MzYpOworICAgIF80NDU0LT5hZGQoMjI5KTsKKyAgICBfNDQ1NC0+YWRkKDEy
Nik7CisgICAgXzQ0NTQtPmFkZCgyODcpOworICAgIF80NDU0LT5hZGQoMzY3KTsKKyAgICBfNDQ1
NC0+YWRkKDQ1KTsKKyAgICBfNDQ1NC0+YWRkKDI1MCk7CisgICAgXzQ0NTQtPmFkZCgxMTEpOwor
ICAgIF80NDU0LT5hZGQoMjYpOworICAgIF80NDU0LT5hZGQoNDQwKTsKKyAgICBfNDQ1NC0+YWRk
KDE2OCk7CisgICAgXzQ0NTQtPmFkZCg2MzkpOworICAgIF80NDU0LT5hZGQoOTgpOworICAgIF80
NDU0LT5hZGQoMzU5KTsKKyAgICBfNDQ1NC0+YWRkKDIpOworICAgIF80NDU0LT5hZGQoNDIwKTsK
KyAgICBfNDQ1NC0+YWRkKDIwKTsKKyAgICBfNDQ1NC0+YWRkKDQyNCk7CisgICAgXzQ0NTQtPmFk
ZCgzNzIpOworICAgIF80NDU0LT5hZGQoNDMyKTsKKyAgICBfNDQ1NC0+YWRkKDcyKTsKKyAgICBf
NDQ1NC0+YWRkKDcxMik7CisgICAgXzQ0NTUtPmFkZCgxODIpOworICAgIF80NDU1LT5hZGQoNDM2
KTsKKyAgICBfNDQ1NS0+YWRkKDIyOSk7CisgICAgXzQ0NTUtPmFkZCgxMjYpOworICAgIF80NDU1
LT5hZGQoMjg3KTsKKyAgICBfNDQ1NS0+YWRkKDM2Nyk7CisgICAgXzQ0NTUtPmFkZCg0MzIpOwor
ICAgIF80NDU1LT5hZGQoNjM5KTsKKyAgICBfNDQ1NS0+YWRkKDQ1KTsKKyAgICBfNDQ1NS0+YWRk
KDI1MCk7CisgICAgXzQ0NTUtPmFkZCgxMTEpOworICAgIF80NDU1LT5hZGQoMjYpOworICAgIF80
NDU1LT5hZGQoOTgpOworICAgIF80NDU1LT5hZGQoNDQwKTsKKyAgICBfNDQ1NS0+YWRkKDE2OCk7
CisgICAgXzQ0NTUtPmFkZCg0MjgpOworICAgIF80NDU1LT5hZGQoMzU5KTsKKyAgICBfNDQ1NS0+
YWRkKDIpOworICAgIF80NDU1LT5hZGQoNDIwKTsKKyAgICBfNDQ1NS0+YWRkKDIwKTsKKyAgICBf
NDQ1NS0+YWRkKDcyKTsKKyAgICBfNDQ1NS0+YWRkKDQyNCk7CisgICAgXzQ0NTUtPmFkZCgzNzIp
OworICAgIF80NDU1LT5hZGQoMTgzKTsKKyAgICBfNDQ1Mi0+YWRkKDE4Mik7CisgICAgXzQ0NTIt
PmFkZCg0MzYpOworICAgIF80NDUyLT5hZGQoMjI5KTsKKyAgICBfNDQ1Mi0+YWRkKDEyNik7Cisg
ICAgXzQ0NTItPmFkZCgyODcpOworICAgIF80NDUyLT5hZGQoMzY3KTsKKyAgICBfNDQ1Mi0+YWRk
KDQzMik7CisgICAgXzQ0NTItPmFkZCg2MzkpOworICAgIF80NDUyLT5hZGQoNDUpOworICAgIF80
NDUyLT5hZGQoMjUwKTsKKyAgICBfNDQ1Mi0+YWRkKDExMSk7CisgICAgXzQ0NTItPmFkZCgyNik7
CisgICAgXzQ0NTItPmFkZCg5OCk7CisgICAgXzQ0NTItPmFkZCg0NDApOworICAgIF80NDUyLT5h
ZGQoMTY4KTsKKyAgICBfNDQ1Mi0+YWRkKDQyOCk7CisgICAgXzQ0NTItPmFkZCgzNTkpOworICAg
IF80NDUyLT5hZGQoMik7CisgICAgXzQ0NTItPmFkZCg0MjApOworICAgIF80NDUyLT5hZGQoMjAp
OworICAgIF80NDUyLT5hZGQoNzIpOworICAgIF80NDUyLT5hZGQoNDI0KTsKKyAgICBfNDQ1Mi0+
YWRkKDM3Mik7CisgICAgZGVsZXRlIF80NDUyOworICAgIGRlbGV0ZSBfNDQ1MzsKKyAgICBkZWxl
dGUgXzQ0NTQ7CisgICAgZGVsZXRlIF80NDU1OworICAgIGRlbGV0ZSBfNDQ1NjsKKyAgICBkZWxl
dGUgXzQ0NTc7CisgICAgZGVsZXRlIF80NDU4OworICAgIGRlbGV0ZSBfNDQ1OTsKKyAgICBkZWxl
dGUgXzQ0NjA7CisgICAgZGVsZXRlIF80NDYxOworICAgIGRlbGV0ZSBfNDQ2MjsKKyAgICBkZWxl
dGUgXzQ0NjM7CisgICAgZGVsZXRlIF80NDY0OworICAgIGRlbGV0ZSBfNDQ2NTsKKyAgICBkZWxl
dGUgXzQ0NjY7CisgICAgZGVsZXRlIF80NDY3OworICAgIGF1dG8qIF80NDY4ID0gbmV3IEhhc2hT
ZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0NjkgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ3MCA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDcxID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NzIg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDQ3MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NDc0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ0NzUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDQ3NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NDc3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NzggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ3OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDgwID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0ODEgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ4MiA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDgzID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0
ODQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBfNDQ4
My0+YWRkKDQ4Myk7CisgICAgXzQ0ODEtPmFkZCg1MDgpOworICAgIF80NDgxLT5hZGQoMjI5KTsK
KyAgICBfNDQ4MS0+YWRkKDE4Mik7CisgICAgXzQ0ODEtPmFkZCg1MDcpOworICAgIF80NDgyLT5h
ZGQoNTA4KTsKKyAgICBfNDQ4Mi0+YWRkKDIyOSk7CisgICAgXzQ0ODItPmFkZCgxODIpOworICAg
IF80NDgyLT5hZGQoNTA3KTsKKyAgICBfNDQ4My0+YWRkKDE4Mik7CisgICAgXzQ0ODMtPmFkZCgy
MjkpOworICAgIF80NDgzLT5hZGQoNDgzKTsKKyAgICBfNDQ4My0+YWRkKDQ3Myk7CisgICAgXzQ0
ODAtPmFkZCgxODIpOworICAgIF80NDgwLT5hZGQoMjI5KTsKKyAgICBfNDQ4MC0+YWRkKDE2OCk7
CisgICAgXzQ0ODAtPmFkZCgyKTsKKyAgICBfNDQ4MC0+YWRkKDEyNik7CisgICAgXzQ0ODAtPmFk
ZCgyMCk7CisgICAgXzQ0ODAtPmFkZCgzNTkpOworICAgIF80NDgwLT5hZGQoMzcyKTsKKyAgICBf
NDQ4MC0+YWRkKDk4KTsKKyAgICBfNDQ4MC0+YWRkKDQyMCk7CisgICAgXzQ0ODAtPmFkZCg0MjQp
OworICAgIF80NDgwLT5hZGQoNDI4KTsKKyAgICBfNDQ4MC0+YWRkKDQzMik7CisgICAgXzQ0ODAt
PmFkZCg0MzYpOworICAgIF80NDgwLT5hZGQoNDQwKTsKKyAgICBfNDQ4MC0+YWRkKDM2Nyk7Cisg
ICAgXzQ0ODAtPmFkZCgyNik7CisgICAgXzQ0ODAtPmFkZCg0NSk7CisgICAgXzQ0ODAtPmFkZCg1
MDYpOworICAgIF80NDc5LT5hZGQoMTgyKTsKKyAgICBfNDQ3OS0+YWRkKDIyOSk7CisgICAgXzQ0
NzktPmFkZCgxNjgpOworICAgIF80NDc5LT5hZGQoMik7CisgICAgXzQ0NzktPmFkZCgxMjYpOwor
ICAgIF80NDc5LT5hZGQoMjApOworICAgIF80NDc5LT5hZGQoMzU5KTsKKyAgICBfNDQ3OS0+YWRk
KDM3Mik7CisgICAgXzQ0NzktPmFkZCg5OCk7CisgICAgXzQ0NzktPmFkZCg0MjApOworICAgIF80
NDc5LT5hZGQoNDI0KTsKKyAgICBfNDQ3OS0+YWRkKDQyOCk7CisgICAgXzQ0NzktPmFkZCg0MzIp
OworICAgIF80NDc5LT5hZGQoNDM2KTsKKyAgICBfNDQ3OS0+YWRkKDQ0MCk7CisgICAgXzQ0Nzkt
PmFkZCgzNjcpOworICAgIF80NDc5LT5hZGQoMjYpOworICAgIF80NDc5LT5hZGQoNDUpOworICAg
IF80NDc5LT5hZGQoNTA2KTsKKyAgICBfNDQ3NS0+YWRkKDE4Mik7CisgICAgXzQ0NzUtPmFkZCg0
MzYpOworICAgIF80NDc1LT5hZGQoMjI5KTsKKyAgICBfNDQ3NS0+YWRkKDEyNik7CisgICAgXzQ0
NzUtPmFkZCgzNjcpOworICAgIF80NDc1LT5hZGQoNDUpOworICAgIF80NDc1LT5hZGQoNDMyKTsK
KyAgICBfNDQ3NS0+YWRkKDM1OSk7CisgICAgXzQ0NzUtPmFkZCg0NDApOworICAgIF80NDc1LT5h
ZGQoMjYpOworICAgIF80NDc1LT5hZGQoMTY4KTsKKyAgICBfNDQ3NS0+YWRkKDQyOCk7CisgICAg
XzQ0NzUtPmFkZCg5OCk7CisgICAgXzQ0NzUtPmFkZCgyKTsKKyAgICBfNDQ3NS0+YWRkKDQyMCk7
CisgICAgXzQ0NzUtPmFkZCgyMCk7CisgICAgXzQ0NzUtPmFkZCg0MjQpOworICAgIF80NDc1LT5h
ZGQoMzcyKTsKKyAgICBfNDQ3OC0+YWRkKDE4Mik7CisgICAgXzQ0NzgtPmFkZCg0MzYpOworICAg
IF80NDc4LT5hZGQoMjI5KTsKKyAgICBfNDQ3OC0+YWRkKDEyNik7CisgICAgXzQ0NzgtPmFkZCgz
NjcpOworICAgIF80NDc4LT5hZGQoNDUpOworICAgIF80NDc4LT5hZGQoNDMyKTsKKyAgICBfNDQ3
OC0+YWRkKDM1OSk7CisgICAgXzQ0NzgtPmFkZCg0NDApOworICAgIF80NDc4LT5hZGQoMjYpOwor
ICAgIF80NDc4LT5hZGQoMTY4KTsKKyAgICBfNDQ3OC0+YWRkKDQyOCk7CisgICAgXzQ0NzgtPmFk
ZCg5OCk7CisgICAgXzQ0NzgtPmFkZCgyKTsKKyAgICBfNDQ3OC0+YWRkKDQyMCk7CisgICAgXzQ0
NzgtPmFkZCgyMCk7CisgICAgXzQ0NzgtPmFkZCg0MjQpOworICAgIF80NDc4LT5hZGQoMzcyKTsK
KyAgICBfNDQ3OC0+YWRkKDMyMCk7CisgICAgXzQ0NzctPmFkZCgxODIpOworICAgIF80NDc3LT5h
ZGQoNDM2KTsKKyAgICBfNDQ3Ny0+YWRkKDIyOSk7CisgICAgXzQ0NzctPmFkZCgxMjYpOworICAg
IF80NDc3LT5hZGQoMzY3KTsKKyAgICBfNDQ3Ny0+YWRkKDI4Nyk7CisgICAgXzQ0NzctPmFkZCg0
MzIpOworICAgIF80NDc3LT5hZGQoNDUpOworICAgIF80NDc3LT5hZGQoMjYpOworICAgIF80NDc3
LT5hZGQoNDQwKTsKKyAgICBfNDQ3Ny0+YWRkKDE2OCk7CisgICAgXzQ0NzctPmFkZCg0MjgpOwor
ICAgIF80NDc3LT5hZGQoMzU5KTsKKyAgICBfNDQ3Ny0+YWRkKDIpOworICAgIF80NDc3LT5hZGQo
NDIwKTsKKyAgICBfNDQ3Ny0+YWRkKDIwKTsKKyAgICBfNDQ3Ny0+YWRkKDQyNCk7CisgICAgXzQ0
NzctPmFkZCgzNzIpOworICAgIF80NDc3LT5hZGQoOTgpOworICAgIF80NDc3LT5hZGQoMjUwKTsK
KyAgICBfNDQ3Ny0+YWRkKDE3OSk7CisgICAgXzQ0NzctPmFkZCg1MDUpOworICAgIF80NDc3LT5h
ZGQoMTExKTsKKyAgICBfNDQ3Ny0+YWRkKDI3Mik7CisgICAgXzQ0NzctPmFkZCgyMzIpOworICAg
IF80NDc3LT5hZGQoNTA0KTsKKyAgICBfNDQ3Ni0+YWRkKDE4Mik7CisgICAgXzQ0NzYtPmFkZCg0
MzYpOworICAgIF80NDc2LT5hZGQoMjI5KTsKKyAgICBfNDQ3Ni0+YWRkKDEyNik7CisgICAgXzQ0
NzYtPmFkZCgzNjcpOworICAgIF80NDc2LT5hZGQoMjg3KTsKKyAgICBfNDQ3Ni0+YWRkKDQzMik7
CisgICAgXzQ0NzYtPmFkZCg0NSk7CisgICAgXzQ0NzYtPmFkZCgyNik7CisgICAgXzQ0NzYtPmFk
ZCg0NDApOworICAgIF80NDc2LT5hZGQoMTY4KTsKKyAgICBfNDQ3Ni0+YWRkKDQyOCk7CisgICAg
XzQ0NzYtPmFkZCgzNTkpOworICAgIF80NDc2LT5hZGQoMik7CisgICAgXzQ0NzYtPmFkZCg0MjAp
OworICAgIF80NDc2LT5hZGQoMjApOworICAgIF80NDc2LT5hZGQoNDI0KTsKKyAgICBfNDQ3Ni0+
YWRkKDM3Mik7CisgICAgXzQ0NzYtPmFkZCg5OCk7CisgICAgXzQ0NzYtPmFkZCgyNTApOworICAg
IF80NDc2LT5hZGQoMTc5KTsKKyAgICBfNDQ3Ni0+YWRkKDUwNSk7CisgICAgXzQ0NzYtPmFkZCgx
MTEpOworICAgIF80NDc2LT5hZGQoMjcyKTsKKyAgICBfNDQ3Ni0+YWRkKDIzMik7CisgICAgXzQ0
NzYtPmFkZCg1MDQpOworICAgIF80NDc1LT5hZGQoMTgyKTsKKyAgICBfNDQ3NS0+YWRkKDQzNik7
CisgICAgXzQ0NzUtPmFkZCgyMjkpOworICAgIF80NDc1LT5hZGQoMTI2KTsKKyAgICBfNDQ3NS0+
YWRkKDI4Nyk7CisgICAgXzQ0NzUtPmFkZCgzNjcpOworICAgIF80NDc1LT5hZGQoNDMyKTsKKyAg
ICBfNDQ3NS0+YWRkKDIzNik7CisgICAgXzQ0NzUtPmFkZCgxNzkpOworICAgIF80NDc1LT5hZGQo
MjMyKTsKKyAgICBfNDQ3NS0+YWRkKDQ1KTsKKyAgICBfNDQ3NS0+YWRkKDI1MCk7CisgICAgXzQ0
NzUtPmFkZCgyNzIpOworICAgIF80NDc1LT5hZGQoMTExKTsKKyAgICBfNDQ3NS0+YWRkKDI2KTsK
KyAgICBfNDQ3NS0+YWRkKDQ0MCk7CisgICAgXzQ0NzUtPmFkZCgxNjgpOworICAgIF80NDc1LT5h
ZGQoNDI4KTsKKyAgICBfNDQ3NS0+YWRkKDk4KTsKKyAgICBfNDQ3NS0+YWRkKDM1OSk7CisgICAg
XzQ0NzUtPmFkZCgyKTsKKyAgICBfNDQ3NS0+YWRkKDQyMCk7CisgICAgXzQ0NzUtPmFkZCgyMCk7
CisgICAgXzQ0NzUtPmFkZCg0MjQpOworICAgIF80NDc1LT5hZGQoMzcyKTsKKyAgICBfNDQ3OC0+
YWRkKDE4Mik7CisgICAgXzQ0NzgtPmFkZCg0MzYpOworICAgIF80NDc4LT5hZGQoMjI5KTsKKyAg
ICBfNDQ3OC0+YWRkKDEyNik7CisgICAgXzQ0NzgtPmFkZCgyODcpOworICAgIF80NDc4LT5hZGQo
MzY3KTsKKyAgICBfNDQ3OC0+YWRkKDQzMik7CisgICAgXzQ0NzgtPmFkZCgzMzgpOworICAgIF80
NDc4LT5hZGQoMTc5KTsKKyAgICBfNDQ3OC0+YWRkKDIzMik7CisgICAgXzQ0NzgtPmFkZCg0NSk7
CisgICAgXzQ0NzgtPmFkZCgyNTApOworICAgIF80NDc4LT5hZGQoMjcyKTsKKyAgICBfNDQ3OC0+
YWRkKDExMSk7CisgICAgXzQ0NzgtPmFkZCgyNik7CisgICAgXzQ0NzgtPmFkZCg0NDApOworICAg
IF80NDc4LT5hZGQoMTY4KTsKKyAgICBfNDQ3OC0+YWRkKDQyOCk7CisgICAgXzQ0NzgtPmFkZCg5
OCk7CisgICAgXzQ0NzgtPmFkZCgzNTkpOworICAgIF80NDc4LT5hZGQoMik7CisgICAgXzQ0Nzgt
PmFkZCg0MjApOworICAgIF80NDc4LT5hZGQoMjApOworICAgIF80NDc4LT5hZGQoNDI0KTsKKyAg
ICBfNDQ3OC0+YWRkKDM3Mik7CisgICAgXzQ0NzgtPmFkZCgzMjApOworICAgIF80NDczLT5hZGQo
MTgyKTsKKyAgICBfNDQ3My0+YWRkKDQzNik7CisgICAgXzQ0NzMtPmFkZCgyMjkpOworICAgIF80
NDczLT5hZGQoMTI2KTsKKyAgICBfNDQ3My0+YWRkKDI4Nyk7CisgICAgXzQ0NzMtPmFkZCgzNjcp
OworICAgIF80NDczLT5hZGQoNDMyKTsKKyAgICBfNDQ3My0+YWRkKDE3OSk7CisgICAgXzQ0NzMt
PmFkZCgzNzIpOworICAgIF80NDczLT5hZGQoNDUpOworICAgIF80NDczLT5hZGQoMjUwKTsKKyAg
ICBfNDQ3My0+YWRkKDQyNCk7CisgICAgXzQ0NzMtPmFkZCgxMTEpOworICAgIF80NDczLT5hZGQo
MjYpOworICAgIF80NDczLT5hZGQoNDQwKTsKKyAgICBfNDQ3My0+YWRkKDE2OCk7CisgICAgXzQ0
NzMtPmFkZCg0MjgpOworICAgIF80NDczLT5hZGQoMzU5KTsKKyAgICBfNDQ3My0+YWRkKDIpOwor
ICAgIF80NDczLT5hZGQoOTgpOworICAgIF80NDczLT5hZGQoNDIwKTsKKyAgICBfNDQ3My0+YWRk
KDIwKTsKKyAgICBfNDQ3NC0+YWRkKDE4Mik7CisgICAgXzQ0NzQtPmFkZCg0MzYpOworICAgIF80
NDc0LT5hZGQoMjI5KTsKKyAgICBfNDQ3NC0+YWRkKDEyNik7CisgICAgXzQ0NzQtPmFkZCgyODcp
OworICAgIF80NDc0LT5hZGQoMzY3KTsKKyAgICBfNDQ3NC0+YWRkKDQzMik7CisgICAgXzQ0NzQt
PmFkZCgxNzkpOworICAgIF80NDc0LT5hZGQoMzcyKTsKKyAgICBfNDQ3NC0+YWRkKDQ1KTsKKyAg
ICBfNDQ3NC0+YWRkKDI1MCk7CisgICAgXzQ0NzQtPmFkZCg0MjQpOworICAgIF80NDc0LT5hZGQo
MTExKTsKKyAgICBfNDQ3NC0+YWRkKDI2KTsKKyAgICBfNDQ3NC0+YWRkKDQ0MCk7CisgICAgXzQ0
NzQtPmFkZCgxNjgpOworICAgIF80NDc0LT5hZGQoNDI4KTsKKyAgICBfNDQ3NC0+YWRkKDM1OSk7
CisgICAgXzQ0NzQtPmFkZCgyKTsKKyAgICBfNDQ3NC0+YWRkKDk4KTsKKyAgICBfNDQ3NC0+YWRk
KDQyMCk7CisgICAgXzQ0NzQtPmFkZCgyMCk7CisgICAgXzQ0NzItPmFkZCgxODIpOworICAgIF80
NDcyLT5hZGQoNDM2KTsKKyAgICBfNDQ3Mi0+YWRkKDIyOSk7CisgICAgXzQ0NzItPmFkZCgxMjYp
OworICAgIF80NDcyLT5hZGQoMjg3KTsKKyAgICBfNDQ3Mi0+YWRkKDM2Nyk7CisgICAgXzQ0NzIt
PmFkZCgxNzkpOworICAgIF80NDcyLT5hZGQoNDUpOworICAgIF80NDcyLT5hZGQoMjUwKTsKKyAg
ICBfNDQ3Mi0+YWRkKDExMSk7CisgICAgXzQ0NzItPmFkZCgyNik7CisgICAgXzQ0NzItPmFkZCg0
NDApOworICAgIF80NDcyLT5hZGQoMTY4KTsKKyAgICBfNDQ3Mi0+YWRkKDQyOCk7CisgICAgXzQ0
NzItPmFkZCgyKTsKKyAgICBfNDQ3Mi0+YWRkKDM1OSk7CisgICAgXzQ0NzItPmFkZCg0MjQpOwor
ICAgIF80NDcyLT5hZGQoNDIwKTsKKyAgICBfNDQ3Mi0+YWRkKDIwKTsKKyAgICBfNDQ3Mi0+YWRk
KDk4KTsKKyAgICBfNDQ3Mi0+YWRkKDM3Mik7CisgICAgXzQ0NzItPmFkZCg0MzIpOworICAgIF80
NDY5LT5hZGQoMTgyKTsKKyAgICBfNDQ2OS0+YWRkKDQzNik7CisgICAgXzQ0NjktPmFkZCgyMjkp
OworICAgIF80NDY5LT5hZGQoMTI2KTsKKyAgICBfNDQ2OS0+YWRkKDI4Nyk7CisgICAgXzQ0Njkt
PmFkZCgzNjcpOworICAgIF80NDY5LT5hZGQoMTc5KTsKKyAgICBfNDQ2OS0+YWRkKDQ1KTsKKyAg
ICBfNDQ2OS0+YWRkKDI1MCk7CisgICAgXzQ0NjktPmFkZCgxMTEpOworICAgIF80NDY5LT5hZGQo
MjYpOworICAgIF80NDY5LT5hZGQoNDQwKTsKKyAgICBfNDQ2OS0+YWRkKDE2OCk7CisgICAgXzQ0
NjktPmFkZCg0MjgpOworICAgIF80NDY5LT5hZGQoMik7CisgICAgXzQ0NjktPmFkZCgzNTkpOwor
ICAgIF80NDY5LT5hZGQoNDI0KTsKKyAgICBfNDQ2OS0+YWRkKDQyMCk7CisgICAgXzQ0NjktPmFk
ZCgyMCk7CisgICAgXzQ0NjktPmFkZCg5OCk7CisgICAgXzQ0NjktPmFkZCgzNzIpOworICAgIF80
NDY5LT5hZGQoNDMyKTsKKyAgICBfNDQ3MC0+YWRkKDE4Mik7CisgICAgXzQ0NzAtPmFkZCg0MzYp
OworICAgIF80NDcwLT5hZGQoMjI5KTsKKyAgICBfNDQ3MC0+YWRkKDEyNik7CisgICAgXzQ0NzAt
PmFkZCgyODcpOworICAgIF80NDcwLT5hZGQoMzY3KTsKKyAgICBfNDQ3MC0+YWRkKDQzMik7Cisg
ICAgXzQ0NzAtPmFkZCgxNzkpOworICAgIF80NDcwLT5hZGQoNDIwKTsKKyAgICBfNDQ3MC0+YWRk
KDQ1KTsKKyAgICBfNDQ3MC0+YWRkKDI1MCk7CisgICAgXzQ0NzAtPmFkZCgxMTEpOworICAgIF80
NDcwLT5hZGQoMjYpOworICAgIF80NDcwLT5hZGQoNDQwKTsKKyAgICBfNDQ3MC0+YWRkKDE2OCk7
CisgICAgXzQ0NzAtPmFkZCg0MjgpOworICAgIF80NDcwLT5hZGQoMzU5KTsKKyAgICBfNDQ3MC0+
YWRkKDIpOworICAgIF80NDcwLT5hZGQoNDI0KTsKKyAgICBfNDQ3MC0+YWRkKDIwKTsKKyAgICBf
NDQ3MC0+YWRkKDM3Mik7CisgICAgXzQ0NzAtPmFkZCg5OCk7CisgICAgXzQ0NzAtPmFkZCg3Mik7
CisgICAgXzQ0NzAtPmFkZCg1MDMpOworICAgIF80NDcxLT5hZGQoMTgyKTsKKyAgICBfNDQ3MS0+
YWRkKDQzNik7CisgICAgXzQ0NzEtPmFkZCgyMjkpOworICAgIF80NDcxLT5hZGQoMTI2KTsKKyAg
ICBfNDQ3MS0+YWRkKDI4Nyk7CisgICAgXzQ0NzEtPmFkZCgzNjcpOworICAgIF80NDcxLT5hZGQo
NDMyKTsKKyAgICBfNDQ3MS0+YWRkKDE3OSk7CisgICAgXzQ0NzEtPmFkZCg0MjApOworICAgIF80
NDcxLT5hZGQoNDUpOworICAgIF80NDcxLT5hZGQoMjUwKTsKKyAgICBfNDQ3MS0+YWRkKDExMSk7
CisgICAgXzQ0NzEtPmFkZCgyNik7CisgICAgXzQ0NzEtPmFkZCg0NDApOworICAgIF80NDcxLT5h
ZGQoMTY4KTsKKyAgICBfNDQ3MS0+YWRkKDQyOCk7CisgICAgXzQ0NzEtPmFkZCgzNTkpOworICAg
IF80NDcxLT5hZGQoMik7CisgICAgXzQ0NzEtPmFkZCg0MjQpOworICAgIF80NDcxLT5hZGQoMjAp
OworICAgIF80NDcxLT5hZGQoMzcyKTsKKyAgICBfNDQ3MS0+YWRkKDk4KTsKKyAgICBfNDQ3MS0+
YWRkKDcyKTsKKyAgICBfNDQ3MS0+YWRkKDUwMyk7CisgICAgXzQ0NzItPmFkZCgxODIpOworICAg
IF80NDcyLT5hZGQoNDM2KTsKKyAgICBfNDQ3Mi0+YWRkKDIyOSk7CisgICAgXzQ0NzItPmFkZCgx
MjYpOworICAgIF80NDcyLT5hZGQoMjg3KTsKKyAgICBfNDQ3Mi0+YWRkKDM2Nyk7CisgICAgXzQ0
NzItPmFkZCg0MzIpOworICAgIF80NDcyLT5hZGQoMTc5KTsKKyAgICBfNDQ3Mi0+YWRkKDQ1KTsK
KyAgICBfNDQ3Mi0+YWRkKDI1MCk7CisgICAgXzQ0NzItPmFkZCgxMTEpOworICAgIF80NDcyLT5h
ZGQoMjYpOworICAgIF80NDcyLT5hZGQoNDQwKTsKKyAgICBfNDQ3Mi0+YWRkKDE2OCk7CisgICAg
XzQ0NzItPmFkZCg0MjgpOworICAgIF80NDcyLT5hZGQoOTgpOworICAgIF80NDcyLT5hZGQoMzU5
KTsKKyAgICBfNDQ3Mi0+YWRkKDIpOworICAgIF80NDcyLT5hZGQoNDIwKTsKKyAgICBfNDQ3Mi0+
YWRkKDIwKTsKKyAgICBfNDQ3Mi0+YWRkKDcyKTsKKyAgICBfNDQ3Mi0+YWRkKDQyNCk7CisgICAg
XzQ0NzItPmFkZCgzNzIpOworICAgIF80NDcyLT5hZGQoMTgzKTsKKyAgICBfNDQ2OS0+YWRkKDE4
Mik7CisgICAgXzQ0NjktPmFkZCg0MzYpOworICAgIF80NDY5LT5hZGQoMjI5KTsKKyAgICBfNDQ2
OS0+YWRkKDEyNik7CisgICAgXzQ0NjktPmFkZCgyODcpOworICAgIF80NDY5LT5hZGQoMzY3KTsK
KyAgICBfNDQ2OS0+YWRkKDQzMik7CisgICAgXzQ0NjktPmFkZCgxNzkpOworICAgIF80NDY5LT5h
ZGQoNDUpOworICAgIF80NDY5LT5hZGQoMjUwKTsKKyAgICBfNDQ2OS0+YWRkKDExMSk7CisgICAg
XzQ0NjktPmFkZCgyNik7CisgICAgXzQ0NjktPmFkZCg0NDApOworICAgIF80NDY5LT5hZGQoMTY4
KTsKKyAgICBfNDQ2OS0+YWRkKDQyOCk7CisgICAgXzQ0NjktPmFkZCg5OCk7CisgICAgXzQ0Njkt
PmFkZCgzNTkpOworICAgIF80NDY5LT5hZGQoMik7CisgICAgXzQ0NjktPmFkZCg0MjApOworICAg
IF80NDY5LT5hZGQoMjApOworICAgIF80NDY5LT5hZGQoNzIpOworICAgIF80NDY5LT5hZGQoNDI0
KTsKKyAgICBfNDQ2OS0+YWRkKDM3Mik7CisgICAgZGVsZXRlIF80NDY5OworICAgIGRlbGV0ZSBf
NDQ3MDsKKyAgICBkZWxldGUgXzQ0NzE7CisgICAgZGVsZXRlIF80NDcyOworICAgIGRlbGV0ZSBf
NDQ3MzsKKyAgICBkZWxldGUgXzQ0NzQ7CisgICAgZGVsZXRlIF80NDc1OworICAgIGRlbGV0ZSBf
NDQ3NjsKKyAgICBkZWxldGUgXzQ0Nzc7CisgICAgZGVsZXRlIF80NDc4OworICAgIGRlbGV0ZSBf
NDQ3OTsKKyAgICBkZWxldGUgXzQ0ODA7CisgICAgZGVsZXRlIF80NDgxOworICAgIGRlbGV0ZSBf
NDQ4MjsKKyAgICBkZWxldGUgXzQ0ODM7CisgICAgZGVsZXRlIF80NDg0OworICAgIGF1dG8qIF80
NDg1ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0ODYg
PSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDQ4NyA9IG5l
dyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NDg4ID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0ODkgPSBuZXcgSGFzaFNl
dDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDQ5MCA9IG5ldyBIYXNoU2V0PDo6
SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NDkxID0gbmV3IEhhc2hTZXQ8OjpKU0M6
OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0OTIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZH
OjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDQ5MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIGF1dG8qIF80NDk0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+
KCk7CisgICAgYXV0byogXzQ0OTUgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBhdXRvKiBfNDQ5NiA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAg
IGF1dG8qIF80NDk3ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0
byogXzQ0OTggPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBf
NDQ5OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTAw
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MDEgPSBu
ZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUwMiA9IG5ldyBI
YXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTAzID0gbmV3IEhhc2hT
ZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MDQgPSBuZXcgSGFzaFNldDw6
OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUwNSA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTA2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRG
Rzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MDcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpO
b2RlKj4oKTsKKyAgICBhdXRvKiBfNDUwOCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIGF1dG8qIF80NTA5ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7
CisgICAgYXV0byogXzQ1MTAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAg
ICBhdXRvKiBfNDUxMSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1
dG8qIF80NTEyID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byog
XzQ1MTMgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUx
NCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTE1ID0g
bmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MTYgPSBuZXcg
SGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUxNyA9IG5ldyBIYXNo
U2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgICpfNDQ4NSA9IFdURk1vdmUoKl80NTE3KTsK
KyAgICBkZWxldGUgXzQ1MTc7CisgICAgYXV0byogXzQ1MTggPSBuZXcgSGFzaFNldDw6OkpTQzo6
REZHOjpOb2RlKj4oKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBf
NDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzYjg4
bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjM4NzAwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUxOC0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmMyYzg4bHUpKTsKKyAg
ICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMx
NTkwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjM3NWE4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUxOC0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUpKTsK
KyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjM0ZjM4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUx
OC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUp
KTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNzM4bHUpKTsKKyAgICBf
NDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhZWQ4
bHUpKTsKKyAgICBfNDUxOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzRmMzhsdSkpOworICAgIF80NTE4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUxOC0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80NTE4LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MTgt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAg
ICBfNDUxOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThs
dSkpOworICAgIF80NTE4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZjYTU3OGx1KSk7CisgICAgXzQ1MTgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMyMjM4bHUpKTsKKyAgICBfNDUxOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzFmNjhsdSkpOworICAgIF80NTE4LT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTgtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxYmE4bHUpKTsKKyAgICBfNDUxOC0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAg
IF80NTE4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1
KSk7CisgICAgXzQ1MTgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjMwOWQ4bHUpKTsKKyAgICAqXzQ0ODYgPSBXVEZNb3ZlKCpfNDUxOCk7CisgICAgZGVsZXRlIF80
NTE4OworICAgIGF1dG8qIF80NTE5ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7
CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNTVjOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1
MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1
KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MTktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAg
XzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVh
OGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MTktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7Cisg
ICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YzkxOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7
CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMDlkOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1
MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTY0MGx1
KSk7CisgICAgXzQ1MTktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjM1NjQwbHUpKTsKKyAgICBfNDUxOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTE5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTktPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4bHUpKTsKKyAgICBfNDUxOS0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzQwMzhsdSkpOworICAgIF80NTE5LT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAg
XzQ1MTktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUp
KTsKKyAgICBfNDUxOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
Y2E1NzhsdSkpOworICAgIF80NTE5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MTktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjMxZjY4bHUpKTsKKyAgICBfNDUxOS0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTE5LT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MTktPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBf
NDUxOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkp
OworICAgIF80NTE5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MDlkOGx1KSk7CisgICAgKl80NDg3ID0gV1RGTW92ZSgqXzQ1MTkpOworICAgIGRlbGV0ZSBfNDUx
OTsKKyAgICBhdXRvKiBfNDUyMCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzU1YzhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2NjZDhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZiZDBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzNiODhsdSkpOworICAgIF80NTIw
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzg3MDBsdSkp
OworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2M2FjODBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2NhZjhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2YzJjODhsdSkpOworICAgIF80NTIwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M1NThsdSkpOworICAgIF80
NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBs
dSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2Mzc1YThsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NlYjhsdSkpOworICAg
IF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzRm
MzhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2M5MThsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2M2E4YzBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIwLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M3MzhsdSkpOwor
ICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzA5ZDhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2FlZDhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80NTIw
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7Cisg
ICAgXzQ1MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgw
bHUpKTsKKyAgICBfNDUyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzIyMzhsdSkpOworICAgIF80NTIwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyMC0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIwLT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MjAt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4bHUpKTsKKyAg
ICBfNDUyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFmNjhs
dSkpOworICAgIF80NTIwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMGNhOGx1KSk7CisgICAgXzQ1MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMxYmE4bHUpKTsKKyAgICBfNDUyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIwLT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MjAtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICAqXzQ0ODgg
PSBXVEZNb3ZlKCpfNDUyMCk7CisgICAgZGVsZXRlIF80NTIwOworICAgIGF1dG8qIF80NTIxID0g
bmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MjEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7
CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNmJkMGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1
MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1
KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MjEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAg
XzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2Vi
OGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7Cisg
ICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YzczOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MjEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7
CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzY2FmOGx1KSk7CisgICAgXzQ1MjEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkpOworICAgIF80NTIxLT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MjEtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0MDM4bHUpKTsKKyAgICBfNDUyMS0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkpOworICAg
IF80NTIxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1
KSk7CisgICAgXzQ1MjEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmNhNTc4bHUpKTsKKyAgICBfNDUyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80NTIxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MjEtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMS0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFiYThsdSkpOworICAgIF80NTIxLT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAg
XzQ1MjEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUp
KTsKKyAgICBfNDUyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzA5ZDhsdSkpOworICAgICpfNDQ4OSA9IFdURk1vdmUoKl80NTIxKTsKKyAgICBkZWxldGUgXzQ1
MjE7CisgICAgYXV0byogXzQ1MjIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjM1NWM4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzYjg4bHUpKTsKKyAgICBfNDUy
Mi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM4NzAwbHUp
KTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmMyYzg4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM3NWE4bHUpKTsKKyAgICBf
NDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgw
bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUyMi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsKKyAg
ICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMw
MTY4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNzM4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUyMi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsK
KyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmNhNTc4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUyMi0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIyLT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAg
XzQ1MjItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4bHUp
KTsKKyAgICBfNDUyMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzQwMzhsdSkpOworICAgIF80NTIyLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MjItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMi0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTIyLT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MjItPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxZjY4bHUpKTsKKyAgICBf
NDUyMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkp
OworICAgIF80NTIyLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MWJhOGx1KSk7CisgICAgXzQ1MjItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTIyLT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgKl80NDkwID0gV1RGTW92ZSgq
XzQ1MjIpOworICAgIGRlbGV0ZSBfNDUyMjsKKyAgICBhdXRvKiBfNDUyMyA9IG5ldyBIYXNoU2V0
PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzU1YzhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NjZDhsdSkpOworICAgIF80NTIz
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZiZDBsdSkp
OworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzNiODhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2Mzg3MDBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2FjODBsdSkpOworICAgIF80NTIzLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NhZjhsdSkpOworICAgIF80
NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2YzJjODhs
dSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2M2FlZDhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzc1YThsdSkpOworICAgIF80NTIzLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M3MzhsdSkpOworICAg
IF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzM0
ODBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2M2NlYjhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzRmMzhsdSkpOworICAgIF80NTIzLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M5MThsdSkpOwor
ICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
M2E4YzBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M1NThsdSkpOworICAgIF80NTIz
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkp
OworICAgIF80NTIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MGNhOGx1KSk7CisgICAgXzQ1MjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80NTIzLT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MjMtPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyMy0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80
NTIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7
CisgICAgXzQ1MjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMy
MjM4bHUpKTsKKyAgICBfNDUyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzFmNjhsdSkpOworICAgIF80NTIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxYmE4bHUpKTsKKyAgICBfNDUyMy0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIzLT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1
MjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsK
KyAgICAqXzQ0OTEgPSBXVEZNb3ZlKCpfNDUyMyk7CisgICAgZGVsZXRlIF80NTIzOworICAgIGF1
dG8qIF80NTI0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1MjQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7
CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzY2NkOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1
MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1
KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzOWVlOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmQzOGx1KSk7CisgICAg
XzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5
MGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MjQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7Cisg
ICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
Y2ViOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MjQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7
CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMDE2OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1
MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1
KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzOTY3OGx1KSk7CisgICAgXzQ1MjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjM5ZWU4bHUpKTsKKyAgICBfNDUyNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgIF80NTI0LT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MjQtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUy
NC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkpOwor
ICAgIF80NTI0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJh
OGx1KSk7CisgICAgXzQ1MjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTI0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgKl80NDkyID0gV1RGTW92ZSgqXzQ1
MjQpOworICAgIGRlbGV0ZSBfNDUyNDsKKyAgICBhdXRvKiBfNDUyNSA9IG5ldyBIYXNoU2V0PDo6
SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzU1YzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NjZDhsdSkpOworICAgIF80NTI1LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZiZDBsdSkpOwor
ICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzNiODhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2Mzg3MDBsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2FjODBsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NhZjhsdSkpOworICAgIF80NTI1
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZmMThsdSkp
OworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2YzJjODhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2MzZkMzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTI1LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzc1YThsdSkpOworICAgIF80
NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2YzFiYThs
dSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzM0ODBsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NlYjhsdSkpOworICAgIF80NTI1LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzRmMzhsdSkpOworICAg
IF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M5
MThsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2M2E4YzBsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTI1LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M1NThsdSkpOwor
ICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzA5ZDhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2M3MzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2FlZDhsdSkpOworICAgIF80NTI1LT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmYxOGx1KSk7CisgICAgXzQ1MjUtPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBf
NDUyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkp
OworICAgIF80NTI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MGNhOGx1KSk7CisgICAgXzQ1MjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2MzFiYThsdSkpOworICAgIF80NTI1LT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjUtPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNS0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAgICpf
NDQ5MyA9IFdURk1vdmUoKl80NTI1KTsKKyAgICBkZWxldGUgXzQ1MjU7CisgICAgYXV0byogXzQ1
MjYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDUyNi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAgICBf
NDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4
bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMzYjg4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyNi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM4NzAwbHUpKTsKKyAg
ICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNj
YWY4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUpKTsKKyAgICBfNDUyNi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsK
KyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNjOTE4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUy
Ni0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUp
KTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNjNzM4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM3NWE4bHUpKTsKKyAgICBf
NDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmMyYzg4
bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmMxYmE4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2ZDM4bHUpKTsKKyAgICBfNDUyNi0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAgIF80
NTI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7
CisgICAgXzQ1MjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMz
NDgwbHUpKTsKKyAgICBfNDUyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzFiYThsdSkpOworICAgIF80NTI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNi0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAgICpfNDQ5NCA9IFdU
Rk1vdmUoKl80NTI2KTsKKyAgICBkZWxldGUgXzQ1MjY7CisgICAgYXV0byogXzQ1MjcgPSBuZXcg
SGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAgICBfNDUyNy0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAg
ICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2
YmQwbHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMzYjg4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNy0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsK
KyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNhOGMwbHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNjZWI4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUy
Ny0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjOTE4bHUp
KTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICBf
NDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNzM4
bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4bHUpKTsKKyAgICBfNDUyNy0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgIF80NTI3LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1Mjct
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAg
ICBfNDUyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFiYThs
dSkpOworICAgIF80NTI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMDE2OGx1KSk7CisgICAgXzQ1MjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAgICpfNDQ5NSA9IFdURk1vdmUoKl80NTI3
KTsKKyAgICBkZWxldGUgXzQ1Mjc7CisgICAgYXV0byogXzQ1MjggPSBuZXcgSGFzaFNldDw6OkpT
Qzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBfNDUyOC0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAg
ICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMz
Yjg4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUyOC0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsK
KyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNjZWI4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsKKyAgICBfNDUy
OC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4bHUp
KTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNzM4bHUpKTsKKyAgICBf
NDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhZWQ4
bHUpKTsKKyAgICBfNDUyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzZiZDBsdSkpOworICAgIF80NTI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyOC0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFiYThsdSkpOworICAgIF80NTI4LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1Mjgt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAg
ICBfNDUyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhs
dSkpOworICAgICpfNDQ5NiA9IFdURk1vdmUoKl80NTI4KTsKKyAgICBkZWxldGUgXzQ1Mjg7Cisg
ICAgYXV0byogXzQ1MjkgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBf
NDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4
bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyOS0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzYjg4bHUpKTsKKyAg
ICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMw
OWQ4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUyOS0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsK
KyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNjNzM4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBfNDUy
OS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUp
KTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyOS0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTI5
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7Cisg
ICAgXzQ1MjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxYmE4
bHUpKTsKKyAgICBfNDUyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzAxNjhsdSkpOworICAgIF80NTI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICAqXzQ0OTcgPSBXVEZNb3ZlKCpfNDUy
OSk7CisgICAgZGVsZXRlIF80NTI5OworICAgIGF1dG8qIF80NTMwID0gbmV3IEhhc2hTZXQ8OjpK
U0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1MzAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MzAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MzAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjA3OGx1KSk7Cisg
ICAgXzQ1MzAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZjM0OGx1KSk7CisgICAgXzQ1MzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjNmMDc4bHUpKTsKKyAgICBfNDUzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTMwLT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjM0OGx1KSk7CisgICAgXzQ1MzAtPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICAqXzQ0OTggPSBX
VEZNb3ZlKCpfNDUzMCk7CisgICAgZGVsZXRlIF80NTMwOworICAgIGF1dG8qIF80NTMxID0gbmV3
IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1MzEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MzEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7Cisg
ICAgXzQ1MzEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4
bHUpKTsKKyAgICBfNDUzMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2M2E4YzBsdSkpOworICAgICpfNDQ5OSA9IFdURk1vdmUoKl80NTMxKTsKKyAgICBkZWxldGUg
XzQ1MzE7CisgICAgYXV0byogXzQ1MzIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICBfNDUzMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNmMDc4bHUpKTsKKyAgICBfNDUzMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2YwNzhsdSkpOworICAgIF80NTMyLT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MzItPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmMzQ4bHUpKTsKKyAgICBfNDUzMi0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2E4YzBsdSkpOworICAgICpfNDUw
MCA9IFdURk1vdmUoKl80NTMyKTsKKyAgICBkZWxldGUgXzQ1MzI7CisgICAgXzQ1MDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAg
XzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJk
MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7Cisg
ICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
M2I4OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7
CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZjYTU3OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1
KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAg
XzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYz
OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7Cisg
ICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MWJhOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7
CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzY2ViOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1
KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAg
XzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThj
MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7Cisg
ICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NzVhOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7
CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNTVjOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1
MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1
KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAg
XzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4
OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7Cisg
ICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZj
YTU3OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7
CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMTU5MGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1
MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1
KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAg
XzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJh
OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7Cisg
ICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
Y2ViOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7
CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMjIzOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1
KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAg
XzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVh
OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7Cisg
ICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NTVjOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7
CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMzQ4MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1
KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAg
XzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3
OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7Cisg
ICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MTU5MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7
CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNTY0MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1
KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAg
XzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzcz
OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7Cisg
ICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MDE2OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7
CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYThjMGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1
KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAg
XzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4
OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7Cisg
ICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NmJkMGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7
CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzM2I4OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1
KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAg
XzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2Nk
OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7Cisg
ICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NGYzOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7
CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMWJhOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1
MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1
KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDYtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAg
XzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2
OGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDYtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7Cisg
ICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YThjMGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDYt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7
CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNzVhOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1
MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1
KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAg
XzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4
MGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNmQzOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7Cisg
ICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
M2I4OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7
CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZjYTU3OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1
KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAg
XzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmYx
OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7Cisg
ICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MWJhOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7
CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzM2I4OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1
KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAg
XzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlk
OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7Cisg
ICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YWM4MGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7
CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzY2ViOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAgXzQ1
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1
KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAg
XzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThj
MGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7Cisg
ICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YWVkOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7
CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNmQzOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1
MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1
KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAg
XzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMWJh
OGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7Cisg
ICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YzkxOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7
CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNzVhOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1
MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1
KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzNmQzOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAg
XzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3
OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmQzOGx1KSk7CisgICAgXzQ1MTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7Cisg
ICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YzczOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAgXzQ1MTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7
CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMDE2OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1
KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAg
XzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVh
OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7Cisg
ICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NTVjOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOWVlOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAgXzQ1MTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7
CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMzQ4MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1
KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAg
XzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThj
MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7Cisg
ICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NGYzOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7
CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNTVjOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1
MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1
KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAg
XzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkx
OGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MTEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7Cisg
ICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NmJkMGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MTEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7
CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMWJhOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1
MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1
KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAg
XzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3
OGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7Cisg
ICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MDlkOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MTIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7
CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYWM4MGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1
MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1
KSk7CisgICAgXzQ1MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAg
XzQ1MTQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNh
OGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzZjA3OGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjM0OGx1KSk7Cisg
ICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NmJkMGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjM0OGx1KSk7CisgICAgXzQ1MTUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjA3OGx1KSk7
CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMGNhOGx1KSk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBfNDUwMS0+ZmluZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNDI4bHUpKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXRlciA9PSBfNDUwMS0+ZW5kKCkpOworICAgIH0KKyAgICBhdXRvKiBfNDUz
MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIHsKKyAgICAgICAgYXV0
byBpdGVyID0gXzQ1MzMtPmZpbmQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMTQyOGx1KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgPT0gXzQ1MzMtPmVuZCgp
KTsKKyAgICB9CisgICAgZGVsZXRlIF80NTMzOworICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0g
XzQ1MTAtPmZpbmQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gXzQ1MTAtPmVuZCgpKTsKKyAgICB9
CisgICAgYXV0byogXzQ1MzQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAg
ICBfNDUzNC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5
Njc4bHUpKTsKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTM0LT5maW5kKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChpdGVyICE9IF80NTM0LT5lbmQoKSk7CisgICAgfQorICAgIGRlbGV0ZSBfNDUzNDsK
KyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTA4LT5maW5kKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChp
dGVyID09IF80NTA4LT5lbmQoKSk7CisgICAgfQorICAgIGF1dG8qIF80NTM1ID0gbmV3IEhhc2hT
ZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBfNDUz
NS0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4bHUpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUzNS0+ZW5kKCkpOworICAgIH0KKyAg
ICBkZWxldGUgXzQ1MzU7CisgICAgYXV0byogXzQ1MzYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZH
OjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUzNyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIGRlbGV0ZSBfNDUzNzsKKyAgICBkZWxldGUgXzQ1MzY7CisgICAgeworICAg
ICAgICBhdXRvIGl0ZXIgPSBfNDUxMS0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjM5Njc4bHUpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUx
MS0+ZW5kKCkpOworICAgIH0KKyAgICBhdXRvKiBfNDUzOCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gXzQ1MzgtPmZpbmQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGl0ZXIgPT0gXzQ1MzgtPmVuZCgpKTsKKyAgICB9CisgICAgZGVsZXRlIF80
NTM4OworICAgIF80NDY4LT5jbGVhcigpOworICAgIGF1dG8qIF80NTM5ID0gbmV3IEhhc2hTZXQ8
OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBfNDUwMS0+
ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNDI4bHUpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUwMS0+ZW5kKCkpOworICAgIH0KKyAgICBh
dXRvKiBfNDU0MCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIHsKKyAg
ICAgICAgYXV0byBpdGVyID0gXzQ1NDAtPmZpbmQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMTQyOGx1KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgPT0gXzQ1
NDAtPmVuZCgpKTsKKyAgICB9CisgICAgZGVsZXRlIF80NTQwOworICAgIGRlbGV0ZSBfNDUzOTsK
KyAgICBhdXRvKiBfNDU0MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAg
IGF1dG8qIF80NTQyID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVs
ZXRlIF80NTQyOworICAgIGRlbGV0ZSBfNDU0MTsKKyAgICBhdXRvKiBfNDU0MyA9IG5ldyBIYXNo
U2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTQ0ID0gbmV3IEhhc2hTZXQ8
OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTQ0OworICAgIGRlbGV0ZSBfNDU0
MzsKKyAgICBhdXRvKiBfNDU0NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIGF1dG8qIF80NTQ2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAg
ZGVsZXRlIF80NTQ2OworICAgIGRlbGV0ZSBfNDU0NTsKKyAgICBhdXRvKiBfNDU0NyA9IG5ldyBI
YXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTQ4ID0gbmV3IEhhc2hT
ZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTQ4OworICAgIGRlbGV0ZSBf
NDU0NzsKKyAgICBhdXRvKiBfNDU0OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIGF1dG8qIF80NTUwID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7Cisg
ICAgZGVsZXRlIF80NTUwOworICAgIGRlbGV0ZSBfNDU0OTsKKyAgICBhdXRvKiBfNDU1MSA9IG5l
dyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTUyID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTUyOworICAgIGRlbGV0
ZSBfNDU1MTsKKyAgICBhdXRvKiBfNDU1MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIF80NTUzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2Mzk2NzhsdSkpOworICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gXzQ1MTAtPmZpbmQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gXzQ1MTAtPmVuZCgpKTsKKyAgICB9CisgICAgYXV0byog
XzQ1NTQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDU1NC0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4bHUpKTsKKyAg
ICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTU0LT5maW5kKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVy
ICE9IF80NTU0LT5lbmQoKSk7CisgICAgfQorICAgIGRlbGV0ZSBfNDU1NDsKKyAgICBkZWxldGUg
XzQ1NTM7CisgICAgYXV0byogXzQ1NTUgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTA4LT5maW5kKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChpdGVyID09IF80NTA4LT5lbmQoKSk7CisgICAgfQorICAgIGF1dG8qIF80NTU2ID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBf
NDU1Ni0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4bHUp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDU1Ni0+ZW5kKCkpOworICAgIH0K
KyAgICBkZWxldGUgXzQ1NTY7CisgICAgZGVsZXRlIF80NTU1OworICAgIGF1dG8qIF80NTU3ID0g
bmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRvIGl0
ZXIgPSBfNDUxMS0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5
Njc4bHUpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUxMS0+ZW5kKCkpOwor
ICAgIH0KKyAgICBhdXRvKiBfNDU1OCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gXzQ1NTgtPmZpbmQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGl0ZXIgPT0gXzQ1NTgtPmVuZCgpKTsKKyAgICB9CisgICAgZGVsZXRlIF80NTU4OworICAgIGRl
bGV0ZSBfNDU1NzsKKyAgICBhdXRvKiBfNDU1OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIGF1dG8qIF80NTYwID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+
KCk7CisgICAgZGVsZXRlIF80NTYwOworICAgIGRlbGV0ZSBfNDU1OTsKKyAgICBhdXRvKiBfNDU2
MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTYyID0g
bmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTYyOworICAg
IGRlbGV0ZSBfNDU2MTsKKyAgICBhdXRvKiBfNDU2MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTY0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9k
ZSo+KCk7CisgICAgZGVsZXRlIF80NTY0OworICAgIGRlbGV0ZSBfNDU2MzsKKyAgICBhdXRvKiBf
NDU2NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTY2
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTY2Owor
ICAgIGRlbGV0ZSBfNDU2NTsKKyAgICBhdXRvKiBfNDU2NyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTY4ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6
Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTY4OworICAgIGRlbGV0ZSBfNDU2NzsKKyAgICBhdXRv
KiBfNDU2OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80
NTcwID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTcw
OworICAgIGRlbGV0ZSBfNDU2OTsKKyAgICBkZWxldGUgXzQ1MDE7CisgICAgZGVsZXRlIF80NTAy
OworICAgIGRlbGV0ZSBfNDUwMzsKKyAgICBkZWxldGUgXzQ1MDQ7CisgICAgZGVsZXRlIF80NTA1
OworICAgIGRlbGV0ZSBfNDUwNjsKKyAgICBkZWxldGUgXzQ1MDc7CisgICAgZGVsZXRlIF80NTA4
OworICAgIGRlbGV0ZSBfNDUwOTsKKyAgICBkZWxldGUgXzQ1MTA7CisgICAgZGVsZXRlIF80NTEx
OworICAgIGRlbGV0ZSBfNDUxMjsKKyAgICBkZWxldGUgXzQ1MTM7CisgICAgZGVsZXRlIF80NTE0
OworICAgIGRlbGV0ZSBfNDUxNTsKKyAgICBkZWxldGUgXzQ1MTY7CisgICAgZGVsZXRlIF80NDg1
OworICAgIGRlbGV0ZSBfNDQ4NjsKKyAgICBkZWxldGUgXzQ0ODc7CisgICAgZGVsZXRlIF80NDg4
OworICAgIGRlbGV0ZSBfNDQ4OTsKKyAgICBkZWxldGUgXzQ0OTA7CisgICAgZGVsZXRlIF80NDkx
OworICAgIGRlbGV0ZSBfNDQ5MjsKKyAgICBkZWxldGUgXzQ0OTM7CisgICAgZGVsZXRlIF80NDk0
OworICAgIGRlbGV0ZSBfNDQ5NTsKKyAgICBkZWxldGUgXzQ0OTY7CisgICAgZGVsZXRlIF80NDk3
OworICAgIGRlbGV0ZSBfNDQ5ODsKKyAgICBkZWxldGUgXzQ0OTk7CisgICAgZGVsZXRlIF80NTAw
OworICAgIGRlbGV0ZSBfNDQ2ODsKKyAgICBhdXRvKiBfNDU3MSA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTcyID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1NzMgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU3NCA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTc1
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ1NzYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDU3NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NTc4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ1NzkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDU4MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTgxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1ODIgPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU4MyA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTg0ID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1ODUgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU4NiA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIF80NTg1LT5h
ZGQoNDgzKTsKKyAgICBfNDU4My0+YWRkKDUwOCk7CisgICAgXzQ1ODMtPmFkZCgyMjkpOworICAg
IF80NTgzLT5hZGQoMTgyKTsKKyAgICBfNDU4My0+YWRkKDUwNyk7CisgICAgXzQ1ODQtPmFkZCg1
MDgpOworICAgIF80NTg0LT5hZGQoMjI5KTsKKyAgICBfNDU4NC0+YWRkKDE4Mik7CisgICAgXzQ1
ODQtPmFkZCg1MDcpOworICAgIF80NTg1LT5hZGQoMTgyKTsKKyAgICBfNDU4NS0+YWRkKDIyOSk7
CisgICAgXzQ1ODUtPmFkZCg0ODMpOworICAgIF80NTg1LT5hZGQoNDczKTsKKyAgICBfNDU4Mi0+
YWRkKDE4Mik7CisgICAgXzQ1ODItPmFkZCgyMjkpOworICAgIF80NTgyLT5hZGQoMTY4KTsKKyAg
ICBfNDU4Mi0+YWRkKDIpOworICAgIF80NTgyLT5hZGQoMTI2KTsKKyAgICBfNDU4Mi0+YWRkKDIw
KTsKKyAgICBfNDU4Mi0+YWRkKDM1OSk7CisgICAgXzQ1ODItPmFkZCgzNzIpOworICAgIF80NTgy
LT5hZGQoOTgpOworICAgIF80NTgyLT5hZGQoNDIwKTsKKyAgICBfNDU4Mi0+YWRkKDQyNCk7Cisg
ICAgXzQ1ODItPmFkZCg0MjgpOworICAgIF80NTgyLT5hZGQoNDMyKTsKKyAgICBfNDU4Mi0+YWRk
KDQzNik7CisgICAgXzQ1ODItPmFkZCg0NDApOworICAgIF80NTgyLT5hZGQoMzY3KTsKKyAgICBf
NDU4Mi0+YWRkKDI2KTsKKyAgICBfNDU4Mi0+YWRkKDQ1KTsKKyAgICBfNDU4Mi0+YWRkKDUwNik7
CisgICAgXzQ1ODEtPmFkZCgxODIpOworICAgIF80NTgxLT5hZGQoMjI5KTsKKyAgICBfNDU4MS0+
YWRkKDE2OCk7CisgICAgXzQ1ODEtPmFkZCgyKTsKKyAgICBfNDU4MS0+YWRkKDEyNik7CisgICAg
XzQ1ODEtPmFkZCgyMCk7CisgICAgXzQ1ODEtPmFkZCgzNTkpOworICAgIF80NTgxLT5hZGQoMzcy
KTsKKyAgICBfNDU4MS0+YWRkKDk4KTsKKyAgICBfNDU4MS0+YWRkKDQyMCk7CisgICAgXzQ1ODEt
PmFkZCg0MjQpOworICAgIF80NTgxLT5hZGQoNDI4KTsKKyAgICBfNDU4MS0+YWRkKDQzMik7Cisg
ICAgXzQ1ODEtPmFkZCg0MzYpOworICAgIF80NTgxLT5hZGQoNDQwKTsKKyAgICBfNDU4MS0+YWRk
KDM2Nyk7CisgICAgXzQ1ODEtPmFkZCgyNik7CisgICAgXzQ1ODEtPmFkZCg0NSk7CisgICAgXzQ1
ODEtPmFkZCg1MDYpOworICAgIF80NTc3LT5hZGQoMTgyKTsKKyAgICBfNDU3Ny0+YWRkKDQzNik7
CisgICAgXzQ1NzctPmFkZCgyMjkpOworICAgIF80NTc3LT5hZGQoMTI2KTsKKyAgICBfNDU3Ny0+
YWRkKDM2Nyk7CisgICAgXzQ1NzctPmFkZCg0NSk7CisgICAgXzQ1NzctPmFkZCg0MzIpOworICAg
IF80NTc3LT5hZGQoMzU5KTsKKyAgICBfNDU3Ny0+YWRkKDQ0MCk7CisgICAgXzQ1NzctPmFkZCgy
Nik7CisgICAgXzQ1NzctPmFkZCgxNjgpOworICAgIF80NTc3LT5hZGQoNDI4KTsKKyAgICBfNDU3
Ny0+YWRkKDk4KTsKKyAgICBfNDU3Ny0+YWRkKDIpOworICAgIF80NTc3LT5hZGQoNDIwKTsKKyAg
ICBfNDU3Ny0+YWRkKDIwKTsKKyAgICBfNDU3Ny0+YWRkKDQyNCk7CisgICAgXzQ1NzctPmFkZCgz
NzIpOworICAgIF80NTgwLT5hZGQoMTgyKTsKKyAgICBfNDU4MC0+YWRkKDQzNik7CisgICAgXzQ1
ODAtPmFkZCgyMjkpOworICAgIF80NTgwLT5hZGQoMTI2KTsKKyAgICBfNDU4MC0+YWRkKDM2Nyk7
CisgICAgXzQ1ODAtPmFkZCg0NSk7CisgICAgXzQ1ODAtPmFkZCg0MzIpOworICAgIF80NTgwLT5h
ZGQoMzU5KTsKKyAgICBfNDU4MC0+YWRkKDQ0MCk7CisgICAgXzQ1ODAtPmFkZCgyNik7CisgICAg
XzQ1ODAtPmFkZCgxNjgpOworICAgIF80NTgwLT5hZGQoNDI4KTsKKyAgICBfNDU4MC0+YWRkKDk4
KTsKKyAgICBfNDU4MC0+YWRkKDIpOworICAgIF80NTgwLT5hZGQoNDIwKTsKKyAgICBfNDU4MC0+
YWRkKDIwKTsKKyAgICBfNDU4MC0+YWRkKDQyNCk7CisgICAgXzQ1ODAtPmFkZCgzNzIpOworICAg
IF80NTgwLT5hZGQoMzIwKTsKKyAgICBfNDU3OS0+YWRkKDE4Mik7CisgICAgXzQ1NzktPmFkZCg0
MzYpOworICAgIF80NTc5LT5hZGQoMjI5KTsKKyAgICBfNDU3OS0+YWRkKDEyNik7CisgICAgXzQ1
NzktPmFkZCgzNjcpOworICAgIF80NTc5LT5hZGQoMjg3KTsKKyAgICBfNDU3OS0+YWRkKDQzMik7
CisgICAgXzQ1NzktPmFkZCg0NSk7CisgICAgXzQ1NzktPmFkZCgyNik7CisgICAgXzQ1NzktPmFk
ZCg0NDApOworICAgIF80NTc5LT5hZGQoMTY4KTsKKyAgICBfNDU3OS0+YWRkKDQyOCk7CisgICAg
XzQ1NzktPmFkZCgzNTkpOworICAgIF80NTc5LT5hZGQoMik7CisgICAgXzQ1NzktPmFkZCg0MjAp
OworICAgIF80NTc5LT5hZGQoMjApOworICAgIF80NTc5LT5hZGQoNDI0KTsKKyAgICBfNDU3OS0+
YWRkKDM3Mik7CisgICAgXzQ1NzktPmFkZCg5OCk7CisgICAgXzQ1NzktPmFkZCgyNTApOworICAg
IF80NTc5LT5hZGQoMTc5KTsKKyAgICBfNDU3OS0+YWRkKDUwNSk7CisgICAgXzQ1NzktPmFkZCgx
MTEpOworICAgIF80NTc5LT5hZGQoMjcyKTsKKyAgICBfNDU3OS0+YWRkKDIzMik7CisgICAgXzQ1
NzktPmFkZCg1MDQpOworICAgIF80NTc4LT5hZGQoMTgyKTsKKyAgICBfNDU3OC0+YWRkKDQzNik7
CisgICAgXzQ1NzgtPmFkZCgyMjkpOworICAgIF80NTc4LT5hZGQoMTI2KTsKKyAgICBfNDU3OC0+
YWRkKDM2Nyk7CisgICAgXzQ1NzgtPmFkZCgyODcpOworICAgIF80NTc4LT5hZGQoNDMyKTsKKyAg
ICBfNDU3OC0+YWRkKDQ1KTsKKyAgICBfNDU3OC0+YWRkKDI2KTsKKyAgICBfNDU3OC0+YWRkKDQ0
MCk7CisgICAgXzQ1NzgtPmFkZCgxNjgpOworICAgIF80NTc4LT5hZGQoNDI4KTsKKyAgICBfNDU3
OC0+YWRkKDM1OSk7CisgICAgXzQ1NzgtPmFkZCgyKTsKKyAgICBfNDU3OC0+YWRkKDQyMCk7Cisg
ICAgXzQ1NzgtPmFkZCgyMCk7CisgICAgXzQ1NzgtPmFkZCg0MjQpOworICAgIF80NTc4LT5hZGQo
MzcyKTsKKyAgICBfNDU3OC0+YWRkKDk4KTsKKyAgICBfNDU3OC0+YWRkKDI1MCk7CisgICAgXzQ1
NzgtPmFkZCgxNzkpOworICAgIF80NTc4LT5hZGQoNTA1KTsKKyAgICBfNDU3OC0+YWRkKDExMSk7
CisgICAgXzQ1NzgtPmFkZCgyNzIpOworICAgIF80NTc4LT5hZGQoMjMyKTsKKyAgICBfNDU3OC0+
YWRkKDUwNCk7CisgICAgXzQ1NzctPmFkZCgxODIpOworICAgIF80NTc3LT5hZGQoNDM2KTsKKyAg
ICBfNDU3Ny0+YWRkKDIyOSk7CisgICAgXzQ1NzctPmFkZCgxMjYpOworICAgIF80NTc3LT5hZGQo
Mjg3KTsKKyAgICBfNDU3Ny0+YWRkKDM2Nyk7CisgICAgXzQ1NzctPmFkZCg0MzIpOworICAgIF80
NTc3LT5hZGQoMjM2KTsKKyAgICBfNDU3Ny0+YWRkKDE3OSk7CisgICAgXzQ1NzctPmFkZCgyMzIp
OworICAgIF80NTc3LT5hZGQoNDUpOworICAgIF80NTc3LT5hZGQoMjUwKTsKKyAgICBfNDU3Ny0+
YWRkKDI3Mik7CisgICAgXzQ1NzctPmFkZCgxMTEpOworICAgIF80NTc3LT5hZGQoMjYpOworICAg
IF80NTc3LT5hZGQoNDQwKTsKKyAgICBfNDU3Ny0+YWRkKDE2OCk7CisgICAgXzQ1NzctPmFkZCg0
MjgpOworICAgIF80NTc3LT5hZGQoOTgpOworICAgIF80NTc3LT5hZGQoMzU5KTsKKyAgICBfNDU3
Ny0+YWRkKDIpOworICAgIF80NTc3LT5hZGQoNDIwKTsKKyAgICBfNDU3Ny0+YWRkKDIwKTsKKyAg
ICBfNDU3Ny0+YWRkKDQyNCk7CisgICAgXzQ1NzctPmFkZCgzNzIpOworICAgIF80NTgwLT5hZGQo
MTgyKTsKKyAgICBfNDU4MC0+YWRkKDQzNik7CisgICAgXzQ1ODAtPmFkZCgyMjkpOworICAgIF80
NTgwLT5hZGQoMTI2KTsKKyAgICBfNDU4MC0+YWRkKDI4Nyk7CisgICAgXzQ1ODAtPmFkZCgzNjcp
OworICAgIF80NTgwLT5hZGQoNDMyKTsKKyAgICBfNDU4MC0+YWRkKDMzOCk7CisgICAgXzQ1ODAt
PmFkZCgxNzkpOworICAgIF80NTgwLT5hZGQoMjMyKTsKKyAgICBfNDU4MC0+YWRkKDQ1KTsKKyAg
ICBfNDU4MC0+YWRkKDI1MCk7CisgICAgXzQ1ODAtPmFkZCgyNzIpOworICAgIF80NTgwLT5hZGQo
MTExKTsKKyAgICBfNDU4MC0+YWRkKDI2KTsKKyAgICBfNDU4MC0+YWRkKDQ0MCk7CisgICAgXzQ1
ODAtPmFkZCgxNjgpOworICAgIF80NTgwLT5hZGQoNDI4KTsKKyAgICBfNDU4MC0+YWRkKDk4KTsK
KyAgICBfNDU4MC0+YWRkKDM1OSk7CisgICAgXzQ1ODAtPmFkZCgyKTsKKyAgICBfNDU4MC0+YWRk
KDQyMCk7CisgICAgXzQ1ODAtPmFkZCgyMCk7CisgICAgXzQ1ODAtPmFkZCg0MjQpOworICAgIF80
NTgwLT5hZGQoMzcyKTsKKyAgICBfNDU4MC0+YWRkKDMyMCk7CisgICAgXzQ1NzUtPmFkZCgxODIp
OworICAgIF80NTc1LT5hZGQoNDM2KTsKKyAgICBfNDU3NS0+YWRkKDIyOSk7CisgICAgXzQ1NzUt
PmFkZCgxMjYpOworICAgIF80NTc1LT5hZGQoMjg3KTsKKyAgICBfNDU3NS0+YWRkKDM2Nyk7Cisg
ICAgXzQ1NzUtPmFkZCg0MzIpOworICAgIF80NTc1LT5hZGQoMTc5KTsKKyAgICBfNDU3NS0+YWRk
KDM3Mik7CisgICAgXzQ1NzUtPmFkZCg0NSk7CisgICAgXzQ1NzUtPmFkZCgyNTApOworICAgIF80
NTc1LT5hZGQoNDI0KTsKKyAgICBfNDU3NS0+YWRkKDExMSk7CisgICAgXzQ1NzUtPmFkZCgyNik7
CisgICAgXzQ1NzUtPmFkZCg0NDApOworICAgIF80NTc1LT5hZGQoMTY4KTsKKyAgICBfNDU3NS0+
YWRkKDQyOCk7CisgICAgXzQ1NzUtPmFkZCgzNTkpOworICAgIF80NTc1LT5hZGQoMik7CisgICAg
XzQ1NzUtPmFkZCg5OCk7CisgICAgXzQ1NzUtPmFkZCg0MjApOworICAgIF80NTc1LT5hZGQoMjAp
OworICAgIF80NTc2LT5hZGQoMTgyKTsKKyAgICBfNDU3Ni0+YWRkKDQzNik7CisgICAgXzQ1NzYt
PmFkZCgyMjkpOworICAgIF80NTc2LT5hZGQoMTI2KTsKKyAgICBfNDU3Ni0+YWRkKDI4Nyk7Cisg
ICAgXzQ1NzYtPmFkZCgzNjcpOworICAgIF80NTc2LT5hZGQoNDMyKTsKKyAgICBfNDU3Ni0+YWRk
KDE3OSk7CisgICAgXzQ1NzYtPmFkZCgzNzIpOworICAgIF80NTc2LT5hZGQoNDUpOworICAgIF80
NTc2LT5hZGQoMjUwKTsKKyAgICBfNDU3Ni0+YWRkKDQyNCk7CisgICAgXzQ1NzYtPmFkZCgxMTEp
OworICAgIF80NTc2LT5hZGQoMjYpOworICAgIF80NTc2LT5hZGQoNDQwKTsKKyAgICBfNDU3Ni0+
YWRkKDE2OCk7CisgICAgXzQ1NzYtPmFkZCg0MjgpOworICAgIF80NTc2LT5hZGQoMzU5KTsKKyAg
ICBfNDU3Ni0+YWRkKDIpOworICAgIF80NTc2LT5hZGQoOTgpOworICAgIF80NTc2LT5hZGQoNDIw
KTsKKyAgICBfNDU3Ni0+YWRkKDIwKTsKKyAgICBfNDU3NC0+YWRkKDE4Mik7CisgICAgXzQ1NzQt
PmFkZCg0MzYpOworICAgIF80NTc0LT5hZGQoMjI5KTsKKyAgICBfNDU3NC0+YWRkKDEyNik7Cisg
ICAgXzQ1NzQtPmFkZCgyODcpOworICAgIF80NTc0LT5hZGQoMzY3KTsKKyAgICBfNDU3NC0+YWRk
KDE3OSk7CisgICAgXzQ1NzQtPmFkZCg0NSk7CisgICAgXzQ1NzQtPmFkZCgyNTApOworICAgIF80
NTc0LT5hZGQoMTExKTsKKyAgICBfNDU3NC0+YWRkKDI2KTsKKyAgICBfNDU3NC0+YWRkKDQ0MCk7
CisgICAgXzQ1NzQtPmFkZCgxNjgpOworICAgIF80NTc0LT5hZGQoNDI4KTsKKyAgICBfNDU3NC0+
YWRkKDIpOworICAgIF80NTc0LT5hZGQoMzU5KTsKKyAgICBfNDU3NC0+YWRkKDQyNCk7CisgICAg
XzQ1NzQtPmFkZCg0MjApOworICAgIF80NTc0LT5hZGQoMjApOworICAgIF80NTc0LT5hZGQoOTgp
OworICAgIF80NTc0LT5hZGQoMzcyKTsKKyAgICBfNDU3NC0+YWRkKDQzMik7CisgICAgXzQ1NzEt
PmFkZCgxODIpOworICAgIF80NTcxLT5hZGQoNDM2KTsKKyAgICBfNDU3MS0+YWRkKDIyOSk7Cisg
ICAgXzQ1NzEtPmFkZCgxMjYpOworICAgIF80NTcxLT5hZGQoMjg3KTsKKyAgICBfNDU3MS0+YWRk
KDM2Nyk7CisgICAgXzQ1NzEtPmFkZCgxNzkpOworICAgIF80NTcxLT5hZGQoNDUpOworICAgIF80
NTcxLT5hZGQoMjUwKTsKKyAgICBfNDU3MS0+YWRkKDExMSk7CisgICAgXzQ1NzEtPmFkZCgyNik7
CisgICAgXzQ1NzEtPmFkZCg0NDApOworICAgIF80NTcxLT5hZGQoMTY4KTsKKyAgICBfNDU3MS0+
YWRkKDQyOCk7CisgICAgXzQ1NzEtPmFkZCgyKTsKKyAgICBfNDU3MS0+YWRkKDM1OSk7CisgICAg
XzQ1NzEtPmFkZCg0MjQpOworICAgIF80NTcxLT5hZGQoNDIwKTsKKyAgICBfNDU3MS0+YWRkKDIw
KTsKKyAgICBfNDU3MS0+YWRkKDk4KTsKKyAgICBfNDU3MS0+YWRkKDM3Mik7CisgICAgXzQ1NzEt
PmFkZCg0MzIpOworICAgIF80NTcyLT5hZGQoMTgyKTsKKyAgICBfNDU3Mi0+YWRkKDQzNik7Cisg
ICAgXzQ1NzItPmFkZCgyMjkpOworICAgIF80NTcyLT5hZGQoMTI2KTsKKyAgICBfNDU3Mi0+YWRk
KDI4Nyk7CisgICAgXzQ1NzItPmFkZCgzNjcpOworICAgIF80NTcyLT5hZGQoNDMyKTsKKyAgICBf
NDU3Mi0+YWRkKDE3OSk7CisgICAgXzQ1NzItPmFkZCg0MjApOworICAgIF80NTcyLT5hZGQoNDUp
OworICAgIF80NTcyLT5hZGQoMjUwKTsKKyAgICBfNDU3Mi0+YWRkKDExMSk7CisgICAgXzQ1NzIt
PmFkZCgyNik7CisgICAgXzQ1NzItPmFkZCg0NDApOworICAgIF80NTcyLT5hZGQoMTY4KTsKKyAg
ICBfNDU3Mi0+YWRkKDQyOCk7CisgICAgXzQ1NzItPmFkZCgzNTkpOworICAgIF80NTcyLT5hZGQo
Mik7CisgICAgXzQ1NzItPmFkZCg0MjQpOworICAgIF80NTcyLT5hZGQoMjApOworICAgIF80NTcy
LT5hZGQoMzcyKTsKKyAgICBfNDU3Mi0+YWRkKDk4KTsKKyAgICBfNDU3Mi0+YWRkKDcyKTsKKyAg
ICBfNDU3Mi0+YWRkKDUwMyk7CisgICAgXzQ1NzMtPmFkZCgxODIpOworICAgIF80NTczLT5hZGQo
NDM2KTsKKyAgICBfNDU3My0+YWRkKDIyOSk7CisgICAgXzQ1NzMtPmFkZCgxMjYpOworICAgIF80
NTczLT5hZGQoMjg3KTsKKyAgICBfNDU3My0+YWRkKDM2Nyk7CisgICAgXzQ1NzMtPmFkZCg0MzIp
OworICAgIF80NTczLT5hZGQoMTc5KTsKKyAgICBfNDU3My0+YWRkKDQyMCk7CisgICAgXzQ1NzMt
PmFkZCg0NSk7CisgICAgXzQ1NzMtPmFkZCgyNTApOworICAgIF80NTczLT5hZGQoMTExKTsKKyAg
ICBfNDU3My0+YWRkKDI2KTsKKyAgICBfNDU3My0+YWRkKDQ0MCk7CisgICAgXzQ1NzMtPmFkZCgx
NjgpOworICAgIF80NTczLT5hZGQoNDI4KTsKKyAgICBfNDU3My0+YWRkKDM1OSk7CisgICAgXzQ1
NzMtPmFkZCgyKTsKKyAgICBfNDU3My0+YWRkKDQyNCk7CisgICAgXzQ1NzMtPmFkZCgyMCk7Cisg
ICAgXzQ1NzMtPmFkZCgzNzIpOworICAgIF80NTczLT5hZGQoOTgpOworICAgIF80NTczLT5hZGQo
NzIpOworICAgIF80NTczLT5hZGQoNTAzKTsKKyAgICBfNDU3NC0+YWRkKDE4Mik7CisgICAgXzQ1
NzQtPmFkZCg0MzYpOworICAgIF80NTc0LT5hZGQoMjI5KTsKKyAgICBfNDU3NC0+YWRkKDEyNik7
CisgICAgXzQ1NzQtPmFkZCgyODcpOworICAgIF80NTc0LT5hZGQoMzY3KTsKKyAgICBfNDU3NC0+
YWRkKDQzMik7CisgICAgXzQ1NzQtPmFkZCgxNzkpOworICAgIF80NTc0LT5hZGQoNDUpOworICAg
IF80NTc0LT5hZGQoMjUwKTsKKyAgICBfNDU3NC0+YWRkKDExMSk7CisgICAgXzQ1NzQtPmFkZCgy
Nik7CisgICAgXzQ1NzQtPmFkZCg0NDApOworICAgIF80NTc0LT5hZGQoMTY4KTsKKyAgICBfNDU3
NC0+YWRkKDQyOCk7CisgICAgXzQ1NzQtPmFkZCg5OCk7CisgICAgXzQ1NzQtPmFkZCgzNTkpOwor
ICAgIF80NTc0LT5hZGQoMik7CisgICAgXzQ1NzQtPmFkZCg0MjApOworICAgIF80NTc0LT5hZGQo
MjApOworICAgIF80NTc0LT5hZGQoNzIpOworICAgIF80NTc0LT5hZGQoNDI0KTsKKyAgICBfNDU3
NC0+YWRkKDM3Mik7CisgICAgXzQ1NzQtPmFkZCgxODMpOworICAgIF80NTcxLT5hZGQoMTgyKTsK
KyAgICBfNDU3MS0+YWRkKDQzNik7CisgICAgXzQ1NzEtPmFkZCgyMjkpOworICAgIF80NTcxLT5h
ZGQoMTI2KTsKKyAgICBfNDU3MS0+YWRkKDI4Nyk7CisgICAgXzQ1NzEtPmFkZCgzNjcpOworICAg
IF80NTcxLT5hZGQoNDMyKTsKKyAgICBfNDU3MS0+YWRkKDE3OSk7CisgICAgXzQ1NzEtPmFkZCg0
NSk7CisgICAgXzQ1NzEtPmFkZCgyNTApOworICAgIF80NTcxLT5hZGQoMTExKTsKKyAgICBfNDU3
MS0+YWRkKDI2KTsKKyAgICBfNDU3MS0+YWRkKDQ0MCk7CisgICAgXzQ1NzEtPmFkZCgxNjgpOwor
ICAgIF80NTcxLT5hZGQoNDI4KTsKKyAgICBfNDU3MS0+YWRkKDk4KTsKKyAgICBfNDU3MS0+YWRk
KDM1OSk7CisgICAgXzQ1NzEtPmFkZCgyKTsKKyAgICBfNDU3MS0+YWRkKDQyMCk7CisgICAgXzQ1
NzEtPmFkZCgyMCk7CisgICAgXzQ1NzEtPmFkZCg3Mik7CisgICAgXzQ1NzEtPmFkZCg0MjQpOwor
ICAgIF80NTcxLT5hZGQoMzcyKTsKKyAgICBkZWxldGUgXzQ1NzE7CisgICAgZGVsZXRlIF80NTcy
OworICAgIGRlbGV0ZSBfNDU3MzsKKyAgICBkZWxldGUgXzQ1NzQ7CisgICAgZGVsZXRlIF80NTc1
OworICAgIGRlbGV0ZSBfNDU3NjsKKyAgICBkZWxldGUgXzQ1Nzc7CisgICAgZGVsZXRlIF80NTc4
OworICAgIGRlbGV0ZSBfNDU3OTsKKyAgICBkZWxldGUgXzQ1ODA7CisgICAgZGVsZXRlIF80NTgx
OworICAgIGRlbGV0ZSBfNDU4MjsKKyAgICBkZWxldGUgXzQ1ODM7CisgICAgZGVsZXRlIF80NTg0
OworICAgIGRlbGV0ZSBfNDU4NTsKKyAgICBkZWxldGUgXzQ1ODY7CisgICAgYXV0byogXzQ1ODcg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDU4OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NTg5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ1OTAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDU5MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NTkyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1OTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU5NCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTk1ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1OTYgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU5NyA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTk4ID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1
OTkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDYwMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NjAxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ2MDIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBfNDYwMS0+YWRkKDQ4Myk7CisgICAgXzQ1OTktPmFkZCg1MDgpOworICAgIF80
NTk5LT5hZGQoMjI5KTsKKyAgICBfNDU5OS0+YWRkKDE4Mik7CisgICAgXzQ1OTktPmFkZCg1MDcp
OworICAgIF80NjAwLT5hZGQoNTA4KTsKKyAgICBfNDYwMC0+YWRkKDIyOSk7CisgICAgXzQ2MDAt
PmFkZCgxODIpOworICAgIF80NjAwLT5hZGQoNTA3KTsKKyAgICBfNDYwMS0+YWRkKDE4Mik7Cisg
ICAgXzQ2MDEtPmFkZCgyMjkpOworICAgIF80NjAxLT5hZGQoNDgzKTsKKyAgICBfNDYwMS0+YWRk
KDQ3Myk7CisgICAgXzQ1OTgtPmFkZCgxODIpOworICAgIF80NTk4LT5hZGQoMjI5KTsKKyAgICBf
NDU5OC0+YWRkKDE2OCk7CisgICAgXzQ1OTgtPmFkZCgyKTsKKyAgICBfNDU5OC0+YWRkKDEyNik7
CisgICAgXzQ1OTgtPmFkZCgyMCk7CisgICAgXzQ1OTgtPmFkZCgzNTkpOworICAgIF80NTk4LT5h
ZGQoMzcyKTsKKyAgICBfNDU5OC0+YWRkKDk4KTsKKyAgICBfNDU5OC0+YWRkKDQyMCk7CisgICAg
XzQ1OTgtPmFkZCg0MjQpOworICAgIF80NTk4LT5hZGQoNDI4KTsKKyAgICBfNDU5OC0+YWRkKDQz
Mik7CisgICAgXzQ1OTgtPmFkZCg0MzYpOworICAgIF80NTk4LT5hZGQoNDQwKTsKKyAgICBfNDU5
OC0+YWRkKDM2Nyk7CisgICAgXzQ1OTgtPmFkZCgyNik7CisgICAgXzQ1OTgtPmFkZCg0NSk7Cisg
ICAgXzQ1OTgtPmFkZCg1MDYpOworICAgIF80NTk3LT5hZGQoMTgyKTsKKyAgICBfNDU5Ny0+YWRk
KDIyOSk7CisgICAgXzQ1OTctPmFkZCgxNjgpOworICAgIF80NTk3LT5hZGQoMik7CisgICAgXzQ1
OTctPmFkZCgxMjYpOworICAgIF80NTk3LT5hZGQoMjApOworICAgIF80NTk3LT5hZGQoMzU5KTsK
KyAgICBfNDU5Ny0+YWRkKDM3Mik7CisgICAgXzQ1OTctPmFkZCg5OCk7CisgICAgXzQ1OTctPmFk
ZCg0MjApOworICAgIF80NTk3LT5hZGQoNDI0KTsKKyAgICBfNDU5Ny0+YWRkKDQyOCk7CisgICAg
XzQ1OTctPmFkZCg0MzIpOworICAgIF80NTk3LT5hZGQoNDM2KTsKKyAgICBfNDU5Ny0+YWRkKDQ0
MCk7CisgICAgXzQ1OTctPmFkZCgzNjcpOworICAgIF80NTk3LT5hZGQoMjYpOworICAgIF80NTk3
LT5hZGQoNDUpOworICAgIF80NTk3LT5hZGQoNTA2KTsKKyAgICBfNDU5My0+YWRkKDE4Mik7Cisg
ICAgXzQ1OTMtPmFkZCg0MzYpOworICAgIF80NTkzLT5hZGQoMjI5KTsKKyAgICBfNDU5My0+YWRk
KDEyNik7CisgICAgXzQ1OTMtPmFkZCgzNjcpOworICAgIF80NTkzLT5hZGQoNDUpOworICAgIF80
NTkzLT5hZGQoNDMyKTsKKyAgICBfNDU5My0+YWRkKDM1OSk7CisgICAgXzQ1OTMtPmFkZCg0NDAp
OworICAgIF80NTkzLT5hZGQoMjYpOworICAgIF80NTkzLT5hZGQoMTY4KTsKKyAgICBfNDU5My0+
YWRkKDQyOCk7CisgICAgXzQ1OTMtPmFkZCg5OCk7CisgICAgXzQ1OTMtPmFkZCgyKTsKKyAgICBf
NDU5My0+YWRkKDQyMCk7CisgICAgXzQ1OTMtPmFkZCgyMCk7CisgICAgXzQ1OTMtPmFkZCg0MjQp
OworICAgIF80NTkzLT5hZGQoMzcyKTsKKyAgICBfNDU5Ni0+YWRkKDE4Mik7CisgICAgXzQ1OTYt
PmFkZCg0MzYpOworICAgIF80NTk2LT5hZGQoMjI5KTsKKyAgICBfNDU5Ni0+YWRkKDEyNik7Cisg
ICAgXzQ1OTYtPmFkZCgzNjcpOworICAgIF80NTk2LT5hZGQoNDUpOworICAgIF80NTk2LT5hZGQo
NDMyKTsKKyAgICBfNDU5Ni0+YWRkKDM1OSk7CisgICAgXzQ1OTYtPmFkZCg0NDApOworICAgIF80
NTk2LT5hZGQoMjYpOworICAgIF80NTk2LT5hZGQoMTY4KTsKKyAgICBfNDU5Ni0+YWRkKDQyOCk7
CisgICAgXzQ1OTYtPmFkZCg5OCk7CisgICAgXzQ1OTYtPmFkZCgyKTsKKyAgICBfNDU5Ni0+YWRk
KDQyMCk7CisgICAgXzQ1OTYtPmFkZCgyMCk7CisgICAgXzQ1OTYtPmFkZCg0MjQpOworICAgIF80
NTk2LT5hZGQoMzcyKTsKKyAgICBfNDU5Ni0+YWRkKDMyMCk7CisgICAgXzQ1OTUtPmFkZCgxODIp
OworICAgIF80NTk1LT5hZGQoNDM2KTsKKyAgICBfNDU5NS0+YWRkKDIyOSk7CisgICAgXzQ1OTUt
PmFkZCgxMjYpOworICAgIF80NTk1LT5hZGQoMzY3KTsKKyAgICBfNDU5NS0+YWRkKDI4Nyk7Cisg
ICAgXzQ1OTUtPmFkZCg0MzIpOworICAgIF80NTk1LT5hZGQoNDUpOworICAgIF80NTk1LT5hZGQo
MjYpOworICAgIF80NTk1LT5hZGQoNDQwKTsKKyAgICBfNDU5NS0+YWRkKDE2OCk7CisgICAgXzQ1
OTUtPmFkZCg0MjgpOworICAgIF80NTk1LT5hZGQoMzU5KTsKKyAgICBfNDU5NS0+YWRkKDIpOwor
ICAgIF80NTk1LT5hZGQoNDIwKTsKKyAgICBfNDU5NS0+YWRkKDIwKTsKKyAgICBfNDU5NS0+YWRk
KDQyNCk7CisgICAgXzQ1OTUtPmFkZCgzNzIpOworICAgIF80NTk1LT5hZGQoOTgpOworICAgIF80
NTk1LT5hZGQoMjUwKTsKKyAgICBfNDU5NS0+YWRkKDE3OSk7CisgICAgXzQ1OTUtPmFkZCg1MDUp
OworICAgIF80NTk1LT5hZGQoMTExKTsKKyAgICBfNDU5NS0+YWRkKDI3Mik7CisgICAgXzQ1OTUt
PmFkZCgyMzIpOworICAgIF80NTk1LT5hZGQoNTA0KTsKKyAgICBfNDU5NC0+YWRkKDE4Mik7Cisg
ICAgXzQ1OTQtPmFkZCg0MzYpOworICAgIF80NTk0LT5hZGQoMjI5KTsKKyAgICBfNDU5NC0+YWRk
KDEyNik7CisgICAgXzQ1OTQtPmFkZCgzNjcpOworICAgIF80NTk0LT5hZGQoMjg3KTsKKyAgICBf
NDU5NC0+YWRkKDQzMik7CisgICAgXzQ1OTQtPmFkZCg0NSk7CisgICAgXzQ1OTQtPmFkZCgyNik7
CisgICAgXzQ1OTQtPmFkZCg0NDApOworICAgIF80NTk0LT5hZGQoMTY4KTsKKyAgICBfNDU5NC0+
YWRkKDQyOCk7CisgICAgXzQ1OTQtPmFkZCgzNTkpOworICAgIF80NTk0LT5hZGQoMik7CisgICAg
XzQ1OTQtPmFkZCg0MjApOworICAgIF80NTk0LT5hZGQoMjApOworICAgIF80NTk0LT5hZGQoNDI0
KTsKKyAgICBfNDU5NC0+YWRkKDM3Mik7CisgICAgXzQ1OTQtPmFkZCg5OCk7CisgICAgXzQ1OTQt
PmFkZCgyNTApOworICAgIF80NTk0LT5hZGQoMTc5KTsKKyAgICBfNDU5NC0+YWRkKDUwNSk7Cisg
ICAgXzQ1OTQtPmFkZCgxMTEpOworICAgIF80NTk0LT5hZGQoMjcyKTsKKyAgICBfNDU5NC0+YWRk
KDIzMik7CisgICAgXzQ1OTQtPmFkZCg1MDQpOworICAgIF80NTkzLT5hZGQoMTgyKTsKKyAgICBf
NDU5My0+YWRkKDQzNik7CisgICAgXzQ1OTMtPmFkZCgyMjkpOworICAgIF80NTkzLT5hZGQoMTI2
KTsKKyAgICBfNDU5My0+YWRkKDI4Nyk7CisgICAgXzQ1OTMtPmFkZCgzNjcpOworICAgIF80NTkz
LT5hZGQoNDMyKTsKKyAgICBfNDU5My0+YWRkKDIzNik7CisgICAgXzQ1OTMtPmFkZCgxNzkpOwor
ICAgIF80NTkzLT5hZGQoMjMyKTsKKyAgICBfNDU5My0+YWRkKDQ1KTsKKyAgICBfNDU5My0+YWRk
KDI1MCk7CisgICAgXzQ1OTMtPmFkZCgyNzIpOworICAgIF80NTkzLT5hZGQoMTExKTsKKyAgICBf
NDU5My0+YWRkKDI2KTsKKyAgICBfNDU5My0+YWRkKDQ0MCk7CisgICAgXzQ1OTMtPmFkZCgxNjgp
OworICAgIF80NTkzLT5hZGQoNDI4KTsKKyAgICBfNDU5My0+YWRkKDk4KTsKKyAgICBfNDU5My0+
YWRkKDM1OSk7CisgICAgXzQ1OTMtPmFkZCgyKTsKKyAgICBfNDU5My0+YWRkKDQyMCk7CisgICAg
XzQ1OTMtPmFkZCgyMCk7CisgICAgXzQ1OTMtPmFkZCg0MjQpOworICAgIF80NTkzLT5hZGQoMzcy
KTsKKyAgICBfNDU5Ni0+YWRkKDE4Mik7CisgICAgXzQ1OTYtPmFkZCg0MzYpOworICAgIF80NTk2
LT5hZGQoMjI5KTsKKyAgICBfNDU5Ni0+YWRkKDEyNik7CisgICAgXzQ1OTYtPmFkZCgyODcpOwor
ICAgIF80NTk2LT5hZGQoMzY3KTsKKyAgICBfNDU5Ni0+YWRkKDQzMik7CisgICAgXzQ1OTYtPmFk
ZCgzMzgpOworICAgIF80NTk2LT5hZGQoMTc5KTsKKyAgICBfNDU5Ni0+YWRkKDIzMik7CisgICAg
XzQ1OTYtPmFkZCg0NSk7CisgICAgXzQ1OTYtPmFkZCgyNTApOworICAgIF80NTk2LT5hZGQoMjcy
KTsKKyAgICBfNDU5Ni0+YWRkKDExMSk7CisgICAgXzQ1OTYtPmFkZCgyNik7CisgICAgXzQ1OTYt
PmFkZCg0NDApOworICAgIF80NTk2LT5hZGQoMTY4KTsKKyAgICBfNDU5Ni0+YWRkKDQyOCk7Cisg
ICAgXzQ1OTYtPmFkZCg5OCk7CisgICAgXzQ1OTYtPmFkZCgzNTkpOworICAgIF80NTk2LT5hZGQo
Mik7CisgICAgXzQ1OTYtPmFkZCg0MjApOworICAgIF80NTk2LT5hZGQoMjApOworICAgIF80NTk2
LT5hZGQoNDI0KTsKKyAgICBfNDU5Ni0+YWRkKDM3Mik7CisgICAgXzQ1OTYtPmFkZCgzMjApOwor
ICAgIF80NTkxLT5hZGQoMTgyKTsKKyAgICBfNDU5MS0+YWRkKDQzNik7CisgICAgXzQ1OTEtPmFk
ZCgyMjkpOworICAgIF80NTkxLT5hZGQoMTI2KTsKKyAgICBfNDU5MS0+YWRkKDI4Nyk7CisgICAg
XzQ1OTEtPmFkZCgzNjcpOworICAgIF80NTkxLT5hZGQoNDMyKTsKKyAgICBfNDU5MS0+YWRkKDE3
OSk7CisgICAgXzQ1OTEtPmFkZCgzNzIpOworICAgIF80NTkxLT5hZGQoNDUpOworICAgIF80NTkx
LT5hZGQoMjUwKTsKKyAgICBfNDU5MS0+YWRkKDQyNCk7CisgICAgXzQ1OTEtPmFkZCgxMTEpOwor
ICAgIF80NTkxLT5hZGQoMjYpOworICAgIF80NTkxLT5hZGQoNDQwKTsKKyAgICBfNDU5MS0+YWRk
KDE2OCk7CisgICAgXzQ1OTEtPmFkZCg0MjgpOworICAgIF80NTkxLT5hZGQoMzU5KTsKKyAgICBf
NDU5MS0+YWRkKDIpOworICAgIF80NTkxLT5hZGQoOTgpOworICAgIF80NTkxLT5hZGQoNDIwKTsK
KyAgICBfNDU5MS0+YWRkKDIwKTsKKyAgICBfNDU5Mi0+YWRkKDE4Mik7CisgICAgXzQ1OTItPmFk
ZCg0MzYpOworICAgIF80NTkyLT5hZGQoMjI5KTsKKyAgICBfNDU5Mi0+YWRkKDEyNik7CisgICAg
XzQ1OTItPmFkZCgyODcpOworICAgIF80NTkyLT5hZGQoMzY3KTsKKyAgICBfNDU5Mi0+YWRkKDQz
Mik7CisgICAgXzQ1OTItPmFkZCgxNzkpOworICAgIF80NTkyLT5hZGQoMzcyKTsKKyAgICBfNDU5
Mi0+YWRkKDQ1KTsKKyAgICBfNDU5Mi0+YWRkKDI1MCk7CisgICAgXzQ1OTItPmFkZCg0MjQpOwor
ICAgIF80NTkyLT5hZGQoMTExKTsKKyAgICBfNDU5Mi0+YWRkKDI2KTsKKyAgICBfNDU5Mi0+YWRk
KDQ0MCk7CisgICAgXzQ1OTItPmFkZCgxNjgpOworICAgIF80NTkyLT5hZGQoNDI4KTsKKyAgICBf
NDU5Mi0+YWRkKDM1OSk7CisgICAgXzQ1OTItPmFkZCgyKTsKKyAgICBfNDU5Mi0+YWRkKDk4KTsK
KyAgICBfNDU5Mi0+YWRkKDQyMCk7CisgICAgXzQ1OTItPmFkZCgyMCk7CisgICAgXzQ1OTAtPmFk
ZCgxODIpOworICAgIF80NTkwLT5hZGQoNDM2KTsKKyAgICBfNDU5MC0+YWRkKDIyOSk7CisgICAg
XzQ1OTAtPmFkZCgxMjYpOworICAgIF80NTkwLT5hZGQoMjg3KTsKKyAgICBfNDU5MC0+YWRkKDM2
Nyk7CisgICAgXzQ1OTAtPmFkZCgxNzkpOworICAgIF80NTkwLT5hZGQoNDUpOworICAgIF80NTkw
LT5hZGQoMjUwKTsKKyAgICBfNDU5MC0+YWRkKDExMSk7CisgICAgXzQ1OTAtPmFkZCgyNik7Cisg
ICAgXzQ1OTAtPmFkZCg0NDApOworICAgIF80NTkwLT5hZGQoMTY4KTsKKyAgICBfNDU5MC0+YWRk
KDQyOCk7CisgICAgXzQ1OTAtPmFkZCgyKTsKKyAgICBfNDU5MC0+YWRkKDM1OSk7CisgICAgXzQ1
OTAtPmFkZCg0MjQpOworICAgIF80NTkwLT5hZGQoNDIwKTsKKyAgICBfNDU5MC0+YWRkKDIwKTsK
KyAgICBfNDU5MC0+YWRkKDk4KTsKKyAgICBfNDU5MC0+YWRkKDM3Mik7CisgICAgXzQ1OTAtPmFk
ZCg0MzIpOworICAgIF80NTg3LT5hZGQoMTgyKTsKKyAgICBfNDU4Ny0+YWRkKDQzNik7CisgICAg
XzQ1ODctPmFkZCgyMjkpOworICAgIF80NTg3LT5hZGQoMTI2KTsKKyAgICBfNDU4Ny0+YWRkKDI4
Nyk7CisgICAgXzQ1ODctPmFkZCgzNjcpOworICAgIF80NTg3LT5hZGQoMTc5KTsKKyAgICBfNDU4
Ny0+YWRkKDQ1KTsKKyAgICBfNDU4Ny0+YWRkKDI1MCk7CisgICAgXzQ1ODctPmFkZCgxMTEpOwor
ICAgIF80NTg3LT5hZGQoMjYpOworICAgIF80NTg3LT5hZGQoNDQwKTsKKyAgICBfNDU4Ny0+YWRk
KDE2OCk7CisgICAgXzQ1ODctPmFkZCg0MjgpOworICAgIF80NTg3LT5hZGQoMik7CisgICAgXzQ1
ODctPmFkZCgzNTkpOworICAgIF80NTg3LT5hZGQoNDI0KTsKKyAgICBfNDU4Ny0+YWRkKDQyMCk7
CisgICAgXzQ1ODctPmFkZCgyMCk7CisgICAgXzQ1ODctPmFkZCg5OCk7CisgICAgXzQ1ODctPmFk
ZCgzNzIpOworICAgIF80NTg3LT5hZGQoNDMyKTsKKyAgICBfNDU4OC0+YWRkKDE4Mik7CisgICAg
XzQ1ODgtPmFkZCg0MzYpOworICAgIF80NTg4LT5hZGQoMjI5KTsKKyAgICBfNDU4OC0+YWRkKDEy
Nik7CisgICAgXzQ1ODgtPmFkZCgyODcpOworICAgIF80NTg4LT5hZGQoMzY3KTsKKyAgICBfNDU4
OC0+YWRkKDQzMik7CisgICAgXzQ1ODgtPmFkZCgxNzkpOworICAgIF80NTg4LT5hZGQoNDIwKTsK
KyAgICBfNDU4OC0+YWRkKDQ1KTsKKyAgICBfNDU4OC0+YWRkKDI1MCk7CisgICAgXzQ1ODgtPmFk
ZCgxMTEpOworICAgIF80NTg4LT5hZGQoMjYpOworICAgIF80NTg4LT5hZGQoNDQwKTsKKyAgICBf
NDU4OC0+YWRkKDE2OCk7CisgICAgXzQ1ODgtPmFkZCg0MjgpOworICAgIF80NTg4LT5hZGQoMzU5
KTsKKyAgICBfNDU4OC0+YWRkKDIpOworICAgIF80NTg4LT5hZGQoNDI0KTsKKyAgICBfNDU4OC0+
YWRkKDIwKTsKKyAgICBfNDU4OC0+YWRkKDM3Mik7CisgICAgXzQ1ODgtPmFkZCg5OCk7CisgICAg
XzQ1ODgtPmFkZCg3Mik7CisgICAgXzQ1ODgtPmFkZCg1MDMpOworICAgIF80NTg5LT5hZGQoMTgy
KTsKKyAgICBfNDU4OS0+YWRkKDQzNik7CisgICAgXzQ1ODktPmFkZCgyMjkpOworICAgIF80NTg5
LT5hZGQoMTI2KTsKKyAgICBfNDU4OS0+YWRkKDI4Nyk7CisgICAgXzQ1ODktPmFkZCgzNjcpOwor
ICAgIF80NTg5LT5hZGQoNDMyKTsKKyAgICBfNDU4OS0+YWRkKDE3OSk7CisgICAgXzQ1ODktPmFk
ZCg0MjApOworICAgIF80NTg5LT5hZGQoNDUpOworICAgIF80NTg5LT5hZGQoMjUwKTsKKyAgICBf
NDU4OS0+YWRkKDExMSk7CisgICAgXzQ1ODktPmFkZCgyNik7CisgICAgXzQ1ODktPmFkZCg0NDAp
OworICAgIF80NTg5LT5hZGQoMTY4KTsKKyAgICBfNDU4OS0+YWRkKDQyOCk7CisgICAgXzQ1ODkt
PmFkZCgzNTkpOworICAgIF80NTg5LT5hZGQoMik7CisgICAgXzQ1ODktPmFkZCg0MjQpOworICAg
IF80NTg5LT5hZGQoMjApOworICAgIF80NTg5LT5hZGQoMzcyKTsKKyAgICBfNDU4OS0+YWRkKDk4
KTsKKyAgICBfNDU4OS0+YWRkKDcyKTsKKyAgICBfNDU4OS0+YWRkKDUwMyk7CisgICAgXzQ1OTAt
PmFkZCgxODIpOworICAgIF80NTkwLT5hZGQoNDM2KTsKKyAgICBfNDU5MC0+YWRkKDIyOSk7Cisg
ICAgXzQ1OTAtPmFkZCgxMjYpOworICAgIF80NTkwLT5hZGQoMjg3KTsKKyAgICBfNDU5MC0+YWRk
KDM2Nyk7CisgICAgXzQ1OTAtPmFkZCg0MzIpOworICAgIF80NTkwLT5hZGQoMTc5KTsKKyAgICBf
NDU5MC0+YWRkKDQ1KTsKKyAgICBfNDU5MC0+YWRkKDI1MCk7CisgICAgXzQ1OTAtPmFkZCgxMTEp
OworICAgIF80NTkwLT5hZGQoMjYpOworICAgIF80NTkwLT5hZGQoNDQwKTsKKyAgICBfNDU5MC0+
YWRkKDE2OCk7CisgICAgXzQ1OTAtPmFkZCg0MjgpOworICAgIF80NTkwLT5hZGQoOTgpOworICAg
IF80NTkwLT5hZGQoMzU5KTsKKyAgICBfNDU5MC0+YWRkKDIpOworICAgIF80NTkwLT5hZGQoNDIw
KTsKKyAgICBfNDU5MC0+YWRkKDIwKTsKKyAgICBfNDU5MC0+YWRkKDcyKTsKKyAgICBfNDU5MC0+
YWRkKDQyNCk7CisgICAgXzQ1OTAtPmFkZCgzNzIpOworICAgIF80NTkwLT5hZGQoMTgzKTsKKyAg
ICBfNDU4Ny0+YWRkKDE4Mik7CisgICAgXzQ1ODctPmFkZCg0MzYpOworICAgIF80NTg3LT5hZGQo
MjI5KTsKKyAgICBfNDU4Ny0+YWRkKDEyNik7CisgICAgXzQ1ODctPmFkZCgyODcpOworICAgIF80
NTg3LT5hZGQoMzY3KTsKKyAgICBfNDU4Ny0+YWRkKDQzMik7CisgICAgXzQ1ODctPmFkZCgxNzkp
OworICAgIF80NTg3LT5hZGQoNDUpOworICAgIF80NTg3LT5hZGQoMjUwKTsKKyAgICBfNDU4Ny0+
YWRkKDExMSk7CisgICAgXzQ1ODctPmFkZCgyNik7CisgICAgXzQ1ODctPmFkZCg0NDApOworICAg
IF80NTg3LT5hZGQoMTY4KTsKKyAgICBfNDU4Ny0+YWRkKDQyOCk7CisgICAgXzQ1ODctPmFkZCg5
OCk7CisgICAgXzQ1ODctPmFkZCgzNTkpOworICAgIF80NTg3LT5hZGQoMik7CisgICAgXzQ1ODct
PmFkZCg0MjApOworICAgIF80NTg3LT5hZGQoMjApOworICAgIF80NTg3LT5hZGQoNzIpOworICAg
IF80NTg3LT5hZGQoNDI0KTsKKyAgICBfNDU4Ny0+YWRkKDM3Mik7CisgICAgZGVsZXRlIF80NTg3
OworICAgIGRlbGV0ZSBfNDU4ODsKKyAgICBkZWxldGUgXzQ1ODk7CisgICAgZGVsZXRlIF80NTkw
OworICAgIGRlbGV0ZSBfNDU5MTsKKyAgICBkZWxldGUgXzQ1OTI7CisgICAgZGVsZXRlIF80NTkz
OworICAgIGRlbGV0ZSBfNDU5NDsKKyAgICBkZWxldGUgXzQ1OTU7CisgICAgZGVsZXRlIF80NTk2
OworICAgIGRlbGV0ZSBfNDU5NzsKKyAgICBkZWxldGUgXzQ1OTg7CisgICAgZGVsZXRlIF80NTk5
OworICAgIGRlbGV0ZSBfNDYwMDsKKyAgICBkZWxldGUgXzQ2MDE7CisgICAgZGVsZXRlIF80NjAy
OworICAgIGF1dG8qIF80NjAzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ2MDQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYwNSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjA2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MDcgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYwOCA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjA5ID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MTAgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYx
MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80NjEyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ2MTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDYxNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NjE1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ2MTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYxNyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjE4ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgXzQ2MTctPmFkZCg0ODMpOworICAgIF80NjE1
LT5hZGQoNTA5KTsKKyAgICBfNDYxNS0+YWRkKDIyOSk7CisgICAgXzQ2MTUtPmFkZCgxODIpOwor
ICAgIF80NjE1LT5hZGQoNTA4KTsKKyAgICBfNDYxNi0+YWRkKDUwOSk7CisgICAgXzQ2MTYtPmFk
ZCgyMjkpOworICAgIF80NjE2LT5hZGQoMTgyKTsKKyAgICBfNDYxNi0+YWRkKDUwOCk7CisgICAg
XzQ2MTctPmFkZCgxODIpOworICAgIF80NjE3LT5hZGQoMjI5KTsKKyAgICBfNDYxNy0+YWRkKDQ4
Myk7CisgICAgXzQ2MTctPmFkZCg0NzMpOworICAgIF80NjE0LT5hZGQoMTgyKTsKKyAgICBfNDYx
NC0+YWRkKDIyOSk7CisgICAgXzQ2MTQtPmFkZCgxNjgpOworICAgIF80NjE0LT5hZGQoMik7Cisg
ICAgXzQ2MTQtPmFkZCgxMjYpOworICAgIF80NjE0LT5hZGQoMjApOworICAgIF80NjE0LT5hZGQo
MzU5KTsKKyAgICBfNDYxNC0+YWRkKDM3Mik7CisgICAgXzQ2MTQtPmFkZCg5OCk7CisgICAgXzQ2
MTQtPmFkZCg0MjApOworICAgIF80NjE0LT5hZGQoNDI0KTsKKyAgICBfNDYxNC0+YWRkKDQyOCk7
CisgICAgXzQ2MTQtPmFkZCg0MzIpOworICAgIF80NjE0LT5hZGQoNDM2KTsKKyAgICBfNDYxNC0+
YWRkKDQ0MCk7CisgICAgXzQ2MTQtPmFkZCgzNjcpOworICAgIF80NjE0LT5hZGQoMjYpOworICAg
IF80NjE0LT5hZGQoNDUpOworICAgIF80NjE0LT5hZGQoNTA3KTsKKyAgICBfNDYxMy0+YWRkKDE4
Mik7CisgICAgXzQ2MTMtPmFkZCgyMjkpOworICAgIF80NjEzLT5hZGQoMTY4KTsKKyAgICBfNDYx
My0+YWRkKDIpOworICAgIF80NjEzLT5hZGQoMTI2KTsKKyAgICBfNDYxMy0+YWRkKDIwKTsKKyAg
ICBfNDYxMy0+YWRkKDM1OSk7CisgICAgXzQ2MTMtPmFkZCgzNzIpOworICAgIF80NjEzLT5hZGQo
OTgpOworICAgIF80NjEzLT5hZGQoNDIwKTsKKyAgICBfNDYxMy0+YWRkKDQyNCk7CisgICAgXzQ2
MTMtPmFkZCg0MjgpOworICAgIF80NjEzLT5hZGQoNDMyKTsKKyAgICBfNDYxMy0+YWRkKDQzNik7
CisgICAgXzQ2MTMtPmFkZCg0NDApOworICAgIF80NjEzLT5hZGQoMzY3KTsKKyAgICBfNDYxMy0+
YWRkKDI2KTsKKyAgICBfNDYxMy0+YWRkKDQ1KTsKKyAgICBfNDYxMy0+YWRkKDUwNyk7CisgICAg
XzQ2MDktPmFkZCgxODIpOworICAgIF80NjA5LT5hZGQoNDM2KTsKKyAgICBfNDYwOS0+YWRkKDIy
OSk7CisgICAgXzQ2MDktPmFkZCgxMjYpOworICAgIF80NjA5LT5hZGQoMzY3KTsKKyAgICBfNDYw
OS0+YWRkKDQ1KTsKKyAgICBfNDYwOS0+YWRkKDQzMik7CisgICAgXzQ2MDktPmFkZCgzNTkpOwor
ICAgIF80NjA5LT5hZGQoNDQwKTsKKyAgICBfNDYwOS0+YWRkKDI2KTsKKyAgICBfNDYwOS0+YWRk
KDE2OCk7CisgICAgXzQ2MDktPmFkZCg0MjgpOworICAgIF80NjA5LT5hZGQoOTgpOworICAgIF80
NjA5LT5hZGQoMik7CisgICAgXzQ2MDktPmFkZCg0MjApOworICAgIF80NjA5LT5hZGQoMjApOwor
ICAgIF80NjA5LT5hZGQoNDI0KTsKKyAgICBfNDYwOS0+YWRkKDM3Mik7CisgICAgXzQ2MTItPmFk
ZCgxODIpOworICAgIF80NjEyLT5hZGQoNDM2KTsKKyAgICBfNDYxMi0+YWRkKDIyOSk7CisgICAg
XzQ2MTItPmFkZCgxMjYpOworICAgIF80NjEyLT5hZGQoMzY3KTsKKyAgICBfNDYxMi0+YWRkKDQ1
KTsKKyAgICBfNDYxMi0+YWRkKDQzMik7CisgICAgXzQ2MTItPmFkZCgzNTkpOworICAgIF80NjEy
LT5hZGQoNDQwKTsKKyAgICBfNDYxMi0+YWRkKDI2KTsKKyAgICBfNDYxMi0+YWRkKDE2OCk7Cisg
ICAgXzQ2MTItPmFkZCg0MjgpOworICAgIF80NjEyLT5hZGQoOTgpOworICAgIF80NjEyLT5hZGQo
Mik7CisgICAgXzQ2MTItPmFkZCg0MjApOworICAgIF80NjEyLT5hZGQoMjApOworICAgIF80NjEy
LT5hZGQoNDI0KTsKKyAgICBfNDYxMi0+YWRkKDM3Mik7CisgICAgXzQ2MTItPmFkZCgzMjApOwor
ICAgIF80NjExLT5hZGQoMTgyKTsKKyAgICBfNDYxMS0+YWRkKDQzNik7CisgICAgXzQ2MTEtPmFk
ZCgyMjkpOworICAgIF80NjExLT5hZGQoMTI2KTsKKyAgICBfNDYxMS0+YWRkKDM2Nyk7CisgICAg
XzQ2MTEtPmFkZCgyODcpOworICAgIF80NjExLT5hZGQoNDMyKTsKKyAgICBfNDYxMS0+YWRkKDQ1
KTsKKyAgICBfNDYxMS0+YWRkKDI2KTsKKyAgICBfNDYxMS0+YWRkKDQ0MCk7CisgICAgXzQ2MTEt
PmFkZCgxNjgpOworICAgIF80NjExLT5hZGQoNDI4KTsKKyAgICBfNDYxMS0+YWRkKDM1OSk7Cisg
ICAgXzQ2MTEtPmFkZCgyKTsKKyAgICBfNDYxMS0+YWRkKDQyMCk7CisgICAgXzQ2MTEtPmFkZCgy
MCk7CisgICAgXzQ2MTEtPmFkZCg0MjQpOworICAgIF80NjExLT5hZGQoMzcyKTsKKyAgICBfNDYx
MS0+YWRkKDk4KTsKKyAgICBfNDYxMS0+YWRkKDI1MCk7CisgICAgXzQ2MTEtPmFkZCgxNzkpOwor
ICAgIF80NjExLT5hZGQoNTA2KTsKKyAgICBfNDYxMS0+YWRkKDExMSk7CisgICAgXzQ2MTEtPmFk
ZCgyNzIpOworICAgIF80NjExLT5hZGQoNTA1KTsKKyAgICBfNDYxMC0+YWRkKDE4Mik7CisgICAg
XzQ2MTAtPmFkZCg0MzYpOworICAgIF80NjEwLT5hZGQoMjI5KTsKKyAgICBfNDYxMC0+YWRkKDEy
Nik7CisgICAgXzQ2MTAtPmFkZCgzNjcpOworICAgIF80NjEwLT5hZGQoMjg3KTsKKyAgICBfNDYx
MC0+YWRkKDQzMik7CisgICAgXzQ2MTAtPmFkZCg0NSk7CisgICAgXzQ2MTAtPmFkZCgyNik7Cisg
ICAgXzQ2MTAtPmFkZCg0NDApOworICAgIF80NjEwLT5hZGQoMTY4KTsKKyAgICBfNDYxMC0+YWRk
KDQyOCk7CisgICAgXzQ2MTAtPmFkZCgzNTkpOworICAgIF80NjEwLT5hZGQoMik7CisgICAgXzQ2
MTAtPmFkZCg0MjApOworICAgIF80NjEwLT5hZGQoMjApOworICAgIF80NjEwLT5hZGQoNDI0KTsK
KyAgICBfNDYxMC0+YWRkKDM3Mik7CisgICAgXzQ2MTAtPmFkZCg5OCk7CisgICAgXzQ2MTAtPmFk
ZCgyNTApOworICAgIF80NjEwLT5hZGQoMTc5KTsKKyAgICBfNDYxMC0+YWRkKDUwNik7CisgICAg
XzQ2MTAtPmFkZCgxMTEpOworICAgIF80NjEwLT5hZGQoMjcyKTsKKyAgICBfNDYxMC0+YWRkKDUw
NSk7CisgICAgXzQ2MDktPmFkZCgxODIpOworICAgIF80NjA5LT5hZGQoNDM2KTsKKyAgICBfNDYw
OS0+YWRkKDIyOSk7CisgICAgXzQ2MDktPmFkZCgxMjYpOworICAgIF80NjA5LT5hZGQoMjg3KTsK
KyAgICBfNDYwOS0+YWRkKDM2Nyk7CisgICAgXzQ2MDktPmFkZCgyMzYpOworICAgIF80NjA5LT5h
ZGQoMTc5KTsKKyAgICBfNDYwOS0+YWRkKDQ1KTsKKyAgICBfNDYwOS0+YWRkKDQzMik7CisgICAg
XzQ2MDktPmFkZCgyNTApOworICAgIF80NjA5LT5hZGQoMjcyKTsKKyAgICBfNDYwOS0+YWRkKDEx
MSk7CisgICAgXzQ2MDktPmFkZCgyNik7CisgICAgXzQ2MDktPmFkZCg0NDApOworICAgIF80NjA5
LT5hZGQoMTY4KTsKKyAgICBfNDYwOS0+YWRkKDQyOCk7CisgICAgXzQ2MDktPmFkZCg5OCk7Cisg
ICAgXzQ2MDktPmFkZCgzNTkpOworICAgIF80NjA5LT5hZGQoMik7CisgICAgXzQ2MDktPmFkZCg0
MjApOworICAgIF80NjA5LT5hZGQoMjApOworICAgIF80NjA5LT5hZGQoNDI0KTsKKyAgICBfNDYw
OS0+YWRkKDM3Mik7CisgICAgXzQ2MTItPmFkZCgxODIpOworICAgIF80NjEyLT5hZGQoNDM2KTsK
KyAgICBfNDYxMi0+YWRkKDIyOSk7CisgICAgXzQ2MTItPmFkZCgxMjYpOworICAgIF80NjEyLT5h
ZGQoMjg3KTsKKyAgICBfNDYxMi0+YWRkKDM2Nyk7CisgICAgXzQ2MTItPmFkZCgzMzgpOworICAg
IF80NjEyLT5hZGQoMTc5KTsKKyAgICBfNDYxMi0+YWRkKDQ1KTsKKyAgICBfNDYxMi0+YWRkKDQz
Mik7CisgICAgXzQ2MTItPmFkZCgyNTApOworICAgIF80NjEyLT5hZGQoMjcyKTsKKyAgICBfNDYx
Mi0+YWRkKDExMSk7CisgICAgXzQ2MTItPmFkZCgyNik7CisgICAgXzQ2MTItPmFkZCg0NDApOwor
ICAgIF80NjEyLT5hZGQoMTY4KTsKKyAgICBfNDYxMi0+YWRkKDQyOCk7CisgICAgXzQ2MTItPmFk
ZCg5OCk7CisgICAgXzQ2MTItPmFkZCgzNTkpOworICAgIF80NjEyLT5hZGQoMik7CisgICAgXzQ2
MTItPmFkZCg0MjApOworICAgIF80NjEyLT5hZGQoMjApOworICAgIF80NjEyLT5hZGQoNDI0KTsK
KyAgICBfNDYxMi0+YWRkKDM3Mik7CisgICAgXzQ2MTItPmFkZCgzMjApOworICAgIF80NjA3LT5h
ZGQoMTgyKTsKKyAgICBfNDYwNy0+YWRkKDQzNik7CisgICAgXzQ2MDctPmFkZCgyMjkpOworICAg
IF80NjA3LT5hZGQoMTI2KTsKKyAgICBfNDYwNy0+YWRkKDI4Nyk7CisgICAgXzQ2MDctPmFkZCgz
NjcpOworICAgIF80NjA3LT5hZGQoNDMyKTsKKyAgICBfNDYwNy0+YWRkKDE3OSk7CisgICAgXzQ2
MDctPmFkZCg0NSk7CisgICAgXzQ2MDctPmFkZCgyNTApOworICAgIF80NjA3LT5hZGQoMzcyKTsK
KyAgICBfNDYwNy0+YWRkKDExMSk7CisgICAgXzQ2MDctPmFkZCgyNik7CisgICAgXzQ2MDctPmFk
ZCg0NDApOworICAgIF80NjA3LT5hZGQoMTY4KTsKKyAgICBfNDYwNy0+YWRkKDQyOCk7CisgICAg
XzQ2MDctPmFkZCgzNTkpOworICAgIF80NjA3LT5hZGQoMik7CisgICAgXzQ2MDctPmFkZCg5OCk7
CisgICAgXzQ2MDctPmFkZCg0MjApOworICAgIF80NjA3LT5hZGQoMjApOworICAgIF80NjA3LT5h
ZGQoNDI0KTsKKyAgICBfNDYwOC0+YWRkKDE4Mik7CisgICAgXzQ2MDgtPmFkZCg0MzYpOworICAg
IF80NjA4LT5hZGQoMjI5KTsKKyAgICBfNDYwOC0+YWRkKDEyNik7CisgICAgXzQ2MDgtPmFkZCgy
ODcpOworICAgIF80NjA4LT5hZGQoMzY3KTsKKyAgICBfNDYwOC0+YWRkKDQzMik7CisgICAgXzQ2
MDgtPmFkZCgxNzkpOworICAgIF80NjA4LT5hZGQoNDUpOworICAgIF80NjA4LT5hZGQoMjUwKTsK
KyAgICBfNDYwOC0+YWRkKDM3Mik7CisgICAgXzQ2MDgtPmFkZCgxMTEpOworICAgIF80NjA4LT5h
ZGQoMjYpOworICAgIF80NjA4LT5hZGQoNDQwKTsKKyAgICBfNDYwOC0+YWRkKDE2OCk7CisgICAg
XzQ2MDgtPmFkZCg0MjgpOworICAgIF80NjA4LT5hZGQoMzU5KTsKKyAgICBfNDYwOC0+YWRkKDIp
OworICAgIF80NjA4LT5hZGQoOTgpOworICAgIF80NjA4LT5hZGQoNDIwKTsKKyAgICBfNDYwOC0+
YWRkKDIwKTsKKyAgICBfNDYwOC0+YWRkKDQyNCk7CisgICAgXzQ2MDYtPmFkZCgxODIpOworICAg
IF80NjA2LT5hZGQoNDM2KTsKKyAgICBfNDYwNi0+YWRkKDIyOSk7CisgICAgXzQ2MDYtPmFkZCgx
MjYpOworICAgIF80NjA2LT5hZGQoNDI0KTsKKyAgICBfNDYwNi0+YWRkKDI4Nyk7CisgICAgXzQ2
MDYtPmFkZCgzNjcpOworICAgIF80NjA2LT5hZGQoMTc5KTsKKyAgICBfNDYwNi0+YWRkKDQ1KTsK
KyAgICBfNDYwNi0+YWRkKDI1MCk7CisgICAgXzQ2MDYtPmFkZCgxMTEpOworICAgIF80NjA2LT5h
ZGQoMjYpOworICAgIF80NjA2LT5hZGQoNDQwKTsKKyAgICBfNDYwNi0+YWRkKDE2OCk7CisgICAg
XzQ2MDYtPmFkZCg0MjgpOworICAgIF80NjA2LT5hZGQoMzU5KTsKKyAgICBfNDYwNi0+YWRkKDIp
OworICAgIF80NjA2LT5hZGQoNDIwKTsKKyAgICBfNDYwNi0+YWRkKDIwKTsKKyAgICBfNDYwNi0+
YWRkKDk4KTsKKyAgICBfNDYwNi0+YWRkKDM3Mik7CisgICAgXzQ2MDYtPmFkZCg0MzIpOworICAg
IF80NjAzLT5hZGQoMTgyKTsKKyAgICBfNDYwMy0+YWRkKDQzNik7CisgICAgXzQ2MDMtPmFkZCgy
MjkpOworICAgIF80NjAzLT5hZGQoMTI2KTsKKyAgICBfNDYwMy0+YWRkKDQyNCk7CisgICAgXzQ2
MDMtPmFkZCgyODcpOworICAgIF80NjAzLT5hZGQoMzY3KTsKKyAgICBfNDYwMy0+YWRkKDE3OSk7
CisgICAgXzQ2MDMtPmFkZCg0NSk7CisgICAgXzQ2MDMtPmFkZCgyNTApOworICAgIF80NjAzLT5h
ZGQoMTExKTsKKyAgICBfNDYwMy0+YWRkKDI2KTsKKyAgICBfNDYwMy0+YWRkKDQ0MCk7CisgICAg
XzQ2MDMtPmFkZCgxNjgpOworICAgIF80NjAzLT5hZGQoNDI4KTsKKyAgICBfNDYwMy0+YWRkKDM1
OSk7CisgICAgXzQ2MDMtPmFkZCgyKTsKKyAgICBfNDYwMy0+YWRkKDQyMCk7CisgICAgXzQ2MDMt
PmFkZCgyMCk7CisgICAgXzQ2MDMtPmFkZCg5OCk7CisgICAgXzQ2MDMtPmFkZCgzNzIpOworICAg
IF80NjAzLT5hZGQoNDMyKTsKKyAgICBfNDYwNC0+YWRkKDE4Mik7CisgICAgXzQ2MDQtPmFkZCg0
MzYpOworICAgIF80NjA0LT5hZGQoMjI5KTsKKyAgICBfNDYwNC0+YWRkKDEyNik7CisgICAgXzQ2
MDQtPmFkZCgyODcpOworICAgIF80NjA0LT5hZGQoMzY3KTsKKyAgICBfNDYwNC0+YWRkKDQzMik7
CisgICAgXzQ2MDQtPmFkZCgxNzkpOworICAgIF80NjA0LT5hZGQoNDUpOworICAgIF80NjA0LT5h
ZGQoMjUwKTsKKyAgICBfNDYwNC0+YWRkKDExMSk7CisgICAgXzQ2MDQtPmFkZCgyNik7CisgICAg
XzQ2MDQtPmFkZCg0NDApOworICAgIF80NjA0LT5hZGQoMTY4KTsKKyAgICBfNDYwNC0+YWRkKDQy
OCk7CisgICAgXzQ2MDQtPmFkZCgyKTsKKyAgICBfNDYwNC0+YWRkKDM1OSk7CisgICAgXzQ2MDQt
PmFkZCg0MjQpOworICAgIF80NjA0LT5hZGQoNDIwKTsKKyAgICBfNDYwNC0+YWRkKDIwKTsKKyAg
ICBfNDYwNC0+YWRkKDM3Mik7CisgICAgXzQ2MDQtPmFkZCg5OCk7CisgICAgXzQ2MDQtPmFkZCg3
Mik7CisgICAgXzQ2MDQtPmFkZCg1MDQpOworICAgIF80NjA1LT5hZGQoMTgyKTsKKyAgICBfNDYw
NS0+YWRkKDQzNik7CisgICAgXzQ2MDUtPmFkZCgyMjkpOworICAgIF80NjA1LT5hZGQoMTI2KTsK
KyAgICBfNDYwNS0+YWRkKDI4Nyk7CisgICAgXzQ2MDUtPmFkZCgzNjcpOworICAgIF80NjA1LT5h
ZGQoNDMyKTsKKyAgICBfNDYwNS0+YWRkKDE3OSk7CisgICAgXzQ2MDUtPmFkZCg0NSk7CisgICAg
XzQ2MDUtPmFkZCgyNTApOworICAgIF80NjA1LT5hZGQoMTExKTsKKyAgICBfNDYwNS0+YWRkKDI2
KTsKKyAgICBfNDYwNS0+YWRkKDQ0MCk7CisgICAgXzQ2MDUtPmFkZCgxNjgpOworICAgIF80NjA1
LT5hZGQoNDI4KTsKKyAgICBfNDYwNS0+YWRkKDIpOworICAgIF80NjA1LT5hZGQoMzU5KTsKKyAg
ICBfNDYwNS0+YWRkKDQyNCk7CisgICAgXzQ2MDUtPmFkZCg0MjApOworICAgIF80NjA1LT5hZGQo
MjApOworICAgIF80NjA1LT5hZGQoMzcyKTsKKyAgICBfNDYwNS0+YWRkKDk4KTsKKyAgICBfNDYw
NS0+YWRkKDcyKTsKKyAgICBfNDYwNS0+YWRkKDUwNCk7CisgICAgXzQ2MDYtPmFkZCgxODIpOwor
ICAgIF80NjA2LT5hZGQoNDM2KTsKKyAgICBfNDYwNi0+YWRkKDIyOSk7CisgICAgXzQ2MDYtPmFk
ZCgxMjYpOworICAgIF80NjA2LT5hZGQoMjg3KTsKKyAgICBfNDYwNi0+YWRkKDM2Nyk7CisgICAg
XzQ2MDYtPmFkZCg0MzIpOworICAgIF80NjA2LT5hZGQoMTc5KTsKKyAgICBfNDYwNi0+YWRkKDQy
MCk7CisgICAgXzQ2MDYtPmFkZCg0NSk7CisgICAgXzQ2MDYtPmFkZCgyNTApOworICAgIF80NjA2
LT5hZGQoMTExKTsKKyAgICBfNDYwNi0+YWRkKDI2KTsKKyAgICBfNDYwNi0+YWRkKDQ0MCk7Cisg
ICAgXzQ2MDYtPmFkZCgxNjgpOworICAgIF80NjA2LT5hZGQoNDI4KTsKKyAgICBfNDYwNi0+YWRk
KDM1OSk7CisgICAgXzQ2MDYtPmFkZCgyKTsKKyAgICBfNDYwNi0+YWRkKDQyNCk7CisgICAgXzQ2
MDYtPmFkZCgyMCk7CisgICAgXzQ2MDYtPmFkZCg3Mik7CisgICAgXzQ2MDYtPmFkZCg5OCk7Cisg
ICAgXzQ2MDYtPmFkZCgzNzIpOworICAgIF80NjA2LT5hZGQoMTgzKTsKKyAgICBfNDYwMy0+YWRk
KDE4Mik7CisgICAgXzQ2MDMtPmFkZCg0MzYpOworICAgIF80NjAzLT5hZGQoMjI5KTsKKyAgICBf
NDYwMy0+YWRkKDEyNik7CisgICAgXzQ2MDMtPmFkZCgyODcpOworICAgIF80NjAzLT5hZGQoMzY3
KTsKKyAgICBfNDYwMy0+YWRkKDQzMik7CisgICAgXzQ2MDMtPmFkZCgxNzkpOworICAgIF80NjAz
LT5hZGQoNDIwKTsKKyAgICBfNDYwMy0+YWRkKDQ1KTsKKyAgICBfNDYwMy0+YWRkKDI1MCk7Cisg
ICAgXzQ2MDMtPmFkZCgxMTEpOworICAgIF80NjAzLT5hZGQoMjYpOworICAgIF80NjAzLT5hZGQo
NDQwKTsKKyAgICBfNDYwMy0+YWRkKDE2OCk7CisgICAgXzQ2MDMtPmFkZCg0MjgpOworICAgIF80
NjAzLT5hZGQoMzU5KTsKKyAgICBfNDYwMy0+YWRkKDIpOworICAgIF80NjAzLT5hZGQoNDI0KTsK
KyAgICBfNDYwMy0+YWRkKDIwKTsKKyAgICBfNDYwMy0+YWRkKDcyKTsKKyAgICBfNDYwMy0+YWRk
KDk4KTsKKyAgICBfNDYwMy0+YWRkKDM3Mik7CisgICAgZGVsZXRlIF80NjAzOworICAgIGRlbGV0
ZSBfNDYwNDsKKyAgICBkZWxldGUgXzQ2MDU7CisgICAgZGVsZXRlIF80NjA2OworICAgIGRlbGV0
ZSBfNDYwNzsKKyAgICBkZWxldGUgXzQ2MDg7CisgICAgZGVsZXRlIF80NjA5OworICAgIGRlbGV0
ZSBfNDYxMDsKKyAgICBkZWxldGUgXzQ2MTE7CisgICAgZGVsZXRlIF80NjEyOworICAgIGRlbGV0
ZSBfNDYxMzsKKyAgICBkZWxldGUgXzQ2MTQ7CisgICAgZGVsZXRlIF80NjE1OworICAgIGRlbGV0
ZSBfNDYxNjsKKyAgICBkZWxldGUgXzQ2MTc7CisgICAgZGVsZXRlIF80NjE4OworICAgIGF1dG8q
IF80NjE5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ2MjAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDYyMSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NjIyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ2MjMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYyNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjI1ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MjYgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYyNyA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjI4ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2Mjkg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDYzMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NjMxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ2MzIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDYzMyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NjM0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgXzQ2MzMtPmFkZCg0ODMpOworICAgIF80NjMxLT5hZGQoNTAyKTsK
KyAgICBfNDYzMS0+YWRkKDIyOSk7CisgICAgXzQ2MzEtPmFkZCgxODIpOworICAgIF80NjMxLT5h
ZGQoNTAxKTsKKyAgICBfNDYzMi0+YWRkKDUwMik7CisgICAgXzQ2MzItPmFkZCgyMjkpOworICAg
IF80NjMyLT5hZGQoMTgyKTsKKyAgICBfNDYzMi0+YWRkKDUwMSk7CisgICAgXzQ2MzMtPmFkZCgx
ODIpOworICAgIF80NjMzLT5hZGQoMjI5KTsKKyAgICBfNDYzMy0+YWRkKDQ4Myk7CisgICAgXzQ2
MzMtPmFkZCg0NzMpOworICAgIF80NjMwLT5hZGQoMTgyKTsKKyAgICBfNDYzMC0+YWRkKDIyOSk7
CisgICAgXzQ2MzAtPmFkZCgxNjgpOworICAgIF80NjMwLT5hZGQoMTI2KTsKKyAgICBfNDYzMC0+
YWRkKDM1OSk7CisgICAgXzQ2MzAtPmFkZCgyKTsKKyAgICBfNDYzMC0+YWRkKDM3Mik7CisgICAg
XzQ2MzAtPmFkZCg5OCk7CisgICAgXzQ2MzAtPmFkZCg0MjApOworICAgIF80NjMwLT5hZGQoNDI0
KTsKKyAgICBfNDYzMC0+YWRkKDQyOCk7CisgICAgXzQ2MzAtPmFkZCg0MzIpOworICAgIF80NjMw
LT5hZGQoNDM2KTsKKyAgICBfNDYzMC0+YWRkKDQ0MCk7CisgICAgXzQ2MzAtPmFkZCgzNjcpOwor
ICAgIF80NjMwLT5hZGQoMjYpOworICAgIF80NjMwLT5hZGQoNDUpOworICAgIF80NjMwLT5hZGQo
NTAwKTsKKyAgICBfNDYyOS0+YWRkKDE4Mik7CisgICAgXzQ2MjktPmFkZCgyMjkpOworICAgIF80
NjI5LT5hZGQoMTY4KTsKKyAgICBfNDYyOS0+YWRkKDEyNik7CisgICAgXzQ2MjktPmFkZCgzNTkp
OworICAgIF80NjI5LT5hZGQoMik7CisgICAgXzQ2MjktPmFkZCgzNzIpOworICAgIF80NjI5LT5h
ZGQoOTgpOworICAgIF80NjI5LT5hZGQoNDIwKTsKKyAgICBfNDYyOS0+YWRkKDQyNCk7CisgICAg
XzQ2MjktPmFkZCg0MjgpOworICAgIF80NjI5LT5hZGQoNDMyKTsKKyAgICBfNDYyOS0+YWRkKDQz
Nik7CisgICAgXzQ2MjktPmFkZCg0NDApOworICAgIF80NjI5LT5hZGQoMzY3KTsKKyAgICBfNDYy
OS0+YWRkKDI2KTsKKyAgICBfNDYyOS0+YWRkKDQ1KTsKKyAgICBfNDYyOS0+YWRkKDUwMCk7Cisg
ICAgXzQ2MjUtPmFkZCgxODIpOworICAgIF80NjI1LT5hZGQoNDM2KTsKKyAgICBfNDYyNS0+YWRk
KDIyOSk7CisgICAgXzQ2MjUtPmFkZCgxMjYpOworICAgIF80NjI1LT5hZGQoMzY3KTsKKyAgICBf
NDYyNS0+YWRkKDQzMik7CisgICAgXzQ2MjUtPmFkZCg0NSk7CisgICAgXzQ2MjUtPmFkZCgyNik7
CisgICAgXzQ2MjUtPmFkZCg0NDApOworICAgIF80NjI1LT5hZGQoMTY4KTsKKyAgICBfNDYyNS0+
YWRkKDQyOCk7CisgICAgXzQ2MjUtPmFkZCg5OCk7CisgICAgXzQ2MjUtPmFkZCgzNTkpOworICAg
IF80NjI1LT5hZGQoMik7CisgICAgXzQ2MjUtPmFkZCg0MjApOworICAgIF80NjI1LT5hZGQoNDI0
KTsKKyAgICBfNDYyNS0+YWRkKDM3Mik7CisgICAgXzQ2MjgtPmFkZCgxODIpOworICAgIF80NjI4
LT5hZGQoNDM2KTsKKyAgICBfNDYyOC0+YWRkKDIyOSk7CisgICAgXzQ2MjgtPmFkZCgxMjYpOwor
ICAgIF80NjI4LT5hZGQoMzY3KTsKKyAgICBfNDYyOC0+YWRkKDQzMik7CisgICAgXzQ2MjgtPmFk
ZCg0NSk7CisgICAgXzQ2MjgtPmFkZCgyNik7CisgICAgXzQ2MjgtPmFkZCg0NDApOworICAgIF80
NjI4LT5hZGQoMTY4KTsKKyAgICBfNDYyOC0+YWRkKDQyOCk7CisgICAgXzQ2MjgtPmFkZCg5OCk7
CisgICAgXzQ2MjgtPmFkZCgzNTkpOworICAgIF80NjI4LT5hZGQoMik7CisgICAgXzQ2MjgtPmFk
ZCg0MjApOworICAgIF80NjI4LT5hZGQoNDI0KTsKKyAgICBfNDYyOC0+YWRkKDM3Mik7CisgICAg
XzQ2MjgtPmFkZCgzMjApOworICAgIF80NjI3LT5hZGQoMTgyKTsKKyAgICBfNDYyNy0+YWRkKDQz
Nik7CisgICAgXzQ2MjctPmFkZCgyMjkpOworICAgIF80NjI3LT5hZGQoMTI2KTsKKyAgICBfNDYy
Ny0+YWRkKDM2Nyk7CisgICAgXzQ2MjctPmFkZCgyMCk7CisgICAgXzQ2MjctPmFkZCg0MzIpOwor
ICAgIF80NjI3LT5hZGQoNDUpOworICAgIF80NjI3LT5hZGQoMjYpOworICAgIF80NjI3LT5hZGQo
NDQwKTsKKyAgICBfNDYyNy0+YWRkKDE2OCk7CisgICAgXzQ2MjctPmFkZCg0MjgpOworICAgIF80
NjI3LT5hZGQoMik7CisgICAgXzQ2MjctPmFkZCgzNTkpOworICAgIF80NjI3LT5hZGQoNDI0KTsK
KyAgICBfNDYyNy0+YWRkKDQyMCk7CisgICAgXzQ2MjctPmFkZCgzNzIpOworICAgIF80NjI3LT5h
ZGQoOTgpOworICAgIF80NjI3LT5hZGQoMjUwKTsKKyAgICBfNDYyNy0+YWRkKDE3OSk7CisgICAg
XzQ2MjctPmFkZCg0OTkpOworICAgIF80NjI3LT5hZGQoMjg3KTsKKyAgICBfNDYyNy0+YWRkKDEx
MSk7CisgICAgXzQ2MjctPmFkZCgyNzIpOworICAgIF80NjI3LT5hZGQoNDk4KTsKKyAgICBfNDYy
Ni0+YWRkKDE4Mik7CisgICAgXzQ2MjYtPmFkZCg0MzYpOworICAgIF80NjI2LT5hZGQoMjI5KTsK
KyAgICBfNDYyNi0+YWRkKDEyNik7CisgICAgXzQ2MjYtPmFkZCgzNjcpOworICAgIF80NjI2LT5h
ZGQoMjApOworICAgIF80NjI2LT5hZGQoNDMyKTsKKyAgICBfNDYyNi0+YWRkKDQ1KTsKKyAgICBf
NDYyNi0+YWRkKDI2KTsKKyAgICBfNDYyNi0+YWRkKDQ0MCk7CisgICAgXzQ2MjYtPmFkZCgxNjgp
OworICAgIF80NjI2LT5hZGQoNDI4KTsKKyAgICBfNDYyNi0+YWRkKDIpOworICAgIF80NjI2LT5h
ZGQoMzU5KTsKKyAgICBfNDYyNi0+YWRkKDQyNCk7CisgICAgXzQ2MjYtPmFkZCg0MjApOworICAg
IF80NjI2LT5hZGQoMzcyKTsKKyAgICBfNDYyNi0+YWRkKDk4KTsKKyAgICBfNDYyNi0+YWRkKDI1
MCk7CisgICAgXzQ2MjYtPmFkZCgxNzkpOworICAgIF80NjI2LT5hZGQoNDk5KTsKKyAgICBfNDYy
Ni0+YWRkKDI4Nyk7CisgICAgXzQ2MjYtPmFkZCgxMTEpOworICAgIF80NjI2LT5hZGQoMjcyKTsK
KyAgICBfNDYyNi0+YWRkKDQ5OCk7CisgICAgXzQ2MjUtPmFkZCg0MzIpOworICAgIF80NjI1LT5h
ZGQoMTgyKTsKKyAgICBfNDYyNS0+YWRkKDQzNik7CisgICAgXzQ2MjUtPmFkZCgyMjkpOworICAg
IF80NjI1LT5hZGQoMTI2KTsKKyAgICBfNDYyNS0+YWRkKDI4Nyk7CisgICAgXzQ2MjUtPmFkZCgz
NjcpOworICAgIF80NjI1LT5hZGQoMTc5KTsKKyAgICBfNDYyNS0+YWRkKDQyMCk7CisgICAgXzQ2
MjUtPmFkZCg0NSk7CisgICAgXzQ2MjUtPmFkZCgyNTApOworICAgIF80NjI1LT5hZGQoMjcyKTsK
KyAgICBfNDYyNS0+YWRkKDExMSk7CisgICAgXzQ2MjUtPmFkZCgyNik7CisgICAgXzQ2MjUtPmFk
ZCg0NDApOworICAgIF80NjI1LT5hZGQoMTY4KTsKKyAgICBfNDYyNS0+YWRkKDQyOCk7CisgICAg
XzQ2MjUtPmFkZCgzNTkpOworICAgIF80NjI1LT5hZGQoMik7CisgICAgXzQ2MjUtPmFkZCg0MjQp
OworICAgIF80NjI1LT5hZGQoMjApOworICAgIF80NjI1LT5hZGQoMjM2KTsKKyAgICBfNDYyNS0+
YWRkKDk4KTsKKyAgICBfNDYyNS0+YWRkKDM3Mik7CisgICAgXzQ2MjgtPmFkZCg0MzIpOworICAg
IF80NjI4LT5hZGQoMTgyKTsKKyAgICBfNDYyOC0+YWRkKDQzNik7CisgICAgXzQ2MjgtPmFkZCgy
MjkpOworICAgIF80NjI4LT5hZGQoMTI2KTsKKyAgICBfNDYyOC0+YWRkKDI4Nyk7CisgICAgXzQ2
MjgtPmFkZCgzNjcpOworICAgIF80NjI4LT5hZGQoMTc5KTsKKyAgICBfNDYyOC0+YWRkKDQyMCk7
CisgICAgXzQ2MjgtPmFkZCg0NSk7CisgICAgXzQ2MjgtPmFkZCgyNTApOworICAgIF80NjI4LT5h
ZGQoMjcyKTsKKyAgICBfNDYyOC0+YWRkKDExMSk7CisgICAgXzQ2MjgtPmFkZCgyNik7CisgICAg
XzQ2MjgtPmFkZCg0NDApOworICAgIF80NjI4LT5hZGQoMTY4KTsKKyAgICBfNDYyOC0+YWRkKDQy
OCk7CisgICAgXzQ2MjgtPmFkZCgzNTkpOworICAgIF80NjI4LT5hZGQoMik7CisgICAgXzQ2Mjgt
PmFkZCg0MjQpOworICAgIF80NjI4LT5hZGQoMjApOworICAgIF80NjI4LT5hZGQoMzM4KTsKKyAg
ICBfNDYyOC0+YWRkKDk4KTsKKyAgICBfNDYyOC0+YWRkKDM3Mik7CisgICAgXzQ2MjgtPmFkZCgz
MjApOworICAgIF80NjIzLT5hZGQoMTgyKTsKKyAgICBfNDYyMy0+YWRkKDQzNik7CisgICAgXzQ2
MjMtPmFkZCgyMjkpOworICAgIF80NjIzLT5hZGQoMTI2KTsKKyAgICBfNDYyMy0+YWRkKDI4Nyk7
CisgICAgXzQ2MjMtPmFkZCgzNjcpOworICAgIF80NjIzLT5hZGQoNDMyKTsKKyAgICBfNDYyMy0+
YWRkKDE3OSk7CisgICAgXzQ2MjMtPmFkZCg0NSk7CisgICAgXzQ2MjMtPmFkZCgyNTApOworICAg
IF80NjIzLT5hZGQoMzcyKTsKKyAgICBfNDYyMy0+YWRkKDExMSk7CisgICAgXzQ2MjMtPmFkZCgy
Nik7CisgICAgXzQ2MjMtPmFkZCg0NDApOworICAgIF80NjIzLT5hZGQoMTY4KTsKKyAgICBfNDYy
My0+YWRkKDQyOCk7CisgICAgXzQ2MjMtPmFkZCgyKTsKKyAgICBfNDYyMy0+YWRkKDM1OSk7Cisg
ICAgXzQ2MjMtPmFkZCg0MjQpOworICAgIF80NjIzLT5hZGQoOTgpOworICAgIF80NjIzLT5hZGQo
NDIwKTsKKyAgICBfNDYyMy0+YWRkKDIwKTsKKyAgICBfNDYyNC0+YWRkKDE4Mik7CisgICAgXzQ2
MjQtPmFkZCg0MzYpOworICAgIF80NjI0LT5hZGQoMjI5KTsKKyAgICBfNDYyNC0+YWRkKDEyNik7
CisgICAgXzQ2MjQtPmFkZCgyODcpOworICAgIF80NjI0LT5hZGQoMzY3KTsKKyAgICBfNDYyNC0+
YWRkKDQzMik7CisgICAgXzQ2MjQtPmFkZCgxNzkpOworICAgIF80NjI0LT5hZGQoNDUpOworICAg
IF80NjI0LT5hZGQoMjUwKTsKKyAgICBfNDYyNC0+YWRkKDM3Mik7CisgICAgXzQ2MjQtPmFkZCgx
MTEpOworICAgIF80NjI0LT5hZGQoMjYpOworICAgIF80NjI0LT5hZGQoNDQwKTsKKyAgICBfNDYy
NC0+YWRkKDE2OCk7CisgICAgXzQ2MjQtPmFkZCg0MjgpOworICAgIF80NjI0LT5hZGQoMik7Cisg
ICAgXzQ2MjQtPmFkZCgzNTkpOworICAgIF80NjI0LT5hZGQoNDI0KTsKKyAgICBfNDYyNC0+YWRk
KDk4KTsKKyAgICBfNDYyNC0+YWRkKDQyMCk7CisgICAgXzQ2MjQtPmFkZCgyMCk7CisgICAgXzQ2
MjItPmFkZCgxODIpOworICAgIF80NjIyLT5hZGQoNDM2KTsKKyAgICBfNDYyMi0+YWRkKDIyOSk7
CisgICAgXzQ2MjItPmFkZCgxMjYpOworICAgIF80NjIyLT5hZGQoMjg3KTsKKyAgICBfNDYyMi0+
YWRkKDM2Nyk7CisgICAgXzQ2MjItPmFkZCgxNzkpOworICAgIF80NjIyLT5hZGQoNDIwKTsKKyAg
ICBfNDYyMi0+YWRkKDQ1KTsKKyAgICBfNDYyMi0+YWRkKDI1MCk7CisgICAgXzQ2MjItPmFkZCgx
MTEpOworICAgIF80NjIyLT5hZGQoMjYpOworICAgIF80NjIyLT5hZGQoNDQwKTsKKyAgICBfNDYy
Mi0+YWRkKDE2OCk7CisgICAgXzQ2MjItPmFkZCg0MjgpOworICAgIF80NjIyLT5hZGQoMzU5KTsK
KyAgICBfNDYyMi0+YWRkKDIpOworICAgIF80NjIyLT5hZGQoNDI0KTsKKyAgICBfNDYyMi0+YWRk
KDIwKTsKKyAgICBfNDYyMi0+YWRkKDk4KTsKKyAgICBfNDYyMi0+YWRkKDM3Mik7CisgICAgXzQ2
MjItPmFkZCg0MzIpOworICAgIF80NjE5LT5hZGQoMTgyKTsKKyAgICBfNDYxOS0+YWRkKDQzNik7
CisgICAgXzQ2MTktPmFkZCgyMjkpOworICAgIF80NjE5LT5hZGQoMTI2KTsKKyAgICBfNDYxOS0+
YWRkKDI4Nyk7CisgICAgXzQ2MTktPmFkZCgzNjcpOworICAgIF80NjE5LT5hZGQoMTc5KTsKKyAg
ICBfNDYxOS0+YWRkKDQyMCk7CisgICAgXzQ2MTktPmFkZCg0NSk7CisgICAgXzQ2MTktPmFkZCgy
NTApOworICAgIF80NjE5LT5hZGQoMTExKTsKKyAgICBfNDYxOS0+YWRkKDI2KTsKKyAgICBfNDYx
OS0+YWRkKDQ0MCk7CisgICAgXzQ2MTktPmFkZCgxNjgpOworICAgIF80NjE5LT5hZGQoNDI4KTsK
KyAgICBfNDYxOS0+YWRkKDM1OSk7CisgICAgXzQ2MTktPmFkZCgyKTsKKyAgICBfNDYxOS0+YWRk
KDQyNCk7CisgICAgXzQ2MTktPmFkZCgyMCk7CisgICAgXzQ2MTktPmFkZCg5OCk7CisgICAgXzQ2
MTktPmFkZCgzNzIpOworICAgIF80NjE5LT5hZGQoNDMyKTsKKyAgICBfNDYyMC0+YWRkKDE4Mik7
CisgICAgXzQ2MjAtPmFkZCg0MzYpOworICAgIF80NjIwLT5hZGQoMjI5KTsKKyAgICBfNDYyMC0+
YWRkKDEyNik7CisgICAgXzQ2MjAtPmFkZCgyODcpOworICAgIF80NjIwLT5hZGQoMzY3KTsKKyAg
ICBfNDYyMC0+YWRkKDQzMik7CisgICAgXzQ2MjAtPmFkZCgxNzkpOworICAgIF80NjIwLT5hZGQo
NDUpOworICAgIF80NjIwLT5hZGQoMjUwKTsKKyAgICBfNDYyMC0+YWRkKDExMSk7CisgICAgXzQ2
MjAtPmFkZCgyNik7CisgICAgXzQ2MjAtPmFkZCg0NDApOworICAgIF80NjIwLT5hZGQoMTY4KTsK
KyAgICBfNDYyMC0+YWRkKDQyOCk7CisgICAgXzQ2MjAtPmFkZCgzNTkpOworICAgIF80NjIwLT5h
ZGQoMik7CisgICAgXzQ2MjAtPmFkZCg0MjApOworICAgIF80NjIwLT5hZGQoMjApOworICAgIF80
NjIwLT5hZGQoNDI0KTsKKyAgICBfNDYyMC0+YWRkKDM3Mik7CisgICAgXzQ2MjAtPmFkZCg5OCk7
CisgICAgXzQ2MjAtPmFkZCg3Mik7CisgICAgXzQ2MjAtPmFkZCg0OTcpOworICAgIF80NjIxLT5h
ZGQoMTgyKTsKKyAgICBfNDYyMS0+YWRkKDQzNik7CisgICAgXzQ2MjEtPmFkZCgyMjkpOworICAg
IF80NjIxLT5hZGQoMTI2KTsKKyAgICBfNDYyMS0+YWRkKDI4Nyk7CisgICAgXzQ2MjEtPmFkZCgz
NjcpOworICAgIF80NjIxLT5hZGQoNDMyKTsKKyAgICBfNDYyMS0+YWRkKDE3OSk7CisgICAgXzQ2
MjEtPmFkZCg0NSk7CisgICAgXzQ2MjEtPmFkZCgyNTApOworICAgIF80NjIxLT5hZGQoMTExKTsK
KyAgICBfNDYyMS0+YWRkKDI2KTsKKyAgICBfNDYyMS0+YWRkKDQ0MCk7CisgICAgXzQ2MjEtPmFk
ZCgxNjgpOworICAgIF80NjIxLT5hZGQoNDI4KTsKKyAgICBfNDYyMS0+YWRkKDM1OSk7CisgICAg
XzQ2MjEtPmFkZCgyKTsKKyAgICBfNDYyMS0+YWRkKDQyMCk7CisgICAgXzQ2MjEtPmFkZCgyMCk7
CisgICAgXzQ2MjEtPmFkZCg0MjQpOworICAgIF80NjIxLT5hZGQoMzcyKTsKKyAgICBfNDYyMS0+
YWRkKDk4KTsKKyAgICBfNDYyMS0+YWRkKDcyKTsKKyAgICBfNDYyMS0+YWRkKDQ5Nyk7CisgICAg
XzQ2MjItPmFkZCgxODIpOworICAgIF80NjIyLT5hZGQoNDM2KTsKKyAgICBfNDYyMi0+YWRkKDIy
OSk7CisgICAgXzQ2MjItPmFkZCgxMjYpOworICAgIF80NjIyLT5hZGQoMjg3KTsKKyAgICBfNDYy
Mi0+YWRkKDM2Nyk7CisgICAgXzQ2MjItPmFkZCgxNzkpOworICAgIF80NjIyLT5hZGQoNDMyKTsK
KyAgICBfNDYyMi0+YWRkKDQ1KTsKKyAgICBfNDYyMi0+YWRkKDI1MCk7CisgICAgXzQ2MjItPmFk
ZCgxMTEpOworICAgIF80NjIyLT5hZGQoMjYpOworICAgIF80NjIyLT5hZGQoNDQwKTsKKyAgICBf
NDYyMi0+YWRkKDE2OCk7CisgICAgXzQ2MjItPmFkZCg0MjgpOworICAgIF80NjIyLT5hZGQoOTgp
OworICAgIF80NjIyLT5hZGQoMzU5KTsKKyAgICBfNDYyMi0+YWRkKDIpOworICAgIF80NjIyLT5h
ZGQoNDIwKTsKKyAgICBfNDYyMi0+YWRkKDIwKTsKKyAgICBfNDYyMi0+YWRkKDcyKTsKKyAgICBf
NDYyMi0+YWRkKDQyNCk7CisgICAgXzQ2MjItPmFkZCgzNzIpOworICAgIF80NjIyLT5hZGQoMTgz
KTsKKyAgICBfNDYxOS0+YWRkKDE4Mik7CisgICAgXzQ2MTktPmFkZCg0MzYpOworICAgIF80NjE5
LT5hZGQoMjI5KTsKKyAgICBfNDYxOS0+YWRkKDEyNik7CisgICAgXzQ2MTktPmFkZCgyODcpOwor
ICAgIF80NjE5LT5hZGQoMzY3KTsKKyAgICBfNDYxOS0+YWRkKDE3OSk7CisgICAgXzQ2MTktPmFk
ZCg0MzIpOworICAgIF80NjE5LT5hZGQoNDUpOworICAgIF80NjE5LT5hZGQoMjUwKTsKKyAgICBf
NDYxOS0+YWRkKDExMSk7CisgICAgXzQ2MTktPmFkZCgyNik7CisgICAgXzQ2MTktPmFkZCg0NDAp
OworICAgIF80NjE5LT5hZGQoMTY4KTsKKyAgICBfNDYxOS0+YWRkKDQyOCk7CisgICAgXzQ2MTkt
PmFkZCg5OCk7CisgICAgXzQ2MTktPmFkZCgzNTkpOworICAgIF80NjE5LT5hZGQoMik7CisgICAg
XzQ2MTktPmFkZCg0MjApOworICAgIF80NjE5LT5hZGQoMjApOworICAgIF80NjE5LT5hZGQoNzIp
OworICAgIF80NjE5LT5hZGQoNDI0KTsKKyAgICBfNDYxOS0+YWRkKDM3Mik7CisgICAgZGVsZXRl
IF80NjE5OworICAgIGRlbGV0ZSBfNDYyMDsKKyAgICBkZWxldGUgXzQ2MjE7CisgICAgZGVsZXRl
IF80NjIyOworICAgIGRlbGV0ZSBfNDYyMzsKKyAgICBkZWxldGUgXzQ2MjQ7CisgICAgZGVsZXRl
IF80NjI1OworICAgIGRlbGV0ZSBfNDYyNjsKKyAgICBkZWxldGUgXzQ2Mjc7CisgICAgZGVsZXRl
IF80NjI4OworICAgIGRlbGV0ZSBfNDYyOTsKKyAgICBkZWxldGUgXzQ2MzA7CisgICAgZGVsZXRl
IF80NjMxOworICAgIGRlbGV0ZSBfNDYzMjsKKyAgICBkZWxldGUgXzQ2MzM7CisgICAgZGVsZXRl
IF80NjM0OworICAgIGF1dG8qIF80NjM1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MzYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYzNyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjM4ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MzkgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY0MCA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjQxID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2
NDIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDY0MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NjQ0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ2NDUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDY0NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NjQ3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NDggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY0OSA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjUwID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NTEgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY1MiA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjUz
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ2NTQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDY1NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NjU2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ2NTcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDY1OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjU5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NjAgPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY2MSA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjYyID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NjMgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY2NCA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
NjY1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ2NjYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDY2NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NjY4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ2NjkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY3MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjcxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NzIgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY3MyA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njc0ID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NzUgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY3
NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80Njc3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ2NzggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDY3OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NjgwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ2ODEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY4MiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjgzID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2ODQgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY4NSA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njg2ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2ODcg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDY4OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80Njg5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ2OTAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDY5MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NjkyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2OTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY5NCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njk1ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2OTYgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY5NyA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njk4ID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2
OTkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDcwMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NzAxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ3MDIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDcwMyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NzA0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MDUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcwNiA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzA3ID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MDggPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcwOSA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzEw
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ3MTEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDcxMiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NzEzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ3MTQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDcxNSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzE2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgXzQ3MTQtPmFkZCgxODApOworICAgIF80NzE0LT5hZGQo
MTkyKTsKKyAgICBfNDcxNC0+YWRkKDIwNCk7CisgICAgXzQ3MTQtPmFkZCgyMTYpOworICAgIF80
NzE0LT5hZGQoMjI4KTsKKyAgICBfNDcxNC0+YWRkKDI0MCk7CisgICAgXzQ3MTQtPmFkZCg5NzQp
OworICAgIF80NzE0LT5hZGQoMTYxMyk7CisgICAgXzQ3MTQtPmFkZCgxNDIpOworICAgIF80NzE0
LT5hZGQoMTQ5KTsKKyAgICBfNDcxNC0+YWRkKDE1Nik7CisgICAgXzQ3MTUtPmFkZCgxODApOwor
ICAgIF80NzE1LT5hZGQoMTkyKTsKKyAgICBfNDcxNS0+YWRkKDIwNCk7CisgICAgXzQ3MTUtPmFk
ZCgyMTYpOworICAgIF80NzE1LT5hZGQoMjI4KTsKKyAgICBfNDcxNS0+YWRkKDI0MCk7CisgICAg
XzQ3MTUtPmFkZCg5NzQpOworICAgIF80NzE1LT5hZGQoMTYxMyk7CisgICAgXzQ3MTUtPmFkZCgx
NDIpOworICAgIF80NzE1LT5hZGQoMTQ5KTsKKyAgICBfNDcxNS0+YWRkKDE1Nik7CisgICAgXzQ3
MTMtPmFkZCgyMDQpOworICAgIF80NzEzLT5hZGQoMjE2KTsKKyAgICBfNDcxMy0+YWRkKDE1Nik7
CisgICAgXzQ3MTMtPmFkZCgyMjgpOworICAgIF80NzEzLT5hZGQoMTQyKTsKKyAgICBfNDcxMy0+
YWRkKDE5Mik7CisgICAgXzQ3MTMtPmFkZCgxNjEzKTsKKyAgICBfNDcxMy0+YWRkKDE4MCk7Cisg
ICAgXzQ3MTMtPmFkZCgxNDkpOworICAgIF80NzEzLT5hZGQoMjQwKTsKKyAgICBfNDcxMy0+YWRk
KDk3NCk7CisgICAgXzQ3MTAtPmFkZCgyMDQpOworICAgIF80NzEwLT5hZGQoMjE2KTsKKyAgICBf
NDcxMC0+YWRkKDE1Nik7CisgICAgXzQ3MTAtPmFkZCgyMjgpOworICAgIF80NzEwLT5hZGQoMTQy
KTsKKyAgICBfNDcxMC0+YWRkKDE5Mik7CisgICAgXzQ3MTAtPmFkZCgxNjEzKTsKKyAgICBfNDcx
MC0+YWRkKDE4MCk7CisgICAgXzQ3MTAtPmFkZCgxNDkpOworICAgIF80NzEwLT5hZGQoMjQwKTsK
KyAgICBfNDcxMC0+YWRkKDk3NCk7CisgICAgXzQ3MTEtPmFkZCgyMDQpOworICAgIF80NzExLT5h
ZGQoMjE2KTsKKyAgICBfNDcxMS0+YWRkKDIyOCk7CisgICAgXzQ3MTEtPmFkZCgyNDApOworICAg
IF80NzExLT5hZGQoMTQyKTsKKyAgICBfNDcxMS0+YWRkKDE5Mik7CisgICAgXzQ3MTEtPmFkZCgx
NjEzKTsKKyAgICBfNDcxMS0+YWRkKDE4MCk7CisgICAgXzQ3MTEtPmFkZCgxNDkpOworICAgIF80
NzExLT5hZGQoMTU2KTsKKyAgICBfNDcxMS0+YWRkKDk3NCk7CisgICAgXzQ3MTEtPmFkZCgxNjcp
OworICAgIF80NzExLT5hZGQoMTEyMSk7CisgICAgXzQ3MTEtPmFkZCgyNTgzKTsKKyAgICBfNDcx
MS0+YWRkKDEwNCk7CisgICAgXzQ3MTEtPmFkZCgxNTIwKTsKKyAgICBfNDcxMS0+YWRkKDI3Nzkp
OworICAgIF80NzEyLT5hZGQoMjA0KTsKKyAgICBfNDcxMi0+YWRkKDIxNik7CisgICAgXzQ3MTIt
PmFkZCgyMjgpOworICAgIF80NzEyLT5hZGQoMjQwKTsKKyAgICBfNDcxMi0+YWRkKDE0Mik7Cisg
ICAgXzQ3MTItPmFkZCgxOTIpOworICAgIF80NzEyLT5hZGQoMTYxMyk7CisgICAgXzQ3MTItPmFk
ZCgxODApOworICAgIF80NzEyLT5hZGQoMTQ5KTsKKyAgICBfNDcxMi0+YWRkKDE1Nik7CisgICAg
XzQ3MTItPmFkZCg5NzQpOworICAgIF80NzEyLT5hZGQoMTY3KTsKKyAgICBfNDcxMi0+YWRkKDEx
MjEpOworICAgIF80NzEyLT5hZGQoMjU4Myk7CisgICAgXzQ3MTItPmFkZCgxMDQpOworICAgIF80
NzEyLT5hZGQoMTUyMCk7CisgICAgXzQ3MTItPmFkZCgyNzc5KTsKKyAgICBfNDcxMy0+YWRkKDIw
NCk7CisgICAgXzQ3MTMtPmFkZCgxMTIxKTsKKyAgICBfNDcxMy0+YWRkKDk3NCk7CisgICAgXzQ3
MTMtPmFkZCgyMjgpOworICAgIF80NzEzLT5hZGQoMjQwKTsKKyAgICBfNDcxMy0+YWRkKDE0Mik7
CisgICAgXzQ3MTMtPmFkZCgxMDQpOworICAgIF80NzEzLT5hZGQoMTkyKTsKKyAgICBfNDcxMy0+
YWRkKDE2MTMpOworICAgIF80NzEzLT5hZGQoMTgwKTsKKyAgICBfNDcxMy0+YWRkKDE2Nyk7Cisg
ICAgXzQ3MTMtPmFkZCgxNTIwKTsKKyAgICBfNDcxMy0+YWRkKDIxNik7CisgICAgXzQ3MTMtPmFk
ZCgyNTgzKTsKKyAgICBfNDcxMy0+YWRkKDE0OSk7CisgICAgXzQ3MTMtPmFkZCgxNTYpOworICAg
IF80NzEzLT5hZGQoMjA2Nyk7CisgICAgXzQ3MTAtPmFkZCgyMDQpOworICAgIF80NzEwLT5hZGQo
MTEyMSk7CisgICAgXzQ3MTAtPmFkZCg5NzQpOworICAgIF80NzEwLT5hZGQoMjI4KTsKKyAgICBf
NDcxMC0+YWRkKDI0MCk7CisgICAgXzQ3MTAtPmFkZCgxNDIpOworICAgIF80NzEwLT5hZGQoMTA0
KTsKKyAgICBfNDcxMC0+YWRkKDE5Mik7CisgICAgXzQ3MTAtPmFkZCgxNjEzKTsKKyAgICBfNDcx
MC0+YWRkKDE4MCk7CisgICAgXzQ3MTAtPmFkZCgxNjcpOworICAgIF80NzEwLT5hZGQoMTUyMCk7
CisgICAgXzQ3MTAtPmFkZCgyMTYpOworICAgIF80NzEwLT5hZGQoMjU4Myk7CisgICAgXzQ3MTAt
PmFkZCgxNDkpOworICAgIF80NzEwLT5hZGQoMTU2KTsKKyAgICBfNDcxMC0+YWRkKDE1MTIpOwor
ICAgIF80NzA5LT5hZGQoMjA0KTsKKyAgICBfNDcwOS0+YWRkKDExMjEpOworICAgIF80NzA5LT5h
ZGQoMjI4KTsKKyAgICBfNDcwOS0+YWRkKDE0Mik7CisgICAgXzQ3MDktPmFkZCgxMDQpOworICAg
IF80NzA5LT5hZGQoMTkyKTsKKyAgICBfNDcwOS0+YWRkKDE2MTMpOworICAgIF80NzA5LT5hZGQo
MTgwKTsKKyAgICBfNDcwOS0+YWRkKDE1MTIpOworICAgIF80NzA5LT5hZGQoMTY3KTsKKyAgICBf
NDcwOS0+YWRkKDE1MjApOworICAgIF80NzA5LT5hZGQoMjE2KTsKKyAgICBfNDcwOS0+YWRkKDE1
Nik7CisgICAgXzQ3MDktPmFkZCgyNTgzKTsKKyAgICBfNDcwOS0+YWRkKDE0OSk7CisgICAgXzQ3
MDktPmFkZCgyNDApOworICAgIF80NzA5LT5hZGQoOTc0KTsKKyAgICBfNDcwOS0+YWRkKDE3MDgp
OworICAgIF80NzA4LT5hZGQoMjA0KTsKKyAgICBfNDcwOC0+YWRkKDExMjEpOworICAgIF80NzA4
LT5hZGQoMjI4KTsKKyAgICBfNDcwOC0+YWRkKDE0Mik7CisgICAgXzQ3MDgtPmFkZCgxMDQpOwor
ICAgIF80NzA4LT5hZGQoMTkyKTsKKyAgICBfNDcwOC0+YWRkKDE2MTMpOworICAgIF80NzA4LT5h
ZGQoMTgwKTsKKyAgICBfNDcwOC0+YWRkKDE1MTIpOworICAgIF80NzA4LT5hZGQoMTY3KTsKKyAg
ICBfNDcwOC0+YWRkKDE1MjApOworICAgIF80NzA4LT5hZGQoMjE2KTsKKyAgICBfNDcwOC0+YWRk
KDE1Nik7CisgICAgXzQ3MDgtPmFkZCgyNTgzKTsKKyAgICBfNDcwOC0+YWRkKDE0OSk7CisgICAg
XzQ3MDgtPmFkZCgyNDApOworICAgIF80NzA4LT5hZGQoOTc0KTsKKyAgICBfNDcwOC0+YWRkKDE3
MDgpOworICAgIF80NzA0LT5hZGQoMjA0KTsKKyAgICBfNDcwNC0+YWRkKDExMjEpOworICAgIF80
NzA0LT5hZGQoMjI4KTsKKyAgICBfNDcwNC0+YWRkKDE0Mik7CisgICAgXzQ3MDQtPmFkZCgxMDQp
OworICAgIF80NzA0LT5hZGQoMTkyKTsKKyAgICBfNDcwNC0+YWRkKDE2MTMpOworICAgIF80NzA0
LT5hZGQoMTgwKTsKKyAgICBfNDcwNC0+YWRkKDE1MTIpOworICAgIF80NzA0LT5hZGQoMTY3KTsK
KyAgICBfNDcwNC0+YWRkKDE1MjApOworICAgIF80NzA0LT5hZGQoMjE2KTsKKyAgICBfNDcwNC0+
YWRkKDE1Nik7CisgICAgXzQ3MDQtPmFkZCgyNTgzKTsKKyAgICBfNDcwNC0+YWRkKDE3MDgpOwor
ICAgIF80NzA0LT5hZGQoMTQ5KTsKKyAgICBfNDcwNC0+YWRkKDI0MCk7CisgICAgXzQ3MDQtPmFk
ZCg5NzQpOworICAgIF80NzA3LT5hZGQoMjA0KTsKKyAgICBfNDcwNy0+YWRkKDExMjEpOworICAg
IF80NzA3LT5hZGQoMjI4KTsKKyAgICBfNDcwNy0+YWRkKDE0Mik7CisgICAgXzQ3MDctPmFkZCgx
MDQpOworICAgIF80NzA3LT5hZGQoMTkyKTsKKyAgICBfNDcwNy0+YWRkKDE2MTMpOworICAgIF80
NzA3LT5hZGQoMTgwKTsKKyAgICBfNDcwNy0+YWRkKDE1MTIpOworICAgIF80NzA3LT5hZGQoMTY3
KTsKKyAgICBfNDcwNy0+YWRkKDE1MjApOworICAgIF80NzA3LT5hZGQoMjE2KTsKKyAgICBfNDcw
Ny0+YWRkKDE1Nik7CisgICAgXzQ3MDctPmFkZCgyNTgzKTsKKyAgICBfNDcwNy0+YWRkKDE3MDgp
OworICAgIF80NzA3LT5hZGQoMTQ5KTsKKyAgICBfNDcwNy0+YWRkKDI0MCk7CisgICAgXzQ3MDct
PmFkZCg5NzQpOworICAgIF80NzA2LT5hZGQoMjA0KTsKKyAgICBfNDcwNi0+YWRkKDExMjEpOwor
ICAgIF80NzA2LT5hZGQoMjI4KTsKKyAgICBfNDcwNi0+YWRkKDI0MCk7CisgICAgXzQ3MDYtPmFk
ZCgxNDIpOworICAgIF80NzA2LT5hZGQoMTA0KTsKKyAgICBfNDcwNi0+YWRkKDE5Mik7CisgICAg
XzQ3MDYtPmFkZCgxNjEzKTsKKyAgICBfNDcwNi0+YWRkKDE4MCk7CisgICAgXzQ3MDYtPmFkZCgx
NTEyKTsKKyAgICBfNDcwNi0+YWRkKDE2Nyk7CisgICAgXzQ3MDYtPmFkZCgxNTIwKTsKKyAgICBf
NDcwNi0+YWRkKDIxNik7CisgICAgXzQ3MDYtPmFkZCgyNTgzKTsKKyAgICBfNDcwNi0+YWRkKDE3
MDgpOworICAgIF80NzA2LT5hZGQoMTQ5KTsKKyAgICBfNDcwNi0+YWRkKDE1Nik7CisgICAgXzQ3
MDYtPmFkZCg5NzQpOworICAgIF80NzA2LT5hZGQoMjQzKTsKKyAgICBfNDcwNi0+YWRkKDM1Nik7
CisgICAgXzQ3MDYtPmFkZCgyNDgpOworICAgIF80NzA2LT5hZGQoMzA5KTsKKyAgICBfNDcwNi0+
YWRkKDM0NSk7CisgICAgXzQ3MDYtPmFkZCgzMzgpOworICAgIF80NzA2LT5hZGQoMjc3OCk7Cisg
ICAgXzQ3MDUtPmFkZCgyMDQpOworICAgIF80NzA1LT5hZGQoMTEyMSk7CisgICAgXzQ3MDUtPmFk
ZCgyMjgpOworICAgIF80NzA1LT5hZGQoMjQwKTsKKyAgICBfNDcwNS0+YWRkKDE0Mik7CisgICAg
XzQ3MDUtPmFkZCgxMDQpOworICAgIF80NzA1LT5hZGQoMTkyKTsKKyAgICBfNDcwNS0+YWRkKDE2
MTMpOworICAgIF80NzA1LT5hZGQoMTgwKTsKKyAgICBfNDcwNS0+YWRkKDE1MTIpOworICAgIF80
NzA1LT5hZGQoMTY3KTsKKyAgICBfNDcwNS0+YWRkKDE1MjApOworICAgIF80NzA1LT5hZGQoMjE2
KTsKKyAgICBfNDcwNS0+YWRkKDI1ODMpOworICAgIF80NzA1LT5hZGQoMTcwOCk7CisgICAgXzQ3
MDUtPmFkZCgxNDkpOworICAgIF80NzA1LT5hZGQoMTU2KTsKKyAgICBfNDcwNS0+YWRkKDk3NCk7
CisgICAgXzQ3MDUtPmFkZCgyNDMpOworICAgIF80NzA1LT5hZGQoMzU2KTsKKyAgICBfNDcwNS0+
YWRkKDI0OCk7CisgICAgXzQ3MDUtPmFkZCgzMDkpOworICAgIF80NzA1LT5hZGQoMzQ1KTsKKyAg
ICBfNDcwNS0+YWRkKDMzOCk7CisgICAgXzQ3MDUtPmFkZCgyNzc4KTsKKyAgICBfNDcwNC0+YWRk
KDIwNCk7CisgICAgXzQ3MDQtPmFkZCgxMTIxKTsKKyAgICBfNDcwNC0+YWRkKDIyOCk7CisgICAg
XzQ3MDQtPmFkZCgxNDIpOworICAgIF80NzA0LT5hZGQoMTA0KTsKKyAgICBfNDcwNC0+YWRkKDMw
OSk7CisgICAgXzQ3MDQtPmFkZCgxOTIpOworICAgIF80NzA0LT5hZGQoMTYxMyk7CisgICAgXzQ3
MDQtPmFkZCgxODApOworICAgIF80NzA0LT5hZGQoMTUxMik7CisgICAgXzQ3MDQtPmFkZCgzNDUp
OworICAgIF80NzA0LT5hZGQoOTc0KTsKKyAgICBfNDcwNC0+YWRkKDE2Nyk7CisgICAgXzQ3MDQt
PmFkZCgzMzgpOworICAgIF80NzA0LT5hZGQoMTUyMCk7CisgICAgXzQ3MDQtPmFkZCgyMTYpOwor
ICAgIF80NzA0LT5hZGQoMTU2KTsKKyAgICBfNDcwNC0+YWRkKDI0OCk7CisgICAgXzQ3MDQtPmFk
ZCgyNDMpOworICAgIF80NzA0LT5hZGQoMjU4Myk7CisgICAgXzQ3MDQtPmFkZCgxNzA4KTsKKyAg
ICBfNDcwNC0+YWRkKDM1Nik7CisgICAgXzQ3MDQtPmFkZCgxNDkpOworICAgIF80NzA0LT5hZGQo
MjQwKTsKKyAgICBfNDcwNC0+YWRkKDE4ODQpOworICAgIF80NzA3LT5hZGQoMjA0KTsKKyAgICBf
NDcwNy0+YWRkKDExMjEpOworICAgIF80NzA3LT5hZGQoMjI4KTsKKyAgICBfNDcwNy0+YWRkKDE0
Mik7CisgICAgXzQ3MDctPmFkZCgxMDQpOworICAgIF80NzA3LT5hZGQoMzA5KTsKKyAgICBfNDcw
Ny0+YWRkKDE5Mik7CisgICAgXzQ3MDctPmFkZCgxNjEzKTsKKyAgICBfNDcwNy0+YWRkKDE4MCk7
CisgICAgXzQ3MDctPmFkZCgxNTEyKTsKKyAgICBfNDcwNy0+YWRkKDM0NSk7CisgICAgXzQ3MDct
PmFkZCg5NzQpOworICAgIF80NzA3LT5hZGQoMTY3KTsKKyAgICBfNDcwNy0+YWRkKDMzOCk7Cisg
ICAgXzQ3MDctPmFkZCgxNTIwKTsKKyAgICBfNDcwNy0+YWRkKDIxNik7CisgICAgXzQ3MDctPmFk
ZCgxNTYpOworICAgIF80NzA3LT5hZGQoMjQ4KTsKKyAgICBfNDcwNy0+YWRkKDI0Myk7CisgICAg
XzQ3MDctPmFkZCgyNTgzKTsKKyAgICBfNDcwNy0+YWRkKDE3MDgpOworICAgIF80NzA3LT5hZGQo
MzU2KTsKKyAgICBfNDcwNy0+YWRkKDE0OSk7CisgICAgXzQ3MDctPmFkZCgyNDApOworICAgIF80
NzA3LT5hZGQoMTk3Mik7CisgICAgXzQ3MDMtPmFkZCgyMDQpOworICAgIF80NzAzLT5hZGQoMTEy
MSk7CisgICAgXzQ3MDMtPmFkZCgyNDMpOworICAgIF80NzAzLT5hZGQoMjI4KTsKKyAgICBfNDcw
My0+YWRkKDI0MCk7CisgICAgXzQ3MDMtPmFkZCgxNDIpOworICAgIF80NzAzLT5hZGQoMTA0KTsK
KyAgICBfNDcwMy0+YWRkKDMwOSk7CisgICAgXzQ3MDMtPmFkZCgxOTIpOworICAgIF80NzAzLT5h
ZGQoMTYxMyk7CisgICAgXzQ3MDMtPmFkZCgxODApOworICAgIF80NzAzLT5hZGQoOTc0KTsKKyAg
ICBfNDcwMy0+YWRkKDE1MTIpOworICAgIF80NzAzLT5hZGQoMzQ1KTsKKyAgICBfNDcwMy0+YWRk
KDE2Nyk7CisgICAgXzQ3MDMtPmFkZCgzMzgpOworICAgIF80NzAzLT5hZGQoMTUyMCk7CisgICAg
XzQ3MDMtPmFkZCgyMTYpOworICAgIF80NzAzLT5hZGQoMjQ4KTsKKyAgICBfNDcwMy0+YWRkKDI1
ODMpOworICAgIF80NzAzLT5hZGQoMTcwOCk7CisgICAgXzQ3MDMtPmFkZCgzNTYpOworICAgIF80
NzAzLT5hZGQoMTQ5KTsKKyAgICBfNDcwMy0+YWRkKDE1Nik7CisgICAgXzQ3MDItPmFkZCgyMDQp
OworICAgIF80NzAyLT5hZGQoMTEyMSk7CisgICAgXzQ3MDItPmFkZCgyNDMpOworICAgIF80NzAy
LT5hZGQoMjI4KTsKKyAgICBfNDcwMi0+YWRkKDI0MCk7CisgICAgXzQ3MDItPmFkZCgxNDIpOwor
ICAgIF80NzAyLT5hZGQoMTA0KTsKKyAgICBfNDcwMi0+YWRkKDMwOSk7CisgICAgXzQ3MDItPmFk
ZCgxOTIpOworICAgIF80NzAyLT5hZGQoMTYxMyk7CisgICAgXzQ3MDItPmFkZCgxODApOworICAg
IF80NzAyLT5hZGQoOTc0KTsKKyAgICBfNDcwMi0+YWRkKDE1MTIpOworICAgIF80NzAyLT5hZGQo
MzQ1KTsKKyAgICBfNDcwMi0+YWRkKDE2Nyk7CisgICAgXzQ3MDItPmFkZCgzMzgpOworICAgIF80
NzAyLT5hZGQoMTUyMCk7CisgICAgXzQ3MDItPmFkZCgyMTYpOworICAgIF80NzAyLT5hZGQoMjQ4
KTsKKyAgICBfNDcwMi0+YWRkKDI1ODMpOworICAgIF80NzAyLT5hZGQoMTcwOCk7CisgICAgXzQ3
MDItPmFkZCgzNTYpOworICAgIF80NzAyLT5hZGQoMTQ5KTsKKyAgICBfNDcwMi0+YWRkKDE1Nik7
CisgICAgXzQ2OTItPmFkZCgyMDQpOworICAgIF80NjkyLT5hZGQoMTEyMSk7CisgICAgXzQ2OTIt
PmFkZCgyMjgpOworICAgIF80NjkyLT5hZGQoMTQyKTsKKyAgICBfNDY5Mi0+YWRkKDEwNCk7Cisg
ICAgXzQ2OTItPmFkZCgzMDkpOworICAgIF80NjkyLT5hZGQoMTkyKTsKKyAgICBfNDY5Mi0+YWRk
KDE2MTMpOworICAgIF80NjkyLT5hZGQoMTgwKTsKKyAgICBfNDY5Mi0+YWRkKDE1MTIpOworICAg
IF80NjkyLT5hZGQoMzQ1KTsKKyAgICBfNDY5Mi0+YWRkKDE2Nyk7CisgICAgXzQ2OTItPmFkZCgz
MzgpOworICAgIF80NjkyLT5hZGQoMTUyMCk7CisgICAgXzQ2OTItPmFkZCgyMTYpOworICAgIF80
NjkyLT5hZGQoMTU2KTsKKyAgICBfNDY5Mi0+YWRkKDI0Myk7CisgICAgXzQ2OTItPmFkZCgyNTgz
KTsKKyAgICBfNDY5Mi0+YWRkKDI0OCk7CisgICAgXzQ2OTItPmFkZCgzNTYpOworICAgIF80Njky
LT5hZGQoMTQ5KTsKKyAgICBfNDY5Mi0+YWRkKDI0MCk7CisgICAgXzQ2OTItPmFkZCgxNzA4KTsK
KyAgICBfNDY5Mi0+YWRkKDk3NCk7CisgICAgXzQ3MDEtPmFkZCgyMDQpOworICAgIF80NzAxLT5h
ZGQoMTEyMSk7CisgICAgXzQ3MDEtPmFkZCgyMjgpOworICAgIF80NzAxLT5hZGQoMTQyKTsKKyAg
ICBfNDcwMS0+YWRkKDEwNCk7CisgICAgXzQ3MDEtPmFkZCgzMDkpOworICAgIF80NzAxLT5hZGQo
MTkyKTsKKyAgICBfNDcwMS0+YWRkKDE2MTMpOworICAgIF80NzAxLT5hZGQoMTgwKTsKKyAgICBf
NDcwMS0+YWRkKDE1MTIpOworICAgIF80NzAxLT5hZGQoMzQ1KTsKKyAgICBfNDcwMS0+YWRkKDE2
Nyk7CisgICAgXzQ3MDEtPmFkZCgzMzgpOworICAgIF80NzAxLT5hZGQoMTUyMCk7CisgICAgXzQ3
MDEtPmFkZCgyMTYpOworICAgIF80NzAxLT5hZGQoMTU2KTsKKyAgICBfNDcwMS0+YWRkKDI0Myk7
CisgICAgXzQ3MDEtPmFkZCgyNTgzKTsKKyAgICBfNDcwMS0+YWRkKDI0OCk7CisgICAgXzQ3MDEt
PmFkZCgzNTYpOworICAgIF80NzAxLT5hZGQoMTQ5KTsKKyAgICBfNDcwMS0+YWRkKDI0MCk7Cisg
ICAgXzQ3MDEtPmFkZCgxNzA4KTsKKyAgICBfNDcwMS0+YWRkKDk3NCk7CisgICAgXzQ3MDAtPmFk
ZCgyMDQpOworICAgIF80NzAwLT5hZGQoMTEyMSk7CisgICAgXzQ3MDAtPmFkZCgyMjgpOworICAg
IF80NzAwLT5hZGQoMjQwKTsKKyAgICBfNDcwMC0+YWRkKDE0Mik7CisgICAgXzQ3MDAtPmFkZCgx
MDQpOworICAgIF80NzAwLT5hZGQoMzA5KTsKKyAgICBfNDcwMC0+YWRkKDE5Mik7CisgICAgXzQ3
MDAtPmFkZCgxNjEzKTsKKyAgICBfNDcwMC0+YWRkKDE4MCk7CisgICAgXzQ3MDAtPmFkZCgxNTEy
KTsKKyAgICBfNDcwMC0+YWRkKDM0NSk7CisgICAgXzQ3MDAtPmFkZCgxNjcpOworICAgIF80NzAw
LT5hZGQoMzM4KTsKKyAgICBfNDcwMC0+YWRkKDE1MjApOworICAgIF80NzAwLT5hZGQoMjE2KTsK
KyAgICBfNDcwMC0+YWRkKDI0Myk7CisgICAgXzQ3MDAtPmFkZCgyNTgzKTsKKyAgICBfNDcwMC0+
YWRkKDI0OCk7CisgICAgXzQ3MDAtPmFkZCgzNTYpOworICAgIF80NzAwLT5hZGQoMTQ5KTsKKyAg
ICBfNDcwMC0+YWRkKDE1Nik7CisgICAgXzQ3MDAtPmFkZCgxNzA4KTsKKyAgICBfNDcwMC0+YWRk
KDk3NCk7CisgICAgXzQ3MDAtPmFkZCgyMzgwKTsKKyAgICBfNDcwMC0+YWRkKDE3NjUpOworICAg
IF80NzAwLT5hZGQoMik7CisgICAgXzQ2OTktPmFkZCgyMDQpOworICAgIF80Njk5LT5hZGQoMTEy
MSk7CisgICAgXzQ2OTktPmFkZCgyMjgpOworICAgIF80Njk5LT5hZGQoMjQwKTsKKyAgICBfNDY5
OS0+YWRkKDE0Mik7CisgICAgXzQ2OTktPmFkZCgxMDQpOworICAgIF80Njk5LT5hZGQoMzA5KTsK
KyAgICBfNDY5OS0+YWRkKDE5Mik7CisgICAgXzQ2OTktPmFkZCgxNjEzKTsKKyAgICBfNDY5OS0+
YWRkKDE4MCk7CisgICAgXzQ2OTktPmFkZCgxNTEyKTsKKyAgICBfNDY5OS0+YWRkKDM0NSk7Cisg
ICAgXzQ2OTktPmFkZCgxNjcpOworICAgIF80Njk5LT5hZGQoMzM4KTsKKyAgICBfNDY5OS0+YWRk
KDE1MjApOworICAgIF80Njk5LT5hZGQoMjE2KTsKKyAgICBfNDY5OS0+YWRkKDI0Myk7CisgICAg
XzQ2OTktPmFkZCgyNTgzKTsKKyAgICBfNDY5OS0+YWRkKDI0OCk7CisgICAgXzQ2OTktPmFkZCgz
NTYpOworICAgIF80Njk5LT5hZGQoMTQ5KTsKKyAgICBfNDY5OS0+YWRkKDE1Nik7CisgICAgXzQ2
OTktPmFkZCgxNzA4KTsKKyAgICBfNDY5OS0+YWRkKDk3NCk7CisgICAgXzQ2OTktPmFkZCgyMzgw
KTsKKyAgICBfNDY5OS0+YWRkKDE3NjUpOworICAgIF80Njk5LT5hZGQoMik7CisgICAgXzQ2OTUt
PmFkZCgyMDQpOworICAgIF80Njk1LT5hZGQoMTEyMSk7CisgICAgXzQ2OTUtPmFkZCgyMjgpOwor
ICAgIF80Njk1LT5hZGQoMTQyKTsKKyAgICBfNDY5NS0+YWRkKDEwNCk7CisgICAgXzQ2OTUtPmFk
ZCgzMDkpOworICAgIF80Njk1LT5hZGQoMTkyKTsKKyAgICBfNDY5NS0+YWRkKDE2MTMpOworICAg
IF80Njk1LT5hZGQoMTgwKTsKKyAgICBfNDY5NS0+YWRkKDE1MTIpOworICAgIF80Njk1LT5hZGQo
MzQ1KTsKKyAgICBfNDY5NS0+YWRkKDE2Nyk7CisgICAgXzQ2OTUtPmFkZCgzMzgpOworICAgIF80
Njk1LT5hZGQoMTUyMCk7CisgICAgXzQ2OTUtPmFkZCgyMTYpOworICAgIF80Njk1LT5hZGQoMTU2
KTsKKyAgICBfNDY5NS0+YWRkKDIpOworICAgIF80Njk1LT5hZGQoMjQzKTsKKyAgICBfNDY5NS0+
YWRkKDIzODApOworICAgIF80Njk1LT5hZGQoMjU4Myk7CisgICAgXzQ2OTUtPmFkZCgyNDgpOwor
ICAgIF80Njk1LT5hZGQoMzU2KTsKKyAgICBfNDY5NS0+YWRkKDE0OSk7CisgICAgXzQ2OTUtPmFk
ZCgyNDApOworICAgIF80Njk1LT5hZGQoMTcwOCk7CisgICAgXzQ2OTUtPmFkZCgxNzY1KTsKKyAg
ICBfNDY5NS0+YWRkKDk3NCk7CisgICAgXzQ2OTgtPmFkZCgyMDQpOworICAgIF80Njk4LT5hZGQo
MTEyMSk7CisgICAgXzQ2OTgtPmFkZCgyMjgpOworICAgIF80Njk4LT5hZGQoMTQyKTsKKyAgICBf
NDY5OC0+YWRkKDEwNCk7CisgICAgXzQ2OTgtPmFkZCgzMDkpOworICAgIF80Njk4LT5hZGQoMTky
KTsKKyAgICBfNDY5OC0+YWRkKDE2MTMpOworICAgIF80Njk4LT5hZGQoMTgwKTsKKyAgICBfNDY5
OC0+YWRkKDE1MTIpOworICAgIF80Njk4LT5hZGQoMzQ1KTsKKyAgICBfNDY5OC0+YWRkKDE2Nyk7
CisgICAgXzQ2OTgtPmFkZCgzMzgpOworICAgIF80Njk4LT5hZGQoMTUyMCk7CisgICAgXzQ2OTgt
PmFkZCgyMTYpOworICAgIF80Njk4LT5hZGQoMTU2KTsKKyAgICBfNDY5OC0+YWRkKDIpOworICAg
IF80Njk4LT5hZGQoMjQzKTsKKyAgICBfNDY5OC0+YWRkKDIzODApOworICAgIF80Njk4LT5hZGQo
MjU4Myk7CisgICAgXzQ2OTgtPmFkZCgyNDgpOworICAgIF80Njk4LT5hZGQoMzU2KTsKKyAgICBf
NDY5OC0+YWRkKDE0OSk7CisgICAgXzQ2OTgtPmFkZCgyNDApOworICAgIF80Njk4LT5hZGQoMTcw
OCk7CisgICAgXzQ2OTgtPmFkZCgxNzY1KTsKKyAgICBfNDY5OC0+YWRkKDk3NCk7CisgICAgXzQ2
OTctPmFkZCgyMDQpOworICAgIF80Njk3LT5hZGQoMTEyMSk7CisgICAgXzQ2OTctPmFkZCgyNTgz
KTsKKyAgICBfNDY5Ny0+YWRkKDIyOCk7CisgICAgXzQ2OTctPmFkZCgyNDApOworICAgIF80Njk3
LT5hZGQoMTQyKTsKKyAgICBfNDY5Ny0+YWRkKDEwNCk7CisgICAgXzQ2OTctPmFkZCgzMDkpOwor
ICAgIF80Njk3LT5hZGQoMTkyKTsKKyAgICBfNDY5Ny0+YWRkKDE2MTMpOworICAgIF80Njk3LT5h
ZGQoMTgwKTsKKyAgICBfNDY5Ny0+YWRkKDE1MTIpOworICAgIF80Njk3LT5hZGQoMzQ1KTsKKyAg
ICBfNDY5Ny0+YWRkKDE2Nyk7CisgICAgXzQ2OTctPmFkZCgzMzgpOworICAgIF80Njk3LT5hZGQo
MTUyMCk7CisgICAgXzQ2OTctPmFkZCgyMTYpOworICAgIF80Njk3LT5hZGQoMjQzKTsKKyAgICBf
NDY5Ny0+YWRkKDIzODApOworICAgIF80Njk3LT5hZGQoMik7CisgICAgXzQ2OTctPmFkZCgyNDgp
OworICAgIF80Njk3LT5hZGQoMzU2KTsKKyAgICBfNDY5Ny0+YWRkKDE0OSk7CisgICAgXzQ2OTct
PmFkZCgxNTYpOworICAgIF80Njk3LT5hZGQoMTcwOCk7CisgICAgXzQ2OTctPmFkZCgxNzY1KTsK
KyAgICBfNDY5Ny0+YWRkKDk3NCk7CisgICAgXzQ2OTctPmFkZCgxNTE2KTsKKyAgICBfNDY5Ny0+
YWRkKDE3OSk7CisgICAgXzQ2OTctPmFkZCgxNzIzKTsKKyAgICBfNDY5Ny0+YWRkKDI3NzcpOwor
ICAgIF80Njk2LT5hZGQoMjA0KTsKKyAgICBfNDY5Ni0+YWRkKDExMjEpOworICAgIF80Njk2LT5h
ZGQoMjU4Myk7CisgICAgXzQ2OTYtPmFkZCgyMjgpOworICAgIF80Njk2LT5hZGQoMjQwKTsKKyAg
ICBfNDY5Ni0+YWRkKDE0Mik7CisgICAgXzQ2OTYtPmFkZCgxMDQpOworICAgIF80Njk2LT5hZGQo
MzA5KTsKKyAgICBfNDY5Ni0+YWRkKDE5Mik7CisgICAgXzQ2OTYtPmFkZCgxNjEzKTsKKyAgICBf
NDY5Ni0+YWRkKDE4MCk7CisgICAgXzQ2OTYtPmFkZCgxNTEyKTsKKyAgICBfNDY5Ni0+YWRkKDM0
NSk7CisgICAgXzQ2OTYtPmFkZCgxNjcpOworICAgIF80Njk2LT5hZGQoMzM4KTsKKyAgICBfNDY5
Ni0+YWRkKDE1MjApOworICAgIF80Njk2LT5hZGQoMjE2KTsKKyAgICBfNDY5Ni0+YWRkKDI0Myk7
CisgICAgXzQ2OTYtPmFkZCgyMzgwKTsKKyAgICBfNDY5Ni0+YWRkKDIpOworICAgIF80Njk2LT5h
ZGQoMjQ4KTsKKyAgICBfNDY5Ni0+YWRkKDM1Nik7CisgICAgXzQ2OTYtPmFkZCgxNDkpOworICAg
IF80Njk2LT5hZGQoMTU2KTsKKyAgICBfNDY5Ni0+YWRkKDE3MDgpOworICAgIF80Njk2LT5hZGQo
MTc2NSk7CisgICAgXzQ2OTYtPmFkZCg5NzQpOworICAgIF80Njk2LT5hZGQoMTUxNik7CisgICAg
XzQ2OTYtPmFkZCgxNzkpOworICAgIF80Njk2LT5hZGQoMTcyMyk7CisgICAgXzQ2OTYtPmFkZCgy
Nzc3KTsKKyAgICBfNDY5NS0+YWRkKDIwNCk7CisgICAgXzQ2OTUtPmFkZCgxMTIxKTsKKyAgICBf
NDY5NS0+YWRkKDIyOCk7CisgICAgXzQ2OTUtPmFkZCgxNDIpOworICAgIF80Njk1LT5hZGQoMTA0
KTsKKyAgICBfNDY5NS0+YWRkKDMwOSk7CisgICAgXzQ2OTUtPmFkZCgxOTIpOworICAgIF80Njk1
LT5hZGQoMTYxMyk7CisgICAgXzQ2OTUtPmFkZCgxNTE2KTsKKyAgICBfNDY5NS0+YWRkKDE4MCk7
CisgICAgXzQ2OTUtPmFkZCgxNzkpOworICAgIF80Njk1LT5hZGQoMTUxMik7CisgICAgXzQ2OTUt
PmFkZCgzNDUpOworICAgIF80Njk1LT5hZGQoMTY3KTsKKyAgICBfNDY5NS0+YWRkKDMzOCk7Cisg
ICAgXzQ2OTUtPmFkZCgxNTIwKTsKKyAgICBfNDY5NS0+YWRkKDIxNik7CisgICAgXzQ2OTUtPmFk
ZCgxNTYpOworICAgIF80Njk1LT5hZGQoMTcyMyk7CisgICAgXzQ2OTUtPmFkZCgyKTsKKyAgICBf
NDY5NS0+YWRkKDI0Myk7CisgICAgXzQ2OTUtPmFkZCgyMzgwKTsKKyAgICBfNDY5NS0+YWRkKDI1
ODMpOworICAgIF80Njk1LT5hZGQoMjQ4KTsKKyAgICBfNDY5NS0+YWRkKDM1Nik7CisgICAgXzQ2
OTUtPmFkZCg5NzQpOworICAgIF80Njk1LT5hZGQoMTQ5KTsKKyAgICBfNDY5NS0+YWRkKDI0MCk7
CisgICAgXzQ2OTUtPmFkZCgxNzA4KTsKKyAgICBfNDY5NS0+YWRkKDE3NjUpOworICAgIF80Njk4
LT5hZGQoMjA0KTsKKyAgICBfNDY5OC0+YWRkKDExMjEpOworICAgIF80Njk4LT5hZGQoMjI4KTsK
KyAgICBfNDY5OC0+YWRkKDE0Mik7CisgICAgXzQ2OTgtPmFkZCgxMDQpOworICAgIF80Njk4LT5h
ZGQoMzA5KTsKKyAgICBfNDY5OC0+YWRkKDE5Mik7CisgICAgXzQ2OTgtPmFkZCgxNjEzKTsKKyAg
ICBfNDY5OC0+YWRkKDE1MTYpOworICAgIF80Njk4LT5hZGQoMTgwKTsKKyAgICBfNDY5OC0+YWRk
KDE3OSk7CisgICAgXzQ2OTgtPmFkZCgxNTEyKTsKKyAgICBfNDY5OC0+YWRkKDM0NSk7CisgICAg
XzQ2OTgtPmFkZCgxNjcpOworICAgIF80Njk4LT5hZGQoMzM4KTsKKyAgICBfNDY5OC0+YWRkKDE1
MjApOworICAgIF80Njk4LT5hZGQoMjE2KTsKKyAgICBfNDY5OC0+YWRkKDE1Nik7CisgICAgXzQ2
OTgtPmFkZCgxNzIzKTsKKyAgICBfNDY5OC0+YWRkKDIpOworICAgIF80Njk4LT5hZGQoMjQzKTsK
KyAgICBfNDY5OC0+YWRkKDIzODApOworICAgIF80Njk4LT5hZGQoMjU4Myk7CisgICAgXzQ2OTgt
PmFkZCgyNDgpOworICAgIF80Njk4LT5hZGQoMzU2KTsKKyAgICBfNDY5OC0+YWRkKDk3NCk7Cisg
ICAgXzQ2OTgtPmFkZCgxNDkpOworICAgIF80Njk4LT5hZGQoMjQwKTsKKyAgICBfNDY5OC0+YWRk
KDE3MDgpOworICAgIF80Njk4LT5hZGQoMTc2NSk7CisgICAgXzQ2OTgtPmFkZCgxODM3KTsKKyAg
ICBfNDY5NC0+YWRkKDIwNCk7CisgICAgXzQ2OTQtPmFkZCgxMTIxKTsKKyAgICBfNDY5NC0+YWRk
KDI1ODMpOworICAgIF80Njk0LT5hZGQoMjI4KTsKKyAgICBfNDY5NC0+YWRkKDI0MCk7CisgICAg
XzQ2OTQtPmFkZCgxNDIpOworICAgIF80Njk0LT5hZGQoMTA0KTsKKyAgICBfNDY5NC0+YWRkKDMw
OSk7CisgICAgXzQ2OTQtPmFkZCgxOTIpOworICAgIF80Njk0LT5hZGQoMTYxMyk7CisgICAgXzQ2
OTQtPmFkZCgxNTE2KTsKKyAgICBfNDY5NC0+YWRkKDE4MCk7CisgICAgXzQ2OTQtPmFkZCgxNzkp
OworICAgIF80Njk0LT5hZGQoMTUxMik7CisgICAgXzQ2OTQtPmFkZCgzNDUpOworICAgIF80Njk0
LT5hZGQoMTY3KTsKKyAgICBfNDY5NC0+YWRkKDMzOCk7CisgICAgXzQ2OTQtPmFkZCgxNTIwKTsK
KyAgICBfNDY5NC0+YWRkKDIxNik7CisgICAgXzQ2OTQtPmFkZCg5NjgpOworICAgIF80Njk0LT5h
ZGQoMjQzKTsKKyAgICBfNDY5NC0+YWRkKDEwNzUpOworICAgIF80Njk0LT5hZGQoMik7CisgICAg
XzQ2OTQtPmFkZCgyNDgpOworICAgIF80Njk0LT5hZGQoMzU2KTsKKyAgICBfNDY5NC0+YWRkKDE0
OSk7CisgICAgXzQ2OTQtPmFkZCgxNTYpOworICAgIF80Njk0LT5hZGQoMTcwOCk7CisgICAgXzQ2
OTQtPmFkZCgxMTQ2KTsKKyAgICBfNDY5NC0+YWRkKDk3NCk7CisgICAgXzQ2OTQtPmFkZCgyNzMp
OworICAgIF80Njk0LT5hZGQoMjc3Nik7CisgICAgXzQ2OTMtPmFkZCgyMDQpOworICAgIF80Njkz
LT5hZGQoMTEyMSk7CisgICAgXzQ2OTMtPmFkZCgyNTgzKTsKKyAgICBfNDY5My0+YWRkKDIyOCk7
CisgICAgXzQ2OTMtPmFkZCgyNDApOworICAgIF80NjkzLT5hZGQoMTQyKTsKKyAgICBfNDY5My0+
YWRkKDEwNCk7CisgICAgXzQ2OTMtPmFkZCgzMDkpOworICAgIF80NjkzLT5hZGQoMTkyKTsKKyAg
ICBfNDY5My0+YWRkKDE2MTMpOworICAgIF80NjkzLT5hZGQoMTUxNik7CisgICAgXzQ2OTMtPmFk
ZCgxODApOworICAgIF80NjkzLT5hZGQoMTc5KTsKKyAgICBfNDY5My0+YWRkKDE1MTIpOworICAg
IF80NjkzLT5hZGQoMzQ1KTsKKyAgICBfNDY5My0+YWRkKDE2Nyk7CisgICAgXzQ2OTMtPmFkZCgz
MzgpOworICAgIF80NjkzLT5hZGQoMTUyMCk7CisgICAgXzQ2OTMtPmFkZCgyMTYpOworICAgIF80
NjkzLT5hZGQoOTY4KTsKKyAgICBfNDY5My0+YWRkKDI0Myk7CisgICAgXzQ2OTMtPmFkZCgxMDc1
KTsKKyAgICBfNDY5My0+YWRkKDIpOworICAgIF80NjkzLT5hZGQoMjQ4KTsKKyAgICBfNDY5My0+
YWRkKDM1Nik7CisgICAgXzQ2OTMtPmFkZCgxNDkpOworICAgIF80NjkzLT5hZGQoMTU2KTsKKyAg
ICBfNDY5My0+YWRkKDE3MDgpOworICAgIF80NjkzLT5hZGQoMTE0Nik7CisgICAgXzQ2OTMtPmFk
ZCg5NzQpOworICAgIF80NjkzLT5hZGQoMjczKTsKKyAgICBfNDY5My0+YWRkKDI3NzYpOworICAg
IF80NjkyLT5hZGQoMjA0KTsKKyAgICBfNDY5Mi0+YWRkKDE4MCk7CisgICAgXzQ2OTItPmFkZCgx
MTIxKTsKKyAgICBfNDY5Mi0+YWRkKDE1Nik7CisgICAgXzQ2OTItPmFkZCgxMTQ2KTsKKyAgICBf
NDY5Mi0+YWRkKDE3OSk7CisgICAgXzQ2OTItPmFkZCgxNTEyKTsKKyAgICBfNDY5Mi0+YWRkKDE1
MjApOworICAgIF80NjkyLT5hZGQoMTA3NSk7CisgICAgXzQ2OTItPmFkZCgxNzA4KTsKKyAgICBf
NDY5Mi0+YWRkKDk2OCk7CisgICAgXzQ2OTItPmFkZCgxNDkpOworICAgIF80NjkyLT5hZGQoOTc0
KTsKKyAgICBfNDY5Mi0+YWRkKDI3Myk7CisgICAgXzQ2OTItPmFkZCgyNTgzKTsKKyAgICBfNDY5
Mi0+YWRkKDIyOCk7CisgICAgXzQ2OTItPmFkZCgyNDApOworICAgIF80NjkyLT5hZGQoMTQyKTsK
KyAgICBfNDY5Mi0+YWRkKDEwNCk7CisgICAgXzQ2OTItPmFkZCgzMDkpOworICAgIF80NjkyLT5h
ZGQoMTkyKTsKKyAgICBfNDY5Mi0+YWRkKDE2MTMpOworICAgIF80NjkyLT5hZGQoMzQ1KTsKKyAg
ICBfNDY5Mi0+YWRkKDE2Nyk7CisgICAgXzQ2OTItPmFkZCgzMzgpOworICAgIF80NjkyLT5hZGQo
MjE2KTsKKyAgICBfNDY5Mi0+YWRkKDIpOworICAgIF80NjkyLT5hZGQoMjQzKTsKKyAgICBfNDY5
Mi0+YWRkKDE1MTYpOworICAgIF80NjkyLT5hZGQoMjQ4KTsKKyAgICBfNDY5Mi0+YWRkKDM1Nik7
CisgICAgXzQ3MDEtPmFkZCgyMDQpOworICAgIF80NzAxLT5hZGQoMTgwKTsKKyAgICBfNDcwMS0+
YWRkKDExMjEpOworICAgIF80NzAxLT5hZGQoMTU2KTsKKyAgICBfNDcwMS0+YWRkKDExNDYpOwor
ICAgIF80NzAxLT5hZGQoMTc5KTsKKyAgICBfNDcwMS0+YWRkKDE1MTIpOworICAgIF80NzAxLT5h
ZGQoMTUyMCk7CisgICAgXzQ3MDEtPmFkZCgxMDc1KTsKKyAgICBfNDcwMS0+YWRkKDE3MDgpOwor
ICAgIF80NzAxLT5hZGQoOTY4KTsKKyAgICBfNDcwMS0+YWRkKDE0OSk7CisgICAgXzQ3MDEtPmFk
ZCg5NzQpOworICAgIF80NzAxLT5hZGQoMjczKTsKKyAgICBfNDcwMS0+YWRkKDI1ODMpOworICAg
IF80NzAxLT5hZGQoMjI4KTsKKyAgICBfNDcwMS0+YWRkKDI0MCk7CisgICAgXzQ3MDEtPmFkZCgx
NDIpOworICAgIF80NzAxLT5hZGQoMTA0KTsKKyAgICBfNDcwMS0+YWRkKDMwOSk7CisgICAgXzQ3
MDEtPmFkZCgxOTIpOworICAgIF80NzAxLT5hZGQoMTYxMyk7CisgICAgXzQ3MDEtPmFkZCgzNDUp
OworICAgIF80NzAxLT5hZGQoMTY3KTsKKyAgICBfNDcwMS0+YWRkKDMzOCk7CisgICAgXzQ3MDEt
PmFkZCgyMTYpOworICAgIF80NzAxLT5hZGQoMik7CisgICAgXzQ3MDEtPmFkZCgyNDMpOworICAg
IF80NzAxLT5hZGQoMTUxNik7CisgICAgXzQ3MDEtPmFkZCgyNDgpOworICAgIF80NzAxLT5hZGQo
MzU2KTsKKyAgICBfNDcwMS0+YWRkKDE4NjMpOworICAgIF80NjkxLT5hZGQoMjA0KTsKKyAgICBf
NDY5MS0+YWRkKDI3Myk7CisgICAgXzQ2OTEtPmFkZCgxMTIxKTsKKyAgICBfNDY5MS0+YWRkKDEx
NDYpOworICAgIF80NjkxLT5hZGQoMjI4KTsKKyAgICBfNDY5MS0+YWRkKDI0MCk7CisgICAgXzQ2
OTEtPmFkZCgxNDIpOworICAgIF80NjkxLT5hZGQoMTA0KTsKKyAgICBfNDY5MS0+YWRkKDMwOSk7
CisgICAgXzQ2OTEtPmFkZCgxOTIpOworICAgIF80NjkxLT5hZGQoMTYxMyk7CisgICAgXzQ2OTEt
PmFkZCgxNTE2KTsKKyAgICBfNDY5MS0+YWRkKDE4MCk7CisgICAgXzQ2OTEtPmFkZCgxNzkpOwor
ICAgIF80NjkxLT5hZGQoMTUxMik7CisgICAgXzQ2OTEtPmFkZCgzNDUpOworICAgIF80NjkxLT5h
ZGQoMTY3KTsKKyAgICBfNDY5MS0+YWRkKDMzOCk7CisgICAgXzQ2OTEtPmFkZCgxNTIwKTsKKyAg
ICBfNDY5MS0+YWRkKDIxNik7CisgICAgXzQ2OTEtPmFkZCgyKTsKKyAgICBfNDY5MS0+YWRkKDI0
Myk7CisgICAgXzQ2OTEtPmFkZCgxMDc1KTsKKyAgICBfNDY5MS0+YWRkKDI1ODMpOworICAgIF80
NjkxLT5hZGQoMjQ4KTsKKyAgICBfNDY5MS0+YWRkKDM1Nik7CisgICAgXzQ2OTEtPmFkZCg5Njgp
OworICAgIF80NjkxLT5hZGQoMTQ5KTsKKyAgICBfNDY5MS0+YWRkKDE1Nik7CisgICAgXzQ2OTEt
PmFkZCg5NzQpOworICAgIF80NjkwLT5hZGQoMjA0KTsKKyAgICBfNDY5MC0+YWRkKDI3Myk7Cisg
ICAgXzQ2OTAtPmFkZCgxMTIxKTsKKyAgICBfNDY5MC0+YWRkKDExNDYpOworICAgIF80NjkwLT5h
ZGQoMjI4KTsKKyAgICBfNDY5MC0+YWRkKDI0MCk7CisgICAgXzQ2OTAtPmFkZCgxNDIpOworICAg
IF80NjkwLT5hZGQoMTA0KTsKKyAgICBfNDY5MC0+YWRkKDMwOSk7CisgICAgXzQ2OTAtPmFkZCgx
OTIpOworICAgIF80NjkwLT5hZGQoMTYxMyk7CisgICAgXzQ2OTAtPmFkZCgxNTE2KTsKKyAgICBf
NDY5MC0+YWRkKDE4MCk7CisgICAgXzQ2OTAtPmFkZCgxNzkpOworICAgIF80NjkwLT5hZGQoMTUx
Mik7CisgICAgXzQ2OTAtPmFkZCgzNDUpOworICAgIF80NjkwLT5hZGQoMTY3KTsKKyAgICBfNDY5
MC0+YWRkKDMzOCk7CisgICAgXzQ2OTAtPmFkZCgxNTIwKTsKKyAgICBfNDY5MC0+YWRkKDIxNik7
CisgICAgXzQ2OTAtPmFkZCgyKTsKKyAgICBfNDY5MC0+YWRkKDI0Myk7CisgICAgXzQ2OTAtPmFk
ZCgxMDc1KTsKKyAgICBfNDY5MC0+YWRkKDI1ODMpOworICAgIF80NjkwLT5hZGQoMjQ4KTsKKyAg
ICBfNDY5MC0+YWRkKDM1Nik7CisgICAgXzQ2OTAtPmFkZCg5NjgpOworICAgIF80NjkwLT5hZGQo
MTQ5KTsKKyAgICBfNDY5MC0+YWRkKDE1Nik7CisgICAgXzQ2OTAtPmFkZCg5NzQpOworICAgIF80
Njg2LT5hZGQoMjA0KTsKKyAgICBfNDY4Ni0+YWRkKDI3Myk7CisgICAgXzQ2ODYtPmFkZCgxMTIx
KTsKKyAgICBfNDY4Ni0+YWRkKDI1ODMpOworICAgIF80Njg2LT5hZGQoMjI4KTsKKyAgICBfNDY4
Ni0+YWRkKDE0Mik7CisgICAgXzQ2ODYtPmFkZCgxMDQpOworICAgIF80Njg2LT5hZGQoMzA5KTsK
KyAgICBfNDY4Ni0+YWRkKDE5Mik7CisgICAgXzQ2ODYtPmFkZCgxNjEzKTsKKyAgICBfNDY4Ni0+
YWRkKDE4MCk7CisgICAgXzQ2ODYtPmFkZCgxNzkpOworICAgIF80Njg2LT5hZGQoMTUxMik7Cisg
ICAgXzQ2ODYtPmFkZCgzNDUpOworICAgIF80Njg2LT5hZGQoMTY3KTsKKyAgICBfNDY4Ni0+YWRk
KDMzOCk7CisgICAgXzQ2ODYtPmFkZCgxNTIwKTsKKyAgICBfNDY4Ni0+YWRkKDIxNik7CisgICAg
XzQ2ODYtPmFkZCgxNTYpOworICAgIF80Njg2LT5hZGQoMik7CisgICAgXzQ2ODYtPmFkZCgyNDMp
OworICAgIF80Njg2LT5hZGQoMTA3NSk7CisgICAgXzQ2ODYtPmFkZCgxNTE2KTsKKyAgICBfNDY4
Ni0+YWRkKDI0OCk7CisgICAgXzQ2ODYtPmFkZCgzNTYpOworICAgIF80Njg2LT5hZGQoOTY4KTsK
KyAgICBfNDY4Ni0+YWRkKDE0OSk7CisgICAgXzQ2ODYtPmFkZCgyNDApOworICAgIF80Njg2LT5h
ZGQoMTE0Nik7CisgICAgXzQ2ODYtPmFkZCg5NzQpOworICAgIF80Njg5LT5hZGQoMjA0KTsKKyAg
ICBfNDY4OS0+YWRkKDI3Myk7CisgICAgXzQ2ODktPmFkZCgxMTIxKTsKKyAgICBfNDY4OS0+YWRk
KDI1ODMpOworICAgIF80Njg5LT5hZGQoMjI4KTsKKyAgICBfNDY4OS0+YWRkKDE0Mik7CisgICAg
XzQ2ODktPmFkZCgxMDQpOworICAgIF80Njg5LT5hZGQoMzA5KTsKKyAgICBfNDY4OS0+YWRkKDE5
Mik7CisgICAgXzQ2ODktPmFkZCgxNjEzKTsKKyAgICBfNDY4OS0+YWRkKDE4MCk7CisgICAgXzQ2
ODktPmFkZCgxNzkpOworICAgIF80Njg5LT5hZGQoMTUxMik7CisgICAgXzQ2ODktPmFkZCgzNDUp
OworICAgIF80Njg5LT5hZGQoMTY3KTsKKyAgICBfNDY4OS0+YWRkKDMzOCk7CisgICAgXzQ2ODkt
PmFkZCgxNTIwKTsKKyAgICBfNDY4OS0+YWRkKDIxNik7CisgICAgXzQ2ODktPmFkZCgxNTYpOwor
ICAgIF80Njg5LT5hZGQoMik7CisgICAgXzQ2ODktPmFkZCgyNDMpOworICAgIF80Njg5LT5hZGQo
MTA3NSk7CisgICAgXzQ2ODktPmFkZCgxNTE2KTsKKyAgICBfNDY4OS0+YWRkKDI0OCk7CisgICAg
XzQ2ODktPmFkZCgzNTYpOworICAgIF80Njg5LT5hZGQoOTY4KTsKKyAgICBfNDY4OS0+YWRkKDE0
OSk7CisgICAgXzQ2ODktPmFkZCgyNDApOworICAgIF80Njg5LT5hZGQoMTE0Nik7CisgICAgXzQ2
ODktPmFkZCg5NzQpOworICAgIF80Njg4LT5hZGQoMjA0KTsKKyAgICBfNDY4OC0+YWRkKDI3Myk7
CisgICAgXzQ2ODgtPmFkZCgxMTIxKTsKKyAgICBfNDY4OC0+YWRkKDIyOCk7CisgICAgXzQ2ODgt
PmFkZCgyNDApOworICAgIF80Njg4LT5hZGQoMTQyKTsKKyAgICBfNDY4OC0+YWRkKDEwNCk7Cisg
ICAgXzQ2ODgtPmFkZCgzMDkpOworICAgIF80Njg4LT5hZGQoMTkyKTsKKyAgICBfNDY4OC0+YWRk
KDE2MTMpOworICAgIF80Njg4LT5hZGQoMTUxNik7CisgICAgXzQ2ODgtPmFkZCgxODApOworICAg
IF80Njg4LT5hZGQoMTc5KTsKKyAgICBfNDY4OC0+YWRkKDE1MTIpOworICAgIF80Njg4LT5hZGQo
MzQ1KTsKKyAgICBfNDY4OC0+YWRkKDE2Nyk7CisgICAgXzQ2ODgtPmFkZCgzMzgpOworICAgIF80
Njg4LT5hZGQoMTUyMCk7CisgICAgXzQ2ODgtPmFkZCgyMTYpOworICAgIF80Njg4LT5hZGQoMik7
CisgICAgXzQ2ODgtPmFkZCgyNDMpOworICAgIF80Njg4LT5hZGQoMTA3NSk7CisgICAgXzQ2ODgt
PmFkZCgyNTgzKTsKKyAgICBfNDY4OC0+YWRkKDI0OCk7CisgICAgXzQ2ODgtPmFkZCgzNTYpOwor
ICAgIF80Njg4LT5hZGQoOTY4KTsKKyAgICBfNDY4OC0+YWRkKDE0OSk7CisgICAgXzQ2ODgtPmFk
ZCgxNTYpOworICAgIF80Njg4LT5hZGQoMTE0Nik7CisgICAgXzQ2ODgtPmFkZCg5NzQpOworICAg
IF80Njg4LT5hZGQoMTU3MSk7CisgICAgXzQ2ODgtPmFkZCgyNzc1KTsKKyAgICBfNDY4Ny0+YWRk
KDIwNCk7CisgICAgXzQ2ODctPmFkZCgyNzMpOworICAgIF80Njg3LT5hZGQoMTEyMSk7CisgICAg
XzQ2ODctPmFkZCgyMjgpOworICAgIF80Njg3LT5hZGQoMjQwKTsKKyAgICBfNDY4Ny0+YWRkKDE0
Mik7CisgICAgXzQ2ODctPmFkZCgxMDQpOworICAgIF80Njg3LT5hZGQoMzA5KTsKKyAgICBfNDY4
Ny0+YWRkKDE5Mik7CisgICAgXzQ2ODctPmFkZCgxNjEzKTsKKyAgICBfNDY4Ny0+YWRkKDE1MTYp
OworICAgIF80Njg3LT5hZGQoMTgwKTsKKyAgICBfNDY4Ny0+YWRkKDE3OSk7CisgICAgXzQ2ODct
PmFkZCgxNTEyKTsKKyAgICBfNDY4Ny0+YWRkKDM0NSk7CisgICAgXzQ2ODctPmFkZCgxNjcpOwor
ICAgIF80Njg3LT5hZGQoMzM4KTsKKyAgICBfNDY4Ny0+YWRkKDE1MjApOworICAgIF80Njg3LT5h
ZGQoMjE2KTsKKyAgICBfNDY4Ny0+YWRkKDIpOworICAgIF80Njg3LT5hZGQoMjQzKTsKKyAgICBf
NDY4Ny0+YWRkKDEwNzUpOworICAgIF80Njg3LT5hZGQoMjU4Myk7CisgICAgXzQ2ODctPmFkZCgy
NDgpOworICAgIF80Njg3LT5hZGQoMzU2KTsKKyAgICBfNDY4Ny0+YWRkKDk2OCk7CisgICAgXzQ2
ODctPmFkZCgxNDkpOworICAgIF80Njg3LT5hZGQoMTU2KTsKKyAgICBfNDY4Ny0+YWRkKDExNDYp
OworICAgIF80Njg3LT5hZGQoOTc0KTsKKyAgICBfNDY4Ny0+YWRkKDE1NzEpOworICAgIF80Njg3
LT5hZGQoMjc3NSk7CisgICAgXzQ2ODYtPmFkZCgyMDQpOworICAgIF80Njg2LT5hZGQoMTEyMSk7
CisgICAgXzQ2ODYtPmFkZCgxNTYpOworICAgIF80Njg2LT5hZGQoMTgwKTsKKyAgICBfNDY4Ni0+
YWRkKDE3OSk7CisgICAgXzQ2ODYtPmFkZCgxNTEyKTsKKyAgICBfNDY4Ni0+YWRkKDE1MjApOwor
ICAgIF80Njg2LT5hZGQoMTU3MSk7CisgICAgXzQ2ODYtPmFkZCgxMDc1KTsKKyAgICBfNDY4Ni0+
YWRkKDk2OCk7CisgICAgXzQ2ODYtPmFkZCgxNDkpOworICAgIF80Njg2LT5hZGQoMTE0Nik7Cisg
ICAgXzQ2ODYtPmFkZCg5NzQpOworICAgIF80Njg2LT5hZGQoMjczKTsKKyAgICBfNDY4Ni0+YWRk
KDIyOCk7CisgICAgXzQ2ODYtPmFkZCgyNDApOworICAgIF80Njg2LT5hZGQoMTQyKTsKKyAgICBf
NDY4Ni0+YWRkKDEwNCk7CisgICAgXzQ2ODYtPmFkZCgzMDkpOworICAgIF80Njg2LT5hZGQoMTky
KTsKKyAgICBfNDY4Ni0+YWRkKDE2MTMpOworICAgIF80Njg2LT5hZGQoMTUxNik7CisgICAgXzQ2
ODYtPmFkZCgzNDUpOworICAgIF80Njg2LT5hZGQoMTY3KTsKKyAgICBfNDY4Ni0+YWRkKDMzOCk7
CisgICAgXzQ2ODYtPmFkZCgyMTYpOworICAgIF80Njg2LT5hZGQoMik7CisgICAgXzQ2ODYtPmFk
ZCgyNDMpOworICAgIF80Njg2LT5hZGQoMjU4Myk7CisgICAgXzQ2ODYtPmFkZCgyNDgpOworICAg
IF80Njg2LT5hZGQoMzU2KTsKKyAgICBfNDY4OS0+YWRkKDIwNCk7CisgICAgXzQ2ODktPmFkZCgx
MTIxKTsKKyAgICBfNDY4OS0+YWRkKDE1Nik7CisgICAgXzQ2ODktPmFkZCgxODApOworICAgIF80
Njg5LT5hZGQoMTc5KTsKKyAgICBfNDY4OS0+YWRkKDE1MTIpOworICAgIF80Njg5LT5hZGQoMTUy
MCk7CisgICAgXzQ2ODktPmFkZCgxNTcxKTsKKyAgICBfNDY4OS0+YWRkKDEwNzUpOworICAgIF80
Njg5LT5hZGQoOTY4KTsKKyAgICBfNDY4OS0+YWRkKDE0OSk7CisgICAgXzQ2ODktPmFkZCgxMTQ2
KTsKKyAgICBfNDY4OS0+YWRkKDk3NCk7CisgICAgXzQ2ODktPmFkZCgyNzMpOworICAgIF80Njg5
LT5hZGQoMjI4KTsKKyAgICBfNDY4OS0+YWRkKDI0MCk7CisgICAgXzQ2ODktPmFkZCgxNDIpOwor
ICAgIF80Njg5LT5hZGQoMTA0KTsKKyAgICBfNDY4OS0+YWRkKDMwOSk7CisgICAgXzQ2ODktPmFk
ZCgxOTIpOworICAgIF80Njg5LT5hZGQoMTYxMyk7CisgICAgXzQ2ODktPmFkZCgxNTE2KTsKKyAg
ICBfNDY4OS0+YWRkKDM0NSk7CisgICAgXzQ2ODktPmFkZCgxNjcpOworICAgIF80Njg5LT5hZGQo
MzM4KTsKKyAgICBfNDY4OS0+YWRkKDIxNik7CisgICAgXzQ2ODktPmFkZCgyKTsKKyAgICBfNDY4
OS0+YWRkKDI0Myk7CisgICAgXzQ2ODktPmFkZCgyNTgzKTsKKyAgICBfNDY4OS0+YWRkKDI0OCk7
CisgICAgXzQ2ODktPmFkZCgzNTYpOworICAgIF80Njg5LT5hZGQoMTY4NSk7CisgICAgXzQ2ODQt
PmFkZCgyMDQpOworICAgIF80Njg0LT5hZGQoMjczKTsKKyAgICBfNDY4NC0+YWRkKDExNDYpOwor
ICAgIF80Njg0LT5hZGQoMTEyMSk7CisgICAgXzQ2ODQtPmFkZCgyMjgpOworICAgIF80Njg0LT5h
ZGQoMjQwKTsKKyAgICBfNDY4NC0+YWRkKDE0Mik7CisgICAgXzQ2ODQtPmFkZCgxMDQpOworICAg
IF80Njg0LT5hZGQoMzA5KTsKKyAgICBfNDY4NC0+YWRkKDE5Mik7CisgICAgXzQ2ODQtPmFkZCg5
NzQpOworICAgIF80Njg0LT5hZGQoMTA2NCk7CisgICAgXzQ2ODQtPmFkZCgxODApOworICAgIF80
Njg0LT5hZGQoMTc5KTsKKyAgICBfNDY4NC0+YWRkKDE1Nik7CisgICAgXzQ2ODQtPmFkZCgzNDUp
OworICAgIF80Njg0LT5hZGQoMTY3KTsKKyAgICBfNDY4NC0+YWRkKDMzOCk7CisgICAgXzQ2ODQt
PmFkZCgxMTMpOworICAgIF80Njg0LT5hZGQoMjE2KTsKKyAgICBfNDY4NC0+YWRkKDIpOworICAg
IF80Njg0LT5hZGQoMjQzKTsKKyAgICBfNDY4NC0+YWRkKDEwNzUpOworICAgIF80Njg0LT5hZGQo
MjU4Myk7CisgICAgXzQ2ODQtPmFkZCgyNDgpOworICAgIF80Njg0LT5hZGQoMzU2KTsKKyAgICBf
NDY4NC0+YWRkKDk2OCk7CisgICAgXzQ2ODQtPmFkZCgxNDkpOworICAgIF80Njg1LT5hZGQoMjA0
KTsKKyAgICBfNDY4NS0+YWRkKDI3Myk7CisgICAgXzQ2ODUtPmFkZCgxMTQ2KTsKKyAgICBfNDY4
NS0+YWRkKDExMjEpOworICAgIF80Njg1LT5hZGQoMjI4KTsKKyAgICBfNDY4NS0+YWRkKDI0MCk7
CisgICAgXzQ2ODUtPmFkZCgxNDIpOworICAgIF80Njg1LT5hZGQoMTA0KTsKKyAgICBfNDY4NS0+
YWRkKDMwOSk7CisgICAgXzQ2ODUtPmFkZCgxOTIpOworICAgIF80Njg1LT5hZGQoOTc0KTsKKyAg
ICBfNDY4NS0+YWRkKDEwNjQpOworICAgIF80Njg1LT5hZGQoMTgwKTsKKyAgICBfNDY4NS0+YWRk
KDE3OSk7CisgICAgXzQ2ODUtPmFkZCgxNTYpOworICAgIF80Njg1LT5hZGQoMzQ1KTsKKyAgICBf
NDY4NS0+YWRkKDE2Nyk7CisgICAgXzQ2ODUtPmFkZCgzMzgpOworICAgIF80Njg1LT5hZGQoMTEz
KTsKKyAgICBfNDY4NS0+YWRkKDIxNik7CisgICAgXzQ2ODUtPmFkZCgyKTsKKyAgICBfNDY4NS0+
YWRkKDI0Myk7CisgICAgXzQ2ODUtPmFkZCgxMDc1KTsKKyAgICBfNDY4NS0+YWRkKDI1ODMpOwor
ICAgIF80Njg1LT5hZGQoMjQ4KTsKKyAgICBfNDY4NS0+YWRkKDM1Nik7CisgICAgXzQ2ODUtPmFk
ZCg5NjgpOworICAgIF80Njg1LT5hZGQoMTQ5KTsKKyAgICBfNDY4My0+YWRkKDIwNCk7CisgICAg
XzQ2ODMtPmFkZCgyNzMpOworICAgIF80NjgzLT5hZGQoMTEyMSk7CisgICAgXzQ2ODMtPmFkZCgx
MDY0KTsKKyAgICBfNDY4My0+YWRkKDIyOCk7CisgICAgXzQ2ODMtPmFkZCgyNDApOworICAgIF80
NjgzLT5hZGQoMTQyKTsKKyAgICBfNDY4My0+YWRkKDEwNCk7CisgICAgXzQ2ODMtPmFkZCgzMDkp
OworICAgIF80NjgzLT5hZGQoMTkyKTsKKyAgICBfNDY4My0+YWRkKDExMyk7CisgICAgXzQ2ODMt
PmFkZCgxODApOworICAgIF80NjgzLT5hZGQoMTc5KTsKKyAgICBfNDY4My0+YWRkKDI1ODMpOwor
ICAgIF80NjgzLT5hZGQoMzQ1KTsKKyAgICBfNDY4My0+YWRkKDE2Nyk7CisgICAgXzQ2ODMtPmFk
ZCgzMzgpOworICAgIF80NjgzLT5hZGQoMjE2KTsKKyAgICBfNDY4My0+YWRkKDI0Myk7CisgICAg
XzQ2ODMtPmFkZCgxMDc1KTsKKyAgICBfNDY4My0+YWRkKDIpOworICAgIF80NjgzLT5hZGQoMjQ4
KTsKKyAgICBfNDY4My0+YWRkKDM1Nik7CisgICAgXzQ2ODMtPmFkZCg5NjgpOworICAgIF80Njgz
LT5hZGQoMTQ5KTsKKyAgICBfNDY4My0+YWRkKDE1Nik7CisgICAgXzQ2ODMtPmFkZCgxMTQ2KTsK
KyAgICBfNDY4My0+YWRkKDk3NCk7CisgICAgXzQ2ODAtPmFkZCgyMDQpOworICAgIF80NjgwLT5h
ZGQoMjczKTsKKyAgICBfNDY4MC0+YWRkKDExMjEpOworICAgIF80NjgwLT5hZGQoMTA2NCk7Cisg
ICAgXzQ2ODAtPmFkZCgyMjgpOworICAgIF80NjgwLT5hZGQoMjQwKTsKKyAgICBfNDY4MC0+YWRk
KDE0Mik7CisgICAgXzQ2ODAtPmFkZCgxMDQpOworICAgIF80NjgwLT5hZGQoMzA5KTsKKyAgICBf
NDY4MC0+YWRkKDE5Mik7CisgICAgXzQ2ODAtPmFkZCgxMTMpOworICAgIF80NjgwLT5hZGQoMTgw
KTsKKyAgICBfNDY4MC0+YWRkKDE3OSk7CisgICAgXzQ2ODAtPmFkZCgyNTgzKTsKKyAgICBfNDY4
MC0+YWRkKDM0NSk7CisgICAgXzQ2ODAtPmFkZCgxNjcpOworICAgIF80NjgwLT5hZGQoMzM4KTsK
KyAgICBfNDY4MC0+YWRkKDIxNik7CisgICAgXzQ2ODAtPmFkZCgyNDMpOworICAgIF80NjgwLT5h
ZGQoMTA3NSk7CisgICAgXzQ2ODAtPmFkZCgyKTsKKyAgICBfNDY4MC0+YWRkKDI0OCk7CisgICAg
XzQ2ODAtPmFkZCgzNTYpOworICAgIF80NjgwLT5hZGQoOTY4KTsKKyAgICBfNDY4MC0+YWRkKDE0
OSk7CisgICAgXzQ2ODAtPmFkZCgxNTYpOworICAgIF80NjgwLT5hZGQoMTE0Nik7CisgICAgXzQ2
ODAtPmFkZCg5NzQpOworICAgIF80NjgxLT5hZGQoMjA0KTsKKyAgICBfNDY4MS0+YWRkKDI3Myk7
CisgICAgXzQ2ODEtPmFkZCgxMTIxKTsKKyAgICBfNDY4MS0+YWRkKDEwNjQpOworICAgIF80Njgx
LT5hZGQoMjI4KTsKKyAgICBfNDY4MS0+YWRkKDE0Mik7CisgICAgXzQ2ODEtPmFkZCgxMDQpOwor
ICAgIF80NjgxLT5hZGQoMzA5KTsKKyAgICBfNDY4MS0+YWRkKDE5Mik7CisgICAgXzQ2ODEtPmFk
ZCgxMTMpOworICAgIF80NjgxLT5hZGQoMTgwKTsKKyAgICBfNDY4MS0+YWRkKDE3OSk7CisgICAg
XzQ2ODEtPmFkZCgzNDUpOworICAgIF80NjgxLT5hZGQoMTY3KTsKKyAgICBfNDY4MS0+YWRkKDMz
OCk7CisgICAgXzQ2ODEtPmFkZCgyMTYpOworICAgIF80NjgxLT5hZGQoMTU2KTsKKyAgICBfNDY4
MS0+YWRkKDIpOworICAgIF80NjgxLT5hZGQoMjQzKTsKKyAgICBfNDY4MS0+YWRkKDEwNzUpOwor
ICAgIF80NjgxLT5hZGQoMjU4Myk7CisgICAgXzQ2ODEtPmFkZCgyNDgpOworICAgIF80NjgxLT5h
ZGQoMzU2KTsKKyAgICBfNDY4MS0+YWRkKDk2OCk7CisgICAgXzQ2ODEtPmFkZCgxNDkpOworICAg
IF80NjgxLT5hZGQoMjQwKTsKKyAgICBfNDY4MS0+YWRkKDExNDYpOworICAgIF80NjgxLT5hZGQo
OTc0KTsKKyAgICBfNDY4MS0+YWRkKDEyOCk7CisgICAgXzQ2ODEtPmFkZCgxMDI0KTsKKyAgICBf
NDY4MS0+YWRkKDEzOSk7CisgICAgXzQ2ODEtPmFkZCgyNzc0KTsKKyAgICBfNDY4Mi0+YWRkKDIw
NCk7CisgICAgXzQ2ODItPmFkZCgyNzMpOworICAgIF80NjgyLT5hZGQoMTEyMSk7CisgICAgXzQ2
ODItPmFkZCgxMDY0KTsKKyAgICBfNDY4Mi0+YWRkKDIyOCk7CisgICAgXzQ2ODItPmFkZCgxNDIp
OworICAgIF80NjgyLT5hZGQoMTA0KTsKKyAgICBfNDY4Mi0+YWRkKDMwOSk7CisgICAgXzQ2ODIt
PmFkZCgxOTIpOworICAgIF80NjgyLT5hZGQoMTEzKTsKKyAgICBfNDY4Mi0+YWRkKDE4MCk7Cisg
ICAgXzQ2ODItPmFkZCgxNzkpOworICAgIF80NjgyLT5hZGQoMzQ1KTsKKyAgICBfNDY4Mi0+YWRk
KDE2Nyk7CisgICAgXzQ2ODItPmFkZCgzMzgpOworICAgIF80NjgyLT5hZGQoMjE2KTsKKyAgICBf
NDY4Mi0+YWRkKDE1Nik7CisgICAgXzQ2ODItPmFkZCgyKTsKKyAgICBfNDY4Mi0+YWRkKDI0Myk7
CisgICAgXzQ2ODItPmFkZCgxMDc1KTsKKyAgICBfNDY4Mi0+YWRkKDI1ODMpOworICAgIF80Njgy
LT5hZGQoMjQ4KTsKKyAgICBfNDY4Mi0+YWRkKDM1Nik7CisgICAgXzQ2ODItPmFkZCg5NjgpOwor
ICAgIF80NjgyLT5hZGQoMTQ5KTsKKyAgICBfNDY4Mi0+YWRkKDI0MCk7CisgICAgXzQ2ODItPmFk
ZCgxMTQ2KTsKKyAgICBfNDY4Mi0+YWRkKDk3NCk7CisgICAgXzQ2ODItPmFkZCgxMjgpOworICAg
IF80NjgyLT5hZGQoMTAyNCk7CisgICAgXzQ2ODItPmFkZCgxMzkpOworICAgIF80NjgyLT5hZGQo
Mjc3NCk7CisgICAgXzQ2ODMtPmFkZCgyMDQpOworICAgIF80NjgzLT5hZGQoMTEyMSk7CisgICAg
XzQ2ODMtPmFkZCgxMDY0KTsKKyAgICBfNDY4My0+YWRkKDE1Nik7CisgICAgXzQ2ODMtPmFkZCgx
MjgpOworICAgIF80NjgzLT5hZGQoMTgwKTsKKyAgICBfNDY4My0+YWRkKDE3OSk7CisgICAgXzQ2
ODMtPmFkZCgxMDc1KTsKKyAgICBfNDY4My0+YWRkKDk2OCk7CisgICAgXzQ2ODMtPmFkZCgxNDkp
OworICAgIF80NjgzLT5hZGQoMTE0Nik7CisgICAgXzQ2ODMtPmFkZCg5NzQpOworICAgIF80Njgz
LT5hZGQoMjczKTsKKyAgICBfNDY4My0+YWRkKDIyOCk7CisgICAgXzQ2ODMtPmFkZCgxNDIpOwor
ICAgIF80NjgzLT5hZGQoMTA0KTsKKyAgICBfNDY4My0+YWRkKDM1Nik7CisgICAgXzQ2ODMtPmFk
ZCgzMDkpOworICAgIF80NjgzLT5hZGQoMTkyKTsKKyAgICBfNDY4My0+YWRkKDExMyk7CisgICAg
XzQ2ODMtPmFkZCgzNDUpOworICAgIF80NjgzLT5hZGQoMTY3KTsKKyAgICBfNDY4My0+YWRkKDMz
OCk7CisgICAgXzQ2ODMtPmFkZCgyMTYpOworICAgIF80NjgzLT5hZGQoMik7CisgICAgXzQ2ODMt
PmFkZCgyNDMpOworICAgIF80NjgzLT5hZGQoMjU4Myk7CisgICAgXzQ2ODMtPmFkZCgyNDgpOwor
ICAgIF80NjgzLT5hZGQoMTM5KTsKKyAgICBfNDY4My0+YWRkKDEwMjQpOworICAgIF80NjgzLT5h
ZGQoMjQwKTsKKyAgICBfNDY4My0+YWRkKDE0NjYpOworICAgIF80NjgwLT5hZGQoMjA0KTsKKyAg
ICBfNDY4MC0+YWRkKDExMjEpOworICAgIF80NjgwLT5hZGQoMTA2NCk7CisgICAgXzQ2ODAtPmFk
ZCgxNTYpOworICAgIF80NjgwLT5hZGQoMTI4KTsKKyAgICBfNDY4MC0+YWRkKDE4MCk7CisgICAg
XzQ2ODAtPmFkZCgxNzkpOworICAgIF80NjgwLT5hZGQoMTA3NSk7CisgICAgXzQ2ODAtPmFkZCg5
NjgpOworICAgIF80NjgwLT5hZGQoMTQ5KTsKKyAgICBfNDY4MC0+YWRkKDExNDYpOworICAgIF80
NjgwLT5hZGQoOTc0KTsKKyAgICBfNDY4MC0+YWRkKDI3Myk7CisgICAgXzQ2ODAtPmFkZCgyMjgp
OworICAgIF80NjgwLT5hZGQoMTQyKTsKKyAgICBfNDY4MC0+YWRkKDEwNCk7CisgICAgXzQ2ODAt
PmFkZCgzNTYpOworICAgIF80NjgwLT5hZGQoMzA5KTsKKyAgICBfNDY4MC0+YWRkKDE5Mik7Cisg
ICAgXzQ2ODAtPmFkZCgxMTMpOworICAgIF80NjgwLT5hZGQoMzQ1KTsKKyAgICBfNDY4MC0+YWRk
KDE2Nyk7CisgICAgXzQ2ODAtPmFkZCgzMzgpOworICAgIF80NjgwLT5hZGQoMjE2KTsKKyAgICBf
NDY4MC0+YWRkKDIpOworICAgIF80NjgwLT5hZGQoMjQzKTsKKyAgICBfNDY4MC0+YWRkKDI1ODMp
OworICAgIF80NjgwLT5hZGQoMjQ4KTsKKyAgICBfNDY4MC0+YWRkKDEzOSk7CisgICAgXzQ2ODAt
PmFkZCgxMDI0KTsKKyAgICBfNDY4MC0+YWRkKDI0MCk7CisgICAgXzQ2NzgtPmFkZCgyMDQpOwor
ICAgIF80Njc4LT5hZGQoMjczKTsKKyAgICBfNDY3OC0+YWRkKDExMjEpOworICAgIF80Njc4LT5h
ZGQoMTA2NCk7CisgICAgXzQ2NzgtPmFkZCgyMjgpOworICAgIF80Njc4LT5hZGQoMTQyKTsKKyAg
ICBfNDY3OC0+YWRkKDEwNCk7CisgICAgXzQ2NzgtPmFkZCgzMDkpOworICAgIF80Njc4LT5hZGQo
MTkyKTsKKyAgICBfNDY3OC0+YWRkKDExMyk7CisgICAgXzQ2NzgtPmFkZCgxMjgpOworICAgIF80
Njc4LT5hZGQoMTgwKTsKKyAgICBfNDY3OC0+YWRkKDE3OSk7CisgICAgXzQ2NzgtPmFkZCgzNDUp
OworICAgIF80Njc4LT5hZGQoMTY3KTsKKyAgICBfNDY3OC0+YWRkKDMzOCk7CisgICAgXzQ2Nzgt
PmFkZCgyMTYpOworICAgIF80Njc4LT5hZGQoMTU2KTsKKyAgICBfNDY3OC0+YWRkKDEzOSk7Cisg
ICAgXzQ2NzgtPmFkZCgyKTsKKyAgICBfNDY3OC0+YWRkKDI0Myk7CisgICAgXzQ2NzgtPmFkZCgx
MDc1KTsKKyAgICBfNDY3OC0+YWRkKDI1ODMpOworICAgIF80Njc4LT5hZGQoMjQ4KTsKKyAgICBf
NDY3OC0+YWRkKDM1Nik7CisgICAgXzQ2NzgtPmFkZCg5NjgpOworICAgIF80Njc4LT5hZGQoMTAy
NCk7CisgICAgXzQ2NzgtPmFkZCgxNDkpOworICAgIF80Njc4LT5hZGQoMjQwKTsKKyAgICBfNDY3
OC0+YWRkKDExNDYpOworICAgIF80Njc4LT5hZGQoOTc0KTsKKyAgICBfNDY3OS0+YWRkKDIwNCk7
CisgICAgXzQ2NzktPmFkZCgyNzMpOworICAgIF80Njc5LT5hZGQoMTEyMSk7CisgICAgXzQ2Nzkt
PmFkZCgxMDY0KTsKKyAgICBfNDY3OS0+YWRkKDIyOCk7CisgICAgXzQ2NzktPmFkZCgxNDIpOwor
ICAgIF80Njc5LT5hZGQoMTA0KTsKKyAgICBfNDY3OS0+YWRkKDMwOSk7CisgICAgXzQ2NzktPmFk
ZCgxOTIpOworICAgIF80Njc5LT5hZGQoMTEzKTsKKyAgICBfNDY3OS0+YWRkKDEyOCk7CisgICAg
XzQ2NzktPmFkZCgxODApOworICAgIF80Njc5LT5hZGQoMTc5KTsKKyAgICBfNDY3OS0+YWRkKDM0
NSk7CisgICAgXzQ2NzktPmFkZCgxNjcpOworICAgIF80Njc5LT5hZGQoMzM4KTsKKyAgICBfNDY3
OS0+YWRkKDIxNik7CisgICAgXzQ2NzktPmFkZCgxNTYpOworICAgIF80Njc5LT5hZGQoMTM5KTsK
KyAgICBfNDY3OS0+YWRkKDIpOworICAgIF80Njc5LT5hZGQoMjQzKTsKKyAgICBfNDY3OS0+YWRk
KDEwNzUpOworICAgIF80Njc5LT5hZGQoMjU4Myk7CisgICAgXzQ2NzktPmFkZCgyNDgpOworICAg
IF80Njc5LT5hZGQoMzU2KTsKKyAgICBfNDY3OS0+YWRkKDk2OCk7CisgICAgXzQ2NzktPmFkZCgx
MDI0KTsKKyAgICBfNDY3OS0+YWRkKDE0OSk7CisgICAgXzQ2NzktPmFkZCgyNDApOworICAgIF80
Njc5LT5hZGQoMTE0Nik7CisgICAgXzQ2NzktPmFkZCg5NzQpOworICAgIF80Njc3LT5hZGQoMjA0
KTsKKyAgICBfNDY3Ny0+YWRkKDI3Myk7CisgICAgXzQ2NzctPmFkZCgxMTIxKTsKKyAgICBfNDY3
Ny0+YWRkKDEwNjQpOworICAgIF80Njc3LT5hZGQoMjI4KTsKKyAgICBfNDY3Ny0+YWRkKDI0MCk7
CisgICAgXzQ2NzctPmFkZCgxNDIpOworICAgIF80Njc3LT5hZGQoMTA0KTsKKyAgICBfNDY3Ny0+
YWRkKDM1Nik7CisgICAgXzQ2NzctPmFkZCgzMDkpOworICAgIF80Njc3LT5hZGQoMTkyKTsKKyAg
ICBfNDY3Ny0+YWRkKDExMyk7CisgICAgXzQ2NzctPmFkZCgxMjgpOworICAgIF80Njc3LT5hZGQo
MTgwKTsKKyAgICBfNDY3Ny0+YWRkKDE3OSk7CisgICAgXzQ2NzctPmFkZCgyNTgzKTsKKyAgICBf
NDY3Ny0+YWRkKDM0NSk7CisgICAgXzQ2NzctPmFkZCgxNjcpOworICAgIF80Njc3LT5hZGQoMzM4
KTsKKyAgICBfNDY3Ny0+YWRkKDIxNik7CisgICAgXzQ2NzctPmFkZCgyNDMpOworICAgIF80Njc3
LT5hZGQoMTA3NSk7CisgICAgXzQ2NzctPmFkZCgyKTsKKyAgICBfNDY3Ny0+YWRkKDI0OCk7Cisg
ICAgXzQ2NzctPmFkZCgxMzkpOworICAgIF80Njc3LT5hZGQoOTY4KTsKKyAgICBfNDY3Ny0+YWRk
KDEwMjQpOworICAgIF80Njc3LT5hZGQoMTQ5KTsKKyAgICBfNDY3Ny0+YWRkKDE1Nik7CisgICAg
XzQ2NzctPmFkZCgxMTQ2KTsKKyAgICBfNDY3Ny0+YWRkKDk3NCk7CisgICAgXzQ2NjgtPmFkZCgy
MDQpOworICAgIF80NjY4LT5hZGQoMjczKTsKKyAgICBfNDY2OC0+YWRkKDExMjEpOworICAgIF80
NjY4LT5hZGQoMTA2NCk7CisgICAgXzQ2NjgtPmFkZCgyMjgpOworICAgIF80NjY4LT5hZGQoMjQw
KTsKKyAgICBfNDY2OC0+YWRkKDE0Mik7CisgICAgXzQ2NjgtPmFkZCgxMDQpOworICAgIF80NjY4
LT5hZGQoMzU2KTsKKyAgICBfNDY2OC0+YWRkKDMwOSk7CisgICAgXzQ2NjgtPmFkZCgxOTIpOwor
ICAgIF80NjY4LT5hZGQoMTEzKTsKKyAgICBfNDY2OC0+YWRkKDEyOCk7CisgICAgXzQ2NjgtPmFk
ZCgxODApOworICAgIF80NjY4LT5hZGQoMTc5KTsKKyAgICBfNDY2OC0+YWRkKDI1ODMpOworICAg
IF80NjY4LT5hZGQoMzQ1KTsKKyAgICBfNDY2OC0+YWRkKDE2Nyk7CisgICAgXzQ2NjgtPmFkZCgz
MzgpOworICAgIF80NjY4LT5hZGQoMjE2KTsKKyAgICBfNDY2OC0+YWRkKDI0Myk7CisgICAgXzQ2
NjgtPmFkZCgxMDc1KTsKKyAgICBfNDY2OC0+YWRkKDIpOworICAgIF80NjY4LT5hZGQoMjQ4KTsK
KyAgICBfNDY2OC0+YWRkKDEzOSk7CisgICAgXzQ2NjgtPmFkZCg5NjgpOworICAgIF80NjY4LT5h
ZGQoMTAyNCk7CisgICAgXzQ2NjgtPmFkZCgxNDkpOworICAgIF80NjY4LT5hZGQoMTU2KTsKKyAg
ICBfNDY2OC0+YWRkKDExNDYpOworICAgIF80NjY4LT5hZGQoOTc0KTsKKyAgICBfNDY3Ni0+YWRk
KDIwNCk7CisgICAgXzQ2NzYtPmFkZCgyNzMpOworICAgIF80Njc2LT5hZGQoMTEyMSk7CisgICAg
XzQ2NzYtPmFkZCgxMDY0KTsKKyAgICBfNDY3Ni0+YWRkKDIyOCk7CisgICAgXzQ2NzYtPmFkZCgx
NDIpOworICAgIF80Njc2LT5hZGQoMTA0KTsKKyAgICBfNDY3Ni0+YWRkKDMwOSk7CisgICAgXzQ2
NzYtPmFkZCgxOTIpOworICAgIF80Njc2LT5hZGQoMTEzKTsKKyAgICBfNDY3Ni0+YWRkKDEyOCk7
CisgICAgXzQ2NzYtPmFkZCgxODApOworICAgIF80Njc2LT5hZGQoMTc5KTsKKyAgICBfNDY3Ni0+
YWRkKDM0NSk7CisgICAgXzQ2NzYtPmFkZCgxNjcpOworICAgIF80Njc2LT5hZGQoMzM4KTsKKyAg
ICBfNDY3Ni0+YWRkKDIxNik7CisgICAgXzQ2NzYtPmFkZCgxNTYpOworICAgIF80Njc2LT5hZGQo
MTM5KTsKKyAgICBfNDY3Ni0+YWRkKDIpOworICAgIF80Njc2LT5hZGQoMjQzKTsKKyAgICBfNDY3
Ni0+YWRkKDEwNzUpOworICAgIF80Njc2LT5hZGQoMjU4Myk7CisgICAgXzQ2NzYtPmFkZCgyNDgp
OworICAgIF80Njc2LT5hZGQoMzU2KTsKKyAgICBfNDY3Ni0+YWRkKDk2OCk7CisgICAgXzQ2NzYt
PmFkZCgxMDI0KTsKKyAgICBfNDY3Ni0+YWRkKDE0OSk7CisgICAgXzQ2NzYtPmFkZCgyNDApOwor
ICAgIF80Njc2LT5hZGQoMTE0Nik7CisgICAgXzQ2NzYtPmFkZCg5NzQpOworICAgIF80Njc2LT5h
ZGQoMjM4NCk7CisgICAgXzQ2NzYtPmFkZCgxMjczKTsKKyAgICBfNDY3NS0+YWRkKDIwNCk7Cisg
ICAgXzQ2NzUtPmFkZCgyNzMpOworICAgIF80Njc1LT5hZGQoMTEyMSk7CisgICAgXzQ2NzUtPmFk
ZCgxMDY0KTsKKyAgICBfNDY3NS0+YWRkKDIyOCk7CisgICAgXzQ2NzUtPmFkZCgxNDIpOworICAg
IF80Njc1LT5hZGQoMTA0KTsKKyAgICBfNDY3NS0+YWRkKDMwOSk7CisgICAgXzQ2NzUtPmFkZCgx
OTIpOworICAgIF80Njc1LT5hZGQoMTEzKTsKKyAgICBfNDY3NS0+YWRkKDEyOCk7CisgICAgXzQ2
NzUtPmFkZCgxODApOworICAgIF80Njc1LT5hZGQoMTc5KTsKKyAgICBfNDY3NS0+YWRkKDM0NSk7
CisgICAgXzQ2NzUtPmFkZCgxNjcpOworICAgIF80Njc1LT5hZGQoMzM4KTsKKyAgICBfNDY3NS0+
YWRkKDIxNik7CisgICAgXzQ2NzUtPmFkZCgxNTYpOworICAgIF80Njc1LT5hZGQoMTM5KTsKKyAg
ICBfNDY3NS0+YWRkKDIpOworICAgIF80Njc1LT5hZGQoMjQzKTsKKyAgICBfNDY3NS0+YWRkKDEw
NzUpOworICAgIF80Njc1LT5hZGQoMjU4Myk7CisgICAgXzQ2NzUtPmFkZCgyNDgpOworICAgIF80
Njc1LT5hZGQoMzU2KTsKKyAgICBfNDY3NS0+YWRkKDk2OCk7CisgICAgXzQ2NzUtPmFkZCgxMDI0
KTsKKyAgICBfNDY3NS0+YWRkKDE0OSk7CisgICAgXzQ2NzUtPmFkZCgyNDApOworICAgIF80Njc1
LT5hZGQoMTE0Nik7CisgICAgXzQ2NzUtPmFkZCg5NzQpOworICAgIF80Njc1LT5hZGQoMjM4NCk7
CisgICAgXzQ2NzUtPmFkZCgxMjczKTsKKyAgICBfNDY3MS0+YWRkKDIwNCk7CisgICAgXzQ2NzEt
PmFkZCgyMzg0KTsKKyAgICBfNDY3MS0+YWRkKDExMjEpOworICAgIF80NjcxLT5hZGQoMTA2NCk7
CisgICAgXzQ2NzEtPmFkZCgxNTYpOworICAgIF80NjcxLT5hZGQoMTI3Myk7CisgICAgXzQ2NzEt
PmFkZCgxMjgpOworICAgIF80NjcxLT5hZGQoMTgwKTsKKyAgICBfNDY3MS0+YWRkKDE3OSk7Cisg
ICAgXzQ2NzEtPmFkZCgxMDc1KTsKKyAgICBfNDY3MS0+YWRkKDk2OCk7CisgICAgXzQ2NzEtPmFk
ZCgxNDkpOworICAgIF80NjcxLT5hZGQoMTE0Nik7CisgICAgXzQ2NzEtPmFkZCg5NzQpOworICAg
IF80NjcxLT5hZGQoMjczKTsKKyAgICBfNDY3MS0+YWRkKDIyOCk7CisgICAgXzQ2NzEtPmFkZCgx
NDIpOworICAgIF80NjcxLT5hZGQoMTA0KTsKKyAgICBfNDY3MS0+YWRkKDMwOSk7CisgICAgXzQ2
NzEtPmFkZCgxOTIpOworICAgIF80NjcxLT5hZGQoMTEzKTsKKyAgICBfNDY3MS0+YWRkKDM0NSk7
CisgICAgXzQ2NzEtPmFkZCgxNjcpOworICAgIF80NjcxLT5hZGQoMzM4KTsKKyAgICBfNDY3MS0+
YWRkKDIxNik7CisgICAgXzQ2NzEtPmFkZCgxMzkpOworICAgIF80NjcxLT5hZGQoMik7CisgICAg
XzQ2NzEtPmFkZCgyNDMpOworICAgIF80NjcxLT5hZGQoMjU4Myk7CisgICAgXzQ2NzEtPmFkZCgy
NDgpOworICAgIF80NjcxLT5hZGQoMzU2KTsKKyAgICBfNDY3MS0+YWRkKDEwMjQpOworICAgIF80
NjcxLT5hZGQoMjQwKTsKKyAgICBfNDY3NC0+YWRkKDIwNCk7CisgICAgXzQ2NzQtPmFkZCgyMzg0
KTsKKyAgICBfNDY3NC0+YWRkKDExMjEpOworICAgIF80Njc0LT5hZGQoMTA2NCk7CisgICAgXzQ2
NzQtPmFkZCgxNTYpOworICAgIF80Njc0LT5hZGQoMTI3Myk7CisgICAgXzQ2NzQtPmFkZCgxMjgp
OworICAgIF80Njc0LT5hZGQoMTgwKTsKKyAgICBfNDY3NC0+YWRkKDE3OSk7CisgICAgXzQ2NzQt
PmFkZCgxMDc1KTsKKyAgICBfNDY3NC0+YWRkKDk2OCk7CisgICAgXzQ2NzQtPmFkZCgxNDkpOwor
ICAgIF80Njc0LT5hZGQoMTE0Nik7CisgICAgXzQ2NzQtPmFkZCg5NzQpOworICAgIF80Njc0LT5h
ZGQoMjczKTsKKyAgICBfNDY3NC0+YWRkKDIyOCk7CisgICAgXzQ2NzQtPmFkZCgxNDIpOworICAg
IF80Njc0LT5hZGQoMTA0KTsKKyAgICBfNDY3NC0+YWRkKDMwOSk7CisgICAgXzQ2NzQtPmFkZCgx
OTIpOworICAgIF80Njc0LT5hZGQoMTEzKTsKKyAgICBfNDY3NC0+YWRkKDM0NSk7CisgICAgXzQ2
NzQtPmFkZCgxNjcpOworICAgIF80Njc0LT5hZGQoMzM4KTsKKyAgICBfNDY3NC0+YWRkKDIxNik7
CisgICAgXzQ2NzQtPmFkZCgxMzkpOworICAgIF80Njc0LT5hZGQoMik7CisgICAgXzQ2NzQtPmFk
ZCgyNDMpOworICAgIF80Njc0LT5hZGQoMjU4Myk7CisgICAgXzQ2NzQtPmFkZCgyNDgpOworICAg
IF80Njc0LT5hZGQoMzU2KTsKKyAgICBfNDY3NC0+YWRkKDEwMjQpOworICAgIF80Njc0LT5hZGQo
MjQwKTsKKyAgICBfNDY3My0+YWRkKDIwNCk7CisgICAgXzQ2NzMtPmFkZCgyMzg0KTsKKyAgICBf
NDY3My0+YWRkKDExMjEpOworICAgIF80NjczLT5hZGQoMTA2NCk7CisgICAgXzQ2NzMtPmFkZCgx
NTYpOworICAgIF80NjczLT5hZGQoMTI3Myk7CisgICAgXzQ2NzMtPmFkZCgxMjgpOworICAgIF80
NjczLT5hZGQoMTgwKTsKKyAgICBfNDY3My0+YWRkKDE3OSk7CisgICAgXzQ2NzMtPmFkZCgxMDc1
KTsKKyAgICBfNDY3My0+YWRkKDk2OCk7CisgICAgXzQ2NzMtPmFkZCgxNDkpOworICAgIF80Njcz
LT5hZGQoMTE0Nik7CisgICAgXzQ2NzMtPmFkZCg5NzQpOworICAgIF80NjczLT5hZGQoMjczKTsK
KyAgICBfNDY3My0+YWRkKDIyOCk7CisgICAgXzQ2NzMtPmFkZCgyNDApOworICAgIF80NjczLT5h
ZGQoMTQyKTsKKyAgICBfNDY3My0+YWRkKDEwNCk7CisgICAgXzQ2NzMtPmFkZCgzMDkpOworICAg
IF80NjczLT5hZGQoMTkyKTsKKyAgICBfNDY3My0+YWRkKDExMyk7CisgICAgXzQ2NzMtPmFkZCgz
NDUpOworICAgIF80NjczLT5hZGQoMTY3KTsKKyAgICBfNDY3My0+YWRkKDMzOCk7CisgICAgXzQ2
NzMtPmFkZCgyMTYpOworICAgIF80NjczLT5hZGQoMik7CisgICAgXzQ2NzMtPmFkZCgyNDMpOwor
ICAgIF80NjczLT5hZGQoMjU4Myk7CisgICAgXzQ2NzMtPmFkZCgyNDgpOworICAgIF80NjczLT5h
ZGQoMzU2KTsKKyAgICBfNDY3My0+YWRkKDEwMjQpOworICAgIF80NjczLT5hZGQoMTM5KTsKKyAg
ICBfNDY3My0+YWRkKDEwMjgpOworICAgIF80NjczLT5hZGQoMTIzMSk7CisgICAgXzQ2NzMtPmFk
ZCgyNzczKTsKKyAgICBfNDY3Mi0+YWRkKDIwNCk7CisgICAgXzQ2NzItPmFkZCgyMzg0KTsKKyAg
ICBfNDY3Mi0+YWRkKDExMjEpOworICAgIF80NjcyLT5hZGQoMTA2NCk7CisgICAgXzQ2NzItPmFk
ZCgxNTYpOworICAgIF80NjcyLT5hZGQoMTI3Myk7CisgICAgXzQ2NzItPmFkZCgxMjgpOworICAg
IF80NjcyLT5hZGQoMTgwKTsKKyAgICBfNDY3Mi0+YWRkKDE3OSk7CisgICAgXzQ2NzItPmFkZCgx
MDc1KTsKKyAgICBfNDY3Mi0+YWRkKDk2OCk7CisgICAgXzQ2NzItPmFkZCgxNDkpOworICAgIF80
NjcyLT5hZGQoMTE0Nik7CisgICAgXzQ2NzItPmFkZCg5NzQpOworICAgIF80NjcyLT5hZGQoMjcz
KTsKKyAgICBfNDY3Mi0+YWRkKDIyOCk7CisgICAgXzQ2NzItPmFkZCgyNDApOworICAgIF80Njcy
LT5hZGQoMTQyKTsKKyAgICBfNDY3Mi0+YWRkKDEwNCk7CisgICAgXzQ2NzItPmFkZCgzMDkpOwor
ICAgIF80NjcyLT5hZGQoMTkyKTsKKyAgICBfNDY3Mi0+YWRkKDExMyk7CisgICAgXzQ2NzItPmFk
ZCgzNDUpOworICAgIF80NjcyLT5hZGQoMTY3KTsKKyAgICBfNDY3Mi0+YWRkKDMzOCk7CisgICAg
XzQ2NzItPmFkZCgyMTYpOworICAgIF80NjcyLT5hZGQoMik7CisgICAgXzQ2NzItPmFkZCgyNDMp
OworICAgIF80NjcyLT5hZGQoMjU4Myk7CisgICAgXzQ2NzItPmFkZCgyNDgpOworICAgIF80Njcy
LT5hZGQoMzU2KTsKKyAgICBfNDY3Mi0+YWRkKDEwMjQpOworICAgIF80NjcyLT5hZGQoMTM5KTsK
KyAgICBfNDY3Mi0+YWRkKDEwMjgpOworICAgIF80NjcyLT5hZGQoMTIzMSk7CisgICAgXzQ2NzIt
PmFkZCgyNzczKTsKKyAgICBfNDY3MS0+YWRkKDIwNCk7CisgICAgXzQ2NzEtPmFkZCgyMzg0KTsK
KyAgICBfNDY3MS0+YWRkKDExMjEpOworICAgIF80NjcxLT5hZGQoMTA2NCk7CisgICAgXzQ2NzEt
PmFkZCgxNTYpOworICAgIF80NjcxLT5hZGQoMTI3Myk7CisgICAgXzQ2NzEtPmFkZCgyNDApOwor
ICAgIF80NjcxLT5hZGQoMTI4KTsKKyAgICBfNDY3MS0+YWRkKDE4MCk7CisgICAgXzQ2NzEtPmFk
ZCgxNzkpOworICAgIF80NjcxLT5hZGQoMTA3NSk7CisgICAgXzQ2NzEtPmFkZCg5NjgpOworICAg
IF80NjcxLT5hZGQoMTQ5KTsKKyAgICBfNDY3MS0+YWRkKDExNDYpOworICAgIF80NjcxLT5hZGQo
OTc0KTsKKyAgICBfNDY3MS0+YWRkKDI3Myk7CisgICAgXzQ2NzEtPmFkZCgyMjgpOworICAgIF80
NjcxLT5hZGQoMTQyKTsKKyAgICBfNDY3MS0+YWRkKDEwNCk7CisgICAgXzQ2NzEtPmFkZCgxMjMx
KTsKKyAgICBfNDY3MS0+YWRkKDMwOSk7CisgICAgXzQ2NzEtPmFkZCgxOTIpOworICAgIF80Njcx
LT5hZGQoMTAyOCk7CisgICAgXzQ2NzEtPmFkZCgxMTMpOworICAgIF80NjcxLT5hZGQoMzQ1KTsK
KyAgICBfNDY3MS0+YWRkKDE2Nyk7CisgICAgXzQ2NzEtPmFkZCgzMzgpOworICAgIF80NjcxLT5h
ZGQoMjE2KTsKKyAgICBfNDY3MS0+YWRkKDEzOSk7CisgICAgXzQ2NzEtPmFkZCgyKTsKKyAgICBf
NDY3MS0+YWRkKDI0Myk7CisgICAgXzQ2NzEtPmFkZCgyNTgzKTsKKyAgICBfNDY3MS0+YWRkKDI0
OCk7CisgICAgXzQ2NzEtPmFkZCgzNTYpOworICAgIF80NjcxLT5hZGQoMTAyNCk7CisgICAgXzQ2
NzQtPmFkZCgyMDQpOworICAgIF80Njc0LT5hZGQoMjM4NCk7CisgICAgXzQ2NzQtPmFkZCgxMTIx
KTsKKyAgICBfNDY3NC0+YWRkKDEwNjQpOworICAgIF80Njc0LT5hZGQoMTU2KTsKKyAgICBfNDY3
NC0+YWRkKDEyNzMpOworICAgIF80Njc0LT5hZGQoMjQwKTsKKyAgICBfNDY3NC0+YWRkKDEyOCk7
CisgICAgXzQ2NzQtPmFkZCgxODApOworICAgIF80Njc0LT5hZGQoMTc5KTsKKyAgICBfNDY3NC0+
YWRkKDEwNzUpOworICAgIF80Njc0LT5hZGQoOTY4KTsKKyAgICBfNDY3NC0+YWRkKDE0OSk7Cisg
ICAgXzQ2NzQtPmFkZCgxMTQ2KTsKKyAgICBfNDY3NC0+YWRkKDk3NCk7CisgICAgXzQ2NzQtPmFk
ZCgyNzMpOworICAgIF80Njc0LT5hZGQoMjI4KTsKKyAgICBfNDY3NC0+YWRkKDE0Mik7CisgICAg
XzQ2NzQtPmFkZCgxMDQpOworICAgIF80Njc0LT5hZGQoMTIzMSk7CisgICAgXzQ2NzQtPmFkZCgz
MDkpOworICAgIF80Njc0LT5hZGQoMTkyKTsKKyAgICBfNDY3NC0+YWRkKDEwMjgpOworICAgIF80
Njc0LT5hZGQoMTEzKTsKKyAgICBfNDY3NC0+YWRkKDM0NSk7CisgICAgXzQ2NzQtPmFkZCgxNjcp
OworICAgIF80Njc0LT5hZGQoMzM4KTsKKyAgICBfNDY3NC0+YWRkKDIxNik7CisgICAgXzQ2NzQt
PmFkZCgxMzkpOworICAgIF80Njc0LT5hZGQoMik7CisgICAgXzQ2NzQtPmFkZCgyNDMpOworICAg
IF80Njc0LT5hZGQoMjU4Myk7CisgICAgXzQ2NzQtPmFkZCgyNDgpOworICAgIF80Njc0LT5hZGQo
MzU2KTsKKyAgICBfNDY3NC0+YWRkKDEwMjQpOworICAgIF80Njc0LT5hZGQoMTM0NSk7CisgICAg
XzQ2NzAtPmFkZCgyMDQpOworICAgIF80NjcwLT5hZGQoMzU2KTsKKyAgICBfNDY3MC0+YWRkKDEx
MjEpOworICAgIF80NjcwLT5hZGQoMTA2NCk7CisgICAgXzQ2NzAtPmFkZCgxNTYpOworICAgIF80
NjcwLT5hZGQoMTM5KTsKKyAgICBfNDY3MC0+YWRkKDEyOCk7CisgICAgXzQ2NzAtPmFkZCgxODAp
OworICAgIF80NjcwLT5hZGQoMTc5KTsKKyAgICBfNDY3MC0+YWRkKDEwNzUpOworICAgIF80Njcw
LT5hZGQoOTY4KTsKKyAgICBfNDY3MC0+YWRkKDE0OSk7CisgICAgXzQ2NzAtPmFkZCgxMTQ2KTsK
KyAgICBfNDY3MC0+YWRkKDk3NCk7CisgICAgXzQ2NzAtPmFkZCgyNzMpOworICAgIF80NjcwLT5h
ZGQoMjI4KTsKKyAgICBfNDY3MC0+YWRkKDI0MCk7CisgICAgXzQ2NzAtPmFkZCgxNDIpOworICAg
IF80NjcwLT5hZGQoMTA0KTsKKyAgICBfNDY3MC0+YWRkKDEwMjQpOworICAgIF80NjcwLT5hZGQo
MzA5KTsKKyAgICBfNDY3MC0+YWRkKDE5Mik7CisgICAgXzQ2NzAtPmFkZCgxMDI4KTsKKyAgICBf
NDY3MC0+YWRkKDExMyk7CisgICAgXzQ2NzAtPmFkZCgzNDUpOworICAgIF80NjcwLT5hZGQoMTY3
KTsKKyAgICBfNDY3MC0+YWRkKDMzOCk7CisgICAgXzQ2NzAtPmFkZCgyMTYpOworICAgIF80Njcw
LT5hZGQoMik7CisgICAgXzQ2NzAtPmFkZCgyNDMpOworICAgIF80NjcwLT5hZGQoMjU4Myk7Cisg
ICAgXzQ2NzAtPmFkZCgyNDgpOworICAgIF80NjcwLT5hZGQoMjc3Mik7CisgICAgXzQ2NjktPmFk
ZCgyMDQpOworICAgIF80NjY5LT5hZGQoMzU2KTsKKyAgICBfNDY2OS0+YWRkKDExMjEpOworICAg
IF80NjY5LT5hZGQoMTA2NCk7CisgICAgXzQ2NjktPmFkZCgxNTYpOworICAgIF80NjY5LT5hZGQo
MTM5KTsKKyAgICBfNDY2OS0+YWRkKDEyOCk7CisgICAgXzQ2NjktPmFkZCgxODApOworICAgIF80
NjY5LT5hZGQoMTc5KTsKKyAgICBfNDY2OS0+YWRkKDEwNzUpOworICAgIF80NjY5LT5hZGQoOTY4
KTsKKyAgICBfNDY2OS0+YWRkKDE0OSk7CisgICAgXzQ2NjktPmFkZCgxMTQ2KTsKKyAgICBfNDY2
OS0+YWRkKDk3NCk7CisgICAgXzQ2NjktPmFkZCgyNzMpOworICAgIF80NjY5LT5hZGQoMjI4KTsK
KyAgICBfNDY2OS0+YWRkKDI0MCk7CisgICAgXzQ2NjktPmFkZCgxNDIpOworICAgIF80NjY5LT5h
ZGQoMTA0KTsKKyAgICBfNDY2OS0+YWRkKDEwMjQpOworICAgIF80NjY5LT5hZGQoMzA5KTsKKyAg
ICBfNDY2OS0+YWRkKDE5Mik7CisgICAgXzQ2NjktPmFkZCgxMDI4KTsKKyAgICBfNDY2OS0+YWRk
KDExMyk7CisgICAgXzQ2NjktPmFkZCgzNDUpOworICAgIF80NjY5LT5hZGQoMTY3KTsKKyAgICBf
NDY2OS0+YWRkKDMzOCk7CisgICAgXzQ2NjktPmFkZCgyMTYpOworICAgIF80NjY5LT5hZGQoMik7
CisgICAgXzQ2NjktPmFkZCgyNDMpOworICAgIF80NjY5LT5hZGQoMjU4Myk7CisgICAgXzQ2Njkt
PmFkZCgyNDgpOworICAgIF80NjY5LT5hZGQoMjc3Mik7CisgICAgXzQ2NjgtPmFkZCgyMDQpOwor
ICAgIF80NjY4LT5hZGQoMTEyMSk7CisgICAgXzQ2NjgtPmFkZCgxMDY0KTsKKyAgICBfNDY2OC0+
YWRkKDE1Nik7CisgICAgXzQ2NjgtPmFkZCgxMjgpOworICAgIF80NjY4LT5hZGQoMTgwKTsKKyAg
ICBfNDY2OC0+YWRkKDE3OSk7CisgICAgXzQ2NjgtPmFkZCgxMDc1KTsKKyAgICBfNDY2OC0+YWRk
KDk2OCk7CisgICAgXzQ2NjgtPmFkZCgyNDApOworICAgIF80NjY4LT5hZGQoMTQ5KTsKKyAgICBf
NDY2OC0+YWRkKDExNDYpOworICAgIF80NjY4LT5hZGQoOTc0KTsKKyAgICBfNDY2OC0+YWRkKDI3
Myk7CisgICAgXzQ2NjgtPmFkZCgyMjgpOworICAgIF80NjY4LT5hZGQoMTQyKTsKKyAgICBfNDY2
OC0+YWRkKDEwNCk7CisgICAgXzQ2NjgtPmFkZCgzNTYpOworICAgIF80NjY4LT5hZGQoMzA5KTsK
KyAgICBfNDY2OC0+YWRkKDE5Mik7CisgICAgXzQ2NjgtPmFkZCgxMDI4KTsKKyAgICBfNDY2OC0+
YWRkKDExMyk7CisgICAgXzQ2NjgtPmFkZCgzNDUpOworICAgIF80NjY4LT5hZGQoMTY3KTsKKyAg
ICBfNDY2OC0+YWRkKDMzOCk7CisgICAgXzQ2NjgtPmFkZCgyMTYpOworICAgIF80NjY4LT5hZGQo
Mik7CisgICAgXzQ2NjgtPmFkZCgyNDMpOworICAgIF80NjY4LT5hZGQoMjU4Myk7CisgICAgXzQ2
NjgtPmFkZCgyNDgpOworICAgIF80NjY4LT5hZGQoMTM5KTsKKyAgICBfNDY2OC0+YWRkKDEwMjQp
OworICAgIF80Njc3LT5hZGQoMjA0KTsKKyAgICBfNDY3Ny0+YWRkKDExMjEpOworICAgIF80Njc3
LT5hZGQoMTA2NCk7CisgICAgXzQ2NzctPmFkZCgxNTYpOworICAgIF80Njc3LT5hZGQoMTI4KTsK
KyAgICBfNDY3Ny0+YWRkKDE4MCk7CisgICAgXzQ2NzctPmFkZCgxNzkpOworICAgIF80Njc3LT5h
ZGQoMTA3NSk7CisgICAgXzQ2NzctPmFkZCg5NjgpOworICAgIF80Njc3LT5hZGQoMjQwKTsKKyAg
ICBfNDY3Ny0+YWRkKDE0OSk7CisgICAgXzQ2NzctPmFkZCgxMTQ2KTsKKyAgICBfNDY3Ny0+YWRk
KDk3NCk7CisgICAgXzQ2NzctPmFkZCgyNzMpOworICAgIF80Njc3LT5hZGQoMjI4KTsKKyAgICBf
NDY3Ny0+YWRkKDE0Mik7CisgICAgXzQ2NzctPmFkZCgxMDQpOworICAgIF80Njc3LT5hZGQoMzU2
KTsKKyAgICBfNDY3Ny0+YWRkKDMwOSk7CisgICAgXzQ2NzctPmFkZCgxOTIpOworICAgIF80Njc3
LT5hZGQoMTAyOCk7CisgICAgXzQ2NzctPmFkZCgxMTMpOworICAgIF80Njc3LT5hZGQoMzQ1KTsK
KyAgICBfNDY3Ny0+YWRkKDE2Nyk7CisgICAgXzQ2NzctPmFkZCgzMzgpOworICAgIF80Njc3LT5h
ZGQoMjE2KTsKKyAgICBfNDY3Ny0+YWRkKDIpOworICAgIF80Njc3LT5hZGQoMjQzKTsKKyAgICBf
NDY3Ny0+YWRkKDI1ODMpOworICAgIF80Njc3LT5hZGQoMjQ4KTsKKyAgICBfNDY3Ny0+YWRkKDEz
OSk7CisgICAgXzQ2NzctPmFkZCgxMDI0KTsKKyAgICBfNDY3Ny0+YWRkKDEzNzEpOworICAgIF80
NjY2LT5hZGQoMjA0KTsKKyAgICBfNDY2Ni0+YWRkKDExMjEpOworICAgIF80NjY2LT5hZGQoMTA2
NCk7CisgICAgXzQ2NjYtPmFkZCgxMjgpOworICAgIF80NjY2LT5hZGQoMTgwKTsKKyAgICBfNDY2
Ni0+YWRkKDE3OSk7CisgICAgXzQ2NjYtPmFkZCgyNTgzKTsKKyAgICBfNDY2Ni0+YWRkKDEwNzUp
OworICAgIF80NjY2LT5hZGQoOTY4KTsKKyAgICBfNDY2Ni0+YWRkKDE0OSk7CisgICAgXzQ2NjYt
PmFkZCgxMTQ2KTsKKyAgICBfNDY2Ni0+YWRkKDk3NCk7CisgICAgXzQ2NjYtPmFkZCgyNzMpOwor
ICAgIF80NjY2LT5hZGQoMjQzKTsKKyAgICBfNDY2Ni0+YWRkKDIyOCk7CisgICAgXzQ2NjYtPmFk
ZCgyNDApOworICAgIF80NjY2LT5hZGQoMTQyKTsKKyAgICBfNDY2Ni0+YWRkKDEwNCk7CisgICAg
XzQ2NjYtPmFkZCgzNTYpOworICAgIF80NjY2LT5hZGQoMzA5KTsKKyAgICBfNDY2Ni0+YWRkKDE5
Mik7CisgICAgXzQ2NjYtPmFkZCgxMTMpOworICAgIF80NjY2LT5hZGQoMzQ1KTsKKyAgICBfNDY2
Ni0+YWRkKDE2Nyk7CisgICAgXzQ2NjYtPmFkZCgzMzgpOworICAgIF80NjY2LT5hZGQoMjE2KTsK
KyAgICBfNDY2Ni0+YWRkKDEwMjgpOworICAgIF80NjY2LT5hZGQoMik7CisgICAgXzQ2NjYtPmFk
ZCgyNDgpOworICAgIF80NjY2LT5hZGQoMTM5KTsKKyAgICBfNDY2Ni0+YWRkKDEwMjQpOworICAg
IF80NjY2LT5hZGQoMTU2KTsKKyAgICBfNDY2Ny0+YWRkKDIwNCk7CisgICAgXzQ2NjctPmFkZCgx
MTIxKTsKKyAgICBfNDY2Ny0+YWRkKDEwNjQpOworICAgIF80NjY3LT5hZGQoMTI4KTsKKyAgICBf
NDY2Ny0+YWRkKDE4MCk7CisgICAgXzQ2NjctPmFkZCgxNzkpOworICAgIF80NjY3LT5hZGQoMjU4
Myk7CisgICAgXzQ2NjctPmFkZCgxMDc1KTsKKyAgICBfNDY2Ny0+YWRkKDk2OCk7CisgICAgXzQ2
NjctPmFkZCgxNDkpOworICAgIF80NjY3LT5hZGQoMTE0Nik7CisgICAgXzQ2NjctPmFkZCg5NzQp
OworICAgIF80NjY3LT5hZGQoMjczKTsKKyAgICBfNDY2Ny0+YWRkKDI0Myk7CisgICAgXzQ2Njct
PmFkZCgyMjgpOworICAgIF80NjY3LT5hZGQoMjQwKTsKKyAgICBfNDY2Ny0+YWRkKDE0Mik7Cisg
ICAgXzQ2NjctPmFkZCgxMDQpOworICAgIF80NjY3LT5hZGQoMzU2KTsKKyAgICBfNDY2Ny0+YWRk
KDMwOSk7CisgICAgXzQ2NjctPmFkZCgxOTIpOworICAgIF80NjY3LT5hZGQoMTEzKTsKKyAgICBf
NDY2Ny0+YWRkKDM0NSk7CisgICAgXzQ2NjctPmFkZCgxNjcpOworICAgIF80NjY3LT5hZGQoMzM4
KTsKKyAgICBfNDY2Ny0+YWRkKDIxNik7CisgICAgXzQ2NjctPmFkZCgxMDI4KTsKKyAgICBfNDY2
Ny0+YWRkKDIpOworICAgIF80NjY3LT5hZGQoMjQ4KTsKKyAgICBfNDY2Ny0+YWRkKDEzOSk7Cisg
ICAgXzQ2NjctPmFkZCgxMDI0KTsKKyAgICBfNDY2Ny0+YWRkKDE1Nik7CisgICAgXzQ2NjUtPmFk
ZCgyMDQpOworICAgIF80NjY1LT5hZGQoMTEyMSk7CisgICAgXzQ2NjUtPmFkZCgxMDY0KTsKKyAg
ICBfNDY2NS0+YWRkKDEyOCk7CisgICAgXzQ2NjUtPmFkZCgxODApOworICAgIF80NjY1LT5hZGQo
MTc5KTsKKyAgICBfNDY2NS0+YWRkKDI1ODMpOworICAgIF80NjY1LT5hZGQoMTA3NSk7CisgICAg
XzQ2NjUtPmFkZCg5NjgpOworICAgIF80NjY1LT5hZGQoMTQ5KTsKKyAgICBfNDY2NS0+YWRkKDEx
NDYpOworICAgIF80NjY1LT5hZGQoOTc0KTsKKyAgICBfNDY2NS0+YWRkKDI3Myk7CisgICAgXzQ2
NjUtPmFkZCgyNDMpOworICAgIF80NjY1LT5hZGQoMjI4KTsKKyAgICBfNDY2NS0+YWRkKDI0MCk7
CisgICAgXzQ2NjUtPmFkZCgxNDIpOworICAgIF80NjY1LT5hZGQoMTA0KTsKKyAgICBfNDY2NS0+
YWRkKDM1Nik7CisgICAgXzQ2NjUtPmFkZCgzMDkpOworICAgIF80NjY1LT5hZGQoMTkyKTsKKyAg
ICBfNDY2NS0+YWRkKDExMyk7CisgICAgXzQ2NjUtPmFkZCgzNDUpOworICAgIF80NjY1LT5hZGQo
MTY3KTsKKyAgICBfNDY2NS0+YWRkKDMzOCk7CisgICAgXzQ2NjUtPmFkZCgyMTYpOworICAgIF80
NjY1LT5hZGQoMTAyOCk7CisgICAgXzQ2NjUtPmFkZCgyKTsKKyAgICBfNDY2NS0+YWRkKDI0OCk7
CisgICAgXzQ2NjUtPmFkZCgxMzkpOworICAgIF80NjY1LT5hZGQoMTAyNCk7CisgICAgXzQ2NjUt
PmFkZCgxNTYpOworICAgIF80NjYyLT5hZGQoMjA0KTsKKyAgICBfNDY2Mi0+YWRkKDExMjEpOwor
ICAgIF80NjYyLT5hZGQoMTA2NCk7CisgICAgXzQ2NjItPmFkZCgxMjgpOworICAgIF80NjYyLT5h
ZGQoMTgwKTsKKyAgICBfNDY2Mi0+YWRkKDE3OSk7CisgICAgXzQ2NjItPmFkZCgyNTgzKTsKKyAg
ICBfNDY2Mi0+YWRkKDEwNzUpOworICAgIF80NjYyLT5hZGQoOTY4KTsKKyAgICBfNDY2Mi0+YWRk
KDE0OSk7CisgICAgXzQ2NjItPmFkZCgxMTQ2KTsKKyAgICBfNDY2Mi0+YWRkKDk3NCk7CisgICAg
XzQ2NjItPmFkZCgyNzMpOworICAgIF80NjYyLT5hZGQoMjQzKTsKKyAgICBfNDY2Mi0+YWRkKDIy
OCk7CisgICAgXzQ2NjItPmFkZCgyNDApOworICAgIF80NjYyLT5hZGQoMTQyKTsKKyAgICBfNDY2
Mi0+YWRkKDEwNCk7CisgICAgXzQ2NjItPmFkZCgzNTYpOworICAgIF80NjYyLT5hZGQoMzA5KTsK
KyAgICBfNDY2Mi0+YWRkKDE5Mik7CisgICAgXzQ2NjItPmFkZCgxMTMpOworICAgIF80NjYyLT5h
ZGQoMzQ1KTsKKyAgICBfNDY2Mi0+YWRkKDE2Nyk7CisgICAgXzQ2NjItPmFkZCgzMzgpOworICAg
IF80NjYyLT5hZGQoMjE2KTsKKyAgICBfNDY2Mi0+YWRkKDEwMjgpOworICAgIF80NjYyLT5hZGQo
Mik7CisgICAgXzQ2NjItPmFkZCgyNDgpOworICAgIF80NjYyLT5hZGQoMTM5KTsKKyAgICBfNDY2
Mi0+YWRkKDEwMjQpOworICAgIF80NjYyLT5hZGQoMTU2KTsKKyAgICBfNDY2My0+YWRkKDIwNCk7
CisgICAgXzQ2NjMtPmFkZCgxMTIxKTsKKyAgICBfNDY2My0+YWRkKDEwNjQpOworICAgIF80NjYz
LT5hZGQoMTI4KTsKKyAgICBfNDY2My0+YWRkKDE4MCk7CisgICAgXzQ2NjMtPmFkZCgxNzkpOwor
ICAgIF80NjYzLT5hZGQoMjU4Myk7CisgICAgXzQ2NjMtPmFkZCgxMDc1KTsKKyAgICBfNDY2My0+
YWRkKDk2OCk7CisgICAgXzQ2NjMtPmFkZCgxNDkpOworICAgIF80NjYzLT5hZGQoMTE0Nik7Cisg
ICAgXzQ2NjMtPmFkZCg5NzQpOworICAgIF80NjYzLT5hZGQoMjczKTsKKyAgICBfNDY2My0+YWRk
KDI0Myk7CisgICAgXzQ2NjMtPmFkZCgyMjgpOworICAgIF80NjYzLT5hZGQoMjQwKTsKKyAgICBf
NDY2My0+YWRkKDE0Mik7CisgICAgXzQ2NjMtPmFkZCgxMDQpOworICAgIF80NjYzLT5hZGQoMzU2
KTsKKyAgICBfNDY2My0+YWRkKDMwOSk7CisgICAgXzQ2NjMtPmFkZCgxOTIpOworICAgIF80NjYz
LT5hZGQoMTEzKTsKKyAgICBfNDY2My0+YWRkKDM0NSk7CisgICAgXzQ2NjMtPmFkZCgxNjcpOwor
ICAgIF80NjYzLT5hZGQoMzM4KTsKKyAgICBfNDY2My0+YWRkKDIxNik7CisgICAgXzQ2NjMtPmFk
ZCgxMDI4KTsKKyAgICBfNDY2My0+YWRkKDIpOworICAgIF80NjYzLT5hZGQoMjQ4KTsKKyAgICBf
NDY2My0+YWRkKDEzOSk7CisgICAgXzQ2NjMtPmFkZCgxMDI0KTsKKyAgICBfNDY2My0+YWRkKDE1
Nik7CisgICAgXzQ2NjMtPmFkZCgxMDc5KTsKKyAgICBfNDY2My0+YWRkKDI3NzEpOworICAgIF80
NjY0LT5hZGQoMjA0KTsKKyAgICBfNDY2NC0+YWRkKDExMjEpOworICAgIF80NjY0LT5hZGQoMTA2
NCk7CisgICAgXzQ2NjQtPmFkZCgxMjgpOworICAgIF80NjY0LT5hZGQoMTgwKTsKKyAgICBfNDY2
NC0+YWRkKDE3OSk7CisgICAgXzQ2NjQtPmFkZCgyNTgzKTsKKyAgICBfNDY2NC0+YWRkKDEwNzUp
OworICAgIF80NjY0LT5hZGQoOTY4KTsKKyAgICBfNDY2NC0+YWRkKDE0OSk7CisgICAgXzQ2NjQt
PmFkZCgxMTQ2KTsKKyAgICBfNDY2NC0+YWRkKDk3NCk7CisgICAgXzQ2NjQtPmFkZCgyNzMpOwor
ICAgIF80NjY0LT5hZGQoMjQzKTsKKyAgICBfNDY2NC0+YWRkKDIyOCk7CisgICAgXzQ2NjQtPmFk
ZCgyNDApOworICAgIF80NjY0LT5hZGQoMTQyKTsKKyAgICBfNDY2NC0+YWRkKDEwNCk7CisgICAg
XzQ2NjQtPmFkZCgzNTYpOworICAgIF80NjY0LT5hZGQoMzA5KTsKKyAgICBfNDY2NC0+YWRkKDE5
Mik7CisgICAgXzQ2NjQtPmFkZCgxMTMpOworICAgIF80NjY0LT5hZGQoMzQ1KTsKKyAgICBfNDY2
NC0+YWRkKDE2Nyk7CisgICAgXzQ2NjQtPmFkZCgzMzgpOworICAgIF80NjY0LT5hZGQoMjE2KTsK
KyAgICBfNDY2NC0+YWRkKDEwMjgpOworICAgIF80NjY0LT5hZGQoMik7CisgICAgXzQ2NjQtPmFk
ZCgyNDgpOworICAgIF80NjY0LT5hZGQoMTM5KTsKKyAgICBfNDY2NC0+YWRkKDEwMjQpOworICAg
IF80NjY0LT5hZGQoMTU2KTsKKyAgICBfNDY2NC0+YWRkKDEwNzkpOworICAgIF80NjY0LT5hZGQo
Mjc3MSk7CisgICAgXzQ2NjUtPmFkZCgyMDQpOworICAgIF80NjY1LT5hZGQoMTEyMSk7CisgICAg
XzQ2NjUtPmFkZCgxMDY0KTsKKyAgICBfNDY2NS0+YWRkKDEyOCk7CisgICAgXzQ2NjUtPmFkZCgx
ODApOworICAgIF80NjY1LT5hZGQoMTc5KTsKKyAgICBfNDY2NS0+YWRkKDI1ODMpOworICAgIF80
NjY1LT5hZGQoMTU2KTsKKyAgICBfNDY2NS0+YWRkKDEwNzUpOworICAgIF80NjY1LT5hZGQoMTA3
OSk7CisgICAgXzQ2NjUtPmFkZCg5NjgpOworICAgIF80NjY1LT5hZGQoMTQ5KTsKKyAgICBfNDY2
NS0+YWRkKDExNDYpOworICAgIF80NjY1LT5hZGQoOTc0KTsKKyAgICBfNDY2NS0+YWRkKDI3Myk7
CisgICAgXzQ2NjUtPmFkZCgyNDMpOworICAgIF80NjY1LT5hZGQoMjI4KTsKKyAgICBfNDY2NS0+
YWRkKDI0MCk7CisgICAgXzQ2NjUtPmFkZCgxNDIpOworICAgIF80NjY1LT5hZGQoMTA0KTsKKyAg
ICBfNDY2NS0+YWRkKDM1Nik7CisgICAgXzQ2NjUtPmFkZCgzMDkpOworICAgIF80NjY1LT5hZGQo
MTkyKTsKKyAgICBfNDY2NS0+YWRkKDExMyk7CisgICAgXzQ2NjUtPmFkZCgzNDUpOworICAgIF80
NjY1LT5hZGQoMTY3KTsKKyAgICBfNDY2NS0+YWRkKDMzOCk7CisgICAgXzQ2NjUtPmFkZCgyMTYp
OworICAgIF80NjY1LT5hZGQoMTAyOCk7CisgICAgXzQ2NjUtPmFkZCgyKTsKKyAgICBfNDY2NS0+
YWRkKDI0OCk7CisgICAgXzQ2NjUtPmFkZCgxMzkpOworICAgIF80NjY1LT5hZGQoMTAyNCk7Cisg
ICAgXzQ2NjUtPmFkZCgxMTkzKTsKKyAgICBfNDY2Mi0+YWRkKDIwNCk7CisgICAgXzQ2NjItPmFk
ZCgxMTIxKTsKKyAgICBfNDY2Mi0+YWRkKDEwNjQpOworICAgIF80NjYyLT5hZGQoMTI4KTsKKyAg
ICBfNDY2Mi0+YWRkKDE4MCk7CisgICAgXzQ2NjItPmFkZCgxNzkpOworICAgIF80NjYyLT5hZGQo
MjU4Myk7CisgICAgXzQ2NjItPmFkZCgxNTYpOworICAgIF80NjYyLT5hZGQoMTA3NSk7CisgICAg
XzQ2NjItPmFkZCgxMDc5KTsKKyAgICBfNDY2Mi0+YWRkKDk2OCk7CisgICAgXzQ2NjItPmFkZCgx
NDkpOworICAgIF80NjYyLT5hZGQoMTE0Nik7CisgICAgXzQ2NjItPmFkZCg5NzQpOworICAgIF80
NjYyLT5hZGQoMjczKTsKKyAgICBfNDY2Mi0+YWRkKDI0Myk7CisgICAgXzQ2NjItPmFkZCgyMjgp
OworICAgIF80NjYyLT5hZGQoMjQwKTsKKyAgICBfNDY2Mi0+YWRkKDE0Mik7CisgICAgXzQ2NjIt
PmFkZCgxMDQpOworICAgIF80NjYyLT5hZGQoMzU2KTsKKyAgICBfNDY2Mi0+YWRkKDMwOSk7Cisg
ICAgXzQ2NjItPmFkZCgxOTIpOworICAgIF80NjYyLT5hZGQoMTEzKTsKKyAgICBfNDY2Mi0+YWRk
KDM0NSk7CisgICAgXzQ2NjItPmFkZCgxNjcpOworICAgIF80NjYyLT5hZGQoMzM4KTsKKyAgICBf
NDY2Mi0+YWRkKDIxNik7CisgICAgXzQ2NjItPmFkZCgxMDI4KTsKKyAgICBfNDY2Mi0+YWRkKDIp
OworICAgIF80NjYyLT5hZGQoMjQ4KTsKKyAgICBfNDY2Mi0+YWRkKDEzOSk7CisgICAgXzQ2NjIt
PmFkZCgxMDI0KTsKKyAgICBfNDY2MS0+YWRkKDIwNCk7CisgICAgXzQ2NjEtPmFkZCgxNTYpOwor
ICAgIF80NjYxLT5hZGQoMTM5KTsKKyAgICBfNDY2MS0+YWRkKDEyOCk7CisgICAgXzQ2NjEtPmFk
ZCgxODApOworICAgIF80NjYxLT5hZGQoMTc5KTsKKyAgICBfNDY2MS0+YWRkKDI1ODMpOworICAg
IF80NjYxLT5hZGQoMTA3NSk7CisgICAgXzQ2NjEtPmFkZCgyKTsKKyAgICBfNDY2MS0+YWRkKDk2
OCk7CisgICAgXzQ2NjEtPmFkZCgxNDkpOworICAgIF80NjYxLT5hZGQoMTE0Nik7CisgICAgXzQ2
NjEtPmFkZCg5NzQpOworICAgIF80NjYxLT5hZGQoMjczKTsKKyAgICBfNDY2MS0+YWRkKDI0Myk7
CisgICAgXzQ2NjEtPmFkZCgyMjgpOworICAgIF80NjYxLT5hZGQoMjQwKTsKKyAgICBfNDY2MS0+
YWRkKDE0Mik7CisgICAgXzQ2NjEtPmFkZCgxMDQpOworICAgIF80NjYxLT5hZGQoMzU2KTsKKyAg
ICBfNDY2MS0+YWRkKDMwOSk7CisgICAgXzQ2NjEtPmFkZCgxOTIpOworICAgIF80NjYxLT5hZGQo
MTEzKTsKKyAgICBfNDY2MS0+YWRkKDM0NSk7CisgICAgXzQ2NjEtPmFkZCgxNjcpOworICAgIF80
NjYxLT5hZGQoMzM4KTsKKyAgICBfNDY2MS0+YWRkKDIxNik7CisgICAgXzQ2NjEtPmFkZCgyNDgp
OworICAgIF80NjU5LT5hZGQoMjA0KTsKKyAgICBfNDY1OS0+YWRkKDI3Myk7CisgICAgXzQ2NTkt
PmFkZCgyMjgpOworICAgIF80NjU5LT5hZGQoMjQwKTsKKyAgICBfNDY1OS0+YWRkKDE0Mik7Cisg
ICAgXzQ2NTktPmFkZCgxMDQpOworICAgIF80NjU5LT5hZGQoMzA5KTsKKyAgICBfNDY1OS0+YWRk
KDE5Mik7CisgICAgXzQ2NTktPmFkZCgxNTYpOworICAgIF80NjU5LT5hZGQoMTEzKTsKKyAgICBf
NDY1OS0+YWRkKDEyOCk7CisgICAgXzQ2NTktPmFkZCgxODApOworICAgIF80NjU5LT5hZGQoMTc5
KTsKKyAgICBfNDY1OS0+YWRkKDI1ODMpOworICAgIF80NjU5LT5hZGQoMzQ1KTsKKyAgICBfNDY1
OS0+YWRkKDE2Nyk7CisgICAgXzQ2NTktPmFkZCgzMzgpOworICAgIF80NjU5LT5hZGQoMjE2KTsK
KyAgICBfNDY1OS0+YWRkKDI0Myk7CisgICAgXzQ2NTktPmFkZCgxMDc1KTsKKyAgICBfNDY1OS0+
YWRkKDIpOworICAgIF80NjU5LT5hZGQoMjQ4KTsKKyAgICBfNDY1OS0+YWRkKDM1Nik7CisgICAg
XzQ2NTktPmFkZCg5NjgpOworICAgIF80NjU5LT5hZGQoMTQ5KTsKKyAgICBfNDY1OS0+YWRkKDEz
OSk7CisgICAgXzQ2NTktPmFkZCgxMTQ2KTsKKyAgICBfNDY1OS0+YWRkKDk3NCk7CisgICAgXzQ2
NTktPmFkZCgyNTMpOworICAgIF80NjU5LT5hZGQoOTkyKTsKKyAgICBfNDY1OS0+YWRkKDI3NzAp
OworICAgIF80NjU5LT5hZGQoMjc2OSk7CisgICAgXzQ2NjAtPmFkZCgyMDQpOworICAgIF80NjYw
LT5hZGQoMjczKTsKKyAgICBfNDY2MC0+YWRkKDIyOCk7CisgICAgXzQ2NjAtPmFkZCgyNDApOwor
ICAgIF80NjYwLT5hZGQoMTQyKTsKKyAgICBfNDY2MC0+YWRkKDEwNCk7CisgICAgXzQ2NjAtPmFk
ZCgzMDkpOworICAgIF80NjYwLT5hZGQoMTkyKTsKKyAgICBfNDY2MC0+YWRkKDE1Nik7CisgICAg
XzQ2NjAtPmFkZCgxMTMpOworICAgIF80NjYwLT5hZGQoMTI4KTsKKyAgICBfNDY2MC0+YWRkKDE4
MCk7CisgICAgXzQ2NjAtPmFkZCgxNzkpOworICAgIF80NjYwLT5hZGQoMjU4Myk7CisgICAgXzQ2
NjAtPmFkZCgzNDUpOworICAgIF80NjYwLT5hZGQoMTY3KTsKKyAgICBfNDY2MC0+YWRkKDMzOCk7
CisgICAgXzQ2NjAtPmFkZCgyMTYpOworICAgIF80NjYwLT5hZGQoMjQzKTsKKyAgICBfNDY2MC0+
YWRkKDEwNzUpOworICAgIF80NjYwLT5hZGQoMik7CisgICAgXzQ2NjAtPmFkZCgyNDgpOworICAg
IF80NjYwLT5hZGQoMzU2KTsKKyAgICBfNDY2MC0+YWRkKDk2OCk7CisgICAgXzQ2NjAtPmFkZCgx
NDkpOworICAgIF80NjYwLT5hZGQoMTM5KTsKKyAgICBfNDY2MC0+YWRkKDExNDYpOworICAgIF80
NjYwLT5hZGQoOTc0KTsKKyAgICBfNDY2MC0+YWRkKDI1Myk7CisgICAgXzQ2NjAtPmFkZCg5OTIp
OworICAgIF80NjYwLT5hZGQoMjc3MCk7CisgICAgXzQ2NjAtPmFkZCgyNzY5KTsKKyAgICBfNDY2
MS0+YWRkKDIwNCk7CisgICAgXzQ2NjEtPmFkZCg5OTIpOworICAgIF80NjYxLT5hZGQoMTU2KTsK
KyAgICBfNDY2MS0+YWRkKDEyOCk7CisgICAgXzQ2NjEtPmFkZCgxODApOworICAgIF80NjYxLT5h
ZGQoMTc5KTsKKyAgICBfNDY2MS0+YWRkKDI1ODMpOworICAgIF80NjYxLT5hZGQoMjUzKTsKKyAg
ICBfNDY2MS0+YWRkKDEwNzUpOworICAgIF80NjYxLT5hZGQoOTY4KTsKKyAgICBfNDY2MS0+YWRk
KDE0OSk7CisgICAgXzQ2NjEtPmFkZCgxMTQ2KTsKKyAgICBfNDY2MS0+YWRkKDk3NCk7CisgICAg
XzQ2NjEtPmFkZCgyNzMpOworICAgIF80NjYxLT5hZGQoMjI4KTsKKyAgICBfNDY2MS0+YWRkKDE0
Mik7CisgICAgXzQ2NjEtPmFkZCgxMDQpOworICAgIF80NjYxLT5hZGQoMzU2KTsKKyAgICBfNDY2
MS0+YWRkKDMwOSk7CisgICAgXzQ2NjEtPmFkZCgxOTIpOworICAgIF80NjYxLT5hZGQoMTEzKTsK
KyAgICBfNDY2MS0+YWRkKDI0MCk7CisgICAgXzQ2NjEtPmFkZCgxMDEwKTsKKyAgICBfNDY2MS0+
YWRkKDM0NSk7CisgICAgXzQ2NjEtPmFkZCgxNjcpOworICAgIF80NjYxLT5hZGQoMzM4KTsKKyAg
ICBfNDY2MS0+YWRkKDIxNik7CisgICAgXzQ2NjEtPmFkZCgyNDMpOworICAgIF80NjYxLT5hZGQo
Mik7CisgICAgXzQ2NjEtPmFkZCgyNDgpOworICAgIF80NjYxLT5hZGQoMTM5KTsKKyAgICBfNDY1
OC0+YWRkKDIwNCk7CisgICAgXzQ2NTgtPmFkZCg5OTIpOworICAgIF80NjU4LT5hZGQoMTU2KTsK
KyAgICBfNDY1OC0+YWRkKDEyOCk7CisgICAgXzQ2NTgtPmFkZCgxODApOworICAgIF80NjU4LT5h
ZGQoMTc5KTsKKyAgICBfNDY1OC0+YWRkKDI1ODMpOworICAgIF80NjU4LT5hZGQoMjUzKTsKKyAg
ICBfNDY1OC0+YWRkKDEwNzUpOworICAgIF80NjU4LT5hZGQoOTY4KTsKKyAgICBfNDY1OC0+YWRk
KDE0OSk7CisgICAgXzQ2NTgtPmFkZCgxMTQ2KTsKKyAgICBfNDY1OC0+YWRkKDEzOSk7CisgICAg
XzQ2NTgtPmFkZCgyNzMpOworICAgIF80NjU4LT5hZGQoMjI4KTsKKyAgICBfNDY1OC0+YWRkKDE0
Mik7CisgICAgXzQ2NTgtPmFkZCgxMDQpOworICAgIF80NjU4LT5hZGQoMzU2KTsKKyAgICBfNDY1
OC0+YWRkKDMwOSk7CisgICAgXzQ2NTgtPmFkZCgxOTIpOworICAgIF80NjU4LT5hZGQoMTEzKTsK
KyAgICBfNDY1OC0+YWRkKDI0MCk7CisgICAgXzQ2NTgtPmFkZCg5MzUpOworICAgIF80NjU4LT5h
ZGQoMzQ1KTsKKyAgICBfNDY1OC0+YWRkKDE2Nyk7CisgICAgXzQ2NTgtPmFkZCgzMzgpOworICAg
IF80NjU4LT5hZGQoMjE2KTsKKyAgICBfNDY1OC0+YWRkKDI0Myk7CisgICAgXzQ2NTgtPmFkZCgy
KTsKKyAgICBfNDY1OC0+YWRkKDI0OCk7CisgICAgXzQ2NTgtPmFkZCgyODIpOworICAgIF80NjU3
LT5hZGQoMjA0KTsKKyAgICBfNDY1Ny0+YWRkKDI3Myk7CisgICAgXzQ2NTctPmFkZCg5MzUpOwor
ICAgIF80NjU3LT5hZGQoMjI4KTsKKyAgICBfNDY1Ny0+YWRkKDI0MCk7CisgICAgXzQ2NTctPmFk
ZCgxNDIpOworICAgIF80NjU3LT5hZGQoOTkyKTsKKyAgICBfNDY1Ny0+YWRkKDMwOSk7CisgICAg
XzQ2NTctPmFkZCgxOTIpOworICAgIF80NjU3LT5hZGQoMTU2KTsKKyAgICBfNDY1Ny0+YWRkKDEx
Myk7CisgICAgXzQ2NTctPmFkZCgxMjgpOworICAgIF80NjU3LT5hZGQoMTgwKTsKKyAgICBfNDY1
Ny0+YWRkKDE3OSk7CisgICAgXzQ2NTctPmFkZCgzNDUpOworICAgIF80NjU3LT5hZGQoMTY3KTsK
KyAgICBfNDY1Ny0+YWRkKDMzOCk7CisgICAgXzQ2NTctPmFkZCgyMTYpOworICAgIF80NjU3LT5h
ZGQoMjUzKTsKKyAgICBfNDY1Ny0+YWRkKDEwNCk7CisgICAgXzQ2NTctPmFkZCgyKTsKKyAgICBf
NDY1Ny0+YWRkKDI0Myk7CisgICAgXzQ2NTctPmFkZCgxMDc1KTsKKyAgICBfNDY1Ny0+YWRkKDI1
ODMpOworICAgIF80NjU3LT5hZGQoMjQ4KTsKKyAgICBfNDY1Ny0+YWRkKDM1Nik7CisgICAgXzQ2
NTctPmFkZCg5NjgpOworICAgIF80NjU3LT5hZGQoMjgyKTsKKyAgICBfNDY1Ny0+YWRkKDE0OSk7
CisgICAgXzQ2NTctPmFkZCgxMzkpOworICAgIF80NjU3LT5hZGQoMTE0Nik7CisgICAgXzQ2NTct
PmFkZCgyMzk5KTsKKyAgICBfNDY1Ny0+YWRkKDY1Myk7CisgICAgXzQ2NTctPmFkZCgyMzk4KTsK
KyAgICBfNDY1Ny0+YWRkKDI3NjgpOworICAgIF80NjU3LT5hZGQoMjc2Nyk7CisgICAgXzQ2NTYt
PmFkZCgyMDQpOworICAgIF80NjU2LT5hZGQoMjczKTsKKyAgICBfNDY1Ni0+YWRkKDkzNSk7Cisg
ICAgXzQ2NTYtPmFkZCgyMjgpOworICAgIF80NjU2LT5hZGQoMjQwKTsKKyAgICBfNDY1Ni0+YWRk
KDE0Mik7CisgICAgXzQ2NTYtPmFkZCg5OTIpOworICAgIF80NjU2LT5hZGQoMzA5KTsKKyAgICBf
NDY1Ni0+YWRkKDE5Mik7CisgICAgXzQ2NTYtPmFkZCgxNTYpOworICAgIF80NjU2LT5hZGQoMTEz
KTsKKyAgICBfNDY1Ni0+YWRkKDEyOCk7CisgICAgXzQ2NTYtPmFkZCgxODApOworICAgIF80NjU2
LT5hZGQoMTc5KTsKKyAgICBfNDY1Ni0+YWRkKDM0NSk7CisgICAgXzQ2NTYtPmFkZCgxNjcpOwor
ICAgIF80NjU2LT5hZGQoMzM4KTsKKyAgICBfNDY1Ni0+YWRkKDIxNik7CisgICAgXzQ2NTYtPmFk
ZCgyNTMpOworICAgIF80NjU2LT5hZGQoMTA0KTsKKyAgICBfNDY1Ni0+YWRkKDIpOworICAgIF80
NjU2LT5hZGQoMjQzKTsKKyAgICBfNDY1Ni0+YWRkKDEwNzUpOworICAgIF80NjU2LT5hZGQoMjU4
Myk7CisgICAgXzQ2NTYtPmFkZCgyNDgpOworICAgIF80NjU2LT5hZGQoMzU2KTsKKyAgICBfNDY1
Ni0+YWRkKDk2OCk7CisgICAgXzQ2NTYtPmFkZCgyODIpOworICAgIF80NjU2LT5hZGQoMTQ5KTsK
KyAgICBfNDY1Ni0+YWRkKDEzOSk7CisgICAgXzQ2NTYtPmFkZCgxMTQ2KTsKKyAgICBfNDY1Ni0+
YWRkKDIzOTkpOworICAgIF80NjU2LT5hZGQoNjUzKTsKKyAgICBfNDY1Ni0+YWRkKDIzOTgpOwor
ICAgIF80NjU2LT5hZGQoMjc2OCk7CisgICAgXzQ2NTYtPmFkZCgyNzY3KTsKKyAgICBfNDY1Mi0+
YWRkKDIwNCk7CisgICAgXzQ2NTItPmFkZCg5MzUpOworICAgIF80NjUyLT5hZGQoMTM5KTsKKyAg
ICBfNDY1Mi0+YWRkKDk5Mik7CisgICAgXzQ2NTItPmFkZCgxNTYpOworICAgIF80NjUyLT5hZGQo
MTI4KTsKKyAgICBfNDY1Mi0+YWRkKDE4MCk7CisgICAgXzQ2NTItPmFkZCgxNzkpOworICAgIF80
NjUyLT5hZGQoMjUzKTsKKyAgICBfNDY1Mi0+YWRkKDI4Mik7CisgICAgXzQ2NTItPmFkZCgxMDc1
KTsKKyAgICBfNDY1Mi0+YWRkKDIzOTkpOworICAgIF80NjUyLT5hZGQoNjUzKTsKKyAgICBfNDY1
Mi0+YWRkKDk2OCk7CisgICAgXzQ2NTItPmFkZCgxNDkpOworICAgIF80NjUyLT5hZGQoMTE0Nik7
CisgICAgXzQ2NTItPmFkZCgyNDApOworICAgIF80NjUyLT5hZGQoMjczKTsKKyAgICBfNDY1Mi0+
YWRkKDIzOTgpOworICAgIF80NjUyLT5hZGQoMjI4KTsKKyAgICBfNDY1Mi0+YWRkKDE0Mik7Cisg
ICAgXzQ2NTItPmFkZCgxMDQpOworICAgIF80NjUyLT5hZGQoMzU2KTsKKyAgICBfNDY1Mi0+YWRk
KDMwOSk7CisgICAgXzQ2NTItPmFkZCgxOTIpOworICAgIF80NjUyLT5hZGQoMTEzKTsKKyAgICBf
NDY1Mi0+YWRkKDM0NSk7CisgICAgXzQ2NTItPmFkZCgxNjcpOworICAgIF80NjUyLT5hZGQoMzM4
KTsKKyAgICBfNDY1Mi0+YWRkKDIxNik7CisgICAgXzQ2NTItPmFkZCgyKTsKKyAgICBfNDY1Mi0+
YWRkKDI0Myk7CisgICAgXzQ2NTItPmFkZCgyNTgzKTsKKyAgICBfNDY1Mi0+YWRkKDI0OCk7Cisg
ICAgXzQ2NTItPmFkZCgyMzkzKTsKKyAgICBfNDY1NS0+YWRkKDIwNCk7CisgICAgXzQ2NTUtPmFk
ZCg5MzUpOworICAgIF80NjU1LT5hZGQoNzc3KTsKKyAgICBfNDY1NS0+YWRkKDk5Mik7CisgICAg
XzQ2NTUtPmFkZCgxNTYpOworICAgIF80NjU1LT5hZGQoMTI4KTsKKyAgICBfNDY1NS0+YWRkKDE4
MCk7CisgICAgXzQ2NTUtPmFkZCgxNzkpOworICAgIF80NjU1LT5hZGQoMjUzKTsKKyAgICBfNDY1
NS0+YWRkKDI4Mik7CisgICAgXzQ2NTUtPmFkZCgxMDc1KTsKKyAgICBfNDY1NS0+YWRkKDIzOTkp
OworICAgIF80NjU1LT5hZGQoNjUzKTsKKyAgICBfNDY1NS0+YWRkKDk2OCk7CisgICAgXzQ2NTUt
PmFkZCgxNDkpOworICAgIF80NjU1LT5hZGQoMTE0Nik7CisgICAgXzQ2NTUtPmFkZCgyNDApOwor
ICAgIF80NjU1LT5hZGQoMjczKTsKKyAgICBfNDY1NS0+YWRkKDIzOTgpOworICAgIF80NjU1LT5h
ZGQoMjI4KTsKKyAgICBfNDY1NS0+YWRkKDE0Mik7CisgICAgXzQ2NTUtPmFkZCgxMDQpOworICAg
IF80NjU1LT5hZGQoMzU2KTsKKyAgICBfNDY1NS0+YWRkKDMwOSk7CisgICAgXzQ2NTUtPmFkZCgx
OTIpOworICAgIF80NjU1LT5hZGQoMTEzKTsKKyAgICBfNDY1NS0+YWRkKDM0NSk7CisgICAgXzQ2
NTUtPmFkZCgxNjcpOworICAgIF80NjU1LT5hZGQoMzM4KTsKKyAgICBfNDY1NS0+YWRkKDIxNik7
CisgICAgXzQ2NTUtPmFkZCgyKTsKKyAgICBfNDY1NS0+YWRkKDI0Myk7CisgICAgXzQ2NTUtPmFk
ZCgyNTgzKTsKKyAgICBfNDY1NS0+YWRkKDI0OCk7CisgICAgXzQ2NTUtPmFkZCgxMzkpOworICAg
IF80NjU1LT5hZGQoNzk2KTsKKyAgICBfNDY1My0+YWRkKDIwNCk7CisgICAgXzQ2NTMtPmFkZCg5
MzUpOworICAgIF80NjUzLT5hZGQoOTkyKTsKKyAgICBfNDY1My0+YWRkKDE1Nik7CisgICAgXzQ2
NTMtPmFkZCgxMjgpOworICAgIF80NjUzLT5hZGQoMTgwKTsKKyAgICBfNDY1My0+YWRkKDE3OSk7
CisgICAgXzQ2NTMtPmFkZCgyNTgzKTsKKyAgICBfNDY1My0+YWRkKDI1Myk7CisgICAgXzQ2NTMt
PmFkZCgyODIpOworICAgIF80NjUzLT5hZGQoMTA3NSk7CisgICAgXzQ2NTMtPmFkZCgyMzk5KTsK
KyAgICBfNDY1My0+YWRkKDY1Myk7CisgICAgXzQ2NTMtPmFkZCg5NjgpOworICAgIF80NjUzLT5h
ZGQoMTQ5KTsKKyAgICBfNDY1My0+YWRkKDExNDYpOworICAgIF80NjUzLT5hZGQoNzA2KTsKKyAg
ICBfNDY1My0+YWRkKDI3Myk7CisgICAgXzQ2NTMtPmFkZCgyMzk4KTsKKyAgICBfNDY1My0+YWRk
KDIyOCk7CisgICAgXzQ2NTMtPmFkZCgyNDApOworICAgIF80NjUzLT5hZGQoMTQyKTsKKyAgICBf
NDY1My0+YWRkKDEwNCk7CisgICAgXzQ2NTMtPmFkZCgzMDkpOworICAgIF80NjUzLT5hZGQoMTky
KTsKKyAgICBfNDY1My0+YWRkKDExMyk7CisgICAgXzQ2NTMtPmFkZCgzNDUpOworICAgIF80NjUz
LT5hZGQoMTY3KTsKKyAgICBfNDY1My0+YWRkKDMzOCk7CisgICAgXzQ2NTMtPmFkZCgyMTYpOwor
ICAgIF80NjUzLT5hZGQoMTM5KTsKKyAgICBfNDY1My0+YWRkKDI0Myk7CisgICAgXzQ2NTMtPmFk
ZCgyKTsKKyAgICBfNDY1My0+YWRkKDI0OCk7CisgICAgXzQ2NTMtPmFkZCgzNTYpOworICAgIF80
NjUzLT5hZGQoMjc2Nik7CisgICAgXzQ2NTMtPmFkZCgyNzY1KTsKKyAgICBfNDY1NC0+YWRkKDIw
NCk7CisgICAgXzQ2NTQtPmFkZCg5MzUpOworICAgIF80NjU0LT5hZGQoOTkyKTsKKyAgICBfNDY1
NC0+YWRkKDE1Nik7CisgICAgXzQ2NTQtPmFkZCgxMjgpOworICAgIF80NjU0LT5hZGQoMTgwKTsK
KyAgICBfNDY1NC0+YWRkKDE3OSk7CisgICAgXzQ2NTQtPmFkZCgyNTgzKTsKKyAgICBfNDY1NC0+
YWRkKDI1Myk7CisgICAgXzQ2NTQtPmFkZCgyODIpOworICAgIF80NjU0LT5hZGQoMTA3NSk7Cisg
ICAgXzQ2NTQtPmFkZCgyMzk5KTsKKyAgICBfNDY1NC0+YWRkKDY1Myk7CisgICAgXzQ2NTQtPmFk
ZCg5NjgpOworICAgIF80NjU0LT5hZGQoMTQ5KTsKKyAgICBfNDY1NC0+YWRkKDExNDYpOworICAg
IF80NjU0LT5hZGQoNzA2KTsKKyAgICBfNDY1NC0+YWRkKDI3Myk7CisgICAgXzQ2NTQtPmFkZCgy
Mzk4KTsKKyAgICBfNDY1NC0+YWRkKDIyOCk7CisgICAgXzQ2NTQtPmFkZCgyNDApOworICAgIF80
NjU0LT5hZGQoMTQyKTsKKyAgICBfNDY1NC0+YWRkKDEwNCk7CisgICAgXzQ2NTQtPmFkZCgzMDkp
OworICAgIF80NjU0LT5hZGQoMTkyKTsKKyAgICBfNDY1NC0+YWRkKDExMyk7CisgICAgXzQ2NTQt
PmFkZCgzNDUpOworICAgIF80NjU0LT5hZGQoMTY3KTsKKyAgICBfNDY1NC0+YWRkKDMzOCk7Cisg
ICAgXzQ2NTQtPmFkZCgyMTYpOworICAgIF80NjU0LT5hZGQoMTM5KTsKKyAgICBfNDY1NC0+YWRk
KDI0Myk7CisgICAgXzQ2NTQtPmFkZCgyKTsKKyAgICBfNDY1NC0+YWRkKDI0OCk7CisgICAgXzQ2
NTQtPmFkZCgzNTYpOworICAgIF80NjU0LT5hZGQoMjc2Nik7CisgICAgXzQ2NTQtPmFkZCgyNzY1
KTsKKyAgICBfNDY1NS0+YWRkKDIwNCk7CisgICAgXzQ2NTUtPmFkZCg5MzUpOworICAgIF80NjU1
LT5hZGQoNzc3KTsKKyAgICBfNDY1NS0+YWRkKDk5Mik7CisgICAgXzQ2NTUtPmFkZCgxNTYpOwor
ICAgIF80NjU1LT5hZGQoMTI4KTsKKyAgICBfNDY1NS0+YWRkKDE4MCk7CisgICAgXzQ2NTUtPmFk
ZCgxNzkpOworICAgIF80NjU1LT5hZGQoNzA2KTsKKyAgICBfNDY1NS0+YWRkKDI1Myk7CisgICAg
XzQ2NTUtPmFkZCgyODIpOworICAgIF80NjU1LT5hZGQoMTA3NSk7CisgICAgXzQ2NTUtPmFkZCgy
Mzk5KTsKKyAgICBfNDY1NS0+YWRkKDY1Myk7CisgICAgXzQ2NTUtPmFkZCg5NjgpOworICAgIF80
NjU1LT5hZGQoMTQ5KTsKKyAgICBfNDY1NS0+YWRkKDI0MCk7CisgICAgXzQ2NTUtPmFkZCgxMTQ2
KTsKKyAgICBfNDY1NS0+YWRkKDI3Myk7CisgICAgXzQ2NTUtPmFkZCgyMzk4KTsKKyAgICBfNDY1
NS0+YWRkKDIyOCk7CisgICAgXzQ2NTUtPmFkZCgxNDIpOworICAgIF80NjU1LT5hZGQoMTA0KTsK
KyAgICBfNDY1NS0+YWRkKDM1Nik7CisgICAgXzQ2NTUtPmFkZCgzMDkpOworICAgIF80NjU1LT5h
ZGQoMTkyKTsKKyAgICBfNDY1NS0+YWRkKDExMyk7CisgICAgXzQ2NTUtPmFkZCgzNDUpOworICAg
IF80NjU1LT5hZGQoMTY3KTsKKyAgICBfNDY1NS0+YWRkKDMzOCk7CisgICAgXzQ2NTUtPmFkZCgy
MTYpOworICAgIF80NjU1LT5hZGQoMik7CisgICAgXzQ2NTUtPmFkZCgyNDMpOworICAgIF80NjU1
LT5hZGQoMjU4Myk7CisgICAgXzQ2NTUtPmFkZCgyNDgpOworICAgIF80NjU1LT5hZGQoMTM5KTsK
KyAgICBfNDY1NS0+YWRkKDc5Nik7CisgICAgXzQ2NTItPmFkZCgyMDQpOworICAgIF80NjUyLT5h
ZGQoOTM1KTsKKyAgICBfNDY1Mi0+YWRkKDEzOSk7CisgICAgXzQ2NTItPmFkZCg5OTIpOworICAg
IF80NjUyLT5hZGQoMTU2KTsKKyAgICBfNDY1Mi0+YWRkKDEyOCk7CisgICAgXzQ2NTItPmFkZCgx
ODApOworICAgIF80NjUyLT5hZGQoMTc5KTsKKyAgICBfNDY1Mi0+YWRkKDcwNik7CisgICAgXzQ2
NTItPmFkZCgyNTMpOworICAgIF80NjUyLT5hZGQoMjgyKTsKKyAgICBfNDY1Mi0+YWRkKDEwNzUp
OworICAgIF80NjUyLT5hZGQoMjM5OSk7CisgICAgXzQ2NTItPmFkZCg2NTMpOworICAgIF80NjUy
LT5hZGQoOTY4KTsKKyAgICBfNDY1Mi0+YWRkKDE0OSk7CisgICAgXzQ2NTItPmFkZCgyNDApOwor
ICAgIF80NjUyLT5hZGQoMTE0Nik7CisgICAgXzQ2NTItPmFkZCgyNzMpOworICAgIF80NjUyLT5h
ZGQoMjM5OCk7CisgICAgXzQ2NTItPmFkZCgyMjgpOworICAgIF80NjUyLT5hZGQoMTQyKTsKKyAg
ICBfNDY1Mi0+YWRkKDEwNCk7CisgICAgXzQ2NTItPmFkZCgzNTYpOworICAgIF80NjUyLT5hZGQo
MzA5KTsKKyAgICBfNDY1Mi0+YWRkKDE5Mik7CisgICAgXzQ2NTItPmFkZCgxMTMpOworICAgIF80
NjUyLT5hZGQoMzQ1KTsKKyAgICBfNDY1Mi0+YWRkKDE2Nyk7CisgICAgXzQ2NTItPmFkZCgzMzgp
OworICAgIF80NjUyLT5hZGQoMjE2KTsKKyAgICBfNDY1Mi0+YWRkKDIpOworICAgIF80NjUyLT5h
ZGQoMjQzKTsKKyAgICBfNDY1Mi0+YWRkKDI1ODMpOworICAgIF80NjUyLT5hZGQoMjQ4KTsKKyAg
ICBfNDY1Mi0+YWRkKDIzOTMpOworICAgIF80NjUwLT5hZGQoMjA0KTsKKyAgICBfNDY1MC0+YWRk
KDkzNSk7CisgICAgXzQ2NTAtPmFkZCg5OTIpOworICAgIF80NjUwLT5hZGQoMzE4KTsKKyAgICBf
NDY1MC0+YWRkKDE1Nik7CisgICAgXzQ2NTAtPmFkZCgxMjgpOworICAgIF80NjUwLT5hZGQoMTgw
KTsKKyAgICBfNDY1MC0+YWRkKDE3OSk7CisgICAgXzQ2NTAtPmFkZCgyNTgzKTsKKyAgICBfNDY1
MC0+YWRkKDcwNik7CisgICAgXzQ2NTAtPmFkZCgyNTMpOworICAgIF80NjUwLT5hZGQoMjgyKTsK
KyAgICBfNDY1MC0+YWRkKDEwNzUpOworICAgIF80NjUwLT5hZGQoMjM5OSk7CisgICAgXzQ2NTAt
PmFkZCg2NjEpOworICAgIF80NjUwLT5hZGQoOTY4KTsKKyAgICBfNDY1MC0+YWRkKDE0OSk7Cisg
ICAgXzQ2NTAtPmFkZCgxMTQ2KTsKKyAgICBfNDY1MC0+YWRkKDI3Myk7CisgICAgXzQ2NTAtPmFk
ZCgyMzk4KTsKKyAgICBfNDY1MC0+YWRkKDIyOCk7CisgICAgXzQ2NTAtPmFkZCgxNDIpOworICAg
IF80NjUwLT5hZGQoMTA0KTsKKyAgICBfNDY1MC0+YWRkKDMwOSk7CisgICAgXzQ2NTAtPmFkZCgx
OTIpOworICAgIF80NjUwLT5hZGQoMTEzKTsKKyAgICBfNDY1MC0+YWRkKDM0NSk7CisgICAgXzQ2
NTAtPmFkZCgxNjcpOworICAgIF80NjUwLT5hZGQoMzM4KTsKKyAgICBfNDY1MC0+YWRkKDIxNik7
CisgICAgXzQ2NTAtPmFkZCgxMzkpOworICAgIF80NjUwLT5hZGQoMjQzKTsKKyAgICBfNDY1MC0+
YWRkKDIpOworICAgIF80NjUwLT5hZGQoMjQ4KTsKKyAgICBfNDY1MC0+YWRkKDM1Nik7CisgICAg
XzQ2NTAtPmFkZCgyNDApOworICAgIF80NjUwLT5hZGQoMjc2NCk7CisgICAgXzQ2NTEtPmFkZCgy
MDQpOworICAgIF80NjUxLT5hZGQoOTM1KTsKKyAgICBfNDY1MS0+YWRkKDk5Mik7CisgICAgXzQ2
NTEtPmFkZCgzMTgpOworICAgIF80NjUxLT5hZGQoMTU2KTsKKyAgICBfNDY1MS0+YWRkKDEyOCk7
CisgICAgXzQ2NTEtPmFkZCgxODApOworICAgIF80NjUxLT5hZGQoMTc5KTsKKyAgICBfNDY1MS0+
YWRkKDI1ODMpOworICAgIF80NjUxLT5hZGQoNzA2KTsKKyAgICBfNDY1MS0+YWRkKDI1Myk7Cisg
ICAgXzQ2NTEtPmFkZCgyODIpOworICAgIF80NjUxLT5hZGQoMTA3NSk7CisgICAgXzQ2NTEtPmFk
ZCgyMzk5KTsKKyAgICBfNDY1MS0+YWRkKDY2MSk7CisgICAgXzQ2NTEtPmFkZCg5NjgpOworICAg
IF80NjUxLT5hZGQoMTQ5KTsKKyAgICBfNDY1MS0+YWRkKDExNDYpOworICAgIF80NjUxLT5hZGQo
MjczKTsKKyAgICBfNDY1MS0+YWRkKDIzOTgpOworICAgIF80NjUxLT5hZGQoMjI4KTsKKyAgICBf
NDY1MS0+YWRkKDE0Mik7CisgICAgXzQ2NTEtPmFkZCgxMDQpOworICAgIF80NjUxLT5hZGQoMzA5
KTsKKyAgICBfNDY1MS0+YWRkKDE5Mik7CisgICAgXzQ2NTEtPmFkZCgxMTMpOworICAgIF80NjUx
LT5hZGQoMzQ1KTsKKyAgICBfNDY1MS0+YWRkKDE2Nyk7CisgICAgXzQ2NTEtPmFkZCgzMzgpOwor
ICAgIF80NjUxLT5hZGQoMjE2KTsKKyAgICBfNDY1MS0+YWRkKDEzOSk7CisgICAgXzQ2NTEtPmFk
ZCgyNDMpOworICAgIF80NjUxLT5hZGQoMik7CisgICAgXzQ2NTEtPmFkZCgyNDgpOworICAgIF80
NjUxLT5hZGQoMzU2KTsKKyAgICBfNDY1MS0+YWRkKDI0MCk7CisgICAgXzQ2NTEtPmFkZCgyNzY0
KTsKKyAgICBfNDY0OS0+YWRkKDIwNCk7CisgICAgXzQ2NDktPmFkZCg5MzUpOworICAgIF80NjQ5
LT5hZGQoOTkyKTsKKyAgICBfNDY0OS0+YWRkKDE1Nik7CisgICAgXzQ2NDktPmFkZCgxMzkpOwor
ICAgIF80NjQ5LT5hZGQoMTI4KTsKKyAgICBfNDY0OS0+YWRkKDE4MCk7CisgICAgXzQ2NDktPmFk
ZCgxNzkpOworICAgIF80NjQ5LT5hZGQoNzA2KTsKKyAgICBfNDY0OS0+YWRkKDI1Myk7CisgICAg
XzQ2NDktPmFkZCgyODIpOworICAgIF80NjQ5LT5hZGQoMTA3NSk7CisgICAgXzQ2NDktPmFkZCg2
NjEpOworICAgIF80NjQ5LT5hZGQoMjM5OSk7CisgICAgXzQ2NDktPmFkZCg5NjgpOworICAgIF80
NjQ5LT5hZGQoMTQ5KTsKKyAgICBfNDY0OS0+YWRkKDExNDYpOworICAgIF80NjQ5LT5hZGQoMjcz
KTsKKyAgICBfNDY0OS0+YWRkKDIzOTgpOworICAgIF80NjQ5LT5hZGQoMjI4KTsKKyAgICBfNDY0
OS0+YWRkKDI0MCk7CisgICAgXzQ2NDktPmFkZCgxNDIpOworICAgIF80NjQ5LT5hZGQoMTA0KTsK
KyAgICBfNDY0OS0+YWRkKDM1Nik7CisgICAgXzQ2NDktPmFkZCgzMDkpOworICAgIF80NjQ5LT5h
ZGQoMTkyKTsKKyAgICBfNDY0OS0+YWRkKDExMyk7CisgICAgXzQ2NDktPmFkZCgzNDUpOworICAg
IF80NjQ5LT5hZGQoMTY3KTsKKyAgICBfNDY0OS0+YWRkKDMzOCk7CisgICAgXzQ2NDktPmFkZCgy
MTYpOworICAgIF80NjQ5LT5hZGQoMik7CisgICAgXzQ2NDktPmFkZCgyNDMpOworICAgIF80NjQ5
LT5hZGQoMjU4Myk7CisgICAgXzQ2NDktPmFkZCgyNDgpOworICAgIF80NjQ5LT5hZGQoMzE4KTsK
KyAgICBfNDY0OS0+YWRkKDIzOTUpOworICAgIF80NjM3LT5hZGQoMjA0KTsKKyAgICBfNDYzNy0+
YWRkKDkzNSk7CisgICAgXzQ2MzctPmFkZCg5OTIpOworICAgIF80NjM3LT5hZGQoMTU2KTsKKyAg
ICBfNDYzNy0+YWRkKDEzOSk7CisgICAgXzQ2MzctPmFkZCgxMjgpOworICAgIF80NjM3LT5hZGQo
MTgwKTsKKyAgICBfNDYzNy0+YWRkKDE3OSk7CisgICAgXzQ2MzctPmFkZCg3MDYpOworICAgIF80
NjM3LT5hZGQoMjUzKTsKKyAgICBfNDYzNy0+YWRkKDI4Mik7CisgICAgXzQ2MzctPmFkZCgxMDc1
KTsKKyAgICBfNDYzNy0+YWRkKDY2MSk7CisgICAgXzQ2MzctPmFkZCgyMzk5KTsKKyAgICBfNDYz
Ny0+YWRkKDk2OCk7CisgICAgXzQ2MzctPmFkZCgxNDkpOworICAgIF80NjM3LT5hZGQoMTE0Nik7
CisgICAgXzQ2MzctPmFkZCgyNzMpOworICAgIF80NjM3LT5hZGQoMjM5OCk7CisgICAgXzQ2Mzct
PmFkZCgyMjgpOworICAgIF80NjM3LT5hZGQoMjQwKTsKKyAgICBfNDYzNy0+YWRkKDE0Mik7Cisg
ICAgXzQ2MzctPmFkZCgxMDQpOworICAgIF80NjM3LT5hZGQoMzU2KTsKKyAgICBfNDYzNy0+YWRk
KDMwOSk7CisgICAgXzQ2MzctPmFkZCgxOTIpOworICAgIF80NjM3LT5hZGQoMTEzKTsKKyAgICBf
NDYzNy0+YWRkKDM0NSk7CisgICAgXzQ2MzctPmFkZCgxNjcpOworICAgIF80NjM3LT5hZGQoMzM4
KTsKKyAgICBfNDYzNy0+YWRkKDIxNik7CisgICAgXzQ2MzctPmFkZCgyKTsKKyAgICBfNDYzNy0+
YWRkKDI0Myk7CisgICAgXzQ2MzctPmFkZCgyNTgzKTsKKyAgICBfNDYzNy0+YWRkKDI0OCk7Cisg
ICAgXzQ2MzctPmFkZCgzMTgpOworICAgIF80NjQ3LT5hZGQoMjA0KTsKKyAgICBfNDY0Ny0+YWRk
KDkzNSk7CisgICAgXzQ2NDctPmFkZCg5OTIpOworICAgIF80NjQ3LT5hZGQoMTU2KTsKKyAgICBf
NDY0Ny0+YWRkKDMxOCk7CisgICAgXzQ2NDctPmFkZCgxMjgpOworICAgIF80NjQ3LT5hZGQoMTgw
KTsKKyAgICBfNDY0Ny0+YWRkKDE3OSk7CisgICAgXzQ2NDctPmFkZCgyNTgzKTsKKyAgICBfNDY0
Ny0+YWRkKDI3NjMpOworICAgIF80NjQ3LT5hZGQoNzA2KTsKKyAgICBfNDY0Ny0+YWRkKDI1Myk7
CisgICAgXzQ2NDctPmFkZCgyODIpOworICAgIF80NjQ3LT5hZGQoMTA3NSk7CisgICAgXzQ2NDct
PmFkZCg2NjEpOworICAgIF80NjQ3LT5hZGQoMjM5OSk7CisgICAgXzQ2NDctPmFkZCg5NjgpOwor
ICAgIF80NjQ3LT5hZGQoMTQ5KTsKKyAgICBfNDY0Ny0+YWRkKDExNDYpOworICAgIF80NjQ3LT5h
ZGQoMjczKTsKKyAgICBfNDY0Ny0+YWRkKDIzOTgpOworICAgIF80NjQ3LT5hZGQoMjI4KTsKKyAg
ICBfNDY0Ny0+YWRkKDE0Mik7CisgICAgXzQ2NDctPmFkZCgxMDQpOworICAgIF80NjQ3LT5hZGQo
MzA5KTsKKyAgICBfNDY0Ny0+YWRkKDE5Mik7CisgICAgXzQ2NDctPmFkZCgxMTMpOworICAgIF80
NjQ3LT5hZGQoMzQ1KTsKKyAgICBfNDY0Ny0+YWRkKDE2Nyk7CisgICAgXzQ2NDctPmFkZCgzMzgp
OworICAgIF80NjQ3LT5hZGQoMjE2KTsKKyAgICBfNDY0Ny0+YWRkKDEzOSk7CisgICAgXzQ2NDct
PmFkZCgyNDMpOworICAgIF80NjQ3LT5hZGQoMik7CisgICAgXzQ2NDctPmFkZCgyNDgpOworICAg
IF80NjQ3LT5hZGQoMzU2KTsKKyAgICBfNDY0Ny0+YWRkKDI0MCk7CisgICAgXzQ2NDctPmFkZCgy
NzYyKTsKKyAgICBfNDY0OC0+YWRkKDIwNCk7CisgICAgXzQ2NDgtPmFkZCg5MzUpOworICAgIF80
NjQ4LT5hZGQoOTkyKTsKKyAgICBfNDY0OC0+YWRkKDE1Nik7CisgICAgXzQ2NDgtPmFkZCgzMTgp
OworICAgIF80NjQ4LT5hZGQoMTI4KTsKKyAgICBfNDY0OC0+YWRkKDE4MCk7CisgICAgXzQ2NDgt
PmFkZCgxNzkpOworICAgIF80NjQ4LT5hZGQoMjU4Myk7CisgICAgXzQ2NDgtPmFkZCgyNzYzKTsK
KyAgICBfNDY0OC0+YWRkKDcwNik7CisgICAgXzQ2NDgtPmFkZCgyNTMpOworICAgIF80NjQ4LT5h
ZGQoMjgyKTsKKyAgICBfNDY0OC0+YWRkKDEwNzUpOworICAgIF80NjQ4LT5hZGQoNjYxKTsKKyAg
ICBfNDY0OC0+YWRkKDIzOTkpOworICAgIF80NjQ4LT5hZGQoOTY4KTsKKyAgICBfNDY0OC0+YWRk
KDE0OSk7CisgICAgXzQ2NDgtPmFkZCgxMTQ2KTsKKyAgICBfNDY0OC0+YWRkKDI3Myk7CisgICAg
XzQ2NDgtPmFkZCgyMzk4KTsKKyAgICBfNDY0OC0+YWRkKDIyOCk7CisgICAgXzQ2NDgtPmFkZCgx
NDIpOworICAgIF80NjQ4LT5hZGQoMTA0KTsKKyAgICBfNDY0OC0+YWRkKDMwOSk7CisgICAgXzQ2
NDgtPmFkZCgxOTIpOworICAgIF80NjQ4LT5hZGQoMTEzKTsKKyAgICBfNDY0OC0+YWRkKDM0NSk7
CisgICAgXzQ2NDgtPmFkZCgxNjcpOworICAgIF80NjQ4LT5hZGQoMzM4KTsKKyAgICBfNDY0OC0+
YWRkKDIxNik7CisgICAgXzQ2NDgtPmFkZCgxMzkpOworICAgIF80NjQ4LT5hZGQoMjQzKTsKKyAg
ICBfNDY0OC0+YWRkKDIpOworICAgIF80NjQ4LT5hZGQoMjQ4KTsKKyAgICBfNDY0OC0+YWRkKDM1
Nik7CisgICAgXzQ2NDgtPmFkZCgyNDApOworICAgIF80NjQ4LT5hZGQoMjc2Mik7CisgICAgXzQ2
NDYtPmFkZCgyMDQpOworICAgIF80NjQ2LT5hZGQoOTM1KTsKKyAgICBfNDY0Ni0+YWRkKDk5Mik7
CisgICAgXzQ2NDYtPmFkZCgxNTYpOworICAgIF80NjQ2LT5hZGQoMTI4KTsKKyAgICBfNDY0Ni0+
YWRkKDE4MCk7CisgICAgXzQ2NDYtPmFkZCgxNzkpOworICAgIF80NjQ2LT5hZGQoNzA2KTsKKyAg
ICBfNDY0Ni0+YWRkKDI1Myk7CisgICAgXzQ2NDYtPmFkZCgyODIpOworICAgIF80NjQ2LT5hZGQo
MTA3NSk7CisgICAgXzQ2NDYtPmFkZCg2NjEpOworICAgIF80NjQ2LT5hZGQoMjM5OSk7CisgICAg
XzQ2NDYtPmFkZCg5NjgpOworICAgIF80NjQ2LT5hZGQoMTM5KTsKKyAgICBfNDY0Ni0+YWRkKDE0
OSk7CisgICAgXzQ2NDYtPmFkZCgxMTQ2KTsKKyAgICBfNDY0Ni0+YWRkKDI3Myk7CisgICAgXzQ2
NDYtPmFkZCgyMzk4KTsKKyAgICBfNDY0Ni0+YWRkKDIyOCk7CisgICAgXzQ2NDYtPmFkZCgyNDAp
OworICAgIF80NjQ2LT5hZGQoMTQyKTsKKyAgICBfNDY0Ni0+YWRkKDEwNCk7CisgICAgXzQ2NDYt
PmFkZCgzNTYpOworICAgIF80NjQ2LT5hZGQoMzA5KTsKKyAgICBfNDY0Ni0+YWRkKDE5Mik7Cisg
ICAgXzQ2NDYtPmFkZCgxMTMpOworICAgIF80NjQ2LT5hZGQoMzQ1KTsKKyAgICBfNDY0Ni0+YWRk
KDE2Nyk7CisgICAgXzQ2NDYtPmFkZCgzMzgpOworICAgIF80NjQ2LT5hZGQoMjE2KTsKKyAgICBf
NDY0Ni0+YWRkKDIpOworICAgIF80NjQ2LT5hZGQoMjQzKTsKKyAgICBfNDY0Ni0+YWRkKDI1ODMp
OworICAgIF80NjQ2LT5hZGQoMjQ4KTsKKyAgICBfNDY0Ni0+YWRkKDMxOCk7CisgICAgXzQ2NDYt
PmFkZCgyMzk0KTsKKyAgICBfNDY0Ni0+YWRkKDIzOTYpOworICAgIF80NjQ2LT5hZGQoMjA0KTsK
KyAgICBfNDY0Ni0+YWRkKDkzNSk7CisgICAgXzQ2NDYtPmFkZCg5OTIpOworICAgIF80NjQ2LT5h
ZGQoMTU2KTsKKyAgICBfNDY0Ni0+YWRkKDEyOCk7CisgICAgXzQ2NDYtPmFkZCgxODApOworICAg
IF80NjQ2LT5hZGQoMTc5KTsKKyAgICBfNDY0Ni0+YWRkKDcwNik7CisgICAgXzQ2NDYtPmFkZCgy
NTMpOworICAgIF80NjQ2LT5hZGQoMjgyKTsKKyAgICBfNDY0Ni0+YWRkKDEwNzUpOworICAgIF80
NjQ2LT5hZGQoNjYxKTsKKyAgICBfNDY0Ni0+YWRkKDIzOTkpOworICAgIF80NjQ2LT5hZGQoOTY4
KTsKKyAgICBfNDY0Ni0+YWRkKDEzOSk7CisgICAgXzQ2NDYtPmFkZCgxNDkpOworICAgIF80NjQ2
LT5hZGQoMTE0Nik7CisgICAgXzQ2NDYtPmFkZCgyNzMpOworICAgIF80NjQ2LT5hZGQoMjM5OCk7
CisgICAgXzQ2NDYtPmFkZCgyMjgpOworICAgIF80NjQ2LT5hZGQoMjQwKTsKKyAgICBfNDY0Ni0+
YWRkKDE0Mik7CisgICAgXzQ2NDYtPmFkZCgxMDQpOworICAgIF80NjQ2LT5hZGQoMzU2KTsKKyAg
ICBfNDY0Ni0+YWRkKDMwOSk7CisgICAgXzQ2NDYtPmFkZCgxOTIpOworICAgIF80NjQ2LT5hZGQo
MTEzKTsKKyAgICBfNDY0Ni0+YWRkKDM0NSk7CisgICAgXzQ2NDYtPmFkZCgxNjcpOworICAgIF80
NjQ2LT5hZGQoMzM4KTsKKyAgICBfNDY0Ni0+YWRkKDIxNik7CisgICAgXzQ2NDYtPmFkZCgyKTsK
KyAgICBfNDY0Ni0+YWRkKDI0Myk7CisgICAgXzQ2NDYtPmFkZCgyNTgzKTsKKyAgICBfNDY0Ni0+
YWRkKDI0OCk7CisgICAgXzQ2NDYtPmFkZCgzMTgpOworICAgIF80NjQ2LT5hZGQoMjM5MSk7Cisg
ICAgXzQ2NDYtPmFkZCgyMzk0KTsKKyAgICBfNDY0Ni0+YWRkKDIzOTYpOworICAgIF80NjQzLT5h
ZGQoMjA0KTsKKyAgICBfNDY0My0+YWRkKDkzNSk7CisgICAgXzQ2NDMtPmFkZCg5OTIpOworICAg
IF80NjQzLT5hZGQoMTU2KTsKKyAgICBfNDY0My0+YWRkKDMxOCk7CisgICAgXzQ2NDMtPmFkZCgx
MjgpOworICAgIF80NjQzLT5hZGQoMTgwKTsKKyAgICBfNDY0My0+YWRkKDE3OSk7CisgICAgXzQ2
NDMtPmFkZCgyNTgzKTsKKyAgICBfNDY0My0+YWRkKDcwNik7CisgICAgXzQ2NDMtPmFkZCgyNTMp
OworICAgIF80NjQzLT5hZGQoMjgyKTsKKyAgICBfNDY0My0+YWRkKDI0MCk7CisgICAgXzQ2NDMt
PmFkZCgxMDc1KTsKKyAgICBfNDY0My0+YWRkKDY2MSk7CisgICAgXzQ2NDMtPmFkZCgyMzk5KTsK
KyAgICBfNDY0My0+YWRkKDk2OCk7CisgICAgXzQ2NDMtPmFkZCgxNDkpOworICAgIF80NjQzLT5h
ZGQoMTE0Nik7CisgICAgXzQ2NDMtPmFkZCgyNzMpOworICAgIF80NjQzLT5hZGQoMjM5OCk7Cisg
ICAgXzQ2NDMtPmFkZCgyMjgpOworICAgIF80NjQzLT5hZGQoMTQyKTsKKyAgICBfNDY0My0+YWRk
KDEwNCk7CisgICAgXzQ2NDMtPmFkZCgzMDkpOworICAgIF80NjQzLT5hZGQoMTkyKTsKKyAgICBf
NDY0My0+YWRkKDExMyk7CisgICAgXzQ2NDMtPmFkZCgzNDUpOworICAgIF80NjQzLT5hZGQoMTY3
KTsKKyAgICBfNDY0My0+YWRkKDMzOCk7CisgICAgXzQ2NDMtPmFkZCgyMTYpOworICAgIF80NjQz
LT5hZGQoMjM5NCk7CisgICAgXzQ2NDMtPmFkZCgxMzkpOworICAgIF80NjQzLT5hZGQoMjQzKTsK
KyAgICBfNDY0My0+YWRkKDIpOworICAgIF80NjQzLT5hZGQoMjQ4KTsKKyAgICBfNDY0My0+YWRk
KDM1Nik7CisgICAgXzQ2NDMtPmFkZCgyMzk2KTsKKyAgICBfNDY0My0+YWRkKDI3NjEpOworICAg
IF80NjQ1LT5hZGQoMjA0KTsKKyAgICBfNDY0NS0+YWRkKDkzNSk7CisgICAgXzQ2NDUtPmFkZCg5
OTIpOworICAgIF80NjQ1LT5hZGQoMTU2KTsKKyAgICBfNDY0NS0+YWRkKDMxOCk7CisgICAgXzQ2
NDUtPmFkZCgxMjgpOworICAgIF80NjQ1LT5hZGQoMTgwKTsKKyAgICBfNDY0NS0+YWRkKDE3OSk7
CisgICAgXzQ2NDUtPmFkZCgyNTgzKTsKKyAgICBfNDY0NS0+YWRkKDcwNik7CisgICAgXzQ2NDUt
PmFkZCgyNTMpOworICAgIF80NjQ1LT5hZGQoMjgyKTsKKyAgICBfNDY0NS0+YWRkKDI0MCk7Cisg
ICAgXzQ2NDUtPmFkZCgxMDc1KTsKKyAgICBfNDY0NS0+YWRkKDY2MSk7CisgICAgXzQ2NDUtPmFk
ZCgyMzk5KTsKKyAgICBfNDY0NS0+YWRkKDk2OCk7CisgICAgXzQ2NDUtPmFkZCgxNDkpOworICAg
IF80NjQ1LT5hZGQoMTE0Nik7CisgICAgXzQ2NDUtPmFkZCgyNzMpOworICAgIF80NjQ1LT5hZGQo
MjM5OCk7CisgICAgXzQ2NDUtPmFkZCgyMjgpOworICAgIF80NjQ1LT5hZGQoMTQyKTsKKyAgICBf
NDY0NS0+YWRkKDEwNCk7CisgICAgXzQ2NDUtPmFkZCgzMDkpOworICAgIF80NjQ1LT5hZGQoMTky
KTsKKyAgICBfNDY0NS0+YWRkKDExMyk7CisgICAgXzQ2NDUtPmFkZCgzNDUpOworICAgIF80NjQ1
LT5hZGQoMTY3KTsKKyAgICBfNDY0NS0+YWRkKDMzOCk7CisgICAgXzQ2NDUtPmFkZCgyMTYpOwor
ICAgIF80NjQ1LT5hZGQoMjM5NCk7CisgICAgXzQ2NDUtPmFkZCgxMzkpOworICAgIF80NjQ1LT5h
ZGQoMjQzKTsKKyAgICBfNDY0NS0+YWRkKDIpOworICAgIF80NjQ1LT5hZGQoMjQ4KTsKKyAgICBf
NDY0NS0+YWRkKDM1Nik7CisgICAgXzQ2NDUtPmFkZCgyMzk2KTsKKyAgICBfNDY0NS0+YWRkKDI3
NjEpOworICAgIF80NjQxLT5hZGQoMjA0KTsKKyAgICBfNDY0MS0+YWRkKDE1Nik7CisgICAgXzQ2
NDEtPmFkZCg5MzUpOworICAgIF80NjQxLT5hZGQoOTkyKTsKKyAgICBfNDY0MS0+YWRkKDEyOCk7
CisgICAgXzQ2NDEtPmFkZCgxODApOworICAgIF80NjQxLT5hZGQoMTc5KTsKKyAgICBfNDY0MS0+
YWRkKDcwNik7CisgICAgXzQ2NDEtPmFkZCgyNTMpOworICAgIF80NjQxLT5hZGQoMjgyKTsKKyAg
ICBfNDY0MS0+YWRkKDEwNzUpOworICAgIF80NjQxLT5hZGQoNjYxKTsKKyAgICBfNDY0MS0+YWRk
KDIzOTkpOworICAgIF80NjQxLT5hZGQoOTY4KTsKKyAgICBfNDY0MS0+YWRkKDE0OSk7CisgICAg
XzQ2NDEtPmFkZCgxMTQ2KTsKKyAgICBfNDY0MS0+YWRkKDI3Myk7CisgICAgXzQ2NDEtPmFkZCgy
Mzk4KTsKKyAgICBfNDY0MS0+YWRkKDIyOCk7CisgICAgXzQ2NDEtPmFkZCgyNDApOworICAgIF80
NjQxLT5hZGQoMTQyKTsKKyAgICBfNDY0MS0+YWRkKDEwNCk7CisgICAgXzQ2NDEtPmFkZCgzNTYp
OworICAgIF80NjQxLT5hZGQoMzA5KTsKKyAgICBfNDY0MS0+YWRkKDE5Mik7CisgICAgXzQ2NDEt
PmFkZCgxMTMpOworICAgIF80NjQxLT5hZGQoMzQ1KTsKKyAgICBfNDY0MS0+YWRkKDE2Nyk7Cisg
ICAgXzQ2NDEtPmFkZCgzMzgpOworICAgIF80NjQxLT5hZGQoMjE2KTsKKyAgICBfNDY0MS0+YWRk
KDIzOTQpOworICAgIF80NjQxLT5hZGQoMTM5KTsKKyAgICBfNDY0MS0+YWRkKDIpOworICAgIF80
NjQxLT5hZGQoMjQzKTsKKyAgICBfNDY0MS0+YWRkKDI1ODMpOworICAgIF80NjQxLT5hZGQoMjQ4
KTsKKyAgICBfNDY0MS0+YWRkKDMxOCk7CisgICAgXzQ2NDEtPmFkZCgyMzk2KTsKKyAgICBfNDY0
Mi0+YWRkKDIzOTIpOworICAgIF80NjQyLT5hZGQoMjU4Myk7CisgICAgXzQ2NDItPmFkZCgyMDQp
OworICAgIF80NjQyLT5hZGQoMTU2KTsKKyAgICBfNDY0Mi0+YWRkKDkzNSk7CisgICAgXzQ2NDIt
PmFkZCg5OTIpOworICAgIF80NjQyLT5hZGQoMTI4KTsKKyAgICBfNDY0Mi0+YWRkKDE4MCk7Cisg
ICAgXzQ2NDItPmFkZCgxNzkpOworICAgIF80NjQyLT5hZGQoNzA2KTsKKyAgICBfNDY0Mi0+YWRk
KDI1Myk7CisgICAgXzQ2NDItPmFkZCgyODIpOworICAgIF80NjQyLT5hZGQoMTA3NSk7CisgICAg
XzQ2NDItPmFkZCg2NjEpOworICAgIF80NjQyLT5hZGQoMjM5OSk7CisgICAgXzQ2NDItPmFkZCg5
NjgpOworICAgIF80NjQyLT5hZGQoMTQ5KTsKKyAgICBfNDY0Mi0+YWRkKDExNDYpOworICAgIF80
NjQyLT5hZGQoMjczKTsKKyAgICBfNDY0Mi0+YWRkKDIzOTgpOworICAgIF80NjQyLT5hZGQoMjI4
KTsKKyAgICBfNDY0Mi0+YWRkKDI0MCk7CisgICAgXzQ2NDItPmFkZCgxNDIpOworICAgIF80NjQy
LT5hZGQoMTA0KTsKKyAgICBfNDY0Mi0+YWRkKDM1Nik7CisgICAgXzQ2NDItPmFkZCgzMDkpOwor
ICAgIF80NjQyLT5hZGQoMTkyKTsKKyAgICBfNDY0Mi0+YWRkKDExMyk7CisgICAgXzQ2NDItPmFk
ZCgzNDUpOworICAgIF80NjQyLT5hZGQoMTY3KTsKKyAgICBfNDY0Mi0+YWRkKDMzOCk7CisgICAg
XzQ2NDItPmFkZCgyMTYpOworICAgIF80NjQyLT5hZGQoMjM5NCk7CisgICAgXzQ2NDItPmFkZCgx
MzkpOworICAgIF80NjQyLT5hZGQoMik7CisgICAgXzQ2NDItPmFkZCgyNDMpOworICAgIF80NjQy
LT5hZGQoMjU4Myk7CisgICAgXzQ2NDItPmFkZCgyNDgpOworICAgIF80NjQyLT5hZGQoMzE4KTsK
KyAgICBfNDY0Mi0+YWRkKDIzOTYpOworICAgIF80NjQyLT5hZGQoMjM5Mik7CisgICAgXzQ2NDEt
PmFkZCgyMDQpOworICAgIF80NjQxLT5hZGQoOTM1KTsKKyAgICBfNDY0MS0+YWRkKDk5Mik7Cisg
ICAgXzQ2NDEtPmFkZCgxNTYpOworICAgIF80NjQxLT5hZGQoMzE4KTsKKyAgICBfNDY0MS0+YWRk
KDEyOCk7CisgICAgXzQ2NDEtPmFkZCgxODApOworICAgIF80NjQxLT5hZGQoMTc5KTsKKyAgICBf
NDY0MS0+YWRkKDcwNik7CisgICAgXzQ2NDEtPmFkZCgyNTMpOworICAgIF80NjQxLT5hZGQoMjgy
KTsKKyAgICBfNDY0MS0+YWRkKDEwNzUpOworICAgIF80NjQxLT5hZGQoNjYxKTsKKyAgICBfNDY0
MS0+YWRkKDIzOTkpOworICAgIF80NjQxLT5hZGQoOTY4KTsKKyAgICBfNDY0MS0+YWRkKDE0OSk7
CisgICAgXzQ2NDEtPmFkZCgxMTQ2KTsKKyAgICBfNDY0MS0+YWRkKDI3Myk7CisgICAgXzQ2NDEt
PmFkZCgyMzk4KTsKKyAgICBfNDY0MS0+YWRkKDIyOCk7CisgICAgXzQ2NDEtPmFkZCgxNDIpOwor
ICAgIF80NjQxLT5hZGQoMTA0KTsKKyAgICBfNDY0MS0+YWRkKDMwOSk7CisgICAgXzQ2NDEtPmFk
ZCgxOTIpOworICAgIF80NjQxLT5hZGQoMTEzKTsKKyAgICBfNDY0MS0+YWRkKDM0NSk7CisgICAg
XzQ2NDEtPmFkZCgxNjcpOworICAgIF80NjQxLT5hZGQoMjM5Mik7CisgICAgXzQ2NDEtPmFkZCgz
MzgpOworICAgIF80NjQxLT5hZGQoMjE2KTsKKyAgICBfNDY0MS0+YWRkKDIzOTQpOworICAgIF80
NjQxLT5hZGQoMTM5KTsKKyAgICBfNDY0MS0+YWRkKDIpOworICAgIF80NjQxLT5hZGQoMjQzKTsK
KyAgICBfNDY0MS0+YWRkKDI1ODMpOworICAgIF80NjQxLT5hZGQoMjQ4KTsKKyAgICBfNDY0MS0+
YWRkKDM1Nik7CisgICAgXzQ2NDEtPmFkZCgyMzk2KTsKKyAgICBfNDY0MS0+YWRkKDI0MCk7Cisg
ICAgXzQ2NDEtPmFkZCg0NDEpOworICAgIF80NjQxLT5hZGQoMzkwKTsKKyAgICBfNDY0MC0+YWRk
KDIwNCk7CisgICAgXzQ2NDAtPmFkZCg5MzUpOworICAgIF80NjQwLT5hZGQoOTkyKTsKKyAgICBf
NDY0MC0+YWRkKDE1Nik7CisgICAgXzQ2NDAtPmFkZCgzMTgpOworICAgIF80NjQwLT5hZGQoMTI4
KTsKKyAgICBfNDY0MC0+YWRkKDE4MCk7CisgICAgXzQ2NDAtPmFkZCgxNzkpOworICAgIF80NjQw
LT5hZGQoMjU4Myk7CisgICAgXzQ2NDAtPmFkZCg3MDYpOworICAgIF80NjQwLT5hZGQoMjUzKTsK
KyAgICBfNDY0MC0+YWRkKDI4Mik7CisgICAgXzQ2NDAtPmFkZCgxMDc1KTsKKyAgICBfNDY0MC0+
YWRkKDY2MSk7CisgICAgXzQ2NDAtPmFkZCgyMzk5KTsKKyAgICBfNDY0MC0+YWRkKDk2OCk7Cisg
ICAgXzQ2NDAtPmFkZCgxNDkpOworICAgIF80NjQwLT5hZGQoMTE0Nik7CisgICAgXzQ2NDAtPmFk
ZCgyNzMpOworICAgIF80NjQwLT5hZGQoMjM5OCk7CisgICAgXzQ2NDAtPmFkZCgyMjgpOworICAg
IF80NjQwLT5hZGQoMTQyKTsKKyAgICBfNDY0MC0+YWRkKDEwNCk7CisgICAgXzQ2NDAtPmFkZCgz
NTYpOworICAgIF80NjQwLT5hZGQoMzA5KTsKKyAgICBfNDY0MC0+YWRkKDE5Mik7CisgICAgXzQ2
NDAtPmFkZCgxMTMpOworICAgIF80NjQwLT5hZGQoMzQ1KTsKKyAgICBfNDY0MC0+YWRkKDM5MCk7
CisgICAgXzQ2NDAtPmFkZCgxNjcpOworICAgIF80NjQwLT5hZGQoMjQwKTsKKyAgICBfNDY0MC0+
YWRkKDMzOCk7CisgICAgXzQ2NDAtPmFkZCgyMTYpOworICAgIF80NjQwLT5hZGQoMjM5NCk7Cisg
ICAgXzQ2NDAtPmFkZCg0NDEpOworICAgIF80NjQwLT5hZGQoMjQzKTsKKyAgICBfNDY0MC0+YWRk
KDIpOworICAgIF80NjQwLT5hZGQoMjQ4KTsKKyAgICBfNDY0MC0+YWRkKDEzOSk7CisgICAgXzQ2
NDAtPmFkZCgyMzk2KTsKKyAgICBfNDY0MC0+YWRkKDI3NjApOworICAgIF80NjQ0LT5hZGQoMjA0
KTsKKyAgICBfNDY0NC0+YWRkKDkzNSk7CisgICAgXzQ2NDQtPmFkZCg5OTIpOworICAgIF80NjQ0
LT5hZGQoMTU2KTsKKyAgICBfNDY0NC0+YWRkKDMxOCk7CisgICAgXzQ2NDQtPmFkZCgxMjgpOwor
ICAgIF80NjQ0LT5hZGQoMTgwKTsKKyAgICBfNDY0NC0+YWRkKDE3OSk7CisgICAgXzQ2NDQtPmFk
ZCgyNTgzKTsKKyAgICBfNDY0NC0+YWRkKDcwNik7CisgICAgXzQ2NDQtPmFkZCgyNTMpOworICAg
IF80NjQ0LT5hZGQoMjgyKTsKKyAgICBfNDY0NC0+YWRkKDEwNzUpOworICAgIF80NjQ0LT5hZGQo
NjYxKTsKKyAgICBfNDY0NC0+YWRkKDIzOTkpOworICAgIF80NjQ0LT5hZGQoOTY4KTsKKyAgICBf
NDY0NC0+YWRkKDE0OSk7CisgICAgXzQ2NDQtPmFkZCgxMTQ2KTsKKyAgICBfNDY0NC0+YWRkKDI3
Myk7CisgICAgXzQ2NDQtPmFkZCgyMzk4KTsKKyAgICBfNDY0NC0+YWRkKDIyOCk7CisgICAgXzQ2
NDQtPmFkZCgxNDIpOworICAgIF80NjQ0LT5hZGQoMTA0KTsKKyAgICBfNDY0NC0+YWRkKDM1Nik7
CisgICAgXzQ2NDQtPmFkZCgzMDkpOworICAgIF80NjQ0LT5hZGQoMTkyKTsKKyAgICBfNDY0NC0+
YWRkKDExMyk7CisgICAgXzQ2NDQtPmFkZCgzNDUpOworICAgIF80NjQ0LT5hZGQoMzkwKTsKKyAg
ICBfNDY0NC0+YWRkKDE2Nyk7CisgICAgXzQ2NDQtPmFkZCgyNDApOworICAgIF80NjQ0LT5hZGQo
MzM4KTsKKyAgICBfNDY0NC0+YWRkKDIxNik7CisgICAgXzQ2NDQtPmFkZCgyMzk0KTsKKyAgICBf
NDY0NC0+YWRkKDQ0MSk7CisgICAgXzQ2NDQtPmFkZCgyNDMpOworICAgIF80NjQ0LT5hZGQoMik7
CisgICAgXzQ2NDQtPmFkZCgyNDgpOworICAgIF80NjQ0LT5hZGQoMTM5KTsKKyAgICBfNDY0NC0+
YWRkKDIzOTYpOworICAgIF80NjQ0LT5hZGQoMjc2MCk7CisgICAgXzQ2MzgtPmFkZCgyMDQpOwor
ICAgIF80NjM4LT5hZGQoOTM1KTsKKyAgICBfNDYzOC0+YWRkKDk5Mik7CisgICAgXzQ2MzgtPmFk
ZCgxNTYpOworICAgIF80NjM4LT5hZGQoMzE4KTsKKyAgICBfNDYzOC0+YWRkKDEyOCk7CisgICAg
XzQ2MzgtPmFkZCgxODApOworICAgIF80NjM4LT5hZGQoMTc5KTsKKyAgICBfNDYzOC0+YWRkKDcw
Nik7CisgICAgXzQ2MzgtPmFkZCgyNTMpOworICAgIF80NjM4LT5hZGQoMjgyKTsKKyAgICBfNDYz
OC0+YWRkKDI0MCk7CisgICAgXzQ2MzgtPmFkZCgxMDc1KTsKKyAgICBfNDYzOC0+YWRkKDY2MSk7
CisgICAgXzQ2MzgtPmFkZCgyMzk5KTsKKyAgICBfNDYzOC0+YWRkKDk2OCk7CisgICAgXzQ2Mzgt
PmFkZCgxNDkpOworICAgIF80NjM4LT5hZGQoMTE0Nik7CisgICAgXzQ2MzgtPmFkZCgyNzMpOwor
ICAgIF80NjM4LT5hZGQoMjM5OCk7CisgICAgXzQ2MzgtPmFkZCgyMjgpOworICAgIF80NjM4LT5h
ZGQoMTQyKTsKKyAgICBfNDYzOC0+YWRkKDEwNCk7CisgICAgXzQ2MzgtPmFkZCgzMDkpOworICAg
IF80NjM4LT5hZGQoMTkyKTsKKyAgICBfNDYzOC0+YWRkKDExMyk7CisgICAgXzQ2MzgtPmFkZCgz
NDUpOworICAgIF80NjM4LT5hZGQoMjc1OSk7CisgICAgXzQ2MzgtPmFkZCgxNjcpOworICAgIF80
NjM4LT5hZGQoMzM4KTsKKyAgICBfNDYzOC0+YWRkKDIxNik7CisgICAgXzQ2MzgtPmFkZCgzNTYp
OworICAgIF80NjM4LT5hZGQoNDQxKTsKKyAgICBfNDYzOC0+YWRkKDEzOSk7CisgICAgXzQ2Mzgt
PmFkZCgyKTsKKyAgICBfNDYzOC0+YWRkKDI0Myk7CisgICAgXzQ2MzgtPmFkZCgyNTgzKTsKKyAg
ICBfNDYzOC0+YWRkKDI0OCk7CisgICAgXzQ2MzgtPmFkZCgyNzU4KTsKKyAgICBfNDYzOS0+YWRk
KDIwNCk7CisgICAgXzQ2MzktPmFkZCg5MzUpOworICAgIF80NjM5LT5hZGQoOTkyKTsKKyAgICBf
NDYzOS0+YWRkKDE1Nik7CisgICAgXzQ2MzktPmFkZCgzMTgpOworICAgIF80NjM5LT5hZGQoMTI4
KTsKKyAgICBfNDYzOS0+YWRkKDE4MCk7CisgICAgXzQ2MzktPmFkZCgxNzkpOworICAgIF80NjM5
LT5hZGQoNzA2KTsKKyAgICBfNDYzOS0+YWRkKDI1Myk7CisgICAgXzQ2MzktPmFkZCgyODIpOwor
ICAgIF80NjM5LT5hZGQoMjQwKTsKKyAgICBfNDYzOS0+YWRkKDEwNzUpOworICAgIF80NjM5LT5h
ZGQoNjYxKTsKKyAgICBfNDYzOS0+YWRkKDIzOTkpOworICAgIF80NjM5LT5hZGQoOTY4KTsKKyAg
ICBfNDYzOS0+YWRkKDE0OSk7CisgICAgXzQ2MzktPmFkZCgxMTQ2KTsKKyAgICBfNDYzOS0+YWRk
KDI3Myk7CisgICAgXzQ2MzktPmFkZCgyMzk4KTsKKyAgICBfNDYzOS0+YWRkKDIyOCk7CisgICAg
XzQ2MzktPmFkZCgxNDIpOworICAgIF80NjM5LT5hZGQoMTA0KTsKKyAgICBfNDYzOS0+YWRkKDMw
OSk7CisgICAgXzQ2MzktPmFkZCgxOTIpOworICAgIF80NjM5LT5hZGQoMTEzKTsKKyAgICBfNDYz
OS0+YWRkKDM0NSk7CisgICAgXzQ2MzktPmFkZCgyNzU5KTsKKyAgICBfNDYzOS0+YWRkKDE2Nyk7
CisgICAgXzQ2MzktPmFkZCgzMzgpOworICAgIF80NjM5LT5hZGQoMjE2KTsKKyAgICBfNDYzOS0+
YWRkKDM1Nik7CisgICAgXzQ2MzktPmFkZCg0NDEpOworICAgIF80NjM5LT5hZGQoMTM5KTsKKyAg
ICBfNDYzOS0+YWRkKDIpOworICAgIF80NjM5LT5hZGQoMjQzKTsKKyAgICBfNDYzOS0+YWRkKDI1
ODMpOworICAgIF80NjM5LT5hZGQoMjQ4KTsKKyAgICBfNDYzOS0+YWRkKDI3NTgpOworICAgIF80
NjQ5LT5hZGQoMjA0KTsKKyAgICBfNDY0OS0+YWRkKDkzNSk7CisgICAgXzQ2NDktPmFkZCg5OTIp
OworICAgIF80NjQ5LT5hZGQoMzE4KTsKKyAgICBfNDY0OS0+YWRkKDEyOCk7CisgICAgXzQ2NDkt
PmFkZCgxODApOworICAgIF80NjQ5LT5hZGQoMTc5KTsKKyAgICBfNDY0OS0+YWRkKDI1ODMpOwor
ICAgIF80NjQ5LT5hZGQoMTU2KTsKKyAgICBfNDY0OS0+YWRkKDcwNik7CisgICAgXzQ2NDktPmFk
ZCgyNTMpOworICAgIF80NjQ5LT5hZGQoMjgyKTsKKyAgICBfNDY0OS0+YWRkKDEwNzUpOworICAg
IF80NjQ5LT5hZGQoNjYxKTsKKyAgICBfNDY0OS0+YWRkKDIzOTkpOworICAgIF80NjQ5LT5hZGQo
OTY4KTsKKyAgICBfNDY0OS0+YWRkKDE0OSk7CisgICAgXzQ2NDktPmFkZCgxMTQ2KTsKKyAgICBf
NDY0OS0+YWRkKDI3Myk7CisgICAgXzQ2NDktPmFkZCgyMzk4KTsKKyAgICBfNDY0OS0+YWRkKDIy
OCk7CisgICAgXzQ2NDktPmFkZCgyNDApOworICAgIF80NjQ5LT5hZGQoMTQyKTsKKyAgICBfNDY0
OS0+YWRkKDEwNCk7CisgICAgXzQ2NDktPmFkZCgzMDkpOworICAgIF80NjQ5LT5hZGQoMTkyKTsK
KyAgICBfNDY0OS0+YWRkKDExMyk7CisgICAgXzQ2NDktPmFkZCgyMzk1KTsKKyAgICBfNDY0OS0+
YWRkKDM0NSk7CisgICAgXzQ2NDktPmFkZCgxNjcpOworICAgIF80NjQ5LT5hZGQoMzM4KTsKKyAg
ICBfNDY0OS0+YWRkKDIxNik7CisgICAgXzQ2NDktPmFkZCg0NDEpOworICAgIF80NjQ5LT5hZGQo
MTM5KTsKKyAgICBfNDY0OS0+YWRkKDI0Myk7CisgICAgXzQ2NDktPmFkZCgyKTsKKyAgICBfNDY0
OS0+YWRkKDI0OCk7CisgICAgXzQ2NDktPmFkZCgzNTYpOworICAgIF80NjQ5LT5hZGQoMjM5Nyk7
CisgICAgXzQ2MzctPmFkZCgyMDQpOworICAgIF80NjM3LT5hZGQoOTM1KTsKKyAgICBfNDYzNy0+
YWRkKDk5Mik7CisgICAgXzQ2MzctPmFkZCgzMTgpOworICAgIF80NjM3LT5hZGQoMTI4KTsKKyAg
ICBfNDYzNy0+YWRkKDE4MCk7CisgICAgXzQ2MzctPmFkZCgxNzkpOworICAgIF80NjM3LT5hZGQo
MjU4Myk7CisgICAgXzQ2MzctPmFkZCgxNTYpOworICAgIF80NjM3LT5hZGQoNzA2KTsKKyAgICBf
NDYzNy0+YWRkKDI1Myk7CisgICAgXzQ2MzctPmFkZCgyODIpOworICAgIF80NjM3LT5hZGQoMTA3
NSk7CisgICAgXzQ2MzctPmFkZCg2NjEpOworICAgIF80NjM3LT5hZGQoMjM5OSk7CisgICAgXzQ2
MzctPmFkZCg5NjgpOworICAgIF80NjM3LT5hZGQoMTQ5KTsKKyAgICBfNDYzNy0+YWRkKDExNDYp
OworICAgIF80NjM3LT5hZGQoMjczKTsKKyAgICBfNDYzNy0+YWRkKDIzOTgpOworICAgIF80NjM3
LT5hZGQoMjI4KTsKKyAgICBfNDYzNy0+YWRkKDI0MCk7CisgICAgXzQ2MzctPmFkZCgxNDIpOwor
ICAgIF80NjM3LT5hZGQoMTA0KTsKKyAgICBfNDYzNy0+YWRkKDMwOSk7CisgICAgXzQ2MzctPmFk
ZCgxOTIpOworICAgIF80NjM3LT5hZGQoMTEzKTsKKyAgICBfNDYzNy0+YWRkKDM1Nik7CisgICAg
XzQ2MzctPmFkZCgzNDUpOworICAgIF80NjM3LT5hZGQoMTY3KTsKKyAgICBfNDYzNy0+YWRkKDMz
OCk7CisgICAgXzQ2MzctPmFkZCgyMTYpOworICAgIF80NjM3LT5hZGQoNDQxKTsKKyAgICBfNDYz
Ny0+YWRkKDEzOSk7CisgICAgXzQ2MzctPmFkZCgyNDMpOworICAgIF80NjM3LT5hZGQoMik7Cisg
ICAgXzQ2MzctPmFkZCgyNDgpOworICAgIF80NjM3LT5hZGQoMzIzKTsKKyAgICBfNDYzNS0+YWRk
KDIwNCk7CisgICAgXzQ2MzUtPmFkZCg5MzUpOworICAgIF80NjM1LT5hZGQoOTkyKTsKKyAgICBf
NDYzNS0+YWRkKDE1Nik7CisgICAgXzQ2MzUtPmFkZCgzNTYpOworICAgIF80NjM1LT5hZGQoMTI4
KTsKKyAgICBfNDYzNS0+YWRkKDE4MCk7CisgICAgXzQ2MzUtPmFkZCgxNzkpOworICAgIF80NjM1
LT5hZGQoMjU4Myk7CisgICAgXzQ2MzUtPmFkZCg3MDYpOworICAgIF80NjM1LT5hZGQoMjUzKTsK
KyAgICBfNDYzNS0+YWRkKDI4Mik7CisgICAgXzQ2MzUtPmFkZCgxMDc1KTsKKyAgICBfNDYzNS0+
YWRkKDY2MSk7CisgICAgXzQ2MzUtPmFkZCgyNzU3KTsKKyAgICBfNDYzNS0+YWRkKDk2OCk7Cisg
ICAgXzQ2MzUtPmFkZCgxNDkpOworICAgIF80NjM1LT5hZGQoMTE0Nik7CisgICAgXzQ2MzUtPmFk
ZCgyNzMpOworICAgIF80NjM1LT5hZGQoMjQ4KTsKKyAgICBfNDYzNS0+YWRkKDIyOCk7CisgICAg
XzQ2MzUtPmFkZCgxNDIpOworICAgIF80NjM1LT5hZGQoMTA0KTsKKyAgICBfNDYzNS0+YWRkKDMw
OSk7CisgICAgXzQ2MzUtPmFkZCgxOTIpOworICAgIF80NjM1LT5hZGQoMTEzKTsKKyAgICBfNDYz
NS0+YWRkKDI0MCk7CisgICAgXzQ2MzUtPmFkZCgzNDUpOworICAgIF80NjM1LT5hZGQoMTY3KTsK
KyAgICBfNDYzNS0+YWRkKDMzOCk7CisgICAgXzQ2MzUtPmFkZCgyMTYpOworICAgIF80NjM1LT5h
ZGQoNDQxKTsKKyAgICBfNDYzNS0+YWRkKDEzOSk7CisgICAgXzQ2MzUtPmFkZCgyNDMpOworICAg
IF80NjM1LT5hZGQoMik7CisgICAgXzQ2MzUtPmFkZCgyNzU2KTsKKyAgICBfNDYzNi0+YWRkKDIw
NCk7CisgICAgXzQ2MzYtPmFkZCg5MzUpOworICAgIF80NjM2LT5hZGQoOTkyKTsKKyAgICBfNDYz
Ni0+YWRkKDE1Nik7CisgICAgXzQ2MzYtPmFkZCgzNTYpOworICAgIF80NjM2LT5hZGQoMTI4KTsK
KyAgICBfNDYzNi0+YWRkKDE4MCk7CisgICAgXzQ2MzYtPmFkZCgxNzkpOworICAgIF80NjM2LT5h
ZGQoMjU4Myk7CisgICAgXzQ2MzYtPmFkZCg3MDYpOworICAgIF80NjM2LT5hZGQoMjUzKTsKKyAg
ICBfNDYzNi0+YWRkKDI4Mik7CisgICAgXzQ2MzYtPmFkZCgxMDc1KTsKKyAgICBfNDYzNi0+YWRk
KDY2MSk7CisgICAgXzQ2MzYtPmFkZCgyNzU3KTsKKyAgICBfNDYzNi0+YWRkKDk2OCk7CisgICAg
XzQ2MzYtPmFkZCgxNDkpOworICAgIF80NjM2LT5hZGQoMTE0Nik7CisgICAgXzQ2MzYtPmFkZCgy
NzMpOworICAgIF80NjM2LT5hZGQoMjQ4KTsKKyAgICBfNDYzNi0+YWRkKDIyOCk7CisgICAgXzQ2
MzYtPmFkZCgxNDIpOworICAgIF80NjM2LT5hZGQoMTA0KTsKKyAgICBfNDYzNi0+YWRkKDMwOSk7
CisgICAgXzQ2MzYtPmFkZCgxOTIpOworICAgIF80NjM2LT5hZGQoMTEzKTsKKyAgICBfNDYzNi0+
YWRkKDI0MCk7CisgICAgXzQ2MzYtPmFkZCgzNDUpOworICAgIF80NjM2LT5hZGQoMTY3KTsKKyAg
ICBfNDYzNi0+YWRkKDMzOCk7CisgICAgXzQ2MzYtPmFkZCgyMTYpOworICAgIF80NjM2LT5hZGQo
NDQxKTsKKyAgICBfNDYzNi0+YWRkKDEzOSk7CisgICAgXzQ2MzYtPmFkZCgyNDMpOworICAgIF80
NjM2LT5hZGQoMik7CisgICAgXzQ2MzYtPmFkZCgyNzU2KTsKKyAgICBfNDY1OC0+YWRkKDIwNCk7
CisgICAgXzQ2NTgtPmFkZCg5MzUpOworICAgIF80NjU4LT5hZGQoOTkyKTsKKyAgICBfNDY1OC0+
YWRkKDE1Nik7CisgICAgXzQ2NTgtPmFkZCgyNDApOworICAgIF80NjU4LT5hZGQoMTI4KTsKKyAg
ICBfNDY1OC0+YWRkKDE4MCk7CisgICAgXzQ2NTgtPmFkZCgxNzkpOworICAgIF80NjU4LT5hZGQo
ODkxKTsKKyAgICBfNDY1OC0+YWRkKDcwNik7CisgICAgXzQ2NTgtPmFkZCgyNTMpOworICAgIF80
NjU4LT5hZGQoMjgyKTsKKyAgICBfNDY1OC0+YWRkKDEwNzUpOworICAgIF80NjU4LT5hZGQoNjYx
KTsKKyAgICBfNDY1OC0+YWRkKDk2OCk7CisgICAgXzQ2NTgtPmFkZCgxNDkpOworICAgIF80NjU4
LT5hZGQoMTE0Nik7CisgICAgXzQ2NTgtPmFkZCgyNzMpOworICAgIF80NjU4LT5hZGQoMjI4KTsK
KyAgICBfNDY1OC0+YWRkKDE0Mik7CisgICAgXzQ2NTgtPmFkZCgxMDQpOworICAgIF80NjU4LT5h
ZGQoMzA5KTsKKyAgICBfNDY1OC0+YWRkKDE5Mik7CisgICAgXzQ2NTgtPmFkZCgxMTMpOworICAg
IF80NjU4LT5hZGQoMzQ1KTsKKyAgICBfNDY1OC0+YWRkKDE2Nyk7CisgICAgXzQ2NTgtPmFkZCgz
MzgpOworICAgIF80NjU4LT5hZGQoMjE2KTsKKyAgICBfNDY1OC0+YWRkKDQ0MSk7CisgICAgXzQ2
NTgtPmFkZCgxMzkpOworICAgIF80NjU4LT5hZGQoMik7CisgICAgXzQ2NTgtPmFkZCgyNDMpOwor
ICAgIF80NjU4LT5hZGQoMjU4Myk7CisgICAgXzQ2NTgtPmFkZCgyNDgpOworICAgIF80NjU4LT5h
ZGQoMzU2KTsKKyAgICBfNDY1OC0+YWRkKDkxNSk7CisgICAgXzQ3MDAtPmFkZCgxNzkpOworICAg
IF80NzAwLT5hZGQoMTUxNik7CisgICAgXzQ3MDAtPmFkZCgxMDc1KTsKKyAgICBfNDcwMC0+YWRk
KDI3Myk7CisgICAgXzQ3MDAtPmFkZCg5NjgpOworICAgIF80NzAwLT5hZGQoMTE0Nik7CisgICAg
XzQ2OTktPmFkZCgxNzkpOworICAgIF80Njk5LT5hZGQoMTUxNik7CisgICAgXzQ2OTktPmFkZCgx
MDc1KTsKKyAgICBfNDY5OS0+YWRkKDI3Myk7CisgICAgXzQ2OTktPmFkZCg5NjgpOworICAgIF80
Njk5LT5hZGQoMTE0Nik7CisgICAgXzQ2OTUtPmFkZCg5NjgpOworICAgIF80Njk1LT5hZGQoMTE0
Nik7CisgICAgXzQ2OTUtPmFkZCgxNTE2KTsKKyAgICBfNDY5NS0+YWRkKDE3OSk7CisgICAgXzQ2
OTUtPmFkZCgyNzMpOworICAgIF80Njk1LT5hZGQoMTA3NSk7CisgICAgXzQ2OTgtPmFkZCg5Njgp
OworICAgIF80Njk4LT5hZGQoMTE0Nik7CisgICAgXzQ2OTgtPmFkZCgxNTE2KTsKKyAgICBfNDY5
OC0+YWRkKDE3OSk7CisgICAgXzQ2OTgtPmFkZCgyNzMpOworICAgIF80Njk4LT5hZGQoMTA3NSk7
CisgICAgXzQ2OTctPmFkZCgyNzMpOworICAgIF80Njk3LT5hZGQoMTA3NSk7CisgICAgXzQ2OTct
PmFkZCgxMTQ2KTsKKyAgICBfNDY5Ny0+YWRkKDk2OCk7CisgICAgXzQ2OTYtPmFkZCgyNzMpOwor
ICAgIF80Njk2LT5hZGQoMTA3NSk7CisgICAgXzQ2OTYtPmFkZCgxMTQ2KTsKKyAgICBfNDY5Ni0+
YWRkKDk2OCk7CisgICAgXzQ2OTUtPmFkZCgxMDc1KTsKKyAgICBfNDY5NS0+YWRkKDk2OCk7Cisg
ICAgXzQ2OTUtPmFkZCgyNzMpOworICAgIF80Njk1LT5hZGQoMTE0Nik7CisgICAgXzQ2OTgtPmFk
ZCgyNzMpOworICAgIF80Njk4LT5hZGQoOTY4KTsKKyAgICBfNDY5OC0+YWRkKDExNDYpOworICAg
IF80Njk4LT5hZGQoMTA3NSk7CisgICAgXzQ2NzYtPmFkZCgxMDI4KTsKKyAgICBfNDY3NS0+YWRk
KDEwMjgpOworICAgIF80NjcxLT5hZGQoMTAyOCk7CisgICAgXzQ2NzQtPmFkZCgxMDI4KTsKKyAg
ICBfNDY1Ny0+YWRkKDQ0MSk7CisgICAgXzQ2NTctPmFkZCg2NjEpOworICAgIF80NjU3LT5hZGQo
NzA2KTsKKyAgICBfNDY1Ni0+YWRkKDQ0MSk7CisgICAgXzQ2NTYtPmFkZCg2NjEpOworICAgIF80
NjU2LT5hZGQoNzA2KTsKKyAgICBfNDY1Mi0+YWRkKDcwNik7CisgICAgXzQ2NTItPmFkZCg2NjEp
OworICAgIF80NjUyLT5hZGQoNDQxKTsKKyAgICBfNDY1NS0+YWRkKDQ0MSk7CisgICAgXzQ2NTUt
PmFkZCg2NjEpOworICAgIF80NjU1LT5hZGQoNzA2KTsKKyAgICBfNDY1My0+YWRkKDQ0MSk7Cisg
ICAgXzQ2NTMtPmFkZCg2NjEpOworICAgIF80NjU0LT5hZGQoNDQxKTsKKyAgICBfNDY1NC0+YWRk
KDY2MSk7CisgICAgXzQ2NTUtPmFkZCg0NDEpOworICAgIF80NjU1LT5hZGQoNjYxKTsKKyAgICBf
NDY1Mi0+YWRkKDY2MSk7CisgICAgXzQ2NTItPmFkZCg0NDEpOworICAgIF80NjUwLT5hZGQoNDQx
KTsKKyAgICBfNDY1MS0+YWRkKDQ0MSk7CisgICAgXzQ2NDktPmFkZCg0NDEpOworICAgIF80NjM3
LT5hZGQoNDQxKTsKKyAgICBfNDY0Ny0+YWRkKDQ0MSk7CisgICAgXzQ2NDgtPmFkZCg0NDEpOwor
ICAgIF80NjQ2LT5hZGQoNDQxKTsKKyAgICBfNDY0Ni0+YWRkKDQ0MSk7CisgICAgXzQ2NDMtPmFk
ZCg0NDEpOworICAgIF80NjQ1LT5hZGQoNDQxKTsKKyAgICBfNDY0MS0+YWRkKDQ0MSk7CisgICAg
XzQ2NDItPmFkZCgyMDQpOworICAgIF80NjQyLT5hZGQoOTM1KTsKKyAgICBfNDY0Mi0+YWRkKDk5
Mik7CisgICAgXzQ2NDItPmFkZCgxNTYpOworICAgIF80NjQyLT5hZGQoMzE4KTsKKyAgICBfNDY0
Mi0+YWRkKDEyOCk7CisgICAgXzQ2NDItPmFkZCgxODApOworICAgIF80NjQyLT5hZGQoMTc5KTsK
KyAgICBfNDY0Mi0+YWRkKDcwNik7CisgICAgXzQ2NDItPmFkZCgyNTMpOworICAgIF80NjQyLT5h
ZGQoMjgyKTsKKyAgICBfNDY0Mi0+YWRkKDI0MCk7CisgICAgXzQ2NDItPmFkZCgxMDc1KTsKKyAg
ICBfNDY0Mi0+YWRkKDY2MSk7CisgICAgXzQ2NDItPmFkZCgyMzk5KTsKKyAgICBfNDY0Mi0+YWRk
KDk2OCk7CisgICAgXzQ2NDItPmFkZCgxNDkpOworICAgIF80NjQyLT5hZGQoMTE0Nik7CisgICAg
XzQ2NDItPmFkZCgyNzMpOworICAgIF80NjQyLT5hZGQoMjM5OCk7CisgICAgXzQ2NDItPmFkZCgy
MjgpOworICAgIF80NjQyLT5hZGQoMTQyKTsKKyAgICBfNDY0Mi0+YWRkKDEwNCk7CisgICAgXzQ2
NDItPmFkZCgzMDkpOworICAgIF80NjQyLT5hZGQoMTkyKTsKKyAgICBfNDY0Mi0+YWRkKDExMyk7
CisgICAgXzQ2NDItPmFkZCgzNDUpOworICAgIF80NjQyLT5hZGQoMzkwKTsKKyAgICBfNDY0Mi0+
YWRkKDE2Nyk7CisgICAgXzQ2NDItPmFkZCgzMzgpOworICAgIF80NjQyLT5hZGQoMjE2KTsKKyAg
ICBfNDY0Mi0+YWRkKDIzOTQpOworICAgIF80NjQyLT5hZGQoNDQxKTsKKyAgICBfNDY0Mi0+YWRk
KDEzOSk7CisgICAgXzQ2NDItPmFkZCgyKTsKKyAgICBfNDY0Mi0+YWRkKDI0Myk7CisgICAgXzQ2
NDItPmFkZCgyMzk2KTsKKyAgICBfNDY0Mi0+YWRkKDI0OCk7CisgICAgXzQ2NDItPmFkZCgzNTYp
OworICAgIF80NjQyLT5hZGQoNDQxKTsKKyAgICBkZWxldGUgXzQ2MzU7CisgICAgZGVsZXRlIF80
NjM2OworICAgIGRlbGV0ZSBfNDYzNzsKKyAgICBkZWxldGUgXzQ2Mzg7CisgICAgZGVsZXRlIF80
NjM5OworICAgIGRlbGV0ZSBfNDY0MDsKKyAgICBkZWxldGUgXzQ2NDE7CisgICAgZGVsZXRlIF80
NjQyOworICAgIGRlbGV0ZSBfNDY0MzsKKyAgICBkZWxldGUgXzQ2NDQ7CisgICAgZGVsZXRlIF80
NjQ1OworICAgIGRlbGV0ZSBfNDY0NjsKKyAgICBkZWxldGUgXzQ2NDc7CisgICAgZGVsZXRlIF80
NjQ4OworICAgIGRlbGV0ZSBfNDY0OTsKKyAgICBkZWxldGUgXzQ2NTA7CisgICAgZGVsZXRlIF80
NjUxOworICAgIGRlbGV0ZSBfNDY1MjsKKyAgICBkZWxldGUgXzQ2NTM7CisgICAgZGVsZXRlIF80
NjU0OworICAgIGRlbGV0ZSBfNDY1NTsKKyAgICBkZWxldGUgXzQ2NTY7CisgICAgZGVsZXRlIF80
NjU3OworICAgIGRlbGV0ZSBfNDY1ODsKKyAgICBkZWxldGUgXzQ2NTk7CisgICAgZGVsZXRlIF80
NjYwOworICAgIGRlbGV0ZSBfNDY2MTsKKyAgICBkZWxldGUgXzQ2NjI7CisgICAgZGVsZXRlIF80
NjYzOworICAgIGRlbGV0ZSBfNDY2NDsKKyAgICBkZWxldGUgXzQ2NjU7CisgICAgZGVsZXRlIF80
NjY2OworICAgIGRlbGV0ZSBfNDY2NzsKKyAgICBkZWxldGUgXzQ2Njg7CisgICAgZGVsZXRlIF80
NjY5OworICAgIGRlbGV0ZSBfNDY3MDsKKyAgICBkZWxldGUgXzQ2NzE7CisgICAgZGVsZXRlIF80
NjcyOworICAgIGRlbGV0ZSBfNDY3MzsKKyAgICBkZWxldGUgXzQ2NzQ7CisgICAgZGVsZXRlIF80
Njc1OworICAgIGRlbGV0ZSBfNDY3NjsKKyAgICBkZWxldGUgXzQ2Nzc7CisgICAgZGVsZXRlIF80
Njc4OworICAgIGRlbGV0ZSBfNDY3OTsKKyAgICBkZWxldGUgXzQ2ODA7CisgICAgZGVsZXRlIF80
NjgxOworICAgIGRlbGV0ZSBfNDY4MjsKKyAgICBkZWxldGUgXzQ2ODM7CisgICAgZGVsZXRlIF80
Njg0OworICAgIGRlbGV0ZSBfNDY4NTsKKyAgICBkZWxldGUgXzQ2ODY7CisgICAgZGVsZXRlIF80
Njg3OworICAgIGRlbGV0ZSBfNDY4ODsKKyAgICBkZWxldGUgXzQ2ODk7CisgICAgZGVsZXRlIF80
NjkwOworICAgIGRlbGV0ZSBfNDY5MTsKKyAgICBkZWxldGUgXzQ2OTI7CisgICAgZGVsZXRlIF80
NjkzOworICAgIGRlbGV0ZSBfNDY5NDsKKyAgICBkZWxldGUgXzQ2OTU7CisgICAgZGVsZXRlIF80
Njk2OworICAgIGRlbGV0ZSBfNDY5NzsKKyAgICBkZWxldGUgXzQ2OTg7CisgICAgZGVsZXRlIF80
Njk5OworICAgIGRlbGV0ZSBfNDcwMDsKKyAgICBkZWxldGUgXzQ3MDE7CisgICAgZGVsZXRlIF80
NzAyOworICAgIGRlbGV0ZSBfNDcwMzsKKyAgICBkZWxldGUgXzQ3MDQ7CisgICAgZGVsZXRlIF80
NzA1OworICAgIGRlbGV0ZSBfNDcwNjsKKyAgICBkZWxldGUgXzQ3MDc7CisgICAgZGVsZXRlIF80
NzA4OworICAgIGRlbGV0ZSBfNDcwOTsKKyAgICBkZWxldGUgXzQ3MTA7CisgICAgZGVsZXRlIF80
NzExOworICAgIGRlbGV0ZSBfNDcxMjsKKyAgICBkZWxldGUgXzQ3MTM7CisgICAgZGVsZXRlIF80
NzE0OworICAgIGRlbGV0ZSBfNDcxNTsKKyAgICBkZWxldGUgXzQ3MTY7CisgICAgYXV0byogXzQ3
MTcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDcxOCA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
NzE5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ3MjAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDcyMSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NzIyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ3MjMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcyNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzI1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MjYgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcyNyA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzI4ID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MjkgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcz
MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80NzMxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ3MzIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDczMyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NzM0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ3MzUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDczNiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzM3ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MzggPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDczOSA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzQwID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NDEg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDc0MiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NzQzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ3NDQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDc0NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NzQ2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NDcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc0OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzQ5ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NTAgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc1MSA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzUyID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3
NTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDc1NCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NzU1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ3NTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDc1NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NzU4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NTkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc2MCA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzYxID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NjIgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc2MyA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzY0
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ3NjUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDc2NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NzY3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ3NjggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDc2OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzcwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NzEgPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc3MiA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzczID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NzQgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc3NSA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
Nzc2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ3NzcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDc3OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80Nzc5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ3ODAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc4MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzgyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3ODMgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc4NCA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Nzg1ID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3ODYgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc4
NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80Nzg4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ3ODkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDc5MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NzkxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ3OTIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc5MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Nzk0ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3OTUgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc5NiA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Nzk3ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3OTgg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDc5OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIF80
Nzk4LT5hZGQoMTgwKTsKKyAgICBfNDc5OC0+YWRkKDE5Mik7CisgICAgXzQ3OTgtPmFkZCgyMDQp
OworICAgIF80Nzk4LT5hZGQoMjE2KTsKKyAgICBfNDc5OC0+YWRkKDIyOCk7CisgICAgXzQ3OTgt
PmFkZCgyNDApOworICAgIF80Nzk4LT5hZGQoOTc0KTsKKyAgICBfNDc5OC0+YWRkKDE2MTMpOwor
ICAgIF80Nzk4LT5hZGQoMTQyKTsKKyAgICBfNDc5OC0+YWRkKDE0OSk7CisgICAgXzQ3OTgtPmFk
ZCgxNTYpOworICAgIF80Nzk3LT5hZGQoMTgwKTsKKyAgICBfNDc5Ny0+YWRkKDE5Mik7CisgICAg
XzQ3OTctPmFkZCgyMDQpOworICAgIF80Nzk3LT5hZGQoMjE2KTsKKyAgICBfNDc5Ny0+YWRkKDIy
OCk7CisgICAgXzQ3OTctPmFkZCgyNDApOworICAgIF80Nzk3LT5hZGQoOTc0KTsKKyAgICBfNDc5
Ny0+YWRkKDE2MTMpOworICAgIF80Nzk3LT5hZGQoMTQyKTsKKyAgICBfNDc5Ny0+YWRkKDE0OSk7
CisgICAgXzQ3OTctPmFkZCgxNTYpOworICAgIF80Nzk2LT5hZGQoMjA0KTsKKyAgICBfNDc5Ni0+
YWRkKDIxNik7CisgICAgXzQ3OTYtPmFkZCgxNTYpOworICAgIF80Nzk2LT5hZGQoMjI4KTsKKyAg
ICBfNDc5Ni0+YWRkKDE0Mik7CisgICAgXzQ3OTYtPmFkZCgxOTIpOworICAgIF80Nzk2LT5hZGQo
MTYxMyk7CisgICAgXzQ3OTYtPmFkZCgxODApOworICAgIF80Nzk2LT5hZGQoMTQ5KTsKKyAgICBf
NDc5Ni0+YWRkKDI0MCk7CisgICAgXzQ3OTYtPmFkZCg5NzQpOworICAgIF80NzkzLT5hZGQoMjA0
KTsKKyAgICBfNDc5My0+YWRkKDIxNik7CisgICAgXzQ3OTMtPmFkZCgxNTYpOworICAgIF80Nzkz
LT5hZGQoMjI4KTsKKyAgICBfNDc5My0+YWRkKDE0Mik7CisgICAgXzQ3OTMtPmFkZCgxOTIpOwor
ICAgIF80NzkzLT5hZGQoMTYxMyk7CisgICAgXzQ3OTMtPmFkZCgxODApOworICAgIF80NzkzLT5h
ZGQoMTQ5KTsKKyAgICBfNDc5My0+YWRkKDI0MCk7CisgICAgXzQ3OTMtPmFkZCg5NzQpOworICAg
IF80Nzk0LT5hZGQoMjA0KTsKKyAgICBfNDc5NC0+YWRkKDIxNik7CisgICAgXzQ3OTQtPmFkZCgy
MjgpOworICAgIF80Nzk0LT5hZGQoMjQwKTsKKyAgICBfNDc5NC0+YWRkKDE0Mik7CisgICAgXzQ3
OTQtPmFkZCgxOTIpOworICAgIF80Nzk0LT5hZGQoMTYxMyk7CisgICAgXzQ3OTQtPmFkZCgxODAp
OworICAgIF80Nzk0LT5hZGQoMTQ5KTsKKyAgICBfNDc5NC0+YWRkKDE1Nik7CisgICAgXzQ3OTQt
PmFkZCg5NzQpOworICAgIF80Nzk0LT5hZGQoMTY3KTsKKyAgICBfNDc5NC0+YWRkKDExMjEpOwor
ICAgIF80Nzk0LT5hZGQoNDU2KTsKKyAgICBfNDc5NC0+YWRkKDEwNCk7CisgICAgXzQ3OTQtPmFk
ZCgxNTIwKTsKKyAgICBfNDc5NC0+YWRkKDE4MzgpOworICAgIF80Nzk1LT5hZGQoMjA0KTsKKyAg
ICBfNDc5NS0+YWRkKDIxNik7CisgICAgXzQ3OTUtPmFkZCgyMjgpOworICAgIF80Nzk1LT5hZGQo
MjQwKTsKKyAgICBfNDc5NS0+YWRkKDE0Mik7CisgICAgXzQ3OTUtPmFkZCgxOTIpOworICAgIF80
Nzk1LT5hZGQoMTYxMyk7CisgICAgXzQ3OTUtPmFkZCgxODApOworICAgIF80Nzk1LT5hZGQoMTQ5
KTsKKyAgICBfNDc5NS0+YWRkKDE1Nik7CisgICAgXzQ3OTUtPmFkZCg5NzQpOworICAgIF80Nzk1
LT5hZGQoMTY3KTsKKyAgICBfNDc5NS0+YWRkKDExMjEpOworICAgIF80Nzk1LT5hZGQoNDU2KTsK
KyAgICBfNDc5NS0+YWRkKDEwNCk7CisgICAgXzQ3OTUtPmFkZCgxNTIwKTsKKyAgICBfNDc5NS0+
YWRkKDE4MzgpOworICAgIF80Nzk2LT5hZGQoMjA0KTsKKyAgICBfNDc5Ni0+YWRkKDQ1Nik7Cisg
ICAgXzQ3OTYtPmFkZCgxMTIxKTsKKyAgICBfNDc5Ni0+YWRkKDIyOCk7CisgICAgXzQ3OTYtPmFk
ZCgyNDApOworICAgIF80Nzk2LT5hZGQoMTQyKTsKKyAgICBfNDc5Ni0+YWRkKDEwNCk7CisgICAg
XzQ3OTYtPmFkZCgxOTIpOworICAgIF80Nzk2LT5hZGQoMTYxMyk7CisgICAgXzQ3OTYtPmFkZCgx
ODApOworICAgIF80Nzk2LT5hZGQoMTY3KTsKKyAgICBfNDc5Ni0+YWRkKDE1MjApOworICAgIF80
Nzk2LT5hZGQoMjE2KTsKKyAgICBfNDc5Ni0+YWRkKDE0OSk7CisgICAgXzQ3OTYtPmFkZCgxNTYp
OworICAgIF80Nzk2LT5hZGQoOTc0KTsKKyAgICBfNDc5Ni0+YWRkKDEzODEpOworICAgIF80Nzkz
LT5hZGQoMjA0KTsKKyAgICBfNDc5My0+YWRkKDQ1Nik7CisgICAgXzQ3OTMtPmFkZCgxMTIxKTsK
KyAgICBfNDc5My0+YWRkKDIyOCk7CisgICAgXzQ3OTMtPmFkZCgyNDApOworICAgIF80NzkzLT5h
ZGQoMTQyKTsKKyAgICBfNDc5My0+YWRkKDEwNCk7CisgICAgXzQ3OTMtPmFkZCgxOTIpOworICAg
IF80NzkzLT5hZGQoMTYxMyk7CisgICAgXzQ3OTMtPmFkZCgxODApOworICAgIF80NzkzLT5hZGQo
MTY3KTsKKyAgICBfNDc5My0+YWRkKDE1MjApOworICAgIF80NzkzLT5hZGQoMjE2KTsKKyAgICBf
NDc5My0+YWRkKDE0OSk7CisgICAgXzQ3OTMtPmFkZCgxNTYpOworICAgIF80NzkzLT5hZGQoOTc0
KTsKKyAgICBfNDc5My0+YWRkKDE1MTIpOworICAgIF80NzkxLT5hZGQoMjA0KTsKKyAgICBfNDc5
MS0+YWRkKDQ1Nik7CisgICAgXzQ3OTEtPmFkZCgxMTIxKTsKKyAgICBfNDc5MS0+YWRkKDIyOCk7
CisgICAgXzQ3OTEtPmFkZCgxNDIpOworICAgIF80NzkxLT5hZGQoMTA0KTsKKyAgICBfNDc5MS0+
YWRkKDE5Mik7CisgICAgXzQ3OTEtPmFkZCgxNjEzKTsKKyAgICBfNDc5MS0+YWRkKDE4MCk7Cisg
ICAgXzQ3OTEtPmFkZCgxNTEyKTsKKyAgICBfNDc5MS0+YWRkKDE2Nyk7CisgICAgXzQ3OTEtPmFk
ZCgxNTIwKTsKKyAgICBfNDc5MS0+YWRkKDIxNik7CisgICAgXzQ3OTEtPmFkZCgxNTYpOworICAg
IF80NzkxLT5hZGQoMTQ5KTsKKyAgICBfNDc5MS0+YWRkKDI0MCk7CisgICAgXzQ3OTEtPmFkZCg5
NzQpOworICAgIF80NzkxLT5hZGQoMTcwOCk7CisgICAgXzQ3OTItPmFkZCgyMDQpOworICAgIF80
NzkyLT5hZGQoNDU2KTsKKyAgICBfNDc5Mi0+YWRkKDExMjEpOworICAgIF80NzkyLT5hZGQoMjI4
KTsKKyAgICBfNDc5Mi0+YWRkKDE0Mik7CisgICAgXzQ3OTItPmFkZCgxMDQpOworICAgIF80Nzky
LT5hZGQoMTkyKTsKKyAgICBfNDc5Mi0+YWRkKDE2MTMpOworICAgIF80NzkyLT5hZGQoMTgwKTsK
KyAgICBfNDc5Mi0+YWRkKDE1MTIpOworICAgIF80NzkyLT5hZGQoMTY3KTsKKyAgICBfNDc5Mi0+
YWRkKDE1MjApOworICAgIF80NzkyLT5hZGQoMjE2KTsKKyAgICBfNDc5Mi0+YWRkKDE1Nik7Cisg
ICAgXzQ3OTItPmFkZCgxNDkpOworICAgIF80NzkyLT5hZGQoMjQwKTsKKyAgICBfNDc5Mi0+YWRk
KDk3NCk7CisgICAgXzQ3OTItPmFkZCgxNzA4KTsKKyAgICBfNDc4Ny0+YWRkKDIwNCk7CisgICAg
XzQ3ODctPmFkZCg0NTYpOworICAgIF80Nzg3LT5hZGQoMTEyMSk7CisgICAgXzQ3ODctPmFkZCgy
MjgpOworICAgIF80Nzg3LT5hZGQoMTQyKTsKKyAgICBfNDc4Ny0+YWRkKDEwNCk7CisgICAgXzQ3
ODctPmFkZCgxOTIpOworICAgIF80Nzg3LT5hZGQoMTYxMyk7CisgICAgXzQ3ODctPmFkZCgxODAp
OworICAgIF80Nzg3LT5hZGQoMTUxMik7CisgICAgXzQ3ODctPmFkZCgxNjcpOworICAgIF80Nzg3
LT5hZGQoMTUyMCk7CisgICAgXzQ3ODctPmFkZCgyMTYpOworICAgIF80Nzg3LT5hZGQoMTU2KTsK
KyAgICBfNDc4Ny0+YWRkKDE3MDgpOworICAgIF80Nzg3LT5hZGQoMTQ5KTsKKyAgICBfNDc4Ny0+
YWRkKDI0MCk7CisgICAgXzQ3ODctPmFkZCg5NzQpOworICAgIF80NzkwLT5hZGQoMjA0KTsKKyAg
ICBfNDc5MC0+YWRkKDQ1Nik7CisgICAgXzQ3OTAtPmFkZCgxMTIxKTsKKyAgICBfNDc5MC0+YWRk
KDIyOCk7CisgICAgXzQ3OTAtPmFkZCgxNDIpOworICAgIF80NzkwLT5hZGQoMTA0KTsKKyAgICBf
NDc5MC0+YWRkKDE5Mik7CisgICAgXzQ3OTAtPmFkZCgxNjEzKTsKKyAgICBfNDc5MC0+YWRkKDE4
MCk7CisgICAgXzQ3OTAtPmFkZCgxNTEyKTsKKyAgICBfNDc5MC0+YWRkKDE2Nyk7CisgICAgXzQ3
OTAtPmFkZCgxNTIwKTsKKyAgICBfNDc5MC0+YWRkKDIxNik7CisgICAgXzQ3OTAtPmFkZCgxNTYp
OworICAgIF80NzkwLT5hZGQoMTcwOCk7CisgICAgXzQ3OTAtPmFkZCgxNDkpOworICAgIF80Nzkw
LT5hZGQoMjQwKTsKKyAgICBfNDc5MC0+YWRkKDk3NCk7CisgICAgXzQ3ODktPmFkZCgyMDQpOwor
ICAgIF80Nzg5LT5hZGQoNDU2KTsKKyAgICBfNDc4OS0+YWRkKDExMjEpOworICAgIF80Nzg5LT5h
ZGQoMjI4KTsKKyAgICBfNDc4OS0+YWRkKDI0MCk7CisgICAgXzQ3ODktPmFkZCgxNDIpOworICAg
IF80Nzg5LT5hZGQoMTA0KTsKKyAgICBfNDc4OS0+YWRkKDE5Mik7CisgICAgXzQ3ODktPmFkZCgx
NjEzKTsKKyAgICBfNDc4OS0+YWRkKDE4MCk7CisgICAgXzQ3ODktPmFkZCgxNTEyKTsKKyAgICBf
NDc4OS0+YWRkKDE2Nyk7CisgICAgXzQ3ODktPmFkZCgxNTIwKTsKKyAgICBfNDc4OS0+YWRkKDIx
Nik7CisgICAgXzQ3ODktPmFkZCgxNzA4KTsKKyAgICBfNDc4OS0+YWRkKDE0OSk7CisgICAgXzQ3
ODktPmFkZCgxNTYpOworICAgIF80Nzg5LT5hZGQoOTc0KTsKKyAgICBfNDc4OS0+YWRkKDI0Myk7
CisgICAgXzQ3ODktPmFkZCgzNTYpOworICAgIF80Nzg5LT5hZGQoMjQ4KTsKKyAgICBfNDc4OS0+
YWRkKDMwOSk7CisgICAgXzQ3ODktPmFkZCgzNDUpOworICAgIF80Nzg5LT5hZGQoMzM4KTsKKyAg
ICBfNDc4OS0+YWRkKDE4MzcpOworICAgIF80Nzg4LT5hZGQoMjA0KTsKKyAgICBfNDc4OC0+YWRk
KDQ1Nik7CisgICAgXzQ3ODgtPmFkZCgxMTIxKTsKKyAgICBfNDc4OC0+YWRkKDIyOCk7CisgICAg
XzQ3ODgtPmFkZCgyNDApOworICAgIF80Nzg4LT5hZGQoMTQyKTsKKyAgICBfNDc4OC0+YWRkKDEw
NCk7CisgICAgXzQ3ODgtPmFkZCgxOTIpOworICAgIF80Nzg4LT5hZGQoMTYxMyk7CisgICAgXzQ3
ODgtPmFkZCgxODApOworICAgIF80Nzg4LT5hZGQoMTUxMik7CisgICAgXzQ3ODgtPmFkZCgxNjcp
OworICAgIF80Nzg4LT5hZGQoMTUyMCk7CisgICAgXzQ3ODgtPmFkZCgyMTYpOworICAgIF80Nzg4
LT5hZGQoMTcwOCk7CisgICAgXzQ3ODgtPmFkZCgxNDkpOworICAgIF80Nzg4LT5hZGQoMTU2KTsK
KyAgICBfNDc4OC0+YWRkKDk3NCk7CisgICAgXzQ3ODgtPmFkZCgyNDMpOworICAgIF80Nzg4LT5h
ZGQoMzU2KTsKKyAgICBfNDc4OC0+YWRkKDI0OCk7CisgICAgXzQ3ODgtPmFkZCgzMDkpOworICAg
IF80Nzg4LT5hZGQoMzQ1KTsKKyAgICBfNDc4OC0+YWRkKDMzOCk7CisgICAgXzQ3ODgtPmFkZCgx
ODM3KTsKKyAgICBfNDc4Ny0+YWRkKDIwNCk7CisgICAgXzQ3ODctPmFkZCg0NTYpOworICAgIF80
Nzg3LT5hZGQoMTEyMSk7CisgICAgXzQ3ODctPmFkZCg5NzQpOworICAgIF80Nzg3LT5hZGQoMjI4
KTsKKyAgICBfNDc4Ny0+YWRkKDE0Mik7CisgICAgXzQ3ODctPmFkZCgxMDQpOworICAgIF80Nzg3
LT5hZGQoMzA5KTsKKyAgICBfNDc4Ny0+YWRkKDE5Mik7CisgICAgXzQ3ODctPmFkZCgxNjEzKTsK
KyAgICBfNDc4Ny0+YWRkKDE4MCk7CisgICAgXzQ3ODctPmFkZCgxNTEyKTsKKyAgICBfNDc4Ny0+
YWRkKDM0NSk7CisgICAgXzQ3ODctPmFkZCgxNjcpOworICAgIF80Nzg3LT5hZGQoMzM4KTsKKyAg
ICBfNDc4Ny0+YWRkKDE1MjApOworICAgIF80Nzg3LT5hZGQoMjE2KTsKKyAgICBfNDc4Ny0+YWRk
KDE1Nik7CisgICAgXzQ3ODctPmFkZCgyNDgpOworICAgIF80Nzg3LT5hZGQoMjQzKTsKKyAgICBf
NDc4Ny0+YWRkKDE3MDgpOworICAgIF80Nzg3LT5hZGQoMzU2KTsKKyAgICBfNDc4Ny0+YWRkKDE0
OSk7CisgICAgXzQ3ODctPmFkZCgyNDApOworICAgIF80Nzg3LT5hZGQoMTY4Nyk7CisgICAgXzQ3
OTAtPmFkZCgyMDQpOworICAgIF80NzkwLT5hZGQoNDU2KTsKKyAgICBfNDc5MC0+YWRkKDExMjEp
OworICAgIF80NzkwLT5hZGQoOTc0KTsKKyAgICBfNDc5MC0+YWRkKDIyOCk7CisgICAgZGVsZXRl
IF80NzE3OworICAgIGRlbGV0ZSBfNDcxODsKKyAgICBkZWxldGUgXzQ3MTk7CisgICAgZGVsZXRl
IF80NzIwOworICAgIGRlbGV0ZSBfNDcyMTsKKyAgICBkZWxldGUgXzQ3MjI7CisgICAgZGVsZXRl
IF80NzIzOworICAgIGRlbGV0ZSBfNDcyNDsKKyAgICBkZWxldGUgXzQ3MjU7CisgICAgZGVsZXRl
IF80NzI2OworICAgIGRlbGV0ZSBfNDcyNzsKKyAgICBkZWxldGUgXzQ3Mjg7CisgICAgZGVsZXRl
IF80NzI5OworICAgIGRlbGV0ZSBfNDczMDsKKyAgICBkZWxldGUgXzQ3MzE7CisgICAgZGVsZXRl
IF80NzMyOworICAgIGRlbGV0ZSBfNDczMzsKKyAgICBkZWxldGUgXzQ3MzQ7CisgICAgZGVsZXRl
IF80NzM1OworICAgIGRlbGV0ZSBfNDczNjsKKyAgICBkZWxldGUgXzQ3Mzc7CisgICAgZGVsZXRl
IF80NzM4OworICAgIGRlbGV0ZSBfNDczOTsKKyAgICBkZWxldGUgXzQ3NDA7CisgICAgZGVsZXRl
IF80NzQxOworICAgIGRlbGV0ZSBfNDc0MjsKKyAgICBkZWxldGUgXzQ3NDM7CisgICAgZGVsZXRl
IF80NzQ0OworICAgIGRlbGV0ZSBfNDc0NTsKKyAgICBkZWxldGUgXzQ3NDY7CisgICAgZGVsZXRl
IF80NzQ3OworICAgIGRlbGV0ZSBfNDc0ODsKKyAgICBkZWxldGUgXzQ3NDk7CisgICAgZGVsZXRl
IF80NzUwOworICAgIGRlbGV0ZSBfNDc1MTsKKyAgICBkZWxldGUgXzQ3NTI7CisgICAgZGVsZXRl
IF80NzUzOworICAgIGRlbGV0ZSBfNDc1NDsKKyAgICBkZWxldGUgXzQ3NTU7CisgICAgZGVsZXRl
IF80NzU2OworICAgIGRlbGV0ZSBfNDc1NzsKKyAgICBkZWxldGUgXzQ3NTg7CisgICAgZGVsZXRl
IF80NzU5OworICAgIGRlbGV0ZSBfNDc2MDsKKyAgICBkZWxldGUgXzQ3NjE7CisgICAgZGVsZXRl
IF80NzYyOworICAgIGRlbGV0ZSBfNDc2MzsKKyAgICBkZWxldGUgXzQ3NjQ7CisgICAgZGVsZXRl
IF80NzY1OworICAgIGRlbGV0ZSBfNDc2NjsKKyAgICBkZWxldGUgXzQ3Njc7CisgICAgZGVsZXRl
IF80NzY4OworICAgIGRlbGV0ZSBfNDc2OTsKKyAgICBkZWxldGUgXzQ3NzA7CisgICAgZGVsZXRl
IF80NzcxOworICAgIGRlbGV0ZSBfNDc3MjsKKyAgICBkZWxldGUgXzQ3NzM7CisgICAgZGVsZXRl
IF80Nzc0OworICAgIGRlbGV0ZSBfNDc3NTsKKyAgICBkZWxldGUgXzQ3NzY7CisgICAgZGVsZXRl
IF80Nzc3OworICAgIGRlbGV0ZSBfNDc3ODsKKyAgICBkZWxldGUgXzQ3Nzk7CisgICAgZGVsZXRl
IF80NzgwOworICAgIGRlbGV0ZSBfNDc4MTsKKyAgICBkZWxldGUgXzQ3ODI7CisgICAgZGVsZXRl
IF80NzgzOworICAgIGRlbGV0ZSBfNDc4NDsKKyAgICBkZWxldGUgXzQ3ODU7CisgICAgZGVsZXRl
IF80Nzg2OworICAgIGRlbGV0ZSBfNDc4NzsKKyAgICBkZWxldGUgXzQ3ODg7CisgICAgZGVsZXRl
IF80Nzg5OworICAgIGRlbGV0ZSBfNDc5MDsKKyAgICBkZWxldGUgXzQ3OTE7CisgICAgZGVsZXRl
IF80NzkyOworICAgIGRlbGV0ZSBfNDc5MzsKKyAgICBkZWxldGUgXzQ3OTQ7CisgICAgZGVsZXRl
IF80Nzk1OworICAgIGRlbGV0ZSBfNDc5NjsKKyAgICBkZWxldGUgXzQ3OTc7CisgICAgZGVsZXRl
IF80Nzk4OworICAgIGRlbGV0ZSBfNDc5OTsKK30KKworaW50IG1haW4oaW50LCBjaGFyKiopCit7
CisgICAgZG91YmxlIGJlZm9yZSA9IGN1cnJlbnRUaW1lKCk7ICAgIAorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCAxMDAwOyArK2kpCisgICAgICAgIGJlbmNobWFyaygpOworICAgIGRvdWJs
ZSBhZnRlciA9IGN1cnJlbnRUaW1lKCk7CisgICAgcHJpbnRmKCJUaGF0IHRvb2sgJWxmIHNlY29u
ZHMuXG4iLCBhZnRlciAtIGJlZm9yZSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS9nY2MtbG9vcHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL2djYy1sb29wcy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vZ2NjLWxvb3BzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM5OSBAQAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5j
bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4K
KyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8bnVtZXJp
Yz4KKworLy8vIFRoaXMgdGVzdCBjb250YWlucyBzb21lIG9mIHRoZSBsb29wcyBmcm9tIHRoZSBH
Q0MgdmVjdHJvcml6ZXIgZXhhbXBsZSBwYWdlIFsxXS4KKy8vLyBEb3JpdCBOdXptYW4gd2hvIGRl
dmVsb3BlZCB0aGUgZ2NjIHZlY3Rvcml6ZXIgc2FpZCB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiBv
dXIgdGVzdCBzdWl0ZS4KKy8vLworLy8vIFsxXSAtIGh0dHA6Ly9nY2MuZ251Lm9yZy9wcm9qZWN0
cy90cmVlLXNzYS92ZWN0b3JpemF0aW9uLmh0bWwKKworI2RlZmluZSBOIDEwMjQKKyNkZWZpbmUg
TSAzMgorI2RlZmluZSBLIDQKKyNkZWZpbmUgQUxJR05FRDE2IF9fYXR0cmlidXRlX18oKGFsaWdu
ZWQoMTYpKSkKKwordW5zaWduZWQgc2hvcnQgdXNhW05dOworc2hvcnQgc2FbTl07CitzaG9ydCBz
YltOXTsKK3Nob3J0IHNjW05dOwordW5zaWduZWQgaW50ICAgdWFbTl07CitpbnQgICBpYVtOXSBB
TElHTkVEMTY7CitpbnQgICBpYltOXSBBTElHTkVEMTY7CitpbnQgICBpY1tOXSBBTElHTkVEMTY7
Cit1bnNpZ25lZCBpbnQgdWJbTl07Cit1bnNpZ25lZCBpbnQgdWNbTl07CitmbG9hdCBmYVtOXSwg
ZmJbTl07CitmbG9hdCBkYVtOXSwgZGJbTl0sIGRjW05dLCBkZFtOXTsKK2ludCBkaltOXTsKKwor
c3RydWN0IEEgeworICBpbnQgY2FbTl07Cit9IHM7CisKK2ludCBhW04qMl0gQUxJR05FRDE2Owor
aW50IGJbTioyXSBBTElHTkVEMTY7CitpbnQgY1tOKjJdIEFMSUdORUQxNjsKK2ludCBkW04qMl0g
QUxJR05FRDE2OworCitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCit2b2lkIGV4YW1wbGUxICgp
IHsKKyAgaW50IGk7CisKKyAgZm9yIChpPTA7IGk8MjU2OyBpKyspeworICAgIGFbaV0gPSBiW2ld
ICsgY1tpXTsKKyAgfQorfQorCitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCit2b2lkIGV4YW1w
bGUyYSAoaW50IG4sIGludCB4KSB7CisgICBpbnQgaTsKKworICAgLyogZmVhdHVyZTogc3VwcG9y
dCBmb3IgdW5rbm93biBsb29wIGJvdW5kICAqLworICAgLyogZmVhdHVyZTogc3VwcG9ydCBmb3Ig
bG9vcCBpbnZhcmlhbnRzICAqLworICAgZm9yIChpPTA7IGk8bjsgaSsrKSB7CisgICAgICBiW2ld
ID0geDsKKyAgIH0KK30KKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFtcGxl
MmIgKGludCBuLCBpbnQgeCkgeworICBpbnQgaSA9IDA7CisgICAvKiBmZWF0dXJlOiBnZW5lcmFs
IGxvb3AgZXhpdCBjb25kaXRpb24gICovCisgICAvKiBmZWF0dXJlOiBzdXBwb3J0IGZvciBiaXR3
aXNlIG9wZXJhdGlvbnMgICovCisgICB3aGlsZSAobi0tKXsKKyAgICAgIGFbaV0gPSBiW2ldJmNb
aV07IGkrKzsKKyAgIH0KK30KKworCit0eXBlZGVmIGludCBhaW50IF9fYXR0cmlidXRlX18gKChf
X2FsaWduZWRfXygxNikpKTsKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBs
ZTMgKGludCBuLCBhaW50ICogX19yZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0IHEpIHsK
KworICAgLyogZmVhdHVyZTogc3VwcG9ydCBmb3IgKGFsaWduZWQpIHBvaW50ZXIgYWNjZXNzZXMu
ICAqLworICAgd2hpbGUgKG4tLSl7CisgICAgICAqcCsrID0gKnErKzsKKyAgIH0KK30KKworX19h
dHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFtcGxlNGEgKGludCBuLCBhaW50ICogX19y
ZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0X18gcSkgeworICAgLyogZmVhdHVyZTogc3Vw
cG9ydCBmb3IgKGFsaWduZWQpIHBvaW50ZXIgYWNjZXNzZXMgICovCisgICAvKiBmZWF0dXJlOiBz
dXBwb3J0IGZvciBjb25zdGFudHMgICovCisgICB3aGlsZSAobi0tKXsKKyAgICAgICpwKysgPSAq
cSsrICsgNTsKKyAgIH0KK30KKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFt
cGxlNGIgKGludCBuLCBhaW50ICogX19yZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0X18g
cSkgeworICAgaW50IGk7CisKKyAgIC8qIGZlYXR1cmU6IHN1cHBvcnQgZm9yIHJlYWQgYWNjZXNz
ZXMgd2l0aCBhIGNvbXBpbGUgdGltZSBrbm93biBtaXNhbGlnbm1lbnQgICovCisgICBmb3IgKGk9
MDsgaTxuOyBpKyspeworICAgICAgYVtpXSA9IGJbaSsxXSArIGNbaSszXTsKKyAgIH0KK30KKwor
X19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFtcGxlNGMgKGludCBuLCBhaW50ICog
X19yZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0X18gcSkgeworICAgaW50IGk7CisgICAg
Y29uc3QgaW50IE1BWCA9IDQ7CisgICAvKiBmZWF0dXJlOiBzdXBwb3J0IGZvciBpZi1jb252ZXJz
aW9uICAqLworICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgIGludCBqID0gYVtpXTsKKyAg
ICAgIGJbaV0gPSAoaiA+IE1BWCA/IE1BWCA6IDApOworICAgfQorfQorCitfX2F0dHJpYnV0ZV9f
KChub2lubGluZSkpCit2b2lkICBleGFtcGxlNSAoaW50IG4sIHN0cnVjdCBBICpzKSB7CisgIGlu
dCBpOworICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgLyogZmVhdHVyZTogc3VwcG9y
dCBmb3IgYWxpZ25hYmxlIHN0cnVjdCBhY2Nlc3MgICovCisgICAgcy0+Y2FbaV0gPSA1OworICB9
Cit9CisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgIGV4YW1wbGU3IChpbnQgeCkg
eworICAgaW50IGk7CisKKyAgIC8qIGZlYXR1cmU6IHN1cHBvcnQgZm9yIHJlYWQgYWNjZXNzZXMg
d2l0aCBhbiB1bmtub3duIG1pc2FsaWdubWVudCAgKi8KKyAgIGZvciAoaT0wOyBpPE47IGkrKyl7
CisgICAgICBhW2ldID0gYltpK3hdOworICAgfQorfQorCitpbnQgR1tNXVtOXTsKK19fYXR0cmli
dXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTggKGludCB4KSB7CisgICBpbnQgaSxqOwor
CisgICAvKiBmZWF0dXJlOiBzdXBwb3J0IGZvciBtdWx0aWRpbWVuc2lvbmFsIGFycmF5cyAgKi8K
KyAgIGZvciAoaT0wOyBpPE07IGkrKykgeworICAgICBmb3IgKGo9MDsgajxOOyBqKyspIHsKKyAg
ICAgICBHW2ldW2pdID0geDsKKyAgICAgfQorICAgfQorfQorCisKK19fYXR0cmlidXRlX18oKG5v
aW5saW5lKSkKK3ZvaWQgZXhhbXBsZTkgKHVuc2lnbmVkICpyZXQpIHsKKyAgaW50IGk7CisKKyAg
LyogZmVhdHVyZTogc3VwcG9ydCBzdW1tYXRpb24gcmVkdWN0aW9uLgorICAgICBub3RlOiBpbiBj
YXNlIG9mIGZsb2F0cyB1c2UgLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25zICAqLworICB1bnNp
Z25lZCBpbnQgZGlmZiA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICBkaWZm
ICs9ICh1YltpXSAtIHVjW2ldKTsKKyAgfQorCisgICpyZXQgPSBkaWZmOworfQorCisKKy8qIGZl
YXR1cmU6IHN1cHBvcnQgZGF0YS10eXBlcyBvZiBkaWZmZXJlbnQgc2l6ZXMuCisgICBDdXJyZW50
bHkgb25seSBhIHNpbmdsZSB2ZWN0b3Itc2l6ZSBwZXIgdGFyZ2V0IGlzIHN1cHBvcnRlZDsgCisg
ICBpdCBjYW4gYWNjb21tb2RhdGUgbiBlbGVtZW50cyBzdWNoIHRoYXQgbiA9IHZlY3Rvci1zaXpl
L2VsZW1lbnQtc2l6ZSAKKyAgIChlLmcsIDQgaW50cywgOCBzaG9ydHMsIG9yIDE2IGNoYXJzIGZv
ciBhIHZlY3RvciBvZiBzaXplIDE2IGJ5dGVzKS4gCisgICBBIGNvbWJpbmF0aW9uIG9mIGRhdGEt
dHlwZXMgb2YgZGlmZmVyZW50IHNpemVzIGluIHRoZSBzYW1lIGxvb3AgCisgICByZXF1aXJlcyBz
cGVjaWFsIGhhbmRsaW5nLiBUaGlzIHN1cHBvcnQgaXMgbm93IHByZXNlbnQgaW4gbWFpbmxpbmUs
CisgICBhbmQgYWxzbyBpbmNsdWRlcyBzdXBwb3J0IGZvciB0eXBlIGNvbnZlcnNpb25zLiAgKi8K
K19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTEwYShzaG9ydCAqX19yZXN0
cmljdF9fIHNhLCBzaG9ydCAqX19yZXN0cmljdF9fIHNiLCBzaG9ydCAqX19yZXN0cmljdF9fIHNj
LCBpbnQqIF9fcmVzdHJpY3RfXyBpYSwgaW50KiBfX3Jlc3RyaWN0X18gaWIsIGludCogX19yZXN0
cmljdF9fIGljKSB7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAg
aWFbaV0gPSBpYltpXSArIGljW2ldOworICAgIHNhW2ldID0gc2JbaV0gKyBzY1tpXTsKKyAgfQor
fQorCitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCit2b2lkIGV4YW1wbGUxMGIoc2hvcnQgKl9f
cmVzdHJpY3RfXyBzYSwgc2hvcnQgKl9fcmVzdHJpY3RfXyBzYiwgc2hvcnQgKl9fcmVzdHJpY3Rf
XyBzYywgaW50KiBfX3Jlc3RyaWN0X18gaWEsIGludCogX19yZXN0cmljdF9fIGliLCBpbnQqIF9f
cmVzdHJpY3RfXyBpYykgeworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IE47IGkrKykgewor
ICAgIGlhW2ldID0gKGludCkgc2JbaV07CisgIH0KK30KKworLyogZmVhdHVyZTogc3VwcG9ydCBz
dHJpZGVkIGFjY2Vzc2VzIC0gdGhlIGRhdGEgZWxlbWVudHMKKyAgIHRoYXQgYXJlIHRvIGJlIG9w
ZXJhdGVkIHVwb24gaW4gcGFyYWxsZWwgYXJlIG5vdCBjb25zZWN1dGl2ZSAtIHRoZXkKKyAgIGFy
ZSBhY2Nlc3NlZCB3aXRoIGEgc3RyaWRlID4gMSAoaW4gdGhlIGV4YW1wbGUsIHRoZSBzdHJpZGUg
aXMgMik6ICAqLworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFtcGxlMTEoKSB7
CisgICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IE4vMjsgaSsrKXsKKyAgICBhW2ldID0gYlsy
KmkrMV0gKiBjWzIqaSsxXSAtIGJbMippXSAqIGNbMippXTsKKyAgICBkW2ldID0gYlsyKmldICog
Y1syKmkrMV0gKyBiWzIqaSsxXSAqIGNbMippXTsKKyAgfQorfQorCisKK19fYXR0cmlidXRlX18o
KG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTEyKCkgeworICBmb3IgKGludCBpID0gMDsgaSA8IE47
IGkrKykgeworICAgIGFbaV0gPSBpOworICB9Cit9CisKK19fYXR0cmlidXRlX18oKG5vaW5saW5l
KSkKK3ZvaWQgZXhhbXBsZTEzKGludCAqKkEsIGludCAqKkIsIGludCAqb3V0KSB7CisgIGludCBp
LGo7CisgIGZvciAoaSA9IDA7IGkgPCBNOyBpKyspIHsKKyAgICBpbnQgZGlmZiA9IDA7CisgICAg
Zm9yIChqID0gMDsgaiA8IE47IGorPTgpIHsKKyAgICAgIGRpZmYgKz0gKEFbaV1bal0gLSBCW2ld
W2pdKTsKKyAgICB9CisgICAgb3V0W2ldID0gZGlmZjsKKyAgfQorfQorCitfX2F0dHJpYnV0ZV9f
KChub2lubGluZSkpCit2b2lkIGV4YW1wbGUxNChpbnQgKippbiwgaW50ICoqY29lZmYsIGludCAq
b3V0KSB7CisgIGludCBrLGosaT0wOworICBmb3IgKGsgPSAwOyBrIDwgSzsgaysrKSB7CisgICAg
aW50IHN1bSA9IDA7CisgICAgZm9yIChqID0gMDsgaiA8IE07IGorKykKKyAgICAgIGZvciAoaSA9
IDA7IGkgPCBOOyBpKyspCisgICAgICAgICAgc3VtICs9IGluW2kra11bal0gKiBjb2VmZltpXVtq
XTsKKworICAgIG91dFtrXSA9IHN1bTsKKyAgfQorCit9CisKKworX19hdHRyaWJ1dGVfXygobm9p
bmxpbmUpKQordm9pZCBleGFtcGxlMjEoaW50ICpiLCBpbnQgbikgeworICBpbnQgaSwgYSA9IDA7
CisKKyAgZm9yIChpID0gbi0xOyBpID49IDA7IGktLSkKKyAgICBhICs9IGJbaV07CisKKyAgYlsw
XSA9IGE7Cit9CisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTIzICh1
bnNpZ25lZCBzaG9ydCAqc3JjLCB1bnNpZ25lZCBpbnQgKmRzdCkKK3sKKyAgaW50IGk7CisKKyAg
Zm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgICpkc3QrKyA9ICpzcmMrKyA8PCA3OworfQor
CisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTI0IChzaG9ydCB4LCBz
aG9ydCB5KQoreworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICBpY1tp
XSA9IGZhW2ldIDwgZmJbaV0gPyB4IDogeTsKK30KKworCitfX2F0dHJpYnV0ZV9fKChub2lubGlu
ZSkpCit2b2lkIGV4YW1wbGUyNSAodm9pZCkKK3sKKyAgaW50IGk7CisgIGNoYXIgeCwgeTsKKyAg
Zm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICB4ID0gKGRhW2ldIDwgZGJbaV0p
OworICAgICAgeSA9IChkY1tpXSA8IGRkW2ldKTsKKyAgICAgIGRqW2ldID0geCAmIHk7CisgICAg
fQorfQorCit2b2lkIGluaXRfbWVtb3J5KHZvaWQgKnN0YXJ0LCB2b2lkKiBlbmQpIHsKKyAgdW5z
aWduZWQgY2hhciBzdGF0ZSA9IDE7CisgIHdoaWxlIChzdGFydCAhPSBlbmQpIHsKKyAgICBzdGF0
ZSAqPSA3OyBzdGF0ZSBePSAweDI3OyBzdGF0ZSArPSAxOworICAgICooKHVuc2lnbmVkIGNoYXIq
KXN0YXJ0KSA9IHN0YXRlOworICAgIHN0YXJ0ID0gKChjaGFyKilzdGFydCkgKyAxOworICB9Cit9
CisKK3ZvaWQgaW5pdF9tZW1vcnlfZmxvYXQoZmxvYXQgKnN0YXJ0LCBmbG9hdCogZW5kKSB7Cisg
IGZsb2F0IHN0YXRlID0gMS4wOworICB3aGlsZSAoc3RhcnQgIT0gZW5kKSB7CisgICAgc3RhdGUg
Kj0gMS4xOworICAgICpzdGFydCA9IHN0YXRlOworICAgIHN0YXJ0Kys7CisgIH0KK30KKwordW5z
aWduZWQgZGlnZXN0X21lbW9yeSh2b2lkICpzdGFydCwgdm9pZCogZW5kKSB7CisgIHVuc2lnbmVk
IHN0YXRlID0gMTsKKyAgd2hpbGUgKHN0YXJ0ICE9IGVuZCkgeworICAgIHN0YXRlICo9IDM7Cisg
ICAgc3RhdGUgXj0gKigodW5zaWduZWQgY2hhciopc3RhcnQpOworICAgIHN0YXRlID0gKHN0YXRl
ID4+IDggIF4gc3RhdGUgPDwgOCk7CisgICAgc3RhcnQgPSAoKGNoYXIqKXN0YXJ0KSArIDE7Cisg
IH0KKyAgcmV0dXJuIHN0YXRlOworfQorCitjbGFzcyBUaW1lciB7CisKK3B1YmxpYzoKKyAgVGlt
ZXIoY29uc3QgY2hhciogdGl0bGUsIGJvb2wgcHJpbnQpIHsKKyAgICBUaXRsZSA9IHRpdGxlOwor
ICAgIFByaW50ID0gcHJpbnQ7CisgICAgZ2V0dGltZW9mZGF5KCZTdGFydCwgMCk7CisgIH0KKwor
ICB+VGltZXIoKSB7CisgICAgZ2V0dGltZW9mZGF5KCZFbmQsIDApOworICAgIGxvbmcgbXRpbWUs
IHMsdXM7CisgICAgcyA9IEVuZC50dl9zZWMgIC0gU3RhcnQudHZfc2VjOworICAgIHVzID0gRW5k
LnR2X3VzZWMgLSBTdGFydC50dl91c2VjOworICAgIG10aW1lID0gKHMqMTAwMCArIHVzLzEwMDAu
MCkrMC41OworICAgIGlmIChQcmludCkKKyAgICAgIHN0ZDo6Y291dDw8VGl0bGU8PCIsICI8PG10
aW1lPDwiLCBtc2VjXG4iOworICB9CisKK3ByaXZhdGU6CisgIGNvbnN0IGNoYXIqIFRpdGxlOwor
ICBib29sIFByaW50OworICBzdHJ1Y3QgdGltZXZhbCBTdGFydCwgRW5kOworfTsKKworCisvLyBX
YXJtdXAgYW5kIHRoZW4gbWVhc3VyZS4KKyNkZWZpbmUgQkVOQ0goTkFNRSwgUlVOX0xJTkUsIElU
RVIsIERJR0VTVF9MSU5FKSB7XAorICBSVU5fTElORTtcCisgIFRpbWVyIGF0aW1lcihOQU1FLCBw
cmludF90aW1lcyk7XAorICBmb3IgKGludCBpPTA7IGkgPCAoSVRFUik7ICsraSkgUlVOX0xJTkU7
XAorICB1bnNpZ25lZCByID0gRElHRVNUX0xJTkU7XAorICByZXN1bHRzLnB1c2hfYmFjayhyKTtc
CisgfQorCitpbnQgbWFpbihpbnQgYXJnYyxjaGFyKiBhcmd2W10peworCisgIGJvb2wgcHJpbnRf
dGltZXMgPSBhcmdjID4gMTsKKworICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZD4gcmVzdWx0czsKKyAg
dW5zaWduZWQgZHVtbXkgPSAwOworI2lmZGVmIFNNQUxMX1BST0JMRU1fU0laRQorICBjb25zdCBp
bnQgTWkgPSAxPDwxMDsKKyNlbHNlCisgIGNvbnN0IGludCBNaSA9IDE8PDE4OworI2VuZGlmCisg
IGluaXRfbWVtb3J5KCZpYVswXSwgJmlhW05dKTsKKyAgaW5pdF9tZW1vcnkoJmliWzBdLCAmaWJb
Tl0pOworICBpbml0X21lbW9yeSgmaWNbMF0sICZpY1tOXSk7CisgIGluaXRfbWVtb3J5KCZzYVsw
XSwgJnNhW05dKTsKKyAgaW5pdF9tZW1vcnkoJnNiWzBdLCAmc2JbTl0pOworICBpbml0X21lbW9y
eSgmc2NbMF0sICZzY1tOXSk7CisgIGluaXRfbWVtb3J5KCZhWzBdLCAmYVtOKjJdKTsKKyAgaW5p
dF9tZW1vcnkoJmJbMF0sICZiW04qMl0pOworICBpbml0X21lbW9yeSgmY1swXSwgJmNbTioyXSk7
CisgIGluaXRfbWVtb3J5KCZ1YVswXSwgJnVhW05dKTsKKyAgaW5pdF9tZW1vcnkoJnViWzBdLCAm
dWJbTl0pOworICBpbml0X21lbW9yeSgmdWNbMF0sICZ1Y1tOXSk7CisgIGluaXRfbWVtb3J5KCZH
WzBdWzBdLCAmR1swXVtOXSk7CisgIGluaXRfbWVtb3J5X2Zsb2F0KCZmYVswXSwgJmZhW05dKTsK
KyAgaW5pdF9tZW1vcnlfZmxvYXQoJmZiWzBdLCAmZmJbTl0pOworICBpbml0X21lbW9yeV9mbG9h
dCgmZGFbMF0sICZkYVtOXSk7CisgIGluaXRfbWVtb3J5X2Zsb2F0KCZkYlswXSwgJmRiW05dKTsK
KyAgaW5pdF9tZW1vcnlfZmxvYXQoJmRjWzBdLCAmZGNbTl0pOworICBpbml0X21lbW9yeV9mbG9h
dCgmZGRbMF0sICZkZFtOXSk7CisKKyAgQkVOQ0goIkV4YW1wbGUxIiwgICBleGFtcGxlMSgpLCBN
aSoxMCwgZGlnZXN0X21lbW9yeSgmYVswXSwgJmFbMjU2XSkpOworICBCRU5DSCgiRXhhbXBsZTJh
IiwgIGV4YW1wbGUyYShOLCAyKSwgTWkqNCwgZGlnZXN0X21lbW9yeSgmYlswXSwgJmJbTl0pKTsK
KyAgQkVOQ0goIkV4YW1wbGUyYiIsICBleGFtcGxlMmIoTiwgMiksIE1pKjIsIGRpZ2VzdF9tZW1v
cnkoJmFbMF0sICZhW05dKSk7CisgIEJFTkNIKCJFeGFtcGxlMyIsICAgZXhhbXBsZTMoTiwgaWEs
IGliKSwgTWkqMiwgZGlnZXN0X21lbW9yeSgmaWFbMF0sICZpYVtOXSkpOworICBCRU5DSCgiRXhh
bXBsZTRhIiwgIGV4YW1wbGU0YShOLCBpYSwgaWIpLCBNaSoyLCBkaWdlc3RfbWVtb3J5KCZpYVsw
XSwgJmlhW05dKSk7CisgIEJFTkNIKCJFeGFtcGxlNGIiLCAgZXhhbXBsZTRiKE4tMTAsIGlhLCBp
YiksIE1pKjIsIGRpZ2VzdF9tZW1vcnkoJmlhWzBdLCAmaWFbTl0pKTsKKyAgQkVOQ0goIkV4YW1w
bGU0YyIsICBleGFtcGxlNGMoTiwgaWEsIGliKSwgTWkqMiwgZGlnZXN0X21lbW9yeSgmaWJbMF0s
ICZpYltOXSkpOworICBCRU5DSCgiRXhhbXBsZTciLCAgIGV4YW1wbGU3KDQpLCBNaSo0LCBkaWdl
c3RfbWVtb3J5KCZhWzBdLCAmYVtOXSkpOworICBCRU5DSCgiRXhhbXBsZTgiLCAgIGV4YW1wbGU4
KDgpLCBNaS80LCBkaWdlc3RfbWVtb3J5KCZHWzBdWzBdLCAmR1swXVtOXSkpOworICBCRU5DSCgi
RXhhbXBsZTkiLCAgIGV4YW1wbGU5KCZkdW1teSksIE1pKjIsIGR1bW15KTsKKyAgQkVOQ0goIkV4
YW1wbGUxMGEiLCBleGFtcGxlMTBhKHNhLHNiLHNjLGlhLGliLGljKSwgTWkqMiwgZGlnZXN0X21l
bW9yeSgmaWFbMF0sICZpYVtOXSkgKyBkaWdlc3RfbWVtb3J5KCZzYVswXSwgJnNhW05dKSk7Cisg
IEJFTkNIKCJFeGFtcGxlMTBiIiwgZXhhbXBsZTEwYihzYSxzYixzYyxpYSxpYixpYyksIE1pKjQs
IGRpZ2VzdF9tZW1vcnkoJmlhWzBdLCAmaWFbTl0pKTsKKyAgQkVOQ0goIkV4YW1wbGUxMSIsICBl
eGFtcGxlMTEoKSwgTWkqMiwgZGlnZXN0X21lbW9yeSgmZFswXSwgJmRbTl0pKTsKKyAgQkVOQ0go
IkV4YW1wbGUxMiIsICBleGFtcGxlMTIoKSwgTWkqNCwgZGlnZXN0X21lbW9yeSgmYVswXSwgJmFb
Tl0pKTsKKyAgLy9CRU5DSCgiRXhhbXBsZTIxIiwgIGV4YW1wbGUyMShpYSwgTiksIE1pKjQsIGRp
Z2VzdF9tZW1vcnkoJmlhWzBdLCAmaWFbTl0pKTsKKyAgQkVOQ0goIkV4YW1wbGUyMyIsICBleGFt
cGxlMjModXNhLHVhKSwgTWkqOCwgZGlnZXN0X21lbW9yeSgmdXNhWzBdLCAmdXNhWzI1Nl0pKTsK
KyAgQkVOQ0goIkV4YW1wbGUyNCIsICBleGFtcGxlMjQoMiw0KSwgTWkqMiwgMCk7CisgIEJFTkNI
KCJFeGFtcGxlMjUiLCAgZXhhbXBsZTI1KCksIE1pKjIsIGRpZ2VzdF9tZW1vcnkoJmRqWzBdLCAm
ZGpbTl0pKTsKKworICBzdGQ6OmNvdXQ8PHN0ZDo6aGV4OworICBzdGQ6OmNvdXQ8PCJSZXN1bHRz
OiAoIjw8c3RkOjphY2N1bXVsYXRlKHJlc3VsdHMuYmVnaW4oKSwgcmVzdWx0cy5lbmQoKSwgMCk8
PCIpOiI7CisgIGZvciAodW5zaWduZWQgaT0wOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgewor
ICAgIHN0ZDo6Y291dDw8IiAiPDxyZXN1bHRzW2ldOworICB9CisgIHN0ZDo6Y291dDw8IlxuIjsK
KworICByZXR1cm4gMDsKK30KKworCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3F1aWNrc29ydC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3F1aWNrc29ydC5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
SmV0U3RyZWFtMi93YXNtL3F1aWNrc29ydC5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc0
IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSAg
bmlsCQkwCisjZGVmaW5lCSBmYWxzZQkJMAorI2RlZmluZSAgdHJ1ZQkJMQorI2RlZmluZSAgYnVi
YmxlYmFzZQkxLjYxZgorI2RlZmluZSAgZG5mYmFzZSAJMy41ZgorI2RlZmluZSAgcGVybWJhc2Ug
CTEuNzVmCisjZGVmaW5lICBxdWVlbnNiYXNlIDEuODNmCisjZGVmaW5lICB0b3dlcnNiYXNlIDIu
MzlmCisjZGVmaW5lICBxdWlja2Jhc2UgCTEuOTJmCisjZGVmaW5lICBpbnRtbWJhc2UgCTEuNDZm
CisjZGVmaW5lICB0cmVlYmFzZSAJMi41ZgorI2RlZmluZSAgbW1iYXNlIAkwLjBmCisjZGVmaW5l
ICBmcG1tYmFzZSAJMi45MmYKKyNkZWZpbmUgIHB1enpsZWJhc2UJMC41ZgorI2RlZmluZSAgZmZ0
YmFzZSAJMC4wZgorI2RlZmluZSAgZnBmZnRiYXNlIAk0LjQ0ZgorICAgIC8qIFRvd2VycyAqLwor
I2RlZmluZSBtYXhjZWxscyAJIDE4CisKKyAgICAvKiBJbnRtbSwgTW0gKi8KKyNkZWZpbmUgcm93
c2l6ZSAJIDQwCisKKyAgICAvKiBQdXp6bGUgKi8KKyNkZWZpbmUgc2l6ZQkgCSA1MTEKKyNkZWZp
bmUgY2xhc3NtYXggCSAzCisjZGVmaW5lIHR5cGVtYXggCSAxMgorI2RlZmluZSBkIAkJICAgICA4
CisKKyAgICAvKiBCdWJibGUsIFF1aWNrICovCisjZGVmaW5lIHNvcnRlbGVtZW50cyA1MDAwCisj
ZGVmaW5lIHNydGVsZW1lbnRzICA1MDAKKworICAgIC8qIGZmdCAqLworI2RlZmluZSBmZnRzaXpl
IAkgMjU2IAorI2RlZmluZSBmZnRzaXplMiAJIDEyOSAgCisvKgordHlwZSAqLworICAgIC8qIFBl
cm0gKi8KKyNkZWZpbmUgcGVybXJhbmdlICAgICAxMAorCisgICAvKiB0cmVlICovCitzdHJ1Y3Qg
bm9kZSB7CisJc3RydWN0IG5vZGUgKmxlZnQsKnJpZ2h0OworCWludCB2YWw7Cit9OworCisgICAg
LyogVG93ZXJzICovIC8qCisgICAgZGlzY3NpenJhbmdlID0gMS4ubWF4Y2VsbHM7ICovCisjZGVm
aW5lICAgIHN0YWNrcmFuZ2UJMworLyogICAgY2VsbGN1cnNvciA9IDAuLm1heGNlbGxzOyAqLwor
c3RydWN0ICAgIGVsZW1lbnQgeworCWludCBkaXNjc2l6ZTsKKwlpbnQgbmV4dDsKK307CisvKiAg
ICBlbXNndHlwZSA9IHBhY2tlZCBhcnJheVsxLi4xNV0gb2YgY2hhcjsKKyovCisgICAgLyogSW50
bW0sIE1tICovIC8qCisgICAgaW5kZXggPSAxIC4uIHJvd3NpemU7CisgICAgaW50bWF0cml4ID0g
YXJyYXkgW2luZGV4LGluZGV4XSBvZiBpbnRlZ2VyOworICAgIHJlYWxtYXRyaXggPSBhcnJheSBb
aW5kZXgsaW5kZXhdIG9mIHJlYWw7CisqLworICAgIC8qIFB1enpsZSAqLyAvKgorICAgIHBpZWNl
Y2xhc3MgPSAwLi5jbGFzc21heDsKKyAgICBwaWVjZXR5cGUgPSAwLi50eXBlbWF4OworICAgIHBv
c2l0aW9uID0gMC4uc2l6ZTsKKyovCisgICAgLyogQnViYmxlLCBRdWljayAqLyAvKgorICAgIGxp
c3RzaXplID0gMC4uc29ydGVsZW1lbnRzOworICAgIHNvcnRhcnJheSA9IGFycmF5IFtsaXN0c2l6
ZV0gb2YgaW50ZWdlcjsKKyovCisgICAgLyogRkZUICovCitzdHJ1Y3QgICAgY29tcGxleCB7IGZs
b2F0IHJwLCBpcDsgfSA7CisvKgorICAgIGNhcnJheSA9IGFycmF5IFsxLi5mZnRzaXplXSBvZiBj
b21wbGV4IDsKKyAgICBjMmFycmF5ID0gYXJyYXkgWzEuLmZmdHNpemUyXSBvZiBjb21wbGV4IDsK
KyovCisKK2Zsb2F0IHZhbHVlLCBmaXhlZCwgZmxvYXRlZDsKKworICAgIC8qIGdsb2JhbCAqLwor
bG9uZyAgICBzZWVkOyAgLyogY29udmVydGVkIHRvIGxvbmcgZm9yIDE2IGJpdCBXUiovCisKKyAg
ICAvKiBQZXJtICovCitpbnQgICAgcGVybWFycmF5W3Blcm1yYW5nZSsxXTsKKy8qIGNvbnZlcnRl
ZCBwY3RyIHRvIHVuc2lnbmVkIGludCBmb3IgMTYgYml0IFdSKi8KK3Vuc2lnbmVkIGludCAgICBw
Y3RyOworCisgICAgLyogdHJlZSAqLworc3RydWN0IG5vZGUgKnRyZWU7CisKKyAgICAvKiBUb3dl
cnMgKi8KK2ludAkgICBzdGFja1tzdGFja3JhbmdlKzFdOworc3RydWN0IGVsZW1lbnQgICAgY2Vs
bHNwYWNlW21heGNlbGxzKzFdOworaW50ICAgIGZyZWVsaXN0LCAgbW92ZXNkb25lOworCisgICAg
LyogSW50bW0sIE1tICovCisKK2ludCAgIGltYVtyb3dzaXplKzFdW3Jvd3NpemUrMV0sIGltYlty
b3dzaXplKzFdW3Jvd3NpemUrMV0sIGltcltyb3dzaXplKzFdW3Jvd3NpemUrMV07CitmbG9hdCBy
bWFbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBybWJbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBybXJb
cm93c2l6ZSsxXVtyb3dzaXplKzFdOworCisgICAgLyogUHV6emxlICovCitpbnQJcGllY2Vjb3Vu
dFtjbGFzc21heCsxXSwJY2xhc3NbdHlwZW1heCsxXSwgcGllY2VtYXhbdHlwZW1heCsxXTsKK2lu
dAlwdXp6bFtzaXplKzFdLCBwW3R5cGVtYXgrMV1bc2l6ZSsxXSwgbiwga291bnQ7CisKKyAgICAv
KiBCdWJibGUsIFF1aWNrICovCitpbnQgc29ydGxpc3Rbc29ydGVsZW1lbnRzKzFdLCBiaWdnZXN0
LCBsaXR0bGVzdCwgdG9wOworCisgICAgLyogRkZUICovCitzdHJ1Y3QgY29tcGxleCAgICB6W2Zm
dHNpemUrMV0sIHdbZmZ0c2l6ZSsxXSwgZVtmZnRzaXplMisxXTsKK2Zsb2F0ICAgIHpyLCB6aTsK
Kwordm9pZCBJbml0cmFuZCAoKSB7CisgICAgc2VlZCA9IDc0NzU1TDsgICAvKiBjb25zdGFudCB0
byBsb25nIFdSKi8KK30KKworaW50IFJhbmQgKCkgeworICAgIHNlZWQgPSAoc2VlZCAqIDEzMDlM
ICsgMTM4NDlMKSAmIDY1NTM1TDsgIC8qIGNvbnN0YW50cyB0byBsb25nIFdSKi8KKyAgICByZXR1
cm4oIChpbnQpc2VlZCApOyAgICAgLyogdHlwZWNhc3QgYmFjayB0byBpbnQgV1IqLworfQorCisK
KyAgICAvKiBTb3J0cyBhbiBhcnJheSB1c2luZyBxdWlja3NvcnQgKi8KK3ZvaWQgSW5pdGFycigp
IHsKKwlpbnQgaTsgLyogdGVtcCAqLworCWxvbmcgdGVtcDsgIC8qIG1hZGUgdGVtcCBhIGxvbmcg
Zm9yIDE2IGJpdCBXUiovCisJSW5pdHJhbmQoKTsKKwliaWdnZXN0ID0gMDsgbGl0dGxlc3QgPSAw
OworCWZvciAoIGkgPSAxOyBpIDw9IHNvcnRlbGVtZW50czsgaSsrICkgeworCSAgICB0ZW1wID0g
UmFuZCgpOworCSAgICAvKiBjb252ZXJ0ZWQgY29uc3RhbnRzIHRvIGxvbmcgaW4gbmV4dCBzdG10
LCB0eXBlY2FzdCBiYWNrIHRvIGludCBXUiovCisJICAgIHNvcnRsaXN0W2ldID0gKGludCkodGVt
cCAtICh0ZW1wLzEwMDAwMEwpKjEwMDAwMEwgLSA1MDAwMEwpOworCSAgICBpZiAoIHNvcnRsaXN0
W2ldID4gYmlnZ2VzdCApIGJpZ2dlc3QgPSBzb3J0bGlzdFtpXTsKKwkgICAgZWxzZSBpZiAoIHNv
cnRsaXN0W2ldIDwgbGl0dGxlc3QgKSBsaXR0bGVzdCA9IHNvcnRsaXN0W2ldOworCX0KK30KKwor
dm9pZCBRdWlja3NvcnQoIGludCBhW10sIGludCBsLCBpbnQgcikgeworCS8qIHF1aWNrc29ydCB0
aGUgYXJyYXkgQSBmcm9tIHN0YXJ0IHRvIGZpbmlzaCAqLworCWludCBpLGoseCx3OworCisJaT1s
OyBqPXI7CisJeD1hWyhsK3IpIC8gMl07CisJZG8geworCSAgICB3aGlsZSAoIGFbaV08eCApIGkg
PSBpKzE7CisJICAgIHdoaWxlICggeDxhW2pdICkgaiA9IGotMTsKKwkgICAgaWYgKCBpPD1qICkg
eworCQkJdyA9IGFbaV07CisJCQlhW2ldID0gYVtqXTsKKwkJCWFbal0gPSB3OworCQkJaSA9IGkr
MTsgICAgaj0gai0xOworCQl9CisJfSB3aGlsZSAoIGk8PWogKTsKKwlpZiAoIGwgPGogKSBRdWlj
a3NvcnQoYSxsLGopOworCWlmICggaTxyICkgUXVpY2tzb3J0KGEsaSxyKTsKK30KKworCit2b2lk
IFF1aWNrIChpbnQgcnVuKSB7CisgICAgSW5pdGFycigpOworICAgIFF1aWNrc29ydChzb3J0bGlz
dCwxLHNvcnRlbGVtZW50cyk7CisgICAgaWYgKCAoc29ydGxpc3RbMV0gIT0gbGl0dGxlc3QpIHx8
IChzb3J0bGlzdFtzb3J0ZWxlbWVudHNdICE9IGJpZ2dlc3QpICkJcHJpbnRmICggIiBFcnJvciBp
biBRdWljay5cbiIpOworCSAgcHJpbnRmKCIlZFxuIiwgc29ydGxpc3RbcnVuICsgMV0pOworfQor
CitpbnQgbWFpbigpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKSBRdWlj
ayhpKTsKKwlyZXR1cm4gMDsKK30KKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0y
L3dhc20vdHNmL2J1aWxkLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi9idWlsZC5zaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvYnVpbGQuc2gJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NSBAQAorIyEvYmluL3NoCitlbWNjIFwKKyAgICAtbyB0c2YuaHRtbCAtbyB0c2YuanMgLU8yIC1z
IFdBU009MSAtcyBUT1RBTF9NRU1PUlk9NTI0Mjg4MDAgLWcxIFwKKyAgICAtSS4gLURUU0ZfQlVJ
TERfU1lTVEVNPTEgXAorICAgIHRzZl9hc3ByaW50Zi5jXAorICAgIHRzZl9idWZmZXIuY1wKKyAg
ICB0c2ZfZXJyb3IuY1wKKyAgICB0c2ZfcmVmbGVjdC5jXAorICAgIHRzZl9zdC5jXAorICAgIHRz
Zl90eXBlLmNcCisgICAgdHNmX2lvLmNcCisgICAgdHNmX25hdGl2ZS5jXAorICAgIHRzZl9nZW5l
cmF0b3IuY1wKKyAgICB0c2Zfc3RfdHlwZXRhYmxlLmNcCisgICAgdHNmX3BhcnNlci5jXAorICAg
IHRzZl9idWZfd3JpdGVyLmNcCisgICAgdHNmX2J1Zl9yZWFkZXIuY1wKKyAgICB0c2ZfcHJpbWl0
aXZlLmNcCisgICAgdHNmX3R5cGVfdGFibGUuY1wKKyAgICB0c2ZfY29waWVyLmNcCisgICAgdHNm
X2Rlc3RydWN0b3IuY1wKKyAgICB0c2ZfZ3BjX2NvZGVfZ2VuLmNcCisgICAgZ3BjX2NvZGVfZ2Vu
X3V0aWwuY1wKKyAgICBncGNfdGhyZWFkZWQuY1wKKyAgICBncGNfaW50YWJsZS5jXAorICAgIGdw
Y19pbnN0cnVjdGlvbi5jXAorICAgIGdwY19wcm9ncmFtLmNcCisgICAgZ3BjX3Byb3RvLmNcCisg
ICAgZ3BjX3N0YWNrX2hlaWdodC5jXAorICAgIHRzZl9zZXJpYWxfaW5fbWFuLmNcCisgICAgdHNm
X3NlcmlhbF9vdXRfbWFuLmNcCisgICAgdHNmX3R5cGVfaW5fbWFwLmNcCisgICAgdHNmX3R5cGVf
b3V0X21hcC5jXAorICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dC5jXAorICAgIHRzZl9zdHJlYW1f
ZmlsZV9vdXRwdXQuY1wKKyAgICB0c2Zfc29ydC5jXAorICAgIHRzZl92ZXJzaW9uLmNcCisgICAg
dHNmX25hbWVkX3R5cGUuY1wKKyAgICB0c2ZfaW9fdXRpbHMuY1wKKyAgICB0c2ZfemlwX2F0dHIu
Y1wKKyAgICB0c2ZfemlwX3JlYWRlci5jXAorICAgIHRzZl96aXBfd3JpdGVyLmNcCisgICAgdHNm
X3ppcF9hYnN0cmFjdC5jXAorICAgIHRzZl9saW1pdHMuY1wKKyAgICB0c2ZfcmFfdHlwZV9tYW4u
Y1wKKyAgICB0c2ZfYWRhcHRpdmVfcmVhZGVyLmNcCisgICAgdHNmX3NoYTEuY1wKKyAgICB0c2Zf
c2hhMV93cml0ZXIuY1wKKyAgICB0c2ZfZnNkYi5jXAorICAgIHRzZl9mc2RiX3Byb3RvY29sLmNc
CisgICAgdHNmX2RlZmluZV9oZWxwZXJzLmNcCisgICAgdHNmX2lyLmNcCisgICAgdHNmX2lyX2Rp
ZmZlcmVudC5jXAorICAgIHRzZl9pcl9zcGVlZC5jCisKClByb3BlcnR5IGNoYW5nZXMgb246IFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9idWlsZC5zaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9j
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvY29uZmlnLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0y
L3dhc20vdHNmL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQyIEBACisvKiBs
aWJyYXJ5L2NvbmZpZy5oLiAgR2VuZXJhdGVkIGZyb20gY29uZmlnLmguaW4gYnkgY29uZmlndXJl
LiAgKi8KKy8qIGxpYnJhcnkvY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUu
YWMgYnkgYXV0b2hlYWRlci4gICovCisKKy8qIERlZmluZSBpZiBidWlsZGluZyB1bml2ZXJzYWwg
KGludGVybmFsIGhlbHBlciBtYWNybykgKi8KKy8qICN1bmRlZiBBQ19BUFBMRV9VTklWRVJTQUxf
QlVJTEQgKi8KKworLyogZGVmaW5lcyBob3cgdG8gdGhyb3cgaW4gdGhlIG5vaW5saW5lIGF0dHJp
YnV0ZSAqLworI2RlZmluZSBBVFRSSUJVVEVfTk9JTkxJTkUgX19hdHRyaWJ1dGVfXygobm9pbmxp
bmUpKQorCisvKiBEZWZpbmVkIGlmIHlvdSBjYW4gZG8gbWlzYWxpZ25lZCBsb2FkcyBhbmQgc3Rv
cmVzIG9uIGZsb2F0cyAqLworI2RlZmluZSBDQU5fRE9fRkxPQVRfTUlTQUxJR05FRF9MRFNUIDEK
KworLyogRGVmaW5lZCBpZiB5b3UgY2FuIGRvIG1pc2FsaWduZWQgbG9hZHMgYW5kIHN0b3JlcyAq
LworI2RlZmluZSBDQU5fRE9fTUlTQUxJR05FRF9MRFNUIDEKKworLyogRGV0ZXJtaW5lcyB0aGUg
cHJlZml4IGZvciBpbmNsdWRpbmcgVFNGIGZpbGVzIGZyb20gZ2VuZXJhdGVkIGNvZGUgKi8KKyNk
ZWZpbmUgQ09ERV9HRU5fSU5DTFVERV9QUkVGSVggInRzZi8iCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgYWNjZXB0JyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9BQ0NFUFQg
MAorCisvKiBEZWZpbmVkIGlmIHdlIGNhbiB0YWtlIGFkZHJlc3NlcyBvZiBsYWJlbHMgKi8KKy8v
I2RlZmluZSBIQVZFX0FERFJFU1NfT0ZfTEFCRUwgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPGFycGEvaW5ldC5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9BUlBB
X0lORVRfSCAxCisKKy8qIERlZmluZWQgaWYgd2UgYXJlIG9uIGEgYmlnIGVuZGlhbiBtYWNoaW5l
ICovCisvKiAjdW5kZWYgSEFWRV9CSUdfRU5ESUFOICovCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgYmluZCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9CSU5EIDEKKwor
LyogRGVmaWVuZCBpZiB5b3V2J2UgZ290IEJTRCBzb2NrZXRzICovCisvLyNkZWZpbmUgSEFWRV9C
U0RTT0NLUyAxCisKKy8qIERlZmluZWQgaWYgd2UgaGF2ZSBfX3N5bmNfYm9vbF9jb21wYXJlX2Fu
ZF9zd2FwICovCisvLyNkZWZpbmUgSEFWRV9CVUlMVElOX0NBUyAxCisKKy8qIERlZmluZWQgaWYg
d2UgaGF2ZSBfX3N5bmNfZmV0Y2hfYW5kX2FkZCAqLworLy8jZGVmaW5lIEhBVkVfQlVJTFRJTl9Y
QUREIDEKKworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIGxpYmJ6aXAyICovCisvKiAjdW5kZWYgSEFW
RV9CWklQMiAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNvbm5lY3QnIGZ1
bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfQ09OTkVDVCAxCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCisvLyNkZWZpbmUgSEFWRV9E
TEZDTl9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmb3JrJyBmdW5jdGlv
bi4gKi8KKy8vI2RlZmluZSBIQVZFX0ZPUksgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYGdldGFkZHJpbmZvJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX0dFVEFERFJJ
TkZPIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1lJyBm
dW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUUgMQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhvc3RieW5hbWVfcicgZnVuY3Rpb24uICovCisvKiAj
dW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBnZXRvcHQnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0dFVE9QVCAxCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cGFnZXNpemUnIGZ1bmN0aW9uLiAqLwor
I2RlZmluZSBIQVZFX0dFVFBBR0VTSVpFIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBnZXR0aW1lb2ZkYXknIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0dFVFRJTUVPRkRB
WSAxCisKKy8qIERldGVybWluZXMgaWYgd2UgaGF2ZSBJRUVFIGZsb2F0aW5nIHBvaW50ICovCisj
ZGVmaW5lIEhBVkVfSUVFRV9GTE9BVCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgaW5ldF9udG9hJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9JTkVUX05UT0EgMQorCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvcCcgZnVuY3Rpb24uICovCisj
ZGVmaW5lIEhBVkVfSU5FVF9OVE9QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtJyBsaWJyYXJ5ICgtbG0pLiAqLwor
I2RlZmluZSBIQVZFX0xJQk0gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxp
c3RlbicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9MSVNURU4gMQorCisvKiBEZWZpbmVk
IGlmIHdlIGFyZSBvbiBhIGxpdHRsZSBlbmRpYW4gbWFjaGluZSAqLworI2RlZmluZSBIQVZFX0xJ
VFRMRV9FTkRJQU4gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2FsdGlt
ZScgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfTE9DQUxUSU1FIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWVfcicgZnVuY3Rpb24uICovCisjZGVmaW5lIEhB
VkVfTE9DQUxUSU1FX1IgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvbmdq
bXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfTE9OR0pNUCAxCisKKy8qIERlZmluZWQg
aWYgdGhlIE1BUF9BTk9OIGNvbnN0YW50IGlzIGRlZmluZWQuICovCisvLyNkZWZpbmUgSEFWRV9N
QVBfQU5PTiAxCisKKy8qIERlZmluZWQgaWYgdGhlIE1BUF9BTk9OWU1PVVMgY29uc3RhbnQgaXMg
ZGVmaW5lZC4gKi8KKy8vI2RlZmluZSBIQVZFX01BUF9BTk9OWU1PVVMgMQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUg
SEFWRV9NRU1PUllfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtkdGVt
cCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9NS0RURU1QIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX01N
QVAgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1wcm90ZWN0JyBmdW5jdGlv
bi4gKi8KKy8vI2RlZmluZSBIQVZFX01QUk9URUNUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBtdW5tYXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfTVVOTUFQIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYXRoY29uZicgZnVuY3Rpb24uICov
CisvLyNkZWZpbmUgSEFWRV9QQVRIQ09ORiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSBgcHJlYWQnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUFJFQUQgMQorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByZWFkdicgZnVuY3Rpb24uICovCisvKiAjdW5k
ZWYgSEFWRV9QUkVBRFYgKi8KKworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIHB0aHJlYWRzICovCisv
LyNkZWZpbmUgSEFWRV9QVEhSRUFEIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBwd3JpdGUnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUFdSSVRFIDEKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwd3JpdGV2JyBmdW5jdGlvbi4gKi8KKy8qICN1bmRl
ZiBIQVZFX1BXUklURVYgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBxc29y
dCcgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfUVNPUlQgMQorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYHJlYWRkaXJfcicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9S
RUFERElSX1IgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWR2JyBmdW5j
dGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1JFQURWIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGByZWdjb21wJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1JFR0NPTVAg
MQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2Vycm9yJyBmdW5jdGlvbi4g
Ki8KKy8vI2RlZmluZSBIQVZFX1JFR0VSUk9SIDEKKworLyogRGVmaW5lZCBpZiB5b3UndmUgZ290
IHJlZ2V4IGZ1bmN0aW9ucyAqLworLy8jZGVmaW5lIEhBVkVfUkVHRVggMQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2V4ZWMnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhB
VkVfUkVHRVhFQyAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVnZnJlZScg
ZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9SRUdGUkVFIDEKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIDxzY2hlZC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8vI2RlZmluZSBIQVZF
X1NDSEVEX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3lpZWxk
JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1NDSEVEX1lJRUxEIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRqbXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhB
VkVfU0VUSk1QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXR2YnVmJyBm
dW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TRVRWQlVGIDEKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGBzb2NrZXQnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfU09DS0VU
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZp
bGUuICovCisjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHN0ZGlvLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NURElPX0gg
MQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmls
ZS4gKi8KKyNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgc3RwY3B5JyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TVFBDUFkgMQorCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICov
CisjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnNpZ25hbCcgZnVuY3Rpb24uICov
CisvLyNkZWZpbmUgSEFWRV9TVFJTSUdOQUwgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19TVEFU
X0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFk
ZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Vpby5oPiBoZWFkZXIgZmlsZS4gKi8KKy8vI2RlZmluZSBI
QVZFX1NZU19VSU9fSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGVtcG5h
bScgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9URU1QTkFNIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhB
VkVfVU5JU1REX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHZhc3ByaW50
ZicgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfVkFTUFJJTlRGIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGB3cml0ZXYnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVf
V1JJVEVWIDEKKworLyogRGVmaW5lZCBpZiB3ZSBjYW4gdXNlIFg4NiBpbmxpbmUgYXNzZW1ibHkg
Zm9yIGZlbmNlcyAqLworLy8jZGVmaW5lIEhBVkVfWDg2X0lOTElORV9BU01fRkVOQ0VTIDEKKwor
LyogRGVmaW5lZCBpZiB3ZSBoYXZlIFpMaWIgKi8KKy8vI2RlZmluZSBIQVZFX1pMSUIgMQorCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYF9sb25nam1wJyBmdW5jdGlvbi4gKi8KKy8v
I2RlZmluZSBIQVZFX19MT05HSk1QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBfc2V0am1wJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX19TRVRKTVAgKi8KKworLyog
RGVmaW5lZCB3aGVuIHlvdSdyZSBvbiBhIHNlbnNpYmxlIE9TLCB1bmxpa2UgTmV0QlNELiAqLwor
I2RlZmluZSBJTlRUWVBFU19XT1JLX1JJR0hUIDEKKworLyogRGVmaW5lIHRvIHRoZSBzdWItZGly
ZWN0b3J5IGluIHdoaWNoIGxpYnRvb2wgc3RvcmVzIHVuaW5zdGFsbGVkIGxpYnJhcmllcy4KKyAg
ICovCisjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgorCisvKiBUZWxsIHlvdSB0aGUgbmF0aXZl
IGFsaWdubWVudCBvZiB5b3VyIHBsYXRmb3JtICovCisjZGVmaW5lIE5BVElWRV9BTElHTk1FTlQg
MTYKKworLyogTmFtZSBvZiBwYWNrYWdlICovCisjZGVmaW5lIFBBQ0tBR0UgInRzZiIKKworLyog
RGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ug
c2hvdWxkIGJlIHNlbnQuICovCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJwaXpsb0BtYWMu
Y29tIgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisj
ZGVmaW5lIFBBQ0tBR0VfTkFNRSAidHNmIgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBh
bmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJ0
c2YgMS4xLjAiCisKKy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRo
aXMgcGFja2FnZS4gKi8KKyNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJ0c2YiCisKKy8qIERlZmlu
ZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0Vf
VVJMICIiCisKKy8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisj
ZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMS4xLjAiCisKKy8qIFRoZSBzaXplIG9mIGBkb3VibGUn
LCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9ET1VCTEUgOAorCisv
KiBUaGUgc2l6ZSBvZiBgZmxvYXQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5l
IFNJWkVPRl9GTE9BVCA0CisKKy8qIFRoZSBzaXplIG9mIGBsb25nJywgYXMgY29tcHV0ZWQgYnkg
c2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfTE9ORyA0CisKKy8qIFRoZSBzaXplIG9mIGBsb25n
IGRvdWJsZScsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX0xPTkdf
RE9VQkxFIDE2CisKKy8qIFRoZSBzaXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBz
aXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgOAorCisvKiBUaGUgc2l6ZSBvZiBg
b2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9PRkZfVCA4
CisKKy8qIFRoZSBzaXplIG9mIGBzaXplX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisj
ZGVmaW5lIFNJWkVPRl9TSVpFX1QgNAorCisvKiBUaGUgc2l6ZSBvZiBgdm9pZCAqJywgYXMgY29t
cHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfVk9JRF9QIDQKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCisjZGVmaW5lIFNU
RENfSEVBREVSUyAxCisKKy8qIERldGVybWluZXMgd2hlcmUgdG8gcGxhY2UgdGVtcG9yYXJ5IGZp
bGVzICovCisjZGVmaW5lIFRNUF9ESVJFQ1RPUlkgIi90bXAiCisKKy8qIFZlcnNpb24gbnVtYmVy
IG9mIHBhY2thZ2UgKi8KKyNkZWZpbmUgVkVSU0lPTiAiMS4xLjAiCisKKy8qIFRTRiBtYWpvciB2
ZXJzaW9uIG51bWJlciAqLworI2RlZmluZSBWRVJTSU9OX01BSk9SIDEKKworLyogVFNGIG1pbm9y
IHZlcnNpb24gbnVtYmVyICovCisjZGVmaW5lIFZFUlNJT05fTUlOT1IgMQorCisvKiBUU0YgcGF0
Y2ggdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVkVSU0lPTl9QQVRDSCAwCisKKy8qIERlZmlu
ZSBXT1JEU19CSUdFTkRJQU4gdG8gMSBpZiB5b3VyIHByb2Nlc3NvciBzdG9yZXMgd29yZHMgd2l0
aCB0aGUgbW9zdAorICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAobGlrZSBNb3Rvcm9sYSBhbmQg
U1BBUkMsIHVubGlrZSBJbnRlbCkuICovCisjaWYgZGVmaW5lZCBBQ19BUFBMRV9VTklWRVJTQUxf
QlVJTEQKKyMgaWYgZGVmaW5lZCBfX0JJR19FTkRJQU5fXworIyAgZGVmaW5lIFdPUkRTX0JJR0VO
RElBTiAxCisjIGVuZGlmCisjZWxzZQorIyBpZm5kZWYgV09SRFNfQklHRU5ESUFOCisvKiAjICB1
bmRlZiBXT1JEU19CSUdFTkRJQU4gKi8KKyMgZW5kaWYKKyNlbmRpZgorCisvKiBFbmFibGUgbGFy
Z2UgaW5vZGUgbnVtYmVycyBvbiBNYWMgT1MgWCAxMC41LiAgKi8KKyNpZm5kZWYgX0RBUldJTl9V
U0VfNjRfQklUX0lOT0RFCisjIGRlZmluZSBfREFSV0lOX1VTRV82NF9CSVRfSU5PREUgMQorI2Vu
ZGlmCisKKy8qIE51bWJlciBvZiBiaXRzIGluIGEgZmlsZSBvZmZzZXQsIG9uIGhvc3RzIHdoZXJl
IHRoaXMgaXMgc2V0dGFibGUuICovCisvKiAjdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMgKi8KKwor
LyogRGVmaW5lIGZvciBsYXJnZSBmaWxlcywgb24gQUlYLXN0eWxlIGhvc3RzLiAqLworLyogI3Vu
ZGVmIF9MQVJHRV9GSUxFUyAqLworCisvKiBEZWZpbmUgdG8gZW1wdHkgaWYgYGNvbnN0JyBkb2Vz
IG5vdCBjb25mb3JtIHRvIEFOU0kgQy4gKi8KKy8qICN1bmRlZiBjb25zdCAqLworCisvKiBEZWZp
bmUgdG8gYF9faW5saW5lX18nIG9yIGBfX2lubGluZScgaWYgdGhhdCdzIHdoYXQgdGhlIEMgY29t
cGlsZXIKKyAgIGNhbGxzIGl0LCBvciB0byBub3RoaW5nIGlmICdpbmxpbmUnIGlzIG5vdCBzdXBw
b3J0ZWQgdW5kZXIgYW55IG5hbWUuICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cworLyogI3VuZGVm
IGlubGluZSAqLworI2VuZGlmCisKKy8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29yZCBg
dm9sYXRpbGUnIGRvZXMgbm90IHdvcmsuIFdhcm5pbmc6IHZhbGlkCisgICBjb2RlIHVzaW5nIGB2
b2xhdGlsZScgY2FuIGJlY29tZSBpbmNvcnJlY3Qgd2l0aG91dC4gRGlzYWJsZSB3aXRoIGNhcmUu
ICovCisvKiAjdW5kZWYgdm9sYXRpbGUgKi8KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi9ncGMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvZ3BjLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9K
ZXRTdHJlYW0yL3dhc20vdHNmL2dwYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNCwgMjAxNSBGaWxp
cCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGUF9HUENfSAorI2RlZmluZSBGUF9HUENfSAorCisj
aW5jbHVkZSAidHNmLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworLyogdGhpcyBlbnVtZXJhdGlv
biBtdXN0IGNvbnRhaW4gdGhlIHNhbWUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBzYW1lIG9yZGVyCisg
KiBhcyBncGNfc3BlYy5pbi4gKi8KK2VudW0gZ3BjX2NlbGwgeworICAgIAorICAgIC8qIGZpZ3Vy
ZSB0aGlzIG1pZ2h0IGFzIHdlbGwgYmUgaGVyZSBmb3IgY29tcGxldGVuZXNzICovCisgICAgR1BD
X0lfTk9QLAorICAgIAorICAgIC8qIGxhYmVsIGluc3RydWN0aW9uLiAgdGhpcyBpcyB0cmFuc2xh
dGVkIGludG8gYSBub3AuICBidXQKKyAgICAgKiBpdCBjb250YWlucyBhIGxhYmVsICdudW1iZXIn
IGFzIGFuIG9wZXJhbmQuICB0aGVzZSBudW1iZXJzCisgICAgICogZG8gbm90IGhhdmUgdG8gYmUg
dW5pcXVlLiAgd2hlbmV2ZXIgYSBsYWJlbCBpcyB1c2VkLCBpdCB3aWxsIGJlCisgICAgICogdHJh
bnNsYXRlZCBpbnRvIGEganVtcCB0byB0aGUgbmVhcmVzdCBsYWJlbCBpbnN0cnVjdGlvbiB0aGF0
IGhhcworICAgICAqIHRoYXQgbGFiZWwgYXMgaXRzIG9wZXJhbmQsIGJ5IHNlYXJjaGluZyBlaXRo
ZXIgaW4gdGhlIGZvcndhcmQgb3IKKyAgICAgKiBiYWNrd2FyZCBkaXJlY3Rpb24sIGRlcGVuZGlu
ZyBvbiB3aGV0aGVyIG9yIG5vdCBpdCBpcyBhIGZvcndhcmQKKyAgICAgKiBvciBiYWNrd2FyZCBq
dW1wLiAqLworICAgIEdQQ19JX0xBQkVMLAorICAgIAorICAgIC8qIHdlIHdyYXAgdXAgdGhlIHVz
ZWZ1bCBzdWJzZXQgb2YgdHNmX2ludGVybmFsLmgncyBjb252ZXJ0aW5nCisgICAgICogY29weSBt
YWNyb3MgYW5kIHRoZW4gYWRkIGNvbnZlcnNpb24gdG8gdGhlbS4gIHRoZSBvcGVyYW5kcyBhcmUK
KyAgICAgKiBhcyBmb2xsb3dzOgorICAgICAqIENPUFlfeFRPeXpfSU5DYWJjIDxvZmZzZXQ+Cisg
ICAgICogVGhlIGVmZmVjdCBpcyB0aGF0IHRoZSBwb2ludGVyIGF0IHRoZSB0b3Agb2YgdGhlIHN0
YWNrIGhhcworICAgICAqIG9mZnNldCBhZGRlZCB0byBpdDsgaW4gdGhlIGNhc2Ugb2YgSU5DRFNU
LCB0aGlzIHNlcnZlcyBhcyB0aGUKKyAgICAgKiBzb3VyY2UsIHdoaWxlIGZvciBJTkNTUkMgaXQg
c2VydmVzIGFzIHRoZSBkZXN0aW5hdGlvbi4gKi8KKyAgICBHUENfSV9DT1BZX0hUT05DX0lOQ0RT
VCwKKyAgICBHUENfSV9DT1BZX0hUT05TX0lOQ0RTVCwKKyAgICBHUENfSV9DT1BZX0hUT05MX0lO
Q0RTVCwKKyAgICBHUENfSV9DT1BZX0hUT05MTF9JTkNEU1QsCisgICAgR1BDX0lfQ09QWV9IVE9O
Rl9JTkNEU1QsCisgICAgR1BDX0lfQ09QWV9IVE9ORF9JTkNEU1QsCisgICAgCisgICAgR1BDX0lf
Q09QWV9IVE9OQ0hPSUNFX1RPX1VJOF9JTkNEU1QsCisKKyAgICAvKiB0aGUgcnVsZXM6CisgICAg
ICogLT4gaWYgd2UgZG8gbm90IGNoYW5nZSBzaXplIG9yIHJlZHVjZSBzaXplLCB3ZSBjYW4gaWdu
b3JlIHRoZQorICAgICAqICAgIHNpemUuCisgICAgICogLT4gaWYgd2UgZXhwYW5kLCB0aGVuIHRo
ZSBzaWduZWRuZXNzIG9mIHRoZSBvcmlnaW5hbCBkZXRlcm1pbmVzCisgICAgICogICAgd2hldGhl
ciBvciBub3Qgd2UgZG8gc2lnbiBleHBhbnNpb24uCisgICAgICogLT4gaWYgZXhwYW5kaW5nIGZs
b2F0cyB0byBpbnRzLCB0aGUgc2lnbmVkbmVzcyBvZiB0aGUgdGFyZ2V0CisgICAgICogICAgbWF0
dGVycyAodGhvdWdoIEknbSBub3Qgc3VyZSB3aHkgLSB0aGlzIGlzIG9ubHkgYSBjb25zZXJ2YXRp
dmUKKyAgICAgKiAgICBlc3RpbWF0ZSBiYXNlZCBvbiBsb29raW5nIGF0IHRoZSB0aGluZ3MgdGhh
dCBnY2MgZG9lcyBmb3IKKyAgICAgKiAgICBmbG9hdCB0byBpbnQgY29udmVyc2lvbikuCisgICAg
ICovCisgICAgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlf
TlRPSENfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSENfVE9fU19aX0lOQ1NSQywKKyAgICBH
UENfSV9DT1BZX05UT0hDX1RPX1NfRV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IQ19UT19M
X1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSENfVE9fTF9FX0lOQ1NSQywKKyAgICBHUENf
SV9DT1BZX05UT0hDX1RPX0xMX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSENfVE9fTExf
RV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IQ19UT19GX1pfSU5DU1JDLAorICAgIEdQQ19J
X0NPUFlfTlRPSENfVE9fRl9FX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hDX1RPX0RfWl9J
TkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IQ19UT19EX0VfSU5DU1JDLAorCisgICAgR1BDX0lf
Q09QWV9OVE9IU19UT19CSVRfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSFNfVE9fQ19JTkNT
UkMsCisgICAgR1BDX0lfQ09QWV9OVE9IU19JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IU19U
T19MX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSFNfVE9fTF9FX0lOQ1NSQywKKyAgICBH
UENfSV9DT1BZX05UT0hTX1RPX0xMX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSFNfVE9f
TExfRV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IU19UT19GX1pfSU5DU1JDLAorICAgIEdQ
Q19JX0NPUFlfTlRPSFNfVE9fRl9FX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hTX1RPX0Rf
Wl9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IU19UT19EX0VfSU5DU1JDLAorICAgIAorICAg
IEdQQ19JX0NPUFlfTlRPSExfVE9fQklUX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hMX1RP
X0NfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExfVE9fU19JTkNTUkMsCisgICAgR1BDX0lf
Q09QWV9OVE9ITF9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9ITF9UT19MTF9aX0lOQ1NSQywK
KyAgICBHUENfSV9DT1BZX05UT0hMX1RPX0xMX0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRP
SExfVE9fRl9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hMX1RPX0ZfRV9JTkNTUkMsCisg
ICAgR1BDX0lfQ09QWV9OVE9ITF9UT19EX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExf
VE9fRF9FX0lOQ1NSQywKKyAgICAKKyAgICBHUENfSV9DT1BZX05UT0hMTF9UT19CSVRfSU5DU1JD
LAorICAgIEdQQ19JX0NPUFlfTlRPSExMX1RPX0NfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRP
SExMX1RPX1NfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExMX1RPX0xfSU5DU1JDLAorICAg
IEdQQ19JX0NPUFlfTlRPSExMX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hMTF9UT19GX1pf
SU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExMX1RPX0ZfRV9JTkNTUkMsCisgICAgR1BDX0lf
Q09QWV9OVE9ITExfVE9fRF9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hMTF9UT19EX0Vf
SU5DU1JDLAorICAgIAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fQklUX0lOQ1NSQywKKyAgICBH
UENfSV9DT1BZX05UT0hGX1RPX0NfWl9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IRl9UT19D
X0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fU19aX0lOQ1NSQywKKyAgICBHUENf
SV9DT1BZX05UT0hGX1RPX1NfRV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IRl9UT19MX1pf
SU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fTF9FX0lOQ1NSQywKKyAgICBHUENfSV9D
T1BZX05UT0hGX1RPX0xMX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fTExfRV9J
TkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IRl9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9I
Rl9UT19EX0lOQ1NSQywKKyAgICAKKyAgICBHUENfSV9DT1BZX05UT0hEX1RPX0JJVF9JTkNTUkMs
CisgICAgR1BDX0lfQ09QWV9OVE9IRF9UT19DX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRP
SERfVE9fQ19FX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hEX1RPX1NfWl9JTkNTUkMsCisg
ICAgR1BDX0lfQ09QWV9OVE9IRF9UT19TX0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSERf
VE9fTF9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hEX1RPX0xfRV9JTkNTUkMsCisgICAg
R1BDX0lfQ09QWV9OVE9IRF9UT19MTF9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hEX1RP
X0xMX0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSERfVE9fRl9JTkNTUkMsCisgICAgR1BD
X0lfQ09QWV9OVE9IRF9JTkNTUkMsCisgICAgCisgICAgLyogYmVsb3cgYXJlIGNvbnZlcnQgYW5k
IGNvcHkgcm91dGluZXMgYmV0d2VlbiB0d28gcG9pbnRlcnMgYW5kCisgICAgICogb2Zmc2V0czsg
dGhlc2UgYXJlIGRlc2lnbmVkIGZvciBwcmltaXRpdmVzLiAgdGhlIGRhdGEgaXMgY29waWVkCisg
ICAgICogZnJvbSB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlIHRvcG1vc3QgcG9pbnRlciB0byB0
aGUgZ2l2ZW4gb2Zmc2V0CisgICAgICogZnJvbSB0aGUgc2Vjb25kLXRvLXRvcG1vc3QgcG9pbnRl
ci4gIGNhbGwgdGhlc2UgZ3V5cyBsaWtlIHNvOgorICAgICAqIEdQQ19JX0NPUFlfeF9UT195IDxk
ZXN0IG9mZnNldD4gPHNvdXJjZSBvZmZzZXQ+ICovCisgICAgR1BDX0lfQ09QWV9CSVQsIC8qIG1h
a2VzIG5vbi16ZXJvIHZhbHVlcyBvbmUgLSBnb29kIGZvciBjb252ZXJ0aW5nIHRvIGFuZAorCQkg
ICAgICAgZnJvbSBiaXRzICovCisgICAgR1BDX0lfQ09QWV9CSVRfVE9fUywKKyAgICBHUENfSV9D
T1BZX0JJVF9UT19MLAorICAgIEdQQ19JX0NPUFlfQklUX1RPX0xMLAorICAgIEdQQ19JX0NPUFlf
QklUX1RPX0YsCisgICAgR1BDX0lfQ09QWV9CSVRfVE9fRCwKKyAgICAKKyAgICBHUENfSV9DT1BZ
X0MsCisgICAgR1BDX0lfQ09QWV9DX1RPX1NfWiwKKyAgICBHUENfSV9DT1BZX0NfVE9fU19FLAor
ICAgIEdQQ19JX0NPUFlfQ19UT19MX1osCisgICAgR1BDX0lfQ09QWV9DX1RPX0xfRSwKKyAgICBH
UENfSV9DT1BZX0NfVE9fTExfWiwKKyAgICBHUENfSV9DT1BZX0NfVE9fTExfRSwKKyAgICBHUENf
SV9DT1BZX0NfVE9fRl9aLAorICAgIEdQQ19JX0NPUFlfQ19UT19GX0UsCisgICAgR1BDX0lfQ09Q
WV9DX1RPX0RfWiwKKyAgICBHUENfSV9DT1BZX0NfVE9fRF9FLAorCisgICAgR1BDX0lfQ09QWV9T
X1RPX0JJVCwKKyAgICBHUENfSV9DT1BZX1NfVE9fQywKKyAgICBHUENfSV9DT1BZX1MsCisgICAg
R1BDX0lfQ09QWV9TX1RPX0xfWiwKKyAgICBHUENfSV9DT1BZX1NfVE9fTF9FLAorICAgIEdQQ19J
X0NPUFlfU19UT19MTF9aLAorICAgIEdQQ19JX0NPUFlfU19UT19MTF9FLAorICAgIEdQQ19JX0NP
UFlfU19UT19GX1osCisgICAgR1BDX0lfQ09QWV9TX1RPX0ZfRSwKKyAgICBHUENfSV9DT1BZX1Nf
VE9fRF9aLAorICAgIEdQQ19JX0NPUFlfU19UT19EX0UsCisgICAgCisgICAgR1BDX0lfQ09QWV9M
X1RPX0JJVCwKKyAgICBHUENfSV9DT1BZX0xfVE9fQywKKyAgICBHUENfSV9DT1BZX0xfVE9fUywK
KyAgICBHUENfSV9DT1BZX0wsCisgICAgR1BDX0lfQ09QWV9MX1RPX0xMX1osCisgICAgR1BDX0lf
Q09QWV9MX1RPX0xMX0UsCisgICAgR1BDX0lfQ09QWV9MX1RPX0ZfWiwKKyAgICBHUENfSV9DT1BZ
X0xfVE9fRl9FLAorICAgIEdQQ19JX0NPUFlfTF9UT19EX1osCisgICAgR1BDX0lfQ09QWV9MX1RP
X0RfRSwKKyAgICAKKyAgICBHUENfSV9DT1BZX0xMX1RPX0JJVCwKKyAgICBHUENfSV9DT1BZX0xM
X1RPX0MsCisgICAgR1BDX0lfQ09QWV9MTF9UT19TLAorICAgIEdQQ19JX0NPUFlfTExfVE9fTCwK
KyAgICBHUENfSV9DT1BZX0xMLAorICAgIEdQQ19JX0NPUFlfTExfVE9fRl9aLAorICAgIEdQQ19J
X0NPUFlfTExfVE9fRl9FLAorICAgIEdQQ19JX0NPUFlfTExfVE9fRF9aLAorICAgIEdQQ19JX0NP
UFlfTExfVE9fRF9FLAorICAgIAorICAgIEdQQ19JX0NPUFlfRl9UT19CSVQsCisgICAgR1BDX0lf
Q09QWV9GX1RPX0NfWiwKKyAgICBHUENfSV9DT1BZX0ZfVE9fQ19FLAorICAgIEdQQ19JX0NPUFlf
Rl9UT19TX1osCisgICAgR1BDX0lfQ09QWV9GX1RPX1NfRSwKKyAgICBHUENfSV9DT1BZX0ZfVE9f
TF9aLAorICAgIEdQQ19JX0NPUFlfRl9UT19MX0UsCisgICAgR1BDX0lfQ09QWV9GX1RPX0xMX1os
CisgICAgR1BDX0lfQ09QWV9GX1RPX0xMX0UsCisgICAgR1BDX0lfQ09QWV9GLAorICAgIEdQQ19J
X0NPUFlfRl9UT19ELAorICAgIAorICAgIEdQQ19JX0NPUFlfRF9UT19CSVQsCisgICAgR1BDX0lf
Q09QWV9EX1RPX0NfWiwKKyAgICBHUENfSV9DT1BZX0RfVE9fQ19FLAorICAgIEdQQ19JX0NPUFlf
RF9UT19TX1osCisgICAgR1BDX0lfQ09QWV9EX1RPX1NfRSwKKyAgICBHUENfSV9DT1BZX0RfVE9f
TF9aLAorICAgIEdQQ19JX0NPUFlfRF9UT19MX0UsCisgICAgR1BDX0lfQ09QWV9EX1RPX0xMX1os
CisgICAgR1BDX0lfQ09QWV9EX1RPX0xMX0UsCisgICAgR1BDX0lfQ09QWV9EX1RPX0YsCisgICAg
R1BDX0lfQ09QWV9ELAorICAgIAorICAgIC8qIG5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gNjQtYml0
IHNldCBvcGVyYXRpb25zLiAgdGhpcyBpcyB0aGUKKyAgICAgKiByZXN1bHQgb2YgY2VsbHMgcG9z
c2libHkgYmVpbmcgMzItYml0IGluc3RlYWQgb2YgNjQtYml0LiAqLworCisgICAgLyogc2V0IG9w
ZXJhdGlvbnMuICB0aGVzZSB0YWtlIGEgY29uc3RhbnQgb2ZmIHRoZSBzdHJlYW0gYW5kCisgICAg
ICogc2hvdmUgaXQgaW50byB0aGUgcmVxdWVzdGVkIG9mZnNldCBmcm9tIHRoZSBwdHIKKyAgICAg
KiBvbiB0b3Agb2YgdGhlIHN0YWNrLiAgdXNlIGl0IGxpa2Ugc286CisgICAgICogR1BDX0lfU0VU
X1hYIDxkZXN0IG9mZnNldD4gPGNvbnN0YW50PiAqLworICAgIEdQQ19JX1NFVF9DLAorICAgIEdQ
Q19JX1NFVF9TLAorICAgIEdQQ19JX1NFVF9MLAorICAgIAorICAgIC8qIHNldCBvcGVyYXRpb25z
LiAgdGhlc2UgdGFrZSBhIGNvbnN0YW50IG9mZiB0aGUgc3RyZWFtIGFuZAorICAgICAqIHNob3Zl
IGl0IGludG8gdGhlIHJlcXVlc3RlZCBvZmZzZXQgZnJvbSB0aGUgcHRyIHRoYXQgaXMKKyAgICAg
KiBzZWNvbmQgZnJvbSB0b3Agb2YgdGhlIHN0YWNrLiAgdXNlIGl0IGxpa2Ugc286CisgICAgICog
R1BDX0lfU0VUXzJORF9YWCA8ZGVzdCBvZmZzZXQ+IDxjb25zdGFudD4gKi8KKyAgICBHUENfSV9T
RVRfMk5EX0MsCisgICAgR1BDX0lfU0VUXzJORF9TLAorICAgIEdQQ19JX1NFVF8yTkRfTCwKKyAg
ICAKKyAgICAvKiBub3RlIHRoYXQgdGhlIHJlYWQgaW5zdHJ1Y3Rpb25zIGJlbG93IGFsbCBpbmNy
ZW1lbnQgdGhlCisgICAgICogY3VycmVudCBidWZmZXIgcG9pbnRlciByZWdpc3Rlci4gKi8KKyAg
ICAKKyAgICAvKiBkbyBhIGJpdHZlY3RvciByZWFkLiAgdGhlIHRzZl9uYXRpdmVfYml0dmVjdG9y
X3Qgc3RydWN0dXJlIGlzCisgICAgICogYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0b3Bt
b3N0IHBvaW50ZXIuICBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBHUENfSV9CSVRWRUNUT1Jf
UkVBRCA8b2Zmc2V0PiAqLworICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFELAorICAgIAorICAgIC8q
IGJpdHZlY3RvciByZWFkIHRoYXQgY29udmVydHMgdGhlIGJpdHZlY3RvciB0byBzb21ldGhpbmcg
b3RoZXIgdGhhbgorICAgICAqIGEgYml0dmVjdG9yICovCisgICAgR1BDX0lfQklUVkVDVE9SX1JF
QURfVE9fQywKKyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19TLAorICAgIEdQQ19JX0JJVFZF
Q1RPUl9SRUFEX1RPX0wsCisgICAgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fTEwsCisgICAgR1BD
X0lfQklUVkVDVE9SX1JFQURfVE9fRiwKKyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19ELAor
ICAgIAorICAgIC8qIGJpdHZlY3RvciByZWFkIHRoYXQgY29udmVydHMgc29tZXRoaW5nIG90aGVy
IHRoYW4gYSBiaXR2ZWN0b3IgaW50bworICAgICAqIGEgYml0dmVjdG9yICovCisgICAgR1BDX0lf
QklUVkVDVE9SX1JFQURfRlJPTV9DLAorICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fUywK
KyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0wsCisgICAgR1BDX0lfQklUVkVDVE9SX1JF
QURfRlJPTV9MTCwKKyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0YsCisgICAgR1BDX0lf
QklUVkVDVE9SX1JFQURfRlJPTV9ELAorICAgIAorICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZS
T01fVFNGX0lOVEVHRVJfQVJSQVksCisgICAgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9UU0Zf
TE9OR19BUlJBWSwKKworICAgIC8qIGRvIGEgYml0dmVjdG9yIHdyaXRlLiAgdGhlIHRzZl9uYXRp
dmVfYml0dmVjdG9yX3Qgc3RydWN0dXJlIGlzIGF0CisgICAgICogdGhlIGdpdmVuIG9mZnNldCBm
cm9tIHRoZSB0b3Btb3N0IHBvaW50ZXIuICBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBHUENf
SV9CSVRWRUNUT1JfV1JJVEUgPG9mZnNldD4gKi8KKyAgICBHUENfSV9CSVRWRUNUT1JfV1JJVEUs
CisgICAgCisgICAgLyogZG8gYSBieXRlIGFycmF5IHJlYWQuICB0aGUgdHNmX25hdGl2ZV9hcnJh
eV90IHN0cnVjdHVyZSBpcyBhdCB0aGUKKyAgICAgKiBnaXZlbiBvZmZzZXQgZnJvbSB0aGUgdG9w
bW9zdCBwb2ludGVyLiAgdGhlIGxlbmd0aCBpcyBtdWx0aXBsaWVkCisgICAgICogYnkgdGhlIGdp
dmVuIG11bHRpcGxpZXIgdG8gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBhcnJheSBpbiBieXRlcy4K
KyAgICAgKiBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBHUENfSV9CWVRFX0FSUkFZX1JFQUQg
PG9mZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BDX0lfQllURV9BUlJBWV9SRUFELAorICAg
IAorICAgIC8qIGRvIGEgYnl0ZSBhcnJheSB3cml0ZS4gIHRoZSB0c2ZfbmF0aXZlX2FycmF5X3Qg
c3RydWN0dXJlIGlzIGF0IHRoZQorICAgICAqIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0b3Btb3N0
IHBvaW50ZXIuICB0aGUgbGVuZ3RoIGlzIG11bHRpcGxpZWQKKyAgICAgKiBieSB0aGUgZ2l2ZW4g
bXVsdGlwbGllciB0byBvYnRhaW4gdGhlIHNpemUgb2YgdGhlIGFycmF5IGluIGJ5dGVzLgorICAg
ICAqIGNhbGwgdGhpcyBsaWtlIHNvOgorICAgICAqIEdQQ19JX0JZVEVfQVJSQVlfV1JJVEUgPG9m
ZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BDX0lfQllURV9BUlJBWV9XUklURSwKKyAgICAK
KyAgICAvKiBXaGF0IGZvbGxvd3MgYXJlIGluc3RydWN0aW9ucyBmb3Igc3VwcG9ydGluZyBUU0Yg
aW50ZWdlcnMuIFNlZSB0aGUKKyAgICAgKiBjb21tZW50IGFib3ZlIHRoZSBkZWNsYXJhdGlvbiBv
ZiBUU0ZfVEtfSU5URUdFUiBpbiB0c2YuaC4gKi8KKyAgICAKKyAgICAvKiBza2lwIGEgVFNGIGlu
dGVnZXIuICovCisgICAgR1BDX0lfVFNGX0lOVEVHRVJfU0tJUCwKKyAgICBHUENfSV9UU0ZfVU5T
SUdORURfU0tJUCwKKyAgICBHUENfSV9UU0ZfTE9OR19TS0lQLAorICAgIAorICAgIC8qIHJlYWQg
YSBUU0YgaW50ZWdlciBhbmQgY29udmVydCB0byBhIHZhcmlldHkgb2YgdGhpbmdzLiAqLworICAg
IEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fQklULAorICAgIEdQQ19JX1RTRl9JTlRFR0VSX1JF
QURfVE9fQywKKyAgICBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX1MsCisgICAgR1BDX0lfVFNG
X0lOVEVHRVJfUkVBRCwKKyAgICBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0xMLAorICAgIEdQ
Q19JX1RTRl9JTlRFR0VSX1JFQURfVE9fRiwKKyAgICBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RP
X0QsCisgICAgR1BDX0lfVFNGX1VOU0lHTkVEX1JFQURfU1VCMSwgLyogcmVhZHMgb250byB0aGUg
c3RhY2ssIG5vdCBpbnRvIG1lbW9yeS4gKi8KKyAgICBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0JJ
VCwKKyAgICBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0MsCisgICAgR1BDX0lfVFNGX0xPTkdfUkVB
RF9UT19TLAorICAgIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fTCwKKyAgICBHUENfSV9UU0ZfTE9O
R19SRUFELAorICAgIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fRiwKKyAgICBHUENfSV9UU0ZfTE9O
R19SRUFEX1RPX0QsCisgICAgCisgICAgLyogaW5jcmVtZW50IHRoZSBzaXplIHJlZ2lzdGVyIGZv
ciBhIFRTRiBpbnRlZ2VyLiAqLworICAgIEdQQ19JX1RTRl9JTlRFR0VSX1NJWkUsCisgICAgR1BD
X0lfVFNGX1VOU0lHTkVEX1BMVVMxX1NJWkUsCisgICAgR1BDX0lfVFNGX0xPTkdfU0laRSwKKyAg
ICAKKyAgICAvKiB3cml0ZSBhIFRTRiBpbnRlZ2VyLiAqLworICAgIEdQQ19JX1RTRl9JTlRFR0VS
X1dSSVRFLAorICAgIEdQQ19JX1RTRl9VTlNJR05FRF9QTFVTMV9XUklURSwKKyAgICBHUENfSV9U
U0ZfTE9OR19XUklURSwKKyAgICAKKyAgICAvKiBzZXQgdGhlIHN0cmluZyB0byB0aGUgZW1wdHkg
c3RyaW5nLiAgdGhlIGNoYXIqIGlzIGF0IHRoZSBnaXZlbgorICAgICAqIG9mZnNldCBmcm9tIHRo
ZSB0b3Btb3N0IHBvaW50ZXIuICovCisgICAgR1BDX0lfU1RSSU5HX1NFVEVNUFRZLAorICAgIAor
ICAgIC8qIGRvIGEgc3RyaW5nIHJlYWQuICB0aGUgY2hhciogaXMgYXQgdGhlIGdpdmVuIG9mZnNl
dCBmcm9tIHRoZQorICAgICAqIHRvcG1vc3QgcG9pbnRlci4gKi8KKyAgICBHUENfSV9TVFJJTkdf
UkVBRCwKKyAgICAKKyAgICAvKiBkbyBhIHN0cmluZyBza2lwLiAqLworICAgIEdQQ19JX1NUUklO
R19TS0lQLAorICAgIAorICAgIC8qIGNhbGN1bGF0ZSB0aGUgc2l6ZSBmb3IgYSBzdHJpbmcuICB0
aGUgY2hhciogaXMgYXQgdGhlIGdpdmVuIG9mZnNldAorICAgICAqIGZyb20gdGhlIHRvcG1vc3Qg
cG9pbnRlci4gKi8KKyAgICBHUENfSV9TVFJJTkdfU0laRSwKKyAgICAKKyAgICAvKiBkbyBhIHN0
cmluZyB3cml0ZS4gIHRoZSBjaGFyKiBpcyBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlCisg
ICAgICogdG9wbW9zdCBwb2ludGVyLiAqLworICAgIEdQQ19JX1NUUklOR19XUklURSwKKyAgICAK
KyAgICAvKiBkbyBhIHN0cmluZyBjb3B5LiAgdGhlIHNlY29uZCB0byB0b3Btb3N0IHBvaW50ZXIg
cGx1cyB0aGUgCisgICAgICogZGVzdGluYXRpb24gb2Zmc2V0IHBvaW50cyB0byB0aGUgZGVzdGlu
YXRpb24gY2hhciosIHdoaWxlIHRoZQorICAgICAqIHRvcG1vc3QgcG9pbnRlciBwbHVzIHNvdXJj
ZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSBzb3VyY2UgY2hhciouCisgICAgICogY2FsbCB0aGlzIGxp
a2Ugc286CisgICAgICogR1BDX0lfU1RSSU5HX0NPUFkgPGRlc3Qgb2Zmc2V0PiA8c3JjIG9mZnNl
dD4gKi8KKyAgICBHUENfSV9TVFJJTkdfQ09QWSwKKworICAgIC8qIHNldCB0aGUgYnVmZmVyIHRv
IGEgYnVmZmVyIGp1c3QgY29udGFpbmluZyB2b2lkLiAgdGhlIHRzZl9idWZmZXJfdCoKKyAgICAg
KiBpcyBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZybSB0aGUgdG9wbW9zdCBwb2ludGVyLiAqLworICAg
IEdQQ19JX0FOWV9TRVRFTVBUWSwKKyAgICAKKyAgICAvKiBkbyBhbiBhbnkgcmVhZC4gIHRoZSB0
c2ZfYnVmZmVyX3QqIGlzIGF0IHRoZSBnaXZlbiBvZmZzZXQgZnJvbSB0aGUKKyAgICAgKiB0b3Bt
b3N0IHBvaW50ZXIuICovCisgICAgR1BDX0lfQU5ZX1JFQUQsCisgICAgCisgICAgLyogZG8gYW4g
YW55IHNraXAuICovCisgICAgR1BDX0lfQU5ZX1NLSVAsCisgICAgCisgICAgLyogY2FsY3VsYXRl
IHRoZSBzaXplIG9mIGFuIGFueS4gIHRoZSB0c2ZfYnVmZmVyX3QqIGlzIGF0IHRoZSBnaXZlbgor
ICAgICAqIG9mZnNldCBmcm0gdGhlIHRvcG1vc3QgcG9pbnRlci4gKi8KKyAgICBHUENfSV9BTllf
U0laRSwKKyAgICAKKyAgICAvKiBkbyBhbiBhbnkgd3JpdGUuICB0aGUgdHNmX2J1ZmZlcl90KiBp
cyBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlCisgICAgICogdG9wbW9zdCBwb2ludGVyLiAq
LworICAgIEdQQ19JX0FOWV9XUklURSwKKyAgICAKKyAgICAvKiBkbyBhbiBhbnkgY29weS4gIHRo
ZSBzZWNvbmQgdG8gdG9wbW9zdCBwb2ludGVyIHBsdXMgdGhlIGRlc3RpbmF0aW9uCisgICAgICog
b2Zmc2V0IHBvaW50cyB0byB0aGUgZGVzdGluYXRpb24gdHNmX2J1ZmZlcl90Kiwgd2hpbGUgdGhl
IHRvcG1vc3QKKyAgICAgKiBwb2ludGVyIHBsdXMgc291cmNlIG9mZnNldCBwb2ludHMgdG8gdGhl
IHNvdXJjZSB0c2ZfYnVmZmVyX3QqLiAgY2FsbAorICAgICAqIHRoaXMgbGlrZSBzbzoKKyAgICAg
KiBHUENfSV9BTllfQ09QWSA8ZGVzdCBvZmZzZXQ+IDxzcmMgb2Zmc2V0PiAqLworICAgIEdQQ19J
X0FOWV9DT1BZLAorICAgIAorICAgIC8qIGRvIGEgbWVtY3B5IGZyb20gb25lIGRhdGEgc3RydWN0
dXJlIHRvIGFub3RoZXIuICB0aGUKKyAgICAgKiBkZXN0aW5hdGlvbiBpcyBzZWNvbmQgdG8gdG9w
bW9zdCwgd2hpbGUgdGhlIHNvdXJjZSBpcyB0b3Btb3N0LgorICAgICAqIHRoZSBvcGVyYW5kcyBh
cmU6IG9mZnNldCBmcm9tIGRlc3RpbmF0aW9uLCBvZmZzZXQgZnJvbSBzb3VyY2UsIGFuZAorICAg
ICAqIHRoZSBzaXplLiAqLworICAgIEdQQ19JX01FTUNQWSwKKyAgICAKKyAgICAvKiBjb3B5IGFu
IGFycmF5LiAgdGhlIHNlY29uZCB0byB0b3Btb3N0IHBvaW50ZXIgcGx1cyB0aGUKKyAgICAgKiBk
ZXN0aW5hdGlvbiBvZmZzZXQgcG9pbnRzIHRvIHRoZSBkZXN0aW5hdGlvbiB0c2ZfbmF0aXZlX2Fy
cmF5X3QsCisgICAgICogd2hpbGUgdGhlIHRvcG1vc3QgcG9pbnRlciBwbHVzIHNvdXJjZSBvZmZz
ZXQgcG9pbnRzIHRvIHRoZSBzb3VyY2UKKyAgICAgKiB0c2ZfbmF0aXZlX2FycmF5X3QuICB0aGUg
b3RoZXIgb3BlcmFuZCBpcyB0aGUgbXVsdGlwbGllciB0aGF0CisgICAgICogc3BlY2lmaWVzIHRo
ZSBudW1iZXIgb2YgYnl0ZXMgZm9yIGVhY2ggYXJyYXkgZWxlbWVudC4gY2FsbCB0aGlzCisgICAg
ICogbGlrZSBzbzoKKyAgICAgKiBHUENfSV9DT1BZX0FSUkFZIDxkZXN0IG9mZnNldD4gPHNyYyBv
ZmZzZXQ+IDxtdWx0aXBsaWVyPiAqLworICAgIEdQQ19JX0NPUFlfQVJSQVksCisgICAgCisgICAg
LyogY29weSBhIGJpdHZlY3Rvci4gIHRoZSBzZWNvbmQgdG8gdG9wbW9zdCBwb2ludGVyIHBsdXMg
dGhlCisgICAgICogZGVzdGluYXRpb24gb2Zmc2V0IHBvaW50cyB0byB0aGUgZGVzdGluYXRpb24g
dHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCwKKyAgICAgKiB3aGlsZSB0aGUgdG9wbW9zdCBwb2ludGVy
IHBsdXMgc291cmNlIG9mZnNldCBwb2ludHMgdG8gdGhlIHNvdXJjZQorICAgICAqIHRzZl9uYXRp
dmVfYml0dmVjdG9yX3QuIGNhbGwgdGhpcyBsaWtlIHNvOgorICAgICAqIEdQQ19JX0NPUFlfQVJS
QVkgPGRlc3Qgb2Zmc2V0PiA8c3JjIG9mZnNldD4gKi8KKyAgICBHUENfSV9DT1BZX0JJVFZFQ1RP
UiwKKyAgICAKKyAgICAvKiBjb3B5IGJldHdlZW4gYml0dmVjdG9ycyBhbmQgb3RoZXIgdHlwZXMg
b2YgYXJyYXlzICovCisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9DLAorICAgIEdQQ19J
X0NPUFlfQklUVkVDVE9SX0ZST01fUywKKyAgICBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0ws
CisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9MTCwKKyAgICBHUENfSV9DT1BZX0JJVFZF
Q1RPUl9GUk9NX0YsCisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9ELAorICAgIEdQQ19J
X0NPUFlfQklUVkVDVE9SX1RPX0MsCisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fUywKKyAg
ICBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19MLAorICAgIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RP
X0xMLAorICAgIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0YsCisgICAgR1BDX0lfQ09QWV9CSVRW
RUNUT1JfVE9fRCwKKyAgICAKKyAgICAvKiByZWFkIGEgOC1iaXQgdmFsdWUgYW5kIHBsYWNlIGl0
IG9uIHRoZSBzdGFjay4gIGlmIHRoZSB2YWx1ZSB3YXMKKyAgICAgKiAyNTUsIGl0IGlzIGluc3Rl
YWQgY29udmVydGVkIHRvIFVJTlQzMl9NQVguICovCisgICAgR1BDX0lfUkVBRENfVE9fQ0hPSUNF
LAorCisgICAgLyogcmVhZCBhIDMyLWJpdCB2YWx1ZSBhbmQgcGxhY2UgaXQgYXQgdGhlIHRvcCBv
ZiB0aGUgc3RhY2suICovCisgICAgR1BDX0lfUkVBREwsCisgICAgCisgICAgLyogZG8gYW4gYXJy
YXkgbGVuZ3RoIHdyaXRlLiAgb3BlcmFuZCBpcyB0aGUgb2Zmc2V0IGZyb20gdGhlCisgICAgICog
dG9wbW9zdCBwb2ludGVyIHRvIHRoZSAzMi1iaXQgYXJyYXkgbGVuZ3RoLiAgcmVsZXZhbnQKKyAg
ICAgKiBib3VuZHMgY2hlY2tzIGFyZSBkb25lLiAqLworICAgIEdQQ19JX0FSUkFZX0xFTl9XUklU
RV9GSUVMRCwKKyAgICAKKyAgICAvKiBkbyBhbiBhcnJheSBsZW5ndGggcmVhZC4gIG9wZXJhbmQg
aXMgdGhlIG9mZnNldCBmcm9tIHRoZQorICAgICAqIHRvcG1vc3QgcG9pbnRlciB0byB0aGUgMzIt
Yml0IGFycmF5IGxlbmd0aC4gIHJlbGV2YW50CisgICAgICogYm91bmRzIGNoZWNrcyBhcmUgZG9u
ZS4gKi8KKyAgICBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRCwKKyAgICAKKyAgICAvKiBkbyBh
biBhcnJheSBsZW5ndGggcmVhZC4gIHRoZSBhcnJheSBsZW5ndGggaXMgcHVzaGVkIG9udG8KKyAg
ICAgKiB0aGUgc3RhY2suICByZWxldmFudCBib3VuZHMgY2hlY2tzIGFyZSBkb25lLiAqLworICAg
IEdQQ19JX0FSUkFZX0xFTl9SRUFEX0xPQ0FMLAorICAgIAorICAgIC8qIGRvIGFuIGFycmF5IGxl
bmd0aCByZWFkLiAgZGlzY2FyZCB0aGUgYXJyYXkgbGVuZ3RoLiAqLworICAgIEdQQ19JX0FSUkFZ
X0xFTl9TS0lQLAorICAgIAorICAgIC8qIGlmIHRoZSA4LWJpdCB2YWx1ZSBwb2ludGVkIHRvIGJ5
IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGZyb20KKyAgICAgKiB0aGUgdG9wbW9zdCBwb2ludGVyIGlz
IG5vbi16ZXJvLCBzZXQgc2V0IHNwZWNpZmllZCBiaXQgaW4KKyAgICAgKiB0aGUgY3VycmVudCBi
dWZmZXIgbG9jYXRpb24uICBvdGhlcndpc2UgcmVzZXQgaXQuICB0aGUKKyAgICAgKiBidWZmZXIg
cG9pbnRlciBpcyBub3QgYWR2YW5jZWQuICAgeW91IGNhbGwgdGhpcyB0aGluZyBhcworICAgICAq
IGZvbGxvd3M6CisgICAgICogR1BDX0lfQklUX01BU0tfV1JJVEUgPGJpdCBpbmRleD4gPG9mZnNl
dD4gKi8KKyAgICBHUENfSV9CSVRfTUFTS19XUklURSwKKyAgICAKKyAgICAvKiBtYXNrIG91dCB0
aGUgcmVxdWVzdGVkIGJpdCBmcm9tIHRoZSBjdXJyZW50IGJ1ZmZlciBsb2NhdGlvbgorICAgICAq
IHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb2ludGVyLiAgaWYgc2V0LCB0aGVuIHNldCB0aGUgOC1i
aXQKKyAgICAgKiB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGZyb20g
dGhlIHRvcG1vc3QKKyAgICAgKiBwb2ludGVyIHRvIDE7IG90aGVyd2lzZSwgc2V0IGl0IHRvIDAu
ICB0aGlzIGluc3RydWN0aW9uIGlzCisgICAgICogdXNlZCBhcyBmb2xsb3dzOgorICAgICAqIEdQ
Q19JX0JJVF9NQVNLX1JFQUQgPGJpdCBpbmRleD4gPG9mZnNldD4gKi8KKyAgICBHUENfSV9CSVRf
TUFTS19SRUFELAorICAgIAorICAgIC8qIHNhbWUgYnV0IHN0b3JlIGl0IGluIHNvbWV0aGluZyBv
dGhlciB0aGFuIGEgYnl0ZS4gKi8KKyAgICBHUENfSV9CSVRfTUFTS19SRUFEX1RPX1MsCisgICAg
R1BDX0lfQklUX01BU0tfUkVBRF9UT19MLAorICAgIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fTEws
CisgICAgR1BDX0lfQklUX01BU0tfUkVBRF9UT19GLAorICAgIEdQQ19JX0JJVF9NQVNLX1JFQURf
VE9fRCwKKyAgICAKKyAgICAvKiB3cml0ZSBhIGJpdCBzdG9yZWQgaW4gYSBieXRlLiAgdGhlIGlk
ZWEgaXMgdGhhdCB0aGUgdmFsdWUKKyAgICAgKiBpcyAnbm9ybWFsaXplZCcsIG9yIGNvbnZlcnRl
ZCB0byBlaXRoZXIgYSAxIG9yIDAgcHJpb3IgdG8KKyAgICAgKiBiZWluZyBwbGFjZWQgaW50byB0
aGUgYnVmZmVyLiAgdGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlCisgICAgICogb2Zmc2V0LiAqLwor
ICAgIEdQQ19JX0JJVF9XUklURSwKKyAgICAKKyAgICAvKiByZWFkIGEgYml0IHN0b3JlIGl0IGlu
IGEgYnl0ZS4gIHRoZSBpZGVhIGlzIHRoYXQgdGhlIHZhbHVlIGlzCisgICAgICogJ25vcm1hbGl6
ZWQnLCBvciBjb252ZXJ0ZWQgdG8gZWl0aGVyIGEgMSBvciAwIHByaW9yIHRvIGJlaW5nCisgICAg
ICogcGxhY2VkIGludG8gdGhlIHVzZXIncyBkYXRhIHN0cnVjdHVyZS4gIHRoZSBvbmx5IGFyZ3Vt
ZW50IGlzCisgICAgICogdGhlIG9mZnNldC4gKi8KKyAgICBHUENfSV9CSVRfUkVBRCwKKyAgICAK
KyAgICAvKiByZWFkIGEgYml0IHN0b3JlIGl0IGluIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgYnl0
ZS4gKi8KKyAgICBHUENfSV9CSVRfUkVBRF9UT19TLAorICAgIEdQQ19JX0JJVF9SRUFEX1RPX0ws
CisgICAgR1BDX0lfQklUX1JFQURfVE9fTEwsCisgICAgR1BDX0lfQklUX1JFQURfVE9fRiwKKyAg
ICBHUENfSV9CSVRfUkVBRF9UT19ELAorICAgIAorICAgIC8qIHNraXAgc29tZSBudW1iZXIgb2Yg
Ynl0ZXMuIG9wZXJhbmQgaXMgdGhlIG51bWJlciBvZiBieXRlcy4gKi8KKyAgICBHUENfSV9TS0lQ
LAorICAgIAorICAgIC8qIHNraXAgYW4gYXJyYXk7IHRoZSBvcGVyYW5kcyBhcmUgdGhlIHNpemUg
b2YgZWFjaCBlbGVtZW50LCBhbmQKKyAgICAgKiBhbiBvZmZzZXQgZnJvbSB0aGUgdG9wbW9zdCBw
b2ludGVyLiAgdGhlIGFycmF5IGxlbmd0aCBpcyBmb3VuZAorICAgICAqIGF0IHRoYXQgb2Zmc2V0
LiAgY2FsbCB0aGlzIGxpa2Ugc286CisgICAgICogR1BDX0lfQVJSQVlfQkNfQU5EX1NLSVBfRklF
TEQgPG9mZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BDX0lfQVJSQVlfQkNfQU5EX1NLSVBf
RklFTEQsCisgICAgCisgICAgLyogc2tpcCBhbiBhcnJheTsgdGhpcyBpbnN0cnVjdGlvbiByZWFk
cyB0aGUgYXJyYXkgbGVuZ3RoLCBkb2VzCisgICAgICogcmVsZXZhbnQgYm91bmRzIGNoZWNrcywg
YW5kIHNraXBzIHRoZSBhcnJheS4gIGFsbCBpdCBuZWVkcyB0bworICAgICAqIGtub3cgaXMgdGhl
IG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBieSBlYWNoIGFycmF5IGVsZW1lbnQuCisgICAgICog
Y2FsbCB0aGlzIGxpa2Ugc286CisgICAgICogR1BDX0lfQVJSQVlfU0tJUCA8Y29uc3RhbnQ+ICov
CisgICAgR1BDX0lfQVJSQVlfU0tJUCwKKyAgICAKKyAgICAvKiBza2lwIGEgYml0dmVjdG9yOyB0
aGUgb3BlcmFuZCBpcyB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcG1vc3QKKyAgICAgKiBwb2ludGVy
IHdoZXJlIHRoZSBudW1iZXIgb2YgYml0cyBjYW4gYmUgZm91bmQuICovCisgICAgR1BDX0lfQklU
VkVDVE9SX0JDX0FORF9TS0lQX0ZJRUxELAorICAgIAorICAgIC8qIHNraXAgYSBiaXR2ZWN0b3I7
IHRoaXMgaW5zdHJ1Y3Rpb24gcmVhZHMgdGhlIGFycmF5IGxlbmd0aCwgZG9lcworICAgICAqIHJl
bGV2YW50IGJvdW5kcyBjaGVja3MsIGFuZCBza2lwcyB0aGUgYml0dmVjdG9yLiAgdGhpcworICAg
ICAqIGluc3RydWN0aW9uIHRha2VzIG5vIG9wZXJhbmRzLiAqLworICAgIEdQQ19JX0JJVFZFQ1RP
Ul9TS0lQLAorICAgIAorICAgIC8qIGluY3JlbWVudCB0aGUgc2l6ZSByZWdpc3RlciBieSB0aGUg
c3BlY2lmaWVkIG51bWJlciBvZiBieXRlcy4gKi8KKyAgICBHUENfSV9JTkNfU0laRSwKKyAgICAK
KyAgICAvKiBleGFtaW5lIHRoZSBhcnJheSBsZW5ndGggYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9t
IHRoZSB0b3Btb3N0CisgICAgICogcG9pbnRlciwgYW5kIGluY3JlbWVudCB0aGUgc2l6ZSByZWdp
c3RlciBieSB0aGUgbnVtYmVyIG9mCisgICAgICogYnl0ZXMgdGhhdCB0aGlzIGFycmF5IGxlbmd0
aCB3b3VsZCBvY2N1cHkgaW4gdGhlIHN0cmVhbS4gKi8KKyAgICBHUENfSV9JTkNfU0laRV9BUlJB
WV9MRU4sCisgICAgCisgICAgLyogaW5jcmVtZW50IHRoZSBzaXplIHJlZ2lzdGVyIGJ5IHRoZSBz
aXplIG9mIHRoZSBhcnJheSwgd2hlcmUgdGhlCisgICAgICogc2Vjb25kIG9wZXJhbmQgaXMgdGhl
IHNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbGVtZW50IGFuZCB0aGUKKyAgICAgKiBmaXJzdCBvcGVy
YW5kIGlzIGFuIG9mZnNldCB0byBhIHRzZl9uYXRpdmVfYXJyYXlfdCBzdHJ1Y3R1cmUuICovCisg
ICAgR1BDX0lfSU5DX1NJWkVfQVJSQVksCisgICAgCisgICAgLyogaW5jcmVtZW50IHRoZSBzaXpl
IHJlZ2lzdGVyIHRvIGFjY29tb2RhdGUgdGhlIG51bWJlciBvZiBiaXRzCisgICAgICogYXMgc3Bl
Y2lmaWVkIGJ5IHRoZSAzMi1iaXQgdmFsdWUgYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9tIHRoZQor
ICAgICAqIHRvcG1vc3QgcG9pbnRlci4gKi8KKyAgICBHUENfSV9JTkNfU0laRV9CSVRWRUNUT1Is
CisgICAgCisgICAgLyogYm91bmRzIGNoZWNrLiAgYm91bmRzIGNoZWNrIGZhaWx1cmUgbGVhZHMg
dG8gdGVybWluYXRpb24gb2YKKyAgICAgKiB0aGUgaW50ZXJwcmV0ZXIgd2l0aCBhbiBlcnJvci4g
IG9wZXJhbmQgaXMgdGhlIG51bWJlciBvZgorICAgICAqIGJ5dGVzIHdlIGV4cGVjdCB0byBiZSBh
YmxlIHRvIHNlZS4gKi8KKyAgICBHUENfSV9CQywKKyAgICAKKyAgICAvKiBhcnJheSBib3VuZHMg
Y2hlY2suICBib3VuZHMgY2hlY2sgZmFpbHVyZSBsZWFkcyB0byB0ZXJtaW5hdGlvbgorICAgICAq
IG9mIHRoZSBpbnRlcnByZXRlciB3aXRoIGFuIGVycm9yLiAgb3BlcmFuZHMgYXJlIGEgc2l6ZQor
ICAgICAqIGNvbnN0YW50IGFuZCB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcG1vc3QgcG9pbnRlciB0
byB0aGUKKyAgICAgKiBsZW5ndGggb2YgdGhlIGFycmF5ICgzMi1iaXQpLiAgaWYgY29uc3RhbnQq
YXJyYXlfbGVuIGJ5dGVzCisgICAgICogYXJlIG5vdCBhdmFpbGFibGUsIHRoZSBib3VuZHMgY2hl
Y2sgZmFpbHMuICBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBHUENfSV9BUlJBWV9CQ19GSUVM
RCA8b2Zmc2V0PiA8bXVsdGlwbGllcj4gKi8KKyAgICBHUENfSV9BUlJBWV9CQ19GSUVMRCwKKyAg
ICAKKyAgICAvKiBhcnJheSBib3VuZHMgY2hlY2suICBib3VuZHMgY2hlY2sgZmFpbHVyZSBsZWFk
cyB0byB0ZXJtaW5hdGlvbgorICAgICAqIG9mIHRoZSBpbnRlcnByZXRlciB3aXRoIGFuIGVycm9y
LiAgb3BlcmFuZCBpcyBhIHNpemUKKyAgICAgKiBjb25zdGFudC4gIHRoZSBhcnJheSBsZW5ndGgg
aXMgdGhlIHRvcG1vc3Qgc3RhY2sgZWxlbWVudC4gIGlmCisgICAgICogY29uc3RhbnQqYXJyYXlf
bGVuIGJ5dGVzIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgYm91bmRzIGNoZWNrCisgICAgICogZmFp
bHMuICovCisgICAgR1BDX0lfQVJSQVlfQkNfTE9DQUwsCisgICAgCisgICAgLyogYml0dmVjdG9y
IGJvdW5kcyBjaGVjay4gIGJvdW5kcyBjaGVjayBmYWlsdXJlIGxlYWRzIHRvIHRlcm1pbmF0aW9u
CisgICAgICogb2YgdGhlIGludGVycHJldGVyIHdpdGggYW4gZXJyb3IuICB0aGUgb3BlcmFuZCBp
cyB0aGUgb2Zmc2V0CisgICAgICogZnJvbSB0aGUgdG9wbW9zdCBwb2ludGVyIHRvIGEgMzItYml0
IG51bWJlciBvZiBiaXRzLiAgaWYKKyAgICAgKiAobnVtX2JpdHMrNyk+PjMgYnl0ZXMgYXJlIG5v
dCBhdmFpbGFibGUsIHRoZSBib3VuZHMgY2hlY2sgZmFpbHMuCisgICAgICovCisgICAgR1BDX0lf
QklUVkVDVE9SX0JDX0ZJRUxELAorICAgIAorICAgIC8qIGJpdHZlY3RvciBib3VuZHMgY2hlY2su
ICBib3VuZHMgY2hlY2sgZmFpbHVyZSBsZWFkcyB0byB0ZXJtaW5hdGlvbgorICAgICAqIG9mIHRo
ZSBpbnRlcnByZXRlciB3aXRoIGFuIGVycm9yLiAgdGhlIG51bWJlciBvZiBiaXRzIGlzIHRoZQor
ICAgICAqIHRvcG1vc3QgZWxlbWVudCBvbiB0aGUgc3RhY2suICBpZiAobnVtX2JpdHMrNyk+PjMg
Ynl0ZXMgYXJlIG5vdAorICAgICAqIGF2YWlsYWJsZSwgdGhlIGJvdW5kcyBjaGVjayBmYWlscy4K
KyAgICAgKi8KKyAgICBHUENfSV9CSVRWRUNUT1JfQkNfTE9DQUwsCisgICAgCisgICAgLyogbWFs
bG9jIGEgYnVmZmVyLiAgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRlYWxsb2NhdGVkIHVwb24KKyAg
ICAgKiBpbnRlcnByZXRlciBmYWlsdXJlIG9yIGlmIGl0IGlzIG5vdCByZXR1cm5lZC4gIGlmIGFs
bG9jYXRpb24KKyAgICAgKiBmYWlscywgdGhlIGludGVycHJldGVyIGZhaWxzLiAgdGhlIGFsbG9j
YXRpb24gc2l6ZSBpcyBkZXRlcm1pbmVkCisgICAgICogYnkgdGhlIHNpemUgcmVnaXN0ZXIuICBw
ZXJmb3JtaW5nIHRoaXMgYWxsb2NhdGlvbiBhdXRvbWF0aWNhbGx5IHNldHMKKyAgICAgKiB0aGUg
ZW5kIHJlZ2lzdGVyIHNvIHRoYXQgYm91bmRzIGNoZWNrcyBjYW4gYmUgcGVyZm9ybWVkLiAqLwor
ICAgIEdQQ19JX01BTExPQ19CVUYsCisgICAgCisgICAgLyogcG9wIHRoZSBidWZmZXIgb2ZmIHRo
ZSBzdGFjay4gIHRoZSBjdXJyZW50IHBvaW50ZXIsIHRoZSBidWZmZXIKKyAgICAgKiBwb2ludGVy
LCB0aGUgZW5kIHBvaW50ZXIsIHRoZSBrZWVwIGJpdCwgYW5kIHRoZSB0eXBlcyBwb2ludGVyIGFy
ZQorICAgICAqIGFsbCBzZXQuICBob3dldmVyLCBzaXplIGlzIG5vdCBzZXQgKHNvIHlvdSBjYW5u
b3QgZG8gYSBNQUxMT0NfQlVGCisgICAgICogYWZ0ZXIgdGhpcyBjYWxsKS4gKi8KKyAgICBHUENf
SV9QT1BfQlVGLAorICAgIAorICAgIC8qIGRlc3Ryb3kgYSBidWZmZXIuICovCisgICAgR1BDX0lf
REVTVFJPWV9CVUZGRVIsCisgICAgCisgICAgLyogY3JlYXRlIGFuIG91dHB1dCBtYXAuICovCisg
ICAgR1BDX0lfTUFLRV9PVVRfTUFQLAorICAgIAorICAgIC8qIGV4YW1pbmUgdGhlIHNlY29uZC10
by10b3AtbW9zdCBwb2ludGVyLiAgaWYgaXQgaXMgTlVMTCwgdGhlbiBwZXJmb3JtIGEKKyAgICAg
KiByZWdpb24gYWxsb2MgYW5kIHJlcGxhY2UgdGhlIHNlY29uZC10by10b3AtbW9zdCBwb2ludGVy
IHdpdGggdGhlIHJlc3VsdC4KKyAgICAgKiBpZiB0aGUgcmVnaW9uIHBvaW50ZXIgd2FzIE5VTEws
IHRoZW4gaXQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgcmVzdWx0IGFzCisgICAgICogd2VsbCwgYW5k
IHRoZSByZWdpb24gaXMgcHV0IGludG8ga2VlcCBtb2RlLiAgdGhlIG9ubHkgb3BlcmFuZCBpcyB0
aGUKKyAgICAgKiBzaXplLiAqLworICAgIEdQQ19JX0FMTE9DX1JPT1RfTUFZQkVfMk5ELAorICAg
IAorICAgIC8qIGFsbG9jYXRlIGFuZCBwdXNoLiAgdGhpcyBpcyBhIHJlZ2lvbiBhbGxvYy4gIGZh
aWx1cmUgaGVyZQorICAgICAqIGxlYWRzIHRvIHRlcm1pbmF0aW9uIG9mIHRoZSBpbnRlcnByZXRl
ci4gIHRoZSBvcGVyYW5kIGlzCisgICAgICogdGhlIHNpemUuICovCisgICAgR1BDX0lfQUxMT0Ms
CisgICAgCisgICAgLyogYWxsb2NhdGUgYW5kIHB1c2ggYXJyYXkuICB0aGlzIGlzIGEgcmVnaW9u
IGFsbG9jLiAgZmFpbHVyZSBoZXJlCisgICAgICogbGVhZHMgdG8gdGVybWluYXRpb24gb2YgdGhl
IGludGVycHJldGVyLiAgdGhlIG9wZXJhbmRzIGFyZQorICAgICAqIHRoZSBlbGVtZW50IHNpemUg
YW5kIHRoZSBvZmZzZXQgZnJvbSB0aGUgdG9wbW9zdCBwb2ludGVyIHRvCisgICAgICogdGhlIHRz
Zl9uYXRpdmVfYXJyYXlfdC4gIHRzZl9uYXRpdmVfYXJyYXlfdDo6bGVuIHNob3VsZCBiZSBzZXQK
KyAgICAgKiBhbHJlYWR5LCBhbmQgaXMgdXNlZCB0byBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMg
dG8gYWxsb2MuCisgICAgICogdHNmX25hdGl2ZV9hcnJheV90OjpkYXRhIHdpbGwgYmUgc2V0IHRv
IHRoZSBzYW1lIHRoaW5nIHRoYXQKKyAgICAgKiBnZXRzIHB1c2hlZCAtLSB0aGF0IGlzLCB0aGUg
bmV3bHkgYWxsb2NhdGVkIGFycmF5LiAgY2FsbCB0aGlzIGxpa2UKKyAgICAgKiBzbzogCisgICAg
ICogR1BDX0lfQUxMT0NfQVJSQVkgPG9mZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BDX0lf
QUxMT0NfQVJSQVksCisgICAgCisgICAgLyogYWxsb2NhdGUgYW5kIHB1c2ggYXJyYXkuICB0aGlz
IGlzIGEgcmVnaW9uIGFsbG9jLiAgZmFpbHVyZSBoZXJlCisgICAgICogbGVhZHMgdG8gdGVybWlu
YXRpb24gb2YgdGhlIGludGVycHJldGVyLiAgdGhlIG9wZXJhbmRzIGFyZQorICAgICAqIHRoZSBl
bGVtZW50IHNpemUgYW5kIHRoZSBvZmZzZXQgZnJvbSB0aGUgc2Vjb25kIHRvIHRvcG1vc3QgcG9p
bnRlciB0bworICAgICAqIHRoZSB0c2ZfbmF0aXZlX2FycmF5X3QuICB0c2ZfbmF0aXZlX2FycmF5
X3Q6OmxlbiBzaG91bGQgYmUgc2V0CisgICAgICogYWxyZWFkeSwgYW5kIGlzIHVzZWQgdG8gZGV0
ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIHRvIGFsbG9jLgorICAgICAqIHRzZl9uYXRpdmVfYXJyYXlf
dDo6ZGF0YSB3aWxsIGJlIHNldCB0byB0aGUgc2FtZSB0aGluZyB0aGF0CisgICAgICogZ2V0cyBw
dXNoZWQgLS0gdGhhdCBpcywgdGhlIG5ld2x5IGFsbG9jYXRlZCBhcnJheS4gIGNhbGwgdGhpcyBs
aWtlCisgICAgICogc286IAorICAgICAqIEdQQ19JX0FMTE9DX0FSUkFZIDxvZmZzZXQ+IDxtdWx0
aXBsaWVyPiAqLworICAgIEdQQ19JX0FMTE9DX0FSUkFZXzJORCwKKworICAgIC8qIGNhbGwgYSBm
dW5jdGlvbiBvZiB0aGUgZm9ybSB2b2lkKCopKHZvaWQqKSwgcGFzc2luZyBpdCB0aGUgZ2l2ZW4K
KyAgICAgKiBvZmZzZXQgZnJvbSB0aGUgdG9wbW9zdCBwb2ludGVyLiAgY2FsbCBpdCBsaWtlIHNv
OgorICAgICAqIEdQQ19JX0NBTEwgPG9mZnNldD4gPGZ1bmN0aW9uIHBvaW50ZXI+ICovCisgICAg
R1BDX0lfQ0FMTCwKKworICAgIC8qIGFkZCBjYWxsYmFjayB0byBjdXJyZW50IHJlZ2lvbi4gIGNh
bGxiYWNrIG11c3QgYmUgb2YgdGhlIGZvcm0KKyAgICAgKiB2b2lkKCopKHZvaWQqKS4gIHRoZSBh
cmd1bWVudCBpcyBjb21wdXRlZCBhcyBhbiBvZmZzZXQgZnJvbSB0aGUKKyAgICAgKiB0b3Btb3N0
IHBvaW50ZXIuICBjYWxsIGl0IGxpa2Ugc286CisgICAgICogR1BDX0lfQUREX0NCQUNLIDxvZmZz
ZXQ+IDxmdW5jdGlvbiBwb2ludGVyPiAqLworICAgIEdQQ19JX0FERF9DQkFDSywKKyAgICAKKyAg
ICAvKiBjYWxsIGZyZWUgd2l0aCB0aGUgdG9wIG9mIHRoZSBzdGFjay4gKi8KKyAgICBHUENfSV9G
UkVFX0lNTUVESUFURSwKKyAgICAKKyAgICAvKiBjYWxsIGZyZWUgd2l0aCB0aGUgdGhlIHBvaW50
ZXIgbG9hZGVkIGZyb20gc3RhY2sgdG9wICsgb2Zmc2V0LiAqLworICAgIEdQQ19JX0ZSRUUsCisg
ICAgCisgICAgLyogc3RvcmUgdGhlIHRvcG1vc3QgcG9pbnRlciBhdCB0aGUgZ2l2ZW4gb2Zmc2V0
IGZyb20gdGhlIHNlY29uZC10by0KKyAgICAgKiB0b3Btb3N0IHBvaW50ZXIuICovCisgICAgR1BD
X0lfU1RPUkVfUFRSLAorICAgIAorICAgIC8qIHN0b3JlIHRoZSB0b3Btb3N0IHBvaW50ZXIgYXQg
dGhlIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0aGlyZC10by0KKyAgICAgKiB0b3Btb3N0IHBvaW50
ZXIuICovCisgICAgR1BDX0lfU1RPUkVfUFRSXzJORCwKKyAgICAKKyAgICAvKiBzdG9yZSB0aGUg
dG9wbW9zdCB2YWx1ZSBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlIHNlY29uZC10by0KKyAg
ICAgKiB0b3Btb3N0IHBvaW50ZXIuICovCisgICAgR1BDX0lfU1RPUkVfVkFMLAorICAgIAorICAg
IC8qIHB1c2ggYSBwb2ludGVyIG9udG8gdGhlIHN0YWNrLiAgb3BlcmFuZCBpcyBhbgorICAgICAq
IG9mZnNldCBmcm9tIGN1cnJlbnQgdG9wLW1vc3QgcG9pbnRlciB3aGVyZSB0aGlzIHBvaW50ZXIK
KyAgICAgKiBjYW4gYmUgZm91bmQuICovCisgICAgR1BDX0lfUFVTSF9QVFIsCisgICAgCisgICAg
LyogcHVzaCBhIHBvaW50ZXIgb250byB0aGUgc3RhY2suICBvcGVyYW5kIGlzIGFuCisgICAgICog
b2Zmc2V0IGZyb20gY3VycmVudCBzZWNvbmQtdG8tdG9wLW1vc3QgcG9pbnRlciB3aGVyZSB0aGlz
IHBvaW50ZXIKKyAgICAgKiBjYW4gYmUgZm91bmQuICovCisgICAgR1BDX0lfUFVTSF9QVFJfMk5E
LAorICAgIAorICAgIC8qIHB1c2ggYSBwb2ludGVyIG9udG8gdGhlIHN0YWNrLiAgb3BlcmFuZCBp
cyBhbgorICAgICAqIG9mZnNldCBmcm9tIGN1cnJlbnQgdGhpcmQtdG8tdG9wLW1vc3QgcG9pbnRl
ciB3aGVyZSB0aGlzIHBvaW50ZXIKKyAgICAgKiBjYW4gYmUgZm91bmQuICovCisgICAgR1BDX0lf
UFVTSF9QVFJfM1JELAorICAgIAorICAgIC8qIHB1c2ggYSAzMi1iaXQgdmFsdWUgb250byB0aGUg
c3RhY2suICBvcGVyYW5kIGlzIGFuCisgICAgICogb2Zmc2V0IGZyb20gY3VycmVudCB0b3AtbW9z
dCBwb2ludGVyIHdoZXJlIHRoaXMKKyAgICAgKiB2YWx1ZSBjYW4gYmUgZm91bmQuICovCisgICAg
R1BDX0lfUFVTSF9WQUwsCisKKyAgICAvKiBkdXAgdGhlIHNlY29uZC10by10b3Btb3N0IHBvaW50
ZXIgKi8KKyAgICBHUENfSV9EVVBfUFRSXzJORCwKKyAgICAKKyAgICAvKiBwb3AgYSBwb2ludGVy
IG9yIHZhbHVlIGZyb20gdGhlIHN0YWNrLiAqLworICAgIEdQQ19JX1BPUCwKKyAgICAKKyAgICAv
KiBwb3AgdHdvIHRoaW5ncyBvZmYgdGhlIHN0YWNrLiAqLworICAgIEdQQ19JX1RXT19QT1AsCisg
ICAgCisgICAgLyogcG9wIHRocmVlIHRoaW5ncyBvZmYgdGhlIHN0YWNrLiAqLworICAgIEdQQ19J
X1RIUkVFX1BPUCwKKyAgICAKKyAgICAvKiBmaXJzdCwgc2F2ZSB0aGUgdG9wbW9zdCBwb2ludGVy
IGluIGEgcmVnaXN0ZXIuICB0aGVuLCBhZGQgdGhlCisgICAgICogMzItYml0IHZhbHVlIHN0b3Jl
ZCBhdCBhbiBvZmZzZXQgZnJvbSB0aGUgc2Vjb25kIHRvCisgICAgICogdG9wbW9zdCBwb2ludGVy
IG11bHRpcGxpZWQgYnkgdGhlIHN1cHBsaWVkIGNvbnN0YW50IHRvIHRoZSB0b3Btb3N0CisgICAg
ICogcG9pbnRlci4gIGZpbmFsbHksIHB1c2ggdGhlIHNhdmVkIHBvaW50ZXIgb250byB0aGUgc3Rh
Y2suCisgICAgICogdGhpcyB3ZWlyZCBpbnN0cnVjdGlvbiBsb29rcyBsaWtlIHRoaXM6CisgICAg
ICogR1BDX0lfTVVMQUREX1BUUiA8b2Zmc2V0PiA8Y29uc3RhbnQ+CisgICAgICogV2hhdCB0aGUg
aGVjayBkb2VzIHRoaXMgaW5zdHJ1Y3Rpb24gcmVhbGx5IGRvPyAgSXQgc2V0cyB5b3UgdXAKKyAg
ICAgKiBmb3IgYSBwb2ludGVyIGxvb3AhICovCisgICAgR1BDX0lfUkVQVVNIX01VTEFERF9QVFIs
CisgICAgCisgICAgLyogZmlyc3QsIHNhdmUgdGhlIHRvcG1vc3QgcG9pbnRlciBpbiBhIHJlZ2lz
dGVyLiAgdGhlbiwgYWRkIHRoZQorICAgICAqIDMyLWJpdCB2YWx1ZSBzdG9yZWQgYXQgYW4gb2Zm
c2V0IGZyb20gdGhlIHRoaXJkIHRvCisgICAgICogdG9wbW9zdCBwb2ludGVyIG11bHRpcGxpZWQg
YnkgdGhlIHN1cHBsaWVkIGNvbnN0YW50IHRvIHRoZSB0b3Btb3N0CisgICAgICogcG9pbnRlci4g
IGZpbmFsbHksIHB1c2ggdGhlIHNhdmVkIHBvaW50ZXIgb250byB0aGUgc3RhY2suCisgICAgICog
dGhpcyB3ZWlyZCBpbnN0cnVjdGlvbiBsb29rcyBsaWtlIHRoaXM6CisgICAgICogR1BDX0lfTVVM
QUREX1BUUiA8b2Zmc2V0PiA8Y29uc3RhbnQ+ICovCisgICAgR1BDX0lfUkVQVVNIX01VTEFERF9Q
VFJfMk5ELAorICAgIAorICAgIC8qIGNvbXBhcmUgKGxlc3MtdGhhbikgdGhlIHRvcG1vc3QgcG9p
bnRlciB0byB0aGUgbmV4dC10by10b3Btb3N0CisgICAgICogcG9pbnRlci4gIGlmIHRoZSBjb21w
YXJpc29uIGZhaWxzLCBqdW1wIHRvIHRoZSBnaXZlbiBsYWJlbC4KKyAgICAgKiB0aGlzIGlzIGEg
Zm9yd2FyZCBqdW1wLiAqLworICAgIEdQQ19JX0NPTVBGQUlMSlVNUCwKKyAgICAKKyAgICAvKiBj
b21wYXJlIChsZXNzLXRoYW4pIHRoZSBzZWNvbmQgdG8gdG9wbW9zdCBwb2ludGVyIHRvIHRoZSB0
aGlyZAorICAgICAqIHRvIHRvcG1vc3QgcG9pbnRlci4gIGlmIHRoZSBjb21wYXJpc29uIGZhaWxz
LCBqdW1wIHRvIHRoZSBnaXZlbgorICAgICAqIGxhYmVsLiAgdGhpcyBpcyBhIGZvcndhcmQganVt
cC4gKi8KKyAgICBHUENfSV9DT01QRkFJTEpVTVBfMk5ELAorICAgIAorICAgIC8qIGFkZCB0aGUg
Z2l2ZW4gY29uc3RhbnQgdG8gdGhlIHRvcG1vc3QgcG9pbnRlciwgY29tcGFyZSBpdAorICAgICAq
IChsZXNzLXRoYW4pIHRvIHRoZSBuZXh0LXRvLXRvcG1vc3QgcG9pbnRlciwgYW5kIGlmIHRoZQor
ICAgICAqIGNvbXBhcmlzb24gaXMgdHJ1ZSwganVtcCB0byB0aGUgZ2l2ZW4gbGFiZWwuICBub3Rl
IHRoYXQKKyAgICAgKiB0aGlzIGlzIGEgYmFja3dhcmQgYnJhbmNoLCBzbyB0aGUgbGFiZWwgaXMg
bG9va2VkIGZvcgorICAgICAqIGJhY2t3YXJkcywgbm90IGZvcndhcmRzLiAgaGVyZSdzIGhvdyB0
byBjYWxsIGl0OgorICAgICAqIEdQQ19JX0FERENPTVBKVU1QIDxjb25zdGFudD4gPGxhYmVsPiAq
LworICAgIEdQQ19JX0FERENPTVBKVU1QLAorICAgIAorICAgIC8qIGFkZCB0aGUgZGVzdGluYXRp
b24gY29uc3RhbnQgdG8gdGhlIHNlY29uZC10by10b3Btb3N0IHBvaW50ZXIsCisgICAgICogYWRk
IHRoZSBzb3VyY2UgY29uc3RhbnQgdG8gdGhlIHRvcG1vc3QgcG9pbnRlciwgY29tcGFyZSB0aGUK
KyAgICAgKiBzZWNvbmQtdG8tdG9wbW9zdCBwb2ludGVyIHRvIHRoZSB0aGlyZC10by10b3Btb3N0
IHBvaW50ZXIsIGFuZAorICAgICAqIGlmIHRoZSBjb21wYXJpc29uIGlzIHRydWUsIGp1bXAgdG8g
dGhlIGdpdmVuIGxhYmVsLiAgbm90ZSB0aGF0CisgICAgICogdGhpcyBpcyBhIGJhY2t3YXJkIGJy
YW5jaCwgc28gdGhlIGxhYmVsIGlzIGxvb2tlZCBmb3IgYmFja3dhcmRzLAorICAgICAqIG5vdCBm
b3J3YXJkcy4gIGhlcmUncyBob3cgdG8gY2FsbCBpdDoKKyAgICAgKiBHUENfSV9UV09fQUREQ09N
UEpVTVAgPGRlc3QgY29uc3Q+IDxzcmMgY29uc3Q+IDxsYWJlbD4gKi8KKyAgICBHUENfSV9UV09f
QUREQ09NUEpVTVAsCisgICAgCisgICAgLyogaWYgdGhlIHRvcG1vc3QgdmFsdWUgb24gdGhlIHN0
YWNrIGlzIHplcm8sIGp1bXAgZm9yd2FyZCB0bworICAgICAqIHRoZSBnaXZlbiBsYWJlbC4gKi8K
KyAgICBHUENfSV9aRVJPSlVNUCwKKyAgICAKKyAgICAvKiBkZWNyZW1lbnQgdGhlIHZhbHVlIGF0
IHRoZSB0b3Agb2YgdGhlIHN0YWNrLiAgaWYgaXQgaXMgbm9uLXplcm8sCisgICAgICoganVtcCBi
YWNrd2FyZCB0byB0aGUgZ2l2ZW4gbGFiZWwuICovCisgICAgR1BDX0lfREVDQ09NUEpVTVAsCisg
ICAgCisgICAgLyogY29tcGFyZXMgdGhlIHRvcG1vc3QgZWxlbWVudCBvbiB0aGUgc3RhY2sgdG8g
dGhlIHN1cHBsaWVkIGNvbnN0YW50LgorICAgICAqIGlmIHRoZSB0b3Btb3N0IGVsZW1lbnQgaXMg
VUlOVDMyX01BWCwgbm90aGluZyBoYXBwZW5zLiAgaWYgdGhlCisgICAgICogdG9wbW9zdCBlbGVt
ZW50IGlzIGxlc3MgdGhhbiB0aGUgc3VwcGxpZWQgY29uc3RhbnQsIG5vdGhpbmcgaGFwcGVucy4K
KyAgICAgKiBvdGhlcndpc2UsIGl0IGlzIGFuIGVycm9yLCBhbmQgdGhlIGludGVycHJldGVyIGZh
aWxzIG91dC4gKi8KKyAgICBHUENfSV9DSEVDS0NIT0lDRSwKKyAgICAKKyAgICAvKiBwb3AgdGhl
IDMyLWJpdCB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaworICAgICAqIGFuZCB1c2UgaXQg
YXMgYW4gaW5kZXggaW50byB0aGUgZ2l2ZW4gdGFibGUsIGFuZCB0aGVuIHBsYWNlCisgICAgICog
dGhlIGxvb2tlZCB1cCB2YWx1ZSBpbnRvIHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IHRoZSB0
b3Btb3N0CisgICAgICogcG9pbnRlciBwbHVzIHRoZSBvZmZzZXQuICBoZXJlJ3MgdGhlIHdheSB5
b3UgY2FsbCB0aGlzIGJlYXN0OgorICAgICAqIEdQQ19JX1RBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxE
IDxvZmZzZXQ+IDxudW0gdGFibGUgZW50cmllcz4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8ZW50cnkgMD4gPGVudHJ5IDE+IC4uLgorICAgICAqIElmIHRoZSB2YWx1ZSBh
dCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBiZXlvbmQgdGhlIGJvdW5kcyBvZgorICAgICAqIHRo
aXMgdGFibGUsIHRoZW4gaXQgaXMgYW4gZXJyb3IgYW5kIHRoZSBpbnRlcnByZXRlciBpcworICAg
ICAqIHRlcm1pbmF0ZWQuICBJZiB0aGUgdmFsdWUgaXMgVUlOVDMyX01BWCwgdGhlbiB0aGUgbG9j
YXRpb24gaXMKKyAgICAgKiBzZXQgdG8gVUlOVDMyX01BWC4gKi8KKyAgICBHUENfSV9UQUJMRVNF
VF9MT0NBTF9UT19GSUVMRCwKKyAgICAKKyAgICAvKiByZWFkIHRoZSAzMi1iaXQgdmFsdWUgYXQg
dGhlIGdpdmVuIHNvdXJjZSBvZmZzZXQgZnJvbSB0aGUKKyAgICAgKiB0b3Btb3N0IHBvaW50ZXIg
YW5kIHVzZSBpdCBhcyBhbiBpbmRleCBpbnRvIHRoZSBnaXZlbiB0YWJsZSwgYW5kCisgICAgICog
dGhlbiBwbGFjZSB0aGUgbG9va2VkIHVwIHZhbHVlIGludG8gdGhlIGxvY2F0aW9uIHBvaW50ZWQg
dG8gYnkKKyAgICAgKiB0aGUgZGVzdGluYXRpb24gb2Zmc2V0IHBsdXMgdGhlIHNlY29uZCB0byB0
b3Btb3N0IHBvaW50ZXIuCisgICAgICogY2FsbCB0aGlzIGxpa2Ugc286CisgICAgICogR1BDX0lf
VEFCTEVTRVRfRklFTERfVE9fRklFTEQgPGRlc3Qgb2Zmc2V0PiA8c291cmNlIG9mZnNldD4KKyAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnVtIHRhYmxlIGVudHJpZXM+IDxl
bnRyeSAwPiAuLi4KKyAgICAgKiBJZiB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9t
IHRoZSB0b3Btb3N0IHBvaW50ZXIgaXMKKyAgICAgKiBiZXlvbmQgdGhlIGJvdW5kcyBvZiB0aGlz
IHRhYmxlLCB0aGVuIGl0IGlzIGFuIGVycm9yIGFuZCB0aGUKKyAgICAgKiBpbnRlcnByZXRlciBp
cyB0ZXJtaW5hdGVkLiAgSWYgdGhlIHZhbHVlIGlzIFVJTlQzMl9NQVgsIHRoZW4gdGhlCisgICAg
ICogbG9jYXRpb24gaXMgc2V0IHRvIFVJTlQzMl9NQVguICovCisgICAgR1BDX0lfVEFCTEVTRVRf
RklFTERfVE9fRklFTEQsCisgICAgCisgICAgLyogcmV0cmlldmUgdGhlIDMyLWJpdCB2YWx1ZSBm
cm9tIHRoZSBvZmZzZXQgb2ZmIG9mIHRoZSB0b3Btb3N0CisgICAgICogcG9pbnRlciBhbmQgdXNl
IGl0IGFzIGFuIGluZGV4IGludG8gdGhlIGdpdmVuIHRhYmxlLCBhbmQgdGhlbiBqdW1wCisgICAg
ICogdG8gdGhlIGxvY2F0aW9uIGxhYmVsZWQgYnkgdGhlIGxvb2tlZCB1cCB2YWx1ZS4gIFlvdSBj
YWxsIHRoaXMKKyAgICAgKiBiZWFzdCBsaWtlIHNvOgorICAgICAqIEdQQ19JX1RBQkxFSlVNUF9G
SUVMRCA8b2Zmc2V0PiA8bnVtIHRhYmxlIGVudHJpZXM+IDxlbnRyeSAwPiAuLi4KKyAgICAgKiBJ
ZiB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0b3Btb3N0IHBvaW50ZXIg
aXMKKyAgICAgKiBiZXlvbmQgdGhlIGJvdW5kcyBvZiB0aGlzIHRhYmxlLCB0aGVuIGl0IGlzIGFu
IGVycm9yIGFuZCB0aGUKKyAgICAgKiBpbnRlcnByZXRlciBpcyB0ZXJtaW5hdGVkLiAgSWYgdGhl
IHZhbHVlIGlzIFVJTlQzMl9NQVgsIHRoZW4gbm8KKyAgICAgKiBqdW1wIG9jY3Vycy4gKi8KKyAg
ICBHUENfSV9UQUJMRUpVTVBfRklFTEQsCisgICAgCisgICAgLyogcG9wIHRoZSAzMi1iaXQgdmFs
dWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgYW5kCisgICAgICogdXNlIGl0IGFzIGFuIGluZGV4
IGludG8gdGhlIGdpdmVuIHRhYmxlLCBhbmQgdGhlbiBqdW1wIHRvIHRoZQorICAgICAqIGxvY2F0
aW9uIGxhYmVsZWQgYnkgdGhlIGxvb2tlZCB1cCB2YWx1ZS4gIFlvdSBjYWxsIHRoaXMKKyAgICAg
KiBiZWFzdCBsaWtlIHNvOgorICAgICAqIEdQQ19JX1RBQkxFSlVNUCA8bnVtIHRhYmxlIGVudHJp
ZXM+IDxlbnRyeSAwPiAuLi4KKyAgICAgKiBJZiB0aGUgdmFsdWUgYXQgdGhlIHRvcG1vc3QgcG9p
bnRlciBpcyBiZXlvbmQgdGhlIGJvdW5kcyBvZgorICAgICAqIHRoaXMgdGFibGUsIHRoZW4gaXQg
aXMgYW4gZXJyb3IgYW5kIHRoZSBpbnRlcnByZXRlciBpcworICAgICAqIHRlcm1pbmF0ZWQuICBJ
ZiB0aGUgdmFsdWUgaXMgVUlOVDMyX01BWCwgdGhlbiBubyBqdW1wIG9jY3Vycy4gKi8KKyAgICBH
UENfSV9UQUJMRUpVTVBfTE9DQUwsCisgICAgCisgICAgLyoganVtcCB0byB0aGUgZ2l2ZW4gbGFi
ZWwgdW5jb25kaXRpb25hbGx5LiAgdGhpcyBpcyBhIGZvcndhcmQganVtcCAqLworICAgIEdQQ19J
X0pVTVAsCisgICAgCisgICAgLyogcmV0dXJucyBvbmUuICovCisgICAgR1BDX0lfUkVUVVJOX09O
RSwKKyAgICAKKyAgICAvKiByZXR1cm5zIHRoZSB0b3AgcG9pbnRlciB3aXRob3V0IGNsZWFyaW5n
IHRoZSByZWdpb24uICovCisgICAgR1BDX0lfUkVUVVJOX1RPUF9XSVRIX1JFR0lPTiwKKyAgICAK
KyAgICAvKiBhc3N1bWVzIHRoYXQgdGhlIGJ1ZmZlciB0aGF0IHRoZSBjbGllbnQgc2VlcyBpcyBp
biB0aGUgc3RhY2sgc2xvdCBqdXN0CisgICAgICogYmVsb3cgdGhlIHRvcCBvbmUuIGluaXRpYWxp
emVzIGl0IHdpdGggdGhlIHJlc3VsdGluZyBkYXRhIGJ1ZmZlciBhbmQgc2V0cworICAgICAqIHRo
ZSB0eXBlcyB0byB0aGUgdHlwZV9pbl9tYW4gZW1wdHkgc2luZ2xldG9uLiAqLworICAgIEdQQ19J
X1JFVFVSTl9PTkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUywKKyAgICAKKyAgICAvKiBhc3N1
bWVzIHRoYXQgdGhlIGJ1ZmZlciB0aGF0IHRoZSBjbGllbnQgc2VlcyBpcyBpbiB0aGUgc3RhY2sg
c2xvdCBqdXN0CisgICAgICogYmVsb3cgdGhlIHRvcCBvbmUuIGluaXRpYWxpemVzIGl0IHdpdGgg
dGhlIHJlc3VsdGluZyBkYXRhIGJ1ZmZlciBhbmQgdGhlCisgICAgICogaW52ZXJzZSBvZiB0aGUg
Y3VycmVudCBydW5uaW5nIG91dF9tYXAuICovCisgICAgR1BDX0lfUkVUVVJOX09ORV9JTklUX0JV
Rl9XSVRIX1RZUEVTX0ZST01fT1VUX01BUCwKKyAgICAKKyAgICAvKiB0aGlzIGlzIG5vdCBhIHJl
YWwgaW5zdHJ1Y3Rpb24uICBkb24ndCB1c2UgaXQuICBidXQgbWFrZSBzdXJlIHRoYXQKKyAgICAg
KiBpdCBpcyBhbHdheXMgYXQgdGhlIGVuZCBvZiB0aGlzIGVudW1lcmF0aW9uLiAqLworICAgIEdQ
Q19JX0xBU1QKK307CisKK3R5cGVkZWYgdWludHB0cl90IGdwY19jZWxsX3Q7CisKKy8qIGEgbGlz
dCBvZiBjZWxsIHBvaW50ZXJzICovCitzdHJ1Y3QgZ3BjX2NlbGxfbGlzdCB7CisgICAgZ3BjX2Nl
bGxfdCAqY2VsbDsKKyAgICBzdHJ1Y3QgZ3BjX2NlbGxfbGlzdCAqbmV4dDsKK307CisKK3R5cGVk
ZWYgc3RydWN0IGdwY19jZWxsX2xpc3QgZ3BjX2NlbGxfbGlzdF90OworCisvKiBjb250YWlucyBH
UENfSV9MQUJFTCBpbnN0cnVjdGlvbnMuICovCitzdHJ1Y3QgZ3BjX3Byb3RvIHsKKyAgICB1aW50
MzJfdCBudW1fYXJnczsKKyAgICBncGNfY2VsbF90ICpzdHJlYW07CisgICAgdWludDMyX3Qgc2l6
ZTsgIC8qIG51bWJlciBvZiBjZWxscyBhbGxvY2F0ZWQgZm9yIHN0cmVhbS4gIHRoaXMgaXMgYWxz
bworICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbnVtYmVyIG9mIGNlbGxzIHRoYXQgaGF2ZSBj
b2RlIGluIHRoZW0uICovCit9OworCisvKiBkb2VzIG5vdCBjb250YWluIEdQQ19JX0xBQkVMIGlu
c3RydWN0aW9ucy4gKi8KK3N0cnVjdCBncGNfaW50YWJsZSB7CisgICAgdWludDMyX3QgbnVtX2Fy
Z3M7CisgICAgZ3BjX2NlbGxfdCAqc3RyZWFtOworICAgIHVpbnQzMl90IHNpemU7ICAvKiBudW1i
ZXIgb2YgY2VsbHMgYWxsb2NhdGVkIGZvciBzdHJlYW0uICB0aGlzIGlzIGFsc28KKyAgICAgICAg
ICAgICAgICAgICAgICogdGhlIG51bWJlciBvZiBjZWxscyB0aGF0IGhhdmUgY29kZSBpbiB0aGVt
LiAqLworCisgICAgdHNmX3N0X3RhYmxlICp0YXJnZXRzOworCisgICAgdHNmX3N0X3RhYmxlICpz
dGFja19oZWlnaHRzOworICAgIGludHB0cl90IG1heF9oZWlnaHQ7Cit9OworCit0eXBlZGVmIHN0
cnVjdCBncGNfaW50YWJsZSBncGNfaW50YWJsZV90OworCisvKiB0aHJlYWRlZCBjb2RlICovCitz
dHJ1Y3QgZ3BjX3RocmVhZGVkIHsKKyAgICB1aW50MzJfdCBudW1fYXJnczsKKyAgICBncGNfY2Vs
bF90ICpzdHJlYW07CisgICAgdWludDMyX3Qgc2l6ZTsgIC8qIG51bWJlciBvZiBjZWxscyBhbGxv
Y2F0ZWQgZm9yIHN0cmVhbS4gIHRoaXMgaXMgYWxzbworICAgICAgICAgICAgICAgICAgICAgKiB0
aGUgbnVtYmVyIG9mIGNlbGxzIHRoYXQgaGF2ZSBjb2RlIGluIHRoZW0uICovCisgICAgaW50cHRy
X3QgbWF4X2hlaWdodDsKK307CisKK3R5cGVkZWYgc3RydWN0IGdwY190aHJlYWRlZCBncGNfdGhy
ZWFkZWRfdDsKKworLyogdGhlIHR5cGUgZm9yIGEgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHJ1
bm5pbmcgYSBncGNfcHJvZ3JhbS4gKi8KK3R5cGVkZWYgdWludHB0cl90ICgqZ3BjX3Byb2dyYW1f
cnVubmVyX3QpKHZvaWQgKnBheWxvYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpyZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfY2VsbF90ICphcmdzKTsKKworLyogdGhlIHR5cGUgb2YgYSBmdW5jdGlv
biB0aGF0IGRlc3J0cm95cyB0aGUgcGF5bG9hZCBvZiBhIGdwY19wcm9ncmFtLiAqLwordHlwZWRl
ZiB2b2lkICgqZ3BjX3Byb2dyYW1fZGVzdHJveWVyX3QpKHZvaWQgKnBheWxvYWQpOworCisvKiB0
aGlzIGlzIHdoYXQgeW91IHVzZSB0byBydW4gYSBHUEMgcHJvZ3JhbS4gIGRlbGVnYXRlcyB0byBv
bmUKKyAqIG9mIHRoZSBleGVjdXRpb24gZW5naW5lcy4gKi8KK3N0cnVjdCBncGNfcHJvZ3JhbSB7
CisgICAgdm9pZCAqcGF5bG9hZDsKKyAgICBncGNfcHJvZ3JhbV9ydW5uZXJfdCBydW5uZXI7Cisg
ICAgZ3BjX3Byb2dyYW1fZGVzdHJveWVyX3QgZGVzdHJveWVyOworfTsKKworLyogcmV0dXJucyB0
aGUgc2l6ZSwgaW4gdGhlIG51bWJlciBvZiBzbG90cywgdGhhdCB0aGlzIGluc3RydWN0aW9uCisg
KiBvY2N1cGllcy4gIG5vdGUgdGhhdCBzb21lIGluc3RydWN0aW9ucyBhcmUgdmFyaWFibGUgbGVu
Z3RoLiAgZm9yCisgKiB0aGVzZSBpbnN0cnVjdGlvbnMsIHRoaXMgbWFjcm8gcmV0dXJucyBVSU5U
MzJfTUFYLgorICogRklYTUU6IHRoaXMgbWFjcm8gaXMgd3JvbmcuICB0aGUgbmggY29weSBvcGNv
ZGVzIHRha2Ugb25lCisgKiBvcGVyYW5kLCBub3QgdHdvLiAqLwordWludDMyX3QgZ3BjX2luc3Ry
dWN0aW9uX3N0YXRpY19zaXplKGdwY19jZWxsX3QgaW5zdCk7CisKKy8qIHJldHVybnMgdGhlIGVm
ZmVjdCBvbiB0aGUgc3RhY2sgZnJvbSBleGVjdXRpbmcgdGhpcyBpbnN0cnVjdGlvbi4KKyAqIGlm
IDAgaXMgcmV0dXJuZWQsIHRoYXQgbWVhbnMgdGhhdCB0aGUgc3RhY2sgaGVpZ2h0IGlzIHVuYWZm
ZWN0ZWQuICBpZgorICogYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQsIHRoZW4gdGhlIHN0
YWNrIHdpbGwgZ3JvdyBieSB0aGF0IGFtb3VudC4KKyAqIGlmIGEgbmVnYXRpdmUgbnVtYmVyIGlz
IHJldHVybmVkLCB0aGVuIHRoZSBzdGFjayB3aWxsIHNocmluayBieSB0aGF0CisgKiBhbW91bnQu
ICovCitpbnQzMl90IGdwY19pbnN0cnVjdGlvbl9zdGFja19lZmZlY3RzKGdwY19jZWxsX3QgaW5z
dCk7CisKKy8qIHJldHVybiBhIHN0cmluZyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBpbnN0cnVjdGlv
bi4gKi8KK2NvbnN0IGNoYXIgKmdwY19pbnN0cnVjdGlvbl90b19zdHJpbmcoZ3BjX2NlbGxfdCBp
bnN0KTsKKworLyogcmV0dXJucyB0aGUgc2l6ZSwgaW4gdGhlIG51bWJlciBvZiBzbG90cywgdGhh
dCB0aGlzIGluc3RydWN0aW9uCisgKiBvY2N1cGllcy4gIG5vdGUgdGhhdCBzb21lIGluc3RydWN0
aW9ucyBhcmUgdmFyaWFibGUgbGVuZ3RoLiAgZm9yCisgKiB0aGlzIHJlYXNvbiwgdGhpcyBtYWNy
byByZXF1aXJlcyB0aGF0IHlvdSBwYXNzIGluIGEgcG9pbnRlciB0bworICogYW4gaW5zdHJ1Y3Rp
b24gaW4gdGhlIGFjdHVhbCBzdHJlYW0sIHNvIHRoYXQgdGhlIGluc3RydWN0aW9uCisgKiBzdHJl
YW0gY2FuIGJlIHByb3Blcmx5IHF1ZXJpZWQuICovCit1aW50MzJfdCBncGNfaW5zdHJ1Y3Rpb25f
c2l6ZShncGNfY2VsbF90ICppbnN0cHRyKTsKKworLyogZnVuY3Rpb24gdG8gZXhlY3V0ZSBmb3Ig
anVtcCB0YXJnZXRzIHdpdGhpbiBpbnN0cnVjdGlvbnMgKi8KK3R5cGVkZWYgdHNmX2Jvb2xfdCAo
KmdwY190YXJnZXRfY2JhY2tfdCkoZ3BjX2NlbGxfdCAqY2VsbCx2b2lkICphcmcpOworCisvKiBl
eGVjdXRlcyB0aGUgZ2l2ZW4ganVtcCB0YXJnZXQgY2FsbGJhY2sgZm9yIGFsbCBiYWNrIGJyYW5j
aGVzIGluCisgKiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb24uICovCit0c2ZfYm9vbF90IGdwY19pbnN0
cnVjdGlvbl9mb3JfYWxsX2JhY2tfYnJhbmNoZXMoZ3BjX2NlbGxfdCAqaW5zdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfdGFyZ2V0X2NiYWNr
X3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqYXJnKTsKKworLyogZXhlY3V0ZXMgdGhlIGdpdmVuIGp1bXAgdGFyZ2V0IGNhbGxi
YWNrIGZvciBhbGwgZm9yd2FyZCBicmFuY2hlcyBpbgorICogdGhlIGdpdmVuIGluc3RydWN0aW9u
LiAqLwordHNmX2Jvb2xfdCBncGNfaW5zdHJ1Y3Rpb25fZm9yX2FsbF9mb3J3YXJkX2JyYW5jaGVz
KGdwY19jZWxsX3QgKmluc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BjX3RhcmdldF9jYmFja190IGNiYWNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisKKy8qIGV4
ZWN1dGVzIHRoZSBnaXZlbiBqdW1wIHRhcmdldCBjYWxsYmFjayBmb3IgYWxsIGJyYW5jaGVzIGlu
CisgKiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb24uICovCit0c2ZfYm9vbF90IGdwY19pbnN0cnVjdGlv
bl9mb3JfYWxsX2JyYW5jaGVzKGdwY19jZWxsX3QgKmluc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdwY190YXJnZXRfY2JhY2tfdCBjYmFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKworLyog
cmV0dXJucyB0c2ZfdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb24gY2F1c2VzIHRoZSBwcm9n
cmFtIHRvCisgKiByZXR1cm4uICovCit0c2ZfYm9vbF90IGdwY19pbnN0cnVjdGlvbl9pc19yZXR1
cm4oZ3BjX2NlbGxfdCBpbnN0KTsKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiB0aGUgZ2l2ZW4g
aW5zdHJ1Y3Rpb24gbWF5IGFsbG93IGNvbnRyb2wgZmxvdworICogdG8gY29udGludWUgdG8gdGhl
IGluc3RydWN0aW9uIGRpcmVjdGx5IGFmdGVyIGl0LiAgcmV0dXJucyB0c2ZfZmFsc2UKKyAqIGZv
ciBpbnN0cnVjdGlvbnMgdGhhdCBkbyB1bmNvbmRpdGlvbmFsIGp1bXBzIGFuZCB0aGF0IHRlcm1p
bmF0ZSB0aGUKKyAqIHByb2dyYW0sIG9yIGZvciBhbnl0aGluZyBlbHNlIHRoYXQgd2lsbCBuZXZl
ciBsZWFkIHRvIGNvbnRyb2wgZmxvdworICogY29udGludWluZyB0byB0aGUgbmV4dCBpbnN0cnVj
dGlvbi4gKi8KK3RzZl9ib29sX3QgZ3BjX2luc3RydWN0aW9uX2lzX2NvbnRpbnVvdXMoZ3BjX2Nl
bGxfdCBpbnN0KTsKKworLyogY3JlYXRlIGEgcHJvdG90eXBlLiAgdGhpcyBpcyBqdXN0IHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGNyZWF0aW9uCisgKiBwcm9jZXNzLiAgaXQgaXMgdGhlbiB5b3VyIHJl
c3BvbnNpYmlsaXR5IHRvIGRyb3AgaW4gdGhlIHByb3BlcgorICogb3Bjb2RlcyBhbmQgb3BlcmFu
ZHMuICovCitncGNfcHJvdG9fdCAqZ3BjX3Byb3RvX2NyZWF0ZSh1aW50MzJfdCBudW1fYXJncyk7
CisKKy8qIGRlc3Ryb3kgYSBwcm90b3R5cGUuICovCit2b2lkIGdwY19wcm90b19kZXN0cm95KGdw
Y19wcm90b190ICpwcm90byk7CisKKy8qIGdldCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyAqLwor
I2RlZmluZSBncGNfcHJvdG9fZ2V0X251bV9hcmdzKHByb3RvKSBcCisgICAgICAgICAgICAoKHBy
b3RvKS0+bnVtX2FyZ3MpCisKKy8qIHJlc2VydmUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYWRk
aXRpb25hbCBzbG90cy4gKi8KK3RzZl9ib29sX3QgZ3BjX3Byb3RvX3Jlc2VydmUoZ3BjX3Byb3Rv
X3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1fc2xv
dHMpOworCisvKiBhcHBlbmQgYW4gaW5zdHJ1Y3Rpb24uICB5b3UgYXJlIHJlcXVpcmVkIHRvIHN1
cHBseSB0aGUgY29ycmVjdAorICogbnVtYmVyIG9mIG9wZXJhbmRzLiAqLwordHNmX2Jvb2xfdCBn
cGNfcHJvdG9fYXBwZW5kKGdwY19wcm90b190ICpwcm90bywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncGNfY2VsbF90IGluc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4u
KTsKKworLyogYXBwZW5kIGEgdGFibGVzZXRfbG9jYWxfdG9fZmllbGQgaW5zdHJ1Y3Rpb24gKi8K
K3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZF90YWJsZXNldF9sb2NhbF90b19maWVsZChncGNf
cHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3BjX2NlbGxfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBudW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3BjX2NlbGxfdCAq
YXJncyk7CisKKy8qIGFwcGVuZCBhIHRhYmxlc2V0X2ZpZWxkX3RvX2ZpZWxkIGluc3RydWN0aW9u
ICovCit0c2ZfYm9vbF90IGdwY19wcm90b19hcHBlbmRfdGFibGVzZXRfZmllbGRfdG9fZmllbGQo
Z3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgZGVzdF9vZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBzcmNfb2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw
Y19jZWxsX3QgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdwY19jZWxsX3QgKmFyZ3MpOworCisvKiBhcHBlbmQgYSB0YWJsZWp1
bXBfbG9jYWwgaW5zdHJ1Y3Rpb24gKi8KK3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZF90YWJs
ZWp1bXBfbG9jYWwoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IG51bSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3BjX2NlbGxfdCAqYXJncyk7CisKKy8qIGFw
cGVuZCBhIHRhYmxlanVtcF9sb2NhbCBpbnN0cnVjdGlvbiAqLwordHNmX2Jvb2xfdCBncGNfcHJv
dG9fYXBwZW5kX3RhYmxlanVtcF9maWVsZChncGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3Qgb2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IG51bSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3BjX2Nl
bGxfdCAqYXJncyk7CisKKy8qIHByaW50IHRoZSBwcm90b3R5cGUgdG8gdGhlIGdpdmVuIEZJTEUg
c3RyZWFtLiAqLwordm9pZCBncGNfcHJvdG9fcHJpbnQoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAg
ICAgICAgICAgICAgICAgICAgRklMRSAqb3V0KTsKKworLyogZGVidWdnaW5nIHN0dWZmICovCit2
b2lkIGdwY19jb2RlX2dlbl9kZWJ1Zyhjb25zdCBjaGFyICp0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZ3BjX3Byb3RvX3QgKnByb3RvKTsKKworLyogY3JlYXRlIGFuIGludGVycHJldGFi
bGUgZnJvbSBhIHByb3RvdHlwZS4gKi8KK2dwY19pbnRhYmxlX3QgKmdwY19pbnRhYmxlX2Zyb21f
cHJvdG8oZ3BjX3Byb3RvX3QgKnByb3RvKTsKKworLyogY2xvbmUgYW4gaW50ZXJwcmV0YWJsZSAq
LworZ3BjX2ludGFibGVfdCAqZ3BjX2ludGFibGVfY2xvbmUoZ3BjX2ludGFibGVfdCAqaW50YWJs
ZSk7CisKKy8qIGRlc3Ryb3kgYW4gaW50ZXJwcmV0YWJsZS4gKi8KK3ZvaWQgZ3BjX2ludGFibGVf
ZGVzdHJveShncGNfaW50YWJsZV90ICppbnRhYmxlKTsKKworLyogZ2V0IHRoZSBudW1iZXIgb2Yg
YXJndW1lbnRzICovCisjZGVmaW5lIGdwY19pbnRhYmxlX2dldF9udW1fYXJncyhpbnRhYmxlKSBc
CisgICAgICAgICAgICAoKGludGFibGUpLT5udW1fYXJncykKKworLyogZ2V0IHRoZSBiZWdpbm5p
bmcgb2YgdGhlIGludGFibGUgc3RyZWFtICovCisjZGVmaW5lIGdwY19pbnRhYmxlX2dldF9zdHJl
YW0oaW50YWJsZSkgXAorICAgICAgICAgICAgKChpbnRhYmxlKS0+c3RyZWFtKQorCisvKiBnZXQg
dGhlIGVuZCAoU1RMLXN0eWxlKSBvZiB0aGUgaW50YWJsZSBzdHJlYW0gKi8KKyNkZWZpbmUgZ3Bj
X2ludGFibGVfZ2V0X3N0cmVhbV9lbmQoaW50YWJsZSkgXAorICAgICAgICAgICAgKChpbnRhYmxl
KS0+c3RyZWFtKyhpbnRhYmxlKS0+c2l6ZSkKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiB0aGUg
Z2l2ZW4gY2VsbCBhZGRyZXNzIGlzIGEganVtcCB0YXJnZXQgKi8KKyNkZWZpbmUgZ3BjX2ludGFi
bGVfaXNfdGFyZ2V0KGludGFibGUsYWRkcmVzcykgXAorICAgICAgICAgICAgKHRzZl9zdF9sb29r
dXAoKGludGFibGUpLT50YXJnZXRzLChjaGFyKilhZGRyZXNzLE5VTEwpKQorCisvKiByZXR1cm5z
IHRzZl90cnVlIGlmIHRoZSBnaXZlbiBjZWxsIGFkZHJlc3MgaXMgbGl2ZSBjb2RlICovCisjZGVm
aW5lIGdwY19pbnRhYmxlX2lzX2xpdmUoaW50YWJsZSxhZGRyZXNzKSBcCisgICAgICAgICAgICAo
dHNmX3N0X2xvb2t1cCgoaW50YWJsZSktPnN0YWNrX2hlaWdodHMsKGNoYXIqKWFkZHJlc3MsTlVM
TCkpCisKKy8qIHJldHVybnMgdGhlIHN0YWNrIGhlaWdodCBhdCB0aGUgZ2l2ZW4gcGllY2Ugb2Yg
Y29kZS4gIHdpbGwgcmV0dXJuCisgICAtMSBpZiB0aGUgY29kZSBpcyBub3QgbGl2ZS4gIG5vdGUg
dGhhdCB0aGUgZXJyb3IgY29kZSBpcyBub3Qgc2V0IGluCisgICBlaXRoZXIgY2FzZS4gKi8KK2lu
dHB0cl90IGdwY19pbnRhYmxlX2dldF9oZWlnaHQoZ3BjX2ludGFibGVfdCAqcHJvZywKKwkJCQln
cGNfY2VsbF90ICphZGRyZXNzKTsKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiBncGNfaW50YWJs
ZV9ydW4gaXMgc3VwcG9ydGVkLiAqLwordHNmX2Jvb2xfdCBncGNfaW50YWJsZV9ydW5fc3VwcG9y
dGVkKCk7CisKKy8qIGludGVycHJldCB0aGUgaW50YWJsZS4gKi8KK3VpbnRwdHJfdCBncGNfaW50
YWJsZV9ydW4oZ3BjX2ludGFibGVfdCAqcHJvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqcmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90ICphcmdz
KTsKKworLyogd3JpdGUgdGhlIHByb2dyYW0gdXNpbmcgdGhlIGdpdmVuIHdyaXRlci4gKi8KK3Rz
Zl9ib29sX3QgZ3BjX2ludGFibGVfd3JpdGUoZ3BjX2ludGFibGVfdCAqcHJvZywKKwkJCSAgICAg
dHNmX3dyaXRlcl90IHdyaXRlciwKKwkJCSAgICAgdm9pZCAqYXJnKTsKKworLyogTk9URTogdGhl
IGFsbF9yZXR1cm5zLCBwcmVkZWNlc3NvcnMsIGFuZCBtaW5fcmVtYWluaW5nIGFuYWx5c2VzIGFy
ZQorICogY3VycmVudGx5IHVudXNlZCBhbmQgc28gaGVuY2UgYXJlIGV4Y2x1ZGVkIGZyb20gdGhl
IE1ha2VmaWxlIGFuZCBmcm9tCisgKiB0aGUgZGlzdHJpYnV0aW9uLiAgVGhleSBhcmUsIGhvd2V2
ZXIsIGluY2x1ZGVkIGluIENWUywgbGVzdCB0aGV5IGV2ZXIKKyAqIGJlY29tZSB1c2VmdWwuICov
CisKKy8qIGFuYWx5c2lzIHRvIGZpbmQgYWxsIHJldHVybnMuICByZXR1cm5zIGEgTlVMTC10ZXJt
aW5hdGVkIGFycmF5IG9mIHJldHVybgorICogcG9pbnRzIGluIHRoZSBnaXZlbiBwcm9ncmFtLgor
ICoKKyAqIEZJWE1FOiB0aGlzIHJlYWxseSBzaG91bGQgbm90IGJlIGEgc2VwYXJhdGUgYW5hbHlz
aXMuICBpdCBzaG91bGQgYmUganVzdAorICogYW4gZXh0cmEgcmV0dXJuIGZyb20gZ3BjX2ludGFi
bGVfZ2V0X3ByZWRlY2Vzc29ycygpLiAqLworZ3BjX2NlbGxfdCAqKmdwY19pbnRhYmxlX2ZpbmRf
YWxsX3JldHVybnMoZ3BjX2ludGFibGVfdCAqcHJvZyk7CisKKy8qIGZpbmQgcHJlZGVjZXNzb3Jz
LiAgcmV0dXJucyBhIGhhc2h0YWJsZSBtYXBwaW5nIGVhY2ggaW5zdHJ1Y3Rpb24gY2VsbAorICog
dG8gYSBsaW5rZWQgbGlzdCBvZiBpdHMgcHJlZGVjZXNzb3JzLiAgdGhlIGxpbmtlZCBsaXN0IGlz
IHR5cGVkIGFzIGEKKyAqIGdwY19jZWxsX2xpc3RfdC4gKi8KK3RzZl9zdF90YWJsZSAqZ3BjX2lu
dGFibGVfZ2V0X3ByZWRlY2Vzc29ycyhncGNfaW50YWJsZV90ICpwcm9nKTsKKworLyogeW91IHNo
b3VsZCB1c2UgdGhpcyBmdW5jdGlvbiB0byBmcmVlIHVwIHRoZSBsaXN0IHJldHVybmVkIGJ5IHRo
ZQorICogZ3BjX2ludGFibGVfZ2V0X3ByZWRlY2Vzc29ycygpIGZ1bmN0aW9uLiAqLwordm9pZCBn
cGNfaW50YWJsZV9kZXN0cm95X3ByZWRlY2Vzc29ycyh0c2Zfc3RfdGFibGUgKnByZWRzKTsKKwor
LyogZ2l2ZXMgeW91IGEgdGFibGUgdGhhdCBtYXBzIGVhY2ggaW5zdHJ1Y3Rpb24gdG8gdGhlIG1p
bmltdW0gbnVtYmVyIG9mCisgKiBieXRlcyB0aGF0IHlvdSBhcmUgZ3VhcmFudGVlZCB0byBoYXZl
IGxlZnQgaW4gdGhlIGJ1ZmZlciwgYXNzdW1pbmcKKyAqIHRoYXQgdGhlIHByb2dyYW0gZG9lcyBu
b3Qgb3ZlcnJ1biB0aGUgYnVmZmVyIGluIHRoZSBlbmQuICovCit0c2Zfc3RfdGFibGUgKmdwY19p
bnRhYmxlX2dldF9taW5fcmVtYWluaW5nKGdwY19pbnRhYmxlX3QgKnByb2cpOworCisvKiByZXR1
cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW50YWJsZSBldmVyIGRvZXMgaW50ZWdlciB0byBmbG9hdAor
ICogY29udmVyc2lvbi4gKi8KK3RzZl9ib29sX3QgZ3BjX2ludGFibGVfY2FuX2RvX2ludF90b19m
bG9hdF9jb252ZXJzaW9uKGdwY19pbnRhYmxlX3QgKnByb2cpOworCisvKiByZXR1cm5zIHRzZl90
cnVlIGlmIHRoZSBnaXZlbiBpbnRhYmxlIGV2ZXIgY2FsbHMgZnVuY3Rpb25zIHRoYXQgcmVxdWly
ZQorICogYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgcG9pbnRlciByZWdpc3Rlci4gKi8KK3RzZl9i
b29sX3QgZ3BjX2ludGFibGVfY2FuX2NhbGxfYnVmZmVyX211dGF0b3JfZnVuY3Rpb25zKGdwY19p
bnRhYmxlX3QgKnByb2cpOworCisvKiByZXR1cm5zIHRzZl90cnVlIGlmIHRoZSBnaXZlbiBpbnRh
YmxlIGV2ZXIgdXNlcyB0aGUgaW5fbWFwIChhbHNvCisgICBrbm93biBhcyB0eXBlcykuICBkZWZp
bml0aW9ucyBvZiBpbl9tYXAgZG9uJ3QgY29uJ3QgLSBzbyB0aGlzIHdpbGwKKyAgIHJldHVybiB0
c2ZfZmFsc2UgaWYgdGhlIGludGFibGUgZGVmaW5lcyBidXQgZG9lcyBub3QgdXNlIHRoZQorICAg
aW5fbWFwLiAqLwordHNmX2Jvb2xfdCBncGNfaW50YWJsZV9jYW5fdXNlX2luX21hcChncGNfaW50
YWJsZV90ICpwcm9nKTsKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW50YWJs
ZSBldmVyIHVzZXMgdGhlIG91dF9tYXAuCisgICBkZWZpbml0aW9ucyBvZiBvdXRfbWFwIGRvbid0
IGNvbid0IC0gc28gdGhpcyB3aWxsIHJldHVybiB0c2ZfZmFsc2UKKyAgIGlmIHRoZSBpbnRhYmxl
IGRlZmluZXMgYnV0IGRvZXMgbm90IHVzZSB0aGUgb3V0X21hcC4gKi8KK3RzZl9ib29sX3QgZ3Bj
X2ludGFibGVfY2FuX3VzZV9vdXRfbWFwKGdwY19pbnRhYmxlX3QgKnByb2cpOworCisvKiByZXR1
cm5zIHRzZl90cnVlIGlmIGdwY190aHJlYWRlZF90IGlzIHN1cHBvcnRlZC4gKi8KK3RzZl9ib29s
X3QgZ3BjX3RocmVhZGVkX3N1cHBvcnRlZCgpOworCisvKiBjcmVhdGUgYSB0aHJlYWRlZCBwcm9n
cmFtIGZyb20gYW4gaW50YWJsZS4gIHRoaXMgbWF5IGZhaWwgaWYgR1BDCisgKiB3YXMgY29tcGls
ZWQgd2l0aCBhIGNvbXBpbGVyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWRkcmVzcy1vZi0K
KyAqIGxhYmVsIGV4dGVuc2lvbi4gKi8KK2dwY190aHJlYWRlZF90ICpncGNfdGhyZWFkZWRfZnJv
bV9pbnRhYmxlKGdwY19pbnRhYmxlX3QgKmludGFibGUpOworCisvKiBkZXN0cm95IGEgdGhyZWFk
ZWQgKi8KK3ZvaWQgZ3BjX3RocmVhZGVkX2Rlc3Ryb3koZ3BjX3RocmVhZGVkX3QgKnRocmVhZGVk
KTsKKworLyogZ2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzICovCisjZGVmaW5lIGdwY190aHJl
YWRlZF9nZXRfbnVtX2FyZ3ModGhyZWFkZWQpIFwKKyAgICAgICAgICAgICgodGhyZWFkZWQpLT5u
dW1fYXJncykKKworLyogcnVuIGEgdGhyZWFkZWQgKi8KK3VpbnRwdHJfdCBncGNfdGhyZWFkZWRf
cnVuKGdwY190aHJlYWRlZF90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqcmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCAqYXJncyk7
CisKKy8qIGNyZWF0ZSBhIHByb2dyYW0gdXNpbmcgdGhlIGVuZ2luZSBvZiB5b3VyIGNob2ljZS4g
IGlmIHlvdSBwYXNzIGluCisgKiBUU0ZfRU5fREVGQVVMVCwgdGhlbiB0aGUgZGVmYXVsdCBlbmdp
bmUgaXMgdXNlZCAoYmFzZWQgb24gdGhlCisgKiBUU0ZfRU5HSU5FX0NPTkZJRyBlbnZpcm9ubWVu
dCB2YXJpYWJsZTsgaWYgaXQgaXMgbm90IHNldCwgdGhlbgorICogdGhlIGRlZmF1bHQgaXMgR1BJ
TlQpLiAgaWYgeW91IHBhc3MgaW4gVFNGX0VOX05PVF9TVVBQT1JURUQsIHRoZW4KKyAqIE5VTEwg
aXMgcmV0dXJuZWQgd2l0aG91dCB0aGUgZXJyb3IgYmVpbmcgc2V0ICh0aGlzIGFsbG93cyBmb3Ig
ZXJyb3IKKyAqIHByb3BhZ2F0aW9uKS4gKi8KK2dwY19wcm9ncmFtX3QgKmdwY19wcm9ncmFtX2Zy
b21fcHJvdG8oZ3BjX3Byb3RvX3QgKnByb3RvKTsKKworLyogc2FtZSBhcyBhYm92ZSBidXQgY3Jl
YXRlIGZyb20gYW4gaW50YWJsZS4gKi8KK2dwY19wcm9ncmFtX3QgKmdwY19wcm9ncmFtX2Zyb21f
aW50YWJsZShncGNfaW50YWJsZV90ICppbnRhYmxlKTsKKworLyogZGVzdHJveSBhIHByb2dyYW0g
Ki8KK3ZvaWQgZ3BjX3Byb2dyYW1fZGVzdHJveShncGNfcHJvZ3JhbV90ICpwcm9nKTsKKworLyog
cnVuIGEgcHJvZ3JhbSAqLwordWludHB0cl90IGdwY19wcm9ncmFtX3J1bihncGNfcHJvZ3JhbV90
ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgKmFyZ3MpOworCisjZW5kaWYKKwpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19jb2RlX2dlbl91dGlsLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19j
b2RlX2dlbl91dGlsLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL2dwY19jb2RlX2dlbl91dGlsLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAgUGl6
bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJncGNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9y
bWF0LmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRl
IDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZXJy
bm8uaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKworLyogY29kZSBnZW5lcmF0aW9uIGRlYnVnZ2lu
ZyAqLworCisvKiBOT1RFOiBJdCBpcyBub3cgdGhlIGNhc2UgdGhhdCB0aGUgY291bnQgbWF5IGJl
IGluY3JlbWVudGVkIG11bHRpcGxlIHRpbWVzLAorICogaW4gb3JkZXIgdG8gaW5zdXJlIHRoYXQg
ZmlsZXMgYXJlIG5vdCBvdmVyd3JpdHRlbi4gIFRoaXMgYWxsb3dzIG11bHRpcGxlCisgKiBwcm9j
ZXNzZXMgdG8gdXNlIHRoZSBzYW1lIGRpcmVjdG9yeSBmb3IgY29kZSBnZW4gZGVidWdnaW5nLiAg
SG93ZXZlciwgdGhlCisgKiBtdWx0aS1pbmNyZW1lbnQgYXBwcHJvYWNoIG1heSBiZSBvdmVya2ls
bCwgc2luY2UgSSBjb3VsZCBoYXZlIHByb2JhYmx5IGp1c3QKKyAqIGFzIHdlbGwgaGF2ZSB1c2Vk
IHRoZSBQSUQuICovCisKK3N0YXRpYyB2b2xhdGlsZSB1aW50MzJfdCBjb3VudD0wOworCitzdGF0
aWMgdHNmX29uY2VfdCBvbmNlX2NvbnRyb2wgPSBUU0ZfT05DRV9JTklUOworc3RhdGljIHRzZl9t
dXRleF90IGNvdW50X2xvY2s7CisKK3N0YXRpYyB2b2lkIGNvdW50X2luaXQodm9pZCkgeworICAg
IHRzZl9tdXRleF9pbml0KCZjb3VudF9sb2NrKTsKK30KKworc3RhdGljIHVpbnQzMl90IG5leHRf
Y291bnQoKSB7CisgICAgdWludDMyX3QgcmVzdWx0OworICAgIHRzZl9vbmNlKCZvbmNlX2NvbnRy
b2wsIGNvdW50X2luaXQpOworICAgIHRzZl9tdXRleF9sb2NrKCZjb3VudF9sb2NrKTsKKyAgICBy
ZXN1bHQ9Y291bnQrKzsKKyAgICB0c2ZfbXV0ZXhfdW5sb2NrKCZjb3VudF9sb2NrKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdwY19keW5jY19jb2RlX2dlbl9kZWJ1Zyhjb25zdCBj
aGFyICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3Jj
X2ZpbGVuYW1lKSB7CisgICAgY29uc3QgY2hhciAqdHNmX2NvZGVfZ2VuX2RlYnVnPWdldGVudigi
VFNGX0NPREVfR0VOX0RFQlVHIik7CisgICAgY29uc3QgY2hhciAqdHNmX2NvZGVfZ2VuX2RlYnVn
X3BhdGg7CisgICAgY2hhciAqZGVzdF9maWxlbmFtZTsKKyAgICBpbnQgZmRfc3JjLGZkX3RyZzsK
KyAgICB1aW50MzJfdCBjdXJfY250OworICAgIAorICAgIGlmICh0c2ZfY29kZV9nZW5fZGVidWc9
PU5VTEwgfHwgc3RyY2FzZWNtcCh0c2ZfY29kZV9nZW5fZGVidWcsIllFUyIpKSB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgdHNmX2NvZGVfZ2VuX2RlYnVnX3BhdGg9Z2V0ZW52
KCJUU0ZfQ09ERV9HRU5fREVCVUdfUEFUSCIpOworICAgIAorICAgIGlmICh0c2ZfY29kZV9nZW5f
ZGVidWdfcGF0aD09TlVMTCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGZk
X3NyYz1vcGVuKHNyY19maWxlbmFtZSxPX1JET05MWSk7CisgICAgaWYgKGZkX3NyYzwwKSB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLyogbG9vcCB1bnRpbCB3ZSBoaXQgYSBm
aWxlbmFtZSB0aGF0IGlzbid0IGluIHVzZSAqLworICAgIGZvciAoY3VyX2NudD1jb3VudDs7Y3Vy
X2NudD1uZXh0X2NvdW50KCkpIHsKKyAgICAgICAgZGVzdF9maWxlbmFtZT10c2ZfYXNwcmludGYo
IiVzLyIgZnVpMzIgIl8lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl9jb2RlX2dlbl9kZWJ1Z19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKKyAg
ICAgICAgaWYgKGRlc3RfZmlsZW5hbWU9PU5VTEwpIHsKKyAgICAgICAgICAgIGNsb3NlKGZkX3Ny
Yyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZk
X3RyZz1vcGVuKGRlc3RfZmlsZW5hbWUsT19DUkVBVHxPX0VYQ0x8T19XUk9OTFksMDYwMCk7Cisg
ICAgICAgIGZyZWUoZGVzdF9maWxlbmFtZSk7CisgICAgICAgIAorICAgICAgICBpZiAoZmRfdHJn
Pj0wKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKGVycm5vIT1FRVhJU1QpIHsKKyAgICAgICAgICAgIGNsb3NlKGZkX3NyYyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZm9yICg7OykgeworICAg
ICAgICBjaGFyIGJ1ZlsxMDI0XTsKKyAgICAgICAgaW50IHJlcz1yZWFkKGZkX3NyYyxidWYsc2l6
ZW9mKGJ1ZikpOworICAgICAgICBpZiAocmVzPD0wKSB7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBpZiAod3JpdGUoZmRfdHJnLGJ1ZixyZXMpIT1yZXMpIHsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGNsb3NlKGZkX3NyYyk7
CisgICAgY2xvc2UoZmRfdHJnKTsKK30KKwordm9pZCBncGNfY29kZV9nZW5fZGVidWcoY29uc3Qg
Y2hhciAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdwY19wcm90b190ICpwcm90bykg
eworICAgIGNvbnN0IGNoYXIgKnRzZl9jb2RlX2dlbl9kZWJ1Zz1nZXRlbnYoIlRTRl9DT0RFX0dF
Tl9ERUJVRyIpOworICAgIGNvbnN0IGNoYXIgKnRzZl9jb2RlX2dlbl9kZWJ1Z19wYXRoOworICAg
IGNoYXIgKmRlc3RfZmlsZW5hbWU7CisgICAgRklMRSAqb3V0OworICAgIHVpbnQzMl90IGN1cl9j
bnQ7CisgICAgCisgICAgLyogcHJpbnRmKCJkdW1waW5nICVzXG4iLHR5cGUpOyAqLworCisgICAg
aWYgKHRzZl9jb2RlX2dlbl9kZWJ1Zz09TlVMTCB8fCBzdHJjYXNlY21wKHRzZl9jb2RlX2dlbl9k
ZWJ1ZywiWUVTIikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB0c2ZfY29k
ZV9nZW5fZGVidWdfcGF0aD1nZXRlbnYoIlRTRl9DT0RFX0dFTl9ERUJVR19QQVRIIik7CisgICAg
CisgICAgaWYgKHRzZl9jb2RlX2dlbl9kZWJ1Z19wYXRoPT1OVUxMKSB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgZm9yIChjdXJfY250PWNvdW50OztjdXJfY250PW5leHRfY291
bnQoKSkgeworICAgICAgICBpbnQgZmQ7CisgICAgICAgIAorICAgICAgICBkZXN0X2ZpbGVuYW1l
PXRzZl9hc3ByaW50ZigiJXMvIiBmdWkzMiAiXyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX2NvZGVfZ2VuX2RlYnVnX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cl9jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGUpOworICAgICAgICBpZiAoZGVzdF9maWxlbmFtZT09TlVMTCkgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmZD1vcGVuKGRlc3RfZmls
ZW5hbWUsT19DUkVBVHxPX0VYQ0x8T19XUk9OTFksMDYwMCk7CisgICAgICAgIGZyZWUoZGVzdF9m
aWxlbmFtZSk7CisKKyAgICAgICAgaWYgKGZkPj0wKSB7CisgICAgICAgICAgICBvdXQ9ZmRvcGVu
KGZkLCJ3Iik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvdXQ9PU5VTEwpIHsKKwkJ
Y2xvc2UoZmQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGlmIChlcnJubyE9RUVYSVNUKSB7CisgICAgICAgICAgICAvKiBwcmludGYoImVycm9yIG5vdCBl
ZXhpc3RcbiIpOyAqLworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGdwY19wcm90b19wcmludChwcm90byxvdXQpOworICAgIAorICAgIGZjbG9zZShvdXQp
OworfQorCisvKiBzdHVwaWQgc3R1ZmYgKi8KKwordm9pZCBncGNfdW5saW5rX2ZyZWUoY2hhciAq
bmFtZSkgeworICAgIHVubGluayhuYW1lKTsKKyAgICBmcmVlKG5hbWUpOworfQorCit2b2lkIGdw
Y19ybWRpcl9mcmVlKGNoYXIgKm5hbWUpIHsKKyAgICBybWRpcihuYW1lKTsKKyAgICBmcmVlKG5h
bWUpOworfQorCisvKiB0aGlzIGlzbid0IGEgcmVhbCBybSAtcmY7IGl0IG9ubHkgZ29lcyBkb3du
IG9uZSBsZXZlbC4gKi8KK3ZvaWQgZ3BjX3JtZGFzaHJmX2ZyZWUoY2hhciAqbmFtZSkgeworICAg
IERJUiAqZGlyOworICAgIGRpcj1vcGVuZGlyKG5hbWUpOworICAgIGlmIChkaXIhPU5VTEwpIHsK
Kwlmb3IgKDs7KSB7CisJICAgIHN0cnVjdCBkaXJlbnQgZW50cnksKnJlc3VsdD1OVUxMOworCSAg
ICBpbnQgcmVzPXJlYWRkaXJfcihkaXIsJmVudHJ5LCZyZXN1bHQpOworCSAgICBpZiAocmVzIT0w
IHx8IHJlc3VsdD09TlVMTCkgeworCQlicmVhazsKKwkgICAgfQorCSAgICBpZiAoc3RyY21wKGVu
dHJ5LmRfbmFtZSwiLiIpICYmCisJCXN0cmNtcChlbnRyeS5kX25hbWUsIi4uIikpIHsKKwkJY2hh
ciAqZmxubT10c2ZfYXNwcmludGYoIiVzLyVzIixuYW1lLGVudHJ5LmRfbmFtZSk7CisJCWlmIChm
bG5tIT1OVUxMKSB7CisJCSAgICB1bmxpbmsoZmxubSk7CisJCSAgICBmcmVlKGZsbm0pOworCQl9
CisJICAgIH0KKwl9CisJY2xvc2VkaXIoZGlyKTsKKwlybWRpcihuYW1lKTsKKyAgICB9CisgICAg
ZnJlZShuYW1lKTsKK30KKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL2dwY19pbnN0cnVjdGlvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0
U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb24uYwkobm9uZXhpc3RlbnQpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uLmMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJncGNfaW50ZXJu
YWwuaCIKKworI2luY2x1ZGUgImdwY19pbnN0cnVjdGlvbl9zdGF0aWNfc2l6ZS5nZW4iCisjaW5j
bHVkZSAiZ3BjX2luc3RydWN0aW9uX3NpemUuZ2VuIgorI2luY2x1ZGUgImdwY19pbnN0cnVjdGlv
bl9zdGFja19lZmZlY3RzLmdlbiIKKyNpbmNsdWRlICJncGNfaW5zdHJ1Y3Rpb25fdG9fc3RyaW5n
LmdlbiIKKworLyogc29tZSB0aGluZ3MgYXJlIHN0aWxsIG5vdCBoYW5kbGVkIGJ5IHRoZSBzcGVj
aWZpY2F0aW9uLi4uICovCisKK3RzZl9ib29sX3QgZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxfYmFj
a19icmFuY2hlcyhncGNfY2VsbF90ICppbnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdwY190YXJnZXRfY2JhY2tfdCBjYmFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAg
ICBzd2l0Y2ggKCppbnN0KSB7CisgICAgICAgIGNhc2UgR1BDX0lfQUREQ09NUEpVTVA6CisgICAg
ICAgICAgICByZXR1cm4gY2JhY2soaW5zdCsyLGFyZyk7CisgICAgICAgIGNhc2UgR1BDX0lfVFdP
X0FERENPTVBKVU1QOgorICAgICAgICAgICAgcmV0dXJuIGNiYWNrKGluc3QrMyxhcmcpOworICAg
ICAgICBjYXNlIEdQQ19JX0RFQ0NPTVBKVU1QOgorICAgICAgICAgICAgcmV0dXJuIGNiYWNrKGlu
c3QrMSxhcmcpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCBncGNfaW5zdHJ1Y3Rp
b25fZm9yX2FsbF9mb3J3YXJkX2JyYW5jaGVzKGdwY19jZWxsX3QgKmluc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX3RhcmdldF9jYmFj
a190IGNiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmFyZykgeworICAgIGdwY19jZWxsX3QgaTsKKworICAgIHN3aXRjaCAoKmlu
c3QpIHsKKyAgICAgICAgY2FzZSBHUENfSV9DT01QRkFJTEpVTVBfMk5EOgorICAgICAgICBjYXNl
IEdQQ19JX0NPTVBGQUlMSlVNUDoKKyAgICAgICAgY2FzZSBHUENfSV9aRVJPSlVNUDoKKyAgICAg
ICAgICAgIHJldHVybiBjYmFjayhpbnN0KzEsYXJnKTsKKyAgICAgICAgY2FzZSBHUENfSV9UQUJM
RUpVTVBfTE9DQUw6CisgICAgICAgICAgICBmb3IgKGk9MDtpPGluc3RbMV07KytpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFjYmFjayhpbnN0KzIraSxhcmcpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1BDX0lfVEFCTEVKVU1QX0ZJRUxEOgor
ICAgICAgICAgICAgZm9yIChpPTA7aTxpbnN0WzJdOysraSkgeworICAgICAgICAgICAgICAgIGlm
ICghY2JhY2soaW5zdCszK2ksYXJnKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdQQ19JX0pVTVA6CisgICAgICAgICAgICByZXR1cm4gY2JhY2so
aW5zdCsxLGFyZyk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IGdwY19pbnN0cnVj
dGlvbl9mb3JfYWxsX2JyYW5jaGVzKGdwY19jZWxsX3QgKmluc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY190YXJnZXRfY2JhY2tfdCBjYmFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7Cisg
ICAgaWYgKCFncGNfaW5zdHJ1Y3Rpb25fZm9yX2FsbF9iYWNrX2JyYW5jaGVzKGluc3QsY2JhY2ss
YXJnKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICBpZiAoIWdwY19p
bnN0cnVjdGlvbl9mb3JfYWxsX2ZvcndhcmRfYnJhbmNoZXMoaW5zdCxjYmFjayxhcmcpKSB7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30K
KwordHNmX2Jvb2xfdCBncGNfaW5zdHJ1Y3Rpb25faXNfcmV0dXJuKGdwY19jZWxsX3QgaW5zdCkg
eworICAgIHN3aXRjaCAoaW5zdCkgeworICAgIGNhc2UgR1BDX0lfUkVUVVJOX09ORToKKyAgICBj
YXNlIEdQQ19JX1JFVFVSTl9UT1BfV0lUSF9SRUdJT046CisgICAgY2FzZSBHUENfSV9SRVRVUk5f
T05FX0lOSVRfQlVGX1dJVEhfRU1QVFlfVFlQRVM6CisgICAgY2FzZSBHUENfSV9SRVRVUk5fT05F
X0lOSVRfQlVGX1dJVEhfVFlQRVNfRlJPTV9PVVRfTUFQOgorICAgICAgICByZXR1cm4gdHNmX3Ry
dWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cit9CisK
K3RzZl9ib29sX3QgZ3BjX2luc3RydWN0aW9uX2lzX2NvbnRpbnVvdXMoZ3BjX2NlbGxfdCBpbnN0
KSB7CisgICAgcmV0dXJuICFncGNfaW5zdHJ1Y3Rpb25faXNfcmV0dXJuKGluc3QpICYmCisgICAg
ICAgICAgIGluc3QgIT0gR1BDX0lfSlVNUDsKK30KKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX2Rpc3BhdGNoLmdlbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0
aW9uX2Rpc3BhdGNoLmdlbgkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX2Rpc3BhdGNoLmdlbgkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI5MyBAQAorLyogZ2VuZXJhdGVkIGJ5IGdwY19nZW4ucmIgKi8KKyYmSV9O
T1AsCismJklfTEFCRUwsCismJklfQ09QWV9IVE9OQ19JTkNEU1QsCismJklfQ09QWV9IVE9OU19J
TkNEU1QsCismJklfQ09QWV9IVE9OTF9JTkNEU1QsCismJklfQ09QWV9IVE9OTExfSU5DRFNULAor
JiZJX0NPUFlfSFRPTkZfSU5DRFNULAorJiZJX0NPUFlfSFRPTkRfSU5DRFNULAorJiZJX0NPUFlf
SFRPTkNIT0lDRV9UT19VSThfSU5DRFNULAorJiZJX0NPUFlfTlRPSENfVE9fQklUX0lOQ1NSQywK
KyYmSV9DT1BZX05UT0hDX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hDX1RPX1NfWl9JTkNTUkMsCism
JklfQ09QWV9OVE9IQ19UT19TX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSENfVE9fTF9aX0lOQ1NS
QywKKyYmSV9DT1BZX05UT0hDX1RPX0xfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IQ19UT19MTF9a
X0lOQ1NSQywKKyYmSV9DT1BZX05UT0hDX1RPX0xMX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSENf
VE9fRl9aX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hDX1RPX0ZfRV9JTkNTUkMsCismJklfQ09QWV9O
VE9IQ19UT19EX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSENfVE9fRF9FX0lOQ1NSQywKKyYmSV9D
T1BZX05UT0hTX1RPX0JJVF9JTkNTUkMsCismJklfQ09QWV9OVE9IU19UT19DX0lOQ1NSQywKKyYm
SV9DT1BZX05UT0hTX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hTX1RPX0xfWl9JTkNTUkMsCismJklf
Q09QWV9OVE9IU19UT19MX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSFNfVE9fTExfWl9JTkNTUkMs
CismJklfQ09QWV9OVE9IU19UT19MTF9FX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hTX1RPX0ZfWl9J
TkNTUkMsCismJklfQ09QWV9OVE9IU19UT19GX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSFNfVE9f
RF9aX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hTX1RPX0RfRV9JTkNTUkMsCismJklfQ09QWV9OVE9I
TF9UT19CSVRfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExfVE9fQ19JTkNTUkMsCismJklfQ09QWV9O
VE9ITF9UT19TX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hMX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hM
X1RPX0xMX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkMsCismJklfQ09Q
WV9OVE9ITF9UT19GX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExfVE9fRl9FX0lOQ1NSQywKKyYm
SV9DT1BZX05UT0hMX1RPX0RfWl9JTkNTUkMsCismJklfQ09QWV9OVE9ITF9UT19EX0VfSU5DU1JD
LAorJiZJX0NPUFlfTlRPSExMX1RPX0JJVF9JTkNTUkMsCismJklfQ09QWV9OVE9ITExfVE9fQ19J
TkNTUkMsCismJklfQ09QWV9OVE9ITExfVE9fU19JTkNTUkMsCismJklfQ09QWV9OVE9ITExfVE9f
TF9JTkNTUkMsCismJklfQ09QWV9OVE9ITExfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExMX1RPX0Zf
Wl9JTkNTUkMsCismJklfQ09QWV9OVE9ITExfVE9fRl9FX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hM
TF9UT19EX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExMX1RPX0RfRV9JTkNTUkMsCismJklfQ09Q
WV9OVE9IRl9UT19CSVRfSU5DU1JDLAorJiZJX0NPUFlfTlRPSEZfVE9fQ19aX0lOQ1NSQywKKyYm
SV9DT1BZX05UT0hGX1RPX0NfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IRl9UT19TX1pfSU5DU1JD
LAorJiZJX0NPUFlfTlRPSEZfVE9fU19FX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hGX1RPX0xfWl9J
TkNTUkMsCismJklfQ09QWV9OVE9IRl9UT19MX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSEZfVE9f
TExfWl9JTkNTUkMsCismJklfQ09QWV9OVE9IRl9UT19MTF9FX0lOQ1NSQywKKyYmSV9DT1BZX05U
T0hGX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hGX1RPX0RfSU5DU1JDLAorJiZJX0NPUFlfTlRPSERf
VE9fQklUX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hEX1RPX0NfWl9JTkNTUkMsCismJklfQ09QWV9O
VE9IRF9UT19DX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSERfVE9fU19aX0lOQ1NSQywKKyYmSV9D
T1BZX05UT0hEX1RPX1NfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JDLAor
JiZJX0NPUFlfTlRPSERfVE9fTF9FX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hEX1RPX0xMX1pfSU5D
U1JDLAorJiZJX0NPUFlfTlRPSERfVE9fTExfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IRF9UT19G
X0lOQ1NSQywKKyYmSV9DT1BZX05UT0hEX0lOQ1NSQywKKyYmSV9DT1BZX0JJVCwKKyYmSV9DT1BZ
X0JJVF9UT19TLAorJiZJX0NPUFlfQklUX1RPX0wsCismJklfQ09QWV9CSVRfVE9fTEwsCismJklf
Q09QWV9CSVRfVE9fRiwKKyYmSV9DT1BZX0JJVF9UT19ELAorJiZJX0NPUFlfQywKKyYmSV9DT1BZ
X0NfVE9fU19aLAorJiZJX0NPUFlfQ19UT19TX0UsCismJklfQ09QWV9DX1RPX0xfWiwKKyYmSV9D
T1BZX0NfVE9fTF9FLAorJiZJX0NPUFlfQ19UT19MTF9aLAorJiZJX0NPUFlfQ19UT19MTF9FLAor
JiZJX0NPUFlfQ19UT19GX1osCismJklfQ09QWV9DX1RPX0ZfRSwKKyYmSV9DT1BZX0NfVE9fRF9a
LAorJiZJX0NPUFlfQ19UT19EX0UsCismJklfQ09QWV9TX1RPX0JJVCwKKyYmSV9DT1BZX1NfVE9f
QywKKyYmSV9DT1BZX1MsCismJklfQ09QWV9TX1RPX0xfWiwKKyYmSV9DT1BZX1NfVE9fTF9FLAor
JiZJX0NPUFlfU19UT19MTF9aLAorJiZJX0NPUFlfU19UT19MTF9FLAorJiZJX0NPUFlfU19UT19G
X1osCismJklfQ09QWV9TX1RPX0ZfRSwKKyYmSV9DT1BZX1NfVE9fRF9aLAorJiZJX0NPUFlfU19U
T19EX0UsCismJklfQ09QWV9MX1RPX0JJVCwKKyYmSV9DT1BZX0xfVE9fQywKKyYmSV9DT1BZX0xf
VE9fUywKKyYmSV9DT1BZX0wsCismJklfQ09QWV9MX1RPX0xMX1osCismJklfQ09QWV9MX1RPX0xM
X0UsCismJklfQ09QWV9MX1RPX0ZfWiwKKyYmSV9DT1BZX0xfVE9fRl9FLAorJiZJX0NPUFlfTF9U
T19EX1osCismJklfQ09QWV9MX1RPX0RfRSwKKyYmSV9DT1BZX0xMX1RPX0JJVCwKKyYmSV9DT1BZ
X0xMX1RPX0MsCismJklfQ09QWV9MTF9UT19TLAorJiZJX0NPUFlfTExfVE9fTCwKKyYmSV9DT1BZ
X0xMLAorJiZJX0NPUFlfTExfVE9fRl9aLAorJiZJX0NPUFlfTExfVE9fRl9FLAorJiZJX0NPUFlf
TExfVE9fRF9aLAorJiZJX0NPUFlfTExfVE9fRF9FLAorJiZJX0NPUFlfRl9UT19CSVQsCismJklf
Q09QWV9GX1RPX0NfWiwKKyYmSV9DT1BZX0ZfVE9fQ19FLAorJiZJX0NPUFlfRl9UT19TX1osCism
JklfQ09QWV9GX1RPX1NfRSwKKyYmSV9DT1BZX0ZfVE9fTF9aLAorJiZJX0NPUFlfRl9UT19MX0Us
CismJklfQ09QWV9GX1RPX0xMX1osCismJklfQ09QWV9GX1RPX0xMX0UsCismJklfQ09QWV9GLAor
JiZJX0NPUFlfRl9UT19ELAorJiZJX0NPUFlfRF9UT19CSVQsCismJklfQ09QWV9EX1RPX0NfWiwK
KyYmSV9DT1BZX0RfVE9fQ19FLAorJiZJX0NPUFlfRF9UT19TX1osCismJklfQ09QWV9EX1RPX1Nf
RSwKKyYmSV9DT1BZX0RfVE9fTF9aLAorJiZJX0NPUFlfRF9UT19MX0UsCismJklfQ09QWV9EX1RP
X0xMX1osCismJklfQ09QWV9EX1RPX0xMX0UsCismJklfQ09QWV9EX1RPX0YsCismJklfQ09QWV9E
LAorJiZJX1NFVF9DLAorJiZJX1NFVF9TLAorJiZJX1NFVF9MLAorJiZJX1NFVF8yTkRfQywKKyYm
SV9TRVRfMk5EX1MsCismJklfU0VUXzJORF9MLAorJiZJX0JJVFZFQ1RPUl9SRUFELAorJiZJX0JJ
VFZFQ1RPUl9SRUFEX1RPX0MsCismJklfQklUVkVDVE9SX1JFQURfVE9fUywKKyYmSV9CSVRWRUNU
T1JfUkVBRF9UT19MLAorJiZJX0JJVFZFQ1RPUl9SRUFEX1RPX0xMLAorJiZJX0JJVFZFQ1RPUl9S
RUFEX1RPX0YsCismJklfQklUVkVDVE9SX1JFQURfVE9fRCwKKyYmSV9CSVRWRUNUT1JfUkVBRF9G
Uk9NX0MsCismJklfQklUVkVDVE9SX1JFQURfRlJPTV9TLAorJiZJX0JJVFZFQ1RPUl9SRUFEX0ZS
T01fTCwKKyYmSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0xMLAorJiZJX0JJVFZFQ1RPUl9SRUFEX0ZS
T01fRiwKKyYmSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0QsCismJklfQklUVkVDVE9SX1JFQURfRlJP
TV9UU0ZfSU5URUdFUl9BUlJBWSwKKyYmSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9MT05HX0FS
UkFZLAorJiZJX0JJVFZFQ1RPUl9XUklURSwKKyYmSV9CWVRFX0FSUkFZX1JFQUQsCismJklfQllU
RV9BUlJBWV9XUklURSwKKyYmSV9UU0ZfSU5URUdFUl9TS0lQLAorJiZJX1RTRl9VTlNJR05FRF9T
S0lQLAorJiZJX1RTRl9MT05HX1NLSVAsCismJklfVFNGX0lOVEVHRVJfUkVBRF9UT19CSVQsCism
JklfVFNGX0lOVEVHRVJfUkVBRF9UT19DLAorJiZJX1RTRl9JTlRFR0VSX1JFQURfVE9fUywKKyYm
SV9UU0ZfSU5URUdFUl9SRUFELAorJiZJX1RTRl9JTlRFR0VSX1JFQURfVE9fTEwsCismJklfVFNG
X0lOVEVHRVJfUkVBRF9UT19GLAorJiZJX1RTRl9JTlRFR0VSX1JFQURfVE9fRCwKKyYmSV9UU0Zf
VU5TSUdORURfUkVBRF9TVUIxLAorJiZJX1RTRl9MT05HX1JFQURfVE9fQklULAorJiZJX1RTRl9M
T05HX1JFQURfVE9fQywKKyYmSV9UU0ZfTE9OR19SRUFEX1RPX1MsCismJklfVFNGX0xPTkdfUkVB
RF9UT19MLAorJiZJX1RTRl9MT05HX1JFQUQsCismJklfVFNGX0xPTkdfUkVBRF9UT19GLAorJiZJ
X1RTRl9MT05HX1JFQURfVE9fRCwKKyYmSV9UU0ZfSU5URUdFUl9TSVpFLAorJiZJX1RTRl9VTlNJ
R05FRF9QTFVTMV9TSVpFLAorJiZJX1RTRl9MT05HX1NJWkUsCismJklfVFNGX0lOVEVHRVJfV1JJ
VEUsCismJklfVFNGX1VOU0lHTkVEX1BMVVMxX1dSSVRFLAorJiZJX1RTRl9MT05HX1dSSVRFLAor
JiZJX1NUUklOR19TRVRFTVBUWSwKKyYmSV9TVFJJTkdfUkVBRCwKKyYmSV9TVFJJTkdfU0tJUCwK
KyYmSV9TVFJJTkdfU0laRSwKKyYmSV9TVFJJTkdfV1JJVEUsCismJklfU1RSSU5HX0NPUFksCism
JklfQU5ZX1NFVEVNUFRZLAorJiZJX0FOWV9SRUFELAorJiZJX0FOWV9TS0lQLAorJiZJX0FOWV9T
SVpFLAorJiZJX0FOWV9XUklURSwKKyYmSV9BTllfQ09QWSwKKyYmSV9NRU1DUFksCismJklfQ09Q
WV9BUlJBWSwKKyYmSV9DT1BZX0JJVFZFQ1RPUiwKKyYmSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0Ms
CismJklfQ09QWV9CSVRWRUNUT1JfRlJPTV9TLAorJiZJX0NPUFlfQklUVkVDVE9SX0ZST01fTCwK
KyYmSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0xMLAorJiZJX0NPUFlfQklUVkVDVE9SX0ZST01fRiwK
KyYmSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0QsCismJklfQ09QWV9CSVRWRUNUT1JfVE9fQywKKyYm
SV9DT1BZX0JJVFZFQ1RPUl9UT19TLAorJiZJX0NPUFlfQklUVkVDVE9SX1RPX0wsCismJklfQ09Q
WV9CSVRWRUNUT1JfVE9fTEwsCismJklfQ09QWV9CSVRWRUNUT1JfVE9fRiwKKyYmSV9DT1BZX0JJ
VFZFQ1RPUl9UT19ELAorJiZJX1JFQURDX1RPX0NIT0lDRSwKKyYmSV9SRUFETCwKKyYmSV9BUlJB
WV9MRU5fV1JJVEVfRklFTEQsCismJklfQVJSQVlfTEVOX1JFQURfRklFTEQsCismJklfQVJSQVlf
TEVOX1JFQURfTE9DQUwsCismJklfQVJSQVlfTEVOX1NLSVAsCismJklfQklUX01BU0tfV1JJVEUs
CismJklfQklUX01BU0tfUkVBRCwKKyYmSV9CSVRfTUFTS19SRUFEX1RPX1MsCismJklfQklUX01B
U0tfUkVBRF9UT19MLAorJiZJX0JJVF9NQVNLX1JFQURfVE9fTEwsCismJklfQklUX01BU0tfUkVB
RF9UT19GLAorJiZJX0JJVF9NQVNLX1JFQURfVE9fRCwKKyYmSV9CSVRfV1JJVEUsCismJklfQklU
X1JFQUQsCismJklfQklUX1JFQURfVE9fUywKKyYmSV9CSVRfUkVBRF9UT19MLAorJiZJX0JJVF9S
RUFEX1RPX0xMLAorJiZJX0JJVF9SRUFEX1RPX0YsCismJklfQklUX1JFQURfVE9fRCwKKyYmSV9T
S0lQLAorJiZJX0FSUkFZX0JDX0FORF9TS0lQX0ZJRUxELAorJiZJX0FSUkFZX1NLSVAsCismJklf
QklUVkVDVE9SX0JDX0FORF9TS0lQX0ZJRUxELAorJiZJX0JJVFZFQ1RPUl9TS0lQLAorJiZJX0lO
Q19TSVpFLAorJiZJX0lOQ19TSVpFX0FSUkFZX0xFTiwKKyYmSV9JTkNfU0laRV9BUlJBWSwKKyYm
SV9JTkNfU0laRV9CSVRWRUNUT1IsCismJklfQkMsCismJklfQVJSQVlfQkNfRklFTEQsCismJklf
QVJSQVlfQkNfTE9DQUwsCismJklfQklUVkVDVE9SX0JDX0ZJRUxELAorJiZJX0JJVFZFQ1RPUl9C
Q19MT0NBTCwKKyYmSV9NQUxMT0NfQlVGLAorJiZJX1BPUF9CVUYsCismJklfREVTVFJPWV9CVUZG
RVIsCismJklfTUFLRV9PVVRfTUFQLAorJiZJX0FMTE9DX1JPT1RfTUFZQkVfMk5ELAorJiZJX0FM
TE9DLAorJiZJX0FMTE9DX0FSUkFZLAorJiZJX0FMTE9DX0FSUkFZXzJORCwKKyYmSV9DQUxMLAor
JiZJX0FERF9DQkFDSywKKyYmSV9GUkVFX0lNTUVESUFURSwKKyYmSV9GUkVFLAorJiZJX1NUT1JF
X1BUUiwKKyYmSV9TVE9SRV9QVFJfMk5ELAorJiZJX1NUT1JFX1ZBTCwKKyYmSV9QVVNIX1BUUiwK
KyYmSV9QVVNIX1BUUl8yTkQsCismJklfUFVTSF9QVFJfM1JELAorJiZJX1BVU0hfVkFMLAorJiZJ
X0RVUF9QVFJfMk5ELAorJiZJX1BPUCwKKyYmSV9UV09fUE9QLAorJiZJX1RIUkVFX1BPUCwKKyYm
SV9SRVBVU0hfTVVMQUREX1BUUiwKKyYmSV9SRVBVU0hfTVVMQUREX1BUUl8yTkQsCismJklfQ09N
UEZBSUxKVU1QLAorJiZJX0NPTVBGQUlMSlVNUF8yTkQsCismJklfQUREQ09NUEpVTVAsCismJklf
VFdPX0FERENPTVBKVU1QLAorJiZJX1pFUk9KVU1QLAorJiZJX0RFQ0NPTVBKVU1QLAorJiZJX0NI
RUNLQ0hPSUNFLAorJiZJX1RBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxELAorJiZJX1RBQkxFU0VUX0ZJ
RUxEX1RPX0ZJRUxELAorJiZJX1RBQkxFSlVNUF9GSUVMRCwKKyYmSV9UQUJMRUpVTVBfTE9DQUws
CismJklfSlVNUCwKKyYmSV9SRVRVUk5fT05FLAorJiZJX1JFVFVSTl9UT1BfV0lUSF9SRUdJT04s
CismJklfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRIX0VNUFRZX1RZUEVTLAorJiZJX1JFVFVSTl9P
TkVfSU5JVF9CVUZfV0lUSF9UWVBFU19GUk9NX09VVF9NQVAKSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc2l6ZS5nZW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnN0cnVjdGlv
bl9zaXplLmdlbgkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
d2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX3NpemUuZ2VuCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMgQEAKKy8qIGdlbmVyYXRlZCBieSBncGNfZ2VuLnJiICovCisjZGVmaW5lIElOVF9TVFJF
QU0oYXJnKSAoaW5zdFsxKyhhcmcpXSkKK3VpbnQzMl90IGdwY19pbnN0cnVjdGlvbl9zaXplKGdw
Y19jZWxsX3QgKmluc3QpIHsKKyAgICBzd2l0Y2ggKCppbnN0KSB7CisgICAgICAgIGNhc2UgR1BD
X0lfVEFCTEVTRVRfTE9DQUxfVE9fRklFTEQ6IHJldHVybiAxKzIrSU5UX1NUUkVBTSgxKTsKKyAg
ICAgICAgY2FzZSBHUENfSV9UQUJMRVNFVF9GSUVMRF9UT19GSUVMRDogcmV0dXJuIDErMytJTlRf
U1RSRUFNKDIpOworICAgICAgICBjYXNlIEdQQ19JX1RBQkxFSlVNUF9GSUVMRDogcmV0dXJuIDEr
MitJTlRfU1RSRUFNKDEpOworICAgICAgICBjYXNlIEdQQ19JX1RBQkxFSlVNUF9MT0NBTDogcmV0
dXJuIDErMStJTlRfU1RSRUFNKDApOworICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIGdwY19pbnN0cnVjdGlvbl9zdGF0aWNfc2l6ZSgqaW5zdCk7Cit9CisjdW5kZWYg
SU5UX1NUUkVBTQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dw
Y19pbnN0cnVjdGlvbl9zdGFja19lZmZlY3RzLmdlbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX3N0YWNrX2VmZmVjdHMu
Z2VuCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi9ncGNfaW5zdHJ1Y3Rpb25fc3RhY2tfZWZmZWN0cy5nZW4JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOTkgQEAKKy8qIGdlbmVyYXRlZCBieSBncGNfZ2VuLnJiICovCitpbnQzMl90IGdwY19p
bnN0cnVjdGlvbl9zdGFja19lZmZlY3RzKGdwY19jZWxsX3QgaW5zdCkgeworICAgIHN3aXRjaCAo
aW5zdCkgeworICAgICAgICBjYXNlIEdQQ19JX05PUDogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfTEFCRUw6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTkNfSU5D
RFNUOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05TX0lOQ0RTVDogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9OTF9JTkNEU1Q6IHJldHVybiAwOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTkxMX0lOQ0RTVDogcmV0dXJuIDA7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9IVE9ORl9JTkNEU1Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfSFRPTkRfSU5DRFNUOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0hUT05DSE9JQ0VfVE9fVUk4X0lOQ0RTVDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9OVE9IQ19UT19CSVRfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX05UT0hDX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9I
Q19UT19TX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hD
X1RPX1NfRV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENf
VE9fTF9aX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19U
T19MX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RP
X0xMX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RP
X0xMX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RP
X0ZfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9f
Rl9FX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19E
X1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0Rf
RV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fQklU
X0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19DX0lO
Q1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19JTkNTUkM6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fTF9aX0lOQ1NSQzogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19MX0VfSU5DU1JDOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xMX1pfSU5DU1JDOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xMX0VfSU5DU1JDOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0ZfWl9JTkNTUkM6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fRl9FX0lOQ1NSQzogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19EX1pfSU5DU1JDOiByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0RfRV9JTkNTUkM6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fQklUX0lOQ1NSQzogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19DX0lOQ1NSQzogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19TX0lOQ1NSQzogcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfTlRPSExfVE9fTExfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfTlRPSExfVE9fRl9aX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9OVE9ITF9UT19GX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX05UT0hMX1RPX0RfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfTlRPSExfVE9fRF9FX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9OVE9ITExfVE9fQklUX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9OVE9ITExfVE9fQ19JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfTlRPSExMX1RPX1NfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX05UT0hMTF9UT19MX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9OVE9ITExfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hM
TF9UT19GX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hM
TF9UT19GX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hM
TF9UT19EX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hM
TF9UT19EX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hG
X1RPX0JJVF9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZf
VE9fQ19aX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9U
T19DX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RP
X1NfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9f
U19FX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9UT19M
X1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RPX0xf
RV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fTExf
Wl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fTExf
RV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfSU5DU1JD
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RPX0RfSU5DU1JDOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0JJVF9JTkNTUkM6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fQ19aX0lOQ1NSQzogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9UT19DX0VfSU5DU1JDOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX1NfWl9JTkNTUkM6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fU19FX0lOQ1NSQzogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JDOiByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0xfRV9JTkNTUkM6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fTExfWl9JTkNTUkM6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fTExfRV9JTkNTUkM6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fRl9JTkNTUkM6IHJldHVybiAwOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX0JJVDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9C
SVRfVE9fUzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9fTDogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9fTEw6IHJldHVybiAwOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfQklUX1RPX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfQklUX1RPX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQzog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX1NfWjogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX1NfRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9DX1RPX0xfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9D
X1RPX0xfRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0xMX1o6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19UT19MTF9FOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0NfVE9fRl9aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0NfVE9fRl9FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Nf
VE9fRF9aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0NfVE9fRF9FOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fQklUOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9TOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fTF9aOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fTF9FOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fTExfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9TX1RPX0xMX0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19U
T19GX1o6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19GX0U6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19EX1o6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfU19UT19EX0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfTF9UT19CSVQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19D
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fUzogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0xfVE9fTExfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RPX0xM
X0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19GX1o6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19GX0U6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfTF9UT19EX1o6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfTF9UT19EX0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fQklU
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0M6IHJldHVybiAwOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fUzogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9MTF9UT19MOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xM
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0ZfWjogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX0U6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfTExfVE9fRF9aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0xMX1RPX0RfRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0JJ
VDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0NfWjogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0NfRTogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9GX1RPX1NfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9GX1RPX1NfRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xfWjog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xfRTogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xMX1o6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfRl9UT19MTF9FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19EOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fQklUOiByZXR1cm4gMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX0RfVE9fQ19aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0RfVE9fQ19FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19aOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19FOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fTF9aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0RfVE9fTF9FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Rf
VE9fTExfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RPX0xMX0U6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19GOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NFVF9D
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9TRVRfUzogcmV0dXJuIDA7CisgICAgICAg
IGNhc2UgR1BDX0lfU0VUX0w6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NFVF8yTkRf
QzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfU0VUXzJORF9TOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9TRVRfMk5EX0w6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X0JJVFZFQ1RPUl9SRUFEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1Jf
UkVBRF9UT19DOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9U
T19TOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19MOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19MTDogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fRjogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fRDogcmV0dXJuIDA7CisgICAgICAg
IGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9DOiByZXR1cm4gMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1M6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
QklUVkVDVE9SX1JFQURfRlJPTV9MTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQklU
VkVDVE9SX1JFQURfRlJPTV9GOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNU
T1JfUkVBRF9GUk9NX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9S
RUFEX0ZST01fVFNGX0lOVEVHRVJfQVJSQVk6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X0JJVFZFQ1RPUl9SRUFEX0ZST01fVFNGX0xPTkdfQVJSQVk6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0JJVFZFQ1RPUl9XUklURTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
QllURV9BUlJBWV9SRUFEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CWVRFX0FSUkFZ
X1dSSVRFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9TS0lQOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfU0tJUDogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0tJUDogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19CSVQ6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9U
U0ZfSU5URUdFUl9SRUFEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdF
Ul9SRUFEX1RPX0xMOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9S
RUFEX1RPX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURf
VE9fRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX1VOU0lHTkVEX1JFQURfU1VC
MTogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19CSVQ6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fQzogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19TOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0w6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX1RTRl9MT05HX1JFQUQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9M
T05HX1JFQURfVE9fRjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVB
RF9UT19EOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9TSVpFOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfUExVUzFfU0laRTogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0laRTogcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfV1JJVEU6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX1RTRl9VTlNJR05FRF9QTFVTMV9XUklURTogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfVFNGX0xPTkdfV1JJVEU6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NUUklO
R19TRVRFTVBUWTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfU1RSSU5HX1JFQUQ6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19TS0lQOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9TVFJJTkdfU0laRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
U1RSSU5HX1dSSVRFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9TVFJJTkdfQ09QWTog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1NFVEVNUFRZOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9BTllfUkVBRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
QU5ZX1NLSVA6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0FOWV9TSVpFOiByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfV1JJVEU6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0FOWV9DT1BZOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9NRU1DUFk6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQVJSQVk6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0M6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfQklUVkVDVE9SX0ZST01fUzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9C
SVRWRUNUT1JfRlJPTV9MOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZF
Q1RPUl9GUk9NX0xMOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RP
Ul9GUk9NX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZS
T01fRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fQzog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fUzogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fTDogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fTEw6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0Y6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X1JFQURDX1RPX0NIT0lDRTogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lfUkVBREw6IHJl
dHVybiAxOworICAgICAgICBjYXNlIEdQQ19JX0FSUkFZX0xFTl9XUklURV9GSUVMRDogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfTEVOX1JFQURfRklFTEQ6IHJldHVybiAwOwor
ICAgICAgICBjYXNlIEdQQ19JX0FSUkFZX0xFTl9SRUFEX0xPQ0FMOiByZXR1cm4gMTsKKyAgICAg
ICAgY2FzZSBHUENfSV9BUlJBWV9MRU5fU0tJUDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQklUX01BU0tfV1JJVEU6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9NQVNL
X1JFQUQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fUzog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQklUX01BU0tfUkVBRF9UT19MOiByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0xMOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0Y6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQklUX1dSSVRFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfUkVBRDogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQklUX1JFQURfVE9fUzogcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgR1BDX0lfQklUX1JFQURfVE9fTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQklUX1JFQURfVE9fTEw6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9SRUFE
X1RPX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9SRUFEX1RPX0Q6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX1NLSVA6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0FSUkFZX0JDX0FORF9TS0lQX0ZJRUxEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9BUlJBWV9TS0lQOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfQkNf
QU5EX1NLSVBfRklFTEQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9T
S0lQOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9JTkNfU0laRTogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfSU5DX1NJWkVfQVJSQVlfTEVOOiByZXR1cm4gMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9JTkNfU0laRV9BUlJBWTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
SU5DX1NJWkVfQklUVkVDVE9SOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CQzogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfQkNfRklFTEQ6IHJldHVybiAwOworICAg
ICAgICBjYXNlIEdQQ19JX0FSUkFZX0JDX0xPQ0FMOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBH
UENfSV9CSVRWRUNUT1JfQkNfRklFTEQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJ
VFZFQ1RPUl9CQ19MT0NBTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfTUFMTE9DX0JV
RjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfUE9QX0JVRjogcmV0dXJuIC0xOworICAg
ICAgICBjYXNlIEdQQ19JX0RFU1RST1lfQlVGRkVSOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBH
UENfSV9NQUtFX09VVF9NQVA6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0FMTE9DX1JP
T1RfTUFZQkVfMk5EOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9BTExPQzogcmV0dXJu
IDE7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0NfQVJSQVk6IHJldHVybiAxOworICAgICAgICBj
YXNlIEdQQ19JX0FMTE9DX0FSUkFZXzJORDogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lf
Q0FMTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQUREX0NCQUNLOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9GUkVFX0lNTUVESUFURTogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfRlJFRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfU1RPUkVfUFRSOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9TVE9SRV9QVFJfMk5EOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9TVE9SRV9WQUw6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X1BVU0hfUFRSOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1BUUl8yTkQ6IHJl
dHVybiAxOworICAgICAgICBjYXNlIEdQQ19JX1BVU0hfUFRSXzNSRDogcmV0dXJuIDE7CisgICAg
ICAgIGNhc2UgR1BDX0lfUFVTSF9WQUw6IHJldHVybiAxOworICAgICAgICBjYXNlIEdQQ19JX0RV
UF9QVFJfMk5EOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHUENfSV9QT1A6IHJldHVybiAtMTsK
KyAgICAgICAgY2FzZSBHUENfSV9UV09fUE9QOiByZXR1cm4gLTI7CisgICAgICAgIGNhc2UgR1BD
X0lfVEhSRUVfUE9QOiByZXR1cm4gLTM7CisgICAgICAgIGNhc2UgR1BDX0lfUkVQVVNIX01VTEFE
RF9QVFI6IHJldHVybiAxOworICAgICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxBRERfUFRSXzJO
RDogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09NUEZBSUxKVU1QOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9DT01QRkFJTEpVTVBfMk5EOiByZXR1cm4gMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9BRERDT01QSlVNUDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFdP
X0FERENPTVBKVU1QOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9aRVJPSlVNUDogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfREVDQ09NUEpVTVA6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0NIRUNLQ0hPSUNFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9U
QUJMRVNFVF9MT0NBTF9UT19GSUVMRDogcmV0dXJuIC0xOworICAgICAgICBjYXNlIEdQQ19JX1RB
QkxFU0VUX0ZJRUxEX1RPX0ZJRUxEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UQUJM
RUpVTVBfRklFTEQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RBQkxFSlVNUF9MT0NB
TDogcmV0dXJuIC0xOworICAgICAgICBjYXNlIEdQQ19JX0pVTVA6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX1JFVFVSTl9PTkU6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1JF
VFVSTl9UT1BfV0lUSF9SRUdJT046IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1JFVFVS
Tl9PTkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUzogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRIX1RZUEVTX0ZST01fT1VUX01BUDogcmV0dXJu
IDA7CisgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgIH0KKyAgICB0c2ZfYWJvcnQoIkludmFs
aWQgaW5zdHJ1Y3Rpb24iKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3RhdGljX3NpemUuZ2VuCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3RhdGlj
X3NpemUuZ2VuCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3RhdGljX3NpemUuZ2VuCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjk5IEBACisvKiBnZW5lcmF0ZWQgYnkgZ3BjX2dlbi5yYiAqLwordWludDMyX3Qg
Z3BjX2luc3RydWN0aW9uX3N0YXRpY19zaXplKGdwY19jZWxsX3QgaW5zdCkgeworICAgIHN3aXRj
aCAoaW5zdCkgeworICAgICAgICBjYXNlIEdQQ19JX05PUDogcmV0dXJuIDErMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9MQUJFTDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hU
T05DX0lOQ0RTVDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05TX0lO
Q0RTVDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05MX0lOQ0RTVDog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05MTF9JTkNEU1Q6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9ORl9JTkNEU1Q6IHJldHVybiAxKzE7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9ORF9JTkNEU1Q6IHJldHVybiAxKzE7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9OQ0hPSUNFX1RPX1VJOF9JTkNEU1Q6IHJldHVybiAxKzE7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDOiByZXR1cm4gMSsx
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfSU5DU1JDOiByZXR1cm4gMSsxOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fU19aX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX1NfRV9JTkNTUkM6IHJldHVybiAxKzE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19MX1pfSU5DU1JDOiByZXR1cm4gMSsxOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTF9FX0lOQ1NSQzogcmV0dXJuIDErMTsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0xMX1pfSU5DU1JDOiByZXR1cm4gMSsx
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTExfRV9JTkNTUkM6IHJldHVybiAx
KzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19GX1pfSU5DU1JDOiByZXR1cm4g
MSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fRl9FX0lOQ1NSQzogcmV0dXJu
IDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0RfWl9JTkNTUkM6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19EX0VfSU5DU1JDOiByZXR1
cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fQklUX0lOQ1NSQzogcmV0
dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0NfSU5DU1JDOiByZXR1
cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfSU5DU1JDOiByZXR1cm4gMSsx
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fTF9aX0lOQ1NSQzogcmV0dXJuIDEr
MTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xfRV9JTkNTUkM6IHJldHVybiAx
KzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19MTF9aX0lOQ1NSQzogcmV0dXJu
IDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xMX0VfSU5DU1JDOiByZXR1
cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fRl9aX0lOQ1NSQzogcmV0
dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0ZfRV9JTkNTUkM6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19EX1pfSU5DU1JDOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fRF9FX0lOQ1NSQzog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX0JJVF9JTkNTUkM6
IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19DX0lOQ1NSQzog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX1NfSU5DU1JDOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfSU5DU1JDOiByZXR1cm4g
MSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fTExfWl9JTkNTUkM6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19MTF9FX0lOQ1NSQzogcmV0
dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX0ZfWl9JTkNTUkM6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19GX0VfSU5DU1JDOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fRF9aX0lOQ1NSQzog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX0RfRV9JTkNTUkM6
IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fQklUX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19DX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19TX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19MX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9JTkNTUkM6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fRl9aX0lOQ1NSQzog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19GX0VfSU5DU1JD
OiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExMX1RPX0RfWl9JTkNT
UkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fRF9FX0lO
Q1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RPX0JJVF9J
TkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9UT19DX1pf
SU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fQ19F
X0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RPX1Nf
Wl9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9UT19T
X0VfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9f
TF9aX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RP
X0xfRV9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9U
T19MTF9aX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hG
X1RPX0xMX0VfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRP
SEZfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9f
RF9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9UT19C
SVRfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9f
Q19aX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RP
X0NfRV9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9U
T19TX1pfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERf
VE9fU19FX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hE
X1RPX0xfWl9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9I
RF9UT19MX0VfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRP
SERfVE9fTExfWl9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9O
VE9IRF9UT19MTF9FX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X05UT0hEX1RPX0ZfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
TlRPSERfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUOiBy
ZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUX1RPX1M6IHJldHVybiAxKzI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9fTDogcmV0dXJuIDErMjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX0JJVF9UT19MTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX0JJVF9UT19GOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklU
X1RPX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DOiByZXR1cm4gMSsy
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19UT19TX1o6IHJldHVybiAxKzI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9DX1RPX1NfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX0NfVE9fTF9aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19U
T19MX0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0xMX1o6IHJl
dHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0xMX0U6IHJldHVybiAxKzI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0ZfWjogcmV0dXJuIDErMjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX0NfVE9fRl9FOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfQ19UT19EX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RP
X0RfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fQklUOiByZXR1
cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19DOiByZXR1cm4gMSsyOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfUzogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX1NfVE9fTF9aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19M
X0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RPX0xMX1o6IHJldHVy
biAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RPX0xMX0U6IHJldHVybiAxKzI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RPX0ZfWjogcmV0dXJuIDErMjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX1NfVE9fRl9FOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfU19UT19EX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RPX0Rf
RTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fQklUOiByZXR1cm4g
MSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19DOiByZXR1cm4gMSsyOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfTF9UT19TOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fTExfWjog
cmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fTExfRTogcmV0dXJuIDEr
MjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fRl9aOiByZXR1cm4gMSsyOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfTF9UT19GX0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9MX1RPX0RfWjogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xf
VE9fRF9FOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fQklUOiBy
ZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fQzogcmV0dXJuIDErMjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX1M6IHJldHVybiAxKzI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9MTF9UT19MOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfTEw6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX1o6IHJl
dHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX0U6IHJldHVybiAxKzI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19EX1o6IHJldHVybiAxKzI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9MTF9UT19EX0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9GX1RPX0JJVDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Zf
VE9fQ19aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19DX0U6IHJl
dHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX1NfWjogcmV0dXJuIDErMjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fU19FOiByZXR1cm4gMSsyOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfRl9UT19MX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9GX1RPX0xfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9f
TExfWjogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fTExfRTogcmV0
dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Y6IHJldHVybiAxKzI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9GX1RPX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9EX1RPX0JJVDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9f
Q19aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19DX0U6IHJldHVy
biAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RPX1NfWjogcmV0dXJuIDErMjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19FOiByZXR1cm4gMSsyOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfRF9UT19MX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9EX1RPX0xfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fTExf
WjogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fTExfRTogcmV0dXJu
IDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fRjogcmV0dXJuIDErMjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfU0VU
X0M6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfU0VUX1M6IHJldHVybiAxKzI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfU0VUX0w6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lf
U0VUXzJORF9DOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX1NFVF8yTkRfUzogcmV0
dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9TRVRfMk5EX0w6IHJldHVybiAxKzI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQUQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2Ug
R1BDX0lfQklUVkVDVE9SX1JFQURfVE9fQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENf
SV9CSVRWRUNUT1JfUkVBRF9UT19TOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJ
VFZFQ1RPUl9SRUFEX1RPX0w6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVD
VE9SX1JFQURfVE9fTEw6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9S
X1JFQURfVE9fRjogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVB
RF9UT19EOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZS
T01fQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9N
X1M6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9M
OiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fTEw6
IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9GOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fRDogcmV0
dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9JTlRF
R0VSX0FSUkFZOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFE
X0ZST01fVFNGX0xPTkdfQVJSQVk6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklU
VkVDVE9SX1dSSVRFOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JZVEVfQVJSQVlf
UkVBRDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9CWVRFX0FSUkFZX1dSSVRFOiBy
ZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9JTlRFR0VSX1NLSVA6IHJldHVybiAx
KzA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX1VOU0lHTkVEX1NLSVA6IHJldHVybiAxKzA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0tJUDogcmV0dXJuIDErMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0JJVDogcmV0dXJuIDErMTsKKyAgICAgICAgY2Fz
ZSBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0M6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2Ug
R1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQ
Q19JX1RTRl9JTlRFR0VSX1JFQUQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNG
X0lOVEVHRVJfUkVBRF9UT19MTDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0Zf
SU5URUdFUl9SRUFEX1RPX0Y6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0lO
VEVHRVJfUkVBRF9UT19EOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9VTlNJ
R05FRF9SRUFEX1NVQjE6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdf
UkVBRF9UT19CSVQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVB
RF9UT19DOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURfVE9f
UzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0w6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRDogcmV0dXJuIDErMTsK
KyAgICAgICAgY2FzZSBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0Y6IHJldHVybiAxKzE7CisgICAg
ICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19EOiByZXR1cm4gMSsxOworICAgICAgICBj
YXNlIEdQQ19JX1RTRl9JTlRFR0VSX1NJWkU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BD
X0lfVFNGX1VOU0lHTkVEX1BMVVMxX1NJWkU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BD
X0lfVFNGX0xPTkdfU0laRTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5U
RUdFUl9XUklURTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURf
UExVUzFfV1JJVEU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfV1JJ
VEU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfU1RSSU5HX1NFVEVNUFRZOiByZXR1
cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19SRUFEOiByZXR1cm4gMSsxOworICAg
ICAgICBjYXNlIEdQQ19JX1NUUklOR19TS0lQOiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQ
Q19JX1NUUklOR19TSVpFOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19X
UklURTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9TVFJJTkdfQ09QWTogcmV0dXJu
IDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfU0VURU1QVFk6IHJldHVybiAxKzE7CisgICAg
ICAgIGNhc2UgR1BDX0lfQU5ZX1JFQUQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lf
QU5ZX1NLSVA6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1NJWkU6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1dSSVRFOiByZXR1cm4gMSsxOworICAgICAg
ICBjYXNlIEdQQ19JX0FOWV9DT1BZOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX01F
TUNQWTogcmV0dXJuIDErMzsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0FSUkFZOiByZXR1cm4g
MSszOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SOiByZXR1cm4gMSsyOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZST01fQzogcmV0dXJuIDErMjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX1M6IHJldHVybiAxKzI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9MOiByZXR1cm4gMSsyOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZST01fTEw6IHJldHVybiAxKzI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9GOiByZXR1cm4gMSsyOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZST01fRDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0JJVFZFQ1RPUl9UT19DOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfQklUVkVDVE9SX1RPX1M6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9CSVRWRUNUT1JfVE9fTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJ
VFZFQ1RPUl9UT19MTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZF
Q1RPUl9UT19GOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9S
X1RPX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfUkVBRENfVE9fQ0hPSUNFOiBy
ZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1JFQURMOiByZXR1cm4gMSswOworICAgICAg
ICBjYXNlIEdQQ19JX0FSUkFZX0xFTl9XUklURV9GSUVMRDogcmV0dXJuIDErMTsKKyAgICAgICAg
Y2FzZSBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRDogcmV0dXJuIDErMTsKKyAgICAgICAgY2Fz
ZSBHUENfSV9BUlJBWV9MRU5fUkVBRF9MT0NBTDogcmV0dXJuIDErMDsKKyAgICAgICAgY2FzZSBH
UENfSV9BUlJBWV9MRU5fU0tJUDogcmV0dXJuIDErMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRf
TUFTS19XUklURTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFE
OiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fUzogcmV0
dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0w6IHJldHVybiAx
KzI7CisgICAgICAgIGNhc2UgR1BDX0lfQklUX01BU0tfUkVBRF9UT19MTDogcmV0dXJuIDErMjsK
KyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0Y6IHJldHVybiAxKzI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQklUX01BU0tfUkVBRF9UT19EOiByZXR1cm4gMSsyOworICAgICAgICBj
YXNlIEdQQ19JX0JJVF9XUklURTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRf
UkVBRDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfUkVBRF9UT19TOiByZXR1
cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9SRUFEX1RPX0w6IHJldHVybiAxKzE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQklUX1JFQURfVE9fTEw6IHJldHVybiAxKzE7CisgICAgICAgIGNh
c2UgR1BDX0lfQklUX1JFQURfVE9fRjogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9C
SVRfUkVBRF9UT19EOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NLSVA6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfQkNfQU5EX1NLSVBfRklFTEQ6IHJldHVy
biAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfU0tJUDogcmV0dXJuIDErMTsKKyAgICAg
ICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfQkNfQU5EX1NLSVBfRklFTEQ6IHJldHVybiAxKzE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1NLSVA6IHJldHVybiAxKzA7CisgICAgICAgIGNh
c2UgR1BDX0lfSU5DX1NJWkU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfSU5DX1NJ
WkVfQVJSQVlfTEVOOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0lOQ19TSVpFX0FS
UkFZOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0lOQ19TSVpFX0JJVFZFQ1RPUjog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CQzogcmV0dXJuIDErMTsKKyAgICAgICAg
Y2FzZSBHUENfSV9BUlJBWV9CQ19GSUVMRDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENf
SV9BUlJBWV9CQ19MT0NBTDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNU
T1JfQkNfRklFTEQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX0JD
X0xPQ0FMOiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX01BTExPQ19CVUY6IHJldHVy
biAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfUE9QX0JVRjogcmV0dXJuIDErMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9ERVNUUk9ZX0JVRkZFUjogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENf
SV9NQUtFX09VVF9NQVA6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0NfUk9P
VF9NQVlCRV8yTkQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0M6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0NfQVJSQVk6IHJldHVybiAxKzI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQUxMT0NfQVJSQVlfMk5EOiByZXR1cm4gMSsyOworICAgICAgICBjYXNl
IEdQQ19JX0NBTEw6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQUREX0NCQUNLOiBy
ZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0ZSRUVfSU1NRURJQVRFOiByZXR1cm4gMSsw
OworICAgICAgICBjYXNlIEdQQ19JX0ZSRUU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BD
X0lfU1RPUkVfUFRSOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NUT1JFX1BUUl8y
TkQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfU1RPUkVfVkFMOiByZXR1cm4gMSsx
OworICAgICAgICBjYXNlIEdQQ19JX1BVU0hfUFRSOiByZXR1cm4gMSsxOworICAgICAgICBjYXNl
IEdQQ19JX1BVU0hfUFRSXzJORDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9QVVNI
X1BUUl8zUkQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfUFVTSF9WQUw6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfRFVQX1BUUl8yTkQ6IHJldHVybiAxKzA7CisgICAg
ICAgIGNhc2UgR1BDX0lfUE9QOiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1RXT19Q
T1A6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfVEhSRUVfUE9QOiByZXR1cm4gMSsw
OworICAgICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxBRERfUFRSOiByZXR1cm4gMSsyOworICAg
ICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxBRERfUFRSXzJORDogcmV0dXJuIDErMjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT01QRkFJTEpVTVA6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09NUEZBSUxKVU1QXzJORDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9BRERD
T01QSlVNUDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9UV09fQUREQ09NUEpVTVA6
IHJldHVybiAxKzM7CisgICAgICAgIGNhc2UgR1BDX0lfWkVST0pVTVA6IHJldHVybiAxKzE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfREVDQ09NUEpVTVA6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ0hFQ0tDSE9JQ0U6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVEFCTEVT
RVRfTE9DQUxfVE9fRklFTEQ6IHJldHVybiBVSU5UMzJfTUFYOworICAgICAgICBjYXNlIEdQQ19J
X1RBQkxFU0VUX0ZJRUxEX1RPX0ZJRUxEOiByZXR1cm4gVUlOVDMyX01BWDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9UQUJMRUpVTVBfRklFTEQ6IHJldHVybiBVSU5UMzJfTUFYOworICAgICAgICBjYXNl
IEdQQ19JX1RBQkxFSlVNUF9MT0NBTDogcmV0dXJuIFVJTlQzMl9NQVg7CisgICAgICAgIGNhc2Ug
R1BDX0lfSlVNUDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9SRVRVUk5fT05FOiBy
ZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1JFVFVSTl9UT1BfV0lUSF9SRUdJT046IHJl
dHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRIX0VN
UFRZX1RZUEVTOiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1JFVFVSTl9PTkVfSU5J
VF9CVUZfV0lUSF9UWVBFU19GUk9NX09VVF9NQVA6IHJldHVybiAxKzA7CisgICAgICAgIGRlZmF1
bHQ6IGJyZWFrOworICAgIH0KKyAgICB0c2ZfYWJvcnQoIkludmFsaWQgaW5zdHJ1Y3Rpb24iKTsK
K30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1
Y3Rpb25fdG9fc3RyaW5nLmdlbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX3RvX3N0cmluZy5nZW4JKG5vbmV4aXN0ZW50
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnN0cnVjdGlv
bl90b19zdHJpbmcuZ2VuCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjk5IEBACisvKiBnZW5l
cmF0ZWQgYnkgZ3BjX2dlbi5yYiAqLworY29uc3QgY2hhciAqZ3BjX2luc3RydWN0aW9uX3RvX3N0
cmluZyhncGNfY2VsbF90IGluc3QpIHsKKyAgICBzd2l0Y2ggKGluc3QpIHsKKyAgICAgICAgY2Fz
ZSBHUENfSV9OT1A6IHJldHVybiAiTk9QIjsKKyAgICAgICAgY2FzZSBHUENfSV9MQUJFTDogcmV0
dXJuICJMQUJFTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9OQ19JTkNEU1Q6IHJldHVy
biAiQ09QWV9IVE9OQ19JTkNEU1QiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTlNfSU5D
RFNUOiByZXR1cm4gIkNPUFlfSFRPTlNfSU5DRFNUIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0hUT05MX0lOQ0RTVDogcmV0dXJuICJDT1BZX0hUT05MX0lOQ0RTVCI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9IVE9OTExfSU5DRFNUOiByZXR1cm4gIkNPUFlfSFRPTkxMX0lOQ0RTVCI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9ORl9JTkNEU1Q6IHJldHVybiAiQ09QWV9IVE9ORl9J
TkNEU1QiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTkRfSU5DRFNUOiByZXR1cm4gIkNP
UFlfSFRPTkRfSU5DRFNUIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05DSE9JQ0VfVE9f
VUk4X0lOQ0RTVDogcmV0dXJuICJDT1BZX0hUT05DSE9JQ0VfVE9fVUk4X0lOQ0RTVCI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRP
SENfVE9fQklUX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19JTkNTUkM6
IHJldHVybiAiQ09QWV9OVE9IQ19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRP
SENfVE9fU19aX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RPX1NfWl9JTkNTUkMiOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fU19FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05U
T0hDX1RPX1NfRV9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTF9a
X0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RPX0xfWl9JTkNTUkMiOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfTlRPSENfVE9fTF9FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RPX0xf
RV9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTExfWl9JTkNTUkM6
IHJldHVybiAiQ09QWV9OVE9IQ19UT19MTF9aX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9OVE9IQ19UT19MTF9FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RPX0xMX0VfSU5D
U1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0ZfWl9JTkNTUkM6IHJldHVy
biAiQ09QWV9OVE9IQ19UT19GX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hDX1RPX0ZfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IQ19UT19GX0VfSU5DU1JDIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0RfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9O
VE9IQ19UT19EX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0Rf
RV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IQ19UT19EX0VfSU5DU1JDIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX05UT0hTX1RPX0JJVF9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IU19UT19C
SVRfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0NfSU5DU1JDOiBy
ZXR1cm4gIkNPUFlfTlRPSFNfVE9fQ19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
TlRPSFNfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX05UT0hTX1RPX0xfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IU19UT19MX1pf
SU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xfRV9JTkNTUkM6IHJl
dHVybiAiQ09QWV9OVE9IU19UT19MX0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X05UT0hTX1RPX0xMX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fTExfWl9JTkNTUkMi
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fTExfRV9JTkNTUkM6IHJldHVybiAi
Q09QWV9OVE9IU19UT19MTF9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9I
U19UT19GX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fRl9aX0lOQ1NSQyI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19GX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRP
SFNfVE9fRl9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19EX1pf
SU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fRF9aX0lOQ1NSQyI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9OVE9IU19UT19EX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fRF9F
X0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19CSVRfSU5DU1JDOiBy
ZXR1cm4gIkNPUFlfTlRPSExfVE9fQklUX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9OVE9ITF9UT19DX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hMX1RPX0NfSU5DU1JDIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX1NfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRP
SExfVE9fU19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfSU5DU1JDOiBy
ZXR1cm4gIkNPUFlfTlRPSExfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hM
X1RPX0xMX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9fTExfWl9JTkNTUkMiOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9O
VE9ITF9UT19MTF9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19G
X1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9fRl9aX0lOQ1NSQyI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9OVE9ITF9UT19GX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9f
Rl9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19EX1pfSU5DU1JD
OiByZXR1cm4gIkNPUFlfTlRPSExfVE9fRF9aX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9OVE9ITF9UT19EX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9fRF9FX0lOQ1NS
QyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fQklUX0lOQ1NSQzogcmV0dXJu
ICJDT1BZX05UT0hMTF9UT19CSVRfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hMTF9UT19DX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hMTF9UT19DX0lOQ1NSQyI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fU19JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9I
TExfVE9fU19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExMX1RPX0xfSU5D
U1JDOiByZXR1cm4gIkNPUFlfTlRPSExMX1RPX0xfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX05UT0hMTF9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9ITExfSU5DU1JDIjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19GX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRP
SExMX1RPX0ZfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExMX1RPX0Zf
RV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9ITExfVE9fRl9FX0lOQ1NSQyI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fRF9aX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hMTF9U
T19EX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19EX0VfSU5D
U1JDOiByZXR1cm4gIkNPUFlfTlRPSExMX1RPX0RfRV9JTkNTUkMiOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfTlRPSEZfVE9fQklUX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0JJVF9J
TkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fQ19aX0lOQ1NSQzogcmV0
dXJuICJDT1BZX05UT0hGX1RPX0NfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
TlRPSEZfVE9fQ19FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0NfRV9JTkNTUkMiOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fU19aX0lOQ1NSQzogcmV0dXJuICJDT1BZ
X05UT0hGX1RPX1NfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9f
U19FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX1NfRV9JTkNTUkMiOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fTF9aX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RP
X0xfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fTF9FX0lOQ1NS
QzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0xfRV9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfTlRPSEZfVE9fTExfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRl9UT19MTF9aX0lO
Q1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9UT19MTF9FX0lOQ1NSQzogcmV0
dXJuICJDT1BZX05UT0hGX1RPX0xMX0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X05UT0hGX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX0lOQ1NSQyI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9OVE9IRl9UT19EX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0RfSU5D
U1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0JJVF9JTkNTUkM6IHJldHVy
biAiQ09QWV9OVE9IRF9UT19CSVRfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hEX1RPX0NfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19DX1pfSU5DU1JDIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0NfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9O
VE9IRF9UT19DX0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX1Nf
Wl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19TX1pfSU5DU1JDIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX05UT0hEX1RPX1NfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19T
X0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0xfWl9JTkNTUkM6
IHJldHVybiAiQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX05UT0hEX1RPX0xfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19MX0VfSU5DU1JD
IjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0xMX1pfSU5DU1JDOiByZXR1cm4g
IkNPUFlfTlRPSERfVE9fTExfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRP
SERfVE9fTExfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19MTF9FX0lOQ1NSQyI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9UT19GX0lOQ1NSQzogcmV0dXJuICJDT1BZX05U
T0hEX1RPX0ZfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX0lOQ1NSQzog
cmV0dXJuICJDT1BZX05UT0hEX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVQ6
IHJldHVybiAiQ09QWV9CSVQiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUX1RPX1M6IHJl
dHVybiAiQ09QWV9CSVRfVE9fUyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9fTDog
cmV0dXJuICJDT1BZX0JJVF9UT19MIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVF9UT19M
TDogcmV0dXJuICJDT1BZX0JJVF9UT19MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRf
VE9fRjogcmV0dXJuICJDT1BZX0JJVF9UT19GIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJ
VF9UT19EOiByZXR1cm4gIkNPUFlfQklUX1RPX0QiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
QzogcmV0dXJuICJDT1BZX0MiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19UT19TX1o6IHJl
dHVybiAiQ09QWV9DX1RPX1NfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX1NfRTog
cmV0dXJuICJDT1BZX0NfVE9fU19FIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0NfVE9fTF9a
OiByZXR1cm4gIkNPUFlfQ19UT19MX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19UT19M
X0U6IHJldHVybiAiQ09QWV9DX1RPX0xfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RP
X0xMX1o6IHJldHVybiAiQ09QWV9DX1RPX0xMX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
Q19UT19MTF9FOiByZXR1cm4gIkNPUFlfQ19UT19MTF9FIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0NfVE9fRl9aOiByZXR1cm4gIkNPUFlfQ19UT19GX1oiOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfQ19UT19GX0U6IHJldHVybiAiQ09QWV9DX1RPX0ZfRSI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9DX1RPX0RfWjogcmV0dXJuICJDT1BZX0NfVE9fRF9aIjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0NfVE9fRF9FOiByZXR1cm4gIkNPUFlfQ19UT19EX0UiOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfU19UT19CSVQ6IHJldHVybiAiQ09QWV9TX1RPX0JJVCI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9TX1RPX0M6IHJldHVybiAiQ09QWV9TX1RPX0MiOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfUzogcmV0dXJuICJDT1BZX1MiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
U19UT19MX1o6IHJldHVybiAiQ09QWV9TX1RPX0xfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9TX1RPX0xfRTogcmV0dXJuICJDT1BZX1NfVE9fTF9FIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX1NfVE9fTExfWjogcmV0dXJuICJDT1BZX1NfVE9fTExfWiI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9TX1RPX0xMX0U6IHJldHVybiAiQ09QWV9TX1RPX0xMX0UiOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfU19UT19GX1o6IHJldHVybiAiQ09QWV9TX1RPX0ZfWiI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9TX1RPX0ZfRTogcmV0dXJuICJDT1BZX1NfVE9fRl9FIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX1NfVE9fRF9aOiByZXR1cm4gIkNPUFlfU19UT19EX1oiOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfU19UT19EX0U6IHJldHVybiAiQ09QWV9TX1RPX0RfRSI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RPX0JJVDogcmV0dXJuICJDT1BZX0xfVE9fQklUIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fQzogcmV0dXJuICJDT1BZX0xfVE9fQyI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RPX1M6IHJldHVybiAiQ09QWV9MX1RPX1MiOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfTDogcmV0dXJuICJDT1BZX0wiOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfTF9UT19MTF9aOiByZXR1cm4gIkNPUFlfTF9UT19MTF9aIjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0xfVE9fTExfRTogcmV0dXJuICJDT1BZX0xfVE9fTExfRSI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9MX1RPX0ZfWjogcmV0dXJuICJDT1BZX0xfVE9fRl9aIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX0xfVE9fRl9FOiByZXR1cm4gIkNPUFlfTF9UT19GX0UiOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfTF9UT19EX1o6IHJldHVybiAiQ09QWV9MX1RPX0RfWiI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RPX0RfRTogcmV0dXJuICJDT1BZX0xfVE9fRF9FIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0JJVDogcmV0dXJuICJDT1BZX0xMX1RPX0JJVCI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19DOiByZXR1cm4gIkNPUFlfTExfVE9fQyI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19TOiByZXR1cm4gIkNPUFlfTExfVE9fUyI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19MOiByZXR1cm4gIkNPUFlfTExfVE9fTCI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTDogcmV0dXJuICJDT1BZX0xMIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX0xMX1RPX0ZfWjogcmV0dXJuICJDT1BZX0xMX1RPX0ZfWiI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX0U6IHJldHVybiAiQ09QWV9MTF9UT19GX0UiOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fRF9aOiByZXR1cm4gIkNPUFlfTExfVE9fRF9a
IjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0RfRTogcmV0dXJuICJDT1BZX0xMX1RP
X0RfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0JJVDogcmV0dXJuICJDT1BZX0Zf
VE9fQklUIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fQ19aOiByZXR1cm4gIkNPUFlf
Rl9UT19DX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19DX0U6IHJldHVybiAiQ09Q
WV9GX1RPX0NfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX1NfWjogcmV0dXJuICJD
T1BZX0ZfVE9fU19aIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fU19FOiByZXR1cm4g
IkNPUFlfRl9UT19TX0UiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19MX1o6IHJldHVy
biAiQ09QWV9GX1RPX0xfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xfRTogcmV0
dXJuICJDT1BZX0ZfVE9fTF9FIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fTExfWjog
cmV0dXJuICJDT1BZX0ZfVE9fTExfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xM
X0U6IHJldHVybiAiQ09QWV9GX1RPX0xMX0UiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRjog
cmV0dXJuICJDT1BZX0YiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19EOiByZXR1cm4g
IkNPUFlfRl9UT19EIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fQklUOiByZXR1cm4g
IkNPUFlfRF9UT19CSVQiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19DX1o6IHJldHVy
biAiQ09QWV9EX1RPX0NfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RPX0NfRTogcmV0
dXJuICJDT1BZX0RfVE9fQ19FIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19aOiBy
ZXR1cm4gIkNPUFlfRF9UT19TX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19TX0U6
IHJldHVybiAiQ09QWV9EX1RPX1NfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RPX0xf
WjogcmV0dXJuICJDT1BZX0RfVE9fTF9aIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9f
TF9FOiByZXR1cm4gIkNPUFlfRF9UT19MX0UiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9U
T19MTF9aOiByZXR1cm4gIkNPUFlfRF9UT19MTF9aIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0RfVE9fTExfRTogcmV0dXJuICJDT1BZX0RfVE9fTExfRSI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9EX1RPX0Y6IHJldHVybiAiQ09QWV9EX1RPX0YiOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfRDogcmV0dXJuICJDT1BZX0QiOworICAgICAgICBjYXNlIEdQQ19JX1NFVF9DOiByZXR1cm4g
IlNFVF9DIjsKKyAgICAgICAgY2FzZSBHUENfSV9TRVRfUzogcmV0dXJuICJTRVRfUyI7CisgICAg
ICAgIGNhc2UgR1BDX0lfU0VUX0w6IHJldHVybiAiU0VUX0wiOworICAgICAgICBjYXNlIEdQQ19J
X1NFVF8yTkRfQzogcmV0dXJuICJTRVRfMk5EX0MiOworICAgICAgICBjYXNlIEdQQ19JX1NFVF8y
TkRfUzogcmV0dXJuICJTRVRfMk5EX1MiOworICAgICAgICBjYXNlIEdQQ19JX1NFVF8yTkRfTDog
cmV0dXJuICJTRVRfMk5EX0wiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEOiBy
ZXR1cm4gIkJJVFZFQ1RPUl9SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVB
RF9UT19DOiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX1RPX0MiOworICAgICAgICBjYXNlIEdQQ19J
X0JJVFZFQ1RPUl9SRUFEX1RPX1M6IHJldHVybiAiQklUVkVDVE9SX1JFQURfVE9fUyI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fTDogcmV0dXJuICJCSVRWRUNUT1JfUkVB
RF9UT19MIjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19MTDogcmV0dXJu
ICJCSVRWRUNUT1JfUkVBRF9UT19MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JF
QURfVE9fRjogcmV0dXJuICJCSVRWRUNUT1JfUkVBRF9UT19GIjsKKyAgICAgICAgY2FzZSBHUENf
SV9CSVRWRUNUT1JfUkVBRF9UT19EOiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX1RPX0QiOworICAg
ICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fQzogcmV0dXJuICJCSVRWRUNUT1Jf
UkVBRF9GUk9NX0MiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fUzog
cmV0dXJuICJCSVRWRUNUT1JfUkVBRF9GUk9NX1MiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZF
Q1RPUl9SRUFEX0ZST01fTDogcmV0dXJuICJCSVRWRUNUT1JfUkVBRF9GUk9NX0wiOworICAgICAg
ICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fTEw6IHJldHVybiAiQklUVkVDVE9SX1JF
QURfRlJPTV9MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9GOiBy
ZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX0ZST01fRiI7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVD
VE9SX1JFQURfRlJPTV9EOiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX0ZST01fRCI7CisgICAgICAg
IGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9UU0ZfSU5URUdFUl9BUlJBWTogcmV0dXJu
ICJCSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9JTlRFR0VSX0FSUkFZIjsKKyAgICAgICAgY2FzZSBH
UENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9MT05HX0FSUkFZOiByZXR1cm4gIkJJVFZFQ1RP
Ul9SRUFEX0ZST01fVFNGX0xPTkdfQVJSQVkiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RP
Ul9XUklURTogcmV0dXJuICJCSVRWRUNUT1JfV1JJVEUiOworICAgICAgICBjYXNlIEdQQ19JX0JZ
VEVfQVJSQVlfUkVBRDogcmV0dXJuICJCWVRFX0FSUkFZX1JFQUQiOworICAgICAgICBjYXNlIEdQ
Q19JX0JZVEVfQVJSQVlfV1JJVEU6IHJldHVybiAiQllURV9BUlJBWV9XUklURSI7CisgICAgICAg
IGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfU0tJUDogcmV0dXJuICJUU0ZfSU5URUdFUl9TS0lQIjsK
KyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfU0tJUDogcmV0dXJuICJUU0ZfVU5TSUdO
RURfU0tJUCI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0tJUDogcmV0dXJuICJUU0Zf
TE9OR19TS0lQIjsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0JJVDog
cmV0dXJuICJUU0ZfSU5URUdFUl9SRUFEX1RPX0JJVCI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNG
X0lOVEVHRVJfUkVBRF9UT19DOiByZXR1cm4gIlRTRl9JTlRFR0VSX1JFQURfVE9fQyI7CisgICAg
ICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TOiByZXR1cm4gIlRTRl9JTlRFR0VS
X1JFQURfVE9fUyI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRDogcmV0dXJu
ICJUU0ZfSU5URUdFUl9SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9SRUFE
X1RPX0xMOiByZXR1cm4gIlRTRl9JTlRFR0VSX1JFQURfVE9fTEwiOworICAgICAgICBjYXNlIEdQ
Q19JX1RTRl9JTlRFR0VSX1JFQURfVE9fRjogcmV0dXJuICJUU0ZfSU5URUdFUl9SRUFEX1RPX0Yi
OworICAgICAgICBjYXNlIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fRDogcmV0dXJuICJUU0Zf
SU5URUdFUl9SRUFEX1RPX0QiOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9VTlNJR05FRF9SRUFE
X1NVQjE6IHJldHVybiAiVFNGX1VOU0lHTkVEX1JFQURfU1VCMSI7CisgICAgICAgIGNhc2UgR1BD
X0lfVFNGX0xPTkdfUkVBRF9UT19CSVQ6IHJldHVybiAiVFNGX0xPTkdfUkVBRF9UT19CSVQiOwor
ICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fQzogcmV0dXJuICJUU0ZfTE9OR19S
RUFEX1RPX0MiOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fUzogcmV0dXJu
ICJUU0ZfTE9OR19SRUFEX1RPX1MiOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURf
VE9fTDogcmV0dXJuICJUU0ZfTE9OR19SRUFEX1RPX0wiOworICAgICAgICBjYXNlIEdQQ19JX1RT
Rl9MT05HX1JFQUQ6IHJldHVybiAiVFNGX0xPTkdfUkVBRCI7CisgICAgICAgIGNhc2UgR1BDX0lf
VFNGX0xPTkdfUkVBRF9UT19GOiByZXR1cm4gIlRTRl9MT05HX1JFQURfVE9fRiI7CisgICAgICAg
IGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19EOiByZXR1cm4gIlRTRl9MT05HX1JFQURfVE9f
RCI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfU0laRTogcmV0dXJuICJUU0ZfSU5U
RUdFUl9TSVpFIjsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfUExVUzFfU0laRTog
cmV0dXJuICJUU0ZfVU5TSUdORURfUExVUzFfU0laRSI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNG
X0xPTkdfU0laRTogcmV0dXJuICJUU0ZfTE9OR19TSVpFIjsKKyAgICAgICAgY2FzZSBHUENfSV9U
U0ZfSU5URUdFUl9XUklURTogcmV0dXJuICJUU0ZfSU5URUdFUl9XUklURSI7CisgICAgICAgIGNh
c2UgR1BDX0lfVFNGX1VOU0lHTkVEX1BMVVMxX1dSSVRFOiByZXR1cm4gIlRTRl9VTlNJR05FRF9Q
TFVTMV9XUklURSI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfV1JJVEU6IHJldHVybiAi
VFNGX0xPTkdfV1JJVEUiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19TRVRFTVBUWTogcmV0
dXJuICJTVFJJTkdfU0VURU1QVFkiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19SRUFEOiBy
ZXR1cm4gIlNUUklOR19SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9TVFJJTkdfU0tJUDogcmV0
dXJuICJTVFJJTkdfU0tJUCI7CisgICAgICAgIGNhc2UgR1BDX0lfU1RSSU5HX1NJWkU6IHJldHVy
biAiU1RSSU5HX1NJWkUiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19XUklURTogcmV0dXJu
ICJTVFJJTkdfV1JJVEUiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19DT1BZOiByZXR1cm4g
IlNUUklOR19DT1BZIjsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfU0VURU1QVFk6IHJldHVybiAi
QU5ZX1NFVEVNUFRZIjsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfUkVBRDogcmV0dXJuICJBTllf
UkVBRCI7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1NLSVA6IHJldHVybiAiQU5ZX1NLSVAiOwor
ICAgICAgICBjYXNlIEdQQ19JX0FOWV9TSVpFOiByZXR1cm4gIkFOWV9TSVpFIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9BTllfV1JJVEU6IHJldHVybiAiQU5ZX1dSSVRFIjsKKyAgICAgICAgY2FzZSBH
UENfSV9BTllfQ09QWTogcmV0dXJuICJBTllfQ09QWSI7CisgICAgICAgIGNhc2UgR1BDX0lfTUVN
Q1BZOiByZXR1cm4gIk1FTUNQWSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9BUlJBWTogcmV0
dXJuICJDT1BZX0FSUkFZIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUjogcmV0
dXJuICJDT1BZX0JJVFZFQ1RPUiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1Jf
RlJPTV9DOiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX0ZST01fQyI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9TOiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX0ZST01fUyI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9MOiByZXR1cm4gIkNPUFlf
QklUVkVDVE9SX0ZST01fTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJP
TV9MTDogcmV0dXJuICJDT1BZX0JJVFZFQ1RPUl9GUk9NX0xMIjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0Y6IHJldHVybiAiQ09QWV9CSVRWRUNUT1JfRlJPTV9GIjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0Q6IHJldHVybiAiQ09QWV9C
SVRWRUNUT1JfRlJPTV9EIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19D
OiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX1RPX0MiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
QklUVkVDVE9SX1RPX1M6IHJldHVybiAiQ09QWV9CSVRWRUNUT1JfVE9fUyI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fTDogcmV0dXJuICJDT1BZX0JJVFZFQ1RPUl9UT19M
IjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19MTDogcmV0dXJuICJDT1BZ
X0JJVFZFQ1RPUl9UT19MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9f
RjogcmV0dXJuICJDT1BZX0JJVFZFQ1RPUl9UT19GIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0JJVFZFQ1RPUl9UT19EOiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX1RPX0QiOworICAgICAgICBj
YXNlIEdQQ19JX1JFQURDX1RPX0NIT0lDRTogcmV0dXJuICJSRUFEQ19UT19DSE9JQ0UiOworICAg
ICAgICBjYXNlIEdQQ19JX1JFQURMOiByZXR1cm4gIlJFQURMIjsKKyAgICAgICAgY2FzZSBHUENf
SV9BUlJBWV9MRU5fV1JJVEVfRklFTEQ6IHJldHVybiAiQVJSQVlfTEVOX1dSSVRFX0ZJRUxEIjsK
KyAgICAgICAgY2FzZSBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRDogcmV0dXJuICJBUlJBWV9M
RU5fUkVBRF9GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfTEVOX1JFQURfTE9DQUw6
IHJldHVybiAiQVJSQVlfTEVOX1JFQURfTE9DQUwiOworICAgICAgICBjYXNlIEdQQ19JX0FSUkFZ
X0xFTl9TS0lQOiByZXR1cm4gIkFSUkFZX0xFTl9TS0lQIjsKKyAgICAgICAgY2FzZSBHUENfSV9C
SVRfTUFTS19XUklURTogcmV0dXJuICJCSVRfTUFTS19XUklURSI7CisgICAgICAgIGNhc2UgR1BD
X0lfQklUX01BU0tfUkVBRDogcmV0dXJuICJCSVRfTUFTS19SRUFEIjsKKyAgICAgICAgY2FzZSBH
UENfSV9CSVRfTUFTS19SRUFEX1RPX1M6IHJldHVybiAiQklUX01BU0tfUkVBRF9UT19TIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0w6IHJldHVybiAiQklUX01BU0tfUkVB
RF9UT19MIjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0xMOiByZXR1cm4g
IkJJVF9NQVNLX1JFQURfVE9fTEwiOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9NQVNLX1JFQURf
VE9fRjogcmV0dXJuICJCSVRfTUFTS19SRUFEX1RPX0YiOworICAgICAgICBjYXNlIEdQQ19JX0JJ
VF9NQVNLX1JFQURfVE9fRDogcmV0dXJuICJCSVRfTUFTS19SRUFEX1RPX0QiOworICAgICAgICBj
YXNlIEdQQ19JX0JJVF9XUklURTogcmV0dXJuICJCSVRfV1JJVEUiOworICAgICAgICBjYXNlIEdQ
Q19JX0JJVF9SRUFEOiByZXR1cm4gIkJJVF9SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRf
UkVBRF9UT19TOiByZXR1cm4gIkJJVF9SRUFEX1RPX1MiOworICAgICAgICBjYXNlIEdQQ19JX0JJ
VF9SRUFEX1RPX0w6IHJldHVybiAiQklUX1JFQURfVE9fTCI7CisgICAgICAgIGNhc2UgR1BDX0lf
QklUX1JFQURfVE9fTEw6IHJldHVybiAiQklUX1JFQURfVE9fTEwiOworICAgICAgICBjYXNlIEdQ
Q19JX0JJVF9SRUFEX1RPX0Y6IHJldHVybiAiQklUX1JFQURfVE9fRiI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQklUX1JFQURfVE9fRDogcmV0dXJuICJCSVRfUkVBRF9UT19EIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9TS0lQOiByZXR1cm4gIlNLSVAiOworICAgICAgICBjYXNlIEdQQ19JX0FSUkFZX0JD
X0FORF9TS0lQX0ZJRUxEOiByZXR1cm4gIkFSUkFZX0JDX0FORF9TS0lQX0ZJRUxEIjsKKyAgICAg
ICAgY2FzZSBHUENfSV9BUlJBWV9TS0lQOiByZXR1cm4gIkFSUkFZX1NLSVAiOworICAgICAgICBj
YXNlIEdQQ19JX0JJVFZFQ1RPUl9CQ19BTkRfU0tJUF9GSUVMRDogcmV0dXJuICJCSVRWRUNUT1Jf
QkNfQU5EX1NLSVBfRklFTEQiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9TS0lQOiBy
ZXR1cm4gIkJJVFZFQ1RPUl9TS0lQIjsKKyAgICAgICAgY2FzZSBHUENfSV9JTkNfU0laRTogcmV0
dXJuICJJTkNfU0laRSI7CisgICAgICAgIGNhc2UgR1BDX0lfSU5DX1NJWkVfQVJSQVlfTEVOOiBy
ZXR1cm4gIklOQ19TSVpFX0FSUkFZX0xFTiI7CisgICAgICAgIGNhc2UgR1BDX0lfSU5DX1NJWkVf
QVJSQVk6IHJldHVybiAiSU5DX1NJWkVfQVJSQVkiOworICAgICAgICBjYXNlIEdQQ19JX0lOQ19T
SVpFX0JJVFZFQ1RPUjogcmV0dXJuICJJTkNfU0laRV9CSVRWRUNUT1IiOworICAgICAgICBjYXNl
IEdQQ19JX0JDOiByZXR1cm4gIkJDIjsKKyAgICAgICAgY2FzZSBHUENfSV9BUlJBWV9CQ19GSUVM
RDogcmV0dXJuICJBUlJBWV9CQ19GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfQkNf
TE9DQUw6IHJldHVybiAiQVJSQVlfQkNfTE9DQUwiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZF
Q1RPUl9CQ19GSUVMRDogcmV0dXJuICJCSVRWRUNUT1JfQkNfRklFTEQiOworICAgICAgICBjYXNl
IEdQQ19JX0JJVFZFQ1RPUl9CQ19MT0NBTDogcmV0dXJuICJCSVRWRUNUT1JfQkNfTE9DQUwiOwor
ICAgICAgICBjYXNlIEdQQ19JX01BTExPQ19CVUY6IHJldHVybiAiTUFMTE9DX0JVRiI7CisgICAg
ICAgIGNhc2UgR1BDX0lfUE9QX0JVRjogcmV0dXJuICJQT1BfQlVGIjsKKyAgICAgICAgY2FzZSBH
UENfSV9ERVNUUk9ZX0JVRkZFUjogcmV0dXJuICJERVNUUk9ZX0JVRkZFUiI7CisgICAgICAgIGNh
c2UgR1BDX0lfTUFLRV9PVVRfTUFQOiByZXR1cm4gIk1BS0VfT1VUX01BUCI7CisgICAgICAgIGNh
c2UgR1BDX0lfQUxMT0NfUk9PVF9NQVlCRV8yTkQ6IHJldHVybiAiQUxMT0NfUk9PVF9NQVlCRV8y
TkQiOworICAgICAgICBjYXNlIEdQQ19JX0FMTE9DOiByZXR1cm4gIkFMTE9DIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9BTExPQ19BUlJBWTogcmV0dXJuICJBTExPQ19BUlJBWSI7CisgICAgICAgIGNh
c2UgR1BDX0lfQUxMT0NfQVJSQVlfMk5EOiByZXR1cm4gIkFMTE9DX0FSUkFZXzJORCI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ0FMTDogcmV0dXJuICJDQUxMIjsKKyAgICAgICAgY2FzZSBHUENfSV9B
RERfQ0JBQ0s6IHJldHVybiAiQUREX0NCQUNLIjsKKyAgICAgICAgY2FzZSBHUENfSV9GUkVFX0lN
TUVESUFURTogcmV0dXJuICJGUkVFX0lNTUVESUFURSI7CisgICAgICAgIGNhc2UgR1BDX0lfRlJF
RTogcmV0dXJuICJGUkVFIjsKKyAgICAgICAgY2FzZSBHUENfSV9TVE9SRV9QVFI6IHJldHVybiAi
U1RPUkVfUFRSIjsKKyAgICAgICAgY2FzZSBHUENfSV9TVE9SRV9QVFJfMk5EOiByZXR1cm4gIlNU
T1JFX1BUUl8yTkQiOworICAgICAgICBjYXNlIEdQQ19JX1NUT1JFX1ZBTDogcmV0dXJuICJTVE9S
RV9WQUwiOworICAgICAgICBjYXNlIEdQQ19JX1BVU0hfUFRSOiByZXR1cm4gIlBVU0hfUFRSIjsK
KyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1BUUl8yTkQ6IHJldHVybiAiUFVTSF9QVFJfMk5EIjsK
KyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1BUUl8zUkQ6IHJldHVybiAiUFVTSF9QVFJfM1JEIjsK
KyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1ZBTDogcmV0dXJuICJQVVNIX1ZBTCI7CisgICAgICAg
IGNhc2UgR1BDX0lfRFVQX1BUUl8yTkQ6IHJldHVybiAiRFVQX1BUUl8yTkQiOworICAgICAgICBj
YXNlIEdQQ19JX1BPUDogcmV0dXJuICJQT1AiOworICAgICAgICBjYXNlIEdQQ19JX1RXT19QT1A6
IHJldHVybiAiVFdPX1BPUCI7CisgICAgICAgIGNhc2UgR1BDX0lfVEhSRUVfUE9QOiByZXR1cm4g
IlRIUkVFX1BPUCI7CisgICAgICAgIGNhc2UgR1BDX0lfUkVQVVNIX01VTEFERF9QVFI6IHJldHVy
biAiUkVQVVNIX01VTEFERF9QVFIiOworICAgICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxBRERf
UFRSXzJORDogcmV0dXJuICJSRVBVU0hfTVVMQUREX1BUUl8yTkQiOworICAgICAgICBjYXNlIEdQ
Q19JX0NPTVBGQUlMSlVNUDogcmV0dXJuICJDT01QRkFJTEpVTVAiOworICAgICAgICBjYXNlIEdQ
Q19JX0NPTVBGQUlMSlVNUF8yTkQ6IHJldHVybiAiQ09NUEZBSUxKVU1QXzJORCI7CisgICAgICAg
IGNhc2UgR1BDX0lfQUREQ09NUEpVTVA6IHJldHVybiAiQUREQ09NUEpVTVAiOworICAgICAgICBj
YXNlIEdQQ19JX1RXT19BRERDT01QSlVNUDogcmV0dXJuICJUV09fQUREQ09NUEpVTVAiOworICAg
ICAgICBjYXNlIEdQQ19JX1pFUk9KVU1QOiByZXR1cm4gIlpFUk9KVU1QIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9ERUNDT01QSlVNUDogcmV0dXJuICJERUNDT01QSlVNUCI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ0hFQ0tDSE9JQ0U6IHJldHVybiAiQ0hFQ0tDSE9JQ0UiOworICAgICAgICBjYXNlIEdQ
Q19JX1RBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxEOiByZXR1cm4gIlRBQkxFU0VUX0xPQ0FMX1RPX0ZJ
RUxEIjsKKyAgICAgICAgY2FzZSBHUENfSV9UQUJMRVNFVF9GSUVMRF9UT19GSUVMRDogcmV0dXJu
ICJUQUJMRVNFVF9GSUVMRF9UT19GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lfVEFCTEVKVU1Q
X0ZJRUxEOiByZXR1cm4gIlRBQkxFSlVNUF9GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lfVEFC
TEVKVU1QX0xPQ0FMOiByZXR1cm4gIlRBQkxFSlVNUF9MT0NBTCI7CisgICAgICAgIGNhc2UgR1BD
X0lfSlVNUDogcmV0dXJuICJKVU1QIjsKKyAgICAgICAgY2FzZSBHUENfSV9SRVRVUk5fT05FOiBy
ZXR1cm4gIlJFVFVSTl9PTkUiOworICAgICAgICBjYXNlIEdQQ19JX1JFVFVSTl9UT1BfV0lUSF9S
RUdJT046IHJldHVybiAiUkVUVVJOX1RPUF9XSVRIX1JFR0lPTiI7CisgICAgICAgIGNhc2UgR1BD
X0lfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRIX0VNUFRZX1RZUEVTOiByZXR1cm4gIlJFVFVSTl9P
TkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUyI7CisgICAgICAgIGNhc2UgR1BDX0lfUkVUVVJO
X09ORV9JTklUX0JVRl9XSVRIX1RZUEVTX0ZST01fT1VUX01BUDogcmV0dXJuICJSRVRVUk5fT05F
X0lOSVRfQlVGX1dJVEhfVFlQRVNfRlJPTV9PVVRfTUFQIjsKKyAgICAgICAgZGVmYXVsdDogYnJl
YWs7CisgICAgfQorICAgIHRzZl9hYm9ydCgiSW52YWxpZCBpbnN0cnVjdGlvbiIpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRfY29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19p
bnRfY29tbW9uLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0y
L3dhc20vdHNmL2dwY19pbnRfY29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAg
UElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworCisjZGVmaW5lIElOVF9QVVNIKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICArK3N0YWNrX3RvcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBJTlRfUE9QKCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLS1zdGFja190b3A7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgSU5U
X1NUQUNLKGFyZykgICAgICAgICAgICAgICgqKHN0YWNrX3RvcC0oYXJnKSkpCisjZGVmaW5lIElO
VF9TVEFDS19QVFIoYXJnKSAgICAgICAgICAoKHVpbnQ4X3QqKSBJTlRfU1RBQ0soYXJnKSkKKwor
I2RlZmluZSBJTlRfU1RBQ0tfU0VUKGFyZyx2YWwpICAgICAgKCooc3RhY2tfdG9wLShhcmcpKT0o
dmFsKSkKKyNkZWZpbmUgSU5UX1NUQUNLX1BUUl9TRVQoYXJnLHZhbCkgIChJTlRfU1RBQ0tfU0VU
KGFyZywoZ3BjX2NlbGxfdCl2YWwpKQorCisjZGVmaW5lIElOVF9TVFJFQU0oYXJnKSAgICAgICAg
ICAgICAoaW5zdFthcmddKQorCisjZGVmaW5lIElOVF9GQUlMVVJFKCkgICAgICAgICAgICAgICBn
b3RvIGZhaWx1cmUKKworI2RlZmluZSBJTlRfQ0xFQU5VUCgpICAgICAgICAgICAgICAgZG8ge30g
d2hpbGUoMCkKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dw
Y19pbnRhYmxlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dh
c20vdHNmL2dwY19pbnRhYmxlLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9K
ZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRhYmxlLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTUgRmls
aXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJncGNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0
c2ZfZm9ybWF0LmgiCisKK3N0cnVjdCBhZGRyX2FycmF5IHsKKyAgICBncGNfY2VsbF90ICoqYWRk
cnM7CisgICAgdWludDMyX3QgbnVtOworfTsKKworc3RhdGljIHRzZl9ib29sX3Qgc3RfYWFfYXBw
ZW5kKHRzZl9zdF90YWJsZSAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3BjX2NlbGxfdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxf
dCAqYWRkcikgeworICAgIHN0cnVjdCBhZGRyX2FycmF5ICphYTsKKyAgICBpZiAodHNmX3N0X2xv
b2t1cCh0YWJsZSwoY2hhciopa2V5LCh2b2lkKiopJmFhKSkgeworICAgICAgICBncGNfY2VsbF90
ICoqbmV3X2FycmF5PQorICAgICAgICAgICAgcmVhbGxvYyhhYS0+YWRkcnMsc2l6ZW9mKGdwY19j
ZWxsX3QqKSooYWEtPm51bSsxKSk7CisgICAgICAgIGlmIChuZXdfYXJyYXk9PU5VTEwpIHsKKyAg
ICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCByZWFsbG9jIGdwY19jZWxsX3QqIGFy
cmF5Iik7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAg
IGFhLT5hZGRycz1uZXdfYXJyYXk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWE9bWFsbG9jKHNp
emVvZihzdHJ1Y3QgYWRkcl9hcnJheSkpOworICAgICAgICBpZiAoYWE9PU5VTEwpIHsKKyAgICAg
ICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2Mgc3RydWN0IGFkZHJfYXJyYXki
KTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYWEt
PmFkZHJzPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCopKTsKKyAgICAgICAgaWYgKGFhLT5hZGRy
cz09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBn
cGNfY2VsbF90KiIpOworICAgICAgICAgICAgZnJlZShhYSk7CisgICAgICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIGFhLT5udW09MDsKKyAgICAgICAgCisgICAg
ICAgIGlmICh0c2Zfc3RfaW5zZXJ0KHRhYmxlLChjaGFyKilrZXksYWEpPDApIHsKKyAgICAgICAg
ICAgIHRzZl9zZXRfZXJybm8oInRzZl9zdF9pbnNlcnQgZmFpbGVkIik7CisgICAgICAgICAgICBm
cmVlKGFhLT5hZGRycyk7CisgICAgICAgICAgICBmcmVlKGFhKTsKKyAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgYWEtPmFkZHJzW2FhLT5udW0rK109
YWRkcjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyBpbnQgc3RfYWFfZnJlZSh2
b2lkICprZXkgLyogd2UgaWdub3JlZCBpdCBhbnl3YXkgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGFkZHJfYXJyYXkgKmFhLAorICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFy
ZykgeworICAgIGZyZWUoYWEtPmFkZHJzKTsKKyAgICBmcmVlKGFhKTsKKyAgICByZXR1cm4gVFNG
X1NUX0NPTlRJTlVFOworfQorCitzdGF0aWMgdHNmX2Jvb2xfdCBiYWNrX2JyYW5jaF9hY3Rpb24o
Z3BjX2NlbGxfdCAqY2VsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphcmcpIHsKKyAgICB0c2Zfc3RfdGFibGUgKmJhY2tfbGFiZWxzPWFyZzsKKyAgICBncGNf
Y2VsbF90IGFkZHI7CisgICAgaWYgKCF0c2Zfc3RfbG9va3VwKGJhY2tfbGFiZWxzLAorICAgICAg
ICAgICAgICAgICAgICAgICAoY2hhciopKmNlbGwsCisgICAgICAgICAgICAgICAgICAgICAgICh2
b2lkKikmYWRkcikpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfSlVNUCwKKyAg
ICAgICAgICAgICAgICAgICAgICAiQmFja3dhcmQgcmVmZXJlbmNlIHRvIHVua25vd24gbGFiZWw6
ICIgZnVwdHIsCisgICAgICAgICAgICAgICAgICAgICAgKmNlbGwpOworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICAqY2VsbD1hZGRyOworICAgIHJldHVybiB0c2ZfdHJ1ZTsK
K30KKworc3RhdGljIHRzZl9ib29sX3QgZm9yZV9icmFuY2hfYWN0aW9uKGdwY19jZWxsX3QgKmNl
bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7Cisg
ICAgdHNmX3N0X3RhYmxlICpmb3JlX2xhYmVscz1hcmc7CisgICAgcmV0dXJuIHN0X2FhX2FwcGVu
ZChmb3JlX2xhYmVscywqY2VsbCxjZWxsKTsKK30KKworZ3BjX2ludGFibGVfdCAqZ3BjX2ludGFi
bGVfZnJvbV9wcm90byhncGNfcHJvdG9fdCAqcHJvdG8pIHsKKyAgICBncGNfaW50YWJsZV90ICpy
ZXQ7CisgICAgZ3BjX2NlbGxfdCAqd3JpdGU7CisgICAgZ3BjX2NlbGxfdCAqcmVhZDsKKyAgICB0
c2Zfc3RfdGFibGUgKmJhY2tfbGFiZWxzLCpmb3JlX2xhYmVsczsKKyAgICAKKyAgICByZXQ9bWFs
bG9jKHNpemVvZihncGNfaW50YWJsZV90KSk7CisgICAgaWYgKHJldD09TlVMTCkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGdwY19pbnRhYmxlX3QiKTsKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+bnVtX2FyZ3M9cHJvdG8tPm51
bV9hcmdzOworICAgIAorICAgIHJldC0+dGFyZ2V0cz10c2Zfc3RfaW5pdF9wdHJ0YWJsZSgpOwor
ICAgIGlmIChyZXQtPnRhcmdldHM9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IHRzZl9zdF9pbml0X3B0cnRhYmxlKCkiKTsKKyAgICAgICAgZnJlZShyZXQpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT5zdHJlYW09bWFsbG9jKHNp
emVvZihncGNfY2VsbF90KSpwcm90by0+c2l6ZSk7CisgICAgaWYgKHJldC0+c3RyZWFtPT1OVUxM
KSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2Mgc3RyZWFtIGZvciBn
cGNfaW50YWJsZV90Iik7CisgICAgICAgIHRzZl9zdF9mcmVlX3RhYmxlKHJldC0+dGFyZ2V0cyk7
CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAor
ICAgIGJhY2tfbGFiZWxzPXRzZl9zdF9pbml0X3B0cnRhYmxlKCk7CisgICAgaWYgKGJhY2tfbGFi
ZWxzPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2Zfc3RfaW5p
dF9wdHJ0YWJsZSgpIik7CisgICAgICAgIHRzZl9zdF9mcmVlX3RhYmxlKHJldC0+dGFyZ2V0cyk7
CisgICAgICAgIGZyZWUocmV0LT5zdHJlYW0pOworICAgICAgICBmcmVlKHJldCk7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBmb3JlX2xhYmVscz10c2Zfc3RfaW5pdF9w
dHJ0YWJsZSgpOworICAgIGlmIChmb3JlX2xhYmVscz09TlVMTCkgeworICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2luaXRfcHRydGFibGUoKSIpOworICAgICAgICB0c2Zf
c3RfZnJlZV90YWJsZShyZXQtPnRhcmdldHMpOworICAgICAgICBmcmVlKHJldC0+c3RyZWFtKTsK
KyAgICAgICAgZnJlZShyZXQpOworICAgICAgICB0c2Zfc3RfZnJlZV90YWJsZShiYWNrX2xhYmVs
cyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICB3cml0ZT1yZXQtPnN0
cmVhbTsKKyAgICAKKyAgICBmb3IgKHJlYWQ9cHJvdG8tPnN0cmVhbTtyZWFkPHByb3RvLT5zdHJl
YW0rcHJvdG8tPnNpemU7KSB7CisgICAgICAgIGlmICgqcmVhZD09R1BDX0lfTEFCRUwpIHsKKyAg
ICAgICAgICAgIHVpbnQzMl90IGk7CisgICAgICAgICAgICBzdHJ1Y3QgYWRkcl9hcnJheSAqYWE7
CisgICAgICAgICAgICBncGNfY2VsbF90ICp0b19kZWxldGU7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmICh0c2Zfc3RfaW5zZXJ0KGJhY2tfbGFiZWxzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNoYXIqKXJlYWRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodm9pZCopd3JpdGUpPDApIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgdHNmX3N0X2luc2VydCIpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdG9fZGVsZXRlID0gJnJlYWRb
MV07CisgICAgICAgICAgICBpZiAodHNmX3N0X2RlbGV0ZShmb3JlX2xhYmVscywgKGNoYXIqKil0
b19kZWxldGUsICh2b2lkKiopJmFhKSkgeworICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8YWEt
Pm51bTsrK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgKihhYS0+YWRkcnNbaV0pPShncGNfY2Vs
bF90KXdyaXRlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcmVlKGFhLT5h
ZGRycyk7CisgICAgICAgICAgICAgICAgZnJlZShhYSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmICh0c2Zfc3RfaW5zZXJ0KHJldC0+dGFyZ2V0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKil3cml0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpPDApIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJD
b3VsZCBub3QgdHNmX3N0X2luc2VydCIpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVhZCs9MjsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQzMl90IG51bTsKKyAgICAgICAgICAgIGdwY19j
ZWxsX3QgKnByZV93cml0ZT13cml0ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbnVtPWdw
Y19pbnN0cnVjdGlvbl9zaXplKHJlYWQpOworICAgICAgICAgICAgKndyaXRlKys9KnJlYWQrKzsK
KyAgICAgICAgICAgIHdoaWxlICgtLW51bT4wKSB7CisgICAgICAgICAgICAgICAgKndyaXRlKys9
KnJlYWQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFn
cGNfaW5zdHJ1Y3Rpb25fZm9yX2FsbF9iYWNrX2JyYW5jaGVzKAorICAgICAgICAgICAgICAgICAg
ICAgcHJlX3dyaXRlLGJhY2tfYnJhbmNoX2FjdGlvbixiYWNrX2xhYmVscykpIHsKKyAgICAgICAg
ICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmICghZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxfZm9yd2FyZF9icmFuY2hlcygKKyAg
ICAgICAgICAgICAgICAgICAgIHByZV93cml0ZSxmb3JlX2JyYW5jaF9hY3Rpb24sZm9yZV9sYWJl
bHMpKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmb3JlX2xhYmVscy0+bnVtX2VudHJpZXMhPTAp
IHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfSlVNUCwKKyAgICAgICAgICAgICAg
ICAgICAgICAiVGhlcmUgc3RpbGwgZXhpc3QgdW5mdWxmaWxsZWQgbGFiZWwgcmVmZXJlbmNlcyIp
OworICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgfQorICAgIAorICAgIHJldC0+c3RhY2tfaGVp
Z2h0cz0KKwlncGNfaW50YWJsZV9nZXRfc3RhY2tfaGVpZ2h0cyhyZXQsJihyZXQtPm1heF9oZWln
aHQpKTsKKyAgICBpZiAocmV0LT5zdGFja19oZWlnaHRzPT1OVUxMKSB7CisJZ290byBmYWlsdXJl
OworICAgIH0KKyAgICAKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShiYWNrX2xhYmVscyk7CisgICAg
dHNmX3N0X2ZyZWVfdGFibGUoZm9yZV9sYWJlbHMpOworICAgIAorICAgIHJldC0+c2l6ZT13cml0
ZS1yZXQtPnN0cmVhbTsKKyAgICAKKyAgICByZXR1cm4gcmV0OworICAgIAorZmFpbHVyZToKKyAg
ICB0c2Zfc3RfZnJlZV90YWJsZShyZXQtPnRhcmdldHMpOworICAgIGZyZWUocmV0LT5zdHJlYW0p
OworICAgIGZyZWUocmV0KTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShiYWNrX2xhYmVscyk7Cisg
ICAgdHNmX3N0X2ZvcmVhY2goZm9yZV9sYWJlbHMsKHRzZl9zdF9mdW5jX3Qpc3RfYWFfZnJlZSxO
VUxMKTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShmb3JlX2xhYmVscyk7CisgICAgcmV0dXJuIE5V
TEw7Cit9CisKK3N0cnVjdCBjb3JyZWN0X2JyYW5jaF9jbG9zdXJlIHsKKyAgICBzaXplX3Qgb2Zm
c2V0OworICAgIHRzZl9zdF90YWJsZSAqdGFyZ2V0czsKK307CisKK3N0YXRpYyB0c2ZfYm9vbF90
IGNvcnJlY3RfYnJhbmNoKGdwY19jZWxsX3QgKmNlbGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICphcmcpIHsKKyAgICBzdHJ1Y3QgY29ycmVjdF9icmFuY2hfY2xvc3Vy
ZSAqY2xvc3VyZT1hcmc7CisgICAgKmNlbGw9KGdwY19jZWxsX3QpKCgoZ3BjX2NlbGxfdCopKmNl
bGwpK2Nsb3N1cmUtPm9mZnNldCk7CisgICAgcmV0dXJuIHRzZl9zdF9pbnNlcnQoY2xvc3VyZS0+
dGFyZ2V0cywoY2hhciopY2VsbCxOVUxMKT49MDsKK30KKworZ3BjX2ludGFibGVfdCAqZ3BjX2lu
dGFibGVfY2xvbmUoZ3BjX2ludGFibGVfdCAqaW50YWJsZSkgeworICAgIGdwY19pbnRhYmxlX3Qg
KnJldD1tYWxsb2Moc2l6ZW9mKGdwY19pbnRhYmxlX3QpKTsKKyAgICBncGNfY2VsbF90ICpjdXI7
CisgICAgc3RydWN0IGNvcnJlY3RfYnJhbmNoX2Nsb3N1cmUgY2xvc3VyZTsKKworICAgIGlmIChy
ZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBncGNf
aW50YWJsZV90Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQt
Pm51bV9hcmdzPWludGFibGUtPm51bV9hcmdzOworICAgIHJldC0+c2l6ZT1pbnRhYmxlLT5zaXpl
OworICAgIAorICAgIHJldC0+c3RyZWFtPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkqcmV0LT5z
aXplKTsKKyAgICBpZiAocmV0LT5zdHJlYW09PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJu
bygiQ291bGQgbm90IG1hbGxvYyBhcnJheSBvZiBncGNfY2VsbF90Iik7CisgICAgICAgIGZyZWUo
cmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIG1lbWNweShyZXQt
PnN0cmVhbSxpbnRhYmxlLT5zdHJlYW0scmV0LT5zaXplKnNpemVvZihncGNfY2VsbF90KSk7Cisg
ICAgCisgICAgcmV0LT50YXJnZXRzPXRzZl9zdF9pbml0X3B0cnRhYmxlKCk7CisgICAgaWYgKHJl
dC0+dGFyZ2V0cz09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNm
X3N0X2luaXRfcHRydGFibGUoKSIpOworICAgICAgICBmcmVlKHJldC0+c3RyZWFtKTsKKyAgICAg
ICAgZnJlZShyZXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgY2xv
c3VyZS5vZmZzZXQ9cmV0LT5zdHJlYW0taW50YWJsZS0+c3RyZWFtOworICAgIGNsb3N1cmUudGFy
Z2V0cz1yZXQtPnRhcmdldHM7CisgICAgCisgICAgZm9yIChjdXI9cmV0LT5zdHJlYW07CisgICAg
ICAgICBjdXI8cmV0LT5zdHJlYW0rcmV0LT5zaXplOworICAgICAgICAgY3VyKz1ncGNfaW5zdHJ1
Y3Rpb25fc2l6ZShjdXIpKSB7CisgICAgICAgIGlmICghZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxf
YnJhbmNoZXMoY3VyLGNvcnJlY3RfYnJhbmNoLCZjbG9zdXJlKSkgeworICAgICAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IHRzZl9zdF9pbnNlcnQiKTsKKyAgICAgICAgICAgIHRzZl9z
dF9mcmVlX3RhYmxlKHJldC0+dGFyZ2V0cyk7CisgICAgICAgICAgICBmcmVlKHJldC0+c3RyZWFt
KTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0LT5zdGFja19oZWlnaHRzPQorCWdwY19pbnRhYmxlX2dl
dF9zdGFja19oZWlnaHRzKHJldCwmKHJldC0+bWF4X2hlaWdodCkpOworICAgIGlmIChyZXQtPnN0
YWNrX2hlaWdodHM9PU5VTEwpIHsKKwl0c2Zfc3RfZnJlZV90YWJsZShyZXQtPnRhcmdldHMpOwor
CWZyZWUocmV0LT5zdHJlYW0pOworCWZyZWUocmV0KTsKKwlyZXR1cm4gTlVMTDsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCBncGNfaW50YWJsZV9kZXN0cm95KGdwY19p
bnRhYmxlX3QgKmludGFibGUpIHsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShpbnRhYmxlLT50YXJn
ZXRzKTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShpbnRhYmxlLT5zdGFja19oZWlnaHRzKTsKKyAg
ICBmcmVlKGludGFibGUtPnN0cmVhbSk7CisgICAgZnJlZShpbnRhYmxlKTsKK30KKworc3RhdGlj
IHRzZl9ib29sX3QgY2Fub25pY2FsaXplX2JyYW5jaChncGNfY2VsbF90ICpjZWxsLAorCQkJCSAg
ICAgIHZvaWQgKmFyZykgeworICAgIGdwY19jZWxsX3QgKmJlZ2luPWFyZzsKKyAgICAqY2VsbD0o
KGdwY19jZWxsX3QqKSpjZWxsKS1iZWdpbjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3Rz
Zl9ib29sX3QgZ3BjX2ludGFibGVfd3JpdGUoZ3BjX2ludGFibGVfdCAqaW50YWJsZSwKKwkJCSAg
ICAgdHNmX3dyaXRlcl90IHdyaXRlciwKKwkJCSAgICAgdm9pZCAqYXJnKSB7CisgICAgZ3BjX2Nl
bGxfdCAqY3VyOworICAgIGZvciAoY3VyPWludGFibGUtPnN0cmVhbTsKKwkgY3VyPGludGFibGUt
PnN0cmVhbStpbnRhYmxlLT5zaXplOworCSBjdXIrPWdwY19pbnN0cnVjdGlvbl9zaXplKGN1cikp
IHsKKwlzaXplX3Qgc2l6ZT1zaXplb2YoZ3BjX2NlbGxfdCkKKwkgICAgKiBncGNfaW5zdHJ1Y3Rp
b25fc2l6ZShjdXIpOworCWdwY19jZWxsX3QgKmJ1ZmZlcj1tYWxsb2Moc2l6ZSk7CisJdHNmX2Jv
b2xfdCByZXM7CisJaWYgKGJ1ZmZlcj09TlVMTCkgeworCSAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgYWxsb2NhdGUgYnVmZmVyIik7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJfQorCW1l
bWNweShidWZmZXIsY3VyLHNpemUpOworCWdwY19pbnN0cnVjdGlvbl9mb3JfYWxsX2JyYW5jaGVz
KGJ1ZmZlciwKKwkJCQkJIGNhbm9uaWNhbGl6ZV9icmFuY2gsCisJCQkJCSBpbnRhYmxlLT5zdHJl
YW0pOworCXJlcz13cml0ZXIoYXJnLGJ1ZmZlcixzaXplKTsKKwlmcmVlKGJ1ZmZlcik7CisJaWYg
KCFyZXMpIHsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKwl9CisgICAgfQorICAgIHJldHVybiB0
c2ZfdHJ1ZTsKK30KKworaW50cHRyX3QgZ3BjX2ludGFibGVfZ2V0X2hlaWdodChncGNfaW50YWJs
ZV90ICpwcm9nLAorCQkJCWdwY19jZWxsX3QgKmFkZHJlc3MpIHsKKyAgICBpbnRwdHJfdCByZXN1
bHQ7CisgICAgaWYgKCF0c2Zfc3RfbG9va3VwKHByb2ctPnN0YWNrX2hlaWdodHMsCisJCSAgICAg
ICAoY2hhciopYWRkcmVzcywKKwkJICAgICAgICh2b2lkKikmcmVzdWx0KSkgeworCXJldHVybiAt
MTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmZGVmIEhBVkVfQUREUkVTU19P
Rl9MQUJFTAorCit0c2ZfYm9vbF90IGdwY19pbnRhYmxlX3J1bl9zdXBwb3J0ZWQoKSB7CisgICAg
cmV0dXJuIHRzZl9mYWxzZTsKK30KKwordWludHB0cl90IGdwY19pbnRhYmxlX3J1bihncGNfaW50
YWJsZV90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgKmFyZ3MpIHsKKyAgICB0c2Zfc2V0
X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAiTm9uLXRocmVh
ZGVkIGludGVycHJldGF0aW9uIHN1cHBvcnQgd2FzIG5vdCBjb21waWxlZCBpbnRvICIKKyAgICAg
ICAgICAgICAgICAgICJ0aGUgVFNGIHBhY2thZ2UuICBUaGlzIGlzIGJlY2F1c2UgdGhlIHRocmVh
ZGVkIGludGVycHJldGVyICIKKyAgICAgICAgICAgICAgICAgICJ3YXMgY29tcGlsZWQgaW5zdGVh
ZC4gIFBsZWFzZSB1c2UgdGhlIHRocmVhZGVkICIKKyAgICAgICAgICAgICAgICAgICJpbnRlcnBy
ZXRlci4iKTsKKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKwordHNmX2Jvb2xfdCBncGNfaW50
YWJsZV9ydW5fc3VwcG9ydGVkKCkgeworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworI2luY2x1
ZGUgImdwY19pbnRfY29tbW9uLmgiCisKKyNkZWZpbmUgSU5UX0JFR0lOKGluc3RfbmFtZSkgXAor
ICAgIGNhc2UgR1BDXyMjaW5zdF9uYW1lOiAvKiBwcmludGYoIiVzXG4iLCNpbnN0X25hbWUpOyAq
LyArK2luc3Q7IHsKKworI2RlZmluZSBJTlRfRU5EKCkgXAorICAgIH0gZ290byBpbnRfbG9vcDsK
KworI2RlZmluZSBJTlRfQURWQU5DRShhbW91bnQpIFwKKyAgICAoaW5zdCs9KGFtb3VudCkpCisK
KyNkZWZpbmUgSU5UX0dPVE8odmFsdWUpIGRvIHsgICAgXAorICAgIHZvaWQgKnRtcD0odm9pZCop
dmFsdWU7ICAgICBcCisgICAgaW5zdD10bXA7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBnb3Rv
IGludF9sb29wOyAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKwordWludHB0cl90IGdwY19p
bnRhYmxlX3J1bihncGNfaW50YWJsZV90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpyZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgKmFy
Z3MpIHsKKyAgICBncGNfY2VsbF90ICppbnN0OworICAgIHVpbnQ4X3QgKmJ1Zj1OVUxMLAorICAg
ICAgICAgICAgKmN1cj1OVUxMLAorICAgICAgICAgICAgKmVuZD1OVUxMOworICAgIHVpbnQzMl90
IHNpemU9MDsKKyAgICB0c2ZfYm9vbF90IGtlZXA9dHNmX2ZhbHNlOworICAgIHRzZl90eXBlX2lu
X21hcF90ICp0eXBlcz1OVUxMOworICAgIAorICAgIHRzZl90eXBlX291dF9tYXBfdCAqb3V0X21h
cD1OVUxMOworICAgIAorICAgIHRzZl9ib29sX3Qga2VlcF9yZWdpb249dHNmX2ZhbHNlOworICAg
IAorICAgIGludDhfdCBpOF90bXA7CisgICAgdWludDhfdCB1aThfdG1wOworICAgIGludDE2X3Qg
aTE2X3RtcDsKKyAgICB1aW50MTZfdCB1aTE2X3RtcDsKKyAgICBpbnQzMl90IGkzMl90bXA7Cisg
ICAgdWludDMyX3QgdWkzMl90bXA7CisgICAgaW50NjRfdCBpNjRfdG1wOworICAgIHVpbnQ2NF90
IHVpNjRfdG1wOworICAgIGZsb2F0IGZfdG1wOworICAgIGZsb2F0IGRfdG1wOworICAgIAorICAg
IGdwY19jZWxsX3QgKnN0YWNrOworICAgIGdwY19jZWxsX3QgKnN0YWNrX3RvcDsKKyAgICAKKyAg
ICB1aW50MzJfdCBpOworCisgICAgc3RhY2s9YWxsb2NhKHNpemVvZihncGNfY2VsbF90KSpwcm9n
LT5tYXhfaGVpZ2h0KTsKKyAgICBpZiAoc3RhY2s9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9l
cnJubygiQ291bGQgbm90IGFsbG9jYXRlIHN0YWNrIik7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICAKKyAgICBzdGFja190b3A9c3RhY2stMTsKKyAgICAKKyAgICBmb3IgKGk9MDtpPHBy
b2ctPm51bV9hcmdzOysraSkgeworICAgICAgICBJTlRfUFVTSCgpOworICAgICAgICBJTlRfU1RB
Q0soMCk9YXJnc1tpXTsKKyAgICB9CisgICAgCisgICAgSU5UX0dPVE8ocHJvZy0+c3RyZWFtKTsK
KworaW50X2xvb3A6CisgICAgc3dpdGNoICgqaW5zdCkgeworI2luY2x1ZGUgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2ZfYWJvcnQoIkJhZCBp
bnN0cnVjdGlvbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCitib3VuZHNfZXJyb3I6
CisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwiQm91bmRzIGNoZWNrIGZhaWx1
cmUiKTsKKworZmFpbHVyZToKKyAgICAvKiBlcnJvciEgKi8KKyAgICBpZiAoa2VlcCkgeworICAg
ICAgICBmcmVlKGJ1Zik7CisgICAgfQorICAgIGlmIChrZWVwX3JlZ2lvbikgeworICAgICAgICB0
c2ZfcmVnaW9uX2ZyZWUocmVnaW9uKTsKKyAgICB9CisgICAgaWYgKG91dF9tYXAhPU5VTEwpIHsK
KyAgICAgICAgdHNmX3R5cGVfb3V0X21hcF9kZXN0cm95KG91dF9tYXApOworICAgIH0KKyAgICBy
ZXR1cm4gMDsKK30KKworI2VuZGlmCisKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvZ3BjX2ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRlcm5hbC5oCShub25leGlzdGVudCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGUF9HUENfSU5U
RVJOQUxfSAorI2RlZmluZSBGUF9HUENfSU5URVJOQUxfSAorCisjaW5jbHVkZSAidHNmX2ludGVy
bmFsLmgiCisjaW5jbHVkZSAiZ3BjLmgiCisKKy8qIHN0dXBpZCBzdHVmZiAqLwordm9pZCBncGNf
dW5saW5rX2ZyZWUoY2hhciAqbmFtZSk7Cit2b2lkIGdwY19ybWRpcl9mcmVlKGNoYXIgKm5hbWUp
Owordm9pZCBncGNfcm1kYXNocmZfZnJlZShjaGFyICpuYW1lKTsKKworLyogZGVidWdnaW5nIHN0
dWZmICovCit2b2lkIGdwY19keW5jY19jb2RlX2dlbl9kZWJ1Zyhjb25zdCBjaGFyICp0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjX2ZpbGVuYW1lKTsK
KworLyogZmlndXJlIG91dCB0aGUgc3RhY2sgaGVpZ2h0IGZvciBlYWNoIGNlbGwgaW5zaWRlIG9m
IGFuIGludGFibGUuCisgKiBhbHNvIGdpdmVzIHlvdSB0aGUgbWF4aW11bSBzdGFjayBoZWlnaHQu
ICByZXR1cm5zIGEgaGFzaHRhYmxlCisgKiB0aGF0IG1hcHMgdGhlIGluc3RydWN0aW9uIGNlbGwg
YWRkcmVzcyB0byB0aGUgc3RhY2sgaGVpZ2h0LgorICogdGhlIG1heCBzdGFjayBoZWlnaHQgaXMg
c3RvcmVkIGluICptYXhfaGVpZ2h0IGlmIG1heF9oZWlnaHQhPU5VTEwuCisgKiBhbHNvIG5vdGUg
dGhhdCB0aGUgc3RhY2sgaGVpZ2h0IGF0IGEgY2VsbCBpcyB0aGUgaGVpZ2h0IHRoYXQgdGhlCisg
KiBzdGFjayB3b3VsZCBoYXZlIGhhZCB3aGVuIHlvdSB3ZXJlIGVudGVyaW5nIGludG8gdGhhdCBp
bnN0cnVjdGlvbiwKKyAqIG5vdCBleGl0aW5nIGl0LgorICoKKyAqIE5PVEU6IHdlIHJlcHJlc2Vu
dCBoZWlnaHRzIHVzaW5nIGludHB0cl90IGJlY2F1c2U6CisgKiAxKSB3ZSBuZWVkIHNpZ25lZCwg
c2luY2Ugc3RhY2sgZWZmZWN0cyBjYW4gYmUgbmVnYXRpdmUsIGFuZAorICogMikgd2UgbmVlZCBp
dCB0byBiZSBwb2ludGVyLXNpemUsIHNpbmNlIHdlIHVzZSBpdCBhcyBhIHZhbHVlIHRvIHRoZQor
ICogICAgaGFzaHRhYmxlLCBhbmQgaGFzaHRhYmxlIHZhbHVlcyBhcmUgdm9pZCouICovCit0c2Zf
c3RfdGFibGUgKmdwY19pbnRhYmxlX2dldF9zdGFja19oZWlnaHRzKGdwY19pbnRhYmxlX3QgKnBy
b2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90
ICptYXhfaGVpZ2h0KTsKKworLyogY29kZSBnZW5lcmF0aW9uIHRoaW5naWVzICovCisjZGVmaW5l
IGdwY19yZWFkX2JpdHZlY3Rvcl90b19hcnJheShuYnl0ZXMpIFwKKyAgICB1aW50MzJfdCBsZW47
XAorICAgIHVpbnQzMl90IHNpemU7XAorICAgIHVpbnQzMl90IGk7XAorICAgIFwKKyAgICBjb3B5
X250b2hjX2luY3NyY19iYygmdWk4X3RtcCxjdXIsZW5kLGJvdW5kc19lcnJvcik7XAorICAgIGlm
ICh1aThfdG1wPT0yNTUpIHtcCisgICAgICAgIGNvcHlfbnRvaGxfaW5jc3JjX2JjKCh1aW50OF90
KikmbGVuLGN1cixcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCxib3VuZHNfZXJy
b3IpO1wKKyAgICB9IGVsc2Uge1wKKyAgICAgICAgbGVuID0gdWk4X3RtcDtcCisgICAgfVwKKyAg
ICBcCisgICAgYXJyYXktPmxlbj1sZW47XAorICAgIHNpemU9KChsZW4rNyk+PjMpO1wKKyAgICBc
CisgICAgaWYgKGN1ciArIHNpemUgPiBlbmQpIHtcCisgICAgICAgIGdvdG8gYm91bmRzX2Vycm9y
O1wKKyAgICB9XAorICAgIFwKKyAgICBhcnJheS0+ZGF0YT10c2ZfcmVnaW9uX2FsbG9jKHJlZ2lv
bixsZW4qbmJ5dGVzKTtcCisgICAgaWYgKGFycmF5LT5kYXRhPT1OVUxMKSB7XAorICAgICAgICB0
c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3JlZ2lvbl9hbGxvYygpIik7XAorICAgICAgICBJ
TlRfRkFJTFVSRSgpO1wKKyAgICB9XAorICAgIFwKKyAgICBmb3IgKGk9NztpPGxlbjtpKz04KSB7
XAorICAgICAgICB1aW50OF90IGJpdHM9KmN1cjtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktN109
KChiaXRzPj4wKSYxKTtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktNl09KChiaXRzPj4xKSYxKTtc
CisgICAgICAgIGFycmF5LT5kYXRhW2ktNV09KChiaXRzPj4yKSYxKTtcCisgICAgICAgIGFycmF5
LT5kYXRhW2ktNF09KChiaXRzPj4zKSYxKTtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktM109KChi
aXRzPj40KSYxKTtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktMl09KChiaXRzPj41KSYxKTtcCisg
ICAgICAgIGFycmF5LT5kYXRhW2ktMV09KChiaXRzPj42KSYxKTtcCisgICAgICAgIGFycmF5LT5k
YXRhW2ktMF09KChiaXRzPj43KSYxKTtcCisgICAgICAgIGN1cisrO1wKKyAgICB9XAorICAgIGk9
bGVuJn43O1wKKyAgICBpZiAoaTxsZW4pIHtcCisgICAgICAgIHVpbnQ4X3QgYml0cz0qY3VyO1wK
KyAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+PjApJjEpO1wKKyAgICAgICAgaWYgKGk8
bGVuKSB7XAorICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+PjEpJjEpO1wKKyAg
ICAgICAgICAgIGlmIChpPGxlbikge1wKKyAgICAgICAgICAgICAgICBhcnJheS0+ZGF0YVtpKytd
PSgoYml0cz4+MikmMSk7XAorICAgICAgICAgICAgICAgIGlmIChpPGxlbikge1wKKyAgICAgICAg
ICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+PjMpJjEpO1wKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGk8bGVuKSB7XAorICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPmRh
dGFbaSsrXT0oKGJpdHM+PjQpJjEpO1wKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpPGxl
bikge1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS0+ZGF0YVtpKytdPSgoYml0
cz4+NSkmMSk7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpPGxlbikge1wKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+PjYp
JjEpO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk8bGVuKSB7XAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+
PjcpJjEpO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9XAorICAgICAgICAgICAgICAgICAgICAgICAgfVwKKyAgICAgICAg
ICAgICAgICAgICAgfVwKKyAgICAgICAgICAgICAgICB9XAorICAgICAgICAgICAgfVwKKyAgICAg
ICAgfVwKKyAgICAgICAgY3VyKys7XAorICAgIH0KKworI2RlZmluZSBncGNfcmVhZF9hcnJheV90
b19iaXR2ZWN0b3Ioa2NvZGUsdG1wbmFtZSxuYml0Ynl0ZXMpIFwKKyAgICB1aW50MzJfdCBzaXpl
O1wKKyAgICB1aW50MzJfdCBsZW47XAorICAgIHVpbnQ4X3QgKmJ2Y3VyO1wKKyAgICB1aW50MzJf
dCBuYnl0ZXM7XAorICAgIHVpbnQzMl90IG92ZXJmbG93O1wKKyAgICB1aW50MzJfdCBpO1wKKyAg
ICBcCisgICAgY29weV9udG9oY19pbmNzcmNfYmMoJnVpOF90bXAsY3VyLGVuZCxib3VuZHNfZXJy
b3IpO1wKKyAgICBpZiAodWk4X3RtcD09MjU1KSB7XAorICAgICAgICBjb3B5X250b2hsX2luY3Ny
Y19iYygodWludDhfdCopJmJpdHZlY3Rvci0+bnVtX2JpdHMsY3VyLFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kLGJvdW5kc19lcnJvcik7XAorICAgIH0gZWxzZSB7XAorICAgICAg
ICBiaXR2ZWN0b3ItPm51bV9iaXRzID0gdWk4X3RtcDtcCisgICAgfVwKKyAgICBcCisgICAgbGVu
PWJpdHZlY3Rvci0+bnVtX2JpdHM7XAorICAgIHNpemU9KChiaXR2ZWN0b3ItPm51bV9iaXRzICsg
Nyk+PjMpO1wKKyAgICBcCisgICAgaWYgKGN1ciArIGxlbipuYml0Ynl0ZXMgPiBlbmQpIHtcCisg
ICAgICAgIGdvdG8gYm91bmRzX2Vycm9yO1wKKyAgICB9XAorICAgIFwKKyAgICBiaXR2ZWN0b3It
PmJpdHM9dHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sc2l6ZSk7XAorICAgIGlmIChiaXR2ZWN0b3It
PmJpdHM9PU5VTEwpIHtcCisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVn
aW9uX2FsbG9jKCkiKTtcCisgICAgICAgIElOVF9GQUlMVVJFKCk7XAorICAgIH1cCisgICAgXAor
ICAgIGJ2Y3VyPWJpdHZlY3Rvci0+Yml0cztcCisgICAgbmJ5dGVzPWxlbj4+MztcCisgICAgXAor
ICAgIHdoaWxlIChuYnl0ZXMtLT4wKSB7XAorICAgICAgICB1aW50OF90IGJpdHM9MDtcCisgICAg
ICAgIGZvciAoaT0wO2k8ODsrK2kpIHtcCisgICAgICAgICAgICBjb3B5X250b2gjI2tjb2RlIyNf
aW5jc3JjKCh1aW50OF90KikmdG1wbmFtZSxjdXIpO1wKKyAgICAgICAgICAgIGlmICh0bXBuYW1l
KSBiaXRzfD0oMTw8aSk7XAorICAgICAgICB9XAorICAgICAgICAqYnZjdXIrKz1iaXRzO1wKKyAg
ICB9XAorICAgIG92ZXJmbG93PWxlbiY3O1wKKyAgICBpZiAobGVuPjApIHtcCisgICAgICAgIHVp
bnQ4X3QgYml0cz0wO1wKKyAgICAgICAgZm9yIChpPTA7aTxsZW47KytpKSB7XAorICAgICAgICAg
ICAgY29weV9udG9oIyNrY29kZSMjX2luY3NyYygodWludDhfdCopJnRtcG5hbWUsY3VyKTtcCisg
ICAgICAgICAgICBpZiAodG1wbmFtZSkgYml0c3w9KDE8PGkpO1wKKyAgICAgICAgfVwKKyAgICAg
ICAgKmJ2Y3VyPWJpdHM7XAorICAgIH0KKworI2RlZmluZSBncGNfcmVhZF9pbnRlZ2VyX2FycmF5
X3RvX2JpdHZlY3RvcihpbnRlZ2VyX3R5cGUpIFwKKyAgICB1aW50MzJfdCBsZW4sIGk7XAorICAg
IFwKKyAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCwgY3VyLCBlbmQsIGJvdW5kc19l
cnJvcik7XAorICAgIGlmICh1aThfdG1wID09IDI1NSkge1wKKyAgICAgICAgY29weV9udG9obF9p
bmNzcmNfYmMoKHVpbnQ4X3QqKSZiaXR2ZWN0b3ItPm51bV9iaXRzLCBjdXIsXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmQsIGJvdW5kc19lcnJvcik7XAorICAgIH0gZWxzZSB7XAor
ICAgICAgICBiaXR2ZWN0b3ItPm51bV9iaXRzID0gdWk4X3RtcDtcCisgICAgfVwKKyAgICBcCisg
ICAgbGVuID0gYml0dmVjdG9yLT5udW1fYml0cztcCisgICAgXAorICAgIGJpdHZlY3Rvci0+Yml0
cyA9IHRzZl9yZWdpb25fYWxsb2MocmVnaW9uLCAobGVuICsgNykgPj4gMyk7XAorICAgIGlmIChi
aXR2ZWN0b3ItPmJpdHMgPT0gTlVMTCkge1wKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IHRzZl9yZWdpb25fYWxsb2MoKSIpO1wKKyAgICAgICAgSU5UX0ZBSUxVUkUoKTtcCisgICAg
fVwKKyAgICBcCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XAorICAgICAgICB0c2Zf
IyNpbnRlZ2VyX3R5cGUjI190IGludGVnZXI7XAorICAgICAgICByZWFkX3RzZl8jI2ludGVnZXJf
dHlwZSMjX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7XAorICAgICAg
ICBpZiAoaW50ZWdlcikge1wKKyAgICAgICAgICAgIGJpdHZlY3Rvci0+Yml0c1tpID4+IDNdIHw9
ICgxIDw8IChpICYgNykpO1wKKyAgICAgICAgfSBlbHNlIHtcCisgICAgICAgICAgICBiaXR2ZWN0
b3ItPmJpdHNbaSA+PiAzXSAmPSB+KDEgPDwgKGkgJiA3KSk7XAorICAgICAgICB9XAorICAgIH0K
KworI2RlZmluZSBncGNfY29weV9hcnJheV90b19iaXR2ZWN0b3IoKSBcCisgICAgdWludDhfdCAq
ZGVzdF9jdXI7XAorICAgIHVpbnQzMl90IGksajtcCisgICAgdWludDhfdCBjdXJfYml0cztcCisg
ICAgXAorICAgIGRlc3QtPm51bV9iaXRzPXNyYy0+bGVuO1wKKyAgICBcCisgICAgZGVzdC0+Yml0
cz10c2ZfcmVnaW9uX2FsbG9jKHJlZ2lvbiwoZGVzdC0+bnVtX2JpdHMrNyk+PjMpO1wKKyAgICBp
ZiAoZGVzdC0+Yml0cz09TlVMTCkge1wKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90
IGFsbG9jYXRlIGJpdHZlY3RvciBmcm9tIHJlZ2lvbiIpO1wKKyAgICAgICAgSU5UX0ZBSUxVUkUo
KTtcCisgICAgfVwKKyAgICBcCisgICAgZGVzdF9jdXI9ZGVzdC0+Yml0cztcCisgICAgc3JjX2N1
cj1zcmMtPmRhdGE7XAorICAgIGZvciAoaT1kZXN0LT5udW1fYml0cz4+MztpLS0+MDspIHtcCisg
ICAgICAgIGN1cl9iaXRzPTA7XAorICAgICAgICBmb3IgKGo9MDtqPDg7KytqKSB7XAorICAgICAg
ICAgICAgaWYgKCpzcmNfY3VyKyspIHtcCisgICAgICAgICAgICAgICAgY3VyX2JpdHN8PSgxPDxq
KTtcCisgICAgICAgICAgICB9XAorICAgICAgICB9XAorICAgICAgICAqZGVzdF9jdXIrKz1jdXJf
Yml0cztcCisgICAgfVwKKyAgICBpZiAoKGRlc3QtPm51bV9iaXRzJn43KTxkZXN0LT5udW1fYml0
cykge1wKKyAgICAgICAgY3VyX2JpdHM9MDtcCisgICAgICAgIGZvciAoaT0oZGVzdC0+bnVtX2Jp
dHMmfjcpLGo9MDtpPGRlc3QtPm51bV9iaXRzOysraSwrK2opIHtcCisgICAgICAgICAgICBpZiAo
KnNyY19jdXIrKykge1wKKyAgICAgICAgICAgICAgICBjdXJfYml0c3w9KDE8PGopO1wKKyAgICAg
ICAgICAgIH1cCisgICAgICAgIH1cCisgICAgICAgICpkZXN0X2N1cj1jdXJfYml0cztcCisgICAg
fQorCisjZGVmaW5lIGdwY19jb3B5X2JpdHZlY3Rvcl90b19hcnJheShuYml0Ynl0ZXMpIFwKKyAg
ICBcCisgICAgdWludDMyX3QgaTtcCisgICAgdWludDMyX3QgbjtcCisgICAgdWludDhfdCBiaXRz
O1wKKyAgICBcCisgICAgZGVzdC0+bGVuPXNyYy0+bnVtX2JpdHM7XAorICAgIGRlc3QtPmRhdGE9
dHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sZGVzdC0+bGVuKm5iaXRieXRlcyk7XAorICAgIGlmIChk
ZXN0LT5kYXRhPT1OVUxMKSB7XAorICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxs
b2NhdGUgYXJyYXkiKTtcCisgICAgICAgIElOVF9GQUlMVVJFKCk7XAorICAgIH1cCisgICAgXAor
ICAgIGRlc3RfY3VyPWRlc3QtPmRhdGE7XAorICAgIFwKKyAgICBuPWRlc3QtPmxlbj4+MztcCisg
ICAgZm9yIChpPTA7aTxuOysraSkge1wKKyAgICAgICAgYml0cz1zcmMtPmJpdHNbaV07XAorICAg
ICAgICAqZGVzdF9jdXIrKz0oKGJpdHM+PjApJjEpO1wKKyAgICAgICAgKmRlc3RfY3VyKys9KChi
aXRzPj4xKSYxKTtcCisgICAgICAgICpkZXN0X2N1cisrPSgoYml0cz4+MikmMSk7XAorICAgICAg
ICAqZGVzdF9jdXIrKz0oKGJpdHM+PjMpJjEpO1wKKyAgICAgICAgKmRlc3RfY3VyKys9KChiaXRz
Pj40KSYxKTtcCisgICAgICAgICpkZXN0X2N1cisrPSgoYml0cz4+NSkmMSk7XAorICAgICAgICAq
ZGVzdF9jdXIrKz0oKGJpdHM+PjYpJjEpO1wKKyAgICAgICAgKmRlc3RfY3VyKys9KChiaXRzPj43
KSYxKTtcCisgICAgfVwKKyAgICBpZiAoKGRlc3QtPmxlbiZ+Nyk8ZGVzdC0+bGVuKSB7XAorICAg
ICAgICBiaXRzPXNyYy0+Yml0c1soZGVzdC0+bGVuLTEpPj4zXTtcCisgICAgICAgIGZvciAoaT0o
ZGVzdC0+bGVuJn43KTtpPGRlc3QtPmxlbjsrK2kpIHtcCisgICAgICAgICAgICAqZGVzdF9jdXIr
Kz1iaXRzJjE7XAorICAgICAgICAgICAgYml0cz4+PTE7XAorICAgICAgICB9XAorICAgIH0KKwor
I2VuZGlmCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNf
aW50ZXJwcmV0ZXIuZ2VuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi9ncGNfaW50ZXJwcmV0ZXIuZ2VuCShub25leGlzdGVudCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW50ZXJwcmV0ZXIuZ2VuCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzMxNCBAQAorLyogZ2VuZXJhdGVkIGJ5IGdwY19nZW4ucmIgKi8K
KyNkZWZpbmUgSU5UX1NUUkVBTV9HT1RPKGFyZykgSU5UX0dPVE8oSU5UX1NUUkVBTShhcmcpKQor
SU5UX0JFR0lOKElfTk9QKQorICAgIHsKKyNsaW5lIDQ1ICJncGNfc3BlYy5pbiIKKyNsaW5lIDgg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9MQUJFTCkKKyAgICB7CisjbGluZSA0OSAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHRzZl9mX2Fib3J0KCJVbmNvbnZlcnRlZCBsYWJlbC4iKTsKKyNsaW5lIDE2ICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfQ09QWV9IVE9OQ19JTkNEU1QpCisgICAgeworI2xpbmUgNTQgImdwY19zcGVj
LmluIgorICAgICAgICBjb3B5X2h0b25jX2luY2RzdChjdXIsSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpOworI2xpbmUgMjQgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0hUT05TX0lOQ0RT
VCkKKyAgICB7CisjbGluZSA1OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfaHRvbnNfaW5j
ZHN0KGN1cixJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisjbGluZSAzMiAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0NPUFlfSFRPTkxfSU5DRFNUKQorICAgIHsKKyNsaW5lIDY0ICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgY29weV9odG9ubF9pbmNkc3QoY3VyLElOVF9TVEFDS19QVFIoMCkgKyBJ
TlRfU1RSRUFNKDApKTsKKyNsaW5lIDQwICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9IVE9OTExfSU5D
RFNUKQorICAgIHsKKyNsaW5lIDY5ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9odG9ubGxf
aW5jZHN0KGN1cixJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisjbGluZSA0OCAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfSFRPTkZfSU5DRFNUKQorICAgIHsKKyNsaW5lIDc0ICJncGNf
c3BlYy5pbiIKKyAgICAgICAgY29weV9odG9uZl9pbmNkc3QoY3VyLElOVF9TVEFDS19QVFIoMCkg
KyBJTlRfU1RSRUFNKDApKTsKKyNsaW5lIDU2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9IVE9ORF9J
TkNEU1QpCisgICAgeworI2xpbmUgNzkgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X2h0b25k
X2luY2RzdChjdXIsSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworI2xpbmUgNjQg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9DT1BZX0hUT05DSE9JQ0VfVE9fVUk4X0lOQ0RTVCkKKyAgICB7Cisj
bGluZSA4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIC8qIGhlcmUsIHdlJ3JlIHJlYWxseSBqdXN0
IG1hc2tpbmcgb2ZmIHRoZSBoaWdoLW9yZGVyIDI0IGJpdHMuICovCisgICAgICAgIHVpMzJfdG1w
PSooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKTsKKyAgICAg
ICAgaWYgKHVpMzJfdG1wPT1VSU5UMzJfTUFYKSB7CisgICAgICAgICAgICB1aThfdG1wPTI1NTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpOF90bXA9dWkzMl90bXA7CisgICAgICAg
IH0KKyAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyNsaW5lIDc5ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDKQorICAgIHsKKyNsaW5lIDk2
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoJnVpOF90bXAsY3VyKTsK
KyAgICAgICAgKih0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkp
PSh1aThfdG1wIT0wKTsKKyNsaW5lIDg4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19JTkNT
UkMpCisgICAgeworI2xpbmUgMTAyICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19p
bmNzcmMoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCksY3VyKTsKKyNsaW5lIDk2ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19UT19TX1pfSU5DU1JDKQorICAgIHsKKyNsaW5lIDEw
NyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjKCh1aW50OF90KikmdWk4
X3RtcCxjdXIpOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKSk9dWk4X3RtcDsKKyNsaW5lIDEwNSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRP
SENfVE9fU19FX0lOQ1NSQykKKyAgICB7CisjbGluZSAxMTMgImdwY19zcGVjLmluIgorICAgICAg
ICBjb3B5X250b2hjX2luY3NyYygodWludDhfdCopJmk4X3RtcCxjdXIpOworICAgICAgICAqKChp
bnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT1pOF90bXA7CisjbGlu
ZSAxMTQgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hDX1RPX0xfWl9JTkNTUkMpCisgICAgewor
I2xpbmUgMTE5ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoKHVpbnQ4
X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMCkpKT11aThfdG1wOworI2xpbmUgMTIzICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
Q09QWV9OVE9IQ19UT19MX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDEyNSAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjKCh1aW50OF90KikmaThfdG1wLGN1cik7CisgICAg
ICAgICooKGludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPWk4X3Rt
cDsKKyNsaW5lIDEzMiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSENfVE9fTExfWl9JTkNTUkMp
CisgICAgeworI2xpbmUgMTMxICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNz
cmMoKHVpbnQ4X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NU
QUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aThfdG1wOworI2xpbmUgMTQxICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfQ09QWV9OVE9IQ19UT19MTF9FX0lOQ1NSQykKKyAgICB7CisjbGluZSAxMzcgImdw
Y19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygodWludDhfdCopJmk4X3RtcCxj
dXIpOworICAgICAgICAqKChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0o
MCkpKT1pOF90bXA7CisjbGluZSAxNTAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hDX1RPX0Zf
Wl9JTkNTUkMpCisgICAgeworI2xpbmUgMTQzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9u
dG9oY19pbmNzcmMoKHVpbnQ4X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKGZsb2F0Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aThfdG1wOworI2xpbmUgMTU5ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19UT19GX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDE0
OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjKCh1aW50OF90KikmaThf
dG1wLGN1cik7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMCkpKT1pOF90bXA7CisjbGluZSAxNjggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hDX1RP
X0RfWl9JTkNTUkMpCisgICAgeworI2xpbmUgMTU1ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29w
eV9udG9oY19pbmNzcmMoKHVpbnQ4X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKGRvdWJs
ZSopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9dWk4X3RtcDsKKyNsaW5lIDE3
NyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSENfVE9fRF9FX0lOQ1NSQykKKyAgICB7CisjbGlu
ZSAxNjEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygodWludDhfdCop
Jmk4X3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5U
X1NUUkVBTSgwKSkpPWk4X3RtcDsKKyNsaW5lIDE4NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRP
SFNfVE9fQklUX0lOQ1NSQykKKyAgICB7CisjbGluZSAxNjcgImdwY19zcGVjLmluIgorICAgICAg
ICBjb3B5X250b2hzX2luY3NyYygodWludDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAgICoo
dHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKT0odWkxNl90bXAh
PTApOworI2xpbmUgMTk1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURW
QU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IU19UT19DX0lOQ1NSQykK
KyAgICB7CisjbGluZSAxNzMgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hzX2luY3Ny
YygodWludDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3QqKShJTlRfU1RB
Q0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPSh1aW50OF90KXVpMTZfdG1wOworI2xpbmUgMjA0
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IU19JTkNTUkMpCisgICAgeworI2xpbmUgMTc5ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oc19pbmNzcmMoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCksY3VyKTsKKyNsaW5lIDIxMiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRP
SFNfVE9fTF9aX0lOQ1NSQykKKyAgICB7CisjbGluZSAxODQgImdwY19zcGVjLmluIgorICAgICAg
ICBjb3B5X250b2hzX2luY3NyYygodWludDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAgICoo
KHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTE2X3RtcDsK
KyNsaW5lIDIyMSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
MSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSFNfVE9fTF9FX0lOQ1NSQykKKyAg
ICB7CisjbGluZSAxOTAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hzX2luY3NyYygo
dWludDhfdCopJmkxNl90bXAsY3VyKTsKKyAgICAgICAgKigoaW50MzJfdCopKElOVF9TVEFDS19Q
VFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9aTE2X3RtcDsKKyNsaW5lIDIzMCAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfTlRPSFNfVE9fTExfWl9JTkNTUkMpCisgICAgeworI2xpbmUgMTk2ICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgY29weV9udG9oc19pbmNzcmMoKHVpbnQ4X3QqKSZ1aTE2X3RtcCxjdXIp
OworICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDAp
KSk9dWkxNl90bXA7CisjbGluZSAyMzkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hTX1RPX0xM
X0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDIwMiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlf
bnRvaHNfaW5jc3JjKCh1aW50OF90KikmaTE2X3RtcCxjdXIpOworICAgICAgICAqKChpbnQ2NF90
KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT1pMTZfdG1wOworI2xpbmUgMjQ4
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IU19UT19GX1pfSU5DU1JDKQorICAgIHsKKyNsaW5l
IDIwOCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaHNfaW5jc3JjKCh1aW50OF90Kikm
dWkxNl90bXAsY3VyKTsKKyAgICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5U
X1NUUkVBTSgwKSkpPXVpMTZfdG1wOworI2xpbmUgMjU3ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9O
VE9IU19UT19GX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDIxNCAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIGNvcHlfbnRvaHNfaW5jc3JjKCh1aW50OF90KikmaTE2X3RtcCxjdXIpOworICAgICAgICAq
KChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9aTE2X3RtcDsKKyNs
aW5lIDI2NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSFNfVE9fRF9aX0lOQ1NSQykKKyAgICB7
CisjbGluZSAyMjAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hzX2luY3NyYygodWlu
dDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIo
MCkgKyBJTlRfU1RSRUFNKDApKSk9dWkxNl90bXA7CisjbGluZSAyNzUgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX05UT0hTX1RPX0RfRV9JTkNTUkMpCisgICAgeworI2xpbmUgMjI2ICJncGNfc3BlYy5p
biIKKyAgICAgICAgY29weV9udG9oc19pbmNzcmMoKHVpbnQ4X3QqKSZpMTZfdG1wLGN1cik7Cisg
ICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9aTE2
X3RtcDsKKyNsaW5lIDI4NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExfVE9fQklUX0lOQ1NS
QykKKyAgICB7CisjbGluZSAyMzIgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hsX2lu
Y3NyYygodWludDhfdCopJnVpMzJfdG1wLGN1cik7CisgICAgICAgICoodHNmX2Jvb2xfdCopKElO
VF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKT0odWkzMl90bXAhPTApOworI2xpbmUgMjkz
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITF9UT19DX0lOQ1NSQykKKyAgICB7CisjbGluZSAy
MzggImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWludDhfdCopJnVp
MzJfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5U
X1NUUkVBTSgwKSkpPSh1aW50OF90KXVpMzJfdG1wOworI2xpbmUgMzAyICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9OVE9ITF9UT19TX0lOQ1NSQykKKyAgICB7CisjbGluZSAyNDQgImdwY19zcGVjLmlu
IgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWludDhfdCopJnVpMzJfdG1wLGN1cik7Cisg
ICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0o
dWludDE2X3QpdWkzMl90bXA7CisjbGluZSAzMTEgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hM
X0lOQ1NSQykKKyAgICB7CisjbGluZSAyNTAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250
b2hsX2luY3NyYyhJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSxjdXIpOworI2xpbmUg
MzE5ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITF9UT19MTF9aX0lOQ1NSQykKKyAgICB7Cisj
bGluZSAyNTUgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWludDhf
dCopJnVpMzJfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMCkpKT11aTMyX3RtcDsKKyNsaW5lIDMyOCAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkMpCisgICAgeworI2xpbmUgMjYxICJncGNfc3BlYy5p
biIKKyAgICAgICAgY29weV9udG9obF9pbmNzcmMoKHVpbnQ4X3QqKSZpMzJfdG1wLGN1cik7Cisg
ICAgICAgICooKGludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPWkz
Ml90bXA7CisjbGluZSAzMzcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hMX1RPX0ZfWl9JTkNT
UkMpCisgICAgeworI2xpbmUgMjY3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obF9p
bmNzcmMoKHVpbnQ4X3QqKSZ1aTMyX3RtcCxjdXIpOworICAgICAgICAqKChmbG9hdCopKElOVF9T
VEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9dWkzMl90bXA7CisjbGluZSAzNDYgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9DT1BZX05UT0hMX1RPX0ZfRV9JTkNTUkMpCisgICAgeworI2xpbmUgMjczICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obF9pbmNzcmMoKHVpbnQ4X3QqKSZpMzJfdG1w
LGN1cik7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0o
MCkpKT1pMzJfdG1wOworI2xpbmUgMzU1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITF9UT19E
X1pfSU5DU1JDKQorICAgIHsKKyNsaW5lIDI3OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlf
bnRvaGxfaW5jc3JjKCh1aW50OF90KikmdWkzMl90bXAsY3VyKTsKKyAgICAgICAgKigoZG91Ymxl
KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTMyX3RtcDsKKyNsaW5lIDM2
NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExfVE9fRF9FX0lOQ1NSQykKKyAgICB7CisjbGlu
ZSAyODUgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWludDhfdCop
JmkzMl90bXAsY3VyKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpKT1pMzJfdG1wOworI2xpbmUgMzczICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9O
VE9ITExfVE9fQklUX0lOQ1NSQykKKyAgICB7CisjbGluZSAyOTEgImdwY19zcGVjLmluIgorICAg
ICAgICBjb3B5X250b2hsbF9pbmNzcmMoKHVpbnQ4X3QqKSZ1aTY0X3RtcCxjdXIpOworICAgICAg
ICAqKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk9KHVpNjRf
dG1wIT0wKTsKKyNsaW5lIDM4MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0NfSU5D
U1JDKQorICAgIHsKKyNsaW5lIDI5NyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGxs
X2luY3NyYygodWludDhfdCopJnVpNjRfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPSh1aW50OF90KXVpNjRfdG1wOworI2xp
bmUgMzkxICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITExfVE9fU19JTkNTUkMpCisgICAgewor
I2xpbmUgMzAzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obGxfaW5jc3JjKCh1aW50
OF90KikmdWk2NF90bXAsY3VyKTsKKyAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRS
KDApICsgSU5UX1NUUkVBTSgwKSkpPSh1aW50MTZfdCl1aTY0X3RtcDsKKyNsaW5lIDQwMCAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0xfSU5DU1JDKQorICAgIHsKKyNsaW5lIDMwOSAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGxsX2luY3NyYygodWludDhfdCopJnVpNjRf
dG1wLGN1cik7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMCkpKT0odWludDMyX3QpdWk2NF90bXA7CisjbGluZSA0MDkgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX05UT0hMTF9JTkNTUkMpCisgICAgeworI2xpbmUgMzE1ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgY29weV9udG9obGxfaW5jc3JjKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDAp
LGN1cik7CisjbGluZSA0MTcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hMTF9UT19GX1pfSU5D
U1JDKQorICAgIHsKKyNsaW5lIDMyMCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGxs
X2luY3NyYygodWludDhfdCopJnVpNjRfdG1wLGN1cik7CisgICAgICAgICooKGZsb2F0KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTY0X3RtcDsKKyNsaW5lIDQyNiAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0ZfRV9JTkNTUkMpCisgICAgeworI2xpbmUgMzI2
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obGxfaW5jc3JjKCh1aW50OF90KikmaTY0
X3RtcCxjdXIpOworICAgICAgICAqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RS
RUFNKDApKSk9aTY0X3RtcDsKKyNsaW5lIDQzNSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9
CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExM
X1RPX0RfWl9JTkNTUkMpCisgICAgeworI2xpbmUgMzMyICJncGNfc3BlYy5pbiIKKyAgICAgICAg
Y29weV9udG9obGxfaW5jc3JjKCh1aW50OF90KikmdWk2NF90bXAsY3VyKTsKKyAgICAgICAgKigo
ZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTY0X3RtcDsKKyNs
aW5lIDQ0NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0RfRV9JTkNTUkMpCisgICAg
eworI2xpbmUgMzM4ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obGxfaW5jc3JjKCh1
aW50OF90KikmaTY0X3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRS
KDApICsgSU5UX1NUUkVBTSgwKSkpPWk2NF90bXA7CisjbGluZSA0NTMgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX05UT0hGX1RPX0JJVF9JTkNTUkMpCisgICAgeworI2xpbmUgMzQ0ICJncGNfc3BlYy5p
biIKKyAgICAgICAgY29weV9udG9oZl9pbmNzcmMoKHVpbnQ4X3QqKSZmX3RtcCxjdXIpOworICAg
ICAgICAqKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk9KGZf
dG1wIT0wKTsKKyNsaW5lIDQ2MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSEZfVE9fQ19aX0lO
Q1NSQykKKyAgICB7CisjbGluZSAzNTAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hm
X2luY3NyYygodWludDhfdCopJmZfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3QqKShJTlRf
U1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUgNDcx
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRl9UT19DX0VfSU5DU1JDKQorICAgIHsKKyNsaW5l
IDM1NiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjKCh1aW50OF90Kikm
Zl90bXAsY3VyKTsKKyAgICAgICAgKigoaW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMCkpKT0oaW50NjRfdClmX3RtcDsKKyNsaW5lIDQ4MCAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NP
UFlfTlRPSEZfVE9fU19aX0lOQ1NSQykKKyAgICB7CisjbGluZSAzNjIgImdwY19zcGVjLmluIgor
ICAgICAgICBjb3B5X250b2hmX2luY3NyYygodWludDhfdCopJmZfdG1wLGN1cik7CisgICAgICAg
ICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRf
dClmX3RtcDsKKyNsaW5lIDQ4OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSEZfVE9fU19FX0lO
Q1NSQykKKyAgICB7CisjbGluZSAzNjggImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hm
X2luY3NyYygodWludDhfdCopJmZfdG1wLGN1cik7CisgICAgICAgICooKGludDE2X3QqKShJTlRf
U1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUgNDk4
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRl9UT19MX1pfSU5DU1JDKQorICAgIHsKKyNsaW5l
IDM3NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjKCh1aW50OF90Kikm
Zl90bXAsY3VyKTsKKyAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5U
X1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUgNTA3ICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
Q09QWV9OVE9IRl9UT19MX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDM4MCAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjKCh1aW50OF90KikmZl90bXAsY3VyKTsKKyAgICAg
ICAgKigoaW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9KGludDY0
X3QpZl90bXA7CisjbGluZSA1MTYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hGX1RPX0xMX1pf
SU5DU1JDKQorICAgIHsKKyNsaW5lIDM4NiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRv
aGZfaW5jc3JjKCh1aW50OF90KikmZl90bXAsY3VyKTsKKyAgICAgICAgKigodWludDY0X3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUg
NTI1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRl9UT19MTF9FX0lOQ1NSQykKKyAgICB7Cisj
bGluZSAzOTIgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hmX2luY3NyYygodWludDhf
dCopJmZfdG1wLGN1cik7CisgICAgICAgICooKGludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUgNTM0ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9OVE9IRl9JTkNTUkMpCisgICAgeworI2xpbmUgMzk4ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgY29weV9udG9oZl9pbmNzcmMoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCks
Y3VyKTsKKyNsaW5lIDU0MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSEZfVE9fRF9JTkNTUkMp
CisgICAgeworI2xpbmUgNDAzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oZl9pbmNz
cmMoKHVpbnQ4X3QqKSZmX3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RBQ0tf
UFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPWZfdG1wOworI2xpbmUgNTUxICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9OVE9IRF9UT19CSVRfSU5DU1JDKQorICAgIHsKKyNsaW5lIDQwOSAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIGNvcHlfbnRvaGRfaW5jc3JjKCh1aW50OF90KikmZF90bXAsY3VyKTsKKyAg
ICAgICAgKih0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpPShk
X3RtcCE9MCk7CisjbGluZSA1NjAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hEX1RPX0NfWl9J
TkNTUkMpCisgICAgeworI2xpbmUgNDE1ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9o
ZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOworICAgICAgICAqKCh1aW50OF90KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5lIDU2
OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSERfVE9fQ19FX0lOQ1NSQykKKyAgICB7CisjbGlu
ZSA0MjEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hkX2luY3NyYygodWludDhfdCop
JmRfdG1wLGN1cik7CisgICAgICAgICooKGludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKSk9KGludDY0X3QpZF90bXA7CisjbGluZSA1NzggImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9D
T1BZX05UT0hEX1RPX1NfWl9JTkNTUkMpCisgICAgeworI2xpbmUgNDI3ICJncGNfc3BlYy5pbiIK
KyAgICAgICAgY29weV9udG9oZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOworICAgICAg
ICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9KGludDY0
X3QpZF90bXA7CisjbGluZSA1ODcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hEX1RPX1NfRV9J
TkNTUkMpCisgICAgeworI2xpbmUgNDMzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9o
ZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOworICAgICAgICAqKChpbnQxNl90KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5lIDU5
NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSERfVE9fTF9aX0lOQ1NSQykKKyAgICB7CisjbGlu
ZSA0MzkgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hkX2luY3NyYygodWludDhfdCop
JmRfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5lIDYwNSAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X0NPUFlfTlRPSERfVE9fTF9FX0lOQ1NSQykKKyAgICB7CisjbGluZSA0NDUgImdwY19zcGVjLmlu
IgorICAgICAgICBjb3B5X250b2hkX2luY3NyYygodWludDhfdCopJmRfdG1wLGN1cik7CisgICAg
ICAgICooKGludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2
NF90KWRfdG1wOworI2xpbmUgNjE0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRF9UT19MTF9a
X0lOQ1NSQykKKyAgICB7CisjbGluZSA0NTEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250
b2hkX2luY3NyYygodWludDhfdCopJmRfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ2NF90Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5l
IDYyMyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSERfVE9fTExfRV9JTkNTUkMpCisgICAgewor
I2xpbmUgNDU3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oZF9pbmNzcmMoKHVpbnQ4
X3QqKSZkX3RtcCxjdXIpOworICAgICAgICAqKChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5lIDYzMiAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfTlRPSERfVE9fRl9JTkNTUkMpCisgICAgeworI2xpbmUgNDYzICJncGNfc3BlYy5p
biIKKyAgICAgICAgY29weV9udG9oZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOworICAg
ICAgICAqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9ZF90bXA7
CisjbGluZSA2NDEgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNF
KDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hEX0lOQ1NSQykKKyAgICB7Cisj
bGluZSA0NjkgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hkX2luY3NyYyhJTlRfU1RB
Q0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSxjdXIpOworI2xpbmUgNjQ5ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9CSVQpCisgICAgeworI2xpbmUgNDc0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWlu
dHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNf
b2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tf
UFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigodHNmX2Jvb2xfdCopKElO
VF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xpbmUgNjYwICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQ09QWV9CSVRfVE9fUykKKyAgICB7CisjbGluZSA0ODIgImdwY19zcGVjLmluIgorICAg
ICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0
cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWludDE2X3QqKShJTlRf
U1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigodHNmX2Jvb2xf
dCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xpbmUgNjcxICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfQ09QWV9CSVRfVE9fTCkKKyAgICB7CisjbGluZSA0OTAgImdwY19zcGVjLmlu
IgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAg
dWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWludDMyX3Qq
KShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigodHNm
X2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xpbmUgNjgy
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9CSVRfVE9fTEwpCisgICAgeworI2xpbmUgNDk4ICJncGNf
c3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7Cisg
ICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVp
bnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAg
KCooKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpIT0wKTsKKyNs
aW5lIDY5MyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUX1RPX0YpCisgICAgeworI2xpbmUgNTA2
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAg
ICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAg
ICAgKCooKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpIT0wKTsK
KyNsaW5lIDcwNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
Mik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUX1RPX0QpCisgICAgeworI2xpbmUg
NTE0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJF
QU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAg
ICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAg
ICAgICAgICgqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKSE9
MCk7CisjbGluZSA3MTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZB
TkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0MpCisgICAgeworI2xpbmUgNTIy
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAg
ICooKHVpbnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAg
ICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5l
IDcyNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQ19UT19TX1opCisgICAgeworI2xpbmUgNTMwICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICoo
KHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAg
ICAgKigodWludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSA3
MzcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0NfVE9fU19FKQorICAgIHsKKyNsaW5lIDUzOCAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOwor
ICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKChp
bnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAg
KigoaW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDc0OCAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfQ19UT19MX1opCisgICAgeworI2xpbmUgNTQ2ICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAg
ICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVpbnQz
Ml90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigo
dWludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSA3NTkgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9DT1BZX0NfVE9fTF9FKQorICAgIHsKKyNsaW5lIDU1NCAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAg
ICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKChpbnQzMl90
KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50
OF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDc3MCAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX0NPUFlfQ19UT19MTF9aKQorICAgIHsKKyNsaW5lIDU2MiAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1
aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50NjRfdCop
KElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ4
X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgNzgxICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfQ09QWV9DX1RPX0xMX0UpCisgICAgeworI2xpbmUgNTcwICJncGNfc3BlYy5pbiIK
KyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVp
bnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGludDY0X3QqKShJ
TlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKChpbnQ4X3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgNzkyICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQ09QWV9DX1RPX0ZfWikKKyAgICB7CisjbGluZSA1NzggImdwY19zcGVjLmluIgorICAg
ICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0
cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZmxvYXQqKShJTlRfU1RB
Q0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKCh1aW50OF90KikoSU5U
X1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDgwMyAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X0NPUFlfQ19UT19GX0UpCisgICAgeworI2xpbmUgNTg2ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
dWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBz
cmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BU
UigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50OF90KikoSU5UX1NUQUNL
X1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDgxNCAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
Q19UT19EX1opCisgICAgeworI2xpbmUgNTk0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0
cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zm
c2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkg
KyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ4X3QqKShJTlRfU1RBQ0tfUFRS
KDApICsgc3JjX29mZnNldCkpOworI2xpbmUgODI1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9DX1RP
X0RfRSkKKyAgICB7CisjbGluZSA2MDIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3Qg
ZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9
SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigxKSArIGRl
c3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50OF90KikoSU5UX1NUQUNLX1BUUigwKSAr
IHNyY19vZmZzZXQpKTsKKyNsaW5lIDgzNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9Cisg
ICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19CSVQp
CisgICAgeworI2xpbmUgNjEwICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rf
b2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9T
VFJFQU0oMSk7CisgICAgICAgICooKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVz
dF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgc3JjX29mZnNldCkpIT0wKTsKKyNsaW5lIDg0NyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19U
T19DKQorICAgIHsKKyNsaW5lIDYxOCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBk
ZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1J
TlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRl
c3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgc3JjX29mZnNldCkpOworI2xpbmUgODU4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TKQorICAg
IHsKKyNsaW5lIDYyNiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNl
dD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFN
KDEpOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNl
dCkpID0KKyAgICAgICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19v
ZmZzZXQpKTsKKyNsaW5lIDg2OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19MX1opCisgICAg
eworI2xpbmUgNjM0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0
PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0o
MSk7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0
KSkgPQorICAgICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29m
ZnNldCkpOworI2xpbmUgODgwICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0xfRSkKKyAgICB7
CisjbGluZSA2NDIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9
SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgx
KTsKKyAgICAgICAgKigoaW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkp
ID0KKyAgICAgICAgICAgICooKGludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNl
dCkpOworI2xpbmUgODkxICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURW
QU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0xMX1opCisgICAgewor
I2xpbmUgNjUwICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlO
VF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7
CisgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkg
PQorICAgICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNl
dCkpOworI2xpbmUgOTAyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURW
QU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0xMX0UpCisgICAgewor
I2xpbmUgNjU4ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlO
VF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7
CisgICAgICAgICooKGludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9
CisgICAgICAgICAgICAqKChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQp
KTsKKyNsaW5lIDkxMyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19GX1opCisgICAgeworI2xp
bmUgNjY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9T
VFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7Cisg
ICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAg
ICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOwor
I2xpbmUgOTI0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgy
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0ZfRSkKKyAgICB7CisjbGluZSA2
NzQgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVB
TSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAg
ICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAg
ICAgICAqKChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5l
IDkzNSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19EX1opCisgICAgeworI2xpbmUgNjgyICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICoo
KGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAg
ICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDk0
NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19EX0UpCisgICAgeworI2xpbmUgNjkwICJncGNf
c3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7Cisg
ICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRv
dWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICoo
KGludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgOTU3ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQ09QWV9MX1RPX0JJVCkKKyAgICB7CisjbGluZSA2OTggImdwY19zcGVj
LmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAg
ICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodHNmX2Jv
b2xfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICgq
KCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xpbmUg
OTY4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9MX1RPX0MpCisgICAgeworI2xpbmUgNzA2ICJncGNf
c3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7Cisg
ICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVp
bnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAq
KCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSA5Nzkg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9DT1BZX0xfVE9fUykKKyAgICB7CisjbGluZSA3MTQgImdwY19zcGVj
LmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAg
ICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWludDE2
X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKCh1
aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSA5OTAgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9DT1BZX0wpCisgICAgeworI2xpbmUgNzIyICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRw
dHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVpbnQzMl90KikoSU5U
X1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDMyX3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTAwMSAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX0NPUFlfTF9UT19MTF9aKQorICAgIHsKKyNsaW5lIDczMCAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50
cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50NjRfdCopKElO
VF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQzMl90
KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEwMTIgImdwY19pbnRl
cnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRf
QkVHSU4oSV9DT1BZX0xfVE9fTExfRSkKKyAgICB7CisjbGluZSA3MzggImdwY19zcGVjLmluIgor
ICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWlu
dHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoaW50NjRfdCopKElO
VF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKGludDMyX3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTAyMyAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX0NPUFlfTF9UT19GX1opCisgICAgeworI2xpbmUgNzQ2ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRw
dHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NU
QUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDMyX3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTAzNCAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfTF9UT19GX0UpCisgICAgeworI2xpbmUgNzU0ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJf
dCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNL
X1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50MzJfdCopKElOVF9T
VEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMDQ1ICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
Q09QWV9MX1RPX0RfWikKKyAgICB7CisjbGluZSA3NjIgImdwY19zcGVjLmluIgorICAgICAgICB1
aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNy
Y19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BU
UigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RB
Q0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTA1NiAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NP
UFlfTF9UT19EX0UpCisgICAgeworI2xpbmUgNzcwICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWlu
dHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNf
b2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIo
MSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKGludDMyX3QqKShJTlRfU1RBQ0tf
UFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTA2NyAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
TExfVE9fQklUKQorICAgIHsKKyNsaW5lIDc3OCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRw
dHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29m
ZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BU
UigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKCooKHVpbnQ2NF90KikoSU5UX1NU
QUNLX1BUUigwKSArIHNyY19vZmZzZXQpKSE9MCk7CisjbGluZSAxMDc4ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9MTF9UT19DKQorICAgIHsKKyNsaW5lIDc4NiAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qg
c3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNL
X1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDY0X3QqKShJTlRf
U1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTA4OSAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X0NPUFlfTExfVE9fUykKKyAgICB7CisjbGluZSA3OTQgImdwY19zcGVjLmluIgorICAgICAgICB1
aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNy
Y19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tf
UFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKCh1aW50NjRfdCopKElOVF9T
VEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMTAwICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
Q09QWV9MTF9UT19MKQorICAgIHsKKyNsaW5lIDgwMiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVp
bnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3Jj
X29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19Q
VFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NU
QUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDExMTEgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9D
T1BZX0xMKQorICAgIHsKKyNsaW5lIDgxMCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJf
dCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNl
dD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19QVFIoMSkg
KyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BU
UigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDExMjIgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0xM
X1RPX0ZfWikKKyAgICB7CisjbGluZSA4MTggImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRy
X3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZz
ZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDEpICsg
ZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19QVFIo
MCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMTMzICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9MTF9U
T19GX0UpCisgICAgeworI2xpbmUgODI2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90
IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0
PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigxKSArIGRl
c3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50NjRfdCopKElOVF9TVEFDS19QVFIoMCkg
KyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMTQ0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9MTF9UT19E
X1opCisgICAgeworI2xpbmUgODM0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRl
c3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlO
VF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0
X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSAr
IHNyY19vZmZzZXQpKTsKKyNsaW5lIDExNTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0xMX1RPX0Rf
RSkKKyAgICB7CisjbGluZSA4NDIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVz
dF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5U
X1NUUkVBTSgxKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rf
b2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50NjRfdCopKElOVF9TVEFDS19QVFIoMCkgKyBz
cmNfb2Zmc2V0KSk7CisjbGluZSAxMTY2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9GX1RPX0JJVCkK
KyAgICB7CisjbGluZSA4NTAgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9v
ZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NU
UkVBTSgxKTsKKyAgICAgICAgKigodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0
X29mZnNldCkpID0KKyAgICAgICAgICAgICgqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBz
cmNfb2Zmc2V0KSkhPTAuKTsKKyNsaW5lIDExNzcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0ZfVE9f
Q19aKQorICAgIHsKKyNsaW5lIDg1OCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBk
ZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1J
TlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRl
c3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigoZmxvYXQqKShJTlRfU1RBQ0tf
UFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTE4OCAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
Rl9UT19DX0UpCisgICAgeworI2xpbmUgODY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0
cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zm
c2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGludDhfdCopKElOVF9TVEFDS19QVFIoMSkg
KyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGZsb2F0KikoSU5UX1NU
QUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDExOTkgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9D
T1BZX0ZfVE9fU19aKQorICAgIHsKKyNsaW5lIDg3NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVp
bnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3Jj
X29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19Q
VFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGZsb2F0Kiko
SU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEyMTAgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVH
SU4oSV9DT1BZX0ZfVE9fU19FKQorICAgIHsKKyNsaW5lIDg4MiAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRy
X3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKChpbnQxNl90KikoSU5UX1NU
QUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigoZmxv
YXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTIyMSAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX0NPUFlfRl9UT19MX1opCisgICAgeworI2xpbmUgODkwICJncGNfc3BlYy5pbiIK
KyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVp
bnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVpbnQzMl90Kiko
SU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3Qp
KigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTIzMiAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfRl9UT19MX0UpCisgICAgeworI2xpbmUgODk4ICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAg
ICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGludDMy
X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoaW50
NjRfdCkqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAx
MjQzICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9GX1RPX0xMX1opCisgICAgeworI2xpbmUgOTA2ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICoo
KHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAg
ICAgKGludDY0X3QpKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOwor
I2xpbmUgMTI1NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
Mik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRl9UT19MTF9FKQorICAgIHsKKyNsaW5l
IDkxNCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RS
RUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAg
ICAgICAqKChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAg
ICAgICAgICAgKGludDY0X3QpKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNl
dCkpOworI2xpbmUgMTI2NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRikKKyAgICB7CisjbGluZSA5
MjIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVB
TSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAg
ICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAg
ICAgICAqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAx
Mjc2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9GX1RPX0QpCisgICAgeworI2xpbmUgOTMwICJncGNf
c3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7Cisg
ICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRv
dWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICoo
KGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEyODcgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fQklUKQorICAgIHsKKyNsaW5lIDkzOCAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAg
ICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh0c2ZfYm9v
bF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKCoo
KGRvdWJsZSopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTAuKTsKKyNsaW5lIDEy
OTggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fQ19aKQorICAgIHsKKyNsaW5lIDk0NiAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOwor
ICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1
aW50OF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAg
KGludDY0X3QpKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNs
aW5lIDEzMDkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIp
OworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fQ19FKQorICAgIHsKKyNsaW5lIDk1
NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFN
KDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAg
ICAqKChpbnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAg
ICAgICAoaW50NjRfdCkqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkp
OworI2xpbmUgMTMyMCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRF9UT19TX1opCisgICAgeworI2xp
bmUgOTYyICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9T
VFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7Cisg
ICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQor
ICAgICAgICAgICAgKGludDY0X3QpKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19v
ZmZzZXQpKTsKKyNsaW5lIDEzMzEgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fU19FKQorICAg
IHsKKyNsaW5lIDk3MCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNl
dD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFN
KDEpOworICAgICAgICAqKChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0
KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSAr
IHNyY19vZmZzZXQpKTsKKyNsaW5lIDEzNDIgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fTF9a
KQorICAgIHsKKyNsaW5lIDk3OCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0
X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRf
U1RSRUFNKDEpOworICAgICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0
X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGRvdWJsZSopKElOVF9TVEFDS19Q
VFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMzUzICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9E
X1RPX0xfRSkKKyAgICB7CisjbGluZSA5ODYgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRy
X3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZz
ZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoaW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkg
KyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGRvdWJsZSopKElOVF9T
VEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMzY0ICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
Q09QWV9EX1RPX0xMX1opCisgICAgeworI2xpbmUgOTk0ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
dWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBz
cmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNL
X1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigoZG91Ymxl
KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEzNzUgImdwY19pbnRl
cnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRf
QkVHSU4oSV9DT1BZX0RfVE9fTExfRSkKKyAgICB7CisjbGluZSAxMDAyICJncGNfc3BlYy5pbiIK
KyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVp
bnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGludDY0X3QqKShJ
TlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoaW50NjRfdCkq
KChkb3VibGUqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTM4NiAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfRF9UT19GKQorICAgIHsKKyNsaW5lIDEwMTAgImdwY19zcGVj
LmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAg
ICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZmxvYXQq
KShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKChkb3Vi
bGUqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTM5NyAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX0NPUFlfRCkKKyAgICB7CisjbGluZSAxMDE4ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJf
dCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFD
S19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKGRvdWJsZSopKElOVF9T
VEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxNDA4ICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
U0VUX0MpCisgICAgeworI2xpbmUgMTAyNiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90
IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNLX1BU
UigwKSArIG9mZnNldCkpPUlOVF9TVFJFQU0oMSk7CisjbGluZSAxNDE3ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfU0VUX1MpCisgICAgeworI2xpbmUgMTAzMiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQz
Ml90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFD
S19QVFIoMCkgKyBvZmZzZXQpKT1JTlRfU1RSRUFNKDEpOworI2xpbmUgMTQyNiAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX1NFVF9MKQorICAgIHsKKyNsaW5lIDEwMzggImdwY19zcGVjLmluIgorICAgICAgICB1
aW50MzJfdCBvZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgKigodWludDMyX3QqKShJTlRf
U1RBQ0tfUFRSKDApICsgb2Zmc2V0KSk9SU5UX1NUUkVBTSgxKTsKKyNsaW5lIDE0MzUgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9TRVRfMk5EX0MpCisgICAgeworI2xpbmUgMTA0NCAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHVpbnQzMl90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICAqKCh1aW50OF90
KikoSU5UX1NUQUNLX1BUUigxKSArIG9mZnNldCkpPUlOVF9TVFJFQU0oMSk7CisjbGluZSAxNDQ0
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfU0VUXzJORF9TKQorICAgIHsKKyNsaW5lIDEwNTAgImdwY19zcGVj
LmluIgorICAgICAgICB1aW50MzJfdCBvZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgKigo
dWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgb2Zmc2V0KSk9SU5UX1NUUkVBTSgxKTsKKyNs
aW5lIDE0NTMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIp
OworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9TRVRfMk5EX0wpCisgICAgeworI2xpbmUgMTA1NiAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAg
ICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBvZmZzZXQpKT1JTlRfU1RSRUFN
KDEpOworI2xpbmUgMTQ2MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEKQorICAgIHsK
KyNsaW5lIDEwNjIgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90
ICpiaXR2ZWN0b3I9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCopKElOVF9T
VEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgCisgICAgICAgIHVpbnQzMl90
IHNpemU7CisgICAgICAgIAorICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCwg
Y3VyLCBlbmQsIGJvdW5kc19lcnJvcik7CisgICAgICAgIGlmICh1aThfdG1wID09IDI1NSkgewor
ICAgICAgICAgICAgY29weV9udG9obF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZiaXR2ZWN0b3ItPm51
bV9iaXRzLCBjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQsIGJvdW5k
c19lcnJvcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBiaXR2ZWN0b3ItPm51bV9i
aXRzID0gdWk4X3RtcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2l6ZSA9ICgoYml0
dmVjdG9yLT5udW1fYml0cyArIDcpID4+IDMpOworICAgICAgICAKKyAgICAgICAgaWYgKGN1ciAr
IHNpemUgPiBlbmQpIHsKKyAgICAgICAgICAgIGdvdG8gYm91bmRzX2Vycm9yOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBiaXR2ZWN0b3ItPmJpdHMgPSB0c2ZfY29uZF9hbGxvYyhyZWdp
b24sIHNpemUpOworICAgICAgICBpZiAoYml0dmVjdG9yLT5iaXRzID09IE5VTEwpIHsKKyAgICAg
ICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7CisgICAg
ICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtZW1j
cHkoYml0dmVjdG9yLT5iaXRzLCBjdXIsIHNpemUpOworICAgICAgICBjdXIgKz0gc2l6ZTsKKyNs
aW5lIDE0OTYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEp
OworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfUkVBRF9UT19DKQorICAgIHsKKyNs
aW5lIDEwOTMgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX3VpbnQ4X2FycmF5X3Qg
KmFycmF5PQorICAgICAgICAgICAgKHRzZl9uYXRpdmVfdWludDhfYXJyYXlfdCopKElOVF9TVEFD
S19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgZ3BjX3JlYWRfYml0dmVjdG9yX3Rv
X2FycmF5KDEpCisjbGluZSAxNTA2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURfVE9f
UykKKyAgICB7CisjbGluZSAxMTAwICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV91
aW50MTZfYXJyYXlfdCAqYXJyYXk9CisgICAgICAgICAgICAodHNmX25hdGl2ZV91aW50MTZfYXJy
YXlfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgZ3BjX3Jl
YWRfYml0dmVjdG9yX3RvX2FycmF5KDIpCisjbGluZSAxNTE2ICJncGNfaW50ZXJwcmV0ZXIuZ2Vu
IgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklU
VkVDVE9SX1JFQURfVE9fTCkKKyAgICB7CisjbGluZSAxMTA3ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdHNmX25hdGl2ZV91aW50MzJfYXJyYXlfdCAqYXJyYXk9CisgICAgICAgICAgICAodHNmX25h
dGl2ZV91aW50MzJfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsK
KyAgICAgICAgZ3BjX3JlYWRfYml0dmVjdG9yX3RvX2FycmF5KDQpCisjbGluZSAxNTI2ICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURfVE9fTEwpCisgICAgeworI2xpbmUgMTExNCAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfdWludDY0X2FycmF5X3QgKmFycmF5PQorICAg
ICAgICAgICAgKHRzZl9uYXRpdmVfdWludDY0X2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSk7CisgICAgICAgIGdwY19yZWFkX2JpdHZlY3Rvcl90b19hcnJheSg4KQor
I2xpbmUgMTUzNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
MSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX1RPX0YpCisgICAgewor
I2xpbmUgMTEyMSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfZmxvYXRfYXJyYXlf
dCAqYXJyYXk9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9mbG9hdF9hcnJheV90KikoSU5UX1NU
QUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBncGNfcmVhZF9iaXR2ZWN0b3Jf
dG9fYXJyYXkoNCkKKyNsaW5lIDE1NDYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfUkVBRF9U
T19EKQorICAgIHsKKyNsaW5lIDExMjggImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZl
X2RvdWJsZV9hcnJheV90ICphcnJheT0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2RvdWJsZV9h
cnJheV90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBncGNf
cmVhZF9iaXR2ZWN0b3JfdG9fYXJyYXkoOCkKKyNsaW5lIDE1NTYgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9C
SVRWRUNUT1JfUkVBRF9GUk9NX0MpCisgICAgeworI2xpbmUgMTEzNSAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAgICh0
c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkp
OworICAgICAgICBncGNfcmVhZF9hcnJheV90b19iaXR2ZWN0b3IoYyx1aThfdG1wLDEpCisjbGlu
ZSAxNTY2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURfRlJPTV9TKQorICAgIHsKKyNs
aW5lIDExNDIgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90ICpi
aXR2ZWN0b3I9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCopKElOVF9TVEFD
S19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgZ3BjX3JlYWRfYXJyYXlfdG9fYml0
dmVjdG9yKHMsdWkxNl90bXAsMikKKyNsaW5lIDE1NzYgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNU
T1JfUkVBRF9GUk9NX0wpCisgICAgeworI2xpbmUgMTE0OSAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAgICh0c2ZfbmF0
aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAg
ICAgICBncGNfcmVhZF9hcnJheV90b19iaXR2ZWN0b3IobCx1aTMyX3RtcCw0KQorI2xpbmUgMTU4
NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX0ZST01fTEwpCisgICAgeworI2xpbmUg
MTE1NiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZl
Y3Rvcj0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BU
UigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBncGNfcmVhZF9hcnJheV90b19iaXR2ZWN0
b3IobGwsdWk2NF90bXAsOCkKKyNsaW5lIDE1OTYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1Jf
UkVBRF9GUk9NX0YpCisgICAgeworI2xpbmUgMTE2MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRz
Zl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZl
X2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAg
ICBncGNfcmVhZF9hcnJheV90b19iaXR2ZWN0b3IoZixmX3RtcCw0KQorI2xpbmUgMTYwNiAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX0ZST01fRCkKKyAgICB7CisjbGluZSAxMTcwICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqYml0dmVjdG9yPQor
ICAgICAgICAgICAgKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSk7CisgICAgICAgIGdwY19yZWFkX2FycmF5X3RvX2JpdHZlY3RvcihkLGRf
dG1wLDEpCisjbGluZSAxNjE2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURfRlJPTV9U
U0ZfSU5URUdFUl9BUlJBWSkKKyAgICB7CisjbGluZSAxMTc3ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqYml0dmVjdG9yPQorICAgICAgICAgICAgKHRzZl9u
YXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7Cisg
ICAgICAgIGdwY19yZWFkX2ludGVnZXJfYXJyYXlfdG9fYml0dmVjdG9yKGludGVnZXIpICAgIAor
I2xpbmUgMTYyNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
MSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX0ZST01fVFNGX0xPTkdf
QVJSQVkpCisgICAgeworI2xpbmUgMTE4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRp
dmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZl
Y3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBncGNf
cmVhZF9pbnRlZ2VyX2FycmF5X3RvX2JpdHZlY3Rvcihsb25nKSAgICAKKyNsaW5lIDE2MzYgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfV1JJVEUpCisgICAgeworI2xpbmUgMTE5MSAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAg
ICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMCkpOworICAgICAgICAKKyAgICAgICAgdWludDMyX3Qgc2l6ZTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChiaXR2ZWN0b3ItPm51bV9iaXRzPj0yNTUpIHsKKyAgICAgICAgICAgIHVpOF90
bXA9MjU1OworICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyAg
ICAgICAgICAgIGNvcHlfaHRvbmxfaW5jZHN0KGN1ciwodWludDhfdCopJmJpdHZlY3Rvci0+bnVt
X2JpdHMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdWk4X3RtcD1iaXR2ZWN0b3It
Pm51bV9iaXRzOworICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2l6ZT0oKGJpdHZlY3Rvci0+bnVtX2JpdHMr
Nyk+PjMpOworICAgICAgICBtZW1jcHkoY3VyLGJpdHZlY3Rvci0+Yml0cyxzaXplKTsKKyAgICAg
ICAgY3VyKz1zaXplOworI2xpbmUgMTY2MCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9Cisg
ICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JZVEVfQVJSQVlfUkVB
RCkKKyAgICB7CisjbGluZSAxMjEyICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9h
cnJheV90ICphcnJheT0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2FycmF5X3QqKShJTlRfU1RB
Q0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIAorICAgICAgICB1aW50MzJfdCBz
aXplOworICAgICAgICAKKyAgICAgICAgY29weV9udG9oY19pbmNzcmNfYmMoJnVpOF90bXAsY3Vy
LGVuZCxib3VuZHNfZXJyb3IpOworICAgICAgICBpZiAodWk4X3RtcD09MjU1KSB7CisgICAgICAg
ICAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhfdCopJmFycmF5LT5sZW4sY3VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLGJvdW5kc19lcnJvcik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBhcnJheS0+bGVuID0gdWk4X3RtcDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgc2l6ZT1hcnJheS0+bGVuKklOVF9TVFJFQU0oMSk7CisgICAgICAg
IAorICAgICAgICBpZiAoY3VyICsgc2l6ZSA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3Vu
ZHNfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGFycmF5LT5kYXRhPXRzZl9j
b25kX2FsbG9jKHJlZ2lvbixzaXplKTsKKyAgICAgICAgaWYgKGFycmF5LT5kYXRhPT1OVUxMKSB7
CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2NvbmRfYWxsb2MoKSIp
OworICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgbWVtY3B5KGFycmF5LT5kYXRhLGN1cixzaXplKTsKKyAgICAgICAgY3VyKz1zaXplOworI2xp
bmUgMTY5NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JZVEVfQVJSQVlfV1JJVEUpCisgICAgeworI2xpbmUg
MTI0MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfYXJyYXlfdCAqYXJyYXk9Cisg
ICAgICAgICAgICAodHNmX25hdGl2ZV9hcnJheV90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMCkpOworICAgICAgICAKKyAgICAgICAgdWludDMyX3Qgc2l6ZTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChhcnJheS0+bGVuPj0yNTUpIHsKKyAgICAgICAgICAgIHVpOF90bXA9MjU1Owor
ICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyAgICAgICAgICAg
IGNvcHlfaHRvbmxfaW5jZHN0KGN1ciwodWludDhfdCopJmFycmF5LT5sZW4pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdWk4X3RtcD1hcnJheS0+bGVuOworICAgICAgICAgICAgY29w
eV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgc2l6ZT1hcnJheS0+bGVuKklOVF9TVFJFQU0oMSk7CisgICAgICAgIAorICAgICAgICBtZW1j
cHkoY3VyLGFycmF5LT5kYXRhLHNpemUpOworICAgICAgICBjdXIrPXNpemU7CisjbGluZSAxNzE5
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfVFNGX0lOVEVHRVJfU0tJUCkKKyAgICB7CisjbGluZSAxMjY1ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludDhfdCAqbmV3X2N1ciA9IGN1ciArIHNpemVfb2ZfZW5j
b2RlZF90c2ZfaW50ZWdlcigqY3VyKTsKKyAgICAgICAgaWYgKG5ld19jdXIgPiBlbmQpIHsKKyAg
ICAgICAgICAgIGdvdG8gYm91bmRzX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGN1ciA9IG5l
d19jdXI7CisjbGluZSAxNzMxICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVFNGX1VOU0lHTkVEX1NLSVApCisg
ICAgeworI2xpbmUgMTI3NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQ4X3QgKm5ld19jdXIg
PSBjdXIgKyBzaXplX29mX2VuY29kZWRfdHNmX3Vuc2lnbmVkKCpjdXIpOworICAgICAgICBpZiAo
bmV3X2N1ciA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAg
IH0KKyAgICAgICAgY3VyID0gbmV3X2N1cjsKKyNsaW5lIDE3NDMgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9U
U0ZfTE9OR19TS0lQKQorICAgIHsKKyNsaW5lIDEyODMgImdwY19zcGVjLmluIgorICAgICAgICB1
aW50OF90ICpuZXdfY3VyID0gY3VyICsgc2l6ZV9vZl9lbmNvZGVkX3RzZl9sb25nKCpjdXIpOwor
ICAgICAgICBpZiAobmV3X2N1ciA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJy
b3I7CisgICAgICAgIH0KKyAgICAgICAgY3VyID0gbmV3X2N1cjsKKyNsaW5lIDE3NTUgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0JJVCkKKyAgICB7CisjbGluZSAxMjkyICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgaW50MzJfdCBpbnRlZ2VyOworICAgICAgICByZWFkX3RzZl9p
bnRlZ2VyX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7CisgICAgICAg
ICoodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSA9ICEhaW50
ZWdlcjsKKyNsaW5lIDE3NjUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0Mp
CisgICAgeworI2xpbmUgMTI5OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGludDMyX3QgaW50ZWdl
cjsKKyAgICAgICAgcmVhZF90c2ZfaW50ZWdlcl9pbmNzcmMoJmludGVnZXIsIGN1ciwgZW5kLCBi
b3VuZHNfZXJyb3IpOworICAgICAgICAqKGludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKSA9IGludGVnZXI7CisjbGluZSAxNzc1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVFNGX0lO
VEVHRVJfUkVBRF9UT19TKQorICAgIHsKKyNsaW5lIDEzMDYgImdwY19zcGVjLmluIgorICAgICAg
ICBpbnQzMl90IGludGVnZXI7CisgICAgICAgIHJlYWRfdHNmX2ludGVnZXJfaW5jc3JjKCZpbnRl
Z2VyLCBjdXIsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgKihpbnQxNl90KikoSU5UX1NU
QUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpID0gaW50ZWdlcjsKKyNsaW5lIDE3ODUgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9UU0ZfSU5URUdFUl9SRUFEKQorICAgIHsKKyNsaW5lIDEzMTMgImdwY19zcGVj
LmluIgorICAgICAgICBpbnQzMl90ICppbnRlZ2VyID0gKGludDMyX3QqKShJTlRfU1RBQ0tfUFRS
KDApICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHJlYWRfdHNmX2ludGVnZXJfaW5jc3JjKGlu
dGVnZXIsIGN1ciwgZW5kLCBib3VuZHNfZXJyb3IpOworI2xpbmUgMTc5NCAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX1RTRl9JTlRFR0VSX1JFQURfVE9fTEwpCisgICAgeworI2xpbmUgMTMxOSAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIGludDMyX3QgaW50ZWdlcjsKKyAgICAgICAgcmVhZF90c2ZfaW50ZWdlcl9p
bmNzcmMoJmludGVnZXIsIGN1ciwgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAqKGludDY0
X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkgPSBpbnRlZ2VyOworI2xpbmUg
MTgwNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9JTlRFR0VSX1JFQURfVE9fRikKKyAgICB7CisjbGlu
ZSAxMzI2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50MzJfdCBpbnRlZ2VyOworICAgICAgICBy
ZWFkX3RzZl9pbnRlZ2VyX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7
CisgICAgICAgICooZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkgPSBp
bnRlZ2VyOworI2xpbmUgMTgxNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9JTlRFR0VSX1JFQURfVE9f
RCkKKyAgICB7CisjbGluZSAxMzMzICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50MzJfdCBpbnRl
Z2VyOworICAgICAgICByZWFkX3RzZl9pbnRlZ2VyX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQs
IGJvdW5kc19lcnJvcik7CisgICAgICAgICooZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpID0gaW50ZWdlcjsKKyNsaW5lIDE4MjQgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0Zf
VU5TSUdORURfUkVBRF9TVUIxKQorICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMTM0MCAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl91bnNpZ25lZF90IHZhbHVlOworICAgICAgICByZWFk
X3RzZl91bnNpZ25lZF9pbmNzcmMoJnZhbHVlLCBjdXIsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAg
ICAgICAgSU5UX1NUQUNLX1NFVCgwLCB2YWx1ZSAtIDEpOworI2xpbmUgMTgzNSAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX1RTRl9MT05HX1JFQURfVE9fQklUKQorICAgIHsKKyNsaW5lIDEzNDcgImdwY19zcGVj
LmluIgorICAgICAgICBpbnQ2NF90IGludGVnZXI7CisgICAgICAgIHJlYWRfdHNmX2xvbmdfaW5j
c3JjKCZpbnRlZ2VyLCBjdXIsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgKih0c2ZfYm9v
bF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpID0gISFpbnRlZ2VyOworI2xp
bmUgMTg0NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9MT05HX1JFQURfVE9fQykKKyAgICB7CisjbGlu
ZSAxMzU0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50NjRfdCBpbnRlZ2VyOworICAgICAgICBy
ZWFkX3RzZl9sb25nX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7Cisg
ICAgICAgICooaW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpID0gaW50
ZWdlcjsKKyNsaW5lIDE4NTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfTE9OR19SRUFEX1RPX1MpCisg
ICAgeworI2xpbmUgMTM2MSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGludDY0X3QgaW50ZWdlcjsK
KyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJmludGVnZXIsIGN1ciwgZW5kLCBib3VuZHNf
ZXJyb3IpOworICAgICAgICAqKGludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVB
TSgwKSkgPSBpbnRlZ2VyOworI2xpbmUgMTg2NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9
CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9MT05HX1JF
QURfVE9fTCkKKyAgICB7CisjbGluZSAxMzY4ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50NjRf
dCBpbnRlZ2VyOworICAgICAgICByZWFkX3RzZl9sb25nX2luY3NyYygmaW50ZWdlciwgY3VyLCBl
bmQsIGJvdW5kc19lcnJvcik7CisgICAgICAgICooaW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkg
KyBJTlRfU1RSRUFNKDApKSA9IGludGVnZXI7CisjbGluZSAxODc1ICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
VFNGX0xPTkdfUkVBRCkKKyAgICB7CisjbGluZSAxMzc1ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
aW50NjRfdCAqaW50ZWdlciA9IChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMCkpOworICAgICAgICByZWFkX3RzZl9sb25nX2luY3NyYyhpbnRlZ2VyLCBjdXIsIGVuZCwg
Ym91bmRzX2Vycm9yKTsKKyNsaW5lIDE4ODQgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfTE9OR19SRUFE
X1RPX0YpCisgICAgeworI2xpbmUgMTM4MSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGludDY0X3Qg
aW50ZWdlcjsKKyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJmludGVnZXIsIGN1ciwgZW5k
LCBib3VuZHNfZXJyb3IpOworICAgICAgICAqKGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpID0gaW50ZWdlcjsKKyNsaW5lIDE4OTQgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0Zf
TE9OR19SRUFEX1RPX0QpCisgICAgeworI2xpbmUgMTM4OCAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IGludDY0X3QgaW50ZWdlcjsKKyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJmludGVnZXIs
IGN1ciwgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAqKGRvdWJsZSopKElOVF9TVEFDS19Q
VFIoMCkgKyBJTlRfU1RSRUFNKDApKSA9IGludGVnZXI7CisjbGluZSAxOTA0ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfVFNGX0lOVEVHRVJfU0laRSkKKyAgICB7CisjbGluZSAxMzk1ICJncGNfc3BlYy5pbiIK
KyAgICAgICAgaW50MzJfdCAqaW50ZWdlciA9IChpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpOworICAgICAgICBzaXplICs9IHNpemVfb2ZfdHNmX2ludGVnZXIoKmlu
dGVnZXIpOworI2xpbmUgMTkxMyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9VTlNJR05FRF9QTFVTMV9T
SVpFKQorICAgIHsKKyNsaW5lIDE0MDEgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfdW5zaWdu
ZWRfdCAqaW50ZWdlciA9ICh0c2ZfdW5zaWduZWRfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKTsKKyAgICAgICAgc2l6ZSArPSBzaXplX29mX3RzZl9pbnRlZ2VyKCppbnRlZ2Vy
ICsgMSk7CisjbGluZSAxOTIyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVFNGX0xPTkdfU0laRSkKKyAgICB7
CisjbGluZSAxNDA3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50NjRfdCAqaW50ZWdlciA9IChp
bnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBzaXpl
ICs9IHNpemVfb2ZfdHNmX2xvbmcoKmludGVnZXIpOworI2xpbmUgMTkzMSAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX1RTRl9JTlRFR0VSX1dSSVRFKQorICAgIHsKKyNsaW5lIDE0MTMgImdwY19zcGVjLmluIgor
ICAgICAgICBpbnQzMl90ICppbnRlZ2VyID0gKGludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSk7CisgICAgICAgIGN1ciArPSB3cml0ZV90c2ZfaW50ZWdlcihjdXIsICpp
bnRlZ2VyKTsKKyNsaW5lIDE5NDAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfVU5TSUdORURfUExVUzFf
V1JJVEUpCisgICAgeworI2xpbmUgMTQxOSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl91bnNp
Z25lZF90ICppbnRlZ2VyID0gKHRzZl91bnNpZ25lZF90KikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpOworICAgICAgICBjdXIgKz0gd3JpdGVfdHNmX3Vuc2lnbmVkKGN1ciwgKmlu
dGVnZXIgKyAxKTsKKyNsaW5lIDE5NDkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfTE9OR19XUklURSkK
KyAgICB7CisjbGluZSAxNDI1ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50NjRfdCAqaW50ZWdl
ciA9IChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAg
ICBjdXIgKz0gd3JpdGVfdHNmX2xvbmcoY3VyLCAqaW50ZWdlcik7CisjbGluZSAxOTU4ICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfU1RSSU5HX1NFVEVNUFRZKQorICAgIHsKKyNsaW5lIDE0MzEgImdwY19zcGVj
LmluIgorICAgICAgICBjaGFyICoqc3RyPShjaGFyKiopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKTsKKyAgICAgICAgaWYgKHJlZ2lvbiAhPSBOVUxMKSB7CisgICAgICAgICAgICAv
KiBJZiB3ZSdyZSB1c2luZyByZWdpb25zIHRoZW4gd2UgY2FuIGJlIHN1cmUgdGhhdCBub2JvZHkg
d2lsbCBhdHRlbXB0IHRvIGZyZWUKKyAgICAgICAgICAgICAgIHRoaXMuIFRoYXQgbWVhbnMgd2Ug
Y2FuIGRvIHRoZSBlZmZpY2llbnQgdGhpbmcgYW5kIGp1c3QgdXNlIGEgc3RyaW5nIGNvbnN0YW50
LiAqLworICAgICAgICAgICAgKnN0ciA9ICIiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLyogRGVzdHJ1Y3RpbmcgYSBzdHJpbmcgbWVhbnMgZnJlZWluZyBpdC4gVGhhdCBtZWFucyB3
ZSBoYXZlIHRvIG1hbGxvYyB0aGUgZW1wdHkKKyAgICAgICAgICAgICAgIHN0cmluZy4gKi8KKyAg
ICAgICAgICAgICpzdHIgPSBzdHJkdXAoIiIpOworICAgICAgICAgICAgaWYgKCEqc3RyKSB7Cisg
ICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHN0cmR1cCB0aGUgZW1wdHkg
c3RyaW5nIik7CisgICAgICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorI2xpbmUgMTk3OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1NUUklOR19SRUFEKQorICAg
IHsKKyNsaW5lIDE0NDkgImdwY19zcGVjLmluIgorICAgICAgICBjaGFyICoqc3RyOworICAgICAg
ICBzaXplX3Qgc2l6ZTsKKyAgICAgICAgCisgICAgICAgIC8qIEZpcnN0IGZpZ3VyZSBvdXQgdGhl
IHNpemUgb2YgdGhlIHN0cmluZy4gKi8KKyAgICAgICAgc2l6ZSA9IHNraXBfc3RyaW5nKChjb25z
dCBjaGFyKiljdXIsIChjb25zdCBjaGFyICopZW5kKTsKKyAgICAgICAgaWYgKCFzaXplKSB7Cisg
ICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgLyogTm93IGFsbG9jYXRlIHRoZSBzdHJpbmcgYW5kIGNvcHkgdGhlIGNvbnRlbnRzLiAqLwor
ICAgICAgICBzdHIgPSAoY2hhcioqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7
CisgICAgICAgICpzdHIgPSB0c2ZfY29uZF9hbGxvYyhyZWdpb24sIHNpemUpOworICAgICAgICBp
ZiAoKnN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
dHNmX2NvbmRfYWxsb2MoKSBzdHJpbmciKTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgbWVtY3B5KCpzdHIsIGN1ciwgc2l6ZSk7CisgICAgICAgIGN1ciAr
PSBzaXplOworI2xpbmUgMjAwNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1NUUklOR19TS0lQKQorICAgIHsK
KyNsaW5lIDE0NzEgImdwY19zcGVjLmluIgorICAgICAgICAvKiBJdCB3b3VsZCBoYXZlIGJlZW4g
ZWFzaWVyIHRvIGlubGluZSB0aGUgYm9keSBvZiBza2lwX3N0cmluZyBoZXJlLCBidXQgd2UgZG9u
J3QgZG8KKyAgICAgICAgICAgdGhhdCBiZWNhdXNlIGl0IHJldmVhbGVkIGNvbXBpbGVyIGJ1Z3Mg
aW4gc29tZSBvbGQgR0NDLiAqLworICAgICAgICBzaXplX3QgbnVtX3NraXBwZWQgPSBza2lwX3N0
cmluZygoY29uc3QgY2hhciopY3VyLCAoY29uc3QgY2hhciopZW5kKTsKKyAgICAgICAgaWYgKCFu
dW1fc2tpcHBlZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0K
KyAgICAgICAgY3VyICs9IG51bV9za2lwcGVkOworI2xpbmUgMjAxOCAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X1NUUklOR19TSVpFKQorICAgIHsKKyNsaW5lIDE0ODIgImdwY19zcGVjLmluIgorICAgICAgICBj
aGFyICoqc3RyPShjaGFyKiopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAg
ICAgICAgc2l6ZSs9c3RybGVuKCpzdHIpKzE7CisjbGluZSAyMDI3ICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
U1RSSU5HX1dSSVRFKQorICAgIHsKKyNsaW5lIDE0ODggImdwY19zcGVjLmluIgorICAgICAgICBj
aGFyICoqc3RyPShjaGFyKiopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyNp
ZmRlZiBIQVZFX1NUUENQWQorICAgICAgICBjdXI9KCh1aW50OF90KilzdHBjcHkoKGNoYXIqKWN1
ciwqc3RyKSkrMTsKKyNlbHNlCisgICAgICAgIHN0cmNweSgoY2hhciopY3VyLCpzdHIpOworICAg
ICAgICBjdXIrPXN0cmxlbigqc3RyKSsxOworI2VuZGlmCisjbGluZSAyMDQxICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfU1RSSU5HX0NPUFkpCisgICAgeworI2xpbmUgMTQ5OSAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIGNoYXIgKipkZXN0ID0gKGNoYXIqKikoSU5UX1NUQUNLX1BUUigxKSArIElOVF9TVFJFQU0o
MCkpOworICAgICAgICBjaGFyICoqc3JjID0gKGNoYXIqKikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMSkpOworICAgICAgICAqZGVzdCA9IHRzZl9jb25kX2FsbG9jKHJlZ2lvbiwgc3Ry
bGVuKCpzcmMpICsgMSk7CisgICAgICAgIGlmICgqZGVzdCA9PSBOVUxMKSB7CisgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2NvbmRfYWxsb2MoKSBzdHJpbmciKTsKKyAg
ICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KCpkZXN0
LCAqc3JjKTsKKyNsaW5lIDIwNTYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9BTllfU0VURU1QVFkpCisgICAg
eworI2xpbmUgMTUxMSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9idWZmZXJfdCAqKmRlc3Q9
KHRzZl9idWZmZXJfdCoqKQorICAgICAgICAgICAgKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RS
RUFNKDApKTsKKyAgICAgICAgKmRlc3Q9dHNmX2J1ZmZlcl9nZXRfZW1wdHlfc2luZ2xldG9uKCk7
CisjbGluZSAyMDY2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5D
RSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQU5ZX1JFQUQpCisgICAgeworI2xpbmUgMTUx
OCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9idWZmZXJfdCAqKmRlc3QgPSAodHNmX2J1ZmZl
cl90KiopCisgICAgICAgICAgICAoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOwor
ICAgICAgICAKKyAgICAgICAgKmRlc3QgPSB0c2ZfYnVmZmVyX3JlYWRfZnJvbV9idWYodHlwZXMs
ICZjdXIsIGVuZCwgcmVnaW9uKTsKKyAgICAgICAgaWYgKCpkZXN0ID09IE5VTEwpIHsKKyAgICAg
ICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0KKyNsaW5lIDIwODAgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVH
SU4oSV9BTllfU0tJUCkKKyAgICB7CisjbGluZSAxNTI5ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
aWYgKCF0c2ZfYnVmZmVyX3NraXBfaW5fYnVmKHR5cGVzLCZjdXIsZW5kKSkgeworICAgICAgICAg
ICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgfQorI2xpbmUgMjA5MCAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X0FOWV9TSVpFKQorICAgIHsKKyNsaW5lIDE1MzYgImdwY19zcGVjLmluIgorICAgICAgICB0c2Zf
YnVmZmVyX3QgKipzcmM9KHRzZl9idWZmZXJfdCoqKQorICAgICAgICAgICAgKElOVF9TVEFDS19Q
VFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgCisgICAgICAgIHNpemUrPXRzZl9idWZm
ZXJfY2FsY19zaXplKCpzcmMpOworI2xpbmUgMjEwMSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0FOWV9XUklU
RSkKKyAgICB7CisjbGluZSAxNTQ0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX2J1ZmZlcl90
ICoqc3JjPSh0c2ZfYnVmZmVyX3QqKikKKyAgICAgICAgICAgIChJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSk7CisgICAgICAgIAorICAgICAgICBpZiAoIXRzZl9idWZmZXJfd3JpdGVf
dG9fYnVmKCpzcmMsb3V0X21hcCwmY3VyKSkgeworICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsK
KyAgICAgICAgfQorI2xpbmUgMjExNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0FOWV9DT1BZKQorICAgIHsK
KyNsaW5lIDE1NTQgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfYnVmZmVyX3QgKipkZXN0PSh0
c2ZfYnVmZmVyX3QqKikKKyAgICAgICAgICAgIChJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVB
TSgwKSk7CisgICAgICAgIHRzZl9idWZmZXJfdCAqKnNyYz0odHNmX2J1ZmZlcl90KiopCisgICAg
ICAgICAgICAoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICAKKyAg
ICAgICAgKmRlc3Q9dHNmX2J1ZmZlcl9jbG9uZV9pbigqc3JjLHJlZ2lvbik7CisgICAgICAgIGlm
ICgqZGVzdD09TlVMTCkgeworICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgfQor
I2xpbmUgMjEzMCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
Mik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX01FTUNQWSkKKyAgICB7CisjbGluZSAxNTY3ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgIG1l
bWNweShJTlRfU1RBQ0tfUFRSKDEpK2Rlc3Rfb2Zmc2V0LAorICAgICAgICAgICAgICAgSU5UX1NU
QUNLX1BUUigwKStzcmNfb2Zmc2V0LAorICAgICAgICAgICAgICAgSU5UX1NUUkVBTSgyKSk7Cisj
bGluZSAyMTQyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgz
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9BUlJBWSkKKyAgICB7CisjbGluZSAxNTc2
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9hcnJheV90ICpkZXN0PQorICAgICAg
ICAgICAgKHRzZl9uYXRpdmVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RSRUFN
KDApKTsKKyAgICAgICAgdHNmX25hdGl2ZV9hcnJheV90ICpzcmM9CisgICAgICAgICAgICAodHNm
X25hdGl2ZV9hcnJheV90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAg
ICAgICB1aW50MzJfdCBlbGVfc2l6ZT1JTlRfU1RSRUFNKDIpOworICAgICAgICAKKyAgICAgICAg
ZGVzdC0+bGVuPXNyYy0+bGVuOworICAgICAgICAKKyAgICAgICAgZGVzdC0+ZGF0YSA9IHRzZl9j
b25kX2FsbG9jKHJlZ2lvbiwgZGVzdC0+bGVuICogZWxlX3NpemUpOworICAgICAgICBpZiAoZGVz
dC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
YWxsb2NhdGUgYXJyYXkgZnJvbSByZWdpb24iKTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1lbWNweShkZXN0LT5kYXRhLCBzcmMtPmRh
dGEsIGRlc3QtPmxlbiAqIGVsZV9zaXplKTsKKyNsaW5lIDIxNjQgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDMpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9D
T1BZX0JJVFZFQ1RPUikKKyAgICB7CisjbGluZSAxNTk1ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
dHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqZGVzdCA9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9i
aXR2ZWN0b3JfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAg
dHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqc3JjID0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2Jp
dHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICAK
KyAgICAgICAgZGVzdC0+bnVtX2JpdHMgPSBzcmMtPm51bV9iaXRzOworICAgICAgICAKKyAgICAg
ICAgZGVzdC0+Yml0cyA9IHRzZl9jb25kX2FsbG9jKHJlZ2lvbiwgKGRlc3QtPm51bV9iaXRzICsg
NykgPj4gMyk7CisgICAgICAgIGlmIChkZXN0LT5iaXRzID09IE5VTEwpIHsKKyAgICAgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBiaXR2ZWN0b3IgZnJvbSByZWdpb24i
KTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIG1lbWNweShkZXN0LT5iaXRzLCBzcmMtPmJpdHMsIChkZXN0LT5udW1fYml0cyArIDcpID4+
IDMpOworI2xpbmUgMjE4NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX0ZST01fQykK
KyAgICB7CisjbGluZSAxNjEzICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2
ZWN0b3JfdCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5U
X1NUQUNLX1BUUigxKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICB0c2ZfbmF0aXZlX3VpbnQ4
X2FycmF5X3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQ4X2FycmF5X3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSk7CisgICAgICAgIHVpbnQ4X3QgKnNyY19j
dXI7CisgICAgICAgIGdwY19jb3B5X2FycmF5X3RvX2JpdHZlY3RvcigpCisjbGluZSAyMTk4ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQ09QWV9CSVRWRUNUT1JfRlJPTV9TKQorICAgIHsKKyNsaW5lIDE2MjMg
ImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90ICpkZXN0PQorICAg
ICAgICAgICAgKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5U
X1NUUkVBTSgwKSk7CisgICAgICAgIHRzZl9uYXRpdmVfdWludDE2X2FycmF5X3QgKnNyYz0KKyAg
ICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQxNl9hcnJheV90KikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMSkpOworICAgICAgICB1aW50MTZfdCAqc3JjX2N1cjsKKyAgICAgICAgZ3Bj
X2NvcHlfYXJyYXlfdG9fYml0dmVjdG9yKCkKKyNsaW5lIDIyMTEgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9D
T1BZX0JJVFZFQ1RPUl9GUk9NX0wpCisgICAgeworI2xpbmUgMTYzMyAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmRlc3Q9CisgICAgICAgICAgICAodHNmX25h
dGl2ZV9iaXR2ZWN0b3JfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RSRUFNKDApKTsKKyAg
ICAgICAgdHNmX25hdGl2ZV91aW50MzJfYXJyYXlfdCAqc3JjPQorICAgICAgICAgICAgKHRzZl9u
YXRpdmVfdWludDMyX2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSk7
CisgICAgICAgIHVpbnQzMl90ICpzcmNfY3VyOworICAgICAgICBncGNfY29weV9hcnJheV90b19i
aXR2ZWN0b3IoKQorI2xpbmUgMjIyNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX0ZS
T01fTEwpCisgICAgeworI2xpbmUgMTY0MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRp
dmVfYml0dmVjdG9yX3QgKmRlc3Q9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0b3Jf
dCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgdHNmX25hdGl2
ZV91aW50NjRfYXJyYXlfdCAqc3JjPQorICAgICAgICAgICAgKHRzZl9uYXRpdmVfdWludDY0X2Fy
cmF5X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSk7CisgICAgICAgIHVpbnQ2
NF90ICpzcmNfY3VyOworICAgICAgICBncGNfY29weV9hcnJheV90b19iaXR2ZWN0b3IoKQorI2xp
bmUgMjIzNyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX0ZST01fRikKKyAgICB7Cisj
bGluZSAxNjUzICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAq
ZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BU
UigxKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICB0c2ZfbmF0aXZlX2Zsb2F0X2FycmF5X3Qg
KnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2Zsb2F0X2FycmF5X3QqKShJTlRfU1RBQ0tf
UFRSKDApICsgSU5UX1NUUkVBTSgxKSk7CisgICAgICAgIGZsb2F0ICpzcmNfY3VyOworICAgICAg
ICBncGNfY29weV9hcnJheV90b19iaXR2ZWN0b3IoKQorI2xpbmUgMjI1MCAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfQklUVkVDVE9SX0ZST01fRCkKKyAgICB7CisjbGluZSAxNjYzICJncGNfc3BlYy5p
biIKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqZGVzdD0KKyAgICAgICAgICAgICh0
c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigxKSArIElOVF9TVFJFQU0oMCkp
OworICAgICAgICB0c2ZfbmF0aXZlX2RvdWJsZV9hcnJheV90ICpzcmM9CisgICAgICAgICAgICAo
dHNmX25hdGl2ZV9kb3VibGVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFN
KDEpKTsKKyAgICAgICAgZG91YmxlICpzcmNfY3VyOworICAgICAgICBncGNfY29weV9hcnJheV90
b19iaXR2ZWN0b3IoKQorI2xpbmUgMjI2MyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9Cisg
ICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9S
X1RPX0MpCisgICAgeworI2xpbmUgMTY3MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRp
dmVfdWludDhfYXJyYXlfdCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQ4X2Fy
cmF5X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHRzZl9u
YXRpdmVfYml0dmVjdG9yX3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rv
cl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICB1aW50OF90
ICpkZXN0X2N1cjsKKyAgICAgICAgZ3BjX2NvcHlfYml0dmVjdG9yX3RvX2FycmF5KDEpCisjbGlu
ZSAyMjc2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9CSVRWRUNUT1JfVE9fUykKKyAgICB7CisjbGlu
ZSAxNjgzICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV91aW50MTZfYXJyYXlfdCAq
ZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQxNl9hcnJheV90KikoSU5UX1NUQUNL
X1BUUigxKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90
ICpzcmM9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCopKElOVF9TVEFDS19Q
VFIoMCkgKyBJTlRfU1RSRUFNKDEpKTsKKyAgICAgICAgdWludDE2X3QgKmRlc3RfY3VyOworICAg
ICAgICBncGNfY29weV9iaXR2ZWN0b3JfdG9fYXJyYXkoMikKKyNsaW5lIDIyODkgImdwY19pbnRl
cnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRf
QkVHSU4oSV9DT1BZX0JJVFZFQ1RPUl9UT19MKQorICAgIHsKKyNsaW5lIDE2OTMgImdwY19zcGVj
LmluIgorICAgICAgICB0c2ZfbmF0aXZlX3VpbnQzMl9hcnJheV90ICpkZXN0PQorICAgICAgICAg
ICAgKHRzZl9uYXRpdmVfdWludDMyX2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NU
UkVBTSgwKSk7CisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKnNyYz0KKyAgICAgICAg
ICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMSkpOworICAgICAgICB1aW50MzJfdCAqZGVzdF9jdXI7CisgICAgICAgIGdwY19jb3B5X2Jp
dHZlY3Rvcl90b19hcnJheSg0KQorI2xpbmUgMjMwMiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklU
VkVDVE9SX1RPX0xMKQorICAgIHsKKyNsaW5lIDE3MDMgImdwY19zcGVjLmluIgorICAgICAgICB0
c2ZfbmF0aXZlX3VpbnQ2NF9hcnJheV90ICpkZXN0PQorICAgICAgICAgICAgKHRzZl9uYXRpdmVf
dWludDY0X2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7CisgICAg
ICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZl
X2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAg
ICB1aW50NjRfdCAqZGVzdF9jdXI7CisgICAgICAgIGdwY19jb3B5X2JpdHZlY3Rvcl90b19hcnJh
eSg4KQorI2xpbmUgMjMxNSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX1RPX0YpCisg
ICAgeworI2xpbmUgMTcxMyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfZmxvYXRf
YXJyYXlfdCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2Zsb2F0X2FycmF5X3QqKShJ
TlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHRzZl9uYXRpdmVfYml0
dmVjdG9yX3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICBmbG9hdCAqZGVzdF9jdXI7
CisgICAgICAgIGdwY19jb3B5X2JpdHZlY3Rvcl90b19hcnJheSg0KQorI2xpbmUgMjMyOCAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX1RPX0QpCisgICAgeworI2xpbmUgMTcyMyAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfZG91YmxlX2FycmF5X3QgKmRlc3Q9CisgICAg
ICAgICAgICAodHNmX25hdGl2ZV9kb3VibGVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJ
TlRfU1RSRUFNKDApKTsKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqc3JjPQorICAg
ICAgICAgICAgKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5U
X1NUUkVBTSgxKSk7CisgICAgICAgIGRvdWJsZSAqZGVzdF9jdXI7CisgICAgICAgIGdwY19jb3B5
X2JpdHZlY3Rvcl90b19hcnJheSg4KQorI2xpbmUgMjM0MSAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JFQURD
X1RPX0NIT0lDRSkKKyAgICBJTlRfUFVTSCgpOworICAgIHsKKyNsaW5lIDE3MzMgImdwY19zcGVj
LmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygmdWk4X3RtcCxjdXIpOworICAgICAgICBp
ZiAodWk4X3RtcD09MjU1KSB7CisgICAgICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsVUlOVDMyX01B
WCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsdWk4X3Rt
cCk7CisgICAgICAgIH0KKyNsaW5lIDIzNTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9SRUFETCkKKyAgICBJ
TlRfUFVTSCgpOworICAgIHsKKyNsaW5lIDE3NDMgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5
X250b2hsX2luY3NyYygodWludDhfdCopJnVpMzJfdG1wLGN1cik7CisgICAgICAgIElOVF9TVEFD
S19TRVQoMCx1aTMyX3RtcCk7CisjbGluZSAyMzY1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQVJSQVlfTEVO
X1dSSVRFX0ZJRUxEKQorICAgIHsKKyNsaW5lIDE3NDkgImdwY19zcGVjLmluIgorICAgICAgICB1
aTMyX3RtcD0qKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk7
CisgICAgICAgIGlmICh1aTMyX3RtcD49MjU1KSB7CisgICAgICAgICAgICB1aThfdG1wPTI1NTsK
KyAgICAgICAgICAgIGNvcHlfaHRvbmNfaW5jZHN0KGN1ciwmdWk4X3RtcCk7CisgICAgICAgICAg
ICBjb3B5X2h0b25sX2luY2RzdChjdXIsKHVpbnQ4X3QqKSZ1aTMyX3RtcCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB1aThfdG1wPXVpMzJfdG1wOworICAgICAgICAgICAgY29weV9o
dG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyAgICAgICAgfQorI2xpbmUgMjM4MSAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX0FSUkFZX0xFTl9SRUFEX0ZJRUxEKQorICAgIHsKKyNsaW5lIDE3NjIgImdwY19z
cGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCxjdXIsZW5kLGJv
dW5kc19lcnJvcik7CisgICAgICAgIGlmICh1aThfdG1wPT0yNTUpIHsKKyAgICAgICAgICAgIGNv
cHlfbnRvaGxfaW5jc3JjX2JjKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApLGN1ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCxib3VuZHNfZXJyb3IpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSkpID0gdWk4X3RtcDsKKyAgICAgICAgfQorI2xpbmUgMjM5NSAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0FSUkFZX0xFTl9SRUFEX0xPQ0FMKQorICAgIElOVF9QVVNIKCk7CisgICAg
eworI2xpbmUgMTc3MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjX2Jj
KCZ1aThfdG1wLGN1cixlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAgICAgaWYgKHVpOF90bXA9PTI1
NSkgeworICAgICAgICAgICAgY29weV9udG9obF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZ1aTMyX3Rt
cCxjdXIsZW5kLGJvdW5kc19lcnJvcik7CisgICAgICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsdWkz
Ml90bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSU5UX1NUQUNLX1NFVCgwLHVp
OF90bXApOworICAgICAgICB9CisjbGluZSAyNDEwICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQVJSQVlfTEVO
X1NLSVApCisgICAgeworI2xpbmUgMTc4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRv
aGNfaW5jc3JjX2JjKCZ1aThfdG1wLGN1cixlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAgICAgaWYg
KHVpOF90bXA9PTI1NSkgeworICAgICAgICAgICAgaWYgKGN1cis0PmVuZCkgeworICAgICAgICAg
ICAgICAgIGdvdG8gYm91bmRzX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3Vy
Kz00OworICAgICAgICB9CisjbGluZSAyNDI0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUX01BU0tfV1JJ
VEUpCisgICAgeworI2xpbmUgMTc5NSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpMzJfdG1wPUlO
VF9TVFJFQU0oMCk7CisgICAgICAgIGlmICgqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMSkpKSkgeworICAgICAgICAgICAgKmN1cnw9KDE8PHVpMzJfdG1wKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpjdXImPX4oMTw8dWkzMl90bXApOworICAg
ICAgICB9CisjbGluZSAyNDM3ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUX01BU0tfUkVBRCkKKyAgICB7
CisjbGluZSAxODA1ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKCpjdXImKDE8PElOVF9TVFJF
QU0oMCkpKSB7CisgICAgICAgICAgICAqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMSkpKSA9IHRzZl90cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgKigodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDEpKSkgPSB0
c2ZfZmFsc2U7CisgICAgICAgIH0KKyNsaW5lIDI0NDkgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfTUFT
S19SRUFEX1RPX1MpCisgICAgeworI2xpbmUgMTgxNCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlm
ICgqY3VyJigxPDxJTlRfU1RSRUFNKDApKSkgeworICAgICAgICAgICAgKigodWludDE2X3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSkpID0gMTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0o
MSkpKSA9IDA7CisgICAgICAgIH0KKyNsaW5lIDI0NjEgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfTUFT
S19SRUFEX1RPX0wpCisgICAgeworI2xpbmUgMTgyMyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlm
ICgqY3VyJigxPDxJTlRfU1RSRUFNKDApKSkgeworICAgICAgICAgICAgKigodWludDMyX3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSkpID0gMTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0o
MSkpKSA9IDA7CisgICAgICAgIH0KKyNsaW5lIDI0NzMgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfTUFT
S19SRUFEX1RPX0xMKQorICAgIHsKKyNsaW5lIDE4MzIgImdwY19zcGVjLmluIgorICAgICAgICBp
ZiAoKmN1ciYoMTw8SU5UX1NUUkVBTSgwKSkpIHsKKyAgICAgICAgICAgICooKHVpbnQ2NF90Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpKSA9IDE7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFN
KDEpKSkgPSAwOworICAgICAgICB9CisjbGluZSAyNDg1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUX01B
U0tfUkVBRF9UT19GKQorICAgIHsKKyNsaW5lIDE4NDEgImdwY19zcGVjLmluIgorICAgICAgICBp
ZiAoKmN1ciYoMTw8SU5UX1NUUkVBTSgwKSkpIHsKKyAgICAgICAgICAgICooKGZsb2F0KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpKSA9IDEuOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSkp
ID0gMC47CisgICAgICAgIH0KKyNsaW5lIDI0OTcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfTUFTS19S
RUFEX1RPX0QpCisgICAgeworI2xpbmUgMTg1MCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmICgq
Y3VyJigxPDxJTlRfU1RSRUFNKDApKSkgeworICAgICAgICAgICAgKigoZG91YmxlKikoSU5UX1NU
QUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpKSA9IDEuOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpKSA9
IDAuOworICAgICAgICB9CisjbGluZSAyNTA5ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUX1dSSVRFKQor
ICAgIHsKKyNsaW5lIDE4NTkgImdwY19zcGVjLmluIgorICAgICAgICB1aThfdG1wPSooKHRzZl9i
b29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPworICAgICAgICAgICAg
ICAgIHRzZl90cnVlOnRzZl9mYWxzZTsKKyAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1
aThfdG1wKTsKKyNsaW5lIDI1MTkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRCkKKyAgICB7Cisj
bGluZSAxODY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoJnVpOF90
bXAsY3VyKTsKKyAgICAgICAgKigodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKSk9CisgICAgICAgICAgICB1aThfdG1wP3RzZl90cnVlOnRzZl9mYWxzZTsKKyNs
aW5lIDI1MjkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEp
OworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRF9UT19TKQorICAgIHsKKyNsaW5lIDE4
NzMgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygmdWk4X3RtcCxjdXIp
OworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDAp
KSk9CisgICAgICAgICAgICB1aThfdG1wPzE6MDsKKyNsaW5lIDI1MzkgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9CSVRfUkVBRF9UT19MKQorICAgIHsKKyNsaW5lIDE4ODAgImdwY19zcGVjLmluIgorICAgICAg
ICBjb3B5X250b2hjX2luY3NyYygmdWk4X3RtcCxjdXIpOworICAgICAgICAqKCh1aW50MzJfdCop
KElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9CisgICAgICAgICAgICB1aThfdG1w
PzE6MDsKKyNsaW5lIDI1NDkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRF9UT19MTCkKKyAgICB7
CisjbGluZSAxODg3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoJnVp
OF90bXAsY3VyKTsKKyAgICAgICAgKigodWludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5U
X1NUUkVBTSgwKSkpPQorICAgICAgICAgICAgdWk4X3RtcD8xOjA7CisjbGluZSAyNTU5ICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfQklUX1JFQURfVE9fRikKKyAgICB7CisjbGluZSAxODk0ICJncGNfc3BlYy5p
biIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoJnVpOF90bXAsY3VyKTsKKyAgICAgICAgKigo
ZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPQorICAgICAgICAgICAg
dWk4X3RtcD8xLjowLjsKKyNsaW5lIDI1NjkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRF9UT19E
KQorICAgIHsKKyNsaW5lIDE5MDEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2lu
Y3NyYygmdWk4X3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSkpPQorICAgICAgICAgICAgdWk4X3RtcD8xLjowLjsKKyNsaW5lIDI1
NzkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9TS0lQKQorICAgIHsKKyNsaW5lIDE5MDggImdwY19zcGVjLmlu
IgorICAgICAgICBjdXIrPUlOVF9TVFJFQU0oMCk7CisjbGluZSAyNTg3ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQVJSQVlfQkNfQU5EX1NLSVBfRklFTEQpCisgICAgeworI2xpbmUgMTkxMyAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIHVpbnRwdHJfdCBvZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWlu
dDMyX3QgZWxlX3NpemU9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgdWludDMyX3Qgc2l6ZT1lbGVf
c2l6ZSogKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgb2Zmc2V0KSk7CisgICAgICAg
IGlmIChjdXIgKyBzaXplID4gZW5kKSB7CisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsK
KyAgICAgICAgfQorICAgICAgICBjdXIrPXNpemU7CisjbGluZSAyNjAxICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQVJSQVlfU0tJUCkKKyAgICB7CisjbGluZSAxOTI0ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
dWludDMyX3QgYXJyYXlfbGVuOworICAgICAgICB1aW50MzJfdCBzaXplOworICAgICAgICAKKyAg
ICAgICAgY29weV9udG9oY19pbmNzcmNfYmMoJnVpOF90bXAsY3VyLGVuZCxib3VuZHNfZXJyb3Ip
OworICAgICAgICBpZiAodWk4X3RtcD09MjU1KSB7CisgICAgICAgICAgICBjb3B5X250b2hsX2lu
Y3NyY19iYygodWludDhfdCopJmFycmF5X2xlbixjdXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGFycmF5X2xlbiA9IHVpOF90bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNp
emU9YXJyYXlfbGVuKklOVF9TVFJFQU0oMCk7CisgICAgICAgIAorICAgICAgICBpZiAoY3VyICsg
c2l6ZSA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGN1cis9c2l6ZTsKKyNsaW5lIDI2MjYgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9CSVRWRUNUT1JfQkNfQU5EX1NLSVBfRklFTEQpCisgICAgeworI2xpbmUgMTk0NiAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIHVpbnQzMl90IHNpemU9KCooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BU
UigwKSArIElOVF9TVFJFQU0oMCkpKSArIDcpPj4zOworICAgICAgICBpZiAoY3VyK3NpemU+ZW5k
KSB7CisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBj
dXIrPXNpemU7CisjbGluZSAyNjM4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1NLSVApCisg
ICAgeworI2xpbmUgMTk1NSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG51bV9iaXRz
OworICAgICAgICB1aW50MzJfdCBzaXplOworICAgICAgICAKKyAgICAgICAgY29weV9udG9oY19p
bmNzcmNfYmMoJnVpOF90bXAsY3VyLGVuZCxib3VuZHNfZXJyb3IpOworICAgICAgICBpZiAodWk4
X3RtcD09MjU1KSB7CisgICAgICAgICAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhfdCop
Jm51bV9iaXRzLGN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCxib3Vu
ZHNfZXJyb3IpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbnVtX2JpdHMgPSB1aThf
dG1wOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzaXplPSgobnVtX2JpdHMgKyA3KT4+
Myk7CisgICAgICAgIAorICAgICAgICBpZiAoY3VyICsgc2l6ZSA+IGVuZCkgeworICAgICAgICAg
ICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGN1cis9
c2l6ZTsKKyNsaW5lIDI2NjMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9JTkNfU0laRSkKKyAgICB7CisjbGlu
ZSAxOTc3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgc2l6ZSs9SU5UX1NUUkVBTSgwKTsKKyNsaW5l
IDI2NzEgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9JTkNfU0laRV9BUlJBWV9MRU4pCisgICAgeworI2xpbmUg
MTk4MiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmICgqKCh1aW50MzJfdCopKElOVF9TVEFDS19Q
VFIoMCkgKyBJTlRfU1RSRUFNKDApKSk+PTI1NSkgeworICAgICAgICAgICAgc2l6ZSs9NTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNpemUrPTE7CisgICAgICAgIH0KKyNsaW5lIDI2
ODMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9JTkNfU0laRV9BUlJBWSkKKyAgICB7CisjbGluZSAxOTkxICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9hcnJheV90ICphcnJheT0KKyAgICAgICAg
ICAgICh0c2ZfbmF0aXZlX2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgw
KSk7CisgICAgICAgIHVpbnQzMl90IGVsZV9zaXplPUlOVF9TVFJFQU0oMSk7CisgICAgICAgIAor
ICAgICAgICBpZiAoYXJyYXktPmxlbj49MjU1KSB7CisgICAgICAgICAgICBzaXplKz01OworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZSs9MTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc2l6ZSs9ZWxlX3NpemUqYXJyYXktPmxlbjsKKyNsaW5lIDI3MDEgImdwY19pbnRl
cnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRf
QkVHSU4oSV9JTkNfU0laRV9CSVRWRUNUT1IpCisgICAgeworI2xpbmUgMjAwNiAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAg
ICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMCkpOworICAgICAgICAKKyAgICAgICAgaWYgKGJpdHZlY3Rvci0+bnVtX2JpdHM+PTI1NSkg
eworICAgICAgICAgICAgc2l6ZSs9NTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNp
emUrPTE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNpemUrPSgoYml0dmVjdG9yLT5u
dW1fYml0cys3KT4+Myk7CisjbGluZSAyNzE4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQkMpCisgICAgewor
I2xpbmUgMjAyMCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmIChjdXIrSU5UX1NUUkVBTSgwKSA+
IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyNsaW5l
IDI3MjggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9BUlJBWV9CQ19GSUVMRCkKKyAgICB7CisjbGluZSAyMDI3
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IG9mZnNldD1JTlRfU1RSRUFNKDApOwor
ICAgICAgICB1aW50MzJfdCBlbGVfc2l6ZT1JTlRfU1RSRUFNKDEpOworICAgICAgICBpZiAoY3Vy
ICsgZWxlX3NpemUqICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIG9mZnNldCkpID4g
ZW5kKSB7CisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsKKyAgICAgICAgfQorI2xpbmUg
Mjc0MCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0FSUkFZX0JDX0xPQ0FMKQorICAgIHsKKyNsaW5lIDIwMzYg
ImdwY19zcGVjLmluIgorICAgICAgICBpZiAoY3VyICsgSU5UX1NUUkVBTSgwKSAqIElOVF9TVEFD
SygwKSA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0K
KyNsaW5lIDI3NTAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNF
KDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfQkNfRklFTEQpCisgICAgewor
I2xpbmUgMjA0MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmIChjdXIgKyAoKCooKHVpbnQzMl90
KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKSArIDcpPj4zKSA+IGVuZCkgewor
ICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyNsaW5lIDI3NjAgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfQkNfTE9DQUwpCisgICAgeworI2xpbmUgMjA1MCAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIGlmIChjdXIgKyAoKElOVF9TVEFDSygwKSArIDcpPj4zKSA+IGVu
ZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyNsaW5lIDI3
NzAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9NQUxMT0NfQlVGKQorICAgIHsKKyNsaW5lIDIwNTcgImdwY19z
cGVjLmluIgorICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZlciA9ICh0c2ZfYnVmZmVyX3QqKUlO
VF9TVEFDS19QVFIoMSk7CisgICAgICAgIGlmIChzaXplID4gYnVmZmVyLT5zaXplKSB7CisgICAg
ICAgICAgICBidWYgPSB0c2ZfY29uZF9hbGxvYyhyZWdpb24sIHNpemUpOworICAgICAgICAgICAg
aWYgKGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IHRzZl9jb25kX2FsbG9jIGJ1ZmZlciIpOworICAgICAgICAgICAgICAgIElOVF9GQUlMVVJF
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBrZWVwID0gdHNmX3RydWU7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBidWYgPSBidWZmZXItPmRhdGE7CisgICAgICAgIH0KKyAg
ICAgICAgY3VyID0gYnVmOworICAgICAgICBlbmQgPSBidWYgKyBzaXplOworI2xpbmUgMjc5MCAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX1BPUF9CVUYpCisgICAgeworI2xpbmUgMjA3NCAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmZmVyPSh0c2ZfYnVmZmVyX3QqKUlOVF9TVEFDS19Q
VFIoMCk7CisgICAgICAgIAorICAgICAgICBidWY9YnVmZmVyLT5kYXRhOworICAgICAgICBjdXI9
YnVmOworICAgICAgICBlbmQ9YnVmK2J1ZmZlci0+c2l6ZTsKKyAgICAgICAga2VlcD10c2ZfZmFs
c2U7CisgICAgICAgIHR5cGVzPWJ1ZmZlci0+dHlwZXM7CisjbGluZSAyODA0ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfUE9QKCk7CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0RFU1RST1lfQlVGRkVSKQorICAgIElOVF9QVVNIKCk7Cisg
ICAgeworI2xpbmUgMjA4NSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9idWZmZXJfdCAqKmFy
ZyA9ICh0c2ZfYnVmZmVyX3QqKikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOwor
ICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3koKmFyZyk7CisjbGluZSAyODE1ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfTUFLRV9PVVRfTUFQKQorICAgIHsKKyNsaW5lIDIwOTEgImdwY19zcGVjLmluIgorICAg
ICAgICBvdXRfbWFwPXRzZl90eXBlX291dF9tYXBfY3JlYXRlKCk7CisgICAgICAgIGlmIChvdXRf
bWFwPT1OVUxMKSB7CisgICAgICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9CisjbGlu
ZSAyODI2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgwKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUxMT0NfUk9PVF9NQVlCRV8yTkQpCisgICAgeworI2xp
bmUgMjA5OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmIChJTlRfU1RBQ0tfUFRSKDEpPT1OVUxM
KSB7CisgICAgICAgICAgICBpZiAocmVnaW9uPT1OVUxMKSB7CisgICAgICAgICAgICAgICAgcmVn
aW9uPXRzZl9yZWdpb25fY3JlYXRlKElOVF9TVFJFQU0oMCkpOworICAgICAgICAgICAgICAgIGlm
IChyZWdpb249PU5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IHRzZl9yZWdpb25fY3JlYXRlKCkiKTsKKyAgICAgICAgICAgICAgICAgICAgSU5UX0ZB
SUxVUkUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAga2VlcF9yZWdpb249
dHNmX3RydWU7CisgICAgICAgICAgICAgICAgSU5UX1NUQUNLX1BUUl9TRVQoMSxyZWdpb24pOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2b2lkICpkYXRhPXRzZl9yZWdp
b25fYWxsb2MocmVnaW9uLElOVF9TVFJFQU0oMCkpOworICAgICAgICAgICAgICAgIGlmIChkYXRh
PT1OVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0
c2ZfcmVnaW9uX2FsbG9jKCkiKTsKKyAgICAgICAgICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSU5UX1NUQUNLX1BUUl9TRVQoMSxk
YXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2xpbmUgMjg1MSAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0FMTE9DKQorICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMjEyMSAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIHZvaWQgKnRtcCA9IHRzZl9jb25kX2FsbG9jKHJlZ2lvbiwgSU5UX1NUUkVB
TSgwKSk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VUKDAsIHRtcCk7CisgICAgICAgIGlmIChJ
TlRfU1RBQ0tfUFRSKDApID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNv
dWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7CisgICAgICAgICAgICBJTlRfRkFJTFVSRSgpOwor
ICAgICAgICB9CisjbGluZSAyODY1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUxMT0NfQVJSQVkpCisgICAg
SU5UX1BVU0goKTsKKyAgICB7CisjbGluZSAyMTMxICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNm
X25hdGl2ZV9hcnJheV90ICphcnJheT0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2FycmF5X3Qq
KShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHVpbnQzMl90IGVs
ZV9zaXplID0gSU5UX1NUUkVBTSgxKTsKKyAgICAgICAgCisgICAgICAgIGFycmF5LT5kYXRhID0g
dHNmX2NvbmRfYWxsb2MocmVnaW9uLCBlbGVfc2l6ZSAqIGFycmF5LT5sZW4pOworICAgICAgICAK
KyAgICAgICAgaWYgKGFycmF5LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7CisgICAgICAgICAgICBJTlRfRkFJ
TFVSRSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NFVCgw
LCBhcnJheS0+ZGF0YSk7CisjbGluZSAyODg1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUxMT0NfQVJSQVlf
Mk5EKQorICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMjE0NyAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHRzZl9uYXRpdmVfYXJyYXlfdCAqYXJyYXkgPQorICAgICAgICAgICAgKHRzZl9uYXRp
dmVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMikgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAg
dWludDMyX3QgZWxlX3NpemUgPSBJTlRfU1RSRUFNKDEpOworICAgICAgICAKKyAgICAgICAgYXJy
YXktPmRhdGEgPSB0c2ZfY29uZF9hbGxvYyhyZWdpb24sZWxlX3NpemUgKiBhcnJheS0+bGVuKTsK
KyAgICAgICAgaWYgKGFycmF5LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7CisgICAgICAgICAgICBJTlRfRkFJ
TFVSRSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NFVCgw
LCBhcnJheS0+ZGF0YSk7CisjbGluZSAyOTA0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ0FMTCkKKyAgICB7
CisjbGluZSAyMTYyICJncGNfc3BlYy5pbiIKKyAgICAgICAgKCh2b2lkKCopKHZvaWQqKSlJTlRf
U1RSRUFNKDEpKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisjbGluZSAyOTEy
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQUREX0NCQUNLKQorICAgIHsKKyNsaW5lIDIxNjcgImdwY19zcGVj
LmluIgorICAgICAgICBpZiAoIXRzZl9yZWdpb25fYWRkX2NiYWNrKHJlZ2lvbiwKKyAgICAJCQkg
ICAgICAodm9pZCopSU5UX1NUUkVBTSgxKSwKKyAgICAJCQkgICAgICBJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSkpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCB0c2ZfcmVnaW9uX2FkZF9jYmFjaygpIik7CisgICAgCUlOVF9GQUlMVVJFKCk7CisgICAgICAg
IH0KKyNsaW5lIDI5MjUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZB
TkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9GUkVFX0lNTUVESUFURSkKKyAgICB7Cisj
bGluZSAyMTc3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgZnJlZShJTlRfU1RBQ0tfUFRSKDApKTsK
KyNsaW5lIDI5MzMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNF
KDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9GUkVFKQorICAgIHsKKyNsaW5lIDIxODIgImdw
Y19zcGVjLmluIgorICAgICAgICB2b2lkICoqYXJnID0gKHZvaWQqKikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBmcmVlKCphcmcpOworI2xpbmUgMjk0MiAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX1NUT1JFX1BUUikKKyAgICB7CisjbGluZSAyMTg4ICJncGNfc3BlYy5pbiIK
KyAgICAgICAgKigodWludHB0cl90KikoSU5UX1NUQUNLX1BUUigxKSArIElOVF9TVFJFQU0oMCkp
KSA9IElOVF9TVEFDSygwKTsKKyNsaW5lIDI5NTAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9TVE9SRV9QVFJf
Mk5EKQorICAgIHsKKyNsaW5lIDIxOTMgImdwY19zcGVjLmluIgorICAgICAgICAqKCh1aW50cHRy
X3QqKShJTlRfU1RBQ0tfUFRSKDIpICsgSU5UX1NUUkVBTSgwKSkpID0gSU5UX1NUQUNLKDApOwor
I2xpbmUgMjk1OCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
MSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1NUT1JFX1ZBTCkKKyAgICB7CisjbGluZSAyMTk4
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsg
SU5UX1NUUkVBTSgwKSkpID0KKyAgICAgICAgICAgICh1aW50MzJfdClJTlRfU1RBQ0soMCk7Cisj
bGluZSAyOTY3ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgx
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfUFVTSF9QVFIpCisgICAgSU5UX1BVU0goKTsKKyAg
ICB7CisjbGluZSAyMjA0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IHRtcD0qKCh1
aW50cHRyX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSkpOworICAgICAgICBJ
TlRfU1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5lIDI5NzcgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9QVVNIX1BU
Ul8yTkQpCisgICAgSU5UX1BVU0goKTsKKyAgICB7CisjbGluZSAyMjEwICJncGNfc3BlYy5pbiIK
KyAgICAgICAgdWludHB0cl90IHRtcD0qKCh1aW50cHRyX3QqKShJTlRfU1RBQ0tfUFRSKDIpICsg
SU5UX1NUUkVBTSgwKSkpOworICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5lIDI5
ODcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9QVVNIX1BUUl8zUkQpCisgICAgSU5UX1BVU0goKTsKKyAgICB7
CisjbGluZSAyMjE2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IHRtcD0qKCh1aW50
cHRyX3QqKShJTlRfU1RBQ0tfUFRSKDMpICsgSU5UX1NUUkVBTSgwKSkpOworICAgICAgICBJTlRf
U1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5lIDI5OTcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9QVVNIX1ZBTCkK
KyAgICBJTlRfUFVTSCgpOworICAgIHsKKyNsaW5lIDIyMjIgImdwY19zcGVjLmluIgorICAgICAg
ICB1aW50MzJfdCB0bXA9KigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVB
TSgwKSkpOworICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5lIDMwMDcgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9EVVBfUFRSXzJORCkKKyAgICBJTlRfUFVTSCgpOworICAgIHsKKyNsaW5lIDIy
MjggImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgdG1wPSh1aW50cHRyX3QpSU5UX1NU
QUNLX1BUUigyKTsKKyAgICAgICAgSU5UX1NUQUNLX1NFVCgwLHRtcCk7CisjbGluZSAzMDE3ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfUE9QKQorICAgIHsKKyNsaW5lIDIyMzQgImdwY19zcGVjLmluIgorI2xp
bmUgMzAyNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX1BPUCgpOworICAg
IElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UV09fUE9QKQorICAgIHsK
KyNsaW5lIDIyMzggImdwY19zcGVjLmluIgorI2xpbmUgMzAzMiAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX1BPUCgpOworICAgIElOVF9QT1AoKTsKKyAgICBJTlRfQURWQU5D
RSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVEhSRUVfUE9QKQorICAgIHsKKyNsaW5lIDIy
NDIgImdwY19zcGVjLmluIgorI2xpbmUgMzA0MSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9
CisgICAgSU5UX1BPUCgpOworICAgIElOVF9QT1AoKTsKKyAgICBJTlRfUE9QKCk7CisgICAgSU5U
X0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JFUFVTSF9NVUxBRERfUFRSKQor
ICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMjI0NiAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IHZvaWQgKnRtcD1JTlRfU1RBQ0tfUFRSKDEpOworICAgICAgICB1aTMyX3RtcD1JTlRfU1RSRUFN
KDApOworICAgICAgICBJTlRfU1RBQ0tfUFRSX1NFVCgxLElOVF9TVEFDS19QVFIoMSkrCisgICAg
ICAgICAgICAoKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDIpICsgdWkzMl90bXApKQorICAg
ICAgICAgICAgICpJTlRfU1RSRUFNKDEpKSk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VUKDAs
dG1wKTsKKyNsaW5lIDMwNTggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9SRVBVU0hfTVVMQUREX1BUUl8yTkQp
CisgICAgSU5UX1BVU0goKTsKKyAgICB7CisjbGluZSAyMjU2ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdm9pZCAqdG1wPUlOVF9TVEFDS19QVFIoMSk7CisgICAgICAgIHVpMzJfdG1wPUlOVF9TVFJF
QU0oMCk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VUKDEsSU5UX1NUQUNLX1BUUigxKSsKKyAg
ICAgICAgICAgICgqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMykgKyB1aTMyX3RtcCkpCisg
ICAgICAgICAgICAgKklOVF9TVFJFQU0oMSkpKTsKKyAgICAgICAgSU5UX1NUQUNLX1BUUl9TRVQo
MCx0bXApOworI2xpbmUgMzA3MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPTVBGQUlMSlVNUCkKKyAgICB7
CisjbGluZSAyMjY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKElOVF9TVEFDS19QVFIoMCkg
Pj0gSU5UX1NUQUNLX1BUUigxKSkgeworICAgICAgICAgICAgSU5UX1NUUkVBTV9HT1RPKDApOwor
ICAgICAgICB9CisjbGluZSAzMDgyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09NUEZBSUxKVU1QXzJORCkK
KyAgICB7CisjbGluZSAyMjczICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKElOVF9TVEFDS19Q
VFIoMSkgPj0gSU5UX1NUQUNLX1BUUigyKSkgeworICAgICAgICAgICAgSU5UX1NUUkVBTV9HT1RP
KDApOworICAgICAgICB9CisjbGluZSAzMDkyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUREQ09NUEpVTVAp
CisgICAgeworI2xpbmUgMjI4MCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IGNvbnN0
YW50PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NFVCgw
LElOVF9TVEFDS19QVFIoMCkrY29uc3RhbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKElOVF9T
VEFDS19QVFIoMCkgPCBJTlRfU1RBQ0tfUFRSKDEpKSB7CisgICAgICAgICAgICBJTlRfU1RSRUFN
X0dPVE8oMSk7CisgICAgICAgIH0KKyNsaW5lIDMxMDYgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UV09fQURE
Q09NUEpVTVApCisgICAgeworI2xpbmUgMjI5MSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQz
Ml90IGRlc3RfY29uc3Q9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludDMyX3Qgc3JjX2NvbnN0
PUlOVF9TVFJFQU0oMSk7CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NFVCgxLElO
VF9TVEFDS19QVFIoMSkrZGVzdF9jb25zdCk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VUKDAs
SU5UX1NUQUNLX1BUUigwKStzcmNfY29uc3QpOworICAgICAgICAKKyAgICAgICAgaWYgKElOVF9T
VEFDS19QVFIoMSkgPCBJTlRfU1RBQ0tfUFRSKDIpKSB7CisgICAgICAgICAgICBJTlRfU1RSRUFN
X0dPVE8oMik7CisgICAgICAgIH0KKyNsaW5lIDMxMjIgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDMpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9aRVJPSlVN
UCkKKyAgICB7CisjbGluZSAyMzA0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKElOVF9TVEFD
SygwKT09MCkgeworICAgICAgICAgICAgSU5UX1NUUkVBTV9HT1RPKDApOworICAgICAgICB9Cisj
bGluZSAzMTMyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgx
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfREVDQ09NUEpVTVApCisgICAgeworI2xpbmUgMjMx
MSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmICgtLUlOVF9TVEFDSygwKSE9MCkgeworICAgICAg
ICAgICAgSU5UX1NUUkVBTV9HT1RPKDApOworICAgICAgICB9CisjbGluZSAzMTQyICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfQ0hFQ0tDSE9JQ0UpCisgICAgeworI2xpbmUgMjMxOCAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHVpbnRwdHJfdCBudW1fY2hvaWNlcz0odHNmX2Nob2ljZV90KUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIGlmIChJTlRfU1RBQ0soMCkhPVVJTlQzMl9NQVggJiYgSU5UX1NUQUNLKDApPj1u
dW1fY2hvaWNlcykgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJP
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY2hvaWNlIHZhbHVlIik7Cisg
ICAgICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9CisjbGluZSAzMTU1ICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfVEFCTEVTRVRfTE9DQUxfVE9fRklFTEQpCisgICAgeworI2xpbmUgMjMyOCAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAg
ICB1aW50MzJfdCBudW09SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgaWYgKElOVF9TVEFDSygwKT09
VUlOVDMyX01BWCkgeworICAgICAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDEp
ICsgb2Zmc2V0KSk9VUlOVDMyX01BWDsKKyAgICAgICAgfSBlbHNlIGlmIChJTlRfU1RBQ0soMCk+
PW51bSkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlRBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxEIGJvdW5kcyBl
cnJvcjogZ290ICIgZnVpMzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBidXQgaGFkIGFu
IHVwcGVyIGJvdW5kIG9mICIgZnVpMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50
MzJfdClJTlRfU1RBQ0soMCksbnVtKTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkg
KyBvZmZzZXQpKT0KKyAgICAgICAgICAgICAgICBJTlRfU1RSRUFNKDIrSU5UX1NUQUNLKDApKTsK
KyAgICAgICAgfQorI2xpbmUgMzE3NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX1BPUCgpOworICAgIElOVF9BRFZBTkNFKDIrSU5UX1NUUkVBTSgxKSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX1RBQkxFU0VUX0ZJRUxEX1RPX0ZJRUxEKQorICAgIHsKKyNsaW5lIDIzNDYg
ImdwY19zcGVjLmluIgorICAgICAgICB1aW50MzJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDAp
OworICAgICAgICB1aW50MzJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgIHVp
bnQzMl90IG51bT1JTlRfU1RSRUFNKDIpOworICAgICAgICAKKyAgICAgICAgdWludDMyX3QgdmFs
dWU9KigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHZhbHVlPT1VSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAqKCh1aW50
MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpPVVJTlQzMl9NQVg7CisgICAg
ICAgIH0gZWxzZSBpZiAodmFsdWU+PW51bSkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihU
U0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRBQkxFU0VUX0ZJ
RUxEX1RPX0ZJRUxEIGJvdW5kcyBlcnJvcjogZ290ICIgZnVpMzIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiBidXQgaGFkIGFuIHVwcGVyIGJvdW5kIG9mICIgZnVpMzIsdmFsdWUsbnVtKTsK
KyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpPQorICAgICAg
ICAgICAgICAgIElOVF9TVFJFQU0oMyt2YWx1ZSk7CisgICAgICAgIH0KKyNsaW5lIDMyMDEgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDMrSU5UX1NUUkVBTSgy
KSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RBQkxFSlVNUF9GSUVMRCkKKyAgICB7CisjbGlu
ZSAyMzY3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0PUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIHVpbnQzMl90IG51bT1JTlRfU1RSRUFNKDEpOworICAgICAgICB1aW50MzJf
dCB2YWx1ZT0qKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBvZmZzZXQpKTsKKyAgICAg
ICAgaWYgKHZhbHVlPT1VSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAvKiBkbyBub3RoaW5nICov
CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWU+PW51bSkgeworICAgICAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRBQkxF
SlVNUCBib3VuZHMgZXJyb3I6IGdvdCAiIGZ1aTMyICIgYnV0IGhhZCBhbiAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ1cHBlciBib3VuZCBvZiAiIGZ1aTMyLHZhbHVlLG51bSk7CisgICAg
ICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSU5U
X1NUUkVBTV9HT1RPKDIrdmFsdWUpOworICAgICAgICB9CisjbGluZSAzMjIxICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyK0lOVF9TVFJFQU0oMSkpOworSU5U
X0VORCgpCisjdW5kZWYgSU5UX1NUUkVBTV9HT1RPCisjZGVmaW5lIElOVF9TVFJFQU1fR09UTyhh
cmcpIGRvIHtcCisgICAgSU5UX1BPUCgpO1wKKyAgICBJTlRfR09UTyhJTlRfU1RSRUFNKGFyZykp
O1wKK30gd2hpbGUgKDApCitJTlRfQkVHSU4oSV9UQUJMRUpVTVBfTE9DQUwpCisgICAgeworI2xp
bmUgMjM4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG51bT1JTlRfU1RSRUFNKDAp
OworICAgICAgICB1aW50cHRyX3QgdmFsdWU9SU5UX1NUQUNLKDApOworICAgICAgICBpZiAodmFs
dWU9PVVJTlQzMl9NQVgpIHsKKyAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi8KKyAgICAgICAg
fSBlbHNlIGlmICh2YWx1ZT49bnVtKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9F
X1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVEFCTEVKVU1QIGJvdW5k
cyBlcnJvcjogZ290ICIgZnVpMzIgIiBidXQgaGFkIGFuICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgInVwcGVyIGJvdW5kIG9mICIgZnVpMzIsKHVpbnQzMl90KUlOVF9TVEFDSygwKSxudW0p
OworICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIElOVF9TVFJFQU1fR09UTygxK3ZhbHVlKTsKKyAgICAgICAgfQorI2xpbmUgMzI0NSAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX1BPUCgpOworICAgIElOVF9BRFZBTkNF
KDErSU5UX1NUUkVBTSgwKSk7CitJTlRfRU5EKCkKKyN1bmRlZiBJTlRfU1RSRUFNX0dPVE8KKyNk
ZWZpbmUgSU5UX1NUUkVBTV9HT1RPKGFyZykgSU5UX0dPVE8oSU5UX1NUUkVBTShhcmcpKQorSU5U
X0JFR0lOKElfSlVNUCkKKyAgICB7CisjbGluZSAyNDAwICJncGNfc3BlYy5pbiIKKyAgICAgICAg
SU5UX1NUUkVBTV9HT1RPKDApOworI2xpbmUgMzI1NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JFVFVSTl9P
TkUpCisgICAgeworI2xpbmUgMjQwNSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIElOVF9DTEVBTlVQ
KCk7CisgICAgICAgIHJldHVybiAxOworI2xpbmUgMzI2NSAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JFVFVS
Tl9UT1BfV0lUSF9SRUdJT04pCisgICAgeworI2xpbmUgMjQxMSAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIHVpbnRwdHJfdCByZXN1bHQ9SU5UX1NUQUNLKDApOworICAgICAgICBJTlRfQ0xFQU5VUCgp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworI2xpbmUgMzI3NSAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JF
VFVSTl9PTkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUykKKyAgICB7CisjbGluZSAyNDE4ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIgPSAodHNmX2J1ZmZlcl90
KilJTlRfU1RBQ0tfUFRSKDEpOworICAgICAgICBidWZmZXItPnR5cGVzID0gdHNmX3R5cGVfaW5f
bWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKTsKKyAgICAgICAgYnVmZmVyLT5kYXRhID0gYnVmOwor
ICAgICAgICBidWZmZXItPnNpemUgPSBzaXplOworICAgICAgICBidWZmZXItPmtlZXAgPSBrZWVw
OworICAgICAgICBrZWVwID0gdHNmX2ZhbHNlOworICAgICAgICBJTlRfQ0xFQU5VUCgpOworICAg
ICAgICByZXR1cm4gMTsKKyNsaW5lIDMyOTAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9SRVRVUk5fT05FX0lO
SVRfQlVGX1dJVEhfVFlQRVNfRlJPTV9PVVRfTUFQKQorICAgIHsKKyNsaW5lIDI0MzAgImdwY19z
cGVjLmluIgorICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZlciA9ICh0c2ZfYnVmZmVyX3QqKUlO
VF9TVEFDS19QVFIoMSk7CisgICAgICAgIGlmIChyZWdpb24gPT0gTlVMTCkgeworICAgICAgICAg
ICAgYnVmZmVyLT50eXBlcyA9IHRzZl90eXBlX2luX21hcF9mcm9tX3R5cGVfb3V0X21hcChvdXRf
bWFwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlci0+dHlwZXMgPSB0c2Zf
dHlwZV9pbl9tYXBfZnJvbV90eXBlX291dF9tYXBfaW4ob3V0X21hcCwgcmVnaW9uKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoYnVmZmVyLT50eXBlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBJ
TlRfQ0xFQU5VUCgpOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlci0+ZGF0YSA9IGJ1ZjsKKyAg
ICAgICAgYnVmZmVyLT5zaXplID0gc2l6ZTsKKyAgICAgICAgYnVmZmVyLT5rZWVwID0ga2VlcDsK
KyAgICAgICAga2VlcCA9IHRzZl9mYWxzZTsKKyAgICAgICAgSU5UX0NMRUFOVVAoKTsKKyAgICAg
ICAgcmV0dXJuIDE7CisjbGluZSAzMzEyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorI3VuZGVmIElOVF9TVFJFQU1fR09UTwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19wcm9ncmFtLmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19wcm9n
cmFtLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL2dwY19wcm9ncmFtLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUEla
TE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImdwY19pbnRlcm5hbC5oIgorCitncGNfcHJvZ3JhbV90ICpncGNfcHJvZ3Jh
bV9mcm9tX3Byb3RvKGdwY19wcm90b190ICpwcm90bykgeworICAgIGdwY19pbnRhYmxlX3QgKmlu
dGFibGU7CisgICAgZ3BjX3Byb2dyYW1fdCAqcmV0OworICAgIAorICAgIGludGFibGUgPSBncGNf
aW50YWJsZV9mcm9tX3Byb3RvKHByb3RvKTsKKyAgICAKKyAgICBpZiAoaW50YWJsZSA9PSBOVUxM
KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQgPSBncGNfcHJv
Z3JhbV9mcm9tX2ludGFibGUoaW50YWJsZSk7CisKKyAgICBncGNfaW50YWJsZV9kZXN0cm95KGlu
dGFibGUpOworICAgIAorICAgIHJldHVybiByZXQ7Cit9CisKK2dwY19wcm9ncmFtX3QgKmdwY19w
cm9ncmFtX2Zyb21faW50YWJsZShncGNfaW50YWJsZV90ICppbnRhYmxlKSB7CisgICAgZ3BjX3By
b2dyYW1fdCAqcmV0OworCisgICAgcmV0ID0gbWFsbG9jKHNpemVvZihncGNfcHJvZ3JhbV90KSk7
CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCBtYWxsb2MgZ3BjX3Byb2dyYW1fdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKGdwY190aHJlYWRlZF9zdXBwb3J0ZWQoKSkgeworICAgICAgICByZXQtPnBh
eWxvYWQ9Z3BjX3RocmVhZGVkX2Zyb21faW50YWJsZShpbnRhYmxlKTsKKyAgICAgICAgaWYgKHJl
dC0+cGF5bG9hZD09TlVMTCkgeworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0LT5ydW5uZXI9KGdwY19wcm9ncmFt
X3J1bm5lcl90KWdwY190aHJlYWRlZF9ydW47CisgICAgICAgIHJldC0+ZGVzdHJveWVyPShncGNf
cHJvZ3JhbV9kZXN0cm95ZXJfdClncGNfdGhyZWFkZWRfZGVzdHJveTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICByZXQtPnBheWxvYWQ9Z3BjX2ludGFibGVfY2xvbmUoaW50YWJsZSk7CisgICAgICAg
IGlmIChyZXQtPnBheWxvYWQ9PU5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldC0+cnVubmVyPShncGNf
cHJvZ3JhbV9ydW5uZXJfdClncGNfaW50YWJsZV9ydW47CisgICAgICAgIHJldC0+ZGVzdHJveWVy
PShncGNfcHJvZ3JhbV9kZXN0cm95ZXJfdClncGNfaW50YWJsZV9kZXN0cm95OworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIGdwY19wcm9ncmFtX2Rlc3Ryb3koZ3BjX3By
b2dyYW1fdCAqcHJvZykgeworICAgIChwcm9nLT5kZXN0cm95ZXIpKHByb2ctPnBheWxvYWQpOwor
ICAgIGZyZWUocHJvZyk7Cit9CisKK3VpbnRwdHJfdCBncGNfcHJvZ3JhbV9ydW4oZ3BjX3Byb2dy
YW1fdCAqcHJvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90ICphcmdzKSB7CisgICAgcmV0dXJuIChw
cm9nLT5ydW5uZXIpKHByb2ctPnBheWxvYWQsIHJlZ2lvbiwgYXJncyk7Cit9CisKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfcHJvdG8uYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX3Byb3RvLmMJKG5v
bmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19w
cm90by5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUEla
TE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiZ3BjX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCitncGNfcHJvdG9f
dCAqZ3BjX3Byb3RvX2NyZWF0ZSh1aW50MzJfdCBudW1fYXJncykgeworICAgIGdwY19wcm90b190
ICpyZXQ9bWFsbG9jKHNpemVvZihncGNfcHJvdG9fdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsK
KyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBncGNfcHJvdG9fdCIpOwor
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT5udW1fYXJncz1udW1f
YXJnczsKKyAgICByZXQtPnN0cmVhbT1OVUxMOworICAgIHJldC0+c2l6ZT0wOworICAgIAorICAg
IHJldHVybiByZXQ7Cit9CisKK3ZvaWQgZ3BjX3Byb3RvX2Rlc3Ryb3koZ3BjX3Byb3RvX3QgKnBy
b3RvKSB7CisgICAgaWYgKHByb3RvLT5zdHJlYW0hPU5VTEwpIHsKKyAgICAgICAgZnJlZShwcm90
by0+c3RyZWFtKTsKKyAgICB9CisgICAgZnJlZShwcm90byk7Cit9CisKK3RzZl9ib29sX3QgZ3Bj
X3Byb3RvX3Jlc2VydmUoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBudW1fc2xvdHMpIHsKKyAgICBpZiAocHJvdG8tPnN0cmVhbT09TlVM
TCkgeworICAgICAgICBwcm90by0+c3RyZWFtPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkqbnVt
X3Nsb3RzKTsKKyAgICAgICAgaWYgKHByb3RvLT5zdHJlYW09PU5VTEwpIHsKKyAgICAgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgZ3BjX2NlbGxfdCBhcnJheSIpOworICAg
ICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGdwY19jZWxsX3QgKm5ld19hcnJheT0KKyAgICAgICAgICAgIHJlYWxsb2MocHJvdG8tPnN0
cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdwY19jZWxsX3QpCisgICAgICAgICAg
ICAgICAgICAgICogKHByb3RvLT5zaXplK251bV9zbG90cykpOworICAgICAgICBpZiAobmV3X2Fy
cmF5PT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgcmVhbGxv
YyBncGNfY2VsbF90IGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHByb3RvLT5zdHJlYW09bmV3X2FycmF5OworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZChncGNf
cHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBp
bnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikgeworICAgIHZhX2xpc3QgbHN0
OworICAgIHVpbnQzMl90IHNpemU9Z3BjX2luc3RydWN0aW9uX3N0YXRpY19zaXplKGluc3QpOwor
ICAgIAorICAgIHZhX3N0YXJ0KGxzdCxpbnN0KTsKKworICAgIGlmIChzaXplPT1VSU5UMzJfTUFY
KSB7CisgICAgICAgIGdwY19jZWxsX3QgbGVuPQorICAgICAgICAgICAgdmFfYXJnKGxzdCxncGNf
Y2VsbF90KTsKKworICAgICAgICBpZiAoIWdwY19wcm90b19yZXNlcnZlKHByb3RvLDIrbGVuKSkg
eworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1pbnN0OworICAgICAgICBwcm90by0+
c3RyZWFtW3Byb3RvLT5zaXplKytdPWxlbjsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChsZW4t
LT4wKSB7CisgICAgICAgICAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPQorICAgICAg
ICAgICAgICAgIHZhX2FyZyhsc3QsZ3BjX2NlbGxfdCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKCFncGNfcHJvdG9f
cmVzZXJ2ZShwcm90byxzaXplKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0K
KyAgICAKKyAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPWluc3Q7CisgICAgCisgICAg
d2hpbGUgKC0tc2l6ZT4wKSB7CisgICAgICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109
CisgICAgICAgICAgICB2YV9hcmcobHN0LGdwY19jZWxsX3QpOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZF90YWJsZXNl
dF9sb2NhbF90b19maWVsZChncGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxf
dCBudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ3BjX2NlbGxfdCAqYXJncykgeworICAgIHVpbnQzMl90IGk7CisKKyAgICBpZiAo
IWdwY19wcm90b19yZXNlcnZlKHByb3RvLDMrbnVtKSkgeworICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgIH0KKyAgICAKKyAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPUdQQ19J
X1RBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxEOworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUr
K109b2Zmc2V0OworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109bnVtOworICAgIAor
ICAgIGZvciAoaT0wO2k8bnVtOysraSkgeworICAgICAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5z
aXplKytdPWFyZ3NbaV07CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwor
dHNmX2Jvb2xfdCBncGNfcHJvdG9fYXBwZW5kX3RhYmxlc2V0X2ZpZWxkX3RvX2ZpZWxkKGdwY19w
cm90b190ICpwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfY2VsbF90IGRlc3Rfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3Qgc3JjX29mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2Vs
bF90IG51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBncGNfY2VsbF90ICphcmdzKSB7CisgICAgdWludDMyX3QgaTsKKworICAgIGlm
ICghZ3BjX3Byb3RvX3Jlc2VydmUocHJvdG8sNCtudW0pKSB7CisgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorICAgIAorICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109R1BD
X0lfVEFCTEVTRVRfRklFTERfVE9fRklFTEQ7CisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6
ZSsrXT1kZXN0X29mZnNldDsKKyAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPXNyY19v
ZmZzZXQ7CisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1udW07CisgICAgCisgICAg
Zm9yIChpPTA7aTxudW07KytpKSB7CisgICAgICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUr
K109YXJnc1tpXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2Zf
Ym9vbF90IGdwY19wcm90b19hcHBlbmRfdGFibGVqdW1wX2xvY2FsKGdwY19wcm90b190ICpwcm90
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxf
dCBudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdwY19jZWxsX3QgKmFyZ3MpIHsKKyAgICB1aW50MzJfdCBpOworCisgICAgaWYgKCFncGNfcHJv
dG9fcmVzZXJ2ZShwcm90bywyK251bSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICB9CisgICAgCisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1HUENfSV9UQUJMRUpV
TVBfTE9DQUw7CisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1udW07CisgICAgCisg
ICAgZm9yIChpPTA7aTxudW07KytpKSB7CisgICAgICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNp
emUrK109YXJnc1tpXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0
c2ZfYm9vbF90IGdwY19wcm90b19hcHBlbmRfdGFibGVqdW1wX2ZpZWxkKGdwY19wcm90b190ICpw
cm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2Nl
bGxfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdwY19jZWxsX3QgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBncGNfY2VsbF90ICphcmdzKSB7CisgICAgdWludDMyX3QgaTsKKworICAgIGlm
ICghZ3BjX3Byb3RvX3Jlc2VydmUocHJvdG8sMytudW0pKSB7CisgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorICAgIAorICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109R1BD
X0lfVEFCTEVKVU1QX0ZJRUxEOworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109b2Zm
c2V0OworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109bnVtOworICAgIAorICAgIGZv
ciAoaT0wO2k8bnVtOysraSkgeworICAgICAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytd
PWFyZ3NbaV07CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordm9pZCBn
cGNfcHJvdG9fcHJpbnQoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAg
RklMRSAqb3V0KSB7CisgICAgdWludDMyX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcHJvdG8t
PnNpemU7KSB7CisgICAgICAgIHVpbnQzMl90IHNpemUgPSBncGNfaW5zdHJ1Y3Rpb25fc2l6ZShw
cm90by0+c3RyZWFtICsgaSk7CisgICAgICAgIGlmIChwcm90by0+c3RyZWFtW2ldID09IEdQQ19J
X0xBQkVMKSB7CisgICAgICAgICAgICBmcHJpbnRmKG91dCwgZnVpNjQgIjoiLCAodWludDY0X3Qp
cHJvdG8tPnN0cmVhbVtpICsgMV0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdWlu
dDMyX3QgajsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU9CisgICAgICAgICAgICAgICAg
Z3BjX2luc3RydWN0aW9uX3RvX3N0cmluZyhwcm90by0+c3RyZWFtW2ldKTsKKyAgICAgICAgICAg
IGlmIChzdHJsZW4obmFtZSkgPCAzNSkgeworICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGog
PCAzNSAtIHN0cmxlbihuYW1lKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmludGYo
b3V0LCAiICIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGZwcmludGYob3V0LCAiJXMiLCBuYW1lKTsKKyAgICAgICAgICAgIGZvciAoaiA9IDE7IGogPCBz
aXplOyArK2opIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIlx0IiBmdWk2NCwgKHVp
bnQ2NF90KXByb3RvLT5zdHJlYW1baSArIGpdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBmcHJpbnRmKG91dCwgIlxuIik7CisgICAgICAgIGkgKz0gc2l6ZTsKKyAgICB9Cit9
CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfc3RhY2tf
aGVpZ2h0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL2dwY19zdGFja19oZWlnaHQuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX3N0YWNrX2hlaWdodC5jCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZp
bGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiZ3BjX2ludGVybmFsLmgiCisKKyNkZWZpbmUg
QyhleHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghKGV4cCkpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGdvdG8gZmFpbHVyZTsgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorfSB3aGlsZSAoMCkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGdwY19jZWxsX3Qg
KmNlbGw7CisgICAgaW50cHRyX3QgaGVpZ2h0OworfSB3b3JrbGlzdF9pdGVtX3Q7CisKKyNpbmNs
dWRlICJncGNfd29ya2xpc3QuaCIKKworc3RhdGljIGlubGluZSB0c2ZfYm9vbF90IHBvcCh3b3Jr
bGlzdF90ICp3b3JrbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxf
dCAqKmNlbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90ICpoZWlnaHQp
IHsKKyAgICB3b3JrbGlzdF9pdGVtX3QgKml0ZW09d29ya2xpc3RfcG9wKHdvcmtsaXN0KTsKKyAg
ICBpZiAoaXRlbT09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICAqY2VsbD1pdGVtLT5jZWxsOworICAgICpoZWlnaHQ9aXRlbS0+aGVpZ2h0OworICAg
IAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSB0c2ZfYm9vbF90IHB1
c2god29ya2xpc3RfdCAqd29ya2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
cGNfY2VsbF90ICpjZWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cHRyX3Qg
aGVpZ2h0KSB7CisgICAgd29ya2xpc3RfaXRlbV90ICppdGVtPXdvcmtsaXN0X3B1c2god29ya2xp
c3QpOworICAgIGlmIChpdGVtPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIGl0ZW0tPmNlbGw9Y2VsbDsKKyAgICBpdGVtLT5oZWlnaHQ9aGVpZ2h0
OworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RydWN0IGJyYW5jaF9hY3Rpb25f
Y2xvc3VyZSB7CisgICAgd29ya2xpc3RfdCAqd29ya2xpc3Q7CisgICAgaW50cHRyX3QgaGVpZ2h0
OworfTsKKworc3RhdGljIHRzZl9ib29sX3QgYnJhbmNoX2FjdGlvbihncGNfY2VsbF90ICpjZWxs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAgICBzdHJ1
Y3QgYnJhbmNoX2FjdGlvbl9jbG9zdXJlICpjbG9zdXJlPWFyZzsKKyAgICByZXR1cm4gcHVzaChj
bG9zdXJlLT53b3JrbGlzdCwoZ3BjX2NlbGxfdCopKmNlbGwsY2xvc3VyZS0+aGVpZ2h0KTsKK30K
KwordHNmX3N0X3RhYmxlICpncGNfaW50YWJsZV9nZXRfc3RhY2tfaGVpZ2h0cyhncGNfaW50YWJs
ZV90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnRwdHJfdCAqbWF4X2hlaWdodCkgeworICAgIHRzZl9zdF90YWJsZSAqcmV0PXRzZl9zdF9pbml0
X3B0cnRhYmxlKCk7CisgICAgZ3BjX2NlbGxfdCAqY3VyOworICAgIGludHB0cl90IGhlaWdodDsK
KyAgICB3b3JrbGlzdF90IHdvcmtsaXN0OworICAgIAorICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAg
ICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHRzZl9zdF9pbml0X251bXRhYmxlKCkiKTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghd29ya2xpc3RfaW5p
dCgmd29ya2xpc3QpKSB7CisgICAgICAgIHRzZl9zdF9mcmVlX3RhYmxlKHJldCk7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBDKHB1c2goJndvcmtsaXN0LAorICAgICAg
ICAgICBncGNfaW50YWJsZV9nZXRfc3RyZWFtKHByb2cpLAorICAgICAgICAgICBncGNfaW50YWJs
ZV9nZXRfbnVtX2FyZ3MocHJvZykpKTsKKyAgICAKKyAgICBpZiAobWF4X2hlaWdodCE9TlVMTCkg
eworICAgICAgICAqbWF4X2hlaWdodD0wOworICAgIH0KKyAgICAKKyAgICB3aGlsZSAocG9wKCZ3
b3JrbGlzdCwmY3VyLCZoZWlnaHQpKSB7CisgICAgICAgIGludHB0cl90IGdvdF9oZWlnaHQ7Cisg
ICAgICAgIAorICAgICAgICBpZiAodHNmX3N0X2xvb2t1cChyZXQsKGNoYXIqKWN1ciwodm9pZCoq
KSZnb3RfaGVpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGdvdF9oZWlnaHQgIT0gaGVpZ2h0KSB7
CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9TRU1BTlRJQywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3RhY2sgaGVpZ2h0IGlzIGRpZmZlcmVudCBvbiB0
d28gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBhcHByb2FjaGVz
IHRvIHRoZSBzYW1lIHBpZWNlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBj
b2RlIik7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY29udGludWU7ICAgLyogd2UndmUgc2VlbiBpdCBzbyB3ZSBkb24ndCBuZWVkIHRv
IGRvIGFueXRoaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBlbHNlLiAqLworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpZiAodHNmX3N0X2FkZF9kaXJlY3QocmV0LChjaGFyKilj
dXIsKHZvaWQqKWhlaWdodCk8MCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IHRzZl9zdF9hZGRfZGlyZWN0KCkiKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1heF9oZWlnaHQhPU5VTEwgJiYgaGVpZ2h0
PiptYXhfaGVpZ2h0KSB7CisgICAgICAgICAgICAqbWF4X2hlaWdodD1oZWlnaHQ7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGhlaWdodCs9Z3BjX2luc3RydWN0aW9uX3N0YWNrX2VmZmVj
dHMoKmN1cik7CisgICAgICAgIAorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgYnJhbmNo
X2FjdGlvbl9jbG9zdXJlIGNsb3N1cmU7CisgICAgICAgICAgICBjbG9zdXJlLndvcmtsaXN0PSZ3
b3JrbGlzdDsKKyAgICAgICAgICAgIGNsb3N1cmUuaGVpZ2h0PWhlaWdodDsKKyAgICAgICAgICAg
IEMoZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxfYnJhbmNoZXMoY3VyLGJyYW5jaF9hY3Rpb24sJmNs
b3N1cmUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGdwY19pbnN0cnVjdGlv
bl9pc19jb250aW51b3VzKCpjdXIpKSB7CisgICAgICAgICAgICBDKHB1c2goJndvcmtsaXN0LGN1
citncGNfaW5zdHJ1Y3Rpb25fc2l6ZShjdXIpLGhlaWdodCkpOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIHdvcmtsaXN0X2RvbmUoJndvcmtsaXN0KTsKKyAgICAKKyAgICByZXR1cm4gcmV0
OworICAgIAorZmFpbHVyZToKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShyZXQpOworICAgIHdvcmts
aXN0X2RvbmUoJndvcmtsaXN0KTsKKyAgICAKKyAgICByZXR1cm4gTlVMTDsKK30KKworCkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX3RocmVhZGVkLmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY190aHJl
YWRlZC5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L3RzZi9ncGNfdGhyZWFkZWQuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAg
UElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImdwY19pbnRlcm5hbC5oIgorI2luY2x1ZGUgInRzZl9mb3JtYXQuaCIK
KworI2lmZGVmIEhBVkVfQUREUkVTU19PRl9MQUJFTAorCisjaWZkZWYgSEFWRV9QVEhSRUFECisj
aW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKK3RzZl9ib29sX3QgZ3BjX3RocmVhZGVkX3N1
cHBvcnRlZCgpIHsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB2b2lkKiBjb25z
dCAqIGluc3RydWN0aW9uX2Rpc3BhdGNoID0gTlVMTDsKKworc3RhdGljIHRzZl9vbmNlX3Qgb25j
ZV9jb250cm9sID0gVFNGX09OQ0VfSU5JVDsKKworc3RhdGljIHZvaWQgaW5pdF9pbnN0cnVjdGlv
bl9kaXNwYXRjaCgpIHsKKyAgICBncGNfdGhyZWFkZWRfcnVuKE5VTEwsIE5VTEwsIDApOworfQor
CitzdGF0aWMgdHNmX2Jvb2xfdCBjb3JyZWN0X2JyYW5jaChncGNfY2VsbF90ICpjZWxsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7CisgICAgKCpjZWxsKSA9
IChncGNfY2VsbF90KSgoKGdwY19jZWxsX3QqKSAqIGNlbGwpICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzaXplX3QpYXJnKTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK2dwY190
aHJlYWRlZF90ICpncGNfdGhyZWFkZWRfZnJvbV9pbnRhYmxlKGdwY19pbnRhYmxlX3QgKmludGFi
bGUpIHsKKyAgICBncGNfdGhyZWFkZWRfdCAqcmV0OworICAgIGdwY19jZWxsX3QgKndyaXRlOwor
ICAgIAorICAgIHRzZl9vbmNlKCZvbmNlX2NvbnRyb2wsIGluaXRfaW5zdHJ1Y3Rpb25fZGlzcGF0
Y2gpOworICAgIAorICAgIHJldCA9IG1hbGxvYyhzaXplb2YoZ3BjX3RocmVhZGVkX3QpKTsKKyAg
ICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1h
bGxvYyBncGNfdGhyZWFkZWRfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAg
CisgICAgcmV0LT5udW1fYXJncyA9IGludGFibGUtPm51bV9hcmdzOworICAgIHJldC0+c2l6ZSA9
IGludGFibGUtPnNpemU7CisgICAgcmV0LT5tYXhfaGVpZ2h0ID0gaW50YWJsZS0+bWF4X2hlaWdo
dDsKKyAgICAKKyAgICByZXQtPnN0cmVhbSA9IG1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkgKiBy
ZXQtPnNpemUpOworICAgIGlmIChyZXQtPnN0cmVhbSA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2Mgc3RyZWFtIGZvciBncGNfdGhyZWFkZWRfdCIpOwor
ICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAg
ICBtZW1jcHkocmV0LT5zdHJlYW0sIGludGFibGUtPnN0cmVhbSwgc2l6ZW9mKGdwY19jZWxsX3Qp
ICogcmV0LT5zaXplKTsKKyAgICAKKyAgICBmb3IgKHdyaXRlID0gcmV0LT5zdHJlYW07CisgICAg
ICAgICB3cml0ZSA8IHJldC0+c3RyZWFtICsgcmV0LT5zaXplOykgeworICAgICAgICB1aW50MzJf
dCBzaXplID0gZ3BjX2luc3RydWN0aW9uX3NpemUod3JpdGUpOworICAgICAgICAKKyAgICAgICAg
Z3BjX2luc3RydWN0aW9uX2Zvcl9hbGxfYnJhbmNoZXMoCisgICAgICAgICAgICB3cml0ZSwgY29y
cmVjdF9icmFuY2gsICh2b2lkKikocmV0LT5zdHJlYW0gLSBpbnRhYmxlLT5zdHJlYW0pKTsKKwor
ICAgICAgICAqd3JpdGUgPSAoZ3BjX2NlbGxfdClpbnN0cnVjdGlvbl9kaXNwYXRjaFsqd3JpdGVd
OworICAgICAgICAKKyAgICAgICAgd3JpdGUgKz0gc2l6ZTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHJldDsKK30KKwordm9pZCBncGNfdGhyZWFkZWRfZGVzdHJveShncGNfdGhyZWFkZWRfdCAq
dGhyZWFkZWQpIHsKKyAgICBmcmVlKHRocmVhZGVkLT5zdHJlYW0pOworICAgIGZyZWUodGhyZWFk
ZWQpOworfQorCisjZGVmaW5lIElOVF9CRUdJTihpbnN0X25hbWUpIFwKKyAgICBpbnN0X25hbWU6
IC8qIHByaW50ZigiJXNcbiIsI2luc3RfbmFtZSk7ICovICsraW5zdDsgeworCisjZGVmaW5lIElO
VF9FTkQoKSBcCisgICAgfSBnb3RvICoodm9pZCopKmluc3Q7CisKKyNkZWZpbmUgSU5UX0FEVkFO
Q0UoYW1vdW50KSBcCisgICAgKGluc3QgKz0gKGFtb3VudCkpCisKKyNkZWZpbmUgSU5UX0dPVE8o
dmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkICp0bXAgPSAo
dm9pZCopdmFsdWU7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGluc3QgPSB0bXA7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byAqKHZvaWQqKSppbnN0OyAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNpbmNsdWRlICJncGNf
aW50X2NvbW1vbi5oIgorCit1aW50cHRyX3QgZ3BjX3RocmVhZGVkX3J1bihncGNfdGhyZWFkZWRf
dCAqcHJvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgKmFyZ3MpIHsKKyAgICBzdGF0aWMgdm9p
ZCAqaW5zdHJ1Y3Rpb25zW109eworI2luY2x1ZGUgImdwY19pbnN0cnVjdGlvbl9kaXNwYXRjaC5n
ZW4iCisgICAgfTsKKworICAgIHVpbnRwdHJfdCAqaW5zdDsKKyAgICB1aW50OF90ICpidWYgPSBO
VUxMLAorICAgICAgICAgICAgKmN1ciA9IE5VTEwsCisgICAgICAgICAgICAqZW5kID0gTlVMTDsK
KyAgICB1aW50MzJfdCBzaXplID0gMDsKKyAgICB0c2ZfYm9vbF90IGtlZXAgPSB0c2ZfZmFsc2U7
CisgICAgdHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzID0gTlVMTDsKKyAgICAKKyAgICB0c2ZfdHlw
ZV9vdXRfbWFwX3QgKm91dF9tYXAgPSBOVUxMOworCisgICAgdHNmX2Jvb2xfdCBrZWVwX3JlZ2lv
biA9IHRzZl9mYWxzZTsKKyAgICAKKyAgICBpbnQ4X3QgaThfdG1wOworICAgIHVpbnQ4X3QgdWk4
X3RtcDsKKyAgICBpbnQxNl90IGkxNl90bXA7CisgICAgdWludDE2X3QgdWkxNl90bXA7CisgICAg
aW50MzJfdCBpMzJfdG1wOworICAgIHVpbnQzMl90IHVpMzJfdG1wOworICAgIGludDY0X3QgaTY0
X3RtcDsKKyAgICB1aW50NjRfdCB1aTY0X3RtcDsKKyAgICBmbG9hdCBmX3RtcDsKKyAgICBkb3Vi
bGUgZF90bXA7CisgICAgCisgICAgdWludHB0cl90ICpzdGFjazsKKyAgICB1aW50cHRyX3QgKnN0
YWNrX3RvcDsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGlmIChwcm9nID09IE5V
TEwpIHsKKyAgICAgICAgLyogdGhpcyBpcyBvdXIgc3BlY2lhbCBzaWduYWwgKi8KKyAgICAgICAg
aW5zdHJ1Y3Rpb25fZGlzcGF0Y2ggPSBpbnN0cnVjdGlvbnM7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICAKKyAgICBzdGFjayA9IGFsbG9jYShzaXplb2YodWludHB0cl90KSAqIHByb2ct
Pm1heF9oZWlnaHQpOworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBzdGFjayIpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgCisgICAgc3RhY2tfdG9wID0gc3RhY2sgLSAxOworICAgIAorICAgIGZvciAoaSA9
IDA7IGkgPCBwcm9nLT5udW1fYXJnczsgKytpKSB7CisgICAgICAgIElOVF9QVVNIKCk7CisgICAg
ICAgIElOVF9TVEFDSygwKSA9IGFyZ3NbaV07CisgICAgfQorICAgIAorICAgIElOVF9HT1RPKHBy
b2ctPnN0cmVhbSk7CisKKyNpbmNsdWRlICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorCitib3VuZHNf
ZXJyb3I6CisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwgIkJvdW5kcyBjaGVj
ayBmYWlsdXJlIik7CisKK2ZhaWx1cmU6CisgICAgLyogZXJyb3IhICovCisgICAgaWYgKGtlZXAp
IHsKKyAgICAgICAgZnJlZShidWYpOworICAgIH0KKyAgICBpZiAoa2VlcF9yZWdpb24pIHsKKyAg
ICAgICAgdHNmX3JlZ2lvbl9mcmVlKHJlZ2lvbik7CisgICAgfQorICAgIGlmIChvdXRfbWFwICE9
IE5VTEwpIHsKKyAgICAgICAgdHNmX3R5cGVfb3V0X21hcF9kZXN0cm95KG91dF9tYXApOworICAg
IH0KKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKwordHNmX2Jvb2xfdCBncGNfdGhyZWFkZWRf
c3VwcG9ydGVkKCkgeworICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKK2dwY190aHJlYWRlZF90
ICpncGNfdGhyZWFkZWRfZnJvbV9pbnRhYmxlKGdwY19pbnRhYmxlX3QgKmludGFibGUpIHsKKyAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAi
VGhyZWFkZWQgaW50ZXJwcmV0YXRpb24gc3VwcG9ydCB3YXMgbm90IGNvbXBpbGVkIGludG8gIgor
ICAgICAgICAgICAgICAgICAgInRoZSBUU0YgcGFja2FnZS4gIFRoaXMgaXMgYmVjYXVzZSB0aGUg
YWRkcmVzcy1vZi1sYWJlbCAiCisgICAgICAgICAgICAgICAgICAiZXh0ZW5zaW9uIHdhcyBub3Qg
c3VwcG9ydGVkIGJ5IHlvdXIgY29tcGlsZXIuIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3Zv
aWQgZ3BjX3RocmVhZGVkX2Rlc3Ryb3koZ3BjX3RocmVhZGVkX3QgKnRocmVhZGVkKSB7CisgICAg
dHNmX2Fib3J0KCJDYWxsIHRvIGdwY190aHJlYWRlZF9kZXN0cm95KCkgaW4gYSBwcm9ncmFtIHRo
YXQgc2hvdWxkICIKKyAgICAgICAgICAgICAgIm5ldmVyIGhhdmUgYmVlbiBhYmxlIHRvIGNyZWF0
ZSBhIGdwY190aHJlYWRlZF90LCBiZWNhdXNlICIKKyAgICAgICAgICAgICAgInRocmVhZGVkIGlu
dGVycHJldGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cit9CisKK3VpbnRwdHJfdCBncGNfdGhy
ZWFkZWRfcnVuKGdwY190aHJlYWRlZF90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqcmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCAq
YXJncykgeworICAgIHRzZl9hYm9ydCgiQ2FsbCB0byBncGNfdGhyZWFkZWRfcnVuKCkgaW4gYSBw
cm9ncmFtIHRoYXQgc2hvdWxkICIKKyAgICAgICAgICAgICAgIm5ldmVyIGhhdmUgYmVlbiBhYmxl
IHRvIGNyZWF0ZSBhIGdwY190aHJlYWRlZF90LCBiZWNhdXNlICIKKyAgICAgICAgICAgICAgInRo
cmVhZGVkIGludGVycHJldGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cit9CisKKyNlbmRpZgor
CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfd29ya2xp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2Yv
Z3BjX3dvcmtsaXN0LmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL2dwY193b3JrbGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQ
IFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJncGNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0Lmgi
CisKK3N0cnVjdCB3b3JrbGlzdCB7CisgICAgd29ya2xpc3RfaXRlbV90ICphcnJheTsKKyAgICB3
b3JrbGlzdF9pdGVtX3QgKmN1cjsKKyAgICBzaXplX3Qgc2l6ZTsKK307CisKK3R5cGVkZWYgc3Ry
dWN0IHdvcmtsaXN0IHdvcmtsaXN0X3Q7CisKK3N0YXRpYyBpbmxpbmUgdHNmX2Jvb2xfdCB3b3Jr
bGlzdF9pbml0KHdvcmtsaXN0X3QgKndvcmtsaXN0KSB7CisgICAgd29ya2xpc3QtPmFycmF5ID0g
TlVMTDsKKyAgICB3b3JrbGlzdC0+Y3VyID0gTlVMTDsKKyAgICB3b3JrbGlzdC0+c2l6ZSA9IDA7
CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgd29ya2xpc3Rf
ZG9uZSh3b3JrbGlzdF90ICp3b3JrbGlzdCkgeworICAgIGlmICh3b3JrbGlzdC0+YXJyYXkgIT0g
TlVMTCkgeworICAgICAgICBmcmVlKHdvcmtsaXN0LT5hcnJheSk7CisgICAgfQorfQorCitzdGF0
aWMgaW5saW5lIHdvcmtsaXN0X2l0ZW1fdCAqd29ya2xpc3RfcHVzaCh3b3JrbGlzdF90ICp3b3Jr
bGlzdCkgeworICAgIHdvcmtsaXN0X2l0ZW1fdCAqcmV0OworICAgIAorICAgIGlmICh3b3JrbGlz
dC0+Y3VyID09IHdvcmtsaXN0LT5hcnJheSt3b3JrbGlzdC0+c2l6ZSkgeworICAgICAgICBpZiAo
d29ya2xpc3QtPmFycmF5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHdvcmtsaXN0LT5hcnJheSA9
IG1hbGxvYyhzaXplb2Yod29ya2xpc3RfaXRlbV90KSk7CisgICAgICAgICAgICBpZiAod29ya2xp
c3QtPmFycmF5ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgbWFsbG9jIHdvcmtsaXN0IGFycmF5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3b3JrbGlzdC0+Y3VyID0gd29ya2xpc3Qt
PmFycmF5OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd29ya2xpc3RfaXRlbV90ICpu
ZXdfYXJyYXkgPSByZWFsbG9jKHdvcmtsaXN0LT5hcnJheSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yod29ya2xpc3RfaXRlbV90KSAqCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgKyB3b3Jr
bGlzdC0+c2l6ZSkpOworICAgICAgICAgICAgaWYgKG5ld19hcnJheSA9PSBOVUxMKSB7CisgICAg
ICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHJlYWxsb2Mgd29ya2xpc3QgYXJy
YXkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHdvcmtsaXN0LT5jdXIgKz0gbmV3X2FycmF5LXdvcmtsaXN0LT5hcnJheTsKKyAgICAg
ICAgICAgIHdvcmtsaXN0LT5hcnJheSA9IG5ld19hcnJheTsKKyAgICAgICAgfQorICAgICAgICB3
b3JrbGlzdC0+c2l6ZSsrOworICAgIH0KKyAgICAKKyAgICByZXQgPSB3b3JrbGlzdC0+Y3VyOwor
ICAgIHdvcmtsaXN0LT5jdXIrKzsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5l
IHdvcmtsaXN0X2l0ZW1fdCAqd29ya2xpc3RfcG9wKHdvcmtsaXN0X3QgKndvcmtsaXN0KSB7Cisg
ICAgaWYgKHdvcmtsaXN0LT5jdXIgPT0gd29ya2xpc3QtPmFycmF5KSB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKworICAgIHJldHVybiAtLXdvcmtsaXN0LT5jdXI7Cit9CisKKwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2YuaAkobm9uZXhpc3Rl
bnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyNzUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDA2LCAyMDExLCAyMDE0LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklM
SVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisv
KgorICogU3R1ZmYgdG8ga25vdzoKKyAqCisgKiBNZW1vcnkgbWFuYWdlbWVudCBjb252ZW50aW9u
czogdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQsIGFsbCBvYmplY3RzCisgKiBhbGxvY2F0ZWQgYnkg
ZnVuY3Rpb25zIHRoYXQgeW91IGNhbGwgYmVjb21lIHlvdXIgcmVzcG9uc2liaWxpdHkgYWZ0ZXIK
KyAqIGEgc3VjY2Vzc2Z1bCByZXR1cm4uICBhbHNvLCB1bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZCwg
cGFzc2luZyBhbgorICogb2JqZWN0IGFzIGEgZmlyc3QgYXJndW1lbnQgdG8gYSBmdW5jdGlvbiBk
b2VzIG5vdCBjbGVhciB5b3VyIG93bmVyc2hpcAorICogb2YgdGhhdCBvYmplY3QuICBhbmQgdW5s
ZXNzIG90aGVyd2lzZSBzdGF0ZWQsIG9iamVjdHMgcGFzc2VkIGFzIGFueXRoaW5nCisgKiBidXQg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlY29tZSB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBmdW5j
dGlvbiwKKyAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhhdCBmdW5jdGlvbiByZXR1
cm5zIHN1Y2Nlc3NmdWxseS4KKyAqCisgKiBFcnJvciBtYW5hZ2VtZW50IGNvbnZlbnRpb25zOiBt
b3N0IGZ1bmN0aW9ucyByZXR1cm4gcG9pbnRlcnMgb3IgYm9vbGVhbnMuCisgKiBpbiB0aGUgY2Fz
ZSBvZiBwb2ludGVycywgaWYgdGhlIHBvaW50ZXIgcmV0dXJuZWQgaXMgTlVMTCwgdGhlbiB5b3Ug
bXVzdAorICogY2hlY2sgZm9yIGVycm9ycy4gIGluIHRoZSBjYXNlIG9mIGJvb2xlYW5zLCB5b3Ug
bXVzdCBjaGVjayBpZiB0aGUKKyAqIHJldHVybiB2YWx1ZSBpcyB0c2ZfZmFsc2UuCisgKgorICog
RXJyb3IgcHJvcGFnYXRpb246IHRob3NlIGZ1bmN0aW9ucyB0aGF0IGNsYWltIHRvIGJlIGNhcGFi
bGUgb2YgZXJyb3IKKyAqIHByb3BhZ2F0aW9uIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGFzIGlm
IHdpdGggYW4gZXJyb3Igd2l0aG91dCBhY3R1YWxseQorICogc2V0dGluZyB0aGUgZXJyb3IgaWYg
b25lIG9mIHRoZWlyIG9iamVjdCBhcmd1bWVudHMgaXMgTlVMTC4gIFRoaXMgYWxsb3dzCisgKiB5
b3UgdG8gZG86CisgKiBpZiAoIXRzZl9kb19vcGVyYXRpb24ob2JqZWN0MSxvYmoyLCAuLi4sIHRz
Zl9kb19vcF90aGF0X2ZhaWxzKCksLi4uKSkgeworICogICAgICAvLyBwcm9jZXNzIGVycm9yLgor
ICogfQorICogLi4uIGFuZCBzYWZlbHkgZXhwZWN0IHRoYXQgdGhpcyB3aWxsIGNvcnJlY3RseSBj
YXRjaCBlcnJvcnMgZnJvbQorICogdHNmX2RvX29wX3RoYXRfZmFpbHMoKSBpbiBhZGRpdGlvbiB0
byBjYXRjaGluZyBlcnJvcnMgZnJvbQorICogdHNmX2RvX29wZXJhdGlvbigpLgorICoKKyAqIENv
ZGUgZ2VuZXJhdGlvbi9uYXRpdmUgY29kZSBzdXBwb3J0L3N0cnVjdCBtYXBwaW5nOiB0aGlzIGZ1
bmN0aW9uYWxpdHkgaXMKKyAqIGNhcHR1cmVkIHVuZGVyIHRoZSAndHNmX25hdGl2ZScgbmFtZXNw
YWNlLCBidXQgaXQgZG9lcyBub3QgYWN0dWFsbHkgaGF2ZQorICogYW55IHN0cnVjdCBvciBjbGFz
cyBvciBvYmplY3Qgb2YgaXRzIG93bi4gIEluc3RlYWQsIHRoaXMgZnVuY3Rpb25hbGl0eSdzCisg
KiBzdGF0ZSBpcyBzcHJlYWQgYWNyb3NzIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uICBGaWVsZHMg
dGhhdCBoYXZlIHRoZSBzb2xlCisgKiBwdXJwb3NlIG9mIHN1cHBvcnRpbmcgY29kZSBnZW5lcmF0
aW9uIG9yIHN0cnVjdCBtYXBwaW5nIGFyZSBtYXJrZWQgYXMKKyAqIHN1Y2ggd2l0aCBhIGNvbW1l
bnQuCisgKi8KKworI2lmbmRlZiBGUF9UU0ZfSAorI2RlZmluZSBGUF9UU0ZfSAorCisjaW5jbHVk
ZSAidHNmX2NvbmZpZy5oIgorI2luY2x1ZGUgInRzZl9hdG9taWNzLmgiCisjaW5jbHVkZSAidHNm
X3N0LmgiCisjaW5jbHVkZSAidHNmX3JlZ2lvbi5oIgorI2luY2x1ZGUgInRzZl90eXBlcy5oIgor
I2luY2x1ZGUgInRzZl96aXBfYWJzdHJhY3QuaCIKKyNpbmNsdWRlICJ0c2Zfc2hhMS5oIgorCisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcu
aD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCisjaWYgMAorLyogaGFjayB0byBwcmV2ZW50IGVtYWNzIGZyb20gYmVpbmcg
Y29uZnVzZWQgKi8KK30KKyNlbmRpZgorCisvKiBtYWNybyB5b3UnbGwgZmluZCB1c2VmdWwgKi8K
KyNkZWZpbmUgdHNmX29mZnNldG9mKHR5cGUsZWxlbWVudCkgKChzaXplX3QpKCYoKCh0eXBlKilO
VUxMKS0+ZWxlbWVudCkpKQorCisvKiBhbnkgZXJyb3JzIGluIHRoaXMgZW51bWVyYXRpb24gbXVz
dCBhbHNvIGJlIHBsYWNlZCBpbiB0c2ZfZXJyb3IuYydzCisgKiBpbml0X2Vycm9yX2FycmF5KCkg
ZnVuY3Rpb24uICovCitlbnVtIHRzZl9lcnJvciB7CisgICAgVFNGX0VfRVJSTk8sICAgICAgICAg
ICAgLyogc3lzdGVtIGVycm9yOyBleGFtaW5lIGVycm5vIHZhbHVlIHJldHVybmVkCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICogZnJvbSB0c2ZfZ2V0X3N5c3RlbV9lcnJubygpICovCisg
ICAgVFNGX0VfWkxJQl9FUlJPUiwgICAgICAgLyogWkxpYiBlcnJvcjsgZXhhbWluZSB0aGUgZXJy
b3IgY29kZSByZXR1cm5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZyb20gdHNm
X2dldF96bGliX2Vycm9yX2NvZGUoKSBhbmQgYWxzbyB0aGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBlcnJvciBtZXNzYWdlIHJldHVybmVkIGZyb20KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiB0c2ZfZ2V0X3psaWJfZXJyb3JfbXNnKCkgKi8KKyAgICBUU0ZfRV9MSUJC
WklQMl9FUlJPUiwgICAvKiBsaWJiemlwMiBlcnJvcjsgZXhhbWluZSB0aGUgZXJyb3IgY29kZSBy
ZXR1cm5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZyb20gdHNmX2dldF9saWJi
emlwMl9lcnJvcl9jb2RlKCkgYW5kIGFsc28gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICogZXJyb3IgbWVzc2FnZSByZXR1cm5lZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICogdHNmX2dldF9saWJiemlwMl9lcnJvcl9tc2coKS4gIG5vdGUgdGhhdCB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsYXR0ZXIgZnVuY3Rpb24gcmV0dXJucyB0ZXh0
dWFsIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2VsZWN0ZWQgYnkg
VFNGIGFuZCBub3QgYnkgbGliYnppcDIuICB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqIG1lc3NhZ2VzIHdlcmUgd3JpdHRlbiBieSBtZSBiYXNlZCBvbiB0aGUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBsaWJiemlwMiBtYW51YWwuICovCisgICAgVFNGX0VfSU5W
QUxJRF9BUkcsICAgICAgLyogaW52YWxpZCBhcmd1bWVudCAqLworICAgIFRTRl9FX0JBRF9TVEFU
RSwgICAgICAgIC8qIGJhZCBzdGF0ZSAtIHRoZSBnaXZlbiBvcGVyYXRpb24gZG9lc24ndCBtYWtl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2Vuc2UgZm9yIHRoZSBjdXJyZW50IHN0
YXRlIG9mIHRoZSBvYmplY3QuICovCisgICAgVFNGX0VfU1RSX09WRVJGTE9XLCAgICAgLyogc3Ry
aW5nIG92ZXJmbG93LiAgc3RyaW5ncyB1c2VkIGFzIGVsZW1lbnQgbmFtZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiBpbiBzdHJ1Y3RzIGFuZCBjaG9pY2VzIGNhbm5vdCBiZSBsb25n
ZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRTRl9TVFJfU0laRSAoaW5j
bHVkaW5nIG51bGwgYnl0ZSkuICBjb21tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogc3RyaW5ncyBhbHNvIGhhdmUgc29tZSBsaW1pdC4gKi8KKyAgICBUU0ZfRV9QQVJTRV9FUlJP
UiwgICAgICAvKiBwYXJzZSBlcnJvciAqLworICAgIFRTRl9FX1VORVhQRUNURURfVFlQRSwgIC8q
IGRpZCBub3QgcGFyc2UgdGhlIHR5cGUgdGhhdCBJIGV4cGVjdGVkIHRvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICogcGFyc2UuICB0aGlzIG1heSBoYXBwZW4gaWYgeW91J3JlIGFza2lu
ZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZXJpYWwgaW4gbWFuIHRvIHJl
LXJlYWQgc29tZSBkYXRhIHRoYXQgaXQncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
IGFscmVhZHkgcmVhZC4gIHlvdSBjYW4gZG8gdGhpcyBieSB1c2luZyBpdHMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiBtYXJrIGFuZCBzZWVrIG1lY2hhbmlzbS4gKi8KKyAgICBUU0Zf
RV9FTEVNRU5UX05VTEwsICAgICAvKiBlbGVtZW50IGluIGNvbnRhaW5lciBpcyBudWxsICovCisg
ICAgVFNGX0VfTkFNRV9DT0xMSVNJT04sICAgLyogbmFtZSBjb2xsaXNpb24gLSB0aGUgbmFtZSBp
cyBhbHJlYWR5IHVzZWQhICovCisgICAgVFNGX0VfRU9GLCAgICAgICAgICAgICAgLyogZW5kIG9m
IGZpbGUgb3IgZW5kIG9mIHN0cmVhbSAqLworICAgIFRTRl9FX1VORVhQRUNURURfRU9GLCAgIC8q
IHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgb3IgZW5kIG9mIHN0cmVhbS4gIHdoZW4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5lZCBmcm9tIGEgcmVhZGVyLCB0aGlzIGVycm9y
IG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgRU9GIGhhcHBl
bmVkIGJlZm9yZSBhbnkgZGF0YSB3YXMgcmVhZC4gKi8KKyAgICBUU0ZfRV9FUlJPTkVPVVNfRU9G
LCAgICAvKiBlcnJvbmVvdXMgZW5kIG9mIGZpbGUgb3IgZW5kIG9mIHN0cmVhbS4gIHdoZW4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5lZCBmcm9tIGEgcmVhZGVyLCB0aGlz
IGVycm9yIG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgRU9G
IGhhcHBlbmVkIGFmdGVyIHNvbWUgZGF0YSB3YXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIHJlYWQuICB0byBldmVyeW9uZSBlbHNlLCB0aGlzIGVycm9yIHNob3VsZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGhhdmUgdGhlIHNhbWUgZXhhY3QgbWVhbmlu
ZyBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRTRl9FX1VORVhQRUNURURfRU9G
ICovCisgICAgVFNGX0VfTk9fRU9GLCAgICAgICAgICAgLyogZXhwZWN0ZWQgYW4gRU9GIGJ1dCBk
aWRuJ3QgZ2V0IG9uZS4gKi8KKyAgICBUU0ZfRV9CQURfVFlQRSwgICAgICAgICAvKiBwYXJhbWV0
ZXIgaGFzIHRoZSB3cm9uZyB0c2ZfdHlwZSAtIHRocm93bgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIHdoZW4gdGhlIHR5cGUgZm9yIGEgdHlwZWQgb2JqZWN0IChzdWNoIGFzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogYSByZWZsZWN0IG9iamVjdCkgaXMgbm90IHdoYXQg
aXMgZXhwZWN0ZWQuICovCisgICAgVFNGX0VfQkFEX1RZUEVfS0lORCwgICAgLyogcGFyYW1ldGVy
IGhhcyB0aGUgd3JvbmcgdHNmX3R5cGVfa2luZCAtCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICogdGhyb3duIHdoZW4geW91IHBhc3MgdGhlIHdyb25nIHR5cGUgb2JqZWN0CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICogaW50byBhIGZ1bmN0aW9uLiAqLworICAgIFRTRl9FX0VM
RV9OT1RfRk9VTkQsICAgIC8qIGVsZW1lbnQgbm90IGZvdW5kICovCisgICAgVFNGX0VfTk9fU1RS
VUNUX01BUCwgICAgLyogdGhlIGdpdmVuIHR5cGUgbGFja3MgYSBzdHJ1Y3QgbWFwcGluZyAqLwor
ICAgIFRTRl9FX0JBRF9TVFJVQ1RfTUFQLCAgIC8qIHRoZSBzdHJ1Y3R1cmUgbWFwcGluZyBvZmZz
ZXQgb3Igc2l6ZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGludmFsaWQgYmVj
YXVzZSBpdCBkb2VzIG5vdCBhZ3JlZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqIG9mZnNldHMgYW5kL29yIHNpemVzIG9mIHRoZSBvdGhlciBlbGVtZW50cy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBub3RlIHRoYXQgdGhpcyBpcyBjdXJyZW50bHkgdW51
c2VkLCBidXQgd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBrZWVwIGl0IGhlcmUg
dG8gcmVzZXJ2ZSBzcGFjZS4gKi8KKyAgICBUU0ZfRV9UWVBFX01JU01BVENILCAgICAvKiB0eXBl
IG1pc21hdGNoICovCisgICAgVFNGX0VfQkFEX0NIT0lDRV9WQUxVRSwgLyogYmFkIGNob2ljZSB2
YWx1ZS4gIG5vdGUgdGhhdCBpZiBhIGJhZCBjaG9pY2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKiB2YWx1ZSBhcHBlYXJzIHdoaWxlIHBhcnNpbmcsIHlvdSB3aWxsIGdldCBhCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogVFNGX0VfUEFSU0VfRVJST1IgaW5zdGVhZC4gIGFs
c28sIHRoZXJlIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZSB0aW1lcyB3
aGVuIHlvdSBkb24ndCBnZXQgdGhpcyBlcnJvciBldmVuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICogdGhvdWdoIHlvdSBzaG91bGQgaGF2ZS4gIHNvIGJlIGhhcHB5IHdoZW4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiB5b3Ugc2VlIGl0IGFuZCBkb24ndCBjcnkgdG8gbWUg
YWJvdXQgaXQgaWYgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZG9uJ3QuICov
CisgICAgVFNGX0VfQ09NUEFSRV9GQUlMLCAgICAgLyogYSBjb21wYXJpc29uIGZhaWxlZC4gKi8K
KyAgICBUU0ZfRV9DT01QSUxFX0VSUk9SLCAgICAvKiBjb21waWxhdGlvbiBlcnJvciBpbiBkeW5j
YyAqLworICAgIFRTRl9FX0RFQVRIX0JZX1NJR05BTCwgIC8qIGNoaWxkIHByb2Nlc3MgZGllZCBi
ZWNhdXNlIGl0IHJlY2VpdmVkIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaWdu
YWwgKGFnYWluLCB0aGlzJ2xsIGhhcHBlbiBiZWNhdXNlIG9mCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICogZHluY2MpLiAqLworICAgIFRTRl9FX0RMT0FESU5HX0VSUk9SLCAgIC8qIGR5
bmFtaWMgbG9hZGluZyBlcnJvciBpbiBkeW5jYyAqLworICAgIFRTRl9FX0JBRF9KVU1QLCAgICAg
ICAgIC8qIGp1bXAgdG8gYmFkIGxhYmVsIGluIEdQQyBwcm90b3R5cGUgKi8KKyAgICBUU0ZfRV9T
RU1BTlRJQywgICAgICAgICAvKiB2aW9sYXRpb24gb2YgR1BDIHNlbWFudGljcyAqLworICAgIFRT
Rl9FX0NBU19GQUlMLCAgICAgICAgIC8qIGEgY29tcGFyZS1hbmQtc3dhcC1saWtlIG9wZXJhdGlv
biBmYWlsZWQuICovCisgICAgVFNGX0VfSE9TVE5BTUUsICAgICAgICAgLyogaG9zdG5hbWUgbG9v
a3VwIGZhaWx1cmUuICovCisgICAgVFNGX0VfTk9UX0FMTE9XRUQsICAgICAgLyogeW91IGdldCB0
aGlzIGVycm9yIGlmIHlvdSBoYWQgc3BlY2lmaWVkIHRoYXQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBhIGNlcnRhaW4gYWN0aW9uIHdhcyBub3QgYWxsb3dlZCwgYnV0IGZvcgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdoYXRldmVyIHJlYXNvbiBUU0Ygd291bGQgaGF2
ZSBoYWQgdG8gcGVyZm9ybQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoYXQgYWN0
aW9uLiAqLworICAgIFRTRl9FX05PVF9JTVBMRU1FTlRFRCwgIC8qIG5vdCBpbXBsZW1lbnRlZC4g
IHRoaXMgZGlmZmVycyBmcm9tIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1
cHBvcnRlZCBpbiB0aGF0IHNvbWV0aGluZyB0aGF0IGlzICdub3QKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiBpbXBsZW1lbnRlZCcgaXMgYWN0dWFsbHkgYWR2ZXJ0aXNlZCBhcyBiZWlu
ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1cHBvcnRlZCAoYW5kIGltcGxlbWVu
dGVkKSwgYnV0IEkganVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGhhdmVuJ3Qg
bW92ZWQgbXkgYXNzIHRvIGltcGxlbWVudCBpdC4gIHlvdQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIHNob3VsZCBvbmx5IHNlZSAnbm90IGltcGxlbWVudGVkJyBlcnJvcnMgaW4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkZXZlbG9wbWVudCB2ZXJzaW9ucy4gKi8KKyAg
ICBUU0ZfRV9OT1RfU1VQUE9SVEVELCAgICAvKiBub3Qgc3VwcG9ydGVkLiAgdGhpcyBkaWZmZXJz
IGZyb20gbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaW1wbGVtZW50ZWQgaW4g
dGhhdCAnbm90IHN1cHBvcnRlZCcgcmVmZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogdG8gZnVuY3Rpb25hbGl0eSB0aGF0IGlzIHByZXNlbnQgYnV0IGNhbm5vdAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqIGJlIHVzZWQgZHVlIHRvIHNvbWUgbGltaXRhdGlvbnMgb2Yg
eW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN5c3RlbS4gKi8KKyAgICBUU0Zf
RV9FWFRFUk5BTCwgICAgICAgICAvKiBzb21lIGV4dGVybmFsIGVycm9yIChsaWtlIGEgY29uZGl0
aW9uIGluCisJCQkgICAgICogaW4gYSBjYWxsYmFjayBwcm92aWRlZCBieSBzb21lb25lIGVsc2Up
LgorCQkJICAgICAqIHRoZSBDKysgYmluZGluZyB1c2VzIHRoaXMgZm9yCisJCQkgICAgICogc3Rk
OjpleGNlcHRpb24gb2JqZWN0cyBjYXVnaHQgaW4gY2FsbGJhY2tzLiAqLworICAgIFRTRl9FX0lO
VEVSTkFMLCAgICAgICAgIC8qIGludGVybmFsIGVycm9yIC0gc2hvdWxkIG5ldmVyIGhhcHBlbi4g
Ki8KKyAgICBUU0ZfRV9MQVNUICAgICAgICAgICAgICAvKiBwbGFjZWhvbGRlciAqLworfTsKKwor
dHlwZWRlZiBlbnVtIHRzZl9lcnJvciB0c2ZfZXJyb3JfdDsKKworLyogc3RhbmRhcmQgc3RyaW5n
IHNpemUgd2l0aGluIHRzZiAqLworI2RlZmluZSBUU0ZfU1RSX1NJWkUgICAgICAgICAgICAxMjgK
KworLyogbWF4IHNpemUgZm9yIGNvbW1lbnQgc3RyaW5ncyAqLworI2RlZmluZSBUU0ZfTUFYX0NP
TU1FTlRfU0laRSAgICA0MDk2CisKKy8qIG1heCBzaXplIGZvciB0eXBlIG5hbWUgKi8KKyNkZWZp
bmUgVFNGX01BWF9OQU1FX1NJWkUgICAgICAgMjU2CisKKy8qIGRlZmF1bHQgYnVmZmVyIHNpemUg
Ki8KKyNkZWZpbmUgVFNGX0RFRl9CVUZfU0laRSAgICAgICAgNDA5NgorCisvKiBkZWZhdWx0IGJ1
ZmZlciBzaXplIGZvciBuZXR3b3JrIGNvbm5lY3Rpb25zICovCisjZGVmaW5lIFRTRl9ERUZfTkVU
X0JVRl9TSVpFICAgICgxNDYwKjMyKQorCisvKiBJbnN0YW5jZW9mIHJ1bGVzOgorICogLT4gVk9J
RCB0eXBlLiAgZXZlcnl0aGluZyBpcyBpbnN0YW5jZW9mIFZPSUQsIGJ1dCBWT0lEIGlzIGluc3Rh
Y2VvZgorICogICAgVk9JRCBvbmx5LgorICogLT4gSU5UIHR5cGVzLiAgQW4gSU5UIHR5cGUgaXMg
aW5zdGFuY2VvZiBhbnkgSU5UIHR5cGUgdGhhdCBpcworICogICAgY29tcG9zZWQgb2YgYXQgbGVh
c3QgYXMgbWFueSBiaXRzIGFzIGl0LiAgRm9yIGV4YW1wbGUsIElOVDgKKyAqICAgIGlzIGluc3Rh
bmNlb2YgSU5UOCwgSU5UMTYsIElOVDMyLCBhbmQgSU5UNjQuICBJTlQgdHlwZXMgYXJlCisgKiAg
ICBub3QgaW5zdGFuY2VvZiBhbnkgVUlOVCB0eXBlcy4gIElOVCB0eXBlcyBhcmUgaW5zdGFuY2Vv
ZgorICogICAgdGhvc2UgRlAgdHlwZXMgdGhhdCBoYXZlIGEgbWFudGlzc2EgdGhhdCBpcyBtYWRl
IHVwIG9mIGF0CisgKiAgICBsZWFzdCBhcyBtYW55IGJpdHMgYXMgaXQuCisgKiAtPiBVSU5UIHR5
cGVzLiAgQSBVSU5UIHR5cGUgaXMgaW5zdGFuY2VvZiBhbnkgVUlOVCB0eXBlIHRoYXQgaXMKKyAq
ICAgIGNvbXBvc2VkIG9mIGF0IGxlYXN0IGFzIG1hbnkgYml0cyBhcyBpdC4gIEFsc28sIGEgVUlO
VCB0eXBlCisgKiAgICBpcyBpbnN0YW5jZW9mIGFueSBJTlQgdHlwZSB0aGF0IGhhcyBhdCBsZWFz
dCBvbmUgbW9yZSBiaXRzCisgKiAgICB0aGFuIGl0IChzbyBVSU5UMTYgd2lsbCBiZSBpbnN0YW5j
ZW9mIElOVDMyIGFuZCBJTlQ2NCwgYnV0CisgKiAgICBub3QgSU5UMTYpLiAgVUlOVCB0eXBlcyBh
cmUgaW5zdGFuY2VvZiB0aG9zZSBGUCB0eXBlcyB0aGF0CisgKiAgICBoYXZlIGEgbWFudGlzc2Eg
dGhhdCBpcyBtYWRlIHVwIG9mIGF0IGxlYXN0IG9uZSBtb3JlIGJpdHMgYXMKKyAqICAgIGl0Lgor
ICogLT4gSU5URUdFUi4gIFRoaXMgYmVoYXZlcyBsaWtlIGEgMzItYml0IHNpZ25lZCBpbnRlZ2Vy
LCBidXQgaXQKKyAqICAgIGlzIHN0b3JlZCB3aXRoIHNvbWUgYmFzaWMgY29tcGFjdGlvbiB1bmRl
ciB0aGUgYXNzdW1wdGlvbgorICogICAgdGhhdCBpdCBpcyB1c3VhbGx5IHNtYWxsaXNoLgorICog
LT4gTE9ORy4gIFNhbWUgYXMgSU5URUdFUiwgYnV0IGdpdmVzIHlvdSA2NCBiaXRzLgorICogLT4g
RlAgdHlwZXMuICBBbiBGUCB0eXBlIGlzIGluc3RhbmNlb2YgYW55IEZQIHR5cGUgdGhhdCBoYXMg
YXQKKyAqICAgIGxlYXN0IGFzIGxhcmdlIG9mIGEgbWFudGlzc2EsIGFuZCBhdCBsZWFzdCBhcyBs
YXJnZSBvZiBhbgorICogICAgZXhwb25lbnQuICBTbyBGTE9BVCBpcyBpbnN0YW5jZW9mIEZMT0FU
IGFuZCBET1VCTEUsIHdoaWxlCisgKiAgICBET1VCTEUgaXMgb25seSBpbnN0YW5jZW9mIERPVUJM
RS4KKyAqIC0+IEFSUkFZLiAgaWYgQSBhbmQgQiBhcmUgYXJyYXkgdHlwZXMsIHRoZW4gQSBpcyBp
bnN0YW5jZW9mIEIKKyAqICAgIGlmIGVsZW1lbnRfdHlwZShBKSBpcyBpbnN0YW5jZW9mIGVsZW1l
bnRfdHlwZShCKS4KKyAqIC0+IFNUUlVDVC4gIG9uZSBzdHJ1Y3QgaXMgaW5zdGFuY2VvZiBhbm90
aGVyIGlmIGl0IGNvbnRhaW5zIGFsbAorICogICAgb2YgdGhlIG1hbmRhdG9yeSBlbGVtZW50cyBv
ZiB0aGUgb3RoZXIgc3RydWN0LCBhbmQgaWYgZWFjaAorICogICAgc3VjaCBlbGVtZW50IGlzIGlu
c3RhbmNlb2YgaXRzIHJlc3BlY3RpdmUgZWxlbWVudCBpbiB0aGUgb3RoZXIKKyAqICAgIHN0cnVj
dC4gIG5vdGUgdGhhdCBpZiBhIHN0cnVjdCBjb250YWlucyBhbiBvcHRpb25hbCBmaWVsZCBmb3IK
KyAqICAgIGFub3RoZXIgc3RydWN0J3MgbWFuZGF0b3J5IGZpZWxkLCB0aGlzIHdpbGwgdmlvbGF0
ZSB0aGUKKyAqICAgIGluc3RhbmNlb2YgcmVsYXRpb24uCisgKiAtPiBCSVQuICBhIEJJVCBpcyBv
bmx5IGluc3RhbmNlb2YgQklULiAgdGhlIGp1c3RpZmljYXRpb24gaXMgdGhhdAorICogICAgZGVz
cGl0ZSB0aGUgbmFtZSwgd2hpY2ggd291bGQgc2VlbSB0byBpbXBseSB0aGF0IGEgQklUIGlzIGEK
KyAqICAgIHR5cGUgb2YgaW50ZWdlciwgYSBCSVQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBz
dWNoIGEKKyAqICAgIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IHdheSB0aGF0IGl0IHdvdWxkIG5v
dCBtYWtlIHNlbnNlIGZvcgorICogICAgYSBCSVQgdG8gYmUgaW5zdGFuY2VvZiBhbnkgaW50ZWdl
ci4KKyAqIC0+IENIT0lDRS4gIGlmIEEgYW5kIEIgYXJlIGNob2ljZSB0eXBlcywgdGhlbiBBIGlz
IGluc3RhbmNlb2YgQgorICogICAgaWYgZm9yIHRob3NlIGVsZW1lbnQgbmFtZXMgdGhhdCBBIGFu
ZCBCIGhhdmUgaW4gY29tbW9uLCBBJ3MKKyAqICAgIGVsZW1lbnQgaXMgaW5zdGFuY2VvZiBCJ3Mg
ZWxlbWVudC4KKyAqIC0+IFNUUklORy4gIGEgU1RSSU5HIGlzIG9ubHkgaW5zdGFuY2VvZiBTVFJJ
TkcuCisgKiAtPiBBTlkuICBhIEFOWSBpcyBvbmx5IGluc3RhbmNlb2YgQU5ZLiAgdGhpcyBpcyBv
ZgorICogICAgY291cnNlIHF1aXRlIGlyb25pYywgc2luY2UgQU5ZIHR5cGVzIGFyZSBvdXIgbWFp
biBzb3VyY2Ugb2YKKyAqICAgIHBvbHltb3JocGlzbS4gOi0pCisgKgorICogTm90ZSB0aGF0IGlm
IHlvdSBjaGFuZ2UgdGhpcyBlbnVtZXJhdGlvbiwgeW91IG11c3QgY2hhbmdlIHNvbWUgb2YgdGhl
CisgKiAjZGVmaW5lJ3MgZnVydGhlciBkb3duIGluIHRoaXMgZmlsZS4KKyAqLworZW51bSB0c2Zf
dHlwZV9raW5kIHsKKyAgICBUU0ZfVEtfVk9JRCAgICAgPSAwLAorICAgIAorICAgIC8qIGludHMg
YW5kIGZsb2F0cyBhcmUgcHJpbWl0aXZlcy4gIGJpdHMgYXJlIG5vdC4gKi8KKyAgICAKKyAgICBU
U0ZfVEtfSU5UOCAgICAgPSAxLAorICAgIFRTRl9US19VSU5UOCAgICA9IDIsCisgICAgVFNGX1RL
X0lOVDE2ICAgID0gMywKKyAgICBUU0ZfVEtfVUlOVDE2ICAgPSA0LAorICAgIFRTRl9US19JTlQz
MiAgICA9IDUsCisgICAgVFNGX1RLX1VJTlQzMiAgID0gNiwKKyAgICBUU0ZfVEtfSU5UNjQgICAg
PSA3LAorICAgIFRTRl9US19VSU5UNjQgICA9IDgsCisgICAgLyogcmVzZXJ2ZSA5LTEzIGZvciBi
aXphcnJlIGludGVnZXIgdHlwZXMuICovCisgICAgCisgICAgLyogVGhpcyBpcyBhIDMyLWJpdCBp
bnRlZ2VyIChUU0ZfVEtfSU5URUdFUikgb3IgNjQtYml0IGludGVnZXIKKyAgICAgKiAoVFNGX1RL
X0xPTkcpIHRoYXQgd2UgY29tcGFjdCBkb3duIHRvIDEgYnl0ZSBpZiBwb3NzaWJsZSB3aGVuZXZl
ciB3ZQorICAgICAqIHRyYW5zbWl0IGl0LiBUaGUgcnVsZXMgZm9yIGludGVnZXIgY29tcGFjdGlv
biBnaXZlbiBhbiBpbnRlZ2VyIFggYXJlOgorICAgICAqIAorICAgICAqIC0gSWYgLTY0IDw9IFgg
PCA2NCwgZW5jb2RlIGFzIG9uZSBieXRlIGNvbnRhaW5pbmcgWCB3aXRoIHRoZSBoaWdoIGJpdAor
ICAgICAqICAgb2YgdGhhdCBieXRlIHNldCB0byAwLiBFbHNlOgorICAgICAqIC0gTGV0IFgnID0g
KFggPCAwKSA/IFggKyA2NCA6IFggLSA2NC4gSWYgLTE2MTkyIDw9IFggPCAxNjE5MiwgZW5jb2Rl
CisgICAgICogICBhcyBvbmUgYnl0ZSBjb250YWluaW5nIChYJyA+PiA4KSAtIDEgd2l0aCB0aGUg
aGlnaCBiaXQgb2YgdGhhdCBieXRlCisgICAgICogICBzZXQgdG8gMSBmb2xsb3dlZCBieSBhIHNl
Y29uZCBieXRlIGNvbnRhaW5pbmcgWCcgJiAyNTUuIEVsc2U6CisgICAgICogLSBMZXQgWCcgPSAo
WCA8IDApID8gWCArIDE2MTkyIDogWCAtIDE2MTkyLiBJZiAtODQwNDgwMCA8PSBYIDwgODQwNDgw
MCwKKyAgICAgKiAgIGVuY29kZSBhcyBvbmUgYnl0ZSBjb250YWluaW5nIDI1NCBmb2xsb3dlZCBi
eSB0aHJlZSBieXRlcyBjb250YWluaW5nCisgICAgICogICBYJy4gRWxzZToKKyAgICAgKiAtIEVu
Y29kZSBhcyAyNTUgZm9sbG93ZWQgYnkgZWl0aGVyIGZvdXIgYnl0ZXMgKFRTRl9US19JTlRFR0VS
KSBvcgorICAgICAqICAgZWlnaHQgYnl0ZXMgKFRTRl9US19MT05HKSBjb250YWluaW4gWC4KKyAg
ICAgKgorICAgICAqIE5vdGUgdGhhdCBhcyB3aXRoIGV2ZXJ5dGhpbmcgZWxzZSBpbiBUU0YsIHRo
ZSBwcm90b2NvbCBpcyBkZWZpbmVkIGFzCisgICAgICogYmlnIGVuZGlhbi4gKi8KKyAgICBUU0Zf
VEtfSU5URUdFUiAgPSAxNCwKKyAgICBUU0ZfVEtfTE9ORyAgICAgPSAxNSwKKyAgICAvKiByZXNl
cnZlIDE2LTE5IGZvciBtb3JlIGJpemFycmUgaW50ZWdlciB0eXBlcy4gKi8KKworICAgIFRTRl9U
S19GTE9BVCAgICA9IDIwLAorICAgIFRTRl9US19ET1VCTEUgICA9IDIxLAorICAgIC8qIHJlc2Vy
dmUgMjItMzkgZm9yIGJpemFycmUgZmxvYXQgdHlwZXMuICByZWNvbW1lbmQgdGhhdCBpZgorICAg
ICAqIHdlIGV2ZXIgaGF2ZSBhIGN1c3RvbWl6YWJsZSBmbG9hdCwgaXQgc2hvdWxkIGJlIDMwLiAq
LworCisgICAgVFNGX1RLX0JJVCAgICAgID0gNDAsCisgICAgCisgICAgVFNGX1RLX1NUUklORyAg
ID0gNDUsCisKKyAgICBUU0ZfVEtfQVJSQVkgICAgPSA1MCwKKyAgICBUU0ZfVEtfU1RSVUNUICAg
PSA1MSwKKyAgICBUU0ZfVEtfQ0hPSUNFICAgPSA1MiwKKyAgICAKKyAgICBUU0ZfVEtfQU5ZICAg
ICAgPSA2MCwKK307CisKK3R5cGVkZWYgdWludDhfdCB0c2ZfdHlwZV9raW5kX3Q7CisKK3N0cnVj
dCB0c2ZfdHlwZTsKK3R5cGVkZWYgc3RydWN0IHRzZl90eXBlIHRzZl90eXBlX3Q7CisKK3N0cnVj
dCB0c2ZfbmFtZWRfdHlwZTsKK3R5cGVkZWYgc3RydWN0IHRzZl9uYW1lZF90eXBlIHRzZl9uYW1l
ZF90eXBlX3Q7CisKKy8qIG9yZGVyZWQgdGFibGUgb2YgdHlwZXMga2V5ZWQgYnkgaW50IGFuZCBz
dHJpbmcgKi8KK3N0cnVjdCB0c2ZfdHlwZV90YWJsZTsKK3R5cGVkZWYgc3RydWN0IHRzZl90eXBl
X3RhYmxlIHRzZl90eXBlX3RhYmxlX3Q7CisKKy8qIHNoYXJlZCB0YWJsZSBvZiB0eXBlcyBrZXll
ZCBvbmx5IGJ5IGludCAqLworc3RydWN0IHRzZl90eXBlX2luX21hcDsKK3R5cGVkZWYgc3RydWN0
IHRzZl90eXBlX2luX21hcCB0c2ZfdHlwZV9pbl9tYXBfdDsKKwordHlwZWRlZiB0c2Zfc3RfdGFi
bGUgdHNmX3R5cGVfb3V0X21hcF90OworCitzdHJ1Y3QgdHNmX3JhX3R5cGVfaW5mbzsKK3N0cnVj
dCB0c2ZfcmFfdGNfbm9kZTsKK3N0cnVjdCB0c2ZfcmFfdHlwZV9tYW47CisKK3R5cGVkZWYgc3Ry
dWN0IHRzZl9yYV90eXBlX2luZm8gdHNmX3JhX3R5cGVfaW5mb190OwordHlwZWRlZiBzdHJ1Y3Qg
dHNmX3JhX3RjX25vZGUgdHNmX3JhX3RjX25vZGVfdDsKK3R5cGVkZWYgc3RydWN0IHRzZl9yYV90
eXBlX21hbiB0c2ZfcmFfdHlwZV9tYW5fdDsKKworc3RydWN0IHRzZl9idWZmZXI7Cit0eXBlZGVm
IHN0cnVjdCB0c2ZfYnVmZmVyIHRzZl9idWZmZXJfdDsKKworLyogdHlwZSB1c2VkIGZvciBhcnJh
eXMgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdHMgd2l0aGluIG91ciBuYXRpdmUKKyAqIHN0cnVjdHVy
ZSBtYXBwaW5nLiAgeW91IGRvIG5vdCBoYXZlIHRvIGV2ZXIgdG91Y2ggdGhpcyB0eXBlLiAgYnV0
CisgKiBpZiB5b3UgZG8gc3RydWN0IG1hcHBpbmcgKHdoaWNoIHN1cmVseSB5b3Ugd2lsbCEpLCB0
aGVuIHlvdXIKKyAqIGFycmF5cyBzaG91bGQgcmVzZW1ibGUgdGhpcyBoZXJlIHRzZl9uYXRpdmVf
YXJyYXkuICovCitzdHJ1Y3QgdHNmX25hdGl2ZV9hcnJheSB7CisgICAgdm9pZCAqZGF0YTsKKyAg
ICB1aW50MzJfdCBsZW47Cit9OworCit0eXBlZGVmIHN0cnVjdCB0c2ZfbmF0aXZlX2FycmF5IHRz
Zl9uYXRpdmVfYXJyYXlfdDsKKworLyogdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGZvciBwcmltaXRp
dmUgYXJyYXlzICovCisjZGVmaW5lIFRTRl9ERUZJTkVfTkFUSVZFX0FSUkFZKHR5cGUsc3VmZml4
KSBcCisgICAgc3RydWN0IHRzZl9uYXRpdmVfIyN0eXBlIyNfYXJyYXkge1wKKyAgICAgICAgdHlw
ZSMjc3VmZml4ICpkYXRhO1wKKyAgICAgICAgdWludDMyX3QgbGVuO1wKKyAgICB9O1wKKyAgICBc
CisgICAgdHlwZWRlZiBzdHJ1Y3QgdHNmX25hdGl2ZV8jI3R5cGUjI19hcnJheSB0c2ZfbmF0aXZl
XyMjdHlwZSMjX2FycmF5X3QKKworVFNGX0RFRklORV9OQVRJVkVfQVJSQVkoaW50OCxfdCk7CitU
U0ZfREVGSU5FX05BVElWRV9BUlJBWShpbnQxNixfdCk7CitUU0ZfREVGSU5FX05BVElWRV9BUlJB
WShpbnQzMixfdCk7CitUU0ZfREVGSU5FX05BVElWRV9BUlJBWShpbnQ2NCxfdCk7CitUU0ZfREVG
SU5FX05BVElWRV9BUlJBWSh1aW50OCxfdCk7CitUU0ZfREVGSU5FX05BVElWRV9BUlJBWSh1aW50
MTYsX3QpOworVFNGX0RFRklORV9OQVRJVkVfQVJSQVkodWludDMyLF90KTsKK1RTRl9ERUZJTkVf
TkFUSVZFX0FSUkFZKHVpbnQ2NCxfdCk7CitUU0ZfREVGSU5FX05BVElWRV9BUlJBWShmbG9hdCwp
OworVFNGX0RFRklORV9OQVRJVkVfQVJSQVkoZG91YmxlLCk7CisKKy8qIHNwZWNpYWwgdHlwZSB1
c2VkIGZvciBhcnJheXMgb2YgdW5rbm93biB0eXBlICovCitzdHJ1Y3QgdHNmX25hdGl2ZV92b2lk
X2FycmF5IHsKKyAgICB1aW50MzJfdCBsZW47Cit9OworCit0eXBlZGVmIHN0cnVjdCB0c2ZfbmF0
aXZlX3ZvaWRfYXJyYXkgdHNmX25hdGl2ZV92b2lkX2FycmF5X3Q7CisKKy8qIHNwZWNpYWwgdHlw
ZSB1c2VkIGZvciBhcnJheXMgb2YgYml0cyByZWZlcmVuY2VkIGZyb20gc3RydWN0cworICogd2l0
aGluIG91ciBuYXRpdmUgc3RydWN0dXJlIG1hcHBpbmcuICovCitzdHJ1Y3QgdHNmX25hdGl2ZV9i
aXR2ZWN0b3IgeworICAgIHVpbnQ4X3QgKmJpdHM7ICAvKiBhcnJheSBvZiBsZW5ndGggKG51bV9i
aXRzKzcpPj4zICovCisgICAgdWludDMyX3QgbnVtX2JpdHM7Cit9OworCit0eXBlZGVmIHN0cnVj
dCB0c2ZfbmF0aXZlX2JpdHZlY3RvciB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90OworCisvKiB0eXBl
IG9mIHRoZSBjaG9pY2UgaXRzZWxmIHdpdGhpbiBjaG9pY2UgdHlwZXMuICovCit0eXBlZGVmIHVp
bnQzMl90IHRzZl9jaG9pY2VfdDsKKworc3RydWN0IHRzZl9yZWZsZWN0OwordHlwZWRlZiBzdHJ1
Y3QgdHNmX3JlZmxlY3QgdHNmX3JlZmxlY3RfdDsKKworc3RydWN0IHRzZl9nZW5ydHI7CitzdHJ1
Y3QgdHNmX3BhcnNlcjsKK3N0cnVjdCB0c2ZfY29waWVyOworc3RydWN0IHRzZl9kZXN0cnVjdG9y
OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2dlbnJ0ciB0c2ZfZ2VucnRyX3Q7Cit0eXBlZGVmIHN0cnVj
dCB0c2ZfcGFyc2VyIHRzZl9wYXJzZXJfdDsKK3R5cGVkZWYgc3RydWN0IHRzZl9jb3BpZXIgdHNm
X2NvcGllcl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2Rlc3RydWN0b3IgdHNmX2Rlc3RydWN0b3Jf
dDsKKworLyogZnVuY3Rpb24gY2FsbGJhY2sgdXNlZCBmb3IgcmVhZGluZy4gIHJldHVybiB0c2Zf
dHJ1ZSBvbiBzdWNjZXNzIGFuZAorICogdHNmX2ZhbHNlIG9uIGVycm9yLiAgb24gZXJyb3IsIHVz
ZSB0c2Zfc2V0X2Vycm9yKCkgYW5kIHRzZl9zZXRfZXJybm8oKQorICogdG8gaW5kaWNhdGUgd2hh
dCBlcnJvciBvY2N1cnJlZCAodGhpcyBwYXJ0IGlzIG5vdCBvcHRpb25hbCAtIHlvdQorICogY2Fu
bm90IHJldHVybiB0c2ZfZmFsc2Ugd2l0aG91dCBmaXJzdCBjYWxsaW5nIHRzZl9zZXRfZXJyb3Io
KSBvcgorICogdHNmX3NldF9lcnJubygpKS4gIGFuIGFsbC1vci1ub3RoaW5nIHJlYWQgaXMgZXhw
ZWN0ZWQsIHNvIGlmIHlvdSdyZQorICogaW1wbGVtZW50aW5nIHRoaXMgYXMgYSByZWFkIG9uIGEg
c29ja2V0IG9yIHBpcGUsIHlvdSBtYXkgaGF2ZSB0bworICogbG9vcCBhIGNvdXBsZSBvZiB0aW1l
cy4gKi8KK3R5cGVkZWYgdHNmX2Jvb2xfdCAoKnRzZl9yZWFkZXJfdCkodm9pZCAqYXJnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpidWYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8qIGZ1bmN0aW9uIGNhbGxi
YWNrIHVzZWQgZm9yIHdyaXRlLiAgcmV0dXJuIHRzZl90cnVlIG9uIHN1Y2Nlc3MgYW5kCisgKiB0
c2ZfZmFsc2Ugb24gZXJyb3IuICBvbiBlcnJvciwgdXNlIHRzZl9zZXRfZXJyb3IoKSBhbmQgdHNm
X3NldF9lcnJubygpCisgKiB0byBpbmRpY2F0ZSB3aGF0IGVycm9yIG9jY3VycmVkICh0aGlzIHBh
cnQgaXMgbm90IG9wdGlvbmFsIC0geW91CisgKiBjYW5ub3QgcmV0dXJuIHRzZl9mYWxzZSB3aXRo
b3V0IGZpcnN0IGNhbGxpbmcgdHNmX3NldF9lcnJvcigpIG9yCisgKiB0c2Zfc2V0X2Vycm5vKCkp
LiAgYW4gYWxsLW9yLW5vdGhpbmcgd3JpdGUgaXMgZXhwZWN0ZWQsIHNvIGlmIHlvdSdyZQorICog
aW1wbGVtZW50aW5nIHRoaXMgYXMgYSB3cml0ZSBvbiBhIHNvY2tldCBvciBwaXBlLCB5b3UgbWF5
IGhhdmUgdG8KKyAqIGxvb3AgYSBjb3VwbGUgb2YgdGltZXMuICovCit0eXBlZGVmIHRzZl9ib29s
X3QgKCp0c2Zfd3JpdGVyX3QpKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBsZW4pOworCisvKiBmdW5jdGlvbiBjYWxsYmFjayB1c2VkIGZvciByZWFk
aW5nLiAgcmV0dXJucyBub24tbmVnYXRpdmUgY291bnQgb2YKKyAqIHRoZSBudW1iZXIgb2YgYnl0
ZXMgcmVhZCBvbiBzdWNjZXNzIGFuZCAtMSBvbiBlcnJvci4gIG9uIGVycm9yLCB1c2UKKyAqIHRz
Zl9zZXRfZXJyb3IoKSBhbmQgZnJpZW5kcy4gIHRoZSBjYWxsZXIgZXhwZWN0cyByZWFkLWFzLW11
Y2gtYXMtCisgKiB5b3UtY2FuIHNlbWFudGljcywgc28gdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2
ZXIgYmxvY2sgaWYgc29tZSBkYXRhCisgKiBpcyBhbHJlYWR5IGF2YWlsYWJsZS4gKi8KK3R5cGVk
ZWYgaW50MzJfdCAoKnRzZl9wYXJ0aWFsX3JlYWRlcl90KSh2b2lkICphcmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKK3N0cnVjdCB0c2ZfbGlt
aXRzIHsKKyAgICAvKiBtYXhpbXVtIG51bWJlciBvZiB0eXBlcyBhY2NlcHRlZCBpbiBhIHN0cmVh
bSBmaWxlIGluIGJldHdlZW4gcmVzZXQKKyAgICAgKiB0eXBlcyBjYWxscy4gKi8KKyAgICB1aW50
MzJfdCBtYXhfdHlwZXM7CisgICAgCisgICAgLyogYnl0ZSBzaXplIGxpbWl0cyAqLworICAgIAor
ICAgIC8qIG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIHNlcmlhbGl6ZWQgdHlwZSAqLworICAg
IHVpbnQzMl90IG1heF90eXBlX3NpemU7CisgICAgCisgICAgLyogbWF4aW11bSBzaXplIHRoYXQg
YWxsIHR5cGVzIHJlYWQgZHVyaW5nIGEgc2Vzc2lvbiBjYW4gaGF2ZSBwdXQKKyAgICAgKiB0b2dl
dGhlci4gKi8KKyAgICB1aW50MzJfdCBtYXhfdG90YWxfdHlwZV9zaXplOworICAgIAorICAgIC8q
IG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIGJ1ZmZlciAqLworICAgIHVpbnQzMl90IG1heF9i
dWZfc2l6ZTsKKyAgICAKKyAgICAvKiBjb250YWluZXIgZGVwdGggbGltaXQgKi8KKyAgICB1aW50
MzJfdCBkZXB0aF9saW1pdDsKKyAgICAKKyAgICAvKiB3aGV0aGVyIG9yIG5vdCB0byBhbGxvdyBj
b21tZW50cyAqLworICAgIHRzZl9ib29sX3QgYWxsb3dfY29tbWVudHM7CisgICAgCisgICAgLyog
YWxsb3dpbmcgaW5kaXZpZHVhbCB0eXBlcy4gIGFjY2VzcyB0aGlzIGFzIGEgcmVndWxhciBiaXR2
ZWN0b3IuICovCisgICAgdWludDhfdCBhbGxvd190eXBlX2tpbmRbMzJdOworICAgIAorICAgIC8q
IHR5cGUtc3BlY2lmaWMgbGltaXRzICovCisgICAgCisgICAgLyogbWF4aW11bSBhcnJheSBsZW5n
dGggKi8KKyAgICB1aW50MzJfdCBtYXhfYXJyYXlfbGVuZ3RoOyAgLyogdW5pbXBsZW1lbnRlZCAq
LworICAgIAorICAgIC8qIG1heGltdW0gc3RydWN0IHNpemUsIGluIG51bWJlciBvZiBlbGVtZW50
cyAqLworICAgIHVpbnQzMl90IG1heF9zdHJ1Y3Rfc2l6ZTsKKyAgICAKKyAgICAvKiBtYXhpbXVt
IGNob2ljZSBzaXplLCBpbiBudW1iZXIgb2YgZWxlbWVudHMgKi8KKyAgICB1aW50MzJfdCBtYXhf
Y2hvaWNlX3NpemU7CisgICAgCisgICAgLyogbWF4aW11bSBzdHJpbmcgc2l6ZSAqLworICAgIHVp
bnQzMl90IG1heF9zdHJpbmdfc2l6ZTsgICAvKiB1bmltcGxlbWVudGVkICovCit9OworCit0eXBl
ZGVmIHN0cnVjdCB0c2ZfbGltaXRzIHRzZl9saW1pdHNfdDsKKworc3RydWN0IHRzZl9zZXJpYWxf
aW5fbWFuOworc3RydWN0IHRzZl9zZXJpYWxfb3V0X21hbjsKKwordHlwZWRlZiBzdHJ1Y3QgdHNm
X3NlcmlhbF9pbl9tYW4gdHNmX3NlcmlhbF9pbl9tYW5fdDsKK3R5cGVkZWYgc3RydWN0IHRzZl9z
ZXJpYWxfb3V0X21hbiB0c2Zfc2VyaWFsX291dF9tYW5fdDsKKworLyogY2FsbGJhY2sgdGhhdCBn
ZXRzIGNhbGxlZCBieSB0aGUgaW5wdXQgbWFuYWdlciB3aGVuIGEgbmV3IHR5cGUgY29tZXMKKyAq
IGluLiAqLwordHlwZWRlZiB2b2lkICgqdHNmX3R5cGVfY2JhY2tfdCkodHNmX3NlcmlhbF9pbl9t
YW5fdCAqaW5fbWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
dCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisK
K3R5cGVkZWYgdWludDMyX3QgdHNmX3NlcmlhbF9pbl9tYW5fc3RhdGVfdDsKKworLyogc2l6ZSBh
d2FyZSAtIGRlbGVnYXRlcyB0byBhbm90aGVyIHJlYWRlciwgY291bnRzIHRoZSBieXRlcyByZWFk
LAorICogYW5kIGZpcmVzIGEgVFNGX0VfTk9UX0FMTE9XRUQgZXJyb3Igd2hlbiB0aGUgbGltaXQg
cmVhY2hlcyAwLiAgbmFtZQorICogc2hvdWxkIGJlIGEgc2hvcnQgKHByZWZlcnJhYmx5IG9uZS13
b3JkKSBkZXNjcmlwdGlvbiBvZiB3aGF0IHlvdSdyZQorICogcmVhZGluZzsgaXQnbGwgYmUgdXNl
ZCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdHNmX3Jl
YWRlcl90IHJlYWRlcjsKKyAgICB2b2lkICphcmc7CisgICAgdWludDMyX3QgbGltaXQ7CisgICAg
Y29uc3QgY2hhciAqbmFtZTsKK30gdHNmX3NpemVfYXdhcmVfcmRyX3Q7CisKKy8qIGxpZ2h0LXdl
aWdodCByZXByZXNlbnRhdGlvbiBvZiBhIGJ1ZmZlciBmb3Igd3JpdGluZy4gKi8KK3R5cGVkZWYg
c3RydWN0IHsKKyAgICB1aW50OF90ICpiYXNlOworICAgIHVpbnQ4X3QgKmN1cjsKKyAgICB1aW50
OF90ICplbmQ7Cit9IHRzZl9yZXNpemFibGVfYnVmZmVyX3Q7CisKKy8qIGxpZ2h0LXdlaWdodCBy
ZXByZXNlbnRhdGlvbiBvZiBhIGJ1ZmZlciAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVpbnQ4
X3QgKmN1ciwKKyAgICAgICAgICAgICplbmQ7Cit9IHRzZl9saWdodF9idWZmZXJfdDsKKwordHlw
ZWRlZiBzdHJ1Y3QgeworICAgIHRzZl9yZWFkZXJfdCByZWFkZXI7CisgICAgdm9pZCAqYXJnOwor
fSB0c2ZfY29tcGFyaW5nX3dyaXRlcl90OworCitzdHJ1Y3QgdHNmX3NoYTFfd3RyOwordHlwZWRl
ZiBzdHJ1Y3QgdHNmX3NoYTFfd3RyIHRzZl9zaGExX3d0cl90OworCitzdHJ1Y3QgdHNmX2J1Zl9y
ZHI7CitzdHJ1Y3QgdHNmX2J1Zl93dHI7Cit0eXBlZGVmIHN0cnVjdCB0c2ZfYnVmX3JkciB0c2Zf
YnVmX3Jkcl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2J1Zl93dHIgdHNmX2J1Zl93dHJfdDsKKwor
LyogdGhlIHpsaWIgcmRyL3d0ciBjYW4gYWxzbyBkbyBiemlwMi4gKi8KKworc3RydWN0IHRzZl96
aXBfd3RyX2F0dHIgeworICAgIHRzZl96aXBfbW9kZV90IG1vZGU7CisgICAgCisgICAgdWludDMy
X3QgYnVmX3NpemU7CisgICAgCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAg
ICAgICAgdHNmX2Jvb2xfdCBhZHZhbmNlZF9pbml0OworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpbnQgbGV2ZWw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBtZXRob2Q7CisgICAg
ICAgICAgICBpbnQgd2luZG93Qml0czsKKyAgICAgICAgICAgIGludCBtZW1MZXZlbDsKKyAgICAg
ICAgICAgIGludCBzdHJhdGVneTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHJlc2Vy
dmVkMTsKKyAgICAgICAgICAgIGludCByZXNlcnZlZDI7CisgICAgICAgICAgICBpbnQgcmVzZXJ2
ZWQzOworICAgICAgICB9IHo7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQgYmxv
Y2tTaXplMTAwazsKKyAgICAgICAgICAgIGludCB2ZXJib3NpdHk7CisgICAgICAgICAgICBpbnQg
d29ya0ZhY3RvcjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHJlc2VydmVkMTsKKyAg
ICAgICAgICAgIGludCByZXNlcnZlZDI7CisgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQzOworICAg
ICAgICB9IGI7CisgICAgfSB1OworfTsKKworc3RydWN0IHRzZl96aXBfcmRyX2F0dHIgeworICAg
IHN0cnVjdCB7CisgICAgICAgIHRzZl9ib29sX3QgYWxsb3c7CisgICAgICAgIAorICAgICAgICB1
aW50MzJfdCBidWZfc2l6ZTsKKyAgICAgICAgdHNmX2Jvb2xfdCBhZHZhbmNlZF9pbml0OworICAg
ICAgICBpbnQgd2luZG93Qml0czsKKyAgICAgICAgCisgICAgICAgIGludCByZXNlcnZlZDE7Cisg
ICAgICAgIGludCByZXNlcnZlZDI7CisgICAgICAgIGludCByZXNlcnZlZDM7CisgICAgfSB6Owor
ICAgIHN0cnVjdCB7CisgICAgICAgIHRzZl9ib29sX3QgYWxsb3c7CisgICAgICAgIAorICAgICAg
ICB1aW50MzJfdCBidWZfc2l6ZTsKKyAgICAgICAgaW50IHZlcmJvc2l0eTsKKyAgICAgICAgaW50
IHNtYWxsOworICAgICAgICAKKyAgICAgICAgaW50IHJlc2VydmVkMTsKKyAgICAgICAgaW50IHJl
c2VydmVkMjsKKyAgICAgICAgaW50IHJlc2VydmVkMzsKKyAgICB9IGI7Cit9OworCit0eXBlZGVm
IHN0cnVjdCB0c2ZfemlwX3d0cl9hdHRyIHRzZl96aXBfd3RyX2F0dHJfdDsKK3R5cGVkZWYgc3Ry
dWN0IHRzZl96aXBfcmRyX2F0dHIgdHNmX3ppcF9yZHJfYXR0cl90OworCitzdHJ1Y3QgdHNmX3pp
cF9yZHI7CitzdHJ1Y3QgdHNmX3ppcF93dHI7Cit0eXBlZGVmIHN0cnVjdCB0c2ZfemlwX3JkciB0
c2ZfemlwX3Jkcl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX3ppcF93dHIgdHNmX3ppcF93dHJfdDsK
Kworc3RydWN0IHRzZl9hZHB0X3JkcjsKK3R5cGVkZWYgc3RydWN0IHRzZl9hZHB0X3JkciB0c2Zf
YWRwdF9yZHJfdDsKKworLyogeW91J3JlIHJlc3BvbnNpYmxlIGZvciBhbGxvY2F0aW5nIHRoZXNl
IGd1eXMgeW91cnNlbGYuICBidXQgdGhhdCBkb2VzCisgKiBub3QgbWVhbiB0aGF0IHlvdSBjYW4g
ZWRpdCB0aGVtISAgdHJlYXQgdGhpcyBhcyBhbiBvcGFxdWUhICBhbHNvIG5vdGUKKyAqIHRoYXQg
dGhlIHN0YXRlIGlzIGVmZmVjdGl2ZWx5IGEgcG9pbnRlciwgc28gdGhpcyBtYXJrIGlzIHVuZGVm
aW5lZCBpZgorICogc2VyaWFsaXplZC4uLiBzbyB5b3UgY2Fubm90IHVzZSB0aGVzZSB0aGluZ3Mg
dG8gYnVpbGQgYW4gZXh0ZXJuYWwKKyAqIGluZGV4LiAgc29ycnkuICovCitzdHJ1Y3QgdHNmX3N0
cmVhbV9maWxlX21hcmsgeworICAgIHRzZl9vZmZfdCBvZmZzZXQ7CisgICAgdHNmX3NlcmlhbF9p
bl9tYW5fc3RhdGVfdCBzdGF0ZTsKK307CisKK3R5cGVkZWYgc3RydWN0IHRzZl9zdHJlYW1fZmls
ZV9tYXJrIHRzZl9zdHJlYW1fZmlsZV9tYXJrX3Q7CisKK3N0cnVjdCB0c2Zfc3RyZWFtX2ZpbGVf
aW5wdXQ7CitzdHJ1Y3QgdHNmX3N0cmVhbV9maWxlX291dHB1dDsKK3R5cGVkZWYgc3RydWN0IHRz
Zl9zdHJlYW1fZmlsZV9pbnB1dCB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdDsKK3R5cGVkZWYgc3Ry
dWN0IHRzZl9zdHJlYW1fZmlsZV9vdXRwdXQgdHNmX3N0cmVhbV9maWxlX291dHB1dF90OworCitl
bnVtIHRzZl9mc2RiX2tpbmQgeworICAgIFRTRl9GU0RCX0xPQ0FMLAorICAgIFRTRl9GU0RCX1JF
TU9URQorfTsKKwordHlwZWRlZiBlbnVtIHRzZl9mc2RiX2tpbmQgdHNmX2ZzZGJfa2luZF90Owor
CitzdHJ1Y3QgdHNmX2ZzZGtfY29ubmVjdGlvbjsKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX2Nv
bm5lY3Rpb24gdHNmX2ZzZGJfY29ubmVjdGlvbl90OworCitzdHJ1Y3QgdHNmX2ZzZGI7Cit0eXBl
ZGVmIHN0cnVjdCB0c2ZfZnNkYiB0c2ZfZnNkYl90OworCitzdHJ1Y3QgdHNmX2ZzZGJfaW47Citz
dHJ1Y3QgdHNmX2ZzZGJfb3V0OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2ZzZGJfaW4gdHNmX2ZzZGJf
aW5fdDsKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX291dCB0c2ZfZnNkYl9vdXRfdDsKKworLyog
Z2V0IGFuIGVycm9yIGNvZGUuICB0aGlzIGlzIHRoZSBlcnJvciBjb2RlIGZyb20gdGhlIGxhc3Qg
ZnVuY3Rpb24gdGhhdAorICogZmFpbGVkIGluIHRoZSBjdXJyZW50IHRocmVhZC4gIGZ1bmN0aW9u
cyBpbiB0aGUgVFNGIEFQSSBhbHdheXMgdGVsbCB5b3UKKyAqIHdoZXRoZXIgb3Igbm90IHRoZXkg
ZmFpbGVkLCB1c3VhbGx5IGJ5IHJldHVybmluZyBOVUxMIChpZiB0aGUgZnVuY3Rpb24KKyAqIHJl
dHVybnMgcG9pbnRlcnMpLCB0c2ZfZmFsc2UgKGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRzZl9i
b29sX3QpLCBvciAtMQorICogKGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIHNvbWUgc29ydCBvZiBp
bnRlZ2VyKS4gIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24KKyAqIG1hZGUgd2hlbiBubyBlcnJvciBo
YXMgb2NjdXJyZWQgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvciAocmVhZDoKKyAqIHNlZ2Zh
dWx0KS4gKi8KK3RzZl9lcnJvcl90ICAgICB0c2ZfZ2V0X2Vycm9yX2NvZGUodm9pZCk7CisKKy8q
IGdpdmVuIGFuIGVycm9yIGNvZGUsIHRlbGxzIHlvdSB3aGF0IHRoZSBkZWZhdWx0IG1lc3NhZ2Ug
aXMuICB0aGUgc3RyaW5nCisgKiByZXR1cm5lZCBoZXJlIGlzIHRydWx5IGEgY29uc3RhbnQsIHNv
IHlvdSBjYW4gc2FmZWx5IHJlZmVyIHRvIGl0CisgKiBpbmRlZmluaXRlbHkuICBub3RlIHRoYXQg
aWYgeW91IHdhbnQgYSBtb3JlIGRlc2NyaXB0aXZlIG1lc3NhZ2UgZm9yIGFuCisgKiBlcnJvciB0
aGF0IGp1c3Qgb2NjdXJyZWQsIHVzZSB0c2ZfZ2V0X2Vycm9yKCkuICB0c2ZfZ2V0X2Vycm9yKCkg
d2lsbAorICogYWxtb3N0IGFsd2F5cyByZXR1cm4gYSBzdHJpbmcgdGhhdCBjb250YWlucyBtb3Jl
IGluZm9ybWF0aW9uIHRoYW4gdXNpbmcKKyAqIHRzZl9nZXRfbWVzc2FnZV9mb3JfZXJyb3JfY29k
ZSh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSkuICBub3RlIHRoYXQgdGhpcworICogZnVuY3Rpb24gZG9l
cyBub3QgY2hlY2sgaWYgY29kZSBpcyBhIHZhbGlkIFRTRiBlcnJvciBjb2RlOyBpZiBpdCBpc24n
dCwKKyAqIGJhZCB0aGluZ3Mgd2lsbCBoYXBwZW4uICovCitjb25zdCBjaGFyKiAgICAgdHNmX2dl
dF9tZXNzYWdlX2Zvcl9lcnJvcl9jb2RlKHRzZl9lcnJvcl90IGNvZGUpOworCisvKiBnZXQgdGhl
IHN5c3RlbSBlcnJubyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgZXJyb3IuICB0aGUgcmV0
dXJuCisgKiB2YWx1ZSBpcyB1bmRlZmluZWQgaWYgdGhlIGxhc3QgZnVuY3Rpb24gdGhhdCBmYWls
ZWQgZGlkIG5vdCBmYWlsIGR1ZSB0bworICogYSBzeXN0ZW0gZXJyb3IuICovCitpbnQgICAgICAg
ICAgICAgdHNmX2dldF9zeXN0ZW1fZXJybm8odm9pZCk7CisKKy8qIGdldCB0aGUgWkxpYiBlcnJv
ciBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBlcnJvci4gIHRoZSByZXR1cm4KKyAq
IHZhbHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5jdGlvbiB0aGF0IGZhaWxlZCBkaWQg
bm90IGZhaWwgZHVlIHRvCisgKiBhIFpMaWIgZXJyb3IuICovCitpbnQgICAgICAgICAgICAgdHNm
X2dldF96bGliX2Vycm9yX2NvZGUodm9pZCk7CisKKy8qIGdldCB0aGUgWkxpYiBlcnJvciBtZXNz
YWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBlcnJvci4gIHRoZSByZXR1cm4KKyAqIHZh
bHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5jdGlvbiB0aGF0IGZhaWxlZCBkaWQgbm90
IGZhaWwgZHVlIHRvCisgKiBhIFpMaWIgZXJyb3IuICAoTk9URTogaWYgYSBaTGliIGVycm9yIGFj
dHVhbGx5IGRpZCBoYXBwZW4sIHRoaXMgd2lsbAorICogbm90IGJlIE5VTEwuKSovCitjb25zdCBj
aGFyKiAgICAgdHNmX2dldF96bGliX2Vycm9yX21zZyh2b2lkKTsKKworLyogZ2V0IHRoZSBsaWJi
emlwMiBlcnJvciBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBlcnJvci4gIHRoZSBy
ZXR1cm4KKyAqIHZhbHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5jdGlvbiB0aGF0IGZh
aWxlZCBkaWQgbm90IGZhaWwgZHVlIHRvCisgKiBhIGxpYmJ6aXAyIGVycm9yLiAqLworaW50ICAg
ICAgICAgICAgIHRzZl9nZXRfbGliYnppcDJfZXJyb3JfY29kZSh2b2lkKTsKKworLyogZ2V0IHRo
ZSBsaWJiemlwMiBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBlcnJv
ci4gIHRoZQorICogcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5jdGlv
biB0aGF0IGZhaWxlZCBkaWQgbm90IGZhaWwKKyAqIGR1ZSB0byBhIGxpYmJ6aXAyIGVycm9yLiov
Citjb25zdCBjaGFyKiAgICAgdHNmX2dldF9saWJiemlwMl9lcnJvcl9tc2codm9pZCk7CisKKy8q
IGdldCB0aGUgc2lnbmFsIHRoYXQga2lsbGVkIHRoZSBjaGlsZCBwcm9jZXNzIChvbmx5IGZvcgor
ICogVFNGX0VfREVBVEhfQllfU0lHTkFMKS4gIHRoZSByZXR1cm4gdmFsdWUgaXMgdW5kZWZpbmVk
IGlmIHRoZSBsYXN0CisgKiBmdW5jdGlvbiB0aGF0IGZhaWxlZCBkaWQgbm90IGZhaWwgZHVlIHRv
IFRTRl9FX0RFQVRIX0JZX1NJR05BTC4gKi8KK2ludCAgICAgICAgICAgICB0c2ZfZ2V0X2RlYWRs
eV9zaWduYWwodm9pZCk7CisKKy8qIGdldCBhIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvci4gIHRo
ZSBzdHJpbmcgdGhhdCBpcyByZXR1cm5lZAorICogaXMgbm90IG93bmVkIGJ5IHlvdTsgaXQgaXMg
b25seSB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxsIHRvCisgKiBhbnkgdHNmIGZ1bmN0aW9uIG90
aGVyIHRoYW4gdHNmX2dldF9lcnJvcl9jb2RlKCksIHRzZl9nZXRfZXJyb3IoKSwKKyAqIGFuZCB0
aGUgb3RoZXIgZXJyb3ItZ2V0dGluZyBmdW5jdGlvbnMgYWJvdmUuICAoSWYgdGhlIGxpYnJhcnkg
aXMKKyAqIGNvbXBpbGVkIHdpdGggdGhyZWFkLXNhZmV0eSB0aGVuIHRoZSBwcmV2aW91cyBzdGF0
ZW1lbnQgcmVmZXJzIHRvCisgKiB0aGUgbmV4dCBjYWxsIGJ5IHRoZSBzYW1lIHRocmVhZCwgcmF0
aGVyIHRoYW4gdGhlIG5leHQgY2FsbAorICogZ2xvYmFsbHkuKSAgY2FsbHMgdG8gdGhpcyBmdW5j
dGlvbiBtYWRlIHdoZW4gbm8gZXJyb3IgaGFzCisgKiBvY2N1cnJlZCAod2l0aGluIHRoaXMgdGhy
ZWFkKSByZXN1bHQgaW4gdW5kZWZpbmVkIGJlaGF2aW9yCisgKiAocXVpdGUgcG9zc2libHkgYW5k
IHZlcnkgbGlrZWx5IGEgc2VnZmF1bHQgaW5zaWRlIHRzZl9nZXRfZXJyb3IoKSkuICovCitjb25z
dCBjaGFyKiAgICAgdHNmX2dldF9lcnJvcih2b2lkKTsKKworLyogZ2V0IGp1c3QgdGhlIG1lc3Nh
Z2UgZm9yIHRoZSBjdXJyZW50IGVycm9yIGNvZGUuICB0aGlzIHdpbGwgYWx3YXlzCisgKiBiZSB0
aGUgcHJlZml4IG9mIHdoYXQgdHNmX2dldF9lcnJvcigpIHJldHVybnMuICovCisjZGVmaW5lICAg
ICAgICAgdHNmX2dldF9lcnJvcl9wcmVmaXgoKSBcCisgICAgKHRzZl9nZXRfbWVzc2FnZV9mb3Jf
ZXJyb3JfY29kZSh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSkpCisKKy8qIGdldCBqdXN0IHRoZSBtZXNz
YWdlIHRoYXQgaXMgYWNxdWlyZWQgZnJvbSB0aGUgc291cmNlIG9mIHRoZSBlcnJvci4KKyAqIGZv
ciBlcnJubywgdGhpcyBpcyBzdHJlcnJvcihlcnJubyk7ICwgYW5kIHNvIG9uLiAgdGhpcyB3aWxs
IGJlIE5VTEwgZm9yCisgKiBlcnJvcnMgaW4gd2hpY2ggdGhpcyBkb2VzIG5vdCBhcHBseS4gIGlm
IHRoZSBlcnJvciBpcyBzZXQgdXNpbmcgdGhlCisgKiBvcmRpbmFyeSBmdW5jdGlvbnMgaW4gdGhp
cyBoZWFkZXIgZmlsZSwgdGhpcyBzdHJpbmcgd2lsbCBmYWxsIHNvbWV3aGVyZQorICogaW4gdGhl
IHN0cmluZyByZXR1cm5lZCBieSB0c2ZfZ2V0X2Vycm9yKCkgLSBidXQgdG8gYmUgc2FmZSB5b3Ug
c2hvdWxkCisgKiBub3QgcmVseSBvbiB0aGlzIGZhY3QuICovCitjb25zdCBjaGFyKiAgICAgdHNm
X2dldF9lcnJvcl9pbmZpeCh2b2lkKTsKKworLyogZ2V0IGp1c3QgdGhlIG1lc3NhZ2UgdGhhdCB3
YXMgc3VwcGxpZWQgYnkgdGhlIHVzZXIuICB0aGlzIHdpbGwgYmUKKyAqIE5VTEwgaWYgdGhlIHVz
ZXIgZGlkIG5vdCBzdXBwbHkgYW55dGhpbmcuICBpZiBub24tbnVsbCwgdGhpcyB3aWxsCisgKiBh
bHdheXMgYmUgdGhlIHN1ZmZpeCBvZiB3aGF0IHRzZl9nZXRfZXJyb3IoKSByZXR1cm5zLiAqLwor
Y29uc3QgY2hhciogICAgIHRzZl9nZXRfZXJyb3Jfc3VmZml4KHZvaWQpOworCisvKiBzcGVjaWZ5
IHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQuICBmb3JtYXQgbWF5IGJlIE5VTEwsIGluIHdoaWNoIGNh
c2UKKyAqIHRoZSBvbmx5IGVycm9yIHN0cmluZyBpcyB0aGUgb25lIHRoYXQgY29tZXMgd2l0aCB0
aGUgZ2l2ZW4gZXJyb3IKKyAqIGNvZGUuICovCit2b2lkICAgICAgICAgICAgdHNmX3NldF9lcnJv
cih0c2ZfZXJyb3JfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKworLyog
c3BlY2lmeSB0aGF0IGEgc3lzdGVtIGVycm9yIG9jdXJyZWQuICBpZiBmb3JtYXQgaXMgTlVMTCwg
dGhlbiB0aGUKKyAqIGVycm9yIG1lc3NhZ2UgY29udGFpbnMgdGhlIHN0cmluZyAiU3lzdGVtIGVy
cm9yIiBhbmQgdGhlIHN0cmVycm9yCisgKiBmb3IgdGhlIGdpdmVuIGVycm5vLiAgaWYgZm9ybWF0
IGlzIG5vbi1OVUxMLCB0aGVuIHlvdXIgdGV4dAorICogZ2V0cyBhcHBlbmRlZCBhdCB0aGUgZW5k
IG9mIHRoYXQuICovCit2b2lkICAgICAgICAgICAgdHNmX3NldF9zcGVjaWZpY19lcnJubyhpbnQg
Y3VyX2Vycm5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZm9ybWF0LC4uLik7CisKKy8qIHNwZWNpZnkgdGhhdCBhIHN5c3RlbSBlcnJvciBvY3Vy
cmVkLiAgZXhhY3RseSBsaWtlCisgKiB0c2Zfc2V0X3NwZWNpZmljX2Vycm5vKCkgZXhjZXB0IHRo
YXQgdGhlIGdsb2JhbCBlcnJubyBpcyB1c2VkCisgKiBpbnN0ZWFkIG9mIHRoZSBnaXZlbiBlcnJu
by4gKi8KK3ZvaWQgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKGNvbnN0IGNoYXIgKmZvcm1hdCwu
Li4pOworCisvKiBzcGVjaWZ5IHRoYXQgc29tZSBjaGlsZCBwcm9jZXNzIGRpZWQgd2l0aCB0aGUg
Z2l2ZW4gc2lnbmFsLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9zZXRfZGVhZGx5X3NpZ25hbChp
bnQgZGVhZGx5X3NpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqZm9ybWF0LC4uLik7CisKKy8qIHNwZWNpZnkgdGhhdCBhIFpMaWIgZXJyb3Ig
b2NjdXJyZWQuICBpZiBmb3JtYXQgaXMgTlVMTCwgdGhlbiB0aGUKKyAqIGVycm9yIG1lc3NhZ2Ug
Y29udGFpbnMgdGhlIHN0cmluZyAiWkxpYiBlcnJvciIgYW5kIHRoZSBlcnJvciBtZXNzYWdlCisg
KiB5b3UgcHJvdmlkZS4gIElmIHRoZSBmb3JtYXQgaXMgbm90IE5VTEwsIHRoZSB0ZXh0IHNwZWNp
ZmllZCBieSB0aGUKKyAqIGZvcm1hdCBpcyBhcHBlbmRlZCB0byB0aGF0LgorICoKKyAqIE5vdGUg
dGhhdCBpZiBaTGliIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluLCB0aGlzIGZ1bmN0aW9uIHdp
bGwKKyAqIG1lYW4gYW4gaW1tZWRpYXRlIGFib3J0LiAqLwordm9pZCAgICAgICAgICAgIHRzZl9z
ZXRfemxpYl9lcnJvcihpbnQgZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC4uLik7CisKKy8qIHNwZWNpZnkgdGhhdCBhIGxpYmJ6aXAyIGVycm9yIG9jY3Vy
cmVkLiAgaWYgZm9ybWF0IGlzIE5VTEwsIHRoZW4gdGhlCisgKiBlcnJvciBtZXNzYWdlIGNvbnRh
aW5zIHRoZSBzdHJpbmcgImxpYmJ6aXAyIGVycm9yIiBhbmQgYW4gZXJyb3IgbWVzc2FnZQorICog
dGhhdCBpcyBhcHByb3ByaWF0ZSB0byB0aGUgZXJyb3IgY29kZS4gIElmIHRoZSBmb3JtYXQgaXMg
bm90IE5VTEwsIHRoZQorICogdGV4dCBzcGVjaWZpZWQgYnkgdGhlIGZvcm1hdCBpcyBhcHBlbmRl
ZCB0byB0aGF0LgorICoKKyAqIE5vdGUgdGhhdCBpZiBsaWJiemlwMiBzdXBwb3J0IGlzIG5vdCBj
b21waWxlZCBpbiwgdGhpcyBmdW5jdGlvbiB3aWxsCisgKiBtZWFuIGFuIGltbWVkaWF0ZSBhYm9y
dC4gKi8KK3ZvaWQgICAgICAgICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKGludCBlcnJvcl9j
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKwor
LyogcmV0dXJucyB0aGUgbGlicmFyeSdzIHZlcnNpb24gc3RyaW5nLiAqLworY29uc3QgY2hhciog
ICAgIHRzZl92ZXJzaW9uKHZvaWQpOworCisvKiByZXR1cm5zIHRoZSBsaWJyYXJ5J3MgbWFqb3Ig
dmVyc2lvbiBudW1iZXIuICovCitpbnQgICAgICAgICAgICAgdHNmX3ZlcnNpb25fbWFqb3Iodm9p
ZCk7CisKKy8qIHJldHVybnMgdGhlIGxpYnJhcnkncyBtaW5vciB2ZXJzaW9uIG51bWJlci4gKi8K
K2ludCAgICAgICAgICAgICB0c2ZfdmVyc2lvbl9taW5vcih2b2lkKTsKKworLyogcmV0dXJucyB0
aGUgbGlicmFyeSdzIHBhdGNoIHZlcnNpb24gbnVtYmVyLiAqLworaW50ICAgICAgICAgICAgIHRz
Zl92ZXJzaW9uX3BhdGNoKHZvaWQpOworCisvKiBjcmVhdGVzIGRlZmF1bHQgbGltaXRzICovCit0
c2ZfbGltaXRzX3QqICAgdHNmX2xpbWl0c19jcmVhdGUodm9pZCk7CisKKy8qIGRlc3Ryb3lzIGxp
bWl0cywgYnV0IG9ubHkgaWYgdGhleSdyZSBub3QgTlVMTCAqLwordm9pZCAgICAgICAgICAgIHRz
Zl9saW1pdHNfZGVzdHJveSh0c2ZfbGltaXRzX3QgKmxpbWl0cyk7CisKKy8qIGNsb25lcyBsaW1p
dHMuICByZXR1cm5zIE5VTEwgaWYgdGhlIHR5cGUgaXQncyBnaXZlbiBpcyBOVUxMLiAgdGhpcwor
ICogY291bnRzIGFzIGVycm9yIHByb3BhZ2F0aW9uLiAqLwordHNmX2xpbWl0c190KiAgIHRzZl9s
aW1pdHNfY2xvbmUodHNmX2xpbWl0c190ICpsaW1pdHMpOworCisvKiBzZXQgdGhlIGFsbG93IGJp
dCBvZiB0aGUgcGFydGljdWxhciBraW5kIHR5cGUgKi8KK3N0YXRpYyBUU0ZfaW5saW5lCit2b2lk
ICAgICAgICAgICAgdHNmX2xpbWl0c19zZXRfYWxsb3dfdHlwZV9raW5kKHRzZl9saW1pdHNfdCAq
bGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgbGltaXRzLT5hbGxvd190eXBlX2tpbmRb
a2luZF9jb2RlPj4zXXw9KDE8PChraW5kX2NvZGUmNykpOworfQorCisvKiByZXNldCB0aGUgYWxs
b3cgYml0IG9mIHRoZSBwYXJ0aWN1bGFyIGtpbmQgdHlwZSAqLworc3RhdGljIFRTRl9pbmxpbmUK
K3ZvaWQgICAgICAgICAgICB0c2ZfbGltaXRzX3Jlc2V0X2FsbG93X3R5cGVfa2luZCh0c2ZfbGlt
aXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgbGltaXRzLT5hbGxvd190
eXBlX2tpbmRba2luZF9jb2RlPj4zXSY9figxPDwoa2luZF9jb2RlJjcpKTsKK30KKworLyogZGV0
ZXJtaW5lIGlmIHRoZSBhbGxvdyBiaXQgb2YgdGhlIHBhcnRpY3VsYXIga2luZCB0eXBlIGlzIHNl
dC4gIGFsd2F5cworICogcmV0dXJucyB0c2ZfdHJ1ZSBpZiBsaW1pdHMgaXMgTlVMTC4gKi8KK3N0
YXRpYyBUU0ZfaW5saW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX2xpbWl0c19pc190eXBlX2tpbmRf
YWxsb3dlZCh0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBp
ZiAobGltaXRzPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIChsaW1pdHMtPmFsbG93X3R5cGVfa2luZFtraW5kX2NvZGU+PjNdJigxPDwoa2luZF9j
b2RlJjcpKSkKKyAgICAgICAgICAgP3RzZl90cnVlOnRzZl9mYWxzZTsKK30KKworLyogZ2l2ZW4g
YSBraW5kIGNvZGUsIGdpdmVzIHlvdSB0aGUgdGV4dHVhbCB0c2YgbmFtZSBmb3IgaXQuICovCitz
dGF0aWMgVFNGX2lubGluZQorY29uc3QgY2hhciogICAgIHRzZl90eXBlX2tpbmRfdHNmX25hbWUo
dHNmX3R5cGVfa2luZF90IGtpbmRfY29kZSkgeworICAgIHN3aXRjaCAoa2luZF9jb2RlKSB7Cisg
ICAgY2FzZSBUU0ZfVEtfSU5UODogICAgcmV0dXJuICJUU0ZfVEtfSU5UOCI7CisgICAgY2FzZSBU
U0ZfVEtfVUlOVDg6ICAgcmV0dXJuICJUU0ZfVEtfVUlOVDgiOworICAgIGNhc2UgVFNGX1RLX0lO
VDE2OiAgIHJldHVybiAiVFNGX1RLX0lOVDE2IjsKKyAgICBjYXNlIFRTRl9US19VSU5UMTY6ICBy
ZXR1cm4gIlRTRl9US19VSU5UMTYiOworICAgIGNhc2UgVFNGX1RLX0lOVDMyOiAgIHJldHVybiAi
VFNGX1RLX0lOVDMyIjsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICByZXR1cm4gIlRTRl9US19V
SU5UMzIiOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OiAgIHJldHVybiAiVFNGX1RLX0lOVDY0IjsK
KyAgICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gIlRTRl9US19VSU5UNjQiOworICAgIGNh
c2UgVFNGX1RLX0lOVEVHRVI6IHJldHVybiAiVFNGX1RLX0lOVEVHRVIiOworICAgIGNhc2UgVFNG
X1RLX0xPTkc6ICAgIHJldHVybiAiVFNGX1RLX0xPTkciOworICAgIGNhc2UgVFNGX1RLX0ZMT0FU
OiAgIHJldHVybiAiVFNGX1RLX0ZMT0FUIjsKKyAgICBjYXNlIFRTRl9US19ET1VCTEU6ICByZXR1
cm4gIlRTRl9US19ET1VCTEUiOworICAgIGNhc2UgVFNGX1RLX0FSUkFZOiAgIHJldHVybiAiVFNG
X1RLX0FSUkFZIjsKKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6ICByZXR1cm4gIlRTRl9US19TVFJV
Q1QiOworICAgIGNhc2UgVFNGX1RLX0JJVDogICAgIHJldHVybiAiVFNGX1RLX0JJVCI7CisgICAg
Y2FzZSBUU0ZfVEtfQ0hPSUNFOiAgcmV0dXJuICJUU0ZfVEtfQ0hPSUNFIjsKKyAgICBjYXNlIFRT
Rl9US19WT0lEOiAgICByZXR1cm4gIlRTRl9US19WT0lEIjsKKyAgICBjYXNlIFRTRl9US19TVFJJ
Tkc6ICByZXR1cm4gIlRTRl9US19TVFJJTkciOworICAgIGNhc2UgVFNGX1RLX0FOWTogICAgIHJl
dHVybiAiVFNGX1RLX0FOWSI7CisgICAgZGVmYXVsdDogICAgICAgICAgICAgcmV0dXJuICJ1bmtu
b3duIjsKKyAgICB9Cit9CisKKy8qIHRlbGxzIHlvdSBpZiBhIGtpbmQgY29kZSByZXByZXNlbnRz
IGEgcHJpbWl0aXZlIHR5cGUgKi8KK3N0YXRpYyBUU0ZfaW5saW5lCit0c2ZfYm9vbF90ICAgICAg
dHNmX3R5cGVfa2luZF9pc19wcmltaXRpdmUodHNmX3R5cGVfa2luZF90IGtpbmRfY29kZSkgewor
ICAgIHJldHVybiBraW5kX2NvZGU+PVRTRl9US19JTlQ4ICYmIGtpbmRfY29kZTw9VFNGX1RLX0RP
VUJMRTsKK30KKworLyogZ2l2ZW4gYSBwcmltaXRpdmUga2luZCBjb2RlLCBpdCByZXR1cm5zIHRv
IHlvdSB0aGUgc2l6ZSBpbiBieXRlcy4gIHRoaXMKKyAqIGlzIHRoZSBuYXRpdmUgc2l6ZSBvZiB0
aGUgdHlwZSwgYW5kIGZvciBldmVyeXRoaW5nIGJ1dCBUU0ZfVEtfSU5URUdFUgorICogYW5kIFRT
Rl9US19MT05HLCBpdCdzIGFsc28gdGhlIGVuY29kZWQgc2l6ZS4gKi8KK3N0YXRpYyBUU0ZfaW5s
aW5lCit1aW50MzJfdCAgICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfc2l6ZV9vZih0c2Zf
dHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAgICBj
YXNlIFRTRl9US19JTlQ4OiAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRTRl9US19VSU5UODogICBy
ZXR1cm4gMTsKKyAgICBjYXNlIFRTRl9US19JTlQxNjogICByZXR1cm4gMjsKKyAgICBjYXNlIFRT
Rl9US19VSU5UMTY6ICByZXR1cm4gMjsKKyAgICBjYXNlIFRTRl9US19JTlQzMjogICByZXR1cm4g
NDsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICByZXR1cm4gNDsKKyAgICBjYXNlIFRTRl9US19J
TlRFR0VSOiByZXR1cm4gNDsKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICByZXR1cm4gODsKKyAg
ICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gODsKKyAgICBjYXNlIFRTRl9US19MT05HOiAg
ICByZXR1cm4gODsKKyAgICBjYXNlIFRTRl9US19GTE9BVDogICByZXR1cm4gNDsKKyAgICBjYXNl
IFRTRl9US19ET1VCTEU6ICByZXR1cm4gODsKKyAgICBkZWZhdWx0OiAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICB9Cit9CisKKy8qIHJldHVybnMgYSByYW5nZSBsb3dlciBib3VuZCBJRCAqLwor
c3RhdGljIFRTRl9pbmxpbmUKK2ludDMyX3QgICAgICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVfa2lu
ZF9sb3dlcl9ib3VuZCh0c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChr
aW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19JTlQ4OiAgICByZXR1cm4gLTE7CisgICAgY2Fz
ZSBUU0ZfVEtfVUlOVDg6ICAgcmV0dXJuIDA7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAgcmV0
dXJuIC0zOworICAgIGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAwOworICAgIGNhc2UgVFNG
X1RLX0lOVDMyOiAgIHJldHVybiAtNTsKKyAgICBjYXNlIFRTRl9US19JTlRFR0VSOiByZXR1cm4g
LTU7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOiAgcmV0dXJuIDA7CisgICAgY2FzZSBUU0ZfVEtf
SU5UNjQ6ICAgcmV0dXJuIC03OworICAgIGNhc2UgVFNGX1RLX1VJTlQ2NDogIHJldHVybiAwOwor
ICAgIGNhc2UgVFNGX1RLX0xPTkc6ICAgIHJldHVybiAtNzsKKyAgICBjYXNlIFRTRl9US19GTE9B
VDogICByZXR1cm4gLTk7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOiAgcmV0dXJuIC0xMDsKKyAg
ICBkZWZhdWx0OiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIHJldHVybnMg
YSByYW5nZSB1cHBlciBib3VuZCBJRCAqLworc3RhdGljIFRTRl9pbmxpbmUKK2ludDMyX3QgICAg
ICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF91cHBlcl9ib3VuZCh0c2ZfdHlwZV9raW5kX3Qg
a2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19J
TlQ4OiAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRTRl9US19VSU5UODogICByZXR1cm4gMjsKKyAg
ICBjYXNlIFRTRl9US19JTlQxNjogICByZXR1cm4gMzsKKyAgICBjYXNlIFRTRl9US19VSU5UMTY6
ICByZXR1cm4gNDsKKyAgICBjYXNlIFRTRl9US19JTlQzMjogICByZXR1cm4gNTsKKyAgICBjYXNl
IFRTRl9US19JTlRFR0VSOiByZXR1cm4gNTsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICByZXR1
cm4gNjsKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICByZXR1cm4gNzsKKyAgICBjYXNlIFRTRl9U
S19VSU5UNjQ6ICByZXR1cm4gODsKKyAgICBjYXNlIFRTRl9US19MT05HOiAgICByZXR1cm4gODsK
KyAgICBjYXNlIFRTRl9US19GTE9BVDogICByZXR1cm4gOTsKKyAgICBjYXNlIFRTRl9US19ET1VC
TEU6ICByZXR1cm4gMTA7CisgICAgZGVmYXVsdDogICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfQorCisvKiByZXR1cm5zIHRoZSBwcmVjaXNpb24gb2YgYSBwcmltaXRpdmUgdHlwZSAqLwor
c3RhdGljIFRTRl9pbmxpbmUKK2ludDMyX3QgICAgICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVfa2lu
ZF9wcmVjaXNpb24odHNmX3R5cGVfa2luZF90IGtpbmRfY29kZSkgeworICAgIHN3aXRjaCAoa2lu
ZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfSU5UODogICAgcmV0dXJuIDg7CisgICAgY2FzZSBU
U0ZfVEtfVUlOVDg6ICAgcmV0dXJuIDg7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAgcmV0dXJu
IDE2OworICAgIGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAxNjsKKyAgICBjYXNlIFRTRl9U
S19JTlQzMjogICByZXR1cm4gMzI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOiAgcmV0dXJuIDMy
OworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6IHJldHVybiAzMjsKKyAgICBjYXNlIFRTRl9US19J
TlQ2NDogICByZXR1cm4gNjQ7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OiAgcmV0dXJuIDY0Owor
ICAgIGNhc2UgVFNGX1RLX0xPTkc6ICAgIHJldHVybiA2NDsKKyAgICBjYXNlIFRTRl9US19GTE9B
VDogICByZXR1cm4gMjM7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOiAgcmV0dXJuIDUyOworICAg
IGRlZmF1bHQ6ICAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworLyogZ2l2ZW4gYSBw
cmltaXRpdmUga2luZCBjb2RlLCB0ZWxscyB5b3UgaWYgaXQgaXMgZmxvYXRpbmcgcG9pbnQuICov
CitzdGF0aWMgVFNGX2lubGluZQordHNmX2Jvb2xfdCAgICAgIHRzZl9wcmltaXRpdmVfdHlwZV9r
aW5kX2lzX2Zsb2F0KHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICByZXR1cm4ga2lu
ZF9jb2RlPT1UU0ZfVEtfRkxPQVQgfHwga2luZF9jb2RlPT1UU0ZfVEtfRE9VQkxFOworfQorCisv
KiBzYW1lIGFzIGFib3ZlLiAqLworI2RlZmluZSAgICAgICAgIHRzZl90eXBlX2tpbmRfaXNfZmxv
YXQoa2luZF9jb2RlKSBcCisgICAgICAgICAgICAgICAgICAgICh0c2ZfcHJpbWl0aXZlX3R5cGVf
a2luZF9pc19mbG9hdChraW5kX2NvZGUpKQorCisvKiBnaXZlbiBhIHByaW1pdGl2ZSBraW5kIGNv
ZGUsIHRlbGxzIHlvdSBpZiBpdCBpcyBmbG9hdGluZyBwb2ludC4gKi8KK3N0YXRpYyBUU0ZfaW5s
aW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNfaW50KHRzZl90
eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfa2luZF9pc19wcmlt
aXRpdmUoa2luZF9jb2RlKSAmJgorICAgICAgICAgICAhdHNmX3R5cGVfa2luZF9pc19mbG9hdChr
aW5kX2NvZGUpOworfQorCisvKiBzYW1lIGFzIGFib3ZlLiAqLworI2RlZmluZSAgICAgICAgIHRz
Zl90eXBlX2tpbmRfaXNfaW50KGtpbmRfY29kZSkgXAorICAgICAgICAgICAgICAgICAgICAodHNm
X3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNfaW50KGtpbmRfY29kZSkpCisKKy8qIGdpdmVuIGEgcHJp
bWl0aXZlIGtpbmQgY29kZSwgdGVsbHMgeW91IGlmIGl0IGlzIHNpZ25lZC4gKi8KK3N0YXRpYyBU
U0ZfaW5saW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNfc2ln
bmVkKHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29kZSkg
eworICAgIGNhc2UgVFNGX1RLX0lOVDg6CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6CisgICAgY2Fz
ZSBUU0ZfVEtfSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAgY2FzZSBUU0ZfVEtf
SU5URUdFUjoKKyAgICBjYXNlIFRTRl9US19MT05HOiAgICByZXR1cm4gdHNmX3RydWU7CisgICAg
ZGVmYXVsdDogICAgICAgICAgICAgcmV0dXJuIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX2lzX2Zs
b2F0KGtpbmRfY29kZSk7CisgICAgfQorfQorCisvKiBzYW1lIGFzIGFib3ZlLiAqLworI2RlZmlu
ZSAgICAgICAgIHRzZl90eXBlX2tpbmRfaXNfc2lnbmVkKGtpbmRfY29kZSkgXAorICAgICAgICAg
ICAgICAgICAgICAodHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNfc2lnbmVkKGtpbmRfY29kZSkp
CisKKy8qIGdpdmVuIGEgcHJpbWl0aXZlIGtpbmQgY29kZSwgZ2l2ZXMgeW91IHRoZSB0ZXh0dWFs
IG5hbWUgb2YgdGhlCisgKiBDIHR5cGUuICovCitzdGF0aWMgVFNGX2lubGluZQorY29uc3QgY2hh
ciogICAgIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX2NfbmFtZSh0c2ZfdHlwZV9raW5kX3Qga2lu
ZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19JTlQ4
OiAgICByZXR1cm4gImludDhfdCI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDg6ICAgcmV0dXJuICJ1
aW50OF90IjsKKyAgICBjYXNlIFRTRl9US19JTlQxNjogICByZXR1cm4gImludDE2X3QiOworICAg
IGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAidWludDE2X3QiOworICAgIGNhc2UgVFNGX1RL
X0lOVDMyOiAgIHJldHVybiAiaW50MzJfdCI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOiAgcmV0
dXJuICJ1aW50MzJfdCI7CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6ICAgcmV0dXJuICJpbnQ2NF90
IjsKKyAgICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gInVpbnQ2NF90IjsKKyAgICBjYXNl
IFRTRl9US19JTlRFR0VSOiByZXR1cm4gInRzZl9pbnRlZ2VyX3QiOworICAgIGNhc2UgVFNGX1RL
X0xPTkc6ICAgIHJldHVybiAidHNmX2xvbmdfdCI7CisgICAgY2FzZSBUU0ZfVEtfRkxPQVQ6ICAg
cmV0dXJuICJmbG9hdCI7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOiAgcmV0dXJuICJkb3VibGUi
OworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIHJldHVybiAidW5rbm93biI7CisgICAgfQorfQor
CisvKiBnaXZlbiBhIHByaW1pdGl2ZSBraW5kIGNvZGUsIGdpdmVzIHlvdSB0aGUgdGV4dHVhbCBu
YW1lIG9mIHRoZSB0eXBlCisgKiB1c2luZyBsb3dlciBjYXNlLiAqLworc3RhdGljIFRTRl9pbmxp
bmUKK2NvbnN0IGNoYXIqICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9sY19uYW1lKHRzZl90
eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29kZSkgeworICAgIGNh
c2UgVFNGX1RLX0lOVDg6ICAgIHJldHVybiAiaW50OCI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDg6
ICAgcmV0dXJuICJ1aW50OCI7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAgcmV0dXJuICJpbnQx
NiI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDE2OiAgcmV0dXJuICJ1aW50MTYiOworICAgIGNhc2Ug
VFNGX1RLX0lOVDMyOiAgIHJldHVybiAiaW50MzIiOworICAgIGNhc2UgVFNGX1RLX1VJTlQzMjog
IHJldHVybiAidWludDMyIjsKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICByZXR1cm4gImludDY0
IjsKKyAgICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gInVpbnQ2NCI7CisgICAgY2FzZSBU
U0ZfVEtfSU5URUdFUjogcmV0dXJuICJpbnRlZ2VyIjsKKyAgICBjYXNlIFRTRl9US19MT05HOiAg
ICByZXR1cm4gImxvbmciOworICAgIGNhc2UgVFNGX1RLX0ZMT0FUOiAgIHJldHVybiAiZmxvYXQi
OworICAgIGNhc2UgVFNGX1RLX0RPVUJMRTogIHJldHVybiAiZG91YmxlIjsKKyAgICBkZWZhdWx0
OiAgICAgICAgICAgICByZXR1cm4gInVua25vd24iOworICAgIH0KK30KKworLyogZ2l2ZW4gYSBr
aW5kIGNvZGUsIGdpdmVzIHlvdSB0aGUgdGV4dHVhbCBsb3dlci1jYXNlIG5hbWUgKi8KK3N0YXRp
YyBUU0ZfaW5saW5lCitjb25zdCBjaGFyKiAgICAgdHNmX3R5cGVfa2luZF9sY19uYW1lKHRzZl90
eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29kZSkgeworICAgIGNh
c2UgVFNGX1RLX0FSUkFZOiAgcmV0dXJuICJhcnJheSI7CisgICAgY2FzZSBUU0ZfVEtfU1RSVUNU
OiByZXR1cm4gInN0cnVjdCI7CisgICAgY2FzZSBUU0ZfVEtfQklUOiAgICByZXR1cm4gImJpdCI7
CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOiByZXR1cm4gImNob2ljZSI7CisgICAgY2FzZSBUU0Zf
VEtfVk9JRDogICByZXR1cm4gInZvaWQiOworICAgIGNhc2UgVFNGX1RLX1NUUklORzogcmV0dXJu
ICJzdHJpbmciOworICAgIGNhc2UgVFNGX1RLX0FOWTogICAgcmV0dXJuICJhbnkiOworICAgIGRl
ZmF1bHQ6ICAgICAgICAgICAgcmV0dXJuIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX2xjX25hbWUo
a2luZF9jb2RlKTsKKyAgICB9Cit9CisKKy8qIGdpdmVuIGEgcHJpbWl0aXZlIGtpbmQgY29kZSwg
Z2l2ZXMgeW91IHRoZSBudG9oL2h0b24gbmFtZSB0aGF0CisgKiB3ZSB1c2UgZm9yIGl0LiAqLwor
c3RhdGljIFRTRl9pbmxpbmUKK2NvbnN0IGNoYXIqICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVfa2lu
ZF9uaF9uYW1lKHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRf
Y29kZSkgeworICAgIGNhc2UgVFNGX1RLX0lOVDg6ICAgIHJldHVybiAiYyI7CisgICAgY2FzZSBU
U0ZfVEtfVUlOVDg6ICAgcmV0dXJuICJjIjsKKyAgICBjYXNlIFRTRl9US19JTlQxNjogICByZXR1
cm4gInMiOworICAgIGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAicyI7CisgICAgY2FzZSBU
U0ZfVEtfSU5UMzI6ICAgcmV0dXJuICJsIjsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICByZXR1
cm4gImwiOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OiAgIHJldHVybiAibGwiOworICAgIGNhc2Ug
VFNGX1RLX1VJTlQ2NDogIHJldHVybiAibGwiOworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6IHJl
dHVybiAibCI7CisgICAgY2FzZSBUU0ZfVEtfTE9ORzogICAgcmV0dXJuICJsbCI7CisgICAgY2Fz
ZSBUU0ZfVEtfRkxPQVQ6ICAgcmV0dXJuICJmIjsKKyAgICBjYXNlIFRTRl9US19ET1VCTEU6ICBy
ZXR1cm4gImQiOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIHJldHVybiAidW5rbm93biI7Cisg
ICAgfQorfQorCisvKiBkb2VzIGEgcHJpbWl0aXZlIGluc3RhbmNlIG9mLiAgb25lIHByaW1pdGl2
ZSBpcyBpbnN0YW5jZSBvZiBhbm90aGVyCisgKiBpZiB0aGUgZG9tYWluIG9mIHRoZSBmaXJzdCBp
cyBjb250YWluZWQgaW4gdGhlIGRvbWFpbiBvZiB0aGUgc2Vjb25kLgorICogaWYgeW91IHdpc2gg
dG8gYXNzaWduIG9uZSBwcmltaXRpdmUgdG8gYW5vdGhlciwgdGhlbiB0byBhdm9pZAorICogYSBs
b3NzIG9mIHNpZ25pZmljYW50IG9yIGFuIG92ZXJmbG93LCB5b3UgbXVzdCBlbnN1cmUgdGhhdCB0
aGUKKyAqIHNvdXJjZSBpcyBpbnN0YW5jZSBvZiB0aGUgZGVzdGluYXRpb24uICovCit0c2ZfYm9v
bF90ICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaW5zdGFuY2VvZih0c2ZfdHlwZV9raW5k
X3Qgb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHNmX3R5cGVfa2luZF90IHR3byk7CisKKy8qIHJldHVybnMgYSBwcmltaXRpdmUgdHlwZSBr
aW5kIHRoYXQgbWF0Y2hlcyB0aGUgcmVxdWlyZXMgc3BlY2lmaWNhdGlvbi4gKi8KK3RzZl90eXBl
X2tpbmRfdCB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9mb3Jfc3BlYyhpbnQzMl90IGxvd2VyX2Jv
dW5kLAorCQkJCQkJIGludDMyX3QgdXBwZXJfYm91bmQsCisJCQkJCQkgaW50MzJfdCBwcmVjaXNp
b24pOworCisvKiByZXR1cm5zIHRoZSBzbWFsbGVzdCBjb21tb24gc3VidHlwZSBvZiB0aGUgdHdv
IHR5cGVzLCBvciB2b2lkIGlmCisgKiBhIGNvbW1vbiBzdWJ0eXBlIGRvZXMgbm90IGV4aXN0LiAq
LwordHNmX3R5cGVfa2luZF90IHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX21peCh0c2ZfdHlwZV9r
aW5kX3Qgb25lLAorCQkJCQkgICAgdHNmX3R5cGVfa2luZF90IHR3byk7CisKKy8qIHRlbGxzIHlv
dSBpZiB0eXBlcyB3aXRoIHRoZSBnaXZlbiBraW5kIHR5cGUgYXJlIGNvbnRhaW5lcnMuICovCitz
dGF0aWMgVFNGX2lubGluZQordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX2tpbmRfaXNfY29udGFp
bmVyKHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29kZSkg
eworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICBj
YXNlIFRTRl9US19DSE9JQ0U6IHJldHVybiB0c2ZfdHJ1ZTsKKyAgICBkZWZhdWx0OiAgICAgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorfQorCisvKiB0ZWxscyB5b3UgaWYgdHlwZXMg
d2l0aCB0aGUgZ2l2ZW4ga2luZCB0eXBlIGNhbiBzdG9yZSBjb21tZW50cy4gKi8KK3N0YXRpYyBU
U0ZfaW5saW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfa2luZF9pc19jb21tZW50YWJsZSh0
c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgcmV0dXJuIHRzZl90eXBlX2tpbmRfaXNf
Y29udGFpbmVyKGtpbmRfY29kZSk7Cit9CisKKy8qIGNyZWF0ZSBhIHR5cGUgdGFibGUgKHlvdSBz
aG91bGQgYWxtb3N0IG5ldmVyIGhhdmUgdG8gZG8gdGhpcworICogZGlyZWN0bHkuKSAqLwordHNm
X3R5cGVfdGFibGVfdCogdHNmX3R5cGVfdGFibGVfY3JlYXRlKHZvaWQpOworCisvKiBjb3B5IHRo
ZSBjb250ZW50cyBvZiBvbmUgdHlwZSB0YWJsZSBpbnRvIGFub3RoZXIgKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2ZfdHlwZV90YWJsZV9jb3B5KHRzZl90eXBlX3RhYmxlX3QgKmRlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV90ICpzcmMpOworCisv
KiBkZXN0cm95IGEgdHlwZSB0YWJsZSAqLwordm9pZCAgICAgICAgICAgIHRzZl90eXBlX3RhYmxl
X2Rlc3Ryb3kodHNmX3R5cGVfdGFibGVfdCAqdHQpOworCisvKiB3cml0ZSB0aGUgdHlwZSB0YWJs
ZSAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX3RhYmxlX3dyaXRlKHRzZl90eXBlX3RhYmxl
X3QgKnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl93cml0ZXJf
dCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
KTsKKworLyogYXBwZW5kIGEgdHlwZSB0byB0aGUgdHlwZSB0YWJsZSAqLwordHNmX2Jvb2xfdCAg
ICAgIHRzZl90eXBlX3RhYmxlX2FwcGVuZCh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHJl
bW92ZSBhIHR5cGUgZnJvbSB0aGUgdHlwZSB0YWJsZS4gbm90ZSB0aGF0IHRoaXMgY2hhbmdlcyB0
aGUKKyAqIGluZGV4aW5nIG9mIHRoZSB0eXBlIHRhYmxlIGlmIHRoaXMgaXNuJ3QgdGhlIGxhc3Qg
ZWxlbWVudC4KKyAqIHRoZSBvbmx5IGVycm9yIHRoYXQgdGhpcyBjb3VsZCByZXBvcnQgaXMgVFNG
X0VfRUxFX05PVF9GT1VORAorICogaWYgdGhlIGVsZW1lbnQgd2Fzbid0IGluIHRoZSB0YWJsZS4g
Ki8KK3RzZl9ib29sX3QgICAgICB0c2ZfdHlwZV90YWJsZV9yZW1vdmUodHNmX3R5cGVfdGFibGVf
dCAqdHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
Km5hbWUpOworCisvKiBmaW5kIGEgbmFtZWQgdHlwZSBub2RlIGluIHRoZSB0YWJsZSB1c2luZyB0
aGUgbmFtZS4gKi8KK3RzZl9uYW1lZF90eXBlX3QqIHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfbmFt
ZSh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKKworLyogZmluZCBhIG5hbWVkIHR5cGUg
bm9kZSBpbiB0aGUgdGFibGUgdXNpbmcgdGhlIGluZGV4LiAqLwordHNmX25hbWVkX3R5cGVfdCog
dHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRleCh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgp
OworCisvKiBnZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHlwZSB0YWJsZS4gKi8K
K3VpbnQzMl90ICAgICAgICB0c2ZfdHlwZV90YWJsZV9nZXRfbnVtX2VsZW1lbnRzKHRzZl90eXBl
X3RhYmxlX3QgKnR0KTsKKworLyogZ2V0IHRoZSBoYXNoIGZvciBhIHR5cGUgdGFibGUuICB5b3Ug
YXJlIGd1YXJhbnRlZWQgdGhhdCB0aGlzIGlzIGp1c3QKKyAqIHRoZSBzdW0gb2YgdGhlIGhhc2gg
Y29kZXMgb2YgdGhlIGNvbnN0aXR1ZW50IHRzZl9uYW1lZF90eXBlX3Qgb2JqZWN0cy4KKyAqIGhl
bmNlLCB5b3UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgd2hhdCB0aGUgaGFzaCBjb2RlIGlzIGFmdGVy
IGFuCisgKiBhcHBwZW5kIG9wZXJhdGlvbi4gKi8KK2ludCAgICAgICAgICAgICB0c2ZfdHlwZV90
YWJsZV9nZXRfaGFzaCh0c2ZfdHlwZV90YWJsZV90ICp0dCk7CisKKy8qIGRldGVybWluZSBpcyB0
aGUgdHlwZSB0YWJsZSBjb250YWlucyBhbnkgZHluYW1pYyB0eXBlcy4gKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2ZfdHlwZV90YWJsZV9jb250YWluc19keW5hbWljKHRzZl90eXBlX3RhYmxlX3QgKnR0
KTsKKworLyogY29tcGFyZSB0d28gdHlwZSB0YWJsZXMuICovCit0c2ZfYm9vbF90ICAgICAgdHNm
X3R5cGVfdGFibGVfY29tcGFyZSh0c2ZfdHlwZV90YWJsZV90ICphLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfdCAqYik7CisKKy8qIGNyZWF0
ZSBhIHRhYmxlIG9mIHR5cGVzLiAqLwordHNmX3R5cGVfaW5fbWFwX3QqIHRzZl90eXBlX2luX21h
cF9jcmVhdGUodm9pZCk7CisKKy8qIGNyZWF0ZSBhIHRhYmxlIG9mIHR5cGVzIGluc2lkZSBvZiB0
aGUgcHJvdmlkZWQgcmVnaW9uLiAqLwordHNmX3R5cGVfaW5fbWFwX3QqIHRzZl90eXBlX2luX21h
cF9jcmVhdGVfaW4odm9pZCAqcmVnaW9uKTsKKworLyogcmV0dXJuIHRoZSBnbG9iYWwgZW1wdHkg
dGFibGUgb2YgdHlwZXMuICB0aGlzIG9uZSBzaG91bGQgbmV2ZXIKKyAqIGJlIG1vZGlmaWVkLiAq
LwordHNmX3R5cGVfaW5fbWFwX3QqIHRzZl90eXBlX2luX21hcF9nZXRfZW1wdHlfc2luZ2xldG9u
KHZvaWQpOworCisvKiBjbG9uZSBhIHRhYmxlIG9mIHR5cGVzLiAqLwordHNmX3R5cGVfaW5fbWFw
X3QqIHRzZl90eXBlX2luX21hcF9jbG9uZSh0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMpOworCisv
KiBjbG9uZSBhIHRhYmxlIG9mIHR5cGVzLCBjcmVhdGluZyB0aGUgbmV3IG9uZSBpbiBhIHJlZ2lv
bi4gKi8KK3RzZl90eXBlX2luX21hcF90KiB0c2ZfdHlwZV9pbl9tYXBfY2xvbmVfaW4odHNmX3R5
cGVfaW5fbWFwX3QgKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICpyZWdpb24pOworCisvKiBkZXN0cm95IGEgdGFibGUgb2YgdHlwZXMuICBo
YXMgbm8gZWZmZWN0IGlmIHBhc3NlZCB0aGUKKyAqIGVtcHR5IHNpbmdsZXRvbi4gIGNhbm5vdCBi
ZSB1c2VkIG9uIHJlZ2lvbi1hbGxvY2F0ZWQgdGFibGVzLiAqLwordm9pZCAgICAgICAgICAgIHRz
Zl90eXBlX2luX21hcF9kZXN0cm95KHRzZl90eXBlX2luX21hcF90ICp0eXBlcyk7CisKKy8qIHBy
ZXBhcmUgc29tZSBudW1iZXIgb2Ygc2xvdHMgZm9yIHR5cGVzIGluIHRoZSB0YWJsZS4gIGEgY2Fs
bCB0byB0aGlzCisgKiBmdW5jdGlvbiBzZXJ2ZXMgYXMgYSBoaW50IGFuZCBzbyBkb2VzIG5vdCBo
YXZlIGFueSBndWFyYW50ZWVkIGVmZmVjdC4KKyAqIGFzIHN1Y2gsIHN1Y2Nlc3MgaW4gdGhpcyBm
dW5jdGlvbiBzaG91bGQgbm90IGJlIHRha2VuIHRvIG1lYW4gdGhhdAorICogdGhlIHN1YnNlcXVl
bnQgYXBwZW5kIG9wZXJhdGlvbnMgYXJlIGd1YXJhbnRlZWQgdG8gc3VjY2VlZCBhbmQKKyAqIGZh
aWx1cmUgaW4gdGhpcyBvcGVyYXRpb24gc2hvdWxkIG5vdCBiZSB0YWtlbiB0byBtZWFuIHRoYXQg
YW55CisgKiBudW1iZXIgb2Ygc3Vic2VxdWVudCBhcHBlbmRzIHNob3VsZCBmYWlsLgorICoKKyAq
IChJbiBvdGhlciB3b3JkcywgdGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgc2FmZWx5IGlnbm9yZWQu
ICBJdCBpcyB0aGVyZQorICogdG8gYWlkIGluIGRlYnVnZ2luZyBvbmx5LikgKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfdHlwZV9pbl9tYXBfcHJlcGFyZSh0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnVtKTsK
KworLyogYXBwZW5kIGEgdHlwZSB0byB0aGUgdGFibGUuICB0aGUgaW5kZXggd2lsbCBiZSB0aGUg
bnVtYmVyIG9mCisgKiB0eXBlcyBwcmlvciB0byB0aGUgYXBwZW5kLiAqLwordHNmX2Jvb2xfdCAg
ICAgIHRzZl90eXBlX2luX21hcF9hcHBlbmQodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSk7CisK
Ky8qIHJldHVybnMgdGhlIG51bWJlciBvZiB0eXBlcyBpbiB0aGUgdGFibGUuICovCit1aW50MzJf
dCAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2dldF9udW1fdHlwZXModHNmX3R5cGVfaW5fbWFwX3Qg
KnR5cGVzKTsKKworLyogcmV0dXJucyB0aGUgdHlwZSBhdCB0aGUgZ2l2ZW4gaW5kZXggaW4gdGhl
IHRhYmxlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl90eXBlX2luX21hcF9nZXRfdHlwZSh0c2Zf
dHlwZV9pbl9tYXBfdCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGluZGV4KTsKKworLyogcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgdHlw
ZSB0YWJsZSB0byB0aGUgc3BlY2lmaWVkIG5ldyBzaXplLgorICogdW5wcmVkaWN0YWJseSBob3Jy
aWJsZSB0aGluZ3Mgd2lsbCBoYXBwZW4gaWYgdGhlIG5ldyBzaXplIGlzCisgKiBncmVhdGVyIHRo
YW4gdGhlIGN1cnJlbnQgc2l6ZS4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBf
dHJ1bmNhdGUodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdfc2l6ZSk7CisKKy8qIGNvbXBhcmUgdHdv
IHR5cGUgdGFibGVzLiAgdHdvIHR5cGUgdGFibGVzIGFyZSBlcXVhbCBpZiB0aGV5CisgKiBoYXZl
IHRoZSBzYW1lIG51bWJlciBvZiB0eXBlcywgYW5kIGZvciBlYWNoIGluZGV4LCBvZiB0aGUgdHlw
ZXMKKyAqIGF0IHRoYXQgaW5kZXggYXJlIHRoZSBzYW1lIGFjY29yZGluZyB0byB0c2ZfdHlwZV9j
b21wYXJlKCkuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfaW5fbWFwX2NvbXBhcmUodHNm
X3R5cGVfaW5fbWFwX3QgKmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHNmX3R5cGVfaW5fbWFwX3QgKmIpOworCisvKiBjcmVhdGVzIGEgbmV3IGVtcHR5IHR5cGUg
bWFwLiAqLwordHNmX3R5cGVfb3V0X21hcF90KiB0c2ZfdHlwZV9vdXRfbWFwX2NyZWF0ZSh2b2lk
KTsKKworLyogZGVzdHJveSBhIHR5cGUgbWFwLiAqLwordm9pZCAgICAgICAgICAgIHRzZl90eXBl
X291dF9tYXBfZGVzdHJveSh0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwKTsKKworLyogbG9v
ayB1cCBhIHR5cGUgY29kZSBhc3NlcnRpbmcgdGhhdCBpdCBtdXN0IGJlIGZvdW5kLiAgYW4gZXJy
b3IgaXMKKyAqIHJldHVybmVkIGlmIGl0IGlzIG5vdCBmb3VuZC4gKi8KK3RzZl9ib29sX3QgICAg
ICB0c2ZfdHlwZV9vdXRfbWFwX2ZpbmRfdHlwZV9jb2RlKHRzZl90eXBlX291dF9tYXBfdCAqdHlw
ZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgKnR5cGVfY29kZSk7CisKKy8qIGxvb2sgdXAgYSB0eXBlIGNvZGUs
IHBvdGVudGlhbGx5IGNyZWF0aW5nIGEgbmV3IG9uZS4gIGZhaWxzIG9ubHkgaWYKKyAqIGEgdHlw
ZSBjb2RlIGhhZCB0byBiZSBjcmVhdGVkIEFORCB0aGF0IGNyZWF0aW9uIGZhaWxlZC4gKi8KK3Rz
Zl9ib29sX3QgICAgICB0c2ZfdHlwZV9vdXRfbWFwX2dldF90eXBlX2NvZGUodHNmX3R5cGVfb3V0
X21hcF90ICp0eXBlX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnR5cGVfY29kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCAqY3JlYXRlZCk7CisKKy8q
IGRlc3Ryb3kgYSB0eXBlIG91dCBtYXAgYW5kIHByb2R1Y2UgYSB0eXBlIGluIG1hcCB0aGluZ3kg
ZnJvbSBpdC4gKi8KK3RzZl90eXBlX2luX21hcF90KiB0c2ZfdHlwZV9pbl9tYXBfZnJvbV90eXBl
X291dF9tYXAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwKTsKKworLyogZGVzdHJveSBhIHR5cGUgb3V0
IG1hcCBhbmQgcHJvZHVjZSBhIHR5cGUgaW4gbWFwIHRoaW5neSBmcm9tIGl0LgorICogY3JlYXRl
cyB0aGUgdHlwZSBpbiB0aGluZ3kgaW4gdGhlIHByb3ZpZGVkIHJlZ2lvbi4gKi8KK3RzZl90eXBl
X2luX21hcF90KiB0c2ZfdHlwZV9pbl9tYXBfZnJvbV90eXBlX291dF9tYXBfaW4oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFw
X3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqcmVnaW9uKTsKKworLyogY3JlYXRlIGFuIGVtcHR5IHJhbmRvbS1hY2Nlc3Mg
dHlwZSBtYW5hZ2VyLiAqLwordHNmX3JhX3R5cGVfbWFuX3QqIHRzZl9yYV90eXBlX21hbl9jcmVh
dGUodm9pZCk7CisKKy8qIHBhcnNlIGEgcmFuZG9tLWFjY2VzcyB0eXBlIG1hbmFnZXIuICovCit0
c2ZfcmFfdHlwZV9tYW5fdCogdHNmX3JhX3R5cGVfbWFuX3JlYWQodHNmX3JlYWRlcl90IHJlYWRl
ciwKKwkJCQkJdm9pZCAqYXJnKTsKKworLyogZGVzdHJveSBhIHJhbmRvbS1hY2Nlc3MgdHlwZSBt
YW5hZ2VyLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9yYV90eXBlX21hbl9kZXN0cm95KHRzZl9y
YV90eXBlX21hbl90ICptYW4pOworCisvKiB3cml0ZSB0aGUgc3R1ZmYgaW4gdGhlIHR5cGUgbWFu
YWdlciBvdXQgdG8gc29tZXdoZXJlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9yYV90eXBlX21h
bl93cml0ZSh0c2ZfcmFfdHlwZV9tYW5fdCAqbWFuLAorCQkJCSAgICAgIHRzZl93cml0ZXJfdCB3
cml0ZXIsCisJCQkJICAgICAgdm9pZCAqYXJnKTsKKworLyogaW5zZXQgYSB0eXBlIGludG8gdGhl
IHR5cGUgbWFuYWdlci4gIGRvIHRoaXMgb25seSBpZiB5b3Uga25vdworICAgdGhhdCB0aGUgdHlw
ZSBpcyBub3QgYWxyZWFkeSBpbiB0aGUgdHlwZSBtYW5hZ2VyLiAqLwordHNmX2Jvb2xfdCAgICAg
IHRzZl9yYV90eXBlX21hbl9pbnNlcnQodHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkgICAg
ICAgdHNmX3R5cGVfdCAqdHlwZSwKKwkJCQkgICAgICAgdWludDMyX3QgdHlwZV9jb2RlLAorCQkJ
CSAgICAgICB1aW50NjRfdCByZWZfY291bnQpOworCisvKiByZW1vdmUgYSB0eXBlIGZyb20gdGhl
IHR5cGUgbWFuYWdlci4gIGRvIHRoaXMgb25seSBpZiB5b3Uga25vdworICAgdGhhdCB0aGUgdHlw
ZSBpcyBpbiB0aGUgdHlwZSBtYW5hZ2VyLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9yYV90eXBl
X21hbl9yZW1vdmUodHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkgICAgICAgdHNmX3R5cGVf
dCAqdHlwZSk7CisKKy8qIGZpbmQgYSB0eXBlIGluIHRoZSB0eXBlIG1hbmFnZXIgdXNpbmcgdGhl
IHR5cGUgY29kZS4gIGlmIGl0J3MKKyAgIG5vdCBmb3VuZCwgTlVMTCB3aWxsIGJlIHJldG9ybmVk
IGFuZCBhbiBlcnJvciBjb2RlIHdpbGwgYmUgc2V0LiAqLwordHNmX3R5cGVfdCogICAgIHRzZl9y
YV90eXBlX21hbl9maW5kKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJICAgICB1aW50MzJf
dCB0eXBlX2NvZGUpOworCisvKiBkZXRlcm1pbmUgaWYgdGhlIHR5cGUgbWFuYWdlciBoYXMgdGhl
IGdpdmVuIHR5cGUuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3JhX3R5cGVfbWFuX2hhc190eXBl
KHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSB0c2ZfdHlwZV90ICp0eXBlKTsKKworLyog
Z2V0IHRoZSB0eXBlIGNvZGUgZm9yIGEgdHlwZS4gIG9ubHkgY2FsbCB0aGlzIGlmIHlvdSBrbm93
IHRoYXQKKyAgIHRoZSB0eXBlIG1hbmFnZXIgaGFzIHRoZSB0eXBlLiAqLwordWludDMyX3QgICAg
ICAgIHRzZl9yYV90eXBlX21hbl9nZXRfdHlwZV9jb2RlKHRzZl9yYV90eXBlX21hbl90ICptYW4s
CisJCQkJCSAgICAgIHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBpbmNyZWFzZSB0aGUgcmVmZXJl
bmNlIGNvdW50IGZvciB0aGUgZ2l2ZW4gdHlwZS4gIGlmIHRoZSB0eXBlCisgICBpcyBub3QgaW4g
dGhlIHR5cGUgbWFuYWdlciwgaXQgaXMgYWRkZWQgdG8gdGhlIHR5cGUgbWFuYWdlciwKKyAgIGFz
c2lnbmVkIGEgdHlwZSBjb2RlLCBhbmQgZ2l2ZW4gYSByZWZlcmVuY2UgY291bnQgb2YgMS4gKi8K
K3RzZl9ib29sX3QgICAgICB0c2ZfcmFfdHlwZV9tYW5fZ2V0X3JlZmVyZW5jZSh0c2ZfcmFfdHlw
ZV9tYW5fdCAqbWFuLAorCQkJCQkgICAgICB0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogZGVjcmVh
c2UgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYSBnaXZlbiB0eXBlLiAgaWYgdGhlIHJlZmVyZW5j
ZQorICAgY291bnQgZHJvcHMgdG8gMCwgdGhlIHR5cGUgaXMgcmVtb3ZlZC4gKi8KK3ZvaWQgICAg
ICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlX3JlZmVyZW5jZSh0c2ZfcmFfdHlwZV9tYW5f
dCAqbWFuLAorCQkJCQkJIHRzZl90eXBlX3QgKnR5cGUpOworCit1aW50MzJfdCAgICAgICAgdHNm
X3JhX3R5cGVfbWFuX251bV90eXBlcyh0c2ZfcmFfdHlwZV9tYW5fdCAqbWFuKTsKKworLyogZGV0
ZXJtaW5lIGlmIHRoZSB0eXBlIG1hbmFnZXIgY29udGFpbnMgYWxsIG9mIHRoZSB0eXBlcyB1c2Vk
IGJ5CisgICB0aGUgZ2l2ZW4gYnVmZmVyLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9yYV90eXBl
X21hbl9oYXNfYnVmX3R5cGVzKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSAgICAgIHRz
Zl9idWZmZXJfdCAqYnVmKTsKKworLyogaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3Ig
dGhlIHR5cGVzIGluIHRoZSBnaXZlbiBidWZmZXIuCisgICBjcmVhdGVzIGFueSB0eXBlcyB0aGF0
IGRvbid0IGV4aXN0LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9yYV90eXBlX21hbl9nZXRfYnVm
X3JlZmVyZW5jZXModHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkJCSAgIHRzZl9idWZmZXJf
dCAqYnVmKTsKKworLyogZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIHR5cGVz
IGluIHRoZSBnaXZlbiBidWZmZXIuICovCit2b2lkICAgICAgICAgICAgdHNmX3JhX3R5cGVfbWFu
X3JlbW92ZV9idWZfcmVmZXJlbmNlcyh0c2ZfcmFfdHlwZV9tYW5fdCAqbWFuLAorCQkJCQkJICAg
ICAgdHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiB0eXBl
IGNvZGVzIG9uIHRoZSBmcmVlLWxpc3QuICovCit1aW50MzJfdCAgICAgICAgdHNmX3JhX3R5cGVf
bWFuX2dldF90eXBlX2NvZGVfZnJlZV9saXN0X3NpemUoCisJCQkJCQkgICAgIHRzZl9yYV90eXBl
X21hbl90ICptYW4pOworCisvKiBjcmVhdGUgYSB0eXBlIG9iamVjdC4gIHRoaXMgZnVuY3Rpb24g
d2lsbCBub3QgYWNjZXB0IFRTRl9US19BUlJBWS4KKyAqIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBh
IHR5cGUgd2l0aCBraW5kIGNjb2RlIFRTRl9US19BUlJBWSwgdXNlCisgKiB0c2ZfdHlwZV9jcmVh
dGVfYXJyYXkoKS4KKyAqCisgKiB0aGlzIGNhbiBvbmx5IGZhaWwgZHVlIHRvIG1lbW9yeSBhbGxv
Y2F0aW9uIGZhaWx1cmUgb3IgaWYgdGhlIGtpbmRfY29kZQorICogaXMgaW52YWxpZC4gKi8KK3Rz
Zl90eXBlX3QqICAgICB0c2ZfdHlwZV9jcmVhdGUodHNmX3R5cGVfa2luZF90IGtpbmRfY29kZSk7
CisKKy8qIGNyZWF0ZSBhbiBhcnJheSB0eXBlIG9iamVjdC4KKyAqCisgKiB0aGlzIGNhbiBvbmx5
IGZhaWwgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgb3IgaWYgZWxlbWVudF90eXBl
IGlzCisgKiBOVUxMLCBpbiB3aGljaCBjYXNlIGl0IHJldHVybnMgd2l0aG91dCBzZXR0aW5nIGVy
cm9yLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl90eXBlX2NyZWF0ZV9hcnJheSh0c2ZfdHlwZV90
ICplbGVtZW50X3R5cGUpOworCisvKiBjcmVhdGUgYSBzdHJ1Y3QgdHlwZSBhbGwgYXQgb25jZS4g
IG5vdGUgdGhhdCB5b3UgY2FuIHVzZQorICogdHNmX3R5cGVfY3JlYXRlKCkgaW4gY29tYmluYXRp
b24gd2l0aCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kKCkgdG8gZG8KKyAqIHdoYXQgdGhpcyBtZXRo
b2QgZG9lcy4gIGFsc28sIHlvdSBjYW4gc2FmZWx5IHVzZQorICogdHNmX3N0cnVjdF90eXBlX2Fw
cGVuZCgpIG9uIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhpcyBtZXRob2QuCisgKgorICogdGhl
IHdheSB5b3Ugd291bGQgYWN0dWFsbHkgdXNlIHRoaXMgaXMgdG8gcGFzcyBzdHJ1Y3QgZWxlbWVu
dCBuYW1lcworICogcGFpcmVkIHdpdGggdHlwZXMuICBmb3IgZXhhbXBsZToKKyAqCisgKiB0c2Zf
dHlwZV90ICpteV90eXBlID0KKyAqICAgICB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0KCJ4IiwKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfRkxPQVQp
LAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3R5cGVfY3JlYXRlKFRTRl9US19GTE9BVCksCisgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKKyAqCisgKiBub3RlIHRoYXQgeW91IG11c3QgcGFzcyBO
VUxMIGFmdGVyIHRoZSBsYXN0IHBhaXIuICBvdGhlcndpc2UgeW91J2xsCisgKiBnZXQgcmFuZG9t
IGNyYXNoZXMgYW5kIHN0dWZmLgorICoKKyAqIHRoZSB0eXBlcyBwYXNzZWQgdG8gdGhpcyBmdW5j
dGlvbiBiZWNvbWUgb3duZWQgYnkgdGhlIGZ1bmN0aW9uCisgKiByZWdhcmRsZXNzIG9mIHN1Y2Nl
c3Mgb3IgZXJyb3IuICovCit0c2ZfdHlwZV90KiAgICAgdHNmX3R5cGVfY3JlYXRlX3N0cnVjdChj
b25zdCBjaGFyICpmaXJzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uKTsKKworLyogdGhlIHNhbWUgYXMgdGhlIGFib3ZlIGJ1dCB0YWlsb3JlZCB0byBh
bGxvdyB5b3UgdG8gdXNlIGl0IG1vcmUgZWFzaWx5CisgKiBmcm9tIHlvdXIgb3duIHN1YnJ1dGlu
ZXMgdGhhdCB1c2UgdmFyaWFibGUgYXJncy4gKi8KK3RzZl90eXBlX3QqICAgICB0c2ZfdHlwZV9j
cmVhdGVfc3RydWN0dihjb25zdCBjaGFyICpmaXJzdF9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgbHN0KTsKKworLyogY3JlYXRlIGEgY2hvaWNl
IHR5cGUgYWxsIGF0IG9uY2UuICBub3RlIHRoYXQgeW91IGNhbiB1c2UKKyAqIHRzZl90eXBlX2Ny
ZWF0ZSgpIGluIGNvbWJpbmF0aW9uIHdpdGggdHNmX2Nob2ljZV90eXBlX2FwcGVuZCgpIHRvIGRv
CisgKiB3aGF0IHRoaXMgbWV0aG9kIGRvZXMuICBhbHNvLCB5b3UgY2FuIHNhZmVseSB1c2UKKyAq
IHRzZl9jaG9pY2VfdHlwZV9hcHBlbmQoKSBvbiB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoaXMg
bWV0aG9kLgorICoKKyAqIHRoZSB3YXkgeW91IHdvdWxkIGFjdHVhbGx5IHVzZSB0aGlzIGlzIHRv
IHBhc3Mgc3RydWN0IGVsZW1lbnQgbmFtZXMKKyAqIHBhaXJlZCB3aXRoIHR5cGVzLiAgZm9yIGV4
YW1wbGU6CisgKgorICogdHNmX3R5cGVfdCAqbXlfdHlwZSA9CisgKiAgICAgdHNmX3R5cGVfY3Jl
YXRlX2Nob2ljZSgieCIsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9j
cmVhdGUoVFNGX1RLX0ZMT0FUKSwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IiwK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfRkxP
QVQpLAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgKgorICogbm90ZSB0
aGF0IHlvdSBtdXN0IHBhc3MgTlVMTCBhZnRlciB0aGUgbGFzdCBwYWlyLiAgb3RoZXJ3aXNlIHlv
dSdsbAorICogZ2V0IHJhbmRvbSBjcmFzaGVzIGFuZCBzdHVmZi4KKyAqCisgKiB0aGUgdHlwZXMg
cGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gYmVjb21lIG93bmVkIGJ5IHRoZSBmdW5jdGlvbgorICog
cmVnYXJkbGVzcyBvZiBzdWNjZXNzIG9yIGVycm9yLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl90
eXBlX2NyZWF0ZV9jaG9pY2UoY29uc3QgY2hhciAqZmlyc3RfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisKKy8qIHRoZSBzYW1lIGFzIHRoZSBhYm92
ZSBidXQgdGFpbG9yZWQgdG8gYWxsb3cgeW91IHRvIHVzZSBpdCBtb3JlIGVhc2lseQorICogZnJv
bSB5b3VyIG93biBzdWJydXRpbmVzIHRoYXQgdXNlIHZhcmlhYmxlIGFyZ3MuICovCit0c2ZfdHlw
ZV90KiAgICAgdHNmX3R5cGVfY3JlYXRlX2Nob2ljZXYoY29uc3QgY2hhciAqZmlyc3RfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGxzdCk7CisK
Ky8qIHJlYWQgYSB0eXBlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl90eXBlX3JlYWQodHNmX3Jl
YWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzKTsKKwor
Lyogd3JpdGUgYSB0eXBlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX3dyaXRlKHRzZl90
eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRlcl90
IHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisv
KiBkdXBsaWNhdGUgYSB0eXBlLiAgdGhpcyBnaXZlcyB5b3UgYSBjb3B5IG9mIHRoZSB0eXBlIHRo
YXQgbXVzdCBiZQorICogc2VwYXJhdGVseSBkZXN0cm95ZWQuICBzbywgaWYgeW91IHdpc2ggdG8g
cmV0YWluIHRoZSB0eXBlIGFmdGVyIGEKKyAqIGNhbGwgdG8gYSBmdW5jdGlvbiB0aGF0IG1pZ2h0
IGRlc3Ryb3kgaXQsIGNhbGwgdGhpcyBmaXJzdC4gIHRoaXMKKyAqIHdpbGwgb25seSByZXR1cm4g
TlVMTCBpZiB0aGUgdHlwZSB5b3UgcGFzcyBpdCBpcyBOVUxMLCBmb3IgdGhlCisgKiBwdXJwb3Nl
IG9mIGVycm9yIHByb3BhZ2F0aW9uLiAgdGhpcyB3aWxsIG5ldmVyIGNyZWF0ZSBhbiBlcnJvci4g
Ki8KK3RzZl90eXBlX3QqICAgICB0c2ZfdHlwZV9kdXAodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8q
IGRlc3Ryb3kgYSB0eXBlIG9iamVjdC4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0
cm95KHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBnZXQgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhl
IHR5cGUuICBub3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gY2Fubm90CisgKiBmYWlsLiAgbm90ZSBm
dXJ0aGVyIHRoYXQgdGhlIHNpemUgaXMgbGF6aWx5IGNvbXB1dGVkLCBzbyB0aGUgZmlyc3QgdGlt
ZQorICogeW91IGNhbGwgdGhpcywgaXQgd2lsbCBiZSBleHBlbnNpdmUsIGJ1dCBpdCB3aWxsIGJl
Y29tZSBjaGVhcCBmb3IgYWxsCisgKiBzdWJzZXF1ZW50IGNhbGxzLiAqLwordWludDMyX3QgICAg
ICAgIHRzZl90eXBlX2dldF9ieXRlX3NpemUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHZlcmlm
eSBhIHR5cGUgYWdhaW5zdCBzb21lIGxpbWl0czsgdGhpcyBpcyBhIGZhaXJseSBjb3N0bHkgcHJv
Y2VzcywKKyAqIHByb2JhYmx5IGF0IGxlYXN0IGFzIGV4cGVuc2l2ZSBhcyB3cml0aW5nIG9yIHJl
YWRpbmcgYSB0eXBlLiAgdHNmX3RydWUKKyAqIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlzIE9L
LiAgaWYgdHNmX2ZhbHNlIGlzIHJldHVybmVkLAorICogVFNGX0VfTk9UX0FMTE9XRUQgaXMgc2V0
LiAgaWYgbGltaXRzIGlzIE5VTEwsIGFsbCB0eXBlcyBzaG91bGQKKyAqIHZlcmlmeSAqLwordHNm
X2Jvb2xfdCAgICAgIHRzZl90eXBlX3ZlcmlmeSh0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cyk7CisKKy8qIGdldCBh
IGhhc2ggY29kZSBmb3IgYSB0eXBlLiBub3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gaGFzaCB0eXBl
cywgeW91CisgKiBtYXkgYmVuZWZpdCBmcm9tIG1lbW9pemluZyB0aGUgdHlwZSBmaXJzdDsgdGhl
biB5b3UgY2FuIHVzZSBhIHBvaW50ZXIKKyAqIGhhc2guICovCitpbnQgICAgICAgICAgICAgdHNm
X3R5cGVfZ2V0X2hhc2godHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIG1lbW9pemUgdGhlIGdpdmVu
IHR5cGUgYW5kIHJldHVybiB0aGUgbWVtbyBtYXN0ZXIuICB0aGUgbWVtbyBtYXN0ZXIKKyAqIGZv
ciB0d28gdHlwZXMgZm9yIGVoaWNoIHRzZl90eXBlX2NvbXBhcmUgcmV0dXJucyB0cnVlIHNob3Vs
ZCBiZQorICogaWRlbnRpY2FsLCBpLmUuIHBvaW50IHRvIHRoZSBzYW1lIHRzZl90eXBlIG9iamVj
dC4gIHRoaXMgZG9lcyBub3QKKyAqIGNvbnN1bWUgdGhlIHR5cGUgeW91IHBhc3MgaXQuICB0aGUg
cmV0dXJuZWQgdHlwZSBpcyBub3Qgb3duZWQgYnkgeW91CisgKiBhbmQgaXMgb25seSBndWFyYW50
ZWVkIHRvIHN0YXkgYWxpdmUgYXMgbG9uZyBhcyB5b3UgZG9uJ3QgZGVzdHJveQorICogdGhlIHR5
cGUgeW91IHBhc3NlZC4gIHRoZXJlZm9yZSB5b3UgbWlnaHQgd2FudCB0byBkbzoKKyAqCisgKiBt
ZW1vX3R5cGUgPSB0c2ZfdHlwZV9kdXAodHNmX3R5cGVfbWVtbyh0eXBlKSk7CisgKgorICogaWYg
eW91IHdhbnQgdG8gYmUgc2FmZS4gIGlmIHlvdSB3YW50IHRvIHJlbGlucXVpc2ggb3duZXJzaGlw
IG9mIHRoZQorICogb3JpZ2luYWwgdHlwZSBhbmQgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG1lbW8s
IHlvdSBwcm9iYWJseSB3YW50OgorICoKKyAqIG1lbW9fdHlwZSA9IHRzZl90eXBlX2R1cCh0c2Zf
dHlwZV9tZW1vKHR5cGUpKTsKKyAqIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgKgorICogbm90
ZSB0aGF0IGl0J3MgcG9zc2libGUgZm9yIHRzZl90eXBlX21lbW8oKSB0byBzaW1wbHkgcmV0dXJu
IHRoZQorICogdHlwZSBpdCB3YXMgcGFzc2VkLCBpZiB0aGF0IGlzIHRoZSBvbmx5IGV4dGFudCB0
eXBlIHRoYXQgbG9va3MgbGlrZQorICogdGhhdC4gYWxzbyBub3RlIHRoYXQgbWVtb2l6YXRpb24g
aWdub3JlcyB0aGUgbmF0aXZlIG1hcHBpbmcsIHNvCisgKiB1c2luZyB0aGUgYWJvdmUgbWVtby1h
bmQtcmVsaW5xdWlzaCBkYW5jZSBpcyBub3QgdXNlZnVsIGZvciB0eXBlcworICogdGhhdCBoYXZl
IG5hdGl2ZSBtYXBwaW5nLiBob3dldmVyLCBpdCdzIHN0aWxsIHVzZWZ1bCB0byBtZW1vaXplIHN1
Y2gKKyAqIHR5cGVzIGlmIHlvdSB3YW50IHRvIHNwZWVkIHVwIGhhc2hpbmcgYW5kIGNvbXBhcmlu
Zy4gKi8KK3RzZl90eXBlX3QqICAgICB0c2ZfdHlwZV9tZW1vKHRzZl90eXBlX3QgKnR5cGUpOwor
CisvKiBkZXRlcm1pbmUgaWYgdGhlIHR5cGUgaXMgZHluYW1pYyAodGhhdCBpcywgaWYgaXQgaGFz
IGFueSBhbmllcyBpbgorICAgaXQpICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfaXNfZHlu
YW1pYyh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogY29tcGFyZSB0d28gdHlwZXMuICBuZWl0aGVy
IHR5cGUgYmVjb21lcyBvd25lZCBieSB0aGUgZnVuY3Rpb247IGJvdGgKKyAqIGFyZSBzdGlsbCB5
b3VyIHJlc3BvbnNpYmlsaXR5IGFmdGVyIHRoZSBjYWxsLiAgcmV0dXJucyB0c2ZfdHJ1ZQorICog
aWYgdGhlIHR5cGVzIGFyZSBlcXVhbCwgdHNmX2ZhbHNlIG90aGVyd2lzZS4gKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfdHlwZV9jb21wYXJlKHRzZl90eXBlX3QgKmEsIHRzZl90eXBlX3QgKmIpOwor
CisvKiBkZXRlcm1pbmVzIGlmIHRoZSBmaXJzdCB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBz
ZWNvbmQgdHlwZS4KKyAqIHRoZSBpbnN0YW5jZW9mIHJlbGF0aW9uc2hpcCBpcyBkZWZpbmVkIGlu
IGEgYmlnIGNvbW1lbnQgdXAgYWJvdmUKKyAqIHRoZSBkZWZpbml0aW9uIG9mIHRoZSB0c2ZfdHlw
ZV9raW5kIGVudW1lcmF0aW9uLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX2luc3RhbmNl
b2YodHNmX3R5cGVfdCAqb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHNmX3R5cGVfdCAqdHdvKTsKKworLyogZ2V0IHRoZSBraW5kIGNvZGUgZm9yIGEgdHlwZSBvYmpl
Y3QuICovCit0c2ZfdHlwZV9raW5kX3QgdHNmX3R5cGVfZ2V0X2tpbmRfY29kZSh0c2ZfdHlwZV90
ICp0eXBlKTsKKworLyogaWYgdGhlIHNpemUgb2YgdGhlIHR5cGUgaXMga25vd24gc3RhdGljYWxs
eSwgaXQgcmV0dXJucyBpdC4gIG90aGVyd2lzZSwKKyAqIGl0IHJldHVybnMgVUlOVDMyX01BWC4g
Ki8KK3VpbnQzMl90ICAgICAgICB0c2ZfdHlwZV9nZXRfc3RhdGljX3NpemUodHNmX3R5cGVfdCAq
dHlwZSk7CisKKy8qIHRlbGxzIHlvdSB0aGUgY29tbWVudCBvbiB0aGUgdHlwZS4gIG1heSBiZSBO
VUxMIGlmIHRoZXJlIGlzIG5vIGNvbW1lbnQKKyAqIG9yIGlmIHRoZSB0eXBlIGlzIG5vdCBjb21t
ZW50YWJsZS4gKi8KK2NvbnN0IGNoYXIqICAgICB0c2ZfdHlwZV9nZXRfY29tbWVudCh0c2ZfdHlw
ZV90ICp0eXBlKTsKKworLyogdGVsbHMgeW91IGlmIHRoZSB0eXBlIGhhcyBhIGNvbW1lbnQgKi8K
K3RzZl9ib29sX3QgICAgICB0c2ZfdHlwZV9oYXNfY29tbWVudCh0c2ZfdHlwZV90ICp0eXBlKTsK
KworLyogc2V0cyB0aGUgY29tbWVudCBvbiB0aGUgdHlwZS4gIHdpbGwgcmV0dXJuIFRTRl9FX0JB
RF9UWVBFX0tJTkQgaWYgdGhlCisgKiB0eXBlIGlzIG5vdCBjb21tZW50YWJsZS4gKi8KK3RzZl9i
b29sX3QgICAgICB0c2ZfdHlwZV9zZXRfY29tbWVudCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21tZW50KTsKKwor
LyogdGVsbHMgeW91IHRoZSBuYW1lIG9mIHRoZSB0eXBlLiAgbWF5IGJlIE5VTEwgaWYgdGhlcmUg
aXMgbm8gbmFtZSBvciBpZgorICogdGhlIHR5cGUgaXMgbm90IGNvbW1lbnRhYmxlLiAqLworY29u
c3QgY2hhciogICAgIHRzZl90eXBlX2dldF9uYW1lKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiB0
ZWxscyB5b3UgaWYgdGhlIHR5cGUgaGFzIGEgbmFtZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2Zf
dHlwZV9oYXNfbmFtZSh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogc2V0cyB0aGUgbmFtZSBvZiB0
aGUgdHlwZS4gIHdpbGwgcmV0dXJuIFRTRl9FX0JBRF9UWVBFX0tJTkQgaWYgdGhlCisgKiB0eXBl
IGlzIG5vdCBjb21tZW50YWJsZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfdHlwZV9zZXRfbmFt
ZSh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpuYW1lKTsKKworLyogdGVsbHMgeW91IGlmIHRoZSB2ZXJzaW9uIGlzIG5vbi16
ZXJvIChpLmUuIG5vdCBlcXVhbCB0byAwLjAuMCkgKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfdHlw
ZV9oYXNfdmVyc2lvbih0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogdGVsbHMgeW91IHRoZSByYXcg
dmVyc2lvbiBvZiB0aGUgdHlwZS4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfdHlwZV9nZXRfcmF3
X3ZlcnNpb24odHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHRlbGxzIHlvdSB0aGUgbWFqb3IgdmVy
c2lvbiBvZiB0aGUgdHlwZS4gKi8KK3VpbnQxNl90ICAgICAgICB0c2ZfdHlwZV9nZXRfbWFqb3Jf
dmVyc2lvbih0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogdGVsbHMgeW91IHRoZSBtaW5vciB2ZXJz
aW9uIG9mIHRoZSB0eXBlLiAqLwordWludDhfdCAgICAgICAgIHRzZl90eXBlX2dldF9taW5vcl92
ZXJzaW9uKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiB0ZWxscyB5b3UgdGhlIHBhdGNoIHZlcnNp
b24gb2YgdGhlIHR5cGUuICovCit1aW50OF90ICAgICAgICAgdHNmX3R5cGVfZ2V0X3BhdGNoX3Zl
cnNpb24odHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHNldHMgdGhlIHJhdyB2ZXJzaW9uIG9mIHRo
ZSB0eXBlLiAgd2lsbCByZXR1cm4gVFNGX0VfQkFEX1RZUEVfS0lORCBpZiB0aGUKKyAqIHR5cGUg
aXMgbm90IGNvbW1lbnRhYmxlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX3NldF9yYXdf
dmVyc2lvbih0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgdmVyc2lvbik7CisKKy8qIHNldHMgdGhlIHZlcnNpb24gb2Yg
dGhlIHR5cGUuICB3aWxsIHJldHVybiBUU0ZfRV9CQURfVFlQRV9LSU5EIGlmIHRoZQorICogdHlw
ZSBpcyBub3QgY29tbWVudGFibGUuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfc2V0X3Zl
cnNpb24odHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDE2X3QgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90IHBhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyogZ2V0IHRo
ZSBlbGVtZW50IHR5cGUgb2YgYW4gYXJyYXkgdHlwZSBvYmplY3QuICB0aGUgcmV0dXJuZWQKKyAq
IG9iamVjdCBpcyBub3Qgb3duZWQgYnkgeW91OyBpdCBpcyBvd25lZCBieSB0aGUgYXJyYXkgdHlw
ZS4gKi8KK3RzZl90eXBlX3QqICAgICB0c2ZfYXJyYXlfdHlwZV9nZXRfZWxlbWVudF90eXBlKHRz
Zl90eXBlX3QgKnR5cGUpOworCisvKiBhcHBlbmQgYSBuZXcgZmllbGQgdG8gYSBzdHJ1Y3QgdHlw
ZS4gIHRoZSBzdHJpbmcgYXJndW1lbnQKKyAqIGRvZXMgbm90IGJlY29tZSBvd25lZCBieSB0aGUg
ZnVuY3Rpb247IGl0IGlzIHN0aWxsIHlvdXIKKyAqIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgaXQu
ICBub3RlIHRoYXQgdGhlIHN0cmluZyBjYW5ub3QKKyAqIGV4Y2VlZCBUU0ZfU1RSX1NJWkU7IGlm
IGl0IGRvZXMsIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgKiB0aGlzIHdpbGwgcHJvcGFn
YXRlIGVycm9ycyBvbiB0aGUgKmVsZV90eXBlLgorICoKKyAqIHRoaXMgb25seSBmYWlscyBpZiBt
ZW1vcnkgYWxsb2NhdGlvbiBmYWlscywgaWYgdGhlIG5hbWUgc3RyaW5nCisgKiBpcyB0b28gbG9u
Zywgb3IgZWxlX3R5cGUgaXMgTlVMTC4gKi8KK3RzZl9ib29sX3QgICAgICB0c2Zfc3RydWN0X3R5
cGVfYXBwZW5kKHRzZl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl90eXBlX3QgKmVsZV90eXBlKTsKKworLyogc2V0IHRoZSAnb3B0aW9u
YWwnIGF0dHJpYnV0ZSBvZiBhIHN0cnVjdHVyZSBmaWVsZC4gKi8KK3RzZl9ib29sX3QgICAgICB0
c2Zfc3RydWN0X3R5cGVfc2V0X29wdGlvbmFsKHRzZl90eXBlX3QgKip0eXBlLAorCQkJCQkgICAg
IGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAgICAgdHNmX2Jvb2xfdCBvcHRpb25hbCk7CisKKy8q
IHNldCB0aGUgY29tbWVudCBmb3IgYSBzdHJ1Y3R1cmUgZmllbGQuICovCit0c2ZfYm9vbF90ICAg
ICAgdHNmX3N0cnVjdF90eXBlX3NldF9jb21tZW50KHRzZl90eXBlX3QgKip0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpj
b21tZW50KTsKKworLyogcmVtb3ZlIGEgc3RydWN0IGZpZWxkLiBub3RlIHRoYXQgdGhpcyBjaGFu
Z2VzIHRoZSBvcmRlcmluZyBvZgorICogZmllbGRzLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9z
dHJ1Y3RfdHlwZV9yZW1vdmUodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKKworLyogZmluZCBhbiBlbGVt
ZW50IGluIGEgc3RydWN0IHR5cGUuICB0aGlzIHNlYXJjaCBzaG91bGQgYmUKKyAqIGZhc3QsIGFz
IGl0IHVzZXMgYSBoYXNodGFibGUuICovCit0c2ZfdHlwZV90KiAgICAgdHNmX3N0cnVjdF90eXBl
X2ZpbmQodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICpuYW1lKTsKKworLyogZmluZCB0aGUgcGFpciBlbGVtZW50IGluIGEg
c3RydWN0IHR5cGU7IHRoZSBwYWlyCisgKiBlbGVtZW50IGNvbnRhaW5zIG1vcmUgaW5mby4gIHRo
aXMgc2VhcmNoIHNob3VsZCBiZSBmYXN0LAorICogYXMgaXQgdXNlcyBhIGhhc2h0YWJsZS4gKi8K
K3RzZl9uYW1lZF90eXBlX3QqIHRzZl9zdHJ1Y3RfdHlwZV9maW5kX25vZGUodHNmX3R5cGVfdCAq
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZSk7CisKKy8qIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUg
c3RydWN0LiAqLwordWludDMyX3QgICAgICAgIHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1l
bnRzKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBnZXQgdGhlIGl0aCBlbGVtZW50IGluIHRoZSBz
dHJ1Y3QgKi8KK3RzZl9uYW1lZF90eXBlX3QgKnRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudCh0
c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGluZGV4KTsKKworLyogZ2V0IHRoZSBuYW1lIG9mIHRoZSBpdGggZWxl
bWVudCBpbiB0aGUgc3RydWN0ICovCitjb25zdCBjaGFyKiAgICAgdHNmX3N0cnVjdF90eXBlX2dl
dF9lbGVtZW50X25hbWUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCk7CisKKy8qIGdldCB0aGUg
dHlwZSBvZiB0aGUgaXRoIGVsZW1lbnQgaW4gdGhlIHN0cnVjdCAqLwordHNmX3R5cGVfdCogICAg
IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudF90eXBlKHRzZl90eXBlX3QgKnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5k
ZXgpOworCisvKiBhcHBlbmQgYSBuZXcgZmllbGQgdG8gYSBjaG9pY2UgdHlwZS4gIHRoZSBzdHJp
bmcgYXJndW1lbnQKKyAqIGRvZXMgbm90IGJlY29tZSBvd25lZCBieSB0aGUgZnVuY3Rpb247IGl0
IGlzIHN0aWxsIHlvdXIKKyAqIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgaXQuICBub3RlIHRoYXQg
dGhlIHN0cmluZyBjYW5ub3QKKyAqIGV4Y2VlZCBUU0ZfU1RSX1NJWkU7IGlmIGl0IGRvZXMsIGFu
IGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgKiB0aGlzIHdpbGwgcHJvcGFnYXRlIGVycm9ycyBv
biB0aGUgKmVsZV90eXBlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBl
bmQodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX3R5cGVfdCAqZWxlX3R5cGUpOworCisvKiBzZXQgdGhlIGNvbW1lbnQgZm9yIGEg
Y2hvaWNlIGZpZWxkLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9jaG9pY2VfdHlwZV9zZXRfY29t
bWVudCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29tbWVudCk7CisKKy8qIGZpbmQgYW4gZWxl
bWVudCBpbiBhIGNob2ljZSB0eXBlLiAgdGhpcyBzZWFyY2ggc2hvdWxkIGJlCisgKiBmYXN0LCBh
cyBpdCB1c2VzIGEgaGFzaHRhYmxlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl9jaG9pY2VfdHlw
ZV9maW5kKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqbmFtZSk7CisKKy8qIGZpbmQgdGhlIHBhaXIgZWxlbWVudCBpbiBh
IGNob2ljZSB0eXBlOyB0aGUgcGFpcgorICogZWxlbWVudCBjb250YWlucyBtb3JlIGluZm8uICB0
aGlzIHNlYXJjaCBzaG91bGQgYmUgZmFzdCwKKyAqIGFzIGl0IHVzZXMgYSBoYXNodGFibGUuICov
Cit0c2ZfbmFtZWRfdHlwZV90KiB0c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2RlKHRzZl90eXBlX3Qg
KnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWUpOworCisvKiByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhl
IGNob2ljZS4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVt
ZW50cyh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogZ2V0IHRoZSBpdGggZWxlbWVudCBpbiB0aGUg
Y2hvaWNlICovCit0c2ZfbmFtZWRfdHlwZV90KiB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQo
dHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBpbmRleCk7CisKKy8qIGdldCB0aGUgbmFtZSBvZiB0aGUgaXRoIGVs
ZW1lbnQgaW4gdGhlIGNob2ljZSAqLworY29uc3QgY2hhciogICAgIHRzZl9jaG9pY2VfdHlwZV9n
ZXRfZWxlbWVudF9uYW1lKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgpOworCQkgICAgIAorLyog
Z2V0IHRoZSB0eXBlIG9mIHRoZSBpdGggZWxlbWVudCBpbiB0aGUgY2hvaWNlICovCit0c2ZfdHlw
ZV90KiAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9lbGVtZW50X3R5cGUodHNmX3R5cGVfdCAqdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBpbmRleCk7CisKKy8qIHJldHVybnMgdHJ1ZSBpZiB0aGUgY2hvaWNlIGhhcyBhbnkgbm9u
LXZvaWQgdHlwZXMuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV90eXBlX2hhc19ub25f
dm9pZCh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogcmV0dXJucyB0cnVlIGlmOgorICogLT4gdGhl
IGxhdHRlciBjaG9pY2UgdHlwZSBoYXMgYXQgbGVhc3QgYXMgbWFueSBlbGVtZW50cyBhcyB0aGUK
KyAqICAgIGZpcnN0LCBhbmQKKyAqIC0+IGZvciBlYWNoIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUg
Zmlyc3QgY2hvaWNlIHR5cGUsIHRoZSBlbGVtZW50CisgKiAgICBpbiB0aGUgc2Vjb25kIGNob2lj
ZSB0eXBlIHRoYXQgaGFzIHRoZSBzYW1lIGluZGV4IGFsc28gaGFzIHRoZQorICogICAgc2FtZSBu
YW1lLgorICoKKyAqIG5vdGUgdGhhdCB0aGUgZWxlbWVudCB0eXBlcyBkbyBub3QgaGF2ZSB0byBt
YXRjaCBmb3IgdGhpcworICogcHJlZGljYXRlIHRvIGhvbGQuICBob3dldmVyLCBpZiB5b3UgYXJl
IGludGVyZXN0ZWQgaW4gYWRkaW5nIGFuCisgKiBpbnN0YW5jZW9mIGNvbnN0cmFpbnQgZm9yIHRo
ZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHRoZSB0d28KKyAqIGNob2ljZSB0eXBlcywgeW91
IGNhbiBkbyBzbyBieSBwZXJmb3JtaW5nIGFuIGluc3RhbmNlb2YgdGVzdCBvbgorICogYSBhbmQg
Yi4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfY2hvaWNlX3R5cGVfdXNlc19zYW1lX2luZGljZXMo
dHNmX3R5cGVfdCAqYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX3R5cGVfdCAqYik7CisKKy8qIGNyZWF0ZXMgYSBuYW1lZCB0eXBlIG9iamVj
dCB3aXRoIHRoZSBnaXZlbiBuYW1lLCB0eXBlLCBhbmQgaW5kZXguCisgKiBmYWlsdXJlIHRvIGNy
ZWF0ZSB0aGlzIHRoaW5nIHJlc3VsdHMgaW4gdGhlIHR5cGUgYmVpbmcgZGVzdHJveWVkLgorICog
dGhlIGhhc19vZmZzZXQgZmllbGQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgb2Zmc2V0IGZpZWxkIGlz
IHNldCB0byAwLAorICogYW5kIHRoZSBjb21tZW50IGZpZWxkIGlzIHNldCB0byBOVUxMLiAqLwor
dHNmX25hbWVkX3R5cGVfdCogdHNmX25hbWVkX3R5cGVfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRl
eCk7CisKKy8qIGRlc3Ryb3kgYSBuYW1lZCB0eXBlIG9iamVjdC4gIGRlc3Ryb3lzIHRoZSB0eXBl
LiAgZnJlZXMgdGhlCisgKiBjb21tZW50IGlmIHRoZXJlIGlzIG9uZS4gKi8KK3ZvaWQgICAgICAg
ICAgICB0c2ZfbmFtZWRfdHlwZV9kZXN0cm95KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpOworCisv
KiByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSB0eXBlIGluIHRoZSBub2RlLiAgd2hhdCBnZXRzIHJl
dHVybmVkCisgKiBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNvbnN0YW50IHN0cmluZyB0aGF0IHlv
dSBkbyBub3Qgb3duLiAqLworY29uc3QgY2hhciogICAgIHRzZl9uYW1lZF90eXBlX2dldF9uYW1l
KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpOworCisvKiByZXR1cm5zIHRoZSB0eXBlIHRoYXQgdGhl
IG5vZGUgaG9sZHMuICB3aGF0IGdldHMgcmV0dXJuZWQgaXMKKyAqIG9mIHR5cGUgdHNmX3R5cGVf
dCogYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzIGNvbnN0YW50IHRoYXQgeW91CisgKiBkbyBub3Qg
b3duLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl9uYW1lZF90eXBlX2dldF90eXBlKHRzZl9uYW1l
ZF90eXBlX3QgKm5vZGUpOworCisvKiByZXR1cm5zIHRoZSBpbmRleCBvZiBhIG5hbWVkIHR5cGUg
bm9kZSB3aXRoaW4gaXRzIHN0cnVjdHVyZQorICogdHlwZS4gKi8KK3VpbnQzMl90ICAgICAgICB0
c2ZfbmFtZWRfdHlwZV9nZXRfaW5kZXgodHNmX25hbWVkX3R5cGVfdCAqbm9kZSk7CisJCSAgICAg
CisvKiBzZXQgdGhlIG9wdGlvbmFsIGF0dHJpYnV0ZSAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9u
YW1lZF90eXBlX2dldF9vcHRpb25hbCh0c2ZfbmFtZWRfdHlwZV90ICpub2RlKTsKKworLyogc2V0
IHRoZSBvcHRpb25hbCBhdHRyaWJ1dGUgKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfbmFtZWRfdHlw
ZV9zZXRfb3B0aW9uYWwodHNmX25hbWVkX3R5cGVfdCAqbm9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCBvcHRpb25hbCk7CisKKy8qIHJl
dHVybnMgdGhlIGNvbW1lbnQgb2YgYSBuYW1lcyB0eXBlLiAgbWF5IGJlIE5VTEwsIGluZGljYXRp
bmcgdGhhdAorICogbm8gY29tbWVudCB3YXMgZXZlciBzZXQgKi8KK2NvbnN0IGNoYXIqICAgICB0
c2ZfbmFtZWRfdHlwZV9nZXRfY29tbWVudCh0c2ZfbmFtZWRfdHlwZV90ICpub2RlKTsKKworLyog
dGVsbHMgeW91IGlmIHRoZSBuYW1lZCB0eXBlIGhhcyBhIGNvbW1lbnQgKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2ZfbmFtZWRfdHlwZV9oYXNfY29tbWVudCh0c2ZfbmFtZWRfdHlwZV90ICpub2RlKTsK
KworLyogc2V0IHRoZSBjb21tZW50IG9uIGEgbmFtZWQgdHlwZS4gIGRlbGV0ZXMgdGhlIG9sZCBv
bmUgaWYKKyAqIG5lY2Vzc2FyeS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfbmFtZWRfdHlwZV9z
ZXRfY29tbWVudCh0c2ZfbmFtZWRfdHlwZV90ICpub2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpOworCisvKiBnZXQgdGhl
IGhhc2ggY29kZSBmb3IgdGhlIG5hbWVkIHR5cGUuICB5b3UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0
eXBlcworICogb2YgdHlwZSBUU0ZfVEtfU1RSVUNUIGFuZCBUU0ZfVEtfQ0hPSUNFIHdpbGwgdXNl
IHRoZSBzdW0gb2YgdGhlc2UgaGFzaAorICogY29kZXMgYXMgcGFydCBvZiBjb21wdXRpbmcgdGhl
aXIgb3duIGhhc2ggY29kZS4gIHlvdSdyZSBndWFyYW50ZWVkCisgKiB0aGF0IHRzZl90eXBlX3Rh
YmxlX3RhYmxlX3Qgd2lsbCB1c2UgdGhlIHN1bSBvZiB0aGVzZSBoYXNoIGNvZGVzIGFzCisgKiBw
YXJ0IG9mIGNvbXB1dGluZyB0aGVpciBvd24gaGFzaCBjb2RlLiAqLworaW50ICAgICAgICAgICAg
IHRzZl9uYW1lZF90eXBlX2dldF9oYXNoKHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpOworCisvKiBj
cmVhdGUgYSBidWZmZXIuICB0aGUgdHlwZSBpcyBkdXBlZCBieSB0aGUgYnVmZmVyLiAgdGhlIHR5
cGVzIHRhYmxlCisgKiBiZWNvbWVzIG93bmVkLiAgYW5kLCB0byBtYWtlIHRoaW5ncyBtb3JlIGlu
dGVyZXN0aW5nLCB0aGUgYm9vbGVhbgorICogYXJndW1lbnQgZGV0ZXJtaW5lcyBpZiB0aGUgdm9p
ZCogaXMgb3duZWQgYnkgdGhlIGJ1ZmZlci4gIGlmIGl0IGlzCisgKiBvd25lZCBieSB0aGUgYnVm
ZmVyLCB0aGVuIGlmIHRoaXMgZnVuY3Rpb24gZmFpbHMsIHRoZSBidWZmZXIgd2lsbCBiZQorICog
ZnJlZWQuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2J1ZmZlcl9jcmVhdGUodHNmX3R5cGVfdCAq
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBf
dCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3Qga2VlcCk7CisKKy8qIGNyZWF0
ZSBhIGJ1ZmZlciBpbiBhIHJlZ2lvbi4gIGV4YWN0bHkgbGlrZSB0c2ZfYnVmZmVyX2NyZWF0ZSgp
CisgKiBleGNlcHQgdGhhdCB0aGUgYnVmZmVyIGlzIGNyZWF0ZWQgaW4gYSByZWdpb24uICBpdCBp
cyBhc3N1bWVkCisgKiB0aGF0IHRoZSB2b2lkKiBkYXRhIGlzIGFsbG9jYXRlZCBpbiB0aGUgc2Ft
ZSByZWdpb24gYW5kIHRoYXQKKyAqIHRzZl90eXBlX2luX21hcF90KiBpcywgdG9vLiAgbm90ZSB0
aGF0IHRoZSB0c2ZfYm9vbF90IGFyZ3VtZW50CisgKiBpcyBvbWl0dGVkIHNpbmNlIHRzZl9idWZm
ZXJfZGVzdHJveSgpIGlzIG5vdCBhcHBsaWNhYmxlIHRvCisgKiByZWdpb24tYWxsb2NhdGVkIGJ1
ZmZlcnMuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2J1ZmZlcl9jcmVhdGVfaW4odHNmX3R5cGVf
dCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9p
bl9tYXBfdCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbik7
CisKKy8qIGdldCB0aGUgZW1wdHkgYnVmZmVyIHNpbmdsZXRvbi4gKi8KK3RzZl9idWZmZXJfdCog
ICB0c2ZfYnVmZmVyX2dldF9lbXB0eV9zaW5nbGV0b24odm9pZCk7CisKKy8qIGNsb25lIHRoZSBi
dWZmZXIuICB0aGUgcmVzdWx0aW5nIGJ1ZmZlciBoYXMgdGhlIGtlZXAgYml0IHNldCB0bworICog
dHJ1ZS4gIG5vdGUgdGhhdCB0aGlzIGlzIGEgZGVlcCBjbG9uZSwgc28gdGhhdCB0aGUgYWN0dWFs
IGRhdGEKKyAqIGl0c2VsZiBpcyBhbHNvIGNvcGllZC4gIHRoaXMgbWVhbnMgdGhhdCB0aGlzIG9w
ZXJhdGlvbiwgYW5kIGFueQorICogb3BlcmF0aW9ucyBvbiB0aGUgbmV3IGJ1ZmZlciBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgb3JpZ2luYWwgYnVmZmVyLiAqLwordHNmX2J1ZmZlcl90KiAgIHRzZl9i
dWZmZXJfY2xvbmUodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBjbG9uZSB0aGUgYnVmZmVyIGlu
dG8gdGhlIGdpdmVuIHJlZ2lvbi4gIGV4YWN0bHkgbGlrZQorICogdHNmX2J1ZmZlcl9jbG9uZSgp
IGV4Y2VwdCBmb3IgdGhlIHJlZ2lvbiBwYXJ0LiAqLwordHNmX2J1ZmZlcl90KiAgIHRzZl9idWZm
ZXJfY2xvbmVfaW4odHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpyZWdpb24pOworCisvKiBkdXBsaWNhdGUgYSBidWZmZXIuICB0aGlz
IHdpbGwgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBnaXZlbiBidWZmZXIKKyAqIHVudGlsIHlvdSBj
YWxsIHRzZl9idWZmZXJfZGVzdHJveSBvbiBpdC4gIGlmIHRoZSBidWZmZXIgd2FzIGhlYXAtCisg
KiBhbGxvY2F0ZWQgYW5kIGhhcyB0aGUga2VlcCBiaXQgc2V0IHRvIHRydWUsIHRoaXMgb3BlcmF0
aW9uIHdpbGwgYmUKKyAqIHZlcnkgZmFzdCAtIGl0IHdpbGwgaW5jcmVtZW50IGEgY291bnQgYW5k
IG1heWJlIGRvIHNvbWUgc2ltcGxlCisgKiBsb2NraW5nL3VubG9ja2luZy4gIGlmIHRoZSBidWZm
ZXIgd2FzIHJlZ2lvbiBhbGxvY2F0ZWQgb3IgaWYgdGhlCisgKiBrZWVwIGJpdCB3YXMgc2V0IHRv
IGZhbHNlLCB0aGVuIHRoaXMgaGFzIHRoZSBzYW1lIGNvc3QgYXMKKyAqIHRzZl9idWZmZXJfY2xv
bmUoKS4gIGFzIHN1Y2gsIHlvdSBtdXN0IGRvIGVycm9yIGNoZWNraW5nIGFmdGVyIGEKKyAqIGEg
Y2FsbCB0byB0c2ZfYnVmZmVyX2R1cCgpLiAqLwordHNmX2J1ZmZlcl90KiAgIHRzZl9idWZmZXJf
ZHVwKHRzZl9idWZmZXJfdCAqYnVmKTsKKworLyogZGVzdHJveSBhIGJ1ZmZlci4gIGNhbm5vdCBi
ZSB1c2VkIG9uIHJlZ2lvbiBhbGxvY2F0ZWQgYnVmZmVycy4gKi8KK3ZvaWQgICAgICAgICAgICB0
c2ZfYnVmZmVyX2Rlc3Ryb3kodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiB0ZWxscyB5b3UgdGhl
IHNpemUgb2YgdGhlIGJ1ZmZlciAqLwordWludDMyX3QgICAgICAgIHRzZl9idWZmZXJfZ2V0X3Np
emUodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBnaXZlcyB5b3UgdGhlIGRhdGEgcGF5bG9hZCBv
ZiB0aGUgYnVmZmVyICovCitjb25zdCB2b2lkKiAgICAgdHNmX2J1ZmZlcl9nZXRfZGF0YSh0c2Zf
YnVmZmVyX3QgKmJ1Zik7CisKKy8qIHJlYWQgYSBidWZmZXIgZnJvbSBhbm90aGVyIGJ1ZmZlciBh
bmQgYXNzb2NpYXRlIGl0IHdpdGggdGhlIGdpdmVuCisgKiB0eXBlLiAgdGhpcyBpcyBhbHNvIGEg
Yml0IG9mIGEgdHJ1c3RlZCByb3V0aW5lLi4uCisgKiBpZiB0aGUgcmVnaW9uIHBvaW50ZXIgaXMg
bm9uLU5VTEwsIHRoZW4gdGhlIHJlc3VsdGluZyBidWZmZXIgd2lsbAorICogYmUgcmVnaW9uLWFs
bG9jYXRlZC4gIG90aGVyd2lzZSBpdCB3aWxsIGJlIG1hbGxvYy1hbGxvY2F0ZWQgYW5kCisgKiB5
b3Ugd2lsbCBiZSBleHBlY3RlZCB0byBjYWxsIHRzZl9idWZmZXJfZGVzdHJveSgpIGF0IHNvbWUg
cG9pbnQuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2J1ZmZlcl9yZWFkX2Zyb21fYnVmKHRzZl90
eXBlX2luX21hcF90ICplbmNsb3NpbmdfdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKipjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKTsKKworLyogc2tpcCBhIGJ1ZmZlciAoaW4gYSBi
dWZmZXIsIG5vdCBvbiBkaXNrKS4gIHRha2VzIGNhcmUgb2Ygc2tpcHBpbmcgdGhlCisgICB0cmFu
c2xhdGlvbiB0YWJsZSBpZiBkZWFsaW5nIHdpdGggYSBkeW5hbWljIHR5cGUuICovCit0c2ZfYm9v
bF90ICAgICAgdHNmX2J1ZmZlcl9za2lwX2luX2J1Zih0c2ZfdHlwZV9pbl9tYXBfdCAqZW5jbG9z
aW5nX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
KmVuZCk7CisKKy8qIGNhbGN1bGF0ZSB0aGUgc2l6ZSB0aGF0IHdvdWxkIGJlIHJlcXVpcmVkIHRv
IHdyaXRlIHRoaXMgYnVmZmVyIGludG8KKyAqIGFub3RoZXIgYnVmZmVyLiAqLwordWludDMyX3Qg
ICAgICAgIHRzZl9idWZmZXJfY2FsY19zaXplKHRzZl9idWZmZXJfdCAqYnVmKTsKKworLyogd3Jp
dGUgYSBidWZmZXIgaW50byBhbm90aGVyIGJ1ZmZlciAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9i
dWZmZXJfd3JpdGVfdG9fYnVmKHRzZl9idWZmZXJfdCAqYnVmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX291dF9tYXBfdCAqdHlwZV9tYXAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqKnRhcmdldCk7CisK
Ky8qIHdyaXRlIGEgYnVmZmVyIGFuZCBpdHMgdHlwZXMgdG8gdGhlIGdpdmVuIHdyaXRlci4gIHRo
aXMgaXMgbm90IGFuCisgKiBvcHRpbWl6ZWQgb3BlcmF0aW9uLCBidXQgaXQgc2hvdWxkIGJlIGZp
bmUgaWYgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcidzCisgKiBkYXRhIGlzIGxhcmdlIGNvbXBhcmVk
IHRvIHRoZSBzaXplIG9mIHRoZSB0eXBlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9idWZmZXJf
d3JpdGVfd2hvbGUodHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKworLyogcmVhZCBhIGJ1ZmZlciBhbmQgaXRz
IHR5cGVzIGZyb20gdGhlIGdpdmVuIHJlYWRlci4gKi8KK3RzZl9idWZmZXJfdCogICB0c2ZfYnVm
ZmVyX3JlYWRfd2hvbGUodHNmX3JlYWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cyk7CisKKy8qIGdldCB0aGUgU0hBMSBoYXNo
IG9mIHRoZSB3aG9sZSBidWZmZXIgKGluY2x1ZGluZyB0eXBlcykuICB0aGlzIGlzIG5vdAorICog
YW4gb3B0aW1pemVkIG9wZXJhdGlvbi4gIG5vdGUgdGhhdCB0aGUgcmVzdWx0IGlzIHBsYWNlZCBp
biB0aGUKKyAqIHVpbnQzMl90KiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYmlnIGVub3VnaCB0byBo
b2xkIDUgdWludDMyX3Qncy4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfYnVmZmVyX2NhbGNfc2hh
MSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCAqcmVzdWx0KTsKKworLyogY29tcGFyZSB0d28gYnVmZmVycy4gIHR3byBidWZm
ZXJzIGFyZSBlcXVhbCBpZiB0aGV5IGNvbnRhaW4gZXhhY3RseQorICogdGhlIHNhbWUgcGF5bG9h
ZCBieXRlcywgaWYgdGhlaXIgdHlwZXMgYXJlIHRoZSBzYW1lIGFjY29yZGluZyB0bworICogdHNm
X3R5cGVfY29tcGFyZSgpLCBhbmQgaWYgdGhlaXIgdHlwZSB0YWJsZXMgYXJlIHRoZSBzYW1lIGFj
Y29yZGluZworICogdG8gdHNmX3R5cGVfaW5fbWFwX2NvbXBhcmUoKS4gKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2ZfYnVmZmVyX2NvbXBhcmUodHNmX2J1ZmZlcl90ICphLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmIpOworCisvKiBnaXZlbiBhIGJ1ZmZl
ciwgZ2l2ZXMgeW91IHRoZSB0eXBlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl9idWZmZXJfZ2V0
X3R5cGUodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBnaXZlbiBhIGJ1ZmZlciwgdGVsbHMgeW91
IGlmIGl0cyB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIGFub3RoZXIgdHlwZSAqLwordHNmX2Jvb2xf
dCAgICAgIHRzZl9idWZmZXJfaW5zdGFuY2VvZih0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGdp
dmVuIGEgYnVmZmVyLCBnaXZlcyB5b3UgdGhlIHNoYXJlZCB0eXBlcy4gKi8KK3RzZl90eXBlX2lu
X21hcF90KiB0c2ZfYnVmZmVyX2dldF9zaGFyZWRfdHlwZXModHNmX2J1ZmZlcl90ICpidWYpOwor
CisvKiBnZXQgdGhlIHNpemUgb2YgYSBiaXR2ZWN0b3IgdGhhdCBoYXMgc29tZSBudW1iZXIgb2Yg
Yml0cy4gKi8KK3N0YXRpYyBUU0ZfaW5saW5lCitzaXplX3QgICAgICAgICAgdHNmX3NpemVvZl9i
aXR2ZWN0b3IodWludDMyX3QgbnVtX2JpdHMpIHsKKyAgICByZXR1cm4gKG51bV9iaXRzICsgNykg
Pj4gMzsKK30KKworLyogc2V0IGEgYml0IGluIGEgYml0dmVjdG9yLiAqLworc3RhdGljIFRTRl9p
bmxpbmUKK3ZvaWQgICAgICAgICAgICB0c2ZfYml0dmVjdG9yX3NldCh0c2ZfbmF0aXZlX2JpdHZl
Y3Rvcl90ICpiaXR2ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGJpdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYm9v
bF90IHZhbHVlKSB7CisgICAgdWludDhfdCAqYnl0ZSA9IGJpdHZlY3Rvci0+Yml0cyArIChiaXRf
aW5kZXggPj4gMyk7CisgICAgdWludDhfdCBiaXRfbWFzayA9IDEgPDwgKGJpdF9pbmRleCAmIDcp
OworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgKmJ5dGUgfD0gYml0X21hc2s7CisgICAgZWxzZQor
ICAgICAgICAqYnl0ZSAmPSB+Yml0X21hc2s7Cit9CisKKy8qIGdldCBhIGJpdCBmcm9tIGEgYml0
dmVjdG9yLiAqLworc3RhdGljIFRTRl9pbmxpbmUKK3RzZl9ib29sX3QgICAgICB0c2ZfYml0dmVj
dG9yX2dldCh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90ICpiaXR2ZWN0b3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJpdF9pbmRleCkgeworICAgIHVpbnQ4X3QgKmJ5
dGUgPSBiaXR2ZWN0b3ItPmJpdHMgKyAoYml0X2luZGV4ID4+IDMpOworICAgIHVpbnQ4X3QgYml0
X21hc2sgPSAxIDw8IChiaXRfaW5kZXggJiA3KTsKKyAgICByZXR1cm4gKCpieXRlICYgYml0X21h
c2spICE9IDA7Cit9CisKKy8qIGNyZWF0ZSBhbiBzZXJpYWwgaW5wdXQgbWFuYWdlci4gIGEgc2Vy
aWFsIGlucHV0IG1hbmFnZXIgZXhwZWN0cyB6ZXJvIG9yCisgKiBtb3JlIHR5cGUgaGVhZGVycyB0
byBwcmVjZWRlIGRhdGEuICBpbnN0YW5jZXMgb2YgdGhpcyB0eXBlIGFyZSBub3QKKyAqIHRocmVh
ZC1zYWZlOyBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIGZyb20gbXVsdGlwbGUgdGhyZWFkcyB0aGVu
IHlvdSBuZWVkCisgKiB0byB1c2UgbG9ja2luZyBhcm91bmQgYWxsIGNhbGxzLiAqLwordHNmX3Nl
cmlhbF9pbl9tYW5fdCogdHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKHRzZl9yZWFkZXJfdCByZWFk
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
YXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9s
aW1pdHNfdCAqbGltaXRzKTsKKworLyogZGVzdHJveSBhbiBpbnB1dCBtYW5hZ2VyLiAqLwordm9p
ZCAgICAgICAgICAgIHRzZl9zZXJpYWxfaW5fbWFuX2Rlc3Ryb3kodHNmX3NlcmlhbF9pbl9tYW5f
dCAqaW5fbWFuKTsKKworLyogZm9yY2UgdGhlIHNlcmlhbCBpbnB1dCBtYW5hZ2VyIHRvIHJlYWQg
YSBUU0ZfU1BfQ19SRVNFVF9UWVBFUyBjb21tYW5kLgorICogaWYgdGhpcyBjb21tYW5kIGlzIG5v
dCB3aGF0IGlzIGZvdW5kIGluIHRoZSBpbnB1dCBzdHJlYW0sIGFuIGVycm9yIGlzCisgKiByZXBv
cnRlZC4gIHByb3ZpZGVkIHRoYXQgYSBUU0ZfU1BfQ19SRVNFVF9UWVBFUyBjb21tYW5kIGlzIGlu
IGZhY3QKKyAqIGZvdW5kLCB0aGUgdHlwZSBtYXBwaW5nIHdpbGwgYmUgcmVzZXQuCisgKgorICog
d2lsbCBzZXQgZXJyb3IgdG8gVFNGX0VfVU5FWFBFQ1RFRF9FT0YgaWYgdGhlcmUgd2VyZW4ndCBl
bm91Z2ggYnl0ZXMgZm9yCisgKiBhIFRTRl9TUF9DX1JFU0VUX1RZUEVTIGNvbW1hbmQuCisgKgor
ICogd2lsbCBzZXQgZXJyb3IgdG8gVFNGX0VfUEFSU0VfRVJST1IgaWYgdGhlIGJ5dGVzIHJlYWQg
d2VyZSBub3QgdGhlCisgKiBjdXJyZWN0IG9uZXMgKGVmZmVjdGl2ZWx5LCB0aGlzIGlzIGNvbXBs
YWluaW5nIG9mIGEgYmFkIG1hZ2ljIG51bWJlcikuKi8KK3RzZl9ib29sX3QgICAgICB0c2Zfc2Vy
aWFsX2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzKHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbik7
CisKKy8qIHRha2UgdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvciBhbmQgcmVhZCB0aGUgcmVzZXQg
dHlwZXMgY29tbWFuZCBmcm9tCisgKiBpdC4gIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYSBy
ZXNldCB0eXBlcyBjb21tYW5kIGFuZCBmYWxzZSBvbgorICogZXJyb3IuICByZXR1cm5zIHRoZSBz
YW1lIGVycm9ycyBhcyB0c2Zfc2VyaWFsX2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzKCkKKyAqIHVu
bGVzcyBzb21ldGhpbmcgcmVhbGx5IHdlaXJkIGhhcHBlbnMuICovCit0c2ZfYm9vbF90ICAgICAg
dHNmX3NlcmlhbF9pbl9tYW5fcmVhZF9yZXNldF90eXBlc19mcm9tX2ZkKGludCBmZCk7CisKKy8q
IHRha2UgdGhlIGdpdmVuIGZpbGUsIG9wZW4gaXQsIGFuZCBpbnZva2UKKyAqIHRzZl9zZXJpYWxf
aW5fbWFuX3JlYWRfcmVzZXRfdHlwZXNfZnJvbV9mZCBvbiBpdC4gKi8KK3RzZl9ib29sX3QgICAg
ICB0c2Zfc2VyaWFsX2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzX2Zyb21fZmlsZSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqZmlsZW5hbWUpOworCisvKiByZWdpc3RlciBhIGNhbGxiYWNrIHRoYXQgd2lsbCBnZXQgY2Fs
bGVkIGV2ZXJ5IHRpbWUgdGhlIGlucHV0IG1hbmFnZXIKKyAqIGVuY291bnRlcnMgYSBuZXcgdHlw
ZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2Zfc2VyaWFsX2luX21hbl9yZWdpc3Rlcl90eXBlX2Ni
YWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfY2JhY2tfdCBjYmFjaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisKKy8qIHVucmVn
aXN0ZXIgYWxsIHR5cGUgY2FsbGJhY2tzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIGZ1bmN0aW9uIHBv
aW50ZXIKKyAqIGFuZCB2b2lkKiBhcmd1bWVudC4gKi8KK3VpbnQzMl90ICAgICAgICB0c2Zfc2Vy
aWFsX2luX21hbl91bnJlZ2lzdGVyX3R5cGVfY2JhY2soCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zfc2VyaWFsX2luX21hbl90ICppbl9tYW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9j
YmFja190IGNiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqYXJnKTsKKworLyogcmVhZCBkYXRhIHVzaW5nIHRoZSBzZXJpYWwgaW5wdXQg
bWFuYWdlci4gKi8KK3RzZl9idWZmZXJfdCogICB0c2Zfc2VyaWFsX2luX21hbl9yZWFkKHRzZl9z
ZXJpYWxfaW5fbWFuX3QgKmluX21hbik7CisKKy8qIGdldCB0aGUgc3RhdGUgb2YgdGhlIGlucHV0
IG1hbmFnZXIgcmlnaHQgbm93LiAgaWYgeW91IGFyZSB1c2luZyByYW5kb20KKyAqIGFjY2VzcyBm
aWxlcyBhbmQgeW91IHdpc2ggdG8gc2VlayBiYWNrIHRvIHRoZSBwb3NpdGlvbiB5b3UncmUgaW4g
bm93LAorICogeW91IGFsc28gbmVlZCB0byBzYXZlIHRoZSBzdGF0ZSBvZiB0aGUgaW5wdXQgbWFu
YWdlciBhbmQgcmVzdG9yZSBpdAorICogcmlnaHQgYWZ0ZXIgdGhlIHNlZWsuICovCit0c2Zfc2Vy
aWFsX2luX21hbl9zdGF0ZV90IHRzZl9zZXJpYWxfaW5fbWFuX2dldF9zdGF0ZSh0c2Zfc2VyaWFs
X2luX21hbl90ICppbl9tYW4pOworCisvKiBzZXQgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCBtYW5h
Z2VyLiAgZG8gdGhpcyB3aGVuZXZlciB5b3Ugc2VlayB0aGUgZmlsZQorICogdGhhdCB0aGUgc2Vy
aWFsIGlucHV0IG1hbmFnZXIgaXMgYmVpbmcgdXNlZCB0byByZWFkLiAqLwordm9pZCAgICAgICAg
ICAgIHRzZl9zZXJpYWxfaW5fbWFuX3NldF9zdGF0ZSh0c2Zfc2VyaWFsX2luX21hbl90ICppbl9t
YW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9zZXJp
YWxfaW5fbWFuX3N0YXRlX3Qgc3RhdGUpOworCisvKiBjcmVhdGUgYW4gb3V0cHV0IG1hbmFnZXIu
ICBpbnN0YW5jZXMgb2YgdGhpcyB0eXBlIGFyZSBub3QgdGhyZWFkLXNhZmU7IGlmCisgKiB5b3Ug
d2FudCB0byB1c2Ugb25lIGZyb20gbXVsdGlwbGUgdGhyZWFkcyB0aGVuIHlvdSBuZWVkIHRvIGxv
Y2sgYXJvdW5kCisgKiBjYWxscy4gKi8KK3RzZl9zZXJpYWxfb3V0X21hbl90KiB0c2Zfc2VyaWFs
X291dF9tYW5fY3JlYXRlKHRzZl93cml0ZXJfdCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisvKiBkZXN0cm95IGFu
IG91dHB1dCBtYW5hZ2VyLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9zZXJpYWxfb3V0X21hbl9k
ZXN0cm95KHRzZl9zZXJpYWxfb3V0X21hbl90ICpvdXRfbWFuKTsKKwordHNmX2Jvb2xfdCAgICAg
IHRzZl9zZXJpYWxfb3V0X21hbl9yZXNldF90eXBlcyh0c2Zfc2VyaWFsX291dF9tYW5fdCAqb3V0
X21hbik7CisKKy8qIHdyaXRlIGRhdGEgdXNpbmcgYW4gb3V0cHV0IG1hbmFnZXIuICB0aGlzIHdp
bGwgZG8gZXJyb3IKKyAqIHByb3BhZ2F0aW9uIG9uICpidWYuICovCit0c2ZfYm9vbF90ICAgICAg
dHNmX3NlcmlhbF9vdXRfbWFuX3dyaXRlKHRzZl9zZXJpYWxfb3V0X21hbl90ICpvdXRfbWFuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1
Zik7CisKKy8qIGNyZWF0ZSBhIHRzZiBkYXRhIHN0cnVjdHVyZSB1c2luZyB0aGUgZ2l2ZW4gdHlw
ZS4gIHRoZSB0eXBlCisgKiBnZXRzIGR1cHBlZCBmb3IgdGhlIHJldHVybmVkIHN0cnVjdHVyZS4g
IHRoaXMgd2lsbAorICogZG8gZXJyb3IgcHJvcGFnYXRpb24gb24gKnR5cGUuCisgKgorICogTm90
ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5ldmVyIGJlIHVzZWQgdG8gY3JlYXRlCisgKiBw
cmltaXRpdmVzLCBiaXRzLCB2b2lkcywgb3Igc3RyaW5ncy4gKi8KK3RzZl9yZWZsZWN0X3QqICB0
c2ZfcmVmbGVjdF9jcmVhdGUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGNyZWF0ZSBhIHRzZiBk
YXRhIHN0cnVjdHVyZSB0byBob2xkIGEgdmFsdWUgb2YgdGhlIGdpdmVuIHR5cGUuICovCit0c2Zf
cmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX2ludDhfdChpbnQ4X3QgdmFsdWUpOwordHNm
X3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV91aW50OF90KHVpbnQ4X3QgdmFsdWUpOwor
dHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV9pbnQxNl90KGludDE2X3QgdmFsdWUp
OwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV91aW50MTZfdCh1aW50MTZfdCB2
YWx1ZSk7Cit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX2ludDMyX3QoaW50MzJf
dCB2YWx1ZSk7Cit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX3VpbnQzMl90KHVp
bnQzMl90IHZhbHVlKTsKK3RzZl9yZWZsZWN0X3QqICB0c2ZfcmVmbGVjdF9jcmVhdGVfaW50NjRf
dChpbnQ2NF90IHZhbHVlKTsKK3RzZl9yZWZsZWN0X3QqICB0c2ZfcmVmbGVjdF9jcmVhdGVfdWlu
dDY0X3QodWludDY0X3QgdmFsdWUpOwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0
ZV9pbnRlZ2VyKHRzZl9pbnRlZ2VyX3QgdmFsdWUpOwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZs
ZWN0X2NyZWF0ZV9sb25nKHRzZl9sb25nX3QgdmFsdWUpOwordHNmX3JlZmxlY3RfdCogIHRzZl9y
ZWZsZWN0X2NyZWF0ZV9mbG9hdChmbG9hdCB2YWx1ZSk7Cit0c2ZfcmVmbGVjdF90KiAgdHNmX3Jl
ZmxlY3RfY3JlYXRlX2RvdWJsZShkb3VibGUgdmFsdWUpOworCisvKiBtYWNybyB0aGF0IGFsbG93
cyBvbmUgdG8gcGFyYW1ldGVyaXplIHRoZSBhYm92ZS4gKi8KKyNkZWZpbmUgICAgICAgICB0c2Zf
cmVmbGVjdF9jcmVhdGVfcHJpbWl0aXZlKHR5cGUsdmFsdWUpIFwKKyAgICAgICAgICAgICAgICAg
ICAgKHRzZl9yZWZsZWN0X2NyZWF0ZV8jI3R5cGUodmFsdWUpKQorCisvKiBjcmVhdGUgYSB0c2Yg
ZGF0YSBzdHJ1Y3QgdG8gaG9sZCBhIGJpdCB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gKi8KK3RzZl9y
ZWZsZWN0X3QqICB0c2ZfcmVmbGVjdF9jcmVhdGVfYml0KHRzZl9ib29sX3QgdmFsdWUpOworCisv
KiBjcmVhdGUgYSAndm9pZCcgZGF0YSBzdHJ1Y3R1cmU7IHRoaXMgaXMganVzdCBhIHNpbmdsZXRv
biBmb3IKKyAqIHRoZSB2b2lkIHR5cGUuICB5b3UnbGwgcHJvYmFibHkgb25seSBoYXZlIHRvIGRl
YWwgd2l0aCB0aGlzIGlmCisgKiB5b3UgdXNlIHRoZSBjaG9pY2UgdHlwZSBmb3IgZW51bWVyYXRp
b25zLiAqLwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV92b2lkKHZvaWQpOwor
CisvKiBjcmVhdGUgYSBzdHJpbmcuICB0aGUgYWN0dWFsIGNoYXIqIGlzIGR1cGxpY2F0ZWQuICov
Cit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX3N0cmluZyhjb25zdCBjaGFyICpz
dHIpOworCisvKiBjcmVhdGUgYW4gJ2FueScuICB0aGlzIGlzIGEgZHluYW1pYyBob2xkZXIgZm9y
IGRhbW4tbmVhcgorICogYW55dGhpbmcuICB0aGUgYnVmZmVyIGJlY29tZXMgb3duZWQgYnkgdGhl
IHJlZmxlY3Qgb2JqZWN0LAorICogc28gdGhhdCBldmVuIGlmIHRoaXMgY3JlYXRpb24gZmFpbHMs
IHRoZSBidWZmZXIgaXMgbm8gbG9uZ2VyCisgKiBhdmFpbGFibGUgdG8geW91LiAqLwordHNmX3Jl
ZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV9hbnkodHNmX2J1ZmZlcl90ICpidWYpOworCisv
KiBjbG9uZSBhIGRhdGEgc3RydWN0dXJlICovCit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3Rf
Y2xvbmUodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGRlc3Ryb3kgYSBkYXRhIHN0cnVjdHVy
ZSAqLwordm9pZCAgICAgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3kodHNmX3JlZmxlY3RfdCAq
ZGF0YSk7CisKKy8qIHByb2R1Y2UgYSBidWZmZXIgZnJvbSBkYXRhICovCit0c2ZfYnVmZmVyX3Qq
ICAgdHNmX3JlZmxlY3RfbWFrZV9idWZmZXIodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIHBy
b2R1Y2UgZGF0YSBmcm9tIGEgYnVmZmVyICovCit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3Rf
ZnJvbV9idWZmZXIodHNmX2J1ZmZlcl90ICpidWYpOworCit0c2ZfdHlwZV90KiAgICAgdHNmX3Jl
ZmxlY3RfZ2V0X3R5cGUodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKK3RzZl90eXBlX2tpbmRfdCB0
c2ZfcmVmbGVjdF9nZXRfa2luZF9jb2RlKHRzZl9yZWZsZWN0X3QgKmRhdGEpOworCisvKiBzZXQg
YSBzdHJ1Y3R1cmUgZWxlbWVudC4gIHRoaXMgd2lsbCBkbyBlcnJvciBwcm9wYWdhdGlvbiBvbgor
ICogKmVsZV9kYXRhLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9zdHJ1Y3RfcmVmbGVjdF9zZXRf
ZWxlbWVudCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICplbGVfZGF0YSk7CisK
Ky8qIHNldCBhIHN0cnVjdHVyZSBlbGVtZW50IGJ5IGluZGV4LiAgdGhpcyB3aWxsIGRvIGVycm9y
IHByb3BhZ2F0aW9uCisgICBvbiAqZWxlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9zdHJ1Y3Rf
cmVmbGVjdF9zZXRfZWxlbWVudF9ieV9pbmRleCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlKTsKKworLyogZ2V0IGEgc3RydWN0dXJlIGVsZW1l
bnQgKi8KK3RzZl9yZWZsZWN0X3QqICB0c2Zfc3RydWN0X3JlZmxlY3RfZ2V0X2VsZW1lbnQodHNm
X3JlZmxlY3RfdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CisKKy8qIGdldCBhIHN0cnVjdHVyZSBlbGVtZW50
IGJ5IGluZGV4ICovCit0c2ZfcmVmbGVjdF90KiAgdHNmX3N0cnVjdF9yZWZsZWN0X2dldF9lbGVt
ZW50X2J5X2luZGV4KHRzZl9yZWZsZWN0X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KTsKKworLyog
Z2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHN0cnVjdHVyZSAqLwordWludDMyX3Qg
ICAgICAgIHRzZl9zdHJ1Y3RfcmVmbGVjdF9nZXRfbnVtX2VsZW1lbnRzKHRzZl9yZWZsZWN0X3Qg
KmRhdGEpOworCisvKiBzZXQgdGhlIGNob2ljZS4gIGFzIGEgY29udmVuaWVuY2Ugc2hvcnRjdXQs
IGlmIGNob2ljZSBpcyBOVUxMLCB0aGlzIGlzCisgICBlcXVpdmFsZW50IHRvIGNhbGxpbmcgdHNm
X2Nob2ljZV9yZWZsZWN0X3NldF91bmtub3duKCkuICB0aGlzIG1lYW5zCisgICB0aGF0IGVsZV9k
YXRhIGlzIGlnbm9yZWQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV9yZWZsZWN0X3Nl
dCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqY2hvaWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlX2RhdGEpOworCisvKiBzZXQgdGhlIGNob2ljZSBi
eSBpbmRleC4gIGFzIGEgY29udmVuaWVuY2Ugc2hvcnRjdXQsIGlmIGNob2ljZSBpcworICAgVUlO
VDMyX01BWCwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAgIHRzZl9jaG9pY2VfcmVm
bGVjdF9zZXRfdW5rbm93bigpLiAgdGhpcyBtZWFucyB0aGF0IGVsZV9kYXRhIGlzIGlnbm9yZWQu
ICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV9yZWZsZWN0X3NldF9ieV9pbmRleCh0c2Zf
cmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICplbGVfZGF0YSk7CisKKy8qIHNldCB0aGUg
Y2hvaWNlIHRvIHVua25vd24uICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV9yZWZsZWN0
X3NldF91bmtub3duKHRzZl9yZWZsZWN0X3QgKmRhdGEpOworCisvKiB0ZWxscyB5b3UgdGhlIGNo
b2ljZSBpbmRleCAqLwordWludDMyX3QgICAgICAgIHRzZl9jaG9pY2VfcmVmbGVjdF9nZXRfaW5k
ZXgodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIHRlbGxzIHlvdSBpZiB0aGUgY2hvaWNlIGlz
IGtub3cgKG5vdCB1bmtub3duKSAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9jaG9pY2VfcmVmbGVj
dF9pc19rbm93bih0c2ZfcmVmbGVjdF90ICpkYXRhKTsKKworLyogZ2V0IHRoZSBjaG9pY2UuICBp
ZiB1bmtub3duLCB3aWxsIHJldHVybiBOVUxMLiAqLworY29uc3QgY2hhciogICAgIHRzZl9jaG9p
Y2VfcmVmbGVjdF9nZXRfY2hvaWNlKHRzZl9yZWZsZWN0X3QgKmRhdGEpOworCisvKiBnZXQgdGhl
IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaG9pY2UuICBpZiB1bmtub3duLCB3aWxsCisgKiBy
ZXR1cm4gTlVMTC4gKi8KK3RzZl9yZWZsZWN0X3QqICB0c2ZfY2hvaWNlX3JlZmxlY3RfZ2V0X2Rh
dGEodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGFwcGVuZCBhbiBlbGVtZW50IHRvIHRoZSBh
cnJheS4gIHRoaXMgd2lsbCBkbyBlcnJvciBwcm9wYWdhdGlvbgorICogb24gKmVsZV9kYXRhLiAq
LwordHNmX2Jvb2xfdCAgICAgIHRzZl9hcnJheV9yZWZsZWN0X2FwcGVuZCh0c2ZfcmVmbGVjdF90
ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfcmVm
bGVjdF90ICplbGVfZGF0YSk7CisKKy8qIGdldCBhbiBhcnJheSBlbGVtZW50ICovCit0c2ZfcmVm
bGVjdF90KiAgdHNmX2FycmF5X3JlZmxlY3RfZ2V0X2VsZW1lbnQodHNmX3JlZmxlY3RfdCAqZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBpbmRleCk7CisKKy8qIGdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheSAq
LwordWludDMyX3QgICAgICAgIHRzZl9hcnJheV9yZWZsZWN0X2dldF9udW1fZWxlbWVudHModHNm
X3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGdldCB0aGUgcHJpbWl0aXZlcy4uLiAqLworaW50OF90
ICAgICAgICAgIHRzZl9pbnQ4X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7Cit1
aW50OF90ICAgICAgICAgdHNmX3VpbnQ4X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0
YSk7CitpbnQxNl90ICAgICAgICAgdHNmX2ludDE2X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3Rf
dCAqZGF0YSk7Cit1aW50MTZfdCAgICAgICAgdHNmX3VpbnQxNl90X3JlZmxlY3RfZ2V0KHRzZl9y
ZWZsZWN0X3QgKmRhdGEpOworaW50MzJfdCAgICAgICAgIHRzZl9pbnQzMl90X3JlZmxlY3RfZ2V0
KHRzZl9yZWZsZWN0X3QgKmRhdGEpOwordWludDMyX3QgICAgICAgIHRzZl91aW50MzJfdF9yZWZs
ZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKTsKK2ludDY0X3QgICAgICAgICB0c2ZfaW50NjRf
dF9yZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKTsKK3VpbnQ2NF90ICAgICAgICB0c2Zf
dWludDY0X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7Cit0c2ZfaW50ZWdlcl90
ICAgdHNmX2ludGVnZXJfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7Cit0c2ZfbG9u
Z190ICAgICAgdHNmX2xvbmdfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7CitmbG9h
dCAgICAgICAgICAgdHNmX2Zsb2F0X3JlZmxlY3RfZ2V0KHRzZl9yZWZsZWN0X3QgKmRhdGEpOwor
ZG91YmxlICAgICAgICAgIHRzZl9kb3VibGVfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0
YSk7CisjZGVmaW5lICAgICAgICAgdHNmX3ByaW1pdGl2ZV9yZWZsZWN0X2dldChkYXRhLHR5cGUp
IFwKKyAgICAgICAgICAgICAgICAgICAgKHRzZl8jI3R5cGUjI19yZWZsZWN0X2dldChkYXRhKSkK
KworLyogZ2V0IGEgYml0ICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2JpdF9yZWZsZWN0X2dldCh0
c2ZfcmVmbGVjdF90ICpkYXRhKTsKKworLyogZ2V0IHRoZSBzdHJpbmcuICovCitjb25zdCBjaGFy
KiAgICAgdHNmX3N0cmluZ19yZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKTsKKworLyog
Z2V0IHRoZSBidWZmZXIgZnJvbSBhbiBhbnkuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2FueV9y
ZWZsZWN0X2dldF9idWZmZXIodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIHJldHVybnMgdHNm
X3RydWUgaWYgdGhlIGdpdmVuIHR5cGUgaGFzIGEgY29tcGxldGUgc3RydWN0dXJlIG1hcHBpbmcu
IAorICogdGhpcyBkb2VzIG5vdCB0ZWxsIHlvdSBpZiB0aGUgZ2l2ZW4gdHlwZSBoYXMgYSBtYXBw
aW5nIHdpdGhpbiBpdHMKKyAqIHBhcmVudCB0eXBlIC0gaXQgb25seSB0ZWxscyB5b3UgaWYgdGhl
IHR5cGVzIGl0IGNvbnRhaW5zIGhhdmUKKyAqIG1hcHBpbmdzLiAgaGVuY2UsIHRoaXMgYWx3YXlz
IHJldHVybnMgdHNmX3RydWUgZm9yIHR5cGVzIHRoYXQgYXJlIG5vdAorICogY29udGFpbmVycy4g
IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0c2ZfZmFsc2UsIHRoZW4gY2FsbGluZyBhbnkgb2YK
KyAqIHRoZSB0c2ZfbmF0aXZlIGZ1bmN0aW9ucyBvbiB0aGlzIHR5cGUgd2lsbCByZXN1bHQgaW4g
dW5wcmVkaWN0YWJsZQorICogYmVoYXZpb3IgKHVubGVzcyBvdGhlcndpc2Ugbm90ZWQpLiAqLwor
dHNmX2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfdHlwZV9oYXNfc3RydWN0X21hcHBpbmcodHNmX3R5
cGVfdCAqdHlwZSk7CisKKy8qIGdldCB0aGUgbmF0aXZlIHNpemUgb2YgYSBwYXJ0aWN1bGFyIHR5
cGUgd2l0aGluIGl0cyBwYXJlbnQKKyAqIHN0cnVjdC4gIHRoaXMgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIHR5cGVzIHRoYXQgaGF2ZSBhIHN0cnVjdAorICogbWFwcGluZy4gKi8KK3NpemVfdCAgICAg
ICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGdl
dCBhIGJvdW5kIG9uIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBuYXRpdmUgZGF0YSBzdHJ1Y3R1cmUg
cm9vdGVkIGF0CisgKiB0aGUgZ2l2ZW4gdHlwZS4gd2lsbCByZXR1cm4gVUlOVG1fTUFYIGlmIHRo
ZSBib3VuZCBjYW5ub3QgYmUgZGVkdWNlZC4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfbmF0aXZl
X3R5cGVfZ2V0X3RvdGFsX3NpemVfYm91bmRzKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm1pbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAqbWF4KTsKKworLyogcmV0dXJucyB0cnVlIGlmIGEgbWVtY3B5KCkgZnJvbSBzb3VyY2Ug
dG8gZGVzdGluYXRpb24gd2l0aCB0aGUgc291cmNlJ3MKKyAqIHNpemUgd2lsbCBnaXZlIHRoZSAn
ZGVzaXJlZCcgcmVzdWx0LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfdHlwZV9jYW5f
YmxpdCh0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl90eXBlX3QgKnNyY190eXBlKTsKKworLyogcmV0dXJucyB0aGUgb2Zm
c2V0IG9mIGEgcGFydGljdWxhciBuYW1lZCB0eXBlIG5vZGUuICovCitzaXplX3QgICAgICAgICAg
dHNmX25hdGl2ZV9uYW1lZF90eXBlX2dldF9vZmZzZXQodHNmX25hbWVkX3R5cGVfdCAqbm9kZSk7
CisKKy8qIGdpdmVzIGEgbWFwcGluZyAob2Zmc2V0KSBmb3IgYW4gZWxlbWVudCB3aXRoaW4gYSBz
dHJ1Y3QuICBub3RlCisgKiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHBhcnRpY3VsYXJseSBm
YXN0LiAgaG93ZXZlciwgeW91IHNob3VsZG4ndAorICogY2FyZSBhYm91dCB0aGUgc3BlZWQgb2Yg
dGhpcyBmdW5jdGlvbiBzaW5jZSB5b3Ugc2hvdWxkIG9ubHkgZXZlcgorICogY2FsbCBpdCBvbmNl
IGZvciBlYWNoIHN0cnVjdHVyZSBlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgeW91cgorICog
cHJvZ3JhbS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX21hcCh0
c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXQpOworCisvKiBnaXZlcyBhIHNpemUgdG8gYSBzdHJ1Y3Qu
ICBub3RlIHRoYXQgbGlrZSB0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX21hcCgpLAorICogdGhpcyBm
dW5jdGlvbiBpcyBub3QgcGFydGljdWxhcmx5IGZhc3QuICovCit0c2ZfYm9vbF90ICAgICAgdHNm
X25hdGl2ZV9zdHJ1Y3RfdHlwZV9zZXRfc2l6ZSh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKTsKKwor
LyogY3JlYXRlcyBhIHN0cnVjdCBhbmQgc2V0cyBpdHMgbmF0aXZlIHNpemUuIGVxdWl2YWxlbnQg
dG8gY2FsbGluZworICogdHNmX3R5cGVfY3JlYXRlKFRTRl9US19TVFJVQ1QpIGFuZCB0aGVuIGNh
bGxpbmcKKyAqIHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X3NpemUoKS4gKi8KK3RzZl90eXBl
X3QqICAgICB0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX2NyZWF0ZShzaXplX3Qgc2l6ZSk7CisKKy8q
IGFwcGVuZHMgYSBzdHJ1Y3QgZmllbGQgYW5kIHNldHMgaXRzIG9mZnNldC4gZXF1aXZhbGVudCB0
byBjYWxsaW5nCisgKiB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kKCkgYW5kIHRoZW4gdHNmX25hdGl2
ZV9zdHJ1Y3RfdHlwZV9tYXAoKS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfbmF0aXZlX3N0cnVj
dF90eXBlX2FwcGVuZCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKmVsZV90eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQp
OworCisvKiBzZXRzIHRoZSBjb25zdHJ1Y3RvciBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBqdXN0
IGJlZm9yZSB0aGUgZmllbGRzIG9mCisgKiB0aGUgc3RydWN0IGFyZSBwb3B1bGF0ZWQgZHVyaW5n
IHBhcnNpbmcgb2YgY29weWluZy4gdGhpcyBpcyBhcHByb3ByaWF0ZQorICogZm9yIGluaXRpYWxp
emluZyBvdGhlciBmaWVsZHMgdGhhdCB0aGUgdXNlci1kZWZpbmVkIHN0cnVjdCBtaWdodCBoYXZl
LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X2NvbnN0cnVj
dG9yKHRzZl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpjb25zKSh2b2lkKikpOworCisvKiBzZXRzIHRo
ZSBkZXN0cnVjdG9yIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIHRoZSBzdHJ1
Y3QgaXMKKyAqIGRlYWxsb2NhdGVkLiBmb3IgcmVnaW9uLWFsbG9jYXRlZCBzdHJ1Y3RzLCB0aGlz
IGdldHMgYWRkZWQgYXMgYSByZWdpb24KKyAqIGRlc3RydWN0aW9uIGNhbGxiYWNrLiAqLwordHNm
X2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X3ByZV9kZXN0cnVjdG9yKHRz
Zl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwcmVfZGVzdCkodm9pZCopKTsKKworLyogc2V0cyB0
aGUgZGVzdHJ1Y3RvciBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBpbnN0ZWFkIG9mIG5vcm1hbCBz
dHJ1Y3QKKyAqIGRlc3RydWN0aW9uIGluIHRzZl9kZXN0cnVjdG9yLiBzZXR0aW5nIHRoaXMgbWVh
bnMgdGhhdCBkZXN0cm95aW5nIHRoZSBzdHJ1Y3QKKyAqIHVzaW5nIGEgZGVzdHJ1Y3RvciB3aWxs
IG5vdCBjYWxsIHRoZSBwcmVfZGVzdHJ1Y3Rvci4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfbmF0
aXZlX3N0cnVjdF90eXBlX3NldF9kZXN0cnVjdG9yKHRzZl90eXBlX3QgKip0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmRl
c3QpKHZvaWQqKSk7CisKKy8qIGdldCB0aGUgY29uc3RydWN0b3IgdG8gY2FsbCB3aGVuIHRoZSBz
dHJ1Y3QgZ2V0cyBhbGxvY2F0ZWQgKi8KK3ZvaWQgKCp0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX2dl
dF9jb25zdHJ1Y3Rvcih0c2ZfdHlwZV90ICp0eXBlKSkodm9pZCopOworCisvKiBnZXQgdGhlIGRl
c3RydWN0b3IgdG8gY2FsbCB3aGVuIHRoZSBzdHJ1Y3QgZ2V0cyBkZWFsbG9jYXRlZCAqLwordm9p
ZCAoKnRzZl9uYXRpdmVfc3RydWN0X3R5cGVfZ2V0X3ByZV9kZXN0cnVjdG9yKHRzZl90eXBlX3Qg
KnR5cGUpKSh2b2lkKik7CisKKy8qIGdldCB0aGUgZGVzdHJ1Y3RvciB0byBjYWxsIHdoZW4gdGhl
IHN0cnVjdCBnZXRzIGRlYWxsb2NhdGVkICovCit2b2lkICgqdHNmX25hdGl2ZV9zdHJ1Y3RfdHlw
ZV9nZXRfZGVzdHJ1Y3Rvcih0c2ZfdHlwZV90ICp0eXBlKSkodm9pZCopOworCisvKiBzZXQgYWxs
IG9mIHRoZSBvZmZzZXRzIGFuZCB0aGluZ3MgcmVxdWlyZWQgYnkgY2hvaWNlICovCit0c2ZfYm9v
bF90ICAgICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9tYXAodHNmX3R5cGVfdCAqKnR5cGUsCisJ
CQkJCSAgIHRzZl9ib29sX3QgaW5fcGxhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9vZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpOworCisvKiBjcmVhdGVz
IGEgY2hvaWNlIHR5cGUgYW5kIHNldHMgYWxsIG9mIGl0cyBvZmZzZXRzLiAqLwordHNmX3R5cGVf
dCogICAgIHRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfY3JlYXRlKHRzZl9ib29sX3QgaW5fcGxhY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZh
bHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGF0YV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNpemUpOworCisvKiBpcyB0aGUgY2hvaWNlIG1hcHBpbmcgaW4g
cGxhY2U/ICovCit0c2ZfYm9vbF90ICAgICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9w
bGFjZSh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogcmV0cmlldmUgdGhlIGRhdGEgb2Zmc2V0ICov
CitzaXplX3QgICAgICAgICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9nZXRfZGF0YV9vZmZzZXQo
dHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHJldHJpZXZlIHRoZSB2YWx1ZSBvZmZzZXQgKi8KK3Np
emVfdCAgICAgICAgICB0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2dldF92YWx1ZV9vZmZzZXQodHNm
X3R5cGVfdCAqdHlwZSk7CisKKy8qIHJldHJpZXZlIHRoZSBzaXplICovCitzaXplX3QgICAgICAg
ICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9nZXRfc2l6ZSh0c2ZfdHlwZV90ICp0eXBlKTsKKwor
LyogYXV0b21hdGljYWxseSBwcm9kdWNlcyBzb21lIHNvcnQgb2YgbWFwcGluZy4gIHlvdSBwcm9i
YWJseSBkb24ndCB3YW50CisgKiB0byB1c2UgdGhpcyBtZXRob2QsIHNpbmNlIHlvdSBnZXQgbm8g
Z3VhcmFudGVlIHRoYXQgdGhpcyB3aWxsIG1hcCB0bworICogYW55IG9mIHlvdXIgc3RydWN0dXJl
cy4gIHRoaXMgbWV0aG9kJ3MgbWFpbiBpbnRlbnQgaXMgdG8gYWlkIGluIHRoZQorICogd3JpdGlu
ZyBvZiByZWdyZXNzaW9uIHRlc3RzLgorICoKKyAqIGlmIGRvX2FsaWduIGlzIHRzZl90cnVlLCBl
YWNoIGVsZW1lbnQgd2lsbCBiZSBhbGlnbmVkIGFjY29yZGluZyB0bworICogdGhlIGRldGVjdGVk
IG5hdGl2ZSBhbGlnbm1lbnQgKHRoZSBhbGlnbm1lbnQgbmVjZXNzYXJ5IGZvciB0aGUgbGFyZ2Vz
dAorICogZGF0YSB0eXBlLCB3aGljaCBpcyB1c3VhbGx5IGRldGVybWluZWQgYnkgZWl0aGVyIHBv
aW50ZXJzIG9yIGRvdWJsZXMpLgorICoKKyAqIGlmIGRvX2FsaWduIGlzIHRzZl9mYWxzZSwgbm8g
YWxpZ25tZW50IGd1YXJhbnRlZSBpcyBtYWRlLiAgeW91IGhhdmUKKyAqIHRvIGJlIHF1aXRlIGNh
cmVmdWwgd2hlbiB1c2luZyB0aGlzIG9wdGlvbiwgYXMgaXQgbWlnaHQgY2F1c2UgdGhlCisgKiBH
UEMgcHJvZ3JhbXMgZ2VuZXJhdGVkIGZvciB0aGlzIHR5cGUgdG8gY3Jhc2guICovCit0c2ZfYm9v
bF90ICAgICAgdHNmX25hdGl2ZV90eXBlX3Byb2R1Y2Vfc29tZV9tYXBwaW5nKHRzZl90eXBlX3Qg
Kip0eXBlLAorCQkJCQkJICAgICB0c2ZfYm9vbF90IGRvX2FsaWduKTsKKworLyogZ2l2ZW4gYSB0
eXBlIHRoYXQgaGFzIGNvbXBsZXRlIHN0cnVjdCBtYXBwaW5nLCBwcm9kdWNlIGEgZ2VuZXJhdG9y
CisgKiB0aGF0IGNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgdHNmX2J1ZmZlcl90IG9iamVjdHMgZnJv
bSBwb2ludGVycworICogdG8gdGhlIHN0cnVjdC4gKi8KK3RzZl9nZW5ydHJfdCogICB0c2ZfZ2Vu
ZXJhdG9yX2NyZWF0ZSh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogZ2VuZXJhdGUgYSBidWZmZXIg
dXNpbmcgc29tZSBkYXRhIGFuZCBhIGdlbmVyYXRvci4gKi8KK3RzZl9idWZmZXJfdCogICB0c2Zf
Z2VuZXJhdG9yX2dlbmVyYXRlKHRzZl9nZW5ydHJfdCAqZ2VuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CisKKy8qIGdlbmVyYXRlIGEgYnVmZmVy
IGluIGEgcmVnaW9uIHVzaW5nIHNvbWUgZGF0YSBhbmQgYSBnZW5lcmF0b3IuICovCit0c2ZfYnVm
ZmVyX3QqICAgdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbih0c2ZfZ2VucnRyX3QgKmdlbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24pOworCisv
KiBkZXN0cm95IHRoZSBnZW5lcmF0b3IuICovCit2b2lkICAgICAgICAgICAgdHNmX2dlbmVyYXRv
cl9kZXN0cm95KHRzZl9nZW5ydHJfdCAqZ2VuKTsKKworLyogZ2l2ZW4gYSB0eXBlIHRoYXQgaGFz
IGEgY29tcGxldGUgc3RydWN0IG1hcHBpbmcsIHByb2R1Y2UgYSBwYXJzZXIKKyAqIHRoYXQgY2Fu
IGJlIHVzZWQgdG8gcmVhZCB0c2ZfYnVmZmVyX3Qgb2JqZWN0cyBhbmQgcHJvZHVjZSBkYXRhCisg
KiB0aGF0IGhhcyB0aGUgc3RydWN0dXJlIHlvdSBzcGVjaWZpZWQgaW4gdGhlIHN0cnVjdCBtYXBw
aW5nLiAqLwordHNmX3BhcnNlcl90KiAgIHRzZl9wYXJzZXJfY3JlYXRlKHRzZl90eXBlX3QgKnR5
cGUpOworCisvKiBwYXJzZSBhIGJ1ZmZlciBhbmQgZ2VuZXJhdGUgZGF0YSBhY2NvcmRpbmcgdG8g
dGhlIHN0cnVjdCBtYXBwaW5nCisgKiBpbiB0aGUgdHlwZSB5b3UgZ2F2ZSB0byB0c2ZfcGFyc2Vy
X2NyZWF0ZSgpLgorICoKKyAqIHN0dWZmIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiBjYW4g
YmUgZnJlZWQgdXNpbmcKKyAqIHRzZl9yZWdpb25fZnJlZSgpIChzZWUgdHNmX3JlZ2lvbi5oKS4g
Ki8KK3ZvaWQqICAgICAgICAgICB0c2ZfcGFyc2VyX3BhcnNlKHRzZl9wYXJzZXJfdCAqcGFyc2Vy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIp
OworCisvKiBwYXJzZSBhIGJ1ZmZlciBhbmQgZ2VuZXJhdGUgZGF0YSBhY2NvcmRpbmcgdG8gdGhl
IHN0cnVjdCBtYXBwaW5nCisgKiBpbiB0aGUgdHlwZSB5b3UgZ2F2ZSB0byB0c2ZfcGFyc2VyX2Ny
ZWF0ZSgpLiAgdGhlIGRhdGEgaXMKKyAqIGFsbG9jYXRlZCBpbiB0aGUgZ2l2ZW4gcmVnaW9uIGlu
c3RlYWQgb2YgaGF2aW5nIGEgbmV3IHJlZ2lvbgorICogY3JlYXRlZC4gKi8KK3ZvaWQqICAgICAg
ICAgICB0c2ZfcGFyc2VyX3BhcnNlX2luKHRzZl9wYXJzZXJfdCAqcGFyc2VyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24pOworCisvKiBwYXJzZSBk
aXJlY3RseSBpbnRvIGFuIGluc3RhbmNlIG9mIHRoZSBleHBlY3RlZCB0eXBlIHVzaW5nIHRoZSBn
aXZlbgorICogcmVnaW9uLiB5b3UgY2FuIHBhc3MgTlVMTCBmb3IgdGhlIHJlZ2lvbiBpZiB5b3Ug
d2FudCB0byB1c2UgbWFsbG9jIGZvcgorICogYWxsIGFsbG9jYXRpb25zLiAqLwordHNmX2Jvb2xf
dCAgICAgIHRzZl9wYXJzZXJfcGFyc2VfaW50byh0c2ZfcGFyc2VyX3QgKnBhcnNlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlc3VsdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKTsKKworLyogZGVz
dHJveSBhIHBhcnNlci4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfcGFyc2VyX2Rlc3Ryb3kodHNm
X3BhcnNlcl90ICpwYXJzZXIpOworCisvKiBnZXQgdGhlIG51bWJlciBvZiBncGMgY29kZXMgdGhh
dCB0aGUgcGFyc2VyIGlzIHVzaW5nLiAgdGhpcyBpcyBhCisgKiBtZWFzdXJlIG9mIHRoZSBwYXJz
ZXIncyBtZW1vcnkgZWZmaWNpZW5jeS4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfcGFyc2VyX251
bV9jb2Rlcyh0c2ZfcGFyc2VyX3QgKnBhcnNlcik7CisKKy8qIGNyZWF0ZSBhIGNvcGllciBnaXZl
biBhIGRlc3RpbmF0aW9uIHR5cGUgYW5kIGEgc291cmNlIHR5cGUuICBpZiB0aGUKKyAqIHNvdXJj
ZSBpcyBub3QgaW5zdGFuY2VvZiB0aGUgZGVzdGluYXRpb24sIHlvdSB3aWxsIGdldCBhbiBlcnJv
ci4gKi8KK3RzZl9jb3BpZXJfdCogICB0c2ZfY29waWVyX2NyZWF0ZSh0c2ZfdHlwZV90ICpkZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKnNyYyk7CisK
Ky8qIGRlc3Ryb3kgdGhlIGNvcGllci4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfY29waWVyX2Rl
c3Ryb3kodHNmX2NvcGllcl90ICpjb3BpZXIpOworCisvKiBjbG9uZSB0aGUgc291cmNlIGRhdGEs
IHdoaWNoIGhhcyB0aGUgc291cmNlIHR5cGUsIGFuZCBwcm9kdWNlIGFuCisgKiBvYmplY3Qgb2Yg
dGhlIGRlc3RpbmF0aW9uIHR5cGUuICB0aGUgb2JqZWN0IHJldHVybmVkIGNhbiBiZQorICogZnJl
ZWQgd2l0aCB0c2ZfcmVnaW9uX2ZyZWUoKS4gKi8KK3ZvaWQqICAgICAgICAgICB0c2ZfY29waWVy
X2Nsb25lKHRzZl9jb3BpZXJfdCAqY29waWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqc3JjKTsKKworLyogY2xvbmUgdGhlIHNvdXJjZSBkYXRhLCB3aGljaCBoYXMg
dGhlIHNvdXJjZSB0eXBlLCBhbmQgcHJvZHVjZSBhbgorICogb2JqZWN0IG9mIHRoZSBkZXN0aW5h
dGlvbiB0eXBlLiAgdGhlIG9iamVjdCByZXR1cm5lZCB3aWxsIGJlCisgKiBhbGxvY2F0ZWQgaW4g
dGhlIGdpdmVuIHJlZ2lvbi4gKi8KK3ZvaWQqICAgICAgICAgICB0c2ZfY29waWVyX2Nsb25lX2lu
KHRzZl9jb3BpZXJfdCAqY29waWVyLAorCQkJCSAgICB2b2lkICpzcmMsCisJCQkJICAgIHZvaWQg
KnJlZ2lvbik7CisKKy8qIGNvcHkgZnJvbSB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwg
Zm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgdHlwZXMuCisgKiBhbHNvLCB1c2UgdGhlIHByb3ZpZGVk
IHJlZ2lvbiBmb3IgYWxsb2NhdGlvbi4gbm90ZSB0aGF0IHlvdSBjYW4gcGFzcyBhCisgKiBOVUxM
IHJlZ2lvbiwgd2hpY2ggY2F1c2VzIHRoaXMgdG8gdXNlIG1hbGxvYyBmb3IgYWxsb2NhdGlvbnMu
ICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2NvcGllcl9jb3B5KHRzZl9jb3BpZXJfdCAqY29waWVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcmMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKnJlZ2lvbik7CisKKy8qIGNyZWF0ZSBhIGRlc3RydWN0b3IuIGEgZGVz
dHJveWVyIGNhbiBiZSB1c2VkIHRvIGZyZWUgdGhlIG1hbGxvYydkCisgKiBtZW1vcnkgdXNlZCBi
eSBvYmplY3RzIG9mIGEgZ2l2ZW4gdHlwZSwgcHJvdmlkZWQgdGhhdCB0aGUgb2JqZWN0cyB3ZXJl
CisgKiBhbGxvY2F0ZWQgd2l0aCBtYWxsb2MgYW5kIG5vdCB3aXRoIGEgcmVnaW9uLiAqLwordHNm
X2Rlc3RydWN0b3JfdCogdHNmX2Rlc3RydWN0b3JfY3JlYXRlKHRzZl90eXBlX3QgKnR5cGUpOwor
CisvKiBkZXN0cm95IHRoZSBkZXN0cm95ZXIuICovCit2b2lkICAgICAgICAgICAgdHNmX2Rlc3Ry
dWN0b3JfZGVzdHJveSh0c2ZfZGVzdHJ1Y3Rvcl90ICpkZXN0cnVjdG9yKTsKKworLyogZGVzdHJ1
Y3QgYW4gb2JqZWN0LiAqLwordm9pZCAgICAgICAgICAgIHRzZl9kZXN0cnVjdG9yX2Rlc3RydWN0
KHRzZl9kZXN0cnVjdG9yX3QgKmRlc3RydWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqb2JqZWN0KTsKKworLyogZmlsZSBkZXNjcmlwdG9yIHdyaXRl
cjsgdGhlIHZvaWQgKmFyZyBzaG91bGQgYmUgYSBwb2ludGVyIHRvCisgKiBhbiBpbnRlZ2VyIGhv
bGRpbmcgdGhlIGZpbGUgZGVzY3JpcHRvci4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfZmRfd3Jp
dGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOworCisv
KiBmaWxlIGRlc2NyaXB0b3IgcmVhZGVyOyB0aGUgdm9pZCAqYXJnIHNob3VsZCBiZSBhIHBvaW50
ZXIgdG8KKyAqIGFuIGludGVnZXIgaG9sZGluZyB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgaWYgYW4g
RU9GIGhhcHBlbnMgYmVmb3JlCisgKiBhbnkgZGF0YSBpcyByZWFkeSwgdGhpcyBmdW5jdGlvbiB3
aWxsIHNldCB0aGUgVFNGX0VfVU5FWFBFQ1RFRF9FT0YKKyAqIGVycm9yLiAgaWYgYW4gRU9GIGhh
cHBlbnMgYWZ0ZXIgYW55IGRhdGEgaXMgcmVhZHksCisgKiBUU0ZfRV9FUlJPTkVPVVNfRU9GIHdp
bGwgYmUgc2V0IGluc3RlYWQuIGlmIHRoZSBFT0Ygd2FzIGV4cGVjdGVkLAorICogeW91IHNob3Vs
ZCBjaGFuZ2UgdGhlIFRTRl9FX1VORVhQRUNURURfRU9GIGVycm9yIHRvIFRTRl9FX0VPRiBpZgor
ICogeW91IHByb3BhZ2F0ZSB0aGF0IGVycm9yIChzZWUgdHNmX2luX21hbi5jIGZvciBhIGdvb2Qg
ZXhhbXBsZSBvZgorICogd2hhdCBJJ20gdGFsa2luZyBhYm91dCkuICovCit0c2ZfYm9vbF90ICAg
ICAgdHNmX2ZkX3JlYWRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVu
KTsKKworLyogZmlsZSBkZXNjcmlwdG9yIHBhcnRpYWwgcmVhZGVyOyB0aGUgdm9pZCAqYXJnIHNo
b3VsZCBiZSBhIHBvaW50ZXIKKyAqIHRvIGFuIGludGVnZXIgaG9sZGluZyB0aGUgZmlsZSBkZXNj
cmlwdG9yLiAgdGhpcyBkaWZmZXJzIGZyb20KKyAqIHRzZl9mZF9yZWFkZXIoKSBpbiB0aGF0IGNv
bXBsZXRlIHdyaXRlcyBhcmUgbmV2ZXIgZ3VhcmFudGVlZC4KKyAqIGlmIGFuIEVPRiBoYXBwZW5z
LCB0aGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBUU0ZfRV9VTkVYUEVDVEVEX0VPRgorICogZXJy
b3IuICBpZiB0aGUgRU9GIHdhcyBleHBlY3RlZCwgeW91IHNob3VsZCBjaGFuZ2UgdGhlCisgKiBU
U0ZfRV9VTkVYUEVDVEVEX0VPRiBlcnJvciB0byBUU0ZfRV9FT0YgaWYgeW91IHByb3BhZ2F0ZSB0
aGF0IGVycm9yCisgKiAoc2VlIHRzZl9pbl9tYW4uYyBmb3IgYSBnb29kIGV4YW1wbGUgb2Ygd2hh
dCBJJ20gdGFsa2luZyBhYm91dCkuICovCitpbnQzMl90ICAgICAgICAgdHNmX2ZkX3BhcnRpYWxf
cmVhZGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbGVuKTsKKwordHNmX2Jvb2xfdCAgICAgIHRzZl9mdWxsX3JlYWRfb2ZfcGFydGlhbCh0c2Zf
cGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisJCQkJCSB2b2lkICphcmcsCisJCQkJCSB2b2lkICpk
YXRhLAorCQkJCQkgdWludDMyX3QgbGVuKTsKKworLyogcmVhZCBhIHN0cmluZyB1c2luZyBhIHJl
YWRlciAqLworY2hhciogICAgICAgICAgIHRzZl9yZWFkX3N0cmluZyh0c2ZfcmVhZGVyX3QgcmVh
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfc2l6ZSk7CisKKy8qIHdyaXRlIGEg
c3RyaW5nIHVzaW5nIGEgd3JpdGVyICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3dyaXRlX3N0cmlu
Zyh0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
c3RyKTsKKworLyogc2l6ZSBjYWxjdWxhdGluZyB3cml0ZXI7IHRoZSBhcmcgc2hvdWxkIGJlIGEg
dWludDMyX3QqLCB3aGVyZQorICogdGhlIHJlZmVyZW5jZWQgdWludDMyX3QgaXMgdGhlIGxlbmd0
aC4gIHlvdSBzaG91bGQgaW5pdGlhbGl6ZQorICogdGhlIGxlbmd0aCB0byAwIGJlZm9yZSB1c2lu
ZyB0aGlzIHdyaXRlci4gIG5vdGUgdGhhdCB0aGlzCisgKiB3cml0ZXIgZG9lcyBub3Qgd3JpdGUg
dGhlIGNvbnRlbnRzIHRvIGFueXdoZXJlOyBpdCBvbmx5IHRlbGxzCisgKiB5b3UgdGhlIGNvbnRl
bnRzJyBzaXplLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9zaXplX2NhbGNfd3JpdGVyKHZvaWQg
KmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpi
dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVuKTsK
KworLyogcmVhZGVyIHRoYXQgZGVsZWdhdGVzIHRvIGFub3RoZXIgcmVhZGVyLCBidXQgYWJvcnRz
IG9uY2UgdGhlCisgKiBhbW91bnQgcmVhZCBleGNlZWRzIGEgbGltaXQuICB0aGUgZXJyb3Igd2ls
bCBiZQorICogVFNGX0VfUEFSU0VfRVJST1IuICB0aGUgYXJnIHNob3VsZCBiZSBhIHRzZl9zaXpl
X2F3YXJlX3Jkcl90KiwKKyAqIHdoaWNoIHlvdSBzaG91bGQgaW5pdGlhbGl6ZSB3aXRoIHRoZSBy
ZWFkZXIgdG8gZGVsZWdhdGUgdG8sCisgKiB0aGUgYXJnIHRoYXQgdGhhdCByZWFkZXIgZXhwZWN0
cywgYSBsaW1pdCwgYW5kIGEgbmFtZS4gIHRoZQorICogbmFtZSBpcyB1c2VkIGZvciBnZW5lcmF0
aW5nIHRoZSBtZXNzYWdlIGZvciB0aGUgcGFyc2UgZXJyb3IsCisgKiBpZiBpdCBvY2N1cnMsIGFu
ZCBzaG91bGQgYmUgYSBzaG9ydCAocHJlZmVyYWJseSBvbmUgd29yZCkKKyAqIGRlc2NyaXB0aW9u
IG9mIHdoYXQgaXQgaXMgeW91J3JlIHJlYWRpbmcuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3Np
emVfYXdhcmVfcmVhZGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBsZW4pOworCisvKiBidWZmZXItb25seSB3cml0ZXIuICB3cml0ZXMgdG8gYSBi
dWZmZXIgb2YgYSBwcmUtZGVmaW5lZCBzaXplLiAgeW91IGNhbgorICogdGhlbiB1c2UgdGhpcyBi
dWZmZXIgd2l0aCB0aGUgYnVmZmVyLW9ubHkgcmVhZGVyLiAgdGhlIGFyZ3VtZW50IGlzIGEKKyAq
IHVpbnQ4X3QqKi4gIHRoaXMgZnVuY3Rpb24gd2lsbCBkZXJlZmVyZW5jZSBpdCBhbmQgdXNlIGl0
IGFzIGFuIGl0ZXJhdG9yCisgKiBhcyBpdCB3cml0ZXMuICovCit0c2ZfYm9vbF90ICAgICAgdHNm
X2J1ZmZlcl9vbmx5X3dyaXRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOworCisvKiBidWZmZXItb25seSB3cml0ZXIgdGhh
dCByZXNpemVzIHRoZSBvdXRwdXQgYnVmZmVyIHdoZW4gdGhlcmUgaXNuJ3QKKyAqIGVub3VnaCBy
b29tLiB0YWtlcyBhIHRzZl9yZXNpemFibGVfYnVmZmVyX3QuIGl0J3MgdmFsaWQgdG8gc3RhcnQg
YnkKKyAqIG1lbXNldHRpbmcgdGhlIHRzZl9yZXNpemFibGVfYnVmZmVyX3QgdG8gemVyby4gKi8K
K3RzZl9ib29sX3QgICAgICB0c2ZfcmVzaXphYmxlX2J1ZmZlcl93cml0ZXIodm9pZCAqYXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpi
dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxlbik7CisKKy8qIGJ1ZmZlci1vbmx5IHJlYWRlci4gIHJlYWRzIGZyb20gYSBsaWdodC13ZWln
aHQgYnVmZmVyLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9idWZmZXJfb25seV9yZWFkZXIodm9p
ZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVuKTsK
KworLyogcmVhZHMgZnJvbSBhIHJlYWRlciBhbmQgY29tcGFyZXMgdG8gd2hhdCB5b3Ugd3JpdGUg
dG8gaXQuICBmYWlscyBpZiBhbnkKKyAgIGJ5dGUgZG9lc24ndCBtYXRjaC4gKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfY29tcGFyaW5nX3dyaXRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8qIGNvbXB1dGVzIGEgaGFzaCBv
ZiB0aGUgdGV4dCB5b3UgZ2l2ZSBpdC4gIHRoZSBhcmcgbXVzdCBwb2ludCB0byBhCisgICAzMi1i
aXQgaW50ZWdlci4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfaGFzaGluZ193cml0ZXIodm9pZCAq
YXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8q
IGNyZWF0ZSBhIFNIQTEgaGFzaGluZyB3cml0ZXIuICovCit0c2Zfc2hhMV93dHJfdCogdHNmX3No
YTFfd3JpdGVyX2NyZWF0ZSh2b2lkKTsKKworLyogZGVzdHJveSBhIFNIQTEgaGFzaGluZyB3cml0
ZXIuICovCit2b2lkICAgICAgICAgICAgdHNmX3NoYTFfd3JpdGVyX2Rlc3Ryb3kodHNmX3NoYTFf
d3RyX3QgKnNoYTEpOworCisvKiB3cml0ZSB1c2luZyB0aGUgU0hBMSBoYXNoaW5nIHdyaXRlci4g
Ki8KK3RzZl9ib29sX3QgICAgICB0c2Zfc2hhMV93cml0ZXJfd3JpdGUodm9pZCAqYXJnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8qIGZp
bmlzaCB3cml0aW5nIGFuZCBnZXQgdGhlIGhhc2ggYXMgYW4gYXJyYXkgb2YgNSB1aW50MzJfdCdz
LiAgYWZ0ZXIKKyAqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHlvdSBjYW5ub3Qgd3JpdGUgaW50
byB0aGlzIHdyaXRlciBhbnltb3JlLgorICogY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJlcGVhdGVk
bHkgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSBzYW1lCisgKiByZXN1bHQuICovCit1aW50MzJfdCog
ICAgICAgdHNmX3NoYTFfd3JpdGVyX2ZpbmlzaCh0c2Zfc2hhMV93dHJfdCAqc2hhMSk7CisKKy8q
IGdldCB0aGUgcmVzdWx0aW5nIGhhc2ggYXMgYW4gYXJyYXkgb2YgNSB1aW50MzJfdCdzOyB0aGlz
IHJldHVybnMKKyAqIHRoZSBzYW1lIGFycmF5IGFzIHRzZl9zaGExX3dyaXRlcl9maW5pc2goKS4g
IHlvdSBzaG91bGQgbm90IGNhbGwKKyAqIHRoaXMgZnVuY3Rpb24gdW50aWwgYWZ0ZXIgeW91IGhh
dmUgY2FsbGVkIHRzZl9zaGExX3dyaXRlcl9maW5pc2goKS4KKyAqIGluIHRoaXMgc2Vuc2UsIHRo
aXMgZnVuY3Rpb24gaXMgc29tZXdoYXQgcmVkdW5kYW50IHRvCisgKiB0c2Zfc2hhMV93cml0ZXJf
ZmluaXNoKCksIGJ1dCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UuICovCit1aW50MzJfdCog
ICAgICAgdHNmX3NoYTFfd3JpdGVyX3Jlc3VsdCh0c2Zfc2hhMV93dHJfdCAqc2hhMSk7CisKKy8q
IHJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgaGV4IGZvcm1hdCBTSEExIHN1bSwgZ2l2
ZW4gdGhlCisgKiBzdW0gaW4gdGhlIGFyZ3VtZW50LiAgbm90ZSwgdGhlIHJldHVybmVkIHN0cmlu
ZyBpcyBuZXdseSBhbGxvY2F0ZWQsCisgKiBzbyB5b3UgbXVzdCBmcmVlIGl0IHdoZW4geW91J3Jl
IGRvbmUuICovCitjaGFyKiAgICAgICAgICAgdHNmX3NoYTFfc3VtX3RvX3N0cih1aW50MzJfdCAq
c3VtKTsKKworLyogY3JlYXRlIGEgYnVmZmVyZWQgcmVhZGVyIHVzaW5nIHRoZSBnaXZlbiBmaWxl
IGRlc2NyaXB0b3IgYW5kCisgKiBidWZmZXIgc2l6ZS4gIGlmIGtlZXBfZmQgaXMgdHNmX3RydWUs
IHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZQorICogY2xvc2VkIGlmOiBhbiBlcnJvciBvY2N1
cnMgd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSB0aGUgYnVmZmVyLAorICogYW5kIHdoZW4gdGhlIGJ1
ZmZlciBpcyBkZXN0cm95ZWQuICovCit0c2ZfYnVmX3Jkcl90KiAgdHNmX2J1Zl9yZWFkZXJfY3Jl
YXRlKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgYnVmX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9i
b29sX3Qga2VlcF9mZCk7CisKKy8qIGRlc3Ryb3kgYSByZWFkIGJ1ZmZlciAqLwordm9pZCAgICAg
ICAgICAgIHRzZl9idWZfcmVhZGVyX2Rlc3Ryb3kodHNmX2J1Zl9yZHJfdCAqYnVmKTsKKworLyog
cmVhZCB1c2luZyBhIHJlYWQgYnVmZmVyICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2J1Zl9yZWFk
ZXJfcmVhZCh2b2lkICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bGVuKTsKKworLyogdGVsbHMgeW91IGhvdyBtYW55IGJ5dGVzIG9mIGRhdGEgYXJlIHJlbWFpbmlu
ZyBpbiB0aGUgYnVmZmVyLiAqLwordWludDMyX3QgICAgICAgIHRzZl9idWZfcmVhZGVyX2dldF9y
ZW1haW5pbmcodHNmX2J1Zl9yZHJfdCAqYnVmKTsKKworLyogcmVzZXRzIHRoZSBidWZmZXIuICov
Cit2b2lkICAgICAgICAgICAgdHNmX2J1Zl9yZWFkZXJfcmVzZXQodHNmX2J1Zl9yZHJfdCAqYnVm
KTsKKworLyogY3JlYXRlIGEgYnVmZmVyZWQgd3JpdGVyIHVzaW5nIHRoZSBnaXZlbiBmaWxlIGRl
c2NyaXB0b3IsIGJ1ZmZlciBzaXplLgorICogaWYga2VlcF9mZCBpcyB0c2ZfdHJ1ZSwgdGhlIGZp
bGUgZGVzY3JpcHRvciB3aWxsIGJlIGNsb3NlZCBpZjogYW4gZXJyb3IKKyAqIG9jY3VycyB3aGls
ZSB0cnlpbmcgdG8gY3JlYXRlIHRoZSBidWZmZXIsIGFuZCB3aGVuIHRoZSBidWZmZXIgaXMgZGVz
dHJveWVkLiAqLwordHNmX2J1Zl93dHJfdCogIHRzZl9idWZfd3JpdGVyX2NyZWF0ZShpbnQgZmQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJ1Zl9zaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYm9vbF90IGtlZXBf
ZmQpOworCisvKiBkZXN0cm95IHRoZSBidWZmZXIuICBpZiBrZWVwX2ZkIGlzIHRzZl90cnVlLCB0
aGUgZmlsZSBkZXNjcmlwdG9yCisgKiBpcyBjbG9zZWQuICBub3RlIHRoYXQgdGhpcyBvcGVyYXRp
b24gZG9lcyBub3QgcmVzdWx0IGluIHRoZQorICogYnVmZmVyIGJlaW5nIGZsdXNoZWQsIHNvIGNh
bGxpbmcgdGhpcyB3aXRob3V0IGNhbGxpbmcgdGhlCisgKiBmbHVzaCBmdW5jdGlvbiAoc2VlIGJl
bG93KSBmaXJzdCBtYXkgcmVzdWx0IGluIGRhdGEgbG9zcy4gKi8KK3ZvaWQgICAgICAgICAgICB0
c2ZfYnVmX3dyaXRlcl9kZXN0cm95KHRzZl9idWZfd3RyX3QgKmJ1Zik7CisKKy8qIHRoaXMgaXMg
dGhlIGZ1bmN0aW9uIHRoYXQgeW91IHBhc3MgdG8gYWxsIG9mIHRoZSB3cml0aW5nIG9wZXJhdGlv
bnMKKyAqIGlmIHlvdSBhY3R1YWxseSB3YW50IHRvIHB1dCB0aGlzIHdyaXRlciB0byBnb29kIHVz
ZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfYnVmX3dyaXRlcl93cml0ZSh2b2lkICpidWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOworCisvKiBm
bHVzaCB0aGUgYnVmZmVyLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9idWZfd3JpdGVyX2ZsdXNo
KHRzZl9idWZfd3RyX3QgKmJ1Zik7CisKKy8qIGdldCB0aGUgJ2RlZmF1bHQnIHppcCBtb2RlLiAg
dGhpcyBpcyBhY3R1YWxseSBOT05FLCB3aGljaCB3aWxsCisgKiByZXN1bHQgaW4gaWxsZWdhbCBh
cmd1bWVudCBlcnJvcnMgaW4gdHNmX3ppcF9yZWFkZXJfY3JlYXRlKCkgYW5kCisgKiB0c2Zfemlw
X3dyaXRlcl9jcmVhdGUoKS4gIGhvd2V2ZXIsIHRzZl9zdHJlYW1fZmlsZV9pbnB1dCBhbmQKKyAq
IHRzZl9zdHJlYW1fZmlsZV9vdXRwdXQgd2lsbCBncmFjZWZ1bGx5IGFjY2VwdCBpdCBhbmQgdGFr
ZSBpdAorICogdG8gbWVhbiB0aGF0IG5vcm1hbCBidWZmZXJlZCBJTyBzaG91bGQgYmUgcGVyZm9y
bWVkLiAqLwordm9pZCAgICAgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQodHNm
X3ppcF93dHJfYXR0cl90ICphdHRyKTsKKworLyogZ2V0IHRoZSBkZWZhdWx0IFpMaWIgbW9kZS4g
IHRoaXMgd2lsbCBjYXVzZSBaTGliIHRvIGJlIHVzZWQgd2l0aAorICogZGVmYXVsdCBzZXR0aW5n
cyAoYSBjb21wcmVzc2lvbiBsZXZlbCBvZiBaX0RFRkFVTFRfQ09NUFJFU1NJT04gYW5kCisgKiBh
ZHZhbmNlZF9pbml0IHNldCB0byBmYWxzZSkuICB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRz
Zl90cnVlCisgKiBpZiBaTGliIGlzIHN1cHBvcnRlZCwgYW5kIHRzZl9mYWxzZSBvdGhlcndpc2Uu
ICBpZiB0c2ZfZmFsc2UgaXMKKyAqIHJldHVybmVkLCB0aGUgZXJyb3Igd2lsbCBiZSBzZXQgdG8g
VFNGX0VfTk9UX1NVUFBPUlRFRC4gIHRvIG1ha2UKKyAqIGxpZmUgZWFzaWVyIGluIHNvbWUgY2Fz
ZXMsIHlvdSBjYW4gcGFzcyBOVUxMIHRvIHRoaXMgZnVuY3Rpb24gYW5kCisgKiB0aGUgZnVuY3Rp
b24gd2lsbCBzdGlsbCBwZXJmb3JtIHRoZSBjaGVjayBpZiBabGliIGlzIHN1cHBvcnRlZC4gKi8K
K3RzZl9ib29sX3QgICAgICB0c2ZfemlwX3d0cl9hdHRyX2dldF96bGliX2RlZmF1bHQodHNmX3pp
cF93dHJfYXR0cl90ICphdHRyKTsKKworLyogZ2V0IHRoZSBkZWZhdWx0IGxpYmJ6aXAyIG1vZGUu
ICB0aGlzIHdpbGwgY2F1c2UgbGliYnppcDIgdG8gYmUKKyAqIHVzZWQgd2l0aCBkZWZhdWx0IHNl
dHRpbmdzIChibG9ja1NpemUxMDBrID0gOSwgdmVyYm9zaXR5ID0gMCwKKyAqIHdvcmtGYWN0b3Ig
PSAwLCBzbWFsbCA9IDApLiAgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0c2ZfdHJ1ZQorICog
aWYgbGliYnppcDIgaXMgc3VwcG9ydGVkLCBhbmQgdHNmX2ZhbHNlIG90aGVyd2lzZS4gIGlmIHRz
Zl9mYWxzZQorICogaXMgcmV0dXJuZWQsIHRoZSBlcnJvciB3aWxsIGJlIHNldCB0byBUU0ZfRV9O
T1RfU1VQUE9SVEVELiAgdG8KKyAqIG1ha2UgbGlmZSBlYXNpZXIgaW4gc29tZSBjYXNlcywgeW91
IGNhbiBwYXNzIE5VTEwgdG8gdGhpcyBmdW5jdGlvbgorICogYW5kIHRoZSBmdW5jdGlvbiB3aWxs
IHN0aWxsIHBlcmZvcm0gdGhlIGNoZWNrIGlmIGxpYmJ6aXAyIGlzCisgKiBzdXBwb3J0ZWQuICov
Cit0c2ZfYm9vbF90ICAgICAgdHNmX3ppcF93dHJfYXR0cl9nZXRfYnppcDJfZGVmYXVsdCh0c2Zf
emlwX3d0cl9hdHRyX3QgKmF0dHIpOworCisvKiBnZXQgdGhlIGF0dHJpYnV0ZXMgdGhhdCBjb3Jy
ZXNwb25kIHRvIHRoZSBnaXZlbiBtb2RlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl96aXBfd3Ry
X2F0dHJfZ2V0X2Zvcl9tb2RlKHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0ciwKKwkJCQkJICAgICAg
dHNmX3ppcF9tb2RlX3QgbW9kZSk7CisKKy8qIGdldCB0aGUgZGVmYXVsdCBkZWNvbXByZXNzaW9u
IHNldHRpbmdzLiAgdGhpcyBlbmFibGVzIG9ubHkgdGhvc2UKKyAqIGNvbXBscmVzc2lvbiBzY2hl
bWVzIHRoYXQgYXJlIGFjdHVhbGx5IHN1cHBvcnRlZC4gKi8KK3ZvaWQgICAgICAgICAgICB0c2Zf
emlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0cik7CisKKy8q
IGdldCB0aGUgc2V0dGluZ3Mgd2l0aCBhbGwgY29tcHJlc3Npb24gZGlzYWJsZWQuICB0aGlzIHNl
dHMgdGhlCisgKiBhbGxvdyBiaXRzIHRvIGZhbHNlLCBidXQgYWxsIG9mIHRoZSBvdGhlciBmaWVs
ZHMgYXJlIHNldCB0byB0aGUKKyAqIGRlZmF1bHQgc2V0dGluZ3MgLSBzbyB0aGlzIGlzIHRoZSBw
ZXJmZWN0IHN0YXJ0aW5nIHBsYWNlIGlmIHlvdSB3YW50CisgKiB0byBlbmFibGUgb25seSB5b3Vy
IGFwcHJvdmVkIGNvbXByZXNzaW9uIHNjaGVtZXMgKGp1c3QgY2FsbCB0aGlzCisgKiBhbmQgdGhl
biBzZXQgdGhlIGJpdHMgb2YgdGhlIHNjaGVtZXMgdGhhdCBtYWtlIHlvdSBoYXBweSkuICovCit2
b2lkICAgICAgICAgICAgdHNmX3ppcF9yZHJfYXR0cl9nZXRfbm96aXAodHNmX3ppcF9yZHJfYXR0
cl90ICphdHRyKTsKKworLyogaXMgYWxsIGNvbXByZXNzaW9uIGRpc2FibGVkPyAqLwordHNmX2Jv
b2xfdCAgICAgIHRzZl96aXBfcmRyX2F0dHJfaXNfbm96aXAodHNmX3ppcF9yZHJfYXR0cl90ICph
dHRyKTsKKworLyogY29udmVuaWVuY2UgbWFjcm8gdGhhdCBjaGVja3MgaWYgemxpYiBzdXBwb3J0
IGlzIGF2YWlsYWJsZSAqLworI2RlZmluZSAgICAgICAgIHRzZl96bGliX3N1cHBvcnRlZCgpIFwK
KyAgICAgICAgICAgICAgICAgICAgKHRzZl96aXBfd3RyX2F0dHJfZ2V0X3psaWJfZGVmYXVsdChO
VUxMKSkKKworLyogY29udmVuaWVuY2UgbWFjcm8gdGhhdCBjaGVja3MgaWYgbGliYnppcDIgc3Vw
cG9ydCBpcyBhdmFpbGFibGUgKi8KKyNkZWZpbmUgICAgICAgICB0c2ZfbGliYnppcDJfc3VwcG9y
dGVkKCkgXAorICAgICAgICAgICAgICAgICAgICAodHNmX3ppcF93dHJfYXR0cl9nZXRfYnppcDJf
ZGVmYXVsdChOVUxMKSkKKworLyogY3JlYXRlIGEgemlwcGluZyByZWFkZXIuICBpdCBhbHNvIGRv
ZXMgYnVmZmVyaW5nLiAgYWNjZXB0cyBhIHBhcnRpYWwKKyAqIHJlYWRlciBhcyBhIGRlbGVnYXRl
IHRvIGFjdHVhbGx5IHJlYWQgdGhlIGRhdGEuICBhcyBzdWNoLCB0aGlzIHRoaW5nCisgKiBjYW4g
YWRhcHQgdG8gbWFueSBkaWZmZXJlbnQgdW5kZXJseWluZyBkZXZpY2VzLiAgcmV0dXJucyBhbiBl
cnJvcgorICogaWYgeW91IHRyeSB0byB1c2UgYSBtb2RlIG9yIGF0dHJpYnV0ZSBzZXQgdGhhdCBp
cyBub3Qgc3VwcG9ydGVkLgorICogSW4gcGFydGljdWxhciwgdXNpbmcgVFNGX1pJUF9OT05FIGlz
IG5vdCBzdXBwb3J0ZWQhCisgKgorICogbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBub3Qg
Y2hlY2sgaWYgdGhlIHNlbGVjdGVkIG1vZGUgaXMgYWxsb3dlZAorICogYWNjb3JkaW5nIHRvIHRo
ZSBhdHRyaWJ1dGVzLiAgaXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvCisgKiBl
bnN1cmUgdGhhdCB0aGUgbW9kZSBpcyBhbGxvd2VkLiAqLwordHNmX3ppcF9yZHJfdCogIHRzZl96
aXBfcmVhZGVyX2NyZWF0ZSh0c2ZfcGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlYWRlcl9hcmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl96aXBfbW9kZV90IG1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRzZl96aXBfcmRyX2F0dHJfdCAq
YXR0cik7CisKKy8qIGRlc3Ryb3kgdGhlIHJlYWRlci4gKi8KK3ZvaWQgICAgICAgICAgICB0c2Zf
emlwX3JlYWRlcl9kZXN0cm95KHRzZl96aXBfcmRyX3QgKnJlYWRlcik7CisKKy8qIHJlYWQgc29t
ZSBkYXRhLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl96aXBfcmVhZGVyX3JlYWQodm9pZCAqcmVh
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8qIGNy
ZWF0ZSBhIHppcHBpbmcgd3JpdGVyLiAgaXQgYWxzbyBkb2VzIGJ1ZmZlcmluZy4gIGFjY2VwdHMg
YSB3cml0ZXIKKyAqIGFzIGEgZGVsZWdhdGUgdG8gYWN0dWFsbHkgd3JpdGUgdGhlIGRhdGEuICBh
cyBzdWNoLCB0aGlzIHRoaW5nIGNhbgorICogYWRhcHQgdG8gbWFueSBkaWZmZXJlbnQgdW5kZXJs
eWluZyBkZXZpY2VzLiAgbm90ZSB0aGF0IGl0IG1ha2VzIGxpdHRsZQorICogb3Igbm8gc2Vuc2Ug
dG8gcGFzcyBpbiBhIGJ1ZmZlcmluZyB3cml0ZXIsIHNpbmNlIHRoaXMgd3JpdGVyIGFscmVhZHkK
KyAqIGRvZXMgYnVmZmVyaW5nIChpbiBmYWN0LCBpdCBoYXMgdG8gZG8gYnVmZmVyaW5nIHRvIGlu
dGVyYWN0IHdpdGggdGhlCisgKiB1bmRlcmx5aW5nIGNvbXByZXNzaW9uIGVuZ2luZSkuICByZXR1
cm5zIGFuIGVycm9yIGlmIHlvdSB0cnkgdG8gdXNlCisgKiBhIG1vZGUgb3IgYXR0cmlidXRlIHNl
dCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQuICBpbiBwYXJ0aWN1bGFyLAorICogVFNGX1pJUF9OT05F
IGlzIG5vdCBzdXBwb3J0ZWQhICovCit0c2ZfemlwX3d0cl90KiAgdHNmX3ppcF93cml0ZXJfY3Jl
YXRlKHRzZl93cml0ZXJfdCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKndyaXRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0cik7CisKKy8qIGRlc3Ryb3kgdGhl
IHdyaXRlci4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfemlwX3dyaXRlcl9kZXN0cm95KHRzZl96
aXBfd3RyX3QgKndyaXRlcik7CisKKy8qIHdyaXRlIHNvbWUgZGF0YS4gKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2ZfemlwX3dyaXRlcl93cml0ZSh2b2lkICp3cml0ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOworCisvKiBmbHVzaCBkYXRhLiAgY2Fs
bGluZyB0aGlzIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBodXJ0IGNvbXByZXNzaW9uLCBzbworICog
Y2FsbCBpdCBvbmx5IGlmIHlvdSByZWFsbHkgaGF2ZSB0by4gIGlmIHRoZSBmdWxsX2ZsdXNoIHBh
cmFtZXRlciBpcworICogdHJ1ZSwgdGhlIGZsdXNoIHdpbGwgbm90IG9ubHkgYmUgY29tcGxldGUg
ZW5vdWdoIHRvIGFsbG93IHRoZSByZWFkaW5nCisgKiBlbmQgdG8gZ2V0IGFsbCBvZiB0aGUgZGF0
YSwgYnV0IHdpbGwgYWxzbyByZXN1bHQgaW4gdGhlIGNvbXByZXNzb3IKKyAqIHJlc2V0dGluZyBp
dHMgc3RhdGUgKHNvIHRvIHNwZWFrKSBpbiBvcmRlciB0byBtYWtlIGFsbCBmdXR1cmUgZGF0YQor
ICogYmUgaW5kZXBlbmRhbnQgb2YgdGhlIGFscmVhZHkgd3JpdHRlbiBkYXRhLiAgcGFzc2luZyB0
c2ZfdHJ1ZSBmb3IKKyAqIGZ1bGxfZmx1c2ggd2lsbCBoZWxwIGVycm9yIHJlY292ZXJ5IGJ1dCB3
aWxsIGh1cnQgeW91ciBjb21wcmVzc2lvbgorICogcmF0aW9zIGV2ZW4gbW9yZS4KKyAqCisgKiBu
b3RlIHRoYXQgd2hlbiB1c2luZyBsaWJiemlwMiwgZnVsbF9mbHVzaCBpcyBpZ25vcmVkLiAgaW4g
Z2VuZXJhbCwKKyAqIGFueSBmbHVzaGluZyBkb25lIHdpdGggbGliYnppcDIgd2lsbCBodXJ0IGEg
bG90IG1vcmUgdGhhbiBhbnkgZmx1c2hpbmcKKyAqIGRvbmUgd2l0aCB6bGliLCByZWdhcmRsZXNz
IG9mIHRoZSB2YWx1ZSBvZiBmdWxsX2ZsdXNoLiAgc28ga2VlcCB0aGF0CisgKiBpbiBtaW5kLiAg
aW4gbWFueSBjYXNlcywgdGhlIGV4dHJlbWVseSBiYWQgcGVyZm9ybWFuY2UgdGhhdCByZXN1bHRz
CisgKiBmcm9tIGZsdXNoaW5nIGluIGxpYmJ6aXAyIHdpbGwgYmUgc3VmZmljaWVudCByZWFzb24g
dG8gdXNlIHpsaWIKKyAqIGluc3RlYWQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3ppcF93cml0
ZXJfZmx1c2godHNmX3ppcF93dHJfdCAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9ib29sX3QgZnVsbF9mbHVzaCk7CisKKy8qIGZpbmlzaCB0aGUgc3Ry
ZWFtLiAgdGhpcyBhbGxvd3MgdGhlIGNvbXByZXNzb3IgdG8gb3V0cHV0IGl0cyBlbmQtb2YtCisg
KiBzdHJlYW0gbWFya2VyLiAgdGhpcyBhbHNvIGRvZXMgYW4gaW1wbGljaXQgZmx1c2gsIHNvIGNh
bGxpbmcgZmx1c2gKKyAqIGp1c3QgYmVmb3JlIGNhbGxpbmcgZmluaXNoIHdpbGwgbm90IGhlbHAg
KGl0IHNob3VsZG4ndCBodXJ0LCBlaXRoZXIpLgorICogbm90IHRoYXQgaWYgeW91IGRvIGEgZmx1
c2ggYnV0IGRvIG5vdCBkbyBhIGZpbmlzaCwgdGhlIHJlY2VpdmVyCisgKiBzaG91bGQgYmUgYWJs
ZSB0byBnZXQgYWxsIG9mIHRoZSBkYXRhIGJ1dCB3aWxsIHByb2JhYmx5IHJlcG9ydCBhbgorICog
ZXJyb3IgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSwgY29tcGxhaW5pbmcgdGhhdCB0aGUgZW5kIG9m
IHN0cmVhbSB3YXMKKyAqIG5ldmVyIHJlYWxseSBoaXQuCisgKgorICogYWZ0ZXIgZmluaXNoIHJl
dHVybnMsIHlvdSBtYXkgbm90IHVzZSB0aGlzIHdyaXRlciBhbnltb3JlLgorICogYXR0ZW1wdGlu
ZyB0byBjYWxsIHdyaXRlciwgZmx1c2gsIG9yIGZpbmlzaCBvbiBhIHdyaXRlciB0aGF0IGhhcwor
ICogYWxyZWFkeSBoYWQgZmluaXNoIGNhbGxlZCBvbiBpdCB3aWxsIGxlYWQgdG8gdW5wcmVkaWN0
YWJsZSBiZWhhdmlvci4KKyAqIGFmdGVyIGNhbGxpbmcgZmluaXNoLCB5b3Ugc2hvdWxkIGp1c3Qg
Y2FsbCBkZXN0cm95LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl96aXBfd3JpdGVyX2ZpbmlzaCh0
c2ZfemlwX3d0cl90ICp3cml0ZXIpOworCisvKiBjcmVhdGUgYW4gYWRhcHRpdmUgemlwcGluZyBy
ZWFkZXIuICB0aGlzIHJlYWRlciB3aWxsIGJlIGFibGUgdG8gc3dpdGNoCisgKiBiZXR3ZWVuIGRp
ZmZlcmVudCB6aXBwaW5nIHN0cmF0ZWdpZXMgKGluY2x1ZGluZyBubyB6aXBwaW5nKSBhcyB0aGUg
aW5wdXQKKyAqIGRhdGEgaW5kaWNhdGVzLiAgaG93ZXZlciwgaXQgb25seSB3b3JrcyB1bmRlciB0
d28gbm9uLXRyaXZpYWwKKyAqIGNvbmRpdGlvbnM6CisgKiAxKSB0aGUgaW5wdXQgaXMgZm9ybWF0
dGVkIGFjY29yZGluZyB0byB0aGUgc2VyaWFsIHByb3RvY29sIHdpdGgKKyAqICAgIHN0cmVhbSBm
aWxlIGhlYWRlcnMgaW5kaWNhdGluZyBjb21wcmVzc2lvbiBzZXR0aW5ncywgYW5kCisgKiAyKSB5
b3UgY2FsbCB0c2ZfYWRhcHRpdmVfcmVhZGVyX2hpbnRfc3dpdGNoKCkgYXQgdGhlIHJpZ2h0IHRp
bWVzLiAqLwordHNmX2FkcHRfcmRyX3QqIHRzZl9hZGFwdGl2ZV9yZWFkZXJfY3JlYXRlKHRzZl9w
YXJ0aWFsX3JlYWRlcl90IHJlYWRlciwKKwkJCQkJICAgdm9pZCAqcmVhZGVyX2FyZywKKwkJCQkJ
ICAgdWludDMyX3Qgbm96aXBfYnVmX3NpemUsCisJCQkJCSAgIGNvbnN0IHRzZl96aXBfcmRyX2F0
dHJfdCAqYXR0cik7CisKKy8qIGNsb3NlIHRoZSBhZGFwdGl2ZSByZWFkZXIuICBjbGVhbnMgdXAg
ZXZlcnl0aGluZy4gIG5ldmVyIGZhaWxzLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9hZGFwdGl2
ZV9yZWFkZXJfZGVzdHJveSh0c2ZfYWRwdF9yZHJfdCAqcmVhZGVyKTsKKworLyogaW5mb3JtIHRo
ZSByZWFkZXIgdGhhdCB0aGVyZSBtYXkgYmUgYSBmb3JtYXQgY2hhbmdlIGluIHRoZSBuZXh0IGJ5
dGUuCisgKiBpZiB3ZSBhcmUgY3VycmVudGx5IHJlYWRpbmcgd2l0aCBjb21wcmVzc2lvbiB0dXJu
ZWQgb2ZmLCB0aGlzIGhpbnQgdGVsbHMKKyAqIHRoZSByZWFkZXIgdG8gaW5zcGVjdCB0aGUgbmV4
dCBmb3VyIGJ5dGVzIHRvIHNlZSBpZiBpdCBjb250YWlucyBhIGNvZGUKKyAqIGNvcnJlc3BvbmRp
bmcgdG8gdGhlIHN0YXJ0IG9mIGEgWkxJQiBvciBCWklQMiBzZXF1ZW5jZS4gIGlmIHdlIGFyZSB1
c2luZworICogYSBaTElCIG9yIEJaSVAyIHJlYWRlciwgdGhpcyBzcGVjaWZpZXMgdGhhdCBhbiBl
bmQtb2Ytc3RyZWFtIGZyb20gdGhlCisgKiB1bmRlcmx5aW5nIHJlYWRlciBpcyBjb3JyZWN0IChv
dGhlcndpc2UgaXQgaXMgZmxhZ2dlZCBhcyBlcnJvbmVvdXMpLiAqLwordm9pZCAgICAgICAgICAg
IHRzZl9hZGFwdGl2ZV9yZWFkZXJfaGludF9zd2l0Y2godHNmX2FkcHRfcmRyX3QgKnJlYWRlcik7
CisKKy8qIHRlbGxzIHlvdSBob3cgbWFueSBieXRlcyBvZiBkYXRhIGFyZSByZW1haW5pbmcgaW4g
dGhlIGJ1ZmZlci4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfYWRhcHRpdmVfcmVhZGVyX2dldF9y
ZW1haW5pbmcodHNmX2FkcHRfcmRyX3QgKnJlYWRlcik7CisKKy8qIHRoZSBhY3R1YWwgcmVhZCBt
ZXRob2QuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2FkYXB0aXZlX3JlYWRlcl9yZWFkKHZvaWQg
KnJlYWRlciwKKwkJCQkJIHZvaWQgKmRhdGEsCisJCQkJCSB1aW50MzJfdCBsZW4pOworCisvKiBk
ZXRlcm1pbmUgdGhlIHppcCBtb2RlIG9mIHRoZSBnaXZlbiBmaWxlIGJ5IG9wZW5uaW5nIGl0IGFu
ZCByZWFkaW5nIHRoZQorICogZmlyc3QgZm91ciBieXRlcy4gIGlmIHRoZSBtb2RlIHJldHVybmVk
IGlzIFRTRl9aSVBfVU5LTk9XTiB0aGVuIHRoZXJlCisgKiB3YXMgYW4gZXJyb3IuICBpZiB0aGUg
ZXJyb3Igd2FzIFRTRl9FX05PVF9TVVBQT1JURUQgdGhlbiB0aGUgZmlsZSBpcworICogbm90IGlu
IGEgdmFsaWQgVFNGIHN0cmVhbSBmaWxlIGZvcm1hdC4gKi8KK3RzZl96aXBfbW9kZV90ICB0c2Zf
c3RyZWFtX2ZpbGVfZ2V0X21vZGUoY29uc3QgY2hhciAqZmlsZW5hbWUpOworCisvKiBzYW1lIGFz
IGFib3ZlIGV4Y2VwdCB0aGF0IGl0IHJlYWRzIHRoZSBmaXJzdCBmb3VyIGJ5dGVzIGZyb20gdGhl
IGdpdmVuCisgKiBmaWxlIGRlc2NyaXB0b3IuICovCit0c2ZfemlwX21vZGVfdCAgdHNmX3N0cmVh
bV9maWxlX2dldF9tb2RlX2Zyb21fZmQoaW50IGZkKTsKKworLyogb3BlbiBhIGZpbGUgZm9yIHJl
YWRpbmcuICBpZiB0aGUgemlwIHJlYWRlciBhdHRyaWJ1dGVzIGFyZSBOVUxMIHRoZW4gdGhleQor
ICogYXJlIHNldCB0byB0aGUgZGVmYXVsdHMuICBpZiB0aGUgbGltaXRzIGFyZSBOVUxMIHRoZW4g
bm8gbGltaXRzIGFyZSB1c2VkLgorICogaW5zdGFuY2VzIG9mIHRoaXMgdHlwZSBhcmUgbm90IHRo
cmVhZC1zYWZlOyB1c2UgbG9ja2luZyBhcm91bmQgY2FsbHMgaW50bworICogdGhlIG9iamVjdC4g
Ki8KK3RzZl9zdHJlYW1fZmlsZV9pbnB1dF90KgorICAgICAgICAgICAgICAgIHRzZl9zdHJlYW1f
ZmlsZV9pbnB1dF9vcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0
cik7CisKKy8qIG1ha2UgYSBzdHJlYW0gZmlsZSBpbnB1dCBoaWphY2sgYSBmaWxlIGRlc2NyaXB0
b3IuICBpZiB0aGUgemlwIHJlYWRlcgorICogYXR0cmlidXRlcyBhcmUgTlVMTCB0aGVuIHRoZXkg
YXJlIHNldCB0byB0aGUgZGVmYXVsdHMuCisgKgorICogaWYga2VlcCBpcyB0cnVlLCB0aGUgZmls
ZSBkZXNjcmlwdG9yIHdpbGwgYmUgY2xvc2VkIHdoZW4KKyAqIHRzZl9zdHJlYW1fZmlsZV9pbnB1
dF9jbG9zZSgpIGlzIGNhbGxlZC4gIG90aGVyd2lzZSwgdGhlIGZpbGUKKyAqIGRlc2NyaXB0b3Ig
d2lsbCByZW1haW4gb3Blbi4gKi8KK3RzZl9zdHJlYW1fZmlsZV9pbnB1dF90KgorICAgICAgICAg
ICAgICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9mZF9vcGVuKGludCBmZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3Jk
cl9hdHRyX3QgKmF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX2Jvb2xfdCBrZWVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGJ1Zl9zaXplKTsKKworLyogY2xvc2UgYSBmaWxlIHRoYXQg
d2FzIG9wZW5uZWQgZm9yIHJlYWRpbmcuICovCit2b2lkICAgICAgICAgICAgdHNmX3N0cmVhbV9m
aWxlX2lucHV0X2Nsb3NlKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICpmaWxlKTsKKworLyogcmV0
dXJucyB0cnVlIGlmIHRoZSBmaWxlIGFsbG93cyBjb21wcmVzc2lvbi4gIGNvbXByZXNzZWQgZmls
ZXMgaGF2ZSBzb21lCisgKiBsaW1pdGF0aW9ucy4gIGZvciBleGFtcGxlLCBtYXJrICYgc2VlayBp
cyBub3Qgc3VwcG9ydGVkIGZvciBjb21wcmVzc2VkCisgKiBmaWxlcy4gKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfYWxsb3dzX2NvbXByZXNzaW9uKHRzZl9zdHJlYW1f
ZmlsZV9pbnB1dF90ICpmaWxlKTsKKworLyogcmVnaXN0ZXIgYSBjYWxsYmFjayB0aGF0IHdpbGwg
Z2V0IGNhbGxlZCBldmVyeSB0aW1lIHRoZSBpbnB1dCBtYW5hZ2VyCisgKiBlbmNvdW50ZXJzIGEg
bmV3IHR5cGUuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X3JlZ2lz
dGVyX3R5cGVfY2JhY2sodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
Y2JhY2tfdCBjYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisvKiB1bnJlZ2lzdGVyIGFsbCB0eXBlIGNh
bGxiYWNrcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBmdW5jdGlvbiBwb2ludGVyCisgKiBhbmQgdm9p
ZCogYXJndW1lbnQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X3Vu
cmVnaXN0ZXJfdHlwZV9jYmFjayh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl90eXBlX2NiYWNrX3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisvKiByZWFkIGEgYnVmZmVy
IGZyb20gYSBmaWxlIHRoYXQgd2FzIG9wZW5uZWQgZm9yIHJlYWRpbmcuICovCit0c2ZfYnVmZmVy
X3QqICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmZpbGUpOworCisvKiBnZXQgdGhlIG1hcmsgb2YgdGhlIHRoaW5nIHlvdSBhcmUgYWJvdXQgdG8g
cmVhZC4gIHRoZSBtYXJrIGlzIHNvbWV0aGluZworICogdGhhdCB5b3UgZ2V0IHRvIGFsbG9jYXRl
LiAgYnV0IHlvdSBtdXN0IHRyZWF0IGl0IGFzIGFuIG9wYXF1ZSEKKyAqCisgKiBub3RlIHRoYXQg
bWFyayAmIHNlZWsgaXMgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXMgdGhhdCBhcmUgY29tcHJlc3Nl
ZC4KKyAqIGl0IGlzIGFsc28gbm90IHN1cHBvcnRlZCBpZiB0aGUgdW5kZXJseWluZyBmaWxlIGRl
c2NyaXB0b3IgZG9lcyBub3QKKyAqIHN1cHBvcnQgbHNlZWsoKS4gIGlmIHRoZSBmaWxlIGlzIGNv
bXByZXNzZWQsIHlvdSB3aWxsIGdldCBhCisgKiBUU0ZfRV9OT1RfU1VQUE9SVEVEIGVycm9yLiAg
aXQgaXMgcGVyZmVjdGx5IHNhZmUgKGFuZCBmYXN0KSB0byBkZXRlcm1pbmUKKyAqIGlmIGEgZmls
ZSBpcyBjb21wcmVzc2VkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIHlvdSBjYW4gb2YgY291
cnNlCisgKiBhbHNvIHVzZSB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfaXNfY29tcHJlc3NlZCgpLiAg
aWYgdGhlIGZpbGUgZG9lcyBub3QKKyAqIHN1cHBvcnQgbHNlZWsoKSwgeW91IHdpbGwgZ2V0IHNv
bWUgc29ydCBvZiBzeXN0ZW0gZXJyb3IsIHdoaWNoIG1heQorICogZGlmZmVyIGRlcGVuZGluZyBv
biBob3cgd2VsbCB5b3VyIHN5c3RlbSBjb21wbGllcyB0byBQT1NJWC4gOi0pICovCit0c2ZfYm9v
bF90ICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X2dldF9tYXJrKHRzZl9zdHJlYW1fZmlsZV9p
bnB1dF90ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2Zfc3RyZWFtX2ZpbGVfbWFya190ICptYXJrKTsKKworLyogc2VlayB0byBwcmV2aW91
c2x5IGFjcXVpcmVkIG1hcmsuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX2lu
cHV0X3NlZWsodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHNmX3N0cmVhbV9maWxlX21hcmtfdCAq
bWFyayk7CisKKy8qIG9wZW4gYSBmaWxlIGZvciB3cml0aW5nLiAgaWYgdGhlIHppcCBhdHRyaWJ1
dGVzIGFyZSBOVUxMLCB0aGUgZGVmYXVsdAorICogb25lcyB3aWxsIGJlIHVzZWQgKHdoaWNoIG1l
YW5zIG5vIGNvbXByZXNzaW9uKS4gIGluc3RhbmNlcyBvZiB0aGlzIHR5cGUKKyAqIGFyZSBub3Qg
dGhyZWFkLXNhZmU7IHVzZSBsb2NraW5nIHdoZW4gY2FsbGluZyBpdHMgbWV0aG9kcy4gKi8KK3Rz
Zl9zdHJlYW1fZmlsZV9vdXRwdXRfdCoKKyAgICAgICAgICAgICAgICB0c2Zfc3RyZWFtX2ZpbGVf
b3V0cHV0X29wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgYXBwZW5kLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKmF0dHIpOwor
CisvKiBtYWtlIGEgc3RyZWFtIGZpbGUgb3V0cHV0IGhpamFjayBhIGZpbGUgZGVzY3JpcHRvci4g
IGlmIGtlZXAgaXMgdHJ1ZSwgdGhlCisgKiBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQg
d2hlbiB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2Nsb3NlKCkgaXMKKyAqIGNhbGxlZC4gIG90aGVy
d2lzZSwgaXQgd2lsbCByZW1haW4gb3Blbi4gKi8KK3RzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCoK
KyAgICAgICAgICAgICAgICB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2ZkX29wZW4oaW50IGZkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3d0
cl9hdHRyX3QgKmF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRzZl9ib29sX3Qga2VlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgYnVmX3NpemUpOworCisvKiBmbHVzaCBhbmQgY2xvc2Ug
YSBzdHJlYW0gZmlsZSBvdXRwdXQuICByZXR1cm5zIHRzZl90cnVlIGlmIHRoZSBmbHVzaGluZwor
ICogd2VudCBPSyBhbmQgdHNmX2ZhbHNlIGlmIGl0IGRpZG4ndC4gIHRoZSBmaWxlIGdldHMgY2xv
c2VkIGVpdGhlciB3YXksCisgKiB0aG91Z2guICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVh
bV9maWxlX291dHB1dF9jbG9zZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKmZpbGUpOworCisv
KiBmbHVzaCB0aGUgc3RyZWFtIGZpbGUgb3V0cHV0LiAgaWYgdGhpcyBmYWlscywgdGhlIHN0cmVh
bSBiZWNvbWVzIGNvcnJ1cHQKKyAqIGF0IHRoZSBwb2ludCBvZiBmYWlsdXJlIGFuZCBzaG91bGQg
bm90IGJlIHVzZWQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX291dHB1dF9m
bHVzaCh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKmZpbGUpOworCisvKiB3cml0ZSBzb21ldGhp
bmcgaW50byB0aGUgZmlsZS4gIGlmIHRoaXMgZmFpbHMsIHRoZSBzdHJlYW0gYmVjb21lcyBjb3Jy
dXB0CisgKiBhdCB0aGUgcG9pbnQgb2YgZmFpbHVyZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiAq
LwordHNmX2Jvb2xfdCAgICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfd3JpdGUodHNmX3N0cmVh
bV9maWxlX291dHB1dF90ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIpOworCisvKiBvcGVuIGEgZmlsZXN5c3Rl
bSBkYXRhYmFzZS4gIGEgZmlsZXN5c3RlbSBkYXRhYmFzZSBhbGxvd3MgZm9yIGtleS12YWx1ZQor
ICogc3RvcmFnZSBvcHRpbWl6ZWQgZm9yIHN0b3JpbmcgaHVnZSB2YWx1ZXMuIGFkZGl0aW9uYWxs
eSwgYSBmaWxlc3lzdGVtCisgKiBkYXRhYmFzZSBhbGxvd3MgYSB2YWx1ZSB0byBjb25zaXN0IG9m
IGEgc2VxdWVuY2Ugb2YgYnVmZmVycyAoaS5lLiBhCisgKiBzdHJlYW0pLCBhbmQgaXQgaGFzIHN1
cHBvcnQgZm9yIGNvbm5lY3RpbmcgdG8gYSByZW1vdGUgZGF0YWJhc2UuCisgKgorICogb25lIG9m
IHRoZSBtYWluIGZlYXR1cmVzIG9mIEZTREIgaXMgaXRzIGV4Y2VsbGVudCBjb25jdXJyZW5jeSBz
dXBwb3J0LgorICogZXZlbiBpZiBhbiBGU0RCIGlzIG9wZW5lZCBieSBtdWx0aXBsZSBkaWZmZXJl
bnQgcHJvY2Vzc2VzLCBvciBtdWx0aXBsZQorICogdGhyZWFkcyBpbiBhIHNpbmdsZSBwcm9jZXNz
LCBvciBtdWx0aXBsZSB0aHJlYWRzIHNoYXJlIHRoZSBzYW1lCisgKiB0c2ZfZnNkYl90KiBoYW5k
bGUsIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgZ3VhcmFudGVlZDoKKyAqCisgKiAtIHRz
Zl9mc2RiX3B1dCgpIGlzIG5vdCB2aXNpYmxlIHVubGVzcyB0aGVyZSBpcyBhIHN1YnNlcXVlbnQK
KyAqICAgdHNmX2ZzZGJfb3V0X2NvbW1pdCgpLgorICoKKyAqIC0gaWYgbXVsdGlwbGUgdHNmX2Zz
ZGJfb3V0X2NvbW1pdCgpJ3MgYXJlIHJ1biB1c2luZyB0aGUgc2FtZSBrZXksCisgKiAgIHRoZW4g
YW55IHRzZl9mc2RiX2dldCgpJ3MgYmVoYXZlIGFzIGlmIHRoZSBvbmx5IHRzZl9mc2RiX3B1dCgp
CisgKiAgIGFuZCB0c2ZfZnNkYl9vdXRfY29tbWl0KCkgdGhhdCBoYWQgZXZlciBiZWVuIGV4ZWN1
dGVkIHdhcyB0aGUgbGFzdAorICogICBvbmUgYXQgdGhlIHRpbWUgb2YgdGhlIHRzZl9mc2RiX2dl
dCgpLgorICoKKyAqIC0gdHNmX2ZzZGJfZ2V0KCkgcmV0dXJucyBhIHN0cmVhbSB0aGF0IGRvZXMg
bm90IGNoYW5nZSBldmVuIGlmCisgKiAgIG5ldyB0c2ZfZnNkYl9wdXQoKS90c2ZfZnNkYl9vdXRf
d3JpdGUoKS90c2ZfZnNkYl9vdXRfY29tbWl0KCkgYXJlCisgKiAgIGV4ZWN1dGVkIG9uIHRoZSBz
YW1lIGtleS4KKyAqCisgKiAtIHRzZl9mc2RiX291dF9hYm9ydCgpIG1ha2VzIGl0IGFwcGVhciBh
cyBpZiB0aGUgdHNmX2ZzZGJfcHV0KCkgYW5kCisgKiAgIGFueSBzdWJzZXF1ZW50IHRzZl9mc2Ri
X291dF93cml0ZSgpJ3MgbmV2ZXIgaGFwcGVuZWQuCisgKgorICogLSBpZiB0c2ZfZnNkYl9vdXRf
Y29tbWl0KCkgZmFpbHMgaXQgaXMgbm8gZGlmZmVyZW50IHRoYW4gaWYgeW91IGhhZAorICogICBj
YWxsZWQgdHNmX2ZzZGJfb3V0X2Fib3J0KCkuCisgKgorICogVGhlc2UgcHJvcGVydGllcyBhcmUg
Z3VhcmFudGVlZCBldmVuIHdoZW4gYWNjZXNzaW5nIHRoZSBkYXRhYmFzZQorICogdXNpbmcgZGlm
ZmVyZW50IHRzZl9mc2RiX3QqIGhhbmRsZXMgKGV2ZW4gZnJvbSBzZXBhcmF0ZSBwcm9jZXNzZXMp
LAorICogc28gbG9uZyBhcyB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtIHN1cHBvcnRzIHRoZSBh
dG9taWNpdHkKKyAqIGd1YXJhbnRlZXMgb2Ygb3BlbihPX0VYQ0wpIGFuZCByZW5hbWUoKS4KKyAq
CisgKiBUaGUgbWVtb3J5IG1hbmFnZW1lbnQgaXMgc3VjaCB0aGF0IHRoZSBGU0RCIEFQSSBuZXZl
ciBjbGFpbXMKKyAqIG93bmVyc2hpcCBvZiBhbnkgb2JqZWN0cywgYnV0IHRoZSB0c2ZfZnNkYl90
KiBtdXN0IGJlIGtlcHQgYWxpdmUgc28KKyAqIGxvbmcgYXMgdGhlcmUgYXJlIHRzZl9mc2RiX2lu
X3QqIG9yIHRzZl9mc2RiX291dF90KiB0aGF0IGhhdmUgYmVlbgorICogY3JlYXRlZCBmcm9tIGl0
LiAqLwordHNmX2ZzZGJfdCogICAgIHRzZl9mc2RiX29wZW5fbG9jYWwoY29uc3QgY2hhciAqZGly
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAq
bGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3ppcF9yZHJf
YXR0cl90ICp6aXBfcmRyX2F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfemlwX3d0cl9hdHRyX3QgKnppcF93dHJfYXR0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgdXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCB0cnVuY2F0ZSk7CisKKy8qIG9wZW4gYSByZW1vdGUg
RlNEQiBkYXRhYmFzZSB1c2luZyBhIGhvc3QgYW5kIHBvcnQuICovCit0c2ZfZnNkYl90KiAgICAg
dHNmX2ZzZGJfb3Blbl9yZW1vdGUoY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfemlwX3Jkcl9hdHRyX3QgKnppcF9yZHJfYXR0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnppcF93dHJf
YXR0cik7CisKKy8qIGNsb3NlIGEgZmlsZXN5c3RlbSBkYXRhYmFzZS4gKi8KK3ZvaWQgICAgICAg
ICAgICB0c2ZfZnNkYl9jbG9zZSh0c2ZfZnNkYl90ICpmc2RiKTsKKworLyogb3BlbiBhIHN0cmVh
bSB0byB3cml0ZSBhIHNlcXVlbmNlIG9mIHZhbHVlcyBhdCBhIGtleSBpbiB0aGUgZGF0YWJhc2Uu
ICovCit0c2ZfZnNkYl9vdXRfdCogdHNmX2ZzZGJfcHV0KHRzZl9mc2RiX3QgKmZzZGIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqa2V5KTsKKworLyogb3BlbiBh
IHN0cmVhbSB0byByZWFkIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIGF0IGEga2V5IGluIHRoZSBkYXRh
YmFzZS4gKi8KK3RzZl9mc2RiX2luX3QqICB0c2ZfZnNkYl9nZXQodHNmX2ZzZGJfdCAqZnNkYiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICprZXkpOworCisvKiBk
ZWxldGUgYW4gZW50cnkgZnJvbSB0aGUgZGF0YWJhc2UuICovCit0c2ZfYm9vbF90ICAgICAgdHNm
X2ZzZGJfcm0odHNmX2ZzZGJfdCAqZnNkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfYnVmZmVyX3QgKmtleSk7CisKKy8qIGNsb3NlIGEgZmlsZXN5c3RlbSBkYXRhYmFzZSBpbnB1
dCBzdHJlYW0uICovCit2b2lkICAgICAgICAgICAgdHNmX2ZzZGJfaW5fY2xvc2UodHNmX2ZzZGJf
aW5fdCAqaW4pOworCisvKiByZWFkIGEgYnVmZmVyIGZyb20gYSBmaWxlc3lzdGVtIGRhdGFiYXNl
IGlucHV0IHN0cmVhbS4gKi8KK3RzZl9idWZmZXJfdCogICB0c2ZfZnNkYl9pbl9yZWFkKHRzZl9m
c2RiX2luX3QgKmluKTsKKworLyogY29tbWl0IGEgZmlsZXN5c3RlbSBkYXRhYmFzZSBvdXRwdXQg
c3RyZWFtLCBhbmQgZGVzdHJveSB0aGUgc3RyZWFtLgorICogaWYgdGhpcyBleHBlcmllbmNlcyBh
biBlcnJvciwgdGhlbiBpdCBtZWFucyB0aGF0IHRoZSBzdHJlYW0gaXMKKyAqIGF1dG9tYXRpY2Fs
bHkgYWJvcnRlZC4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfZnNkYl9vdXRfY29tbWl0KHRzZl9m
c2RiX291dF90ICpvdXQpOworCisvKiBhYm9ydCBhIGZpbGVzeXN0ZW0gZGF0YWJhc2Ugb3V0cHV0
IHN0cmVhbSwgYW5kIGRlc3Ryb3kgdGhlIHN0cmVhbS4gKi8KK3ZvaWQgICAgICAgICAgICB0c2Zf
ZnNkYl9vdXRfYWJvcnQodHNmX2ZzZGJfb3V0X3QgKm91dCk7CisKKy8qIHdyaXRlIHRvIGEgZmls
ZXN5c3RlbSBkYXRhYmFzZSBvdXRwdXQgc3RyZWFtLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9m
c2RiX291dF93cml0ZSh0c2ZfZnNkYl9vdXRfdCAqb3V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1Zik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
fTsKKyNlbmRpZgorCisjZW5kaWYKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0y
L3dhc20vdHNmL3RzZl9hZGFwdGl2ZV9yZWFkZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2FkYXB0aXZlX3JlYWRlci5jCShub25leGlz
dGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYWRhcHRp
dmVfcmVhZGVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMTEgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0c2Zf
aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2Zfc2VyaWFsX3Byb3RvY29sLmgiCisKKyNpZmRlZiBI
QVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfQlpJUDIK
KyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKKyNkZWZpbmUgQ3oocmVhZGVyKSAoKHpfc3Ry
ZWFtKikoKHJlYWRlciktPnN0cmVhbSkpCisjZGVmaW5lIENieihyZWFkZXIpICgoYnpfc3RyZWFt
KikoKHJlYWRlciktPnN0cmVhbSkpCisKK3N0YXRpYyB0c2ZfYm9vbF90IHRlYXJfZG93bl9tb2Rl
KHRzZl9hZHB0X3Jkcl90ICpyZWFkZXIsCisJCQkJIHVpbnQ4X3QgKipzcGlsbG92ZXIsCisJCQkJ
IHVpbnQzMl90ICpzcGlsbG92ZXJfbGVuKSB7CisgICAgdHNmX2Jvb2xfdCBzdGlsbG9rPXRzZl90
cnVlOworICAgIGlmIChyZWFkZXItPm1vZGU9PVRTRl9aSVBfWkxJQikgeworI2lmZGVmIEhBVkVf
WkxJQgorCWluZmxhdGVFbmQoQ3oocmVhZGVyKSk7CisjZW5kaWYKKyAgICB9IGVsc2UgaWYgKHJl
YWRlci0+bW9kZT09VFNGX1pJUF9CWklQMikgeworI2lmZGVmIEhBVkVfQlpJUDIKKwlCWjJfYnpE
ZWNvbXByZXNzRW5kKENieihyZWFkZXIpKTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAocmVhZGVy
LT5tb2RlPT1UU0ZfWklQX1pMSUIgfHwKKwlyZWFkZXItPm1vZGU9PVRTRl9aSVBfQlpJUDIpIHsK
KwlmcmVlKHJlYWRlci0+c3RyZWFtKTsKKwlpZiAoc3BpbGxvdmVyIT1OVUxMICYmIHNwaWxsb3Zl
cl9sZW4hPU5VTEwpIHsKKwkgICAgKnNwaWxsb3Zlcj1tYWxsb2MocmVhZGVyLT5hYnN0cmFjdC5h
dmFpbF9pbik7CisJICAgIGlmICgqc3BpbGxvdmVyPT1OVUxMKSB7CisJCXRzZl9zZXRfZXJybm8o
IkNvdWxkIG5vdCBhbGxvY2F0ZSBzcGlsbG92ZXIgYnVmZmVyIik7CisJCXN0aWxsb2s9dHNmX2Zh
bHNlOworCSAgICB9IGVsc2UgeworCQkqc3BpbGxvdmVyX2xlbj1yZWFkZXItPmFic3RyYWN0LmF2
YWlsX2luOworCQltZW1jcHkoKnNwaWxsb3ZlcixyZWFkZXItPmFic3RyYWN0Lm5leHRfaW4sKnNw
aWxsb3Zlcl9sZW4pOworCSAgICB9CisJfQorICAgIH0gZWxzZSBpZiAocmVhZGVyLT5tb2RlPT1U
U0ZfWklQX05PTkUpIHsKKwlpZiAoc3BpbGxvdmVyIT1OVUxMICYmIHNwaWxsb3Zlcl9sZW4hPU5V
TEwpIHsKKwkgICAgKnNwaWxsb3Zlcj1tYWxsb2MocmVhZGVyLT5wdXRpLXJlYWRlci0+Z2V0aSk7
CisJICAgIGlmICgqc3BpbGxvdmVyPT1OVUxMKSB7CisJCXRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCBhbGxvY2F0ZSBzcGlsbG92ZXIgYnVmZmVyIik7CisJCXN0aWxsb2s9dHNmX2ZhbHNlOworCSAg
ICB9IGVsc2UgeworCQkqc3BpbGxvdmVyX2xlbj1yZWFkZXItPnB1dGktcmVhZGVyLT5nZXRpOwor
CQltZW1jcHkoKnNwaWxsb3ZlcixyZWFkZXItPmJ1ZityZWFkZXItPmdldGksKnNwaWxsb3Zlcl9s
ZW4pOworCSAgICB9CisJfQorICAgIH0KKyAgICBpZiAocmVhZGVyLT5tb2RlIT1UU0ZfWklQX1VO
S05PV04pIHsKKwlmcmVlKHJlYWRlci0+YnVmKTsKKyAgICB9CisgICAgcmVhZGVyLT5zdHJlYW09
TlVMTDsKKyAgICByZWFkZXItPmJ1Zj1OVUxMOworICAgIHJlYWRlci0+YnVmX3NpemU9MDsKKyAg
ICByZWFkZXItPm1vZGU9VFNGX1pJUF9VTktOT1dOOworICAgIHJldHVybiBzdGlsbG9rOworfQor
CitzdGF0aWMgdHNmX2Jvb2xfdCB0ZWFyX3RvX25vbmUodHNmX2FkcHRfcmRyX3QgKnJlYWRlcikg
eworICAgIHRzZl9hc3NlcnQocmVhZGVyLT5tb2RlPT1UU0ZfWklQX1pMSUIgfHwKKwkgICAgICAg
cmVhZGVyLT5tb2RlPT1UU0ZfWklQX0JaSVAyKTsKKyAgICBpZiAocmVhZGVyLT5tb2RlPT1UU0Zf
WklQX1pMSUIpIHsKKyNpZmRlZiBIQVZFX1pMSUIKKwlpbmZsYXRlRW5kKEN6KHJlYWRlcikpOwor
I2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZmRlZiBIQVZFX0JaSVAyCisJQloyX2J6RGVjb21wcmVz
c0VuZChDYnoocmVhZGVyKSk7CisjZW5kaWYKKyAgICB9CisgICAgZnJlZShyZWFkZXItPnN0cmVh
bSk7CisgICAgcmVhZGVyLT5tb2RlPVRTRl9aSVBfVU5LTk9XTjsKKyAgICBpZiAocmVhZGVyLT5u
b3ppcF9idWZfc2l6ZT09cmVhZGVyLT5idWZfc2l6ZSkgeworCXJlYWRlci0+Z2V0aT1yZWFkZXIt
PmFic3RyYWN0Lm5leHRfaW4tcmVhZGVyLT5idWY7CisJcmVhZGVyLT5wdXRpPXJlYWRlci0+Z2V0
aStyZWFkZXItPmFic3RyYWN0LmF2YWlsX2luOworICAgIH0gZWxzZSB7CisJdWludDhfdCAqYnVm
OworCXJlYWRlci0+YnVmX3NpemU9dHNmX21heChyZWFkZXItPm5vemlwX2J1Zl9zaXplLAorCQkJ
CSByZWFkZXItPmFic3RyYWN0LmF2YWlsX2luKTsKKwlidWY9bWFsbG9jKHJlYWRlci0+YnVmX3Np
emUpOworCWlmIChidWY9PU5VTEwpIHsKKwkgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFs
bG9jYXRlIGJ1ZmZlciBpbiB0ZWFyX3RvX25vbmUoKSBpbiAiCisJCQkgICJ0c2ZfYWRhcHRpdmVf
cmVhZGVyLmMiKTsKKwkgICAgZnJlZShyZWFkZXItPmJ1Zik7CisJICAgIC8qIG9oIG1hbiwgdGhp
cyBsZWF2ZXMgdGhlIHJlYWRlciBpbiBhIGZsYWt5IHN0YXRlICovCisJICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisJfQorCW1lbWNweShidWYsCisJICAgICAgIHJlYWRlci0+YWJzdHJhY3QubmV4dF9p
biwKKwkgICAgICAgcmVhZGVyLT5hYnN0cmFjdC5hdmFpbF9pbik7CisJZnJlZShyZWFkZXItPmJ1
Zik7CisJcmVhZGVyLT5nZXRpPTA7CisJcmVhZGVyLT5wdXRpPXJlYWRlci0+YWJzdHJhY3QuYXZh
aWxfaW47CisJcmVhZGVyLT5idWY9YnVmOworICAgIH0KKyAgICByZWFkZXItPm1vZGU9VFNGX1pJ
UF9OT05FOworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIHRzZl9ib29sX3Qgc2Vs
ZWN0X21vZGUodHNmX2FkcHRfcmRyX3QgKnJlYWRlciwKKwkJCSAgICAgIHVpbnQ4X3QgKnNwaWxs
b3ZlciwKKwkJCSAgICAgIHVpbnQzMl90IHNwaWxsb3Zlcl9sZW4sCisJCQkgICAgICB0c2ZfYm9v
bF90IGZyZWVfc3BpbGxvdmVyKSB7CisgICAgdWludDhfdCBtYWdpY1s0XTsKKyAgICB1aW50MzJf
dCB0b2NvcHk9dHNmX21pbig0LHNwaWxsb3Zlcl9sZW4pOworICAgIHZvaWQgKnRvZnJlZTsKKyAg
ICBpZiAoZnJlZV9zcGlsbG92ZXIgJiYgc3BpbGxvdmVyX2xlbj4wKSB7CisJdG9mcmVlPXNwaWxs
b3ZlcjsKKyAgICB9IGVsc2UgeworCXRvZnJlZT1OVUxMOworICAgIH0KKyAgICBtZW1jcHkobWFn
aWMsc3BpbGxvdmVyLHRvY29weSk7CisgICAgc3BpbGxvdmVyKz10b2NvcHk7CisgICAgc3BpbGxv
dmVyX2xlbi09dG9jb3B5OworICAgIGlmICh0b2NvcHk8NCkgeworCXRzZl9hc3NlcnQoc3BpbGxv
dmVyX2xlbj09MCk7CisJaWYgKCF0c2ZfZnVsbF9yZWFkX29mX3BhcnRpYWwocmVhZGVyLT5yZWFk
ZXIscmVhZGVyLT5yZWFkZXJfYXJnLAorCQkJCSAgICAgIG1hZ2ljK3RvY29weSw0LXRvY29weSkp
IHsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCSAgICByZXR1cm4gdHNm
X2ZhbHNlOworCX0KKyAgICB9CisgICAgaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX01BR0lDX0NP
REUsVFNGX1NQX01BR0lDX0xFTikpIHsKKwlyZWFkZXItPmJ1Zl9zaXplPXRzZl9tYXgocmVhZGVy
LT5ub3ppcF9idWZfc2l6ZSwKKwkJCQkgc3BpbGxvdmVyX2xlbitUU0ZfU1BfTUFHSUNfTEVOKTsK
KwlyZWFkZXItPmJ1Zj1tYWxsb2MocmVhZGVyLT5idWZfc2l6ZSk7CisJaWYgKHJlYWRlci0+YnVm
PT1OVUxMKSB7CisJICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBidWZmZXIi
KTsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCSAgICByZXR1cm4gdHNm
X2ZhbHNlOworCX0KKwltZW1jcHkocmVhZGVyLT5idWYsc3BpbGxvdmVyLHNwaWxsb3Zlcl9sZW4p
OworCW1lbWNweShyZWFkZXItPmJ1ZitzcGlsbG92ZXJfbGVuLFRTRl9TUF9NQUdJQ19DT0RFLFRT
Rl9TUF9NQUdJQ19MRU4pOworCXJlYWRlci0+cHV0aT1zcGlsbG92ZXJfbGVuK1RTRl9TUF9NQUdJ
Q19MRU47CisJcmVhZGVyLT5nZXRpPTA7CisJaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUp
OworCXJlYWRlci0+bW9kZT1UU0ZfWklQX05PTkU7CisgICAgfSBlbHNlIGlmICghbWVtY21wKG1h
Z2ljLFRTRl9TUF9CWklQMl9NQUdJQ19DT0RFLFRTRl9TUF9NQUdJQ19MRU4pIHx8CisJICAgICAg
ICFtZW1jbXAobWFnaWMsVFNGX1NQX1pMSUJfTUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkg
eworCWludCByZXM7CisJCisJaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX1pMSUJfTUFHSUNfQ09E
RSxUU0ZfU1BfTUFHSUNfTEVOKSkgeworCSAgICByZWFkZXItPmJ1Zl9zaXplPXRzZl9tYXgocmVh
ZGVyLT5hdHRyLnouYnVmX3NpemUsc3BpbGxvdmVyX2xlbik7CisJfSBlbHNlIHsKKwkgICAgcmVh
ZGVyLT5idWZfc2l6ZT10c2ZfbWF4KHJlYWRlci0+YXR0ci5iLmJ1Zl9zaXplLHNwaWxsb3Zlcl9s
ZW4pOworCX0KKworCXJlYWRlci0+YnVmPW1hbGxvYyhyZWFkZXItPmJ1Zl9zaXplKTsKKwlpZiAo
cmVhZGVyLT5idWY9PU5VTEwpIHsKKwkgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFsbG9j
YXRlIGJ1ZmZlciIpOworCSAgICBpZiAodG9mcmVlIT1OVUxMKSBmcmVlKHRvZnJlZSk7CisJICAg
IHJldHVybiB0c2ZfZmFsc2U7CisJfQorCQorCW1lbWNweShyZWFkZXItPmJ1ZixzcGlsbG92ZXIs
c3BpbGxvdmVyX2xlbik7CisJaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCQorCXJl
YWRlci0+YWJzdHJhY3QubmV4dF9pbj1yZWFkZXItPmJ1ZjsKKwlyZWFkZXItPmFic3RyYWN0LmF2
YWlsX2luPXNwaWxsb3Zlcl9sZW47CisJCisJaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX1pMSUJf
TUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkgeworCSAgICBpZiAoIXJlYWRlci0+YXR0ci56
LmFsbG93KSB7CisJCXRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisJCQkgICAgICAi
VGhlIHN0cmVhbSBpcyBjb21wcmVzc2VkIHVzaW5nIFpMaWIsIGJ1dCAiCisJCQkgICAgICAidGhl
IGdpdmVuIGF0dHJpYnV0ZXMgc3BlY2lmeSB0aGF0ICIKKwkJCSAgICAgICJaTGliIGlzIG5vdCBh
bGxvd2VkIik7CisJCWlmICh0b2ZyZWUhPU5VTEwpIGZyZWUodG9mcmVlKTsKKwkJZnJlZShyZWFk
ZXItPmJ1Zik7CisJCXJldHVybiB0c2ZfZmFsc2U7CisJICAgIH0KKyNpZmRlZiBIQVZFX1pMSUIK
KwkgICAgcmVhZGVyLT5zdHJlYW09bWFsbG9jKHNpemVvZih6X3N0cmVhbSkpOworCSAgICBpZiAo
cmVhZGVyLT5zdHJlYW09PU5VTEwpIHsKKwkJdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxv
YyB6X3N0cmVhbSIpOworCQlmcmVlKHJlYWRlci0+YnVmKTsKKwkJcmV0dXJuIHRzZl9mYWxzZTsK
KwkgICAgfQorCSAgICAKKwkgICAgQ3oocmVhZGVyKS0+emFsbG9jPU5VTEw7CisJICAgIEN6KHJl
YWRlciktPnpmcmVlPU5VTEw7CisJICAgIEN6KHJlYWRlciktPm9wYXF1ZT1OVUxMOworCSAgICAK
KwkgICAgaWYgKHJlYWRlci0+YXR0ci56LmFkdmFuY2VkX2luaXQpIHsKKwkJcmVzPWluZmxhdGVJ
bml0MihDeihyZWFkZXIpLAorCQkJCSByZWFkZXItPmF0dHIuei53aW5kb3dCaXRzKTsKKwkgICAg
fSBlbHNlIHsKKwkJcmVzPWluZmxhdGVJbml0KEN6KHJlYWRlcikpOworCSAgICB9CisJICAgIGlm
IChyZXMhPVpfT0spIHsKKwkJdHNmX3NldF96bGliX2Vycm9yKHJlcyxDeihyZWFkZXIpLT5tc2cs
CisJCQkJICAgIlRyeWluZyB0byBpbml0aWFsaXplIGluZmxhdGlvbiBpbiBaTGliIik7CisJCWZy
ZWUoQ3oocmVhZGVyKSk7CisJCWZyZWUocmVhZGVyLT5idWYpOworCQlyZXR1cm4gdHNmX2ZhbHNl
OworCSAgICB9CisJICAgIHJlYWRlci0+bW9kZT1UU0ZfWklQX1pMSUI7CisjZWxzZQorCSAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisJCQkgICJUU0ZfWklQX1pMSUIgaXMg
bm90IHN1cHBvcnRlZCBieSAiCisJCQkgICJ0c2ZfemlwX3JlYWRlcl9jcmVhdGUoKSBiZWNhdXNl
IFpMaWIgc3VwcG9ydCAiCisJCQkgICJ3YXMgbm90IGNvbmZpZ3VyZWQgaW50byB0aGUgVFNGIGxp
YnJhcnkiKTsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCSAgICBmcmVl
KHJlYWRlci0+YnVmKTsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyNlbmRpZgorCX0gZWxzZSB7
CisJICAgIGlmICghcmVhZGVyLT5hdHRyLmIuYWxsb3cpIHsKKwkJdHNmX3NldF9lcnJvcihUU0Zf
RV9QQVJTRV9FUlJPUiwKKwkJCSAgICAgICJUaGUgc3RyZWFtIGlzIGNvbXByZXNzZWQgdXNpbmcg
bGliYnppcDIsIGJ1dCAiCisJCQkgICAgICAidGhlIGdpdmVuIGF0dHJpYnV0ZXMgc3BlY2lmeSB0
aGF0ICIKKwkJCSAgICAgICJsaWJiemlwMiBpcyBub3QgYWxsb3dlZCIpOworCQlpZiAodG9mcmVl
IT1OVUxMKSBmcmVlKHRvZnJlZSk7CisJCWZyZWUocmVhZGVyLT5idWYpOworCQlyZXR1cm4gdHNm
X2ZhbHNlOworCSAgICB9CisjaWZkZWYgSEFWRV9CWklQMgorICAgICAgICAgICAgcmVhZGVyLT5z
dHJlYW09bWFsbG9jKHNpemVvZihiel9zdHJlYW0pKTsKKyAgICAgICAgICAgIGlmIChyZWFkZXIt
PnN0cmVhbT09TlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCBtYWxsb2MgYnpfc3RyZWFtIik7CisJCWZyZWUocmVhZGVyLT5idWYpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIENieihyZWFkZXIpLT5iemFsbG9jPU5VTEw7CisgICAgICAgICAgICBDYnoocmVhZGVy
KS0+YnpmcmVlPU5VTEw7CisgICAgICAgICAgICBDYnoocmVhZGVyKS0+b3BhcXVlPU5VTEw7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHJlcz1CWjJfYnpEZWNvbXByZXNzSW5pdChDYnoocmVh
ZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXItPmF0dHIu
Yi52ZXJib3NpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVy
LT5hdHRyLmIuc21hbGwpOworICAgICAgICAgICAgaWYgKHJlcyE9QlpfT0spIHsKKyAgICAgICAg
ICAgICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKHJlcywKKyAgICAgICAgICAgICAgICAgICAg
IlRyeWluZyB0byBpbml0aWFsaXplIGRlY29tcHJlc3Npb24gaW4gbGliYnppcDIiKTsKKyAgICAg
ICAgICAgICAgICBmcmVlKENieihyZWFkZXIpKTsKKwkJZnJlZShyZWFkZXItPmJ1Zik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorCSAgICByZWFkZXItPm1vZGU9VFNGX1pJUF9CWklQMjsKKyNlbHNlCisgICAgICAgICAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJUU0ZfWklQX0JaSVAyIGlzIG5vdCBzdXBwb3J0ZWQgYnkgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAidHNmX3ppcF9yZWFkZXJfY3JlYXRlKCkgYmVjYXVzZSBsaWJiemlwMiAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHdhcyBub3QgY29uZmlndXJlZCBpbnRv
IHRoZSBUU0YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIpOworCSAgICBm
cmVlKHJlYWRlci0+YnVmKTsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyNlbmRpZgorCX0KKyAgICB9IGVsc2Ugewor
CWlmICh0b2ZyZWUhPU5VTEwpIGZyZWUodG9mcmVlKTsKKwl0c2Zfc2V0X2Vycm9yKFRTRl9FX1BB
UlNFX0VSUk9SLAorCQkgICAgICAiTm90IGEgdmFsaWQgbWFnaWMgY29kZSBmb3IgYW55IFRTRiBz
dHJlYW0gZmlsZSBmb3JtYXQiKTsKKwlyZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90IHRlYXJfZG93bl9hbmRfc2VsZWN0
X21vZGUodHNmX2FkcHRfcmRyX3QgKnJlYWRlcikgeworICAgIHVpbnQ4X3QgKnNwaWxsb3ZlcjsK
KyAgICB1aW50MzJfdCBzcGlsbG92ZXJfbGVuOworICAgIHJldHVybiB0ZWFyX2Rvd25fbW9kZShy
ZWFkZXIsJnNwaWxsb3Zlciwmc3BpbGxvdmVyX2xlbikKKwkmJiBzZWxlY3RfbW9kZShyZWFkZXIs
c3BpbGxvdmVyLHNwaWxsb3Zlcl9sZW4sdHNmX3RydWUpOworfQorCit0c2ZfYWRwdF9yZHJfdCAq
dHNmX2FkYXB0aXZlX3JlYWRlcl9jcmVhdGUodHNmX3BhcnRpYWxfcmVhZGVyX3QgcmVhZGVyLAor
CQkJCQkgICB2b2lkICpyZWFkZXJfYXJnLAorCQkJCQkgICB1aW50MzJfdCBub3ppcF9idWZfc2l6
ZSwKKwkJCQkJICAgY29uc3QgdHNmX3ppcF9yZHJfYXR0cl90ICphdHRyKSB7CisgICAgdHNmX2Fk
cHRfcmRyX3QgKnJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9hZHB0X3Jkcl90KSk7CisgICAgaWYg
KHJlc3VsdD09TlVMTCkgeworCXRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2Fk
cHRfcmRyX3QiKTsKKwlyZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5tb2Rl
PVRTRl9aSVBfVU5LTk9XTjsKKyAgICAKKyAgICByZXN1bHQtPnJlYWRlcj1yZWFkZXI7CisgICAg
cmVzdWx0LT5yZWFkZXJfYXJnPXJlYWRlcl9hcmc7CisgICAgCisgICAgcmVzdWx0LT5zdHJlYW09
TlVMTDsKKyAgICByZXN1bHQtPmV4cGVjdF9zd2l0Y2g9dHNmX3RydWU7CisgICAgCisgICAgcmVz
dWx0LT5idWY9TlVMTDsKKyAgICByZXN1bHQtPmJ1Zl9zaXplPTA7CisgICAgCisgICAgaWYgKGF0
dHI9PU5VTEwpIHsKKwl0c2ZfemlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KCYocmVzdWx0LT5hdHRy
KSk7CisgICAgfSBlbHNlIHsKKwlyZXN1bHQtPmF0dHI9KmF0dHI7CisgICAgfQorICAgIHJlc3Vs
dC0+bm96aXBfYnVmX3NpemU9bm96aXBfYnVmX3NpemU7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCB0c2ZfYWRhcHRpdmVfcmVhZGVyX2Rlc3Ryb3kodHNmX2FkcHRfcmRyX3Qg
KnJlYWRlcikgeworICAgIHRlYXJfZG93bl9tb2RlKHJlYWRlcixOVUxMLE5VTEwpOworICAgIGZy
ZWUocmVhZGVyKTsKK30KKwordm9pZCB0c2ZfYWRhcHRpdmVfcmVhZGVyX2hpbnRfc3dpdGNoKHRz
Zl9hZHB0X3Jkcl90ICpyZWFkZXIpIHsKKyAgICByZWFkZXItPmV4cGVjdF9zd2l0Y2g9dHNmX3Ry
dWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX2FkYXB0aXZlX3JlYWRlcl9yZWFkKHZvaWQgKl9yZWFk
ZXIsCisJCQkJICAgIHZvaWQgKl9kYXRhLAorCQkJCSAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB0
c2ZfYWRwdF9yZHJfdCAqcmVhZGVyPV9yZWFkZXI7CisgICAgdWludDhfdCAqZGF0YT1fZGF0YTsK
KyAgICAKKyAgICBpZiAobGVuPT0wKSB7CisJcmV0dXJuIHRzZl90cnVlOworICAgIH0KKyAgICAK
KyAgICAvKiB0aGlzIGp1c3QgY29uc3RpdHV0ZXMgbGF6eSBpbml0aWFsaXphdGlvbiB1cG9uIHJl
YWQgKi8KKyAgICBpZiAocmVhZGVyLT5tb2RlPT1UU0ZfWklQX1VOS05PV04pIHsKKwlpZiAoIXNl
bGVjdF9tb2RlKHJlYWRlcixOVUxMLDAsdHNmX2ZhbHNlKSkgeworCSAgICByZXR1cm4gdHNmX2Zh
bHNlOworCX0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHJlYWRlci0+bW9kZSkgeworICAgIGNhc2Ug
VFNGX1pJUF9OT05FOiB7CisJLyogb2sgLSB0aGlzIGNvZGUgaXMgY29tcGxpY2F0ZWQuICBpdCBp
cyBjb21wbGljYXRlZCBiZWNhdXNlIGl0CisJICAgbmVlZHMgdG8gZGVhbCB3aXRoIHRoZSBwb3Nz
aWJpbGl0eSBvZiBhIGZvcm1hdCBjaGFuZ2UgLSBpZiB0aGUKKwkgICBtYWdpYyBjb2RlIGZvciBv
bmUgb2YgdGhlIHppcCBmb3JtYXRzIGNvbWVzIGluLCB0aGlzIHRoaW5nJ3Mgam9iCisJICAgaXMg
dG8gcmVjb2duaXplIGl0IGFuZCBzd2l0Y2ggZnJvbSBuby16aXAgYnVmZmVyaW5nIHRvIHVuemlw
cGluZy4KKwkgICB3ZSB1c2UgdGhlIGhpbnRfc3dpdGNoKCkgZnVuY3Rpb24gY2FsbHMgYXMgYSBo
aW50IG9mIHdoZW4gdG8KKwkgICBsb29rIGZvciB0aGUgZm9ybWF0IGNoYW5nZXMuICovCisJaWYg
KHJlYWRlci0+ZXhwZWN0X3N3aXRjaCAmJiByZWFkZXItPnB1dGk+cmVhZGVyLT5nZXRpKSB7CisJ
ICAgIHJlYWRlci0+ZXhwZWN0X3N3aXRjaD10c2ZfZmFsc2U7CisJICAgIGlmIChyZWFkZXItPmJ1
ZltyZWFkZXItPmdldGldPT1UU0ZfU1BfQ19TV0lUQ0hfRk9STUFUKSB7CisJCWlmICghdGVhcl9k
b3duX2FuZF9zZWxlY3RfbW9kZShyZWFkZXIpKSB7CisJCSAgICByZXR1cm4gdHNmX2ZhbHNlOwor
CQl9CisJCXJldHVybiB0c2ZfYWRhcHRpdmVfcmVhZGVyX3JlYWQocmVhZGVyLGRhdGEsbGVuKTsK
KwkgICAgfQorCX0KKwl1aW50MzJfdCB0b3JlYWQ9dHNmX21pbihyZWFkZXItPnB1dGktcmVhZGVy
LT5nZXRpLGxlbik7CisJbWVtY3B5KGRhdGEscmVhZGVyLT5idWYrcmVhZGVyLT5nZXRpLHRvcmVh
ZCk7CisJcmVhZGVyLT5nZXRpKz10b3JlYWQ7CisJZGF0YSs9dG9yZWFkOworCWxlbi09dG9yZWFk
OworCWlmIChsZW4+cmVhZGVyLT5idWZfc2l6ZSkgeworCSAgICB0c2ZfYXNzZXJ0KHJlYWRlci0+
Z2V0aT09cmVhZGVyLT5wdXRpKTsKKwkgICAgaWYgKHJlYWRlci0+ZXhwZWN0X3N3aXRjaCkgewor
CQlpbnQzMl90IHJlcz1yZWFkZXItPnJlYWRlcihyZWFkZXItPnJlYWRlcl9hcmcsCisJCQkJCSAg
IGRhdGEsbGVuKTsKKwkJaWYgKHJlczwwKSB7CisJCSAgICByZXR1cm4gdHNmX2ZhbHNlOworCQl9
CisJCXRzZl9hc3NlcnQocmVzPjApOworCQlpZiAoZGF0YVswXT09VFNGX1NQX0NfU1dJVENIX0ZP
Uk1BVCkgeworCQkgICAgdGVhcl9kb3duX21vZGUocmVhZGVyLE5VTEwsTlVMTCk7CisJCSAgICBp
ZiAoIXNlbGVjdF9tb2RlKHJlYWRlcixkYXRhLHJlcyx0c2ZfZmFsc2UpKSB7CisJCQlyZXR1cm4g
dHNmX2ZhbHNlOworCQkgICAgfQorCQkgICAgcmV0dXJuIHRzZl9hZGFwdGl2ZV9yZWFkZXJfcmVh
ZChyZWFkZXIsZGF0YSxsZW4pOworCQl9IGVsc2UgeworCQkgICAgZGF0YSs9cmVzOworCQkgICAg
bGVuLT1yZXM7CisJCX0KKwkgICAgfQorCSAgICBpZiAoIXRzZl9mdWxsX3JlYWRfb2ZfcGFydGlh
bChyZWFkZXItPnJlYWRlciwKKwkJCQkJICByZWFkZXItPnJlYWRlcl9hcmcsCisJCQkJCSAgZGF0
YSwKKwkJCQkJICBsZW4pKSB7CisJCWlmICh0c2ZfZ2V0X2Vycm9yX2NvZGUoKT09VFNGX0VfVU5F
WFBFQ1RFRF9FT0YKKwkJICAgICYmIGRhdGEhPV9kYXRhKSB7CisJCSAgICB0c2Zfc2V0X2Vycm9y
KFRTRl9FX0VSUk9ORU9VU19FT0YsCisJCQkJICAiRW5kLW9mLWZpbGUgYWZ0ZXIgcGFydCBvZiBh
IGZ1bGwgYnVmZmVyZWQgIgorCQkJCSAgInJlYWQ7IG9yaWdpbmFsIGVycm9yOiAlcyIsdHNmX2dl
dF9lcnJvcigpKTsKKwkJfQorCQlyZXR1cm4gdHNmX2ZhbHNlOworCSAgICB9CisJfSBlbHNlIGlm
IChsZW4+MCkgeworCSAgICByZWFkZXItPnB1dGk9MDsKKwkgICAgcmVhZGVyLT5nZXRpPTA7CisJ
ICAgIGZvciAoOzspIHsKKwkJaW50MzJfdCByZXM7CisJCXVpbnQzMl90IHRvY29weTsKKwkJcmVz
PXJlYWRlci0+cmVhZGVyKHJlYWRlci0+cmVhZGVyX2FyZywKKwkJCQkgICByZWFkZXItPmJ1ZiwK
KwkJCQkgICByZWFkZXItPmJ1Zl9zaXplKTsKKwkJaWYgKHJlczwwKSB7CisJCSAgICBpZiAodHNm
X2dldF9lcnJvcl9jb2RlKCk9PVRTRl9FX1VORVhQRUNURURfRU9GCisJCQkmJiBkYXRhIT1fZGF0
YSkgeworCQkJdHNmX3NldF9lcnJvcihUU0ZfRV9FUlJPTkVPVVNfRU9GLAorCQkJCSAgICAgICJF
bmQtb2YtZmlsZSBhZnRlciBwYXJ0IG9mIGEgZnVsbCBidWZmZXJlZCAiCisJCQkJICAgICAgInJl
YWQ7IG9yaWdpbmFsIGVycm9yOiAlcyIsdHNmX2dldF9lcnJvcigpKTsKKwkJICAgIH0KKwkJICAg
IHJldHVybiB0c2ZfZmFsc2U7CisJCX0KKwkJdHNmX2Fzc2VydChyZXM+MCk7CisJCWlmIChyZWFk
ZXItPmV4cGVjdF9zd2l0Y2gpIHsKKwkJICAgIHJlYWRlci0+ZXhwZWN0X3N3aXRjaD10c2ZfZmFs
c2U7CisJCSAgICBpZiAocmVhZGVyLT5idWZbMF09PVRTRl9TUF9DX1NXSVRDSF9GT1JNQVQpIHsK
KwkJCXJlYWRlci0+cHV0aT1yZXM7CisJCQlpZiAoIXRlYXJfZG93bl9hbmRfc2VsZWN0X21vZGUo
cmVhZGVyKSkgeworCQkJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJCQl9CisJCQlyZXR1cm4gdHNm
X2FkYXB0aXZlX3JlYWRlcl9yZWFkKHJlYWRlcixkYXRhLGxlbik7CisJCSAgICB9CisJCX0KKwkJ
dG9jb3B5PXRzZl9taW4ocmVzLGxlbik7CisJCW1lbWNweShkYXRhLHJlYWRlci0+YnVmLHRvY29w
eSk7CisJCWRhdGErPXRvY29weTsKKwkJbGVuLT10b2NvcHk7CisJCWlmIChsZW49PTApIHsKKwkJ
ICAgIHJlYWRlci0+cHV0aT1yZXM7CisJCSAgICByZWFkZXItPmdldGk9dG9jb3B5OworCQkgICAg
YnJlYWs7CisJCX0KKwkgICAgfQorCX0KKwlicmVhazsKKyAgICB9CisgICAgY2FzZSBUU0ZfWklQ
X1pMSUI6CisgICAgY2FzZSBUU0ZfWklQX0JaSVAyOiB7CisJcmVhZGVyLT5hYnN0cmFjdC5uZXh0
X291dD1kYXRhOworCXJlYWRlci0+YWJzdHJhY3QuYXZhaWxfb3V0PWxlbjsKKwkKKwlmb3IgKDs7
KSB7CisJICAgIGludCByZXM7CisKKwkgICAgLyogaXMgdGhlcmUgZXZlciBhIGNhc2Ugd2hlcmUg
d2Ugd291bGQgd2FudCB0byBjYWxsIGluZmxhdGUgZXZlbiB0aG91Z2gKKwkgICAgICAgdGhlIGlu
cHV0IGJ1ZmZlciBpcyBlbXB0eT8gKi8KKwkgICAgaWYgKHJlYWRlci0+YWJzdHJhY3QuYXZhaWxf
aW4hPTApIHsKKwkJcmVzPXRzZl96aXBfYWJzdHJhY3RfaW5mbGF0ZShyZWFkZXItPm1vZGUsCisJ
CQkJCSAgICAgcmVhZGVyLT5zdHJlYW0sCisJCQkJCSAgICAgJihyZWFkZXItPmFic3RyYWN0KSwK
KwkJCQkJICAgICBUU0ZfWklQX0FDVF9SVU4pOworCQkKKwkJaWYgKHJlcz09VFNGX1pJUF9SRVNf
RVJST1IpIHsKKwkJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJCX0gZWxzZSBpZiAocmVzPT1UU0Zf
WklQX1JFU19FTkQpIHsKKwkJICAgIGlmIChyZWFkZXItPmFic3RyYWN0LmF2YWlsX291dCE9MCkg
eworCQkJdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKwkJCQkgICAgICAiQSByZWFk
IHJlcXVlc3Qgc3RyYWRkbGVzIGEgZm9ybWF0IGNoYW5nZSIpOworCQkgICAgfQorCQkgICAgdGVh
cl90b19ub25lKHJlYWRlcik7CisJCX0KKwkJCisJCWlmIChyZWFkZXItPmFic3RyYWN0LmF2YWls
X291dD09MCkgeworCQkgICAgYnJlYWs7CisJCX0KKwkJCisJCXRzZl9hc3NlcnQocmVhZGVyLT5h
YnN0cmFjdC5hdmFpbF9pbj09MCk7CisJICAgIH0KKwkgICAgCisJICAgIHJlcz1yZWFkZXItPnJl
YWRlcihyZWFkZXItPnJlYWRlcl9hcmcsCisJCQkgICAgICAgcmVhZGVyLT5idWYsCisJCQkgICAg
ICAgcmVhZGVyLT5idWZfc2l6ZSk7CisJICAgIAorCSAgICBpZiAocmVzPT0tMSkgeworCQlpZiAo
dHNmX2dldF9lcnJvcl9jb2RlKCk9PVRTRl9FX1VORVhQRUNURURfRU9GKSB7CisJCSAgICB0c2Zf
c2V0X2Vycm9yKFRTRl9FX0VSUk9ORU9VU19FT0YsCisJCQkJICAiR290IGFuIEVPRiBmcm9tIHRo
ZSByZWFkZXIgYmVmb3JlIHRoZSAiCisJCQkJICAiZGVjb21wcmVzc29yIGhhZCByZWFjaGVkIGVu
ZCBvZiBzdHJlYW0iKTsKKwkJfQorCQlyZXR1cm4gdHNmX2ZhbHNlOworCSAgICB9CisJICAgIAor
CSAgICByZWFkZXItPmFic3RyYWN0Lm5leHRfaW49cmVhZGVyLT5idWY7CisJICAgIHJlYWRlci0+
YWJzdHJhY3QuYXZhaWxfaW49cmVzOworCX0KKwlicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoK
Kwl0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVEVSTkFMLAorCQkgICAgICAiSW52YWxpZCByZWFkZXIg
bW9kZSBpbiB0c2ZfYWRhcHRpdmVfcmVhZGVyX3JlYWQoKSIpOworCXJldHVybiB0c2ZfZmFsc2U7
CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordWludDMyX3QgdHNmX2Fk
YXB0aXZlX3JlYWRlcl9nZXRfcmVtYWluaW5nKHRzZl9hZHB0X3Jkcl90ICpyZWFkZXIpIHsKKyAg
ICBzd2l0Y2ggKHJlYWRlci0+bW9kZSkgeworICAgIGNhc2UgVFNGX1pJUF9VTktOT1dOOgorICAg
ICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFRTRl9aSVBfTk9ORToKKyAgICAgICAgcmV0dXJuIHJl
YWRlci0+cHV0aS1yZWFkZXItPmdldGk7CisgICAgY2FzZSBUU0ZfWklQX1pMSUI6CisgICAgY2Fz
ZSBUU0ZfWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gcmVhZGVyLT5hYnN0cmFjdC5hdmFpbF9p
bjsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBzaG91bGQgbmV2ZXIgaGFwcGVuICovCisgICAg
ICAgIHRzZl9hYm9ydCgiYmFkIHJlYWRlciBtb2RlIik7CisgICAgfQorfQorCisKKwpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9hc3ByaW50Zi5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXNwcmlu
dGYuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvdHNmX2FzcHJpbnRmLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQ
IFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKworY2hhciAqdHNmX3Zhc3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsdmFfbGlz
dCBsc3QxKSB7CisgICAgY2hhciAqcmV0OworICAgIGludCByZXM7CisjaWZkZWYgVFNGX0hBVkVf
VkFTUFJJTlRGCisgICAgcmVzPXZhc3ByaW50ZigmcmV0LGZvcm1hdCxsc3QxKTsKKyAgICBpZiAo
cmVzPDAgJiYgcmV0IT1OVUxMKSB7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0PU5V
TEw7CisgICAgfQorI2Vsc2UKKyAgICB7CisgICAgICAgIHZhX2xpc3QgbHN0MiA9IGxzdDE7Cisg
ICAgICAgIGNoYXIgZmFrZV9idWZbMzJdOworICAgICAgICByZXM9dnNucHJpbnRmKGZha2VfYnVm
LHNpemVvZihmYWtlX2J1ZiksZm9ybWF0LGxzdDEpOworICAgICAgICBpZiAocmVzPDApIHsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChyZXM8MzIpIHsK
KyAgICAgICAgICAgIHJldHVybiBzdHJkdXAoZmFrZV9idWYpOworICAgICAgICB9CisgICAgICAg
IHJldD1tYWxsb2MocmVzKzEpOworICAgICAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXM9dnNucHJpbnRmKHJldCxyZXMr
MSxmb3JtYXQsbHN0Mik7CisgICAgICAgIGlmIChyZXM8MCkgeworICAgICAgICAgICAgZnJlZShy
ZXQpOworICAgICAgICAgICAgcmV0PU5VTEw7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAg
ICByZXR1cm4gcmV0OworfQorCitjaGFyICp0c2ZfYXNwcmludGYoY29uc3QgY2hhciAqZm9ybWF0
LC4uLikgeworICAgIHZhX2xpc3QgbHN0OworICAgIGNoYXIgKnJldDsKKyAgICB2YV9zdGFydChs
c3QsIGZvcm1hdCk7CisgICAgcmV0PXRzZl92YXNwcmludGYoZm9ybWF0LCBsc3QpOworICAgIHZh
X2VuZChsc3QpOworICAgIHJldHVybiByZXQ7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
SmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXRvbWljcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXRvbWljcy5oCShub25leGlzdGVudCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXRvbWljcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZQX1RTRl9BVE9NSUNTX0gKKyNk
ZWZpbmUgRlBfVFNGX0FUT01JQ1NfSAorCisjaW5jbHVkZSAidHNmX2NvbmZpZy5oIgorI2luY2x1
ZGUgInRzZl90eXBlcy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWZkZWYgSEFWRV9TQ0hF
RF9ICisjaW5jbHVkZSA8c2NoZWQuaD4KKyNlbmRpZgorCisjaWZkZWYgVFNGX0hBVkVfUFRIUkVB
RAorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKKyNpZiAwCisvKiBoYWNrIHRvIGRlY29uZnVzZSBlbWFjcyAq
LworfQorI2VuZGlmCisKK3N0cnVjdCB0c2ZfbXV0ZXg7CitzdHJ1Y3QgdHNmX2F0b21pY19jb3Vu
dDsKK3N0cnVjdCB0c2Zfb25jZTsKKwordHlwZWRlZiBzdHJ1Y3QgdHNmX211dGV4IHRzZl9tdXRl
eF90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2F0b21pY19jb3VudCB0c2ZfYXRvbWljX2NvdW50X3Q7
Cit0eXBlZGVmIHN0cnVjdCB0c2Zfb25jZSB0c2Zfb25jZV90OworCisjaWZkZWYgVFNGX0hBVkVf
QlVJTFRJTl9DQVMKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgdHNmX2NhczMyKAorICAg
IHZvbGF0aWxlIHZvaWQgKnBvaW50ZXIsIGludDMyX3QgZXhwZWN0ZWQsIGludDMyX3QgbmV3X3Zh
bHVlKSB7CisgICAgcmV0dXJuIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAoCisgICAgICAg
ICh2b2xhdGlsZSBpbnQzMl90Kilwb2ludGVyLCBleHBlY3RlZCwgbmV3X3ZhbHVlKTsKK30KKwor
c3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCB0c2ZfY2FzX3B0cigKKyAgICB2b2xhdGlsZSB2
b2lkICpwb2ludGVyLCBpbnRwdHJfdCBleHBlY3RlZCwgaW50cHRyX3QgbmV3X3ZhbHVlKSB7Cisg
ICAgcmV0dXJuIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAoCisgICAgICAgICh2b2xhdGls
ZSBpbnRwdHJfdCopcG9pbnRlciwgZXhwZWN0ZWQsIG5ld192YWx1ZSk7Cit9CisjZGVmaW5lIFRT
Rl9IQVZFX0NBUyAxCisjZWxpZiAhZGVmaW5lZChUU0ZfSEFWRV9QVEhSRUFEKQorc3RhdGljIFRT
Rl9pbmxpbmUgdHNmX2Jvb2xfdCB0c2ZfY2FzMzIoCisgICAgdm9sYXRpbGUgdm9pZCAqcmF3UG9p
bnRlciwgaW50MzJfdCBleHBlY3RlZCwgaW50MzJfdCBuZXdfdmFsdWUpIHsKKyAgICB2b2xhdGls
ZSBpbnQzMl90ICpwb2ludGVyID0gKHZvbGF0aWxlIGludDMyX3QqKXJhd1BvaW50ZXI7CisgICAg
aWYgKCpwb2ludGVyID09IGV4cGVjdGVkKSB7CisgICAgICAgICpwb2ludGVyID0gbmV3X3ZhbHVl
OworICAgICAgICByZXR1cm4gdHNmX3RydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IHRzZl9mYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgdHNm
X2Nhc19wdHIoCisgICAgdm9sYXRpbGUgdm9pZCAqcmF3UG9pbnRlciwgaW50cHRyX3QgZXhwZWN0
ZWQsIGludHB0cl90IG5ld192YWx1ZSkgeworICAgIHZvbGF0aWxlIGludHB0cl90ICpwb2ludGVy
ID0gKHZvbGF0aWxlIGludHB0cl90KilyYXdQb2ludGVyOworICAgIGlmICgqcG9pbnRlciA9PSBl
eHBlY3RlZCkgeworICAgICAgICAqcG9pbnRlciA9IG5ld192YWx1ZTsKKyAgICAgICAgcmV0dXJu
IHRzZl90cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
fQorfQorI2RlZmluZSBUU0ZfSEFWRV9DQVMgMQorI2VuZGlmCisKKyNpZmRlZiBUU0ZfSEFWRV9C
VUlMVElOX1hBREQKK3N0YXRpYyBUU0ZfaW5saW5lIGludDMyX3QgdHNmX3hhZGQzMih2b2xhdGls
ZSB2b2lkICpwb2ludGVyLCBpbnQzMl90IHZhbHVlKSB7CisgICAgcmV0dXJuIF9fc3luY19mZXRj
aF9hbmRfYWRkKCh2b2xhdGlsZSBpbnQzMl90Kilwb2ludGVyLCB2YWx1ZSk7Cit9CisjZGVmaW5l
IFRTRl9IQVZFX1hBREQgMQorI2VsaWYgZGVmaW5lZChUU0ZfSEFWRV9DQVMpCitzdGF0aWMgVFNG
X2lubGluZSBpbnQzMl90IHRzZl94YWRkMzIodm9sYXRpbGUgdm9pZCAqcmF3UG9pbnRlciwgaW50
MzJfdCB2YWx1ZSkgeworICAgIGludDMyX3QgcmVzdWx0OworICAgIHZvbGF0aWxlIGludDMyX3Qg
KnBvaW50ZXIgPSAodm9sYXRpbGUgaW50MzJfdCopcmF3UG9pbnRlcjsKKyAgICBkbyB7CisgICAg
ICAgIHJlc3VsdCA9ICpwb2ludGVyOworICAgIH0gd2hpbGUgKCF0c2ZfY2FzMzIocG9pbnRlciwg
cmVzdWx0LCByZXN1bHQgKyB2YWx1ZSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZGVmaW5l
IFRTRl9IQVZFX1hBREQgMQorI2VuZGlmCisKKyNpZmRlZiBUU0ZfSEFWRV9YODZfSU5MSU5FX0FT
TV9GRU5DRVMKKy8qIFRoaXMgaXMgYSBmZW5jZSB0aGF0IHdvdWxkIGhhdmUgbm8gaGFyZHdhcmUg
ZWZmZWN0IG9uIFRTTyBhcmNoaXRlY3R1cmVzLiBQbGFjaW5nCisgKiBpdCBiZXR3ZWVuIHR3byBv
cGVyYXRpb25zIGdpdmVzIHlvdSBndWFyYW50ZWVzIGxpa2UgdGhvc2UgdGhhdCBUU08gd291bGQg
aGF2ZQorICogZ2l2ZW4geW91LiAqLworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCB0c2ZfYmFzaWNf
ZmVuY2Uodm9pZCkgeworICAgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOworfQor
CisvKiBUaGlzIGlzIGEgZmVuY2UgdGhhdCB5b3Ugd291bGQgbmVlZCBldmVuIG9uIFRTTyBhbmQg
Z3VhcmFudGVlcyBtZW1vcnkgU0MuICovCitzdGF0aWMgVFNGX2lubGluZSB2b2lkIHRzZl9zdHJv
bmdfZmVuY2Uodm9pZCkgeworICAgIGFzbSB2b2xhdGlsZSAoIm1mZW5jZSIgOiA6IDogIm1lbW9y
eSIpOworfQorCisjZGVmaW5lIFRTRl9IQVZFX0ZFTkNFUyAxCisjZWxpZiAhZGVmaW5lZChUU0Zf
SEFWRV9QVEhSRUFEKQorc3RhdGljIFRTRl9pbmxpbmUgdm9pZCB0c2ZfYmFzaWNfZmVuY2Uodm9p
ZCkgeyB9CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIHRzZl9zdHJvbmdfZmVuY2Uodm9pZCkgeyB9
CisjZGVmaW5lIFRTRl9IQVZFX0ZFTkNFUyAxCisjZW5kaWYKKworc3RydWN0IHRzZl9tdXRleCB7
CisjaWZkZWYgVFNGX0hBVkVfUFRIUkVBRAorICAgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKKyNl
bHNlCisgICAgY2hhciBkdW1teTsKKyNlbmRpZgorfTsKKyAgICAKK3N0cnVjdCB0c2ZfYXRvbWlj
X2NvdW50IHsKKyNpZiAhZGVmaW5lZChUU0ZfSEFWRV9YQUREKQorICAgIHRzZl9tdXRleF90IG11
dGV4OworI2VuZGlmCisgICAgdm9sYXRpbGUgdWludDMyX3QgY291bnQ7Cit9OworCitzdGF0aWMg
aW5saW5lIHZvaWQgdHNmX3lpZWxkKHZvaWQpCit7CisjaWZkZWYgSEFWRV9TQ0hFRF9ZSUVMRAor
ICAgIHNjaGVkX3lpZWxkKCk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB2b2lkKiB0c2Zf
dGhyZWFkX3NlbGYodm9pZCkKK3sKKyNpZiBUU0ZfSEFWRV9QVEhSRUFECisgICAgcmV0dXJuICh2
b2lkKilwdGhyZWFkX3NlbGYoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKK30K
KworLyogTm90ZSB0aGF0IHdlIGFzc3VtZSB0aGF0IGxvY2tpbmcgb3BlcmF0aW9ucyBhbHdheXMg
c3VjY2VlZC4gVGhlcmUgaXMgbGl0dGxlIHBvaW50IGluIHdvcnJ5aW5nCisgICBhYm91dCB3aGF0
IGhhcHBlbnMgaWYgdGhleSBmYWlsLiAqLworc3RhdGljIGlubGluZSB2b2lkIHRzZl9tdXRleF9p
bml0KHRzZl9tdXRleF90ICptdXRleCkgeworI2lmZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyAgICBw
dGhyZWFkX211dGV4X2luaXQoJm11dGV4LT5tdXRleCwgTlVMTCk7CisjZW5kaWYKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIHRzZl9tdXRleF9sb2NrKHRzZl9tdXRleF90ICptdXRleCkgeworI2lm
ZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4LT5tdXRl
eCk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB2b2lkIHRzZl9tdXRleF91bmxvY2sodHNm
X211dGV4X3QgKm11dGV4KSB7CisjaWZkZWYgVFNGX0hBVkVfUFRIUkVBRAorICAgIHB0aHJlYWRf
bXV0ZXhfdW5sb2NrKCZtdXRleC0+bXV0ZXgpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUg
dm9pZCB0c2ZfbXV0ZXhfZGVzdHJveSh0c2ZfbXV0ZXhfdCAqbXV0ZXgpIHsKKyNpZmRlZiBUU0Zf
SEFWRV9QVEhSRUFECisgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleC0+bXV0ZXgpOwor
I2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB0c2ZfYXRvbWljX2NvdW50X2luaXQodHNm
X2F0b21pY19jb3VudF90ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgaW5pdGlhbF92YWx1ZSkgeworICAgIGNvdW50LT5jb3VudCA9IGlu
aXRpYWxfdmFsdWU7CisjaWYgIWRlZmluZWQoVFNGX0hBVkVfWEFERCkKKyAgICB0c2ZfbXV0ZXhf
aW5pdCgmY291bnQtPm11dGV4KTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdHNm
X2F0b21pY19jb3VudF9kZXN0cm95KHRzZl9hdG9taWNfY291bnRfdCAqY291bnQpIHsKKyNpZiAh
ZGVmaW5lZChUU0ZfSEFWRV9YQUREKQorICAgIHRzZl9tdXRleF9kZXN0cm95KCZjb3VudC0+bXV0
ZXgpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdHNmX2F0b21pY19jb3Vu
dF92YWx1ZSh0c2ZfYXRvbWljX2NvdW50X3QgKmNvdW50KSB7CisgICAgcmV0dXJuIGNvdW50LT5j
b3VudDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHRzZl9hdG9taWNfY291bnRfc2V0X3ZhbHVl
KHRzZl9hdG9taWNfY291bnRfdCAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUpIHsKKyAgICBjb3VudC0+Y291bnQgPSB2
YWx1ZTsKK30KKworc3RhdGljIGlubGluZSB1aW50MzJfdCB0c2ZfYXRvbWljX2NvdW50X3hhZGQo
dHNmX2F0b21pY19jb3VudF90ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGRlbHRhKSB7CisjaWZkZWYgVFNGX0hBVkVfWEFERAor
ICAgIHJldHVybiB0c2ZfeGFkZDMyKCZjb3VudC0+Y291bnQsIGRlbHRhKTsKKyNlbHNlCisgICAg
dWludDMyX3QgcmVzdWx0OworICAgIHRzZl9tdXRleF9sb2NrKCZjb3VudC0+bXV0ZXgpOworICAg
IHJlc3VsdCA9IGNvdW50LT5jb3VudDsKKyAgICBjb3VudC0+Y291bnQgKz0gZGVsdGE7CisgICAg
dHNmX211dGV4X3VubG9jaygmY291bnQtPm11dGV4KTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vu
ZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdHNmX2F0b21pY19jb3VudF94c3ViKHRz
Zl9hdG9taWNfY291bnRfdCAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBkZWx0YSkgeworICAgIHJldHVybiB0c2ZfYXRvbWljX2Nv
dW50X3hhZGQoY291bnQsICh1aW50MzJfdCktKGludDMyX3QpZGVsdGEpOworfQorCitzdHJ1Y3Qg
dHNmX29uY2UgeworI2lmZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyNpZiBkZWZpbmVkKFRTRl9IQVZF
X0JVSUxUSU5fQ0FTKSAmJiBkZWZpbmVkKFRTRl9IQVZFX0ZFTkNFUykKKyAgICB2b2xhdGlsZSBp
bnQzMl90IHN0YXRlOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2VfdCBvbmNlX2NvbnRyb2w7Cisj
ZW5kaWYKKyNlbHNlCisgICAgdHNmX2Jvb2xfdCBpc19pbml0aWFsaXplZDsKKyNlbmRpZgorfTsK
KworI2lmZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyNpZiBkZWZpbmVkKFRTRl9IQVZFX0JVSUxUSU5f
Q0FTKSAmJiBkZWZpbmVkKFRTRl9IQVZFX0ZFTkNFUykKKyNkZWZpbmUgVFNGX09OQ0VfSU5JVCB7
IDAgfQorI2Vsc2UKKyNkZWZpbmUgVFNGX09OQ0VfSU5JVCB7IFBUSFJFQURfT05DRV9JTklUIH0K
KyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgVFNGX09OQ0VfSU5JVCB7IHRzZl9mYWxzZSB9CisjZW5k
aWYKKworc3RhdGljIGlubGluZSB2b2lkIHRzZl9vbmNlKHRzZl9vbmNlX3QgKmNvbnRyb2wsIHZv
aWQgKCphY3Rpb24pKHZvaWQpKSB7CisjaWZkZWYgVFNGX0hBVkVfUFRIUkVBRAorI2lmIGRlZmlu
ZWQoVFNGX0hBVkVfQlVJTFRJTl9DQVMpICYmIGRlZmluZWQoVFNGX0hBVkVfRkVOQ0VTKQorICAg
IC8qIERlZmluZSB0aGUgcG9zc2libGUgdmFsdWVzIG9mIGNvbnRyb2wtPnN0YXRlLiAqLworICAg
IHN0YXRpYyBjb25zdCBpbnQzMl90IG5vdEluaXRpYWxpemVkID0gMDsKKyAgICBzdGF0aWMgY29u
c3QgaW50MzJfdCBpbml0aWFsaXppbmcgPSAxOworICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IGlu
aXRpYWxpemVkID0gMjsKKyAgICAKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGludDMyX3QgY3Vy
cmVudF9zdGF0ZSA9IGNvbnRyb2wtPnN0YXRlOworICAgICAgICBpZiAoY3VycmVudF9zdGF0ZSA9
PSBpbml0aWFsaXplZCkgeworICAgICAgICAgICAgdHNmX2Jhc2ljX2ZlbmNlKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50X3N0YXRlID09IGluaXRpYWxp
emluZykgeworICAgICAgICAgICAgdHNmX3lpZWxkKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY3Vy
cmVudF9zdGF0ZSA9PSBub3RJbml0aWFsaXplZCkgeworICAgICAgICAgICAgaWYgKHRzZl9jYXMz
MigmY29udHJvbC0+c3RhdGUsIG5vdEluaXRpYWxpemVkLCBpbml0aWFsaXppbmcpKSB7CisgICAg
ICAgICAgICAgICAgYWN0aW9uKCk7CisgICAgICAgICAgICAgICAgdHNmX2Jhc2ljX2ZlbmNlKCk7
CisgICAgICAgICAgICAgICAgY29udHJvbC0+c3RhdGUgPSBpbml0aWFsaXplZDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHNm
X3lpZWxkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
KiBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUuICovCisgICAgICAgICAgICBhYm9ydCgpOworICAgICAg
ICB9CisgICAgfQorI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJmNvbnRyb2wtPm9uY2VfY29udHJv
bCwgYWN0aW9uKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBpZiAoIWNvbnRyb2wtPmlzX2luaXRpYWxp
emVkKSB7CisgICAgICAgIGFjdGlvbigpOworICAgICAgICBjb250cm9sLT5pc19pbml0aWFsaXpl
ZCA9IHRzZl90cnVlOworICAgIH0KKyNlbmRpZgorfQorCisjaWYgZGVmaW5lZChUU0ZfSEFWRV9G
RU5DRVMpCisjZGVmaW5lIFRTRl9IQVZFX0lOSVRfUE9JTlRFUiAxCisKK3N0YXRpYyBpbmxpbmUg
dm9pZCAqdHNmX2luaXRfcG9pbnRlcih2b2lkICoqcG9pbnRlciwgdm9pZCAqKCppbml0aWFsaXpl
cikodm9pZCkpIHsKKyAgICB2b2lkICpyZXN1bHQgPSAqcG9pbnRlcjsKKyAgICBpZiAocmVzdWx0
KSB7CisgICAgICAgIHRzZl9iYXNpY19mZW5jZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJl
c3VsdCA9IGluaXRpYWxpemVyKCk7CisgICAgICAgIHRzZl9iYXNpY19mZW5jZSgpOworICAgICAg
ICAqcG9pbnRlciA9IHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbHNl
CisjdW5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEZQX1RTRl9BVE9NSUNTX0gKSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3JlYWRlci5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3JlYWRl
ci5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2ZfYnVmX3JlYWRlci5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklM
SVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisjaWZk
ZWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKworI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorI2luY2x1ZGUgPGVycm5vLmg+CisKK3RzZl9idWZfcmRyX3QgKnRzZl9idWZfcmVhZGVyX2Ny
ZWF0ZShpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgYnVmX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Jv
b2xfdCBrZWVwX2ZkKSB7CisgICAgdHNmX2J1Zl9yZHJfdCAqcmVzdWx0OworICAgIAorICAgIHJl
c3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9idWZfcmRyX3QpKTsKKyAgICBpZiAocmVzdWx0PT1OVUxM
KSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2J1Zl9yZHJf
dCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5idWY9
bWFsbG9jKGJ1Zl9zaXplKTsKKyAgICBpZiAocmVzdWx0LT5idWY9PU5VTEwpIHsKKyAgICAgICAg
ZnJlZShyZXN1bHQpOworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGJ1
ZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5m
ZD1mZDsKKyAgICByZXN1bHQtPmtlZXBfZmQ9a2VlcF9mZDsKKyAgICByZXN1bHQtPnNpemU9YnVm
X3NpemU7CisgICAgcmVzdWx0LT5wdXRpPTA7CisgICAgcmVzdWx0LT5nZXRpPTA7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCB0c2ZfYnVmX3JlYWRlcl9kZXN0cm95KHRzZl9i
dWZfcmRyX3QgKmJ1ZikgeworICAgIC8qIHVoLCBjbG9zZSB0aGUgZmQgaWYga2VlcF9mZCBpcyBz
ZXQ/ICovCisgICAgZnJlZShidWYtPmJ1Zik7CisgICAgZnJlZShidWYpOworfQorCit0c2ZfYm9v
bF90IHRzZl9idWZfcmVhZGVyX3JlYWQodm9pZCAqX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxlbikgeworICAgIHRzZl9ib29sX3QgcmVhZF9zb21lPXRzZl9mYWxzZTsKKyNpZiBk
ZWZpbmVkKEhBVkVfUkVBRFYpCisgICAgc3RydWN0IGlvdmVjIGlvdlsyXTsKKyNlbmRpZgorICAg
IHRzZl9idWZfcmRyX3QgKmJ1Zj1fYnVmOworICAgIAorICAgIC8qIGdldCBhcyBtdWNoIGFzIHBv
c3NpYmxlIGZyb20gdGhlIGJ1ZmZlciAqLworICAgIGlmIChidWYtPnB1dGk+YnVmLT5nZXRpKSB7
CisgICAgICAgIHVpbnQzMl90IGF2YWlsPWJ1Zi0+cHV0aS1idWYtPmdldGk7CisgICAgICAgIAor
ICAgICAgICByZWFkX3NvbWU9dHNmX3RydWU7CisgICAgICAgIAorICAgICAgICBpZiAoYXZhaWw+
bGVuKSB7CisgICAgICAgICAgICAvKiBjYW4gYmUgc2F0aXNmaWVkIGVudGlyZWx5IGZyb20gdGhl
IGJ1ZmZlciAqLworICAgICAgICAgICAgbWVtY3B5KGRhdGEsYnVmLT5idWYrYnVmLT5nZXRpLGxl
bik7CisgICAgICAgICAgICBidWYtPmdldGkrPWxlbjsKKyAgICAgICAgICAgIHJldHVybiB0c2Zf
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbWVtY3B5KGRhdGEsYnVmLT5idWYr
YnVmLT5nZXRpLGF2YWlsKTsKKyAgICAgICAgCisgICAgICAgIGRhdGE9KCh1aW50OF90KilkYXRh
KSthdmFpbDsKKyAgICAgICAgbGVuLT1hdmFpbDsKKyAgICB9CisKKyAgICBidWYtPnB1dGk9MDsK
KyAgICBidWYtPmdldGk9MDsKKyAgICAKKyAgICBpZiAoIWxlbikgeworICAgICAgICByZXR1cm4g
dHNmX3RydWU7CisgICAgfQorICAgIAorICAgIC8qIG5vdyBzYXRpc2Z5IHRoZSByZXN0IG9mIHRo
ZSByZXF1ZXN0IGJ5IGlzc3VpbmcgYSBuZXcgcmVhZCAqLworI2lmIGRlZmluZWQoSEFWRV9SRUFE
VikKKyAgICBpb3ZbMF0uaW92X2Jhc2U9ZGF0YTsKKyAgICBpb3ZbMF0uaW92X2xlbj1sZW47Cisg
ICAgaW92WzFdLmlvdl9iYXNlPSh2b2lkKilidWYtPmJ1ZjsKKyAgICBpb3ZbMV0uaW92X2xlbj1i
dWYtPnNpemU7CisgICAgCisgICAgZm9yICg7OykgeworICAgICAgICBpbnQgcmVzPXJlYWR2KGJ1
Zi0+ZmQsaW92LDIpOworICAgICAgICBpZiAocmVzPDApIHsKKyAgICAgICAgICAgIGlmIChlcnJu
bz09RUlOVFIpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNhbGxpbmcgcmVhZHYoKSBpbiB0c2ZfYnVmX3JlYWRl
cl9yZWFkKCkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlcz09MCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihyZWFkX3NvbWU/
CisgICAgICAgICAgICAgICAgICAgICAgICAgIFRTRl9FX0VSUk9ORU9VU19FT0Y6VFNGX0VfVU5F
WFBFQ1RFRF9FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsaW5nIHJlYWR2KCkg
aW4gdHNmX2J1Zl9yZWFkZXJfcmVhZCgpIik7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgICAgICB9CisgICAgICAgIHJlYWRfc29tZT10c2ZfdHJ1ZTsKKyAgICAgICAgaWYgKCh1
bnNpZ25lZClyZXM+PWlvdlswXS5pb3ZfbGVuKSB7CisgICAgICAgICAgICBidWYtPnB1dGk9cmVz
LWlvdlswXS5pb3ZfbGVuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
aW92WzBdLmlvdl9iYXNlKz1yZXM7CisgICAgICAgIGlvdlswXS5pb3ZfbGVuLT1yZXM7CisgICAg
fQorI2Vsc2UKKyAgICBpZiAobGVuPj1idWYtPnNpemUpIHsKKyAgICAgICAgdHNmX2Jvb2xfdCBy
ZXM9dHNmX2ZkX3JlYWRlcigmYnVmLT5mZCxkYXRhLGxlbik7CisgICAgICAgIGlmIChyZWFkX3Nv
bWUgJiYgIXJlcyAmJgorICAgICAgICAgICAgdHNmX2dldF9lcnJvcl9jb2RlKCk9PVRTRl9FX1VO
RVhQRUNURURfRU9GKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0VSUk9ORU9V
U19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfZmRfcmVhZGVyKCkgZXhwZXJp
ZW5jZWQgYW4gRU9GIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9Cisg
ICAgCisgICAgLyogaWRlYSBpcyB0aGlzOiB3ZSBrZWVwIHJlYWRpbmcgdW50aWwgd2UgaGF2ZSBl
bm91Z2ggdG8gc2F0aXNmeSB0aGUKKyAgICAgKiBjdXJyZW50IHJlcXVlc3QsIGJ1dCB3ZSBhbGxv
dyB0aGUgcmVhZCB0byBvdmVyZmxvdyBmb3IgYXMgbWFueSBieXRlcworICAgICAqIGFzIHdlIGhh
dmUgYXZhaWxhYmxlIGluIHRoZSBidWZmZXIuICovCisgICAgd2hpbGUgKGJ1Zi0+cHV0aTxsZW4p
IHsKKyAgICAgICAgaW50IHJlcz1yZWFkKGJ1Zi0+ZmQsCisgICAgICAgICAgICAgICAgICAgICBi
dWYtPmJ1ZitidWYtPnB1dGksCisgICAgICAgICAgICAgICAgICAgICBidWYtPnNpemUtYnVmLT5w
dXRpKTsKKyAgICAgICAgaWYgKHJlczwwKSB7CisgICAgICAgICAgICBpZiAoZXJybm89PUVJTlRS
KSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfYnVmX3JlYWRlcl9yZWFkKCki
KTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHJlcz09MCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihyZWFkX3NvbWU/CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRTRl9FX0VSUk9ORU9VU19FT0Y6VFNGX0VfVU5FWFBFQ1RFRF9F
T0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfYnVm
X3JlYWRlcl9yZWFkKCkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmVhZF9zb21lPXRzZl90cnVlOworICAgICAgICBidWYtPnB1dGkrPXJlczsK
KyAgICB9CisgICAgCisgICAgbWVtY3B5KGRhdGEsYnVmLT5idWYsbGVuKTsKKyAgICBidWYtPmdl
dGk9bGVuOworI2VuZGlmCisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit1aW50MzJf
dCB0c2ZfYnVmX3JlYWRlcl9nZXRfcmVtYWluaW5nKHRzZl9idWZfcmRyX3QgKmJ1ZikgeworICAg
IHJldHVybiBidWYtPnB1dGkgLSBidWYtPmdldGk7Cit9CisKK3ZvaWQgdHNmX2J1Zl9yZWFkZXJf
cmVzZXQodHNmX2J1Zl9yZHJfdCAqYnVmKSB7CisgICAgYnVmLT5wdXRpPTA7CisgICAgYnVmLT5n
ZXRpPTA7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2ZfYnVmX3dyaXRlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfYnVmX3dyaXRlci5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3dyaXRlci5jCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisj
aW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisjaWZkZWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNsdWRl
IDxzeXMvdWlvLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKK3Rz
Zl9idWZfd3RyX3QgKnRzZl9idWZfd3JpdGVyX2NyZWF0ZShpbnQgZmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYnVmX3NpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCBrZWVwX2ZkKSB7CisgICAgdHNmX2J1
Zl93dHJfdCAqcmVzdWx0OworICAgIAorICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9idWZf
d3RyX3QpKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8o
IkNvdWxkIG5vdCBtYWxsb2MgdHNmX2J1Zl93dHJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICB9CisgICAgCisgICAgcmVzdWx0LT5idWY9bWFsbG9jKGJ1Zl9zaXplKTsKKyAgICBpZiAo
cmVzdWx0LT5idWY9PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGJ1ZmZlciIpOworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisKKyAgICByZXN1bHQtPmZkPWZkOworICAgIHJlc3VsdC0+a2VlcF9mZD1rZWVw
X2ZkOworICAgIHJlc3VsdC0+c2l6ZT1idWZfc2l6ZTsKKyAgICByZXN1bHQtPnBvcz0wOworICAg
IAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgdHNmX2J1Zl93cml0ZXJfZGVzdHJveSh0
c2ZfYnVmX3d0cl90ICpidWYpIHsKKyAgICAvKiB1aCwgY2xvc2UgdGhlIGZkIGlmIGtlZXBfZmQg
aXMgc2V0PyAqLworICAgIGZyZWUoYnVmLT5idWYpOworICAgIGZyZWUoYnVmKTsKK30KKwordHNm
X2Jvb2xfdCB0c2ZfYnVmX3dyaXRlcl93cml0ZSh2b2lkICpfYnVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB0c2ZfYnVmX3d0cl90ICpidWYgID1fYnVm
OworICAgIAorI2lmZGVmIEhBVkVfV1JJVEVWCisgICAgaWYgKGJ1Zi0+cG9zICsgbGVuID4gYnVm
LT5zaXplKSB7CisgICAgICAgIGlmIChidWYtPnBvcykgeworICAgICAgICAgICAgc3RydWN0IGlv
dmVjIGlvdlsyXTsKKyAgICAgICAgICAgIGlvdlswXS5pb3ZfYmFzZSA9ICh2b2lkKilidWYtPmJ1
ZjsKKyAgICAgICAgICAgIGlvdlswXS5pb3ZfbGVuID0gYnVmLT5wb3M7CisgICAgICAgICAgICBp
b3ZbMV0uaW92X2Jhc2UgPSAodm9pZCopZGF0YTsKKyAgICAgICAgICAgIGlvdlsxXS5pb3ZfbGVu
ID0gbGVuOworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGludCByZXMg
PSB3cml0ZXYoYnVmLT5mZCwgaW92LCAyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzIDwgMCkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNhbGxpbmcgd3JpdGV2KCkgaW4gIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfYnVmX3dyaXRlcl93cml0ZSgpIik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmICgodW5zaWduZWQpcmVzID49IGlvdlswXS5pb3ZfbGVuKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGEgPSAoKHVpbnQ4X3QqKWRhdGEpICsgcmVzLWlvdlswXS5pb3Zf
bGVuOworICAgICAgICAgICAgICAgICAgICBsZW4gLT0gcmVzIC0gaW92WzBdLmlvdl9sZW47Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpb3ZbMF0uaW92X2Jhc2UgKz0gcmVzOworICAgICAgICAgICAgICAgIGlvdlswXS5pb3Zf
bGVuIC09IHJlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1Zi0+cG9zID0gMDsKKyAg
ICAgICAgICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0c2ZfYXNzZXJ0KGJ1Zi0+cG9z
ID09IDApOworICAgICAgICBpZiAobGVuID4gYnVmLT5zaXplKSB7CisgICAgICAgICAgICByZXR1
cm4gdHNmX2ZkX3dyaXRlcigmYnVmLT5mZCwgZGF0YSwgbGVuKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbHNlCisgICAgaWYgKGJ1Zi0+cG9zICsgbGVuID49IGJ1Zi0+c2l6ZSkgeworICAgICAgICAv
KiBoYXZlIHRvIGZsdXNoIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIHJvb20gaW4gb3VyIGJ1
ZmZlcgorICAgICAgICAgKiBvdGhlcndpc2UuICovCisgICAgICAgIGlmICghdHNmX2J1Zl93cml0
ZXJfZmx1c2goYnVmKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBpZiAobGVuID49IGJ1Zi0+c2l6ZSAmJiBidWYtPnBvcyA9PSAw
KSB7CisgICAgICAgIC8qIHdlIGp1c3Qgd3JpdGUgbm93IGJlY2F1c2Ugd2UgYXJlIGJlaW5nIGdp
dmVuIG1vcmUgZGF0YSB0aGFuCisgICAgICAgICAqIG91ciBidWZmZXIgY291bGQgc3RvcmUuICov
CisgICAgICAgIHJldHVybiB0c2ZfZmRfd3JpdGVyKCZidWYtPmZkLCBkYXRhLCBsZW4pOworICAg
IH0KKyNlbmRpZgorICAgIAorICAgIC8qCisgICAgcHJpbnRmKCIgYnVmLT5idWYgPSAlcFxuIixi
dWYtPmJ1Zik7CisgICAgcHJpbnRmKCIgYnVmLT5wb3MgPSAiIGZ1aTMyICJcbiIsYnVmLT5wb3Mp
OworICAgIHByaW50ZigiYnVmLT5zaXplID0gIiBmdWkzMiAiXG4iLGJ1Zi0+c2l6ZSk7CisgICAg
cHJpbnRmKCIgICAgIGRhdGEgPSAlcFxuIixkYXRhKTsKKyAgICBwcmludGYoIiAgICAgIGxlbiA9
ICIgZnVpMzIgIlxuIixsZW4pOworICAgICovCisgICAgCisgICAgbWVtY3B5KGJ1Zi0+YnVmICsg
YnVmLT5wb3MsIGRhdGEsIGxlbik7CisgICAgYnVmLT5wb3MgKz0gbGVuOworICAgIAorICAgIHJl
dHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfYnVmX3dyaXRlcl9mbHVzaCh0c2Zf
YnVmX3d0cl90ICpidWYpIHsKKyAgICBpZiAoIXRzZl9mZF93cml0ZXIoJmJ1Zi0+ZmQsYnVmLT5i
dWYsYnVmLT5wb3MpKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIGJ1
Zi0+cG9zPTA7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCisKKwpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9idWZmZXIuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1ZmZlci5jCShub25leGlz
dGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmZmVy
LmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDE0LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAg
UElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisjaWZkZWYg
SEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKyNpZmRlZiBERUJV
R19CVUZGRVJfQUxMT0MKK3N0YXRpYyBpbnQ2NF90IGJ1ZmZlcl9iYWxhbmNlID0gMDsKKworaW50
NjRfdCB0c2ZfYnVmZmVyX2dldF9iYWxhbmNlKCkgeworICAgIHJldHVybiBidWZmZXJfYmFsYW5j
ZTsKK30KKworI2RlZmluZSBpbmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKSBkbyB7XAorICAgIGJ1
ZmZlcl9iYWxhbmNlKys7XAorfSB3aGlsZSgwKQorCisjZGVmaW5lIGRlY3JlbWVudF9idWZmZXJf
YmFsYW5jZSgpIGRvIHtcCisgICAgYnVmZmVyX2JhbGFuY2UtLTtcCit9IHdoaWxlKDApCisKKyNl
bHNlCisKKyNkZWZpbmUgaW5jcmVtZW50X2J1ZmZlcl9iYWxhbmNlKCkgZG8ge1wKK30gd2hpbGUo
MCkKKworI2RlZmluZSBkZWNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKSBkbyB7XAorfSB3aGlsZSgw
KQorCisjZW5kaWYKKworc3RhdGljIHRzZl9idWZmZXJfdCBlbXB0eV9idWZmZXI7CisKK3N0YXRp
YyB2b2lkIGluaXRfZW1wdHlfYnVmZmVyKHZvaWQpIHsKKyAgICBlbXB0eV9idWZmZXIudHlwZT10
c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX1ZPSUQpOworICAgIGVtcHR5X2J1ZmZlci50eXBlcz10c2Zf
dHlwZV9pbl9tYXBfZ2V0X2VtcHR5X3NpbmdsZXRvbigpOworICAgIGVtcHR5X2J1ZmZlci5kYXRh
PU5VTEw7CisgICAgZW1wdHlfYnVmZmVyLnNpemU9MDsKKyAgICBlbXB0eV9idWZmZXIua2VlcD10
c2ZfZmFsc2U7Cit9CisKK3N0YXRpYyB0c2Zfb25jZV90IG9uY2VfY29udHJvbCA9IFRTRl9PTkNF
X0lOSVQ7CisKK3N0YXRpYyB2b2lkIGNoZWNrX2luaXRfZW1wdHlfYnVmZmVyKHZvaWQpIHsKKyAg
ICB0c2Zfb25jZSgmb25jZV9jb250cm9sLCBpbml0X2VtcHR5X2J1ZmZlcik7Cit9CisKK3RzZl9i
dWZmZXJfdCAqdHNmX2J1ZmZlcl9nZXRfZW1wdHlfc2luZ2xldG9uKHZvaWQpIHsKKyAgICBjaGVj
a19pbml0X2VtcHR5X2J1ZmZlcigpOworICAgIHJldHVybiAmZW1wdHlfYnVmZmVyOworfQorCit0
c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfY3JlYXRlKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF90ICp0eXBlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX2Jvb2xfdCBrZWVwKSB7CisgICAgdHNmX2J1ZmZlcl90ICpyZXQ9bWFsbG9jKHNp
emVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSB0c2ZfYnVmZmVyX3Qgc3RydWN0LiIpOworICAg
ICAgICBpZiAoa2VlcCkgeworICAgICAgICAgICAgZnJlZShkYXRhKTsKKyAgICAgICAgfQorICAg
ICAgICB0c2ZfdHlwZV9pbl9tYXBfZGVzdHJveSh0eXBlcyk7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGU9dHNmX3R5cGVfZHVwKHR5cGUpOworICAgIHJl
dC0+dHlwZXM9dHlwZXM7CisgICAgcmV0LT5kYXRhPWRhdGE7CisgICAgcmV0LT5zaXplPXNpemU7
CisgICAgcmV0LT5rZWVwPWtlZXA7CisgICAgCisgICAgdHNmX2F0b21pY19jb3VudF9pbml0KCZy
ZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgaW5jcmVtZW50X2J1ZmZlcl9iYWxhbmNlKCk7
CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCB0c2ZfYnVmZmVyX2luaXRpYWxpemVf
Y3VzdG9tKHRzZl9idWZmZXJfdCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmJhY2tpbmdfc3RvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGJhY2tpbmdfc3RvcmVfc2l6ZSkgeworICAgIGJ1Zi0+ZGF0YSA9IGJhY2tpbmdf
c3RvcmU7CisgICAgYnVmLT5zaXplID0gYmFja2luZ19zdG9yZV9zaXplOworICAgIGJ1Zi0+a2Vl
cCA9IHRzZl9mYWxzZTsKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJmJ1Zi0+cmVmX2NvdW50
LCAwKTsKK30KKwordHNmX2J1ZmZlcl90ICp0c2ZfYnVmZmVyX2NyZWF0ZV9iYXJlKHZvaWQpIHsK
KyAgICB0c2ZfYnVmZmVyX3QgKnJlc3VsdCA9IG1hbGxvYyhzaXplb2YodHNmX2J1ZmZlcl90KSk7
CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxk
IG5vdCBtYWxsb2MgYSB0c2ZfYnVmZmVyX3Qgc3RydWN0LiIpOworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5kYXRhID0gTlVMTDsKKyAgICByZXN1bHQtPnNp
emUgPSAwOworICAgIHJlc3VsdC0+a2VlcCA9IHRzZl9mYWxzZTsKKworICAgIHRzZl9hdG9taWNf
Y291bnRfaW5pdCgmcmVzdWx0LT5yZWZfY291bnQsIDEpOworICAgIAorICAgIGluY3JlbWVudF9i
dWZmZXJfYmFsYW5jZSgpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl9idWZm
ZXJfdCAqdHNmX2J1ZmZlcl9jcmVhdGVfYmFyZV9pbih2b2lkICpyZWdpb24pIHsKKyAgICB0c2Zf
YnVmZmVyX3QgKnJlc3VsdCA9IHRzZl9yZWdpb25fYWxsb2MocmVnaW9uLCBzaXplb2YodHNmX2J1
ZmZlcl90KSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FsbG9jIGEgdHNmX2J1ZmZlcl90IHN0cnVjdC4iKTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+ZGF0YSA9IE5V
TEw7CisgICAgcmVzdWx0LT5zaXplID0gMDsKKyAgICByZXN1bHQtPmtlZXAgPSB0c2ZfZmFsc2U7
CisKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJnJlc3VsdC0+cmVmX2NvdW50LCAwKTsKKyAg
ICAKKyAgICBpbmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit0c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfY3JlYXRlX2luKHRzZl90eXBlX3Qg
KnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21h
cF90ICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgdHNm
X2J1ZmZlcl90ICpyZXQ9dHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sc2l6ZW9mKHRzZl9idWZmZXJf
dCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IHRzZl9yZWdpb25fYWxsb2MgdHNmX2J1ZmZlcl90IHN0cnVjdC4iKTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2socmVn
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRzZl9yZWdpb25fY2JhY2tfdCl0
c2ZfdHlwZV9kZXN0cm95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpIHsK
KyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHRzZl9yZWdpb25fYWRkX2NiYWNrIGZv
ciAiCisgICAgICAgICAgICAgICAgICAgICAgInRzZl90eXBlX2Rlc3Ryb3kiKTsKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+dHlwZT10c2ZfdHlwZV9kdXAodHlw
ZSk7CisgICAgcmV0LT50eXBlcz10eXBlczsKKyAgICByZXQtPmRhdGE9ZGF0YTsKKyAgICByZXQt
PnNpemU9c2l6ZTsKKyAgICByZXQtPmtlZXA9dHNmX2ZhbHNlOworICAgIAorICAgIHRzZl9hdG9t
aWNfY291bnRfaW5pdCgmcmV0LT5yZWZfY291bnQsIDApOworCisgICAgcmV0dXJuIHJldDsKK30K
KwordHNmX2J1ZmZlcl90ICp0c2ZfYnVmZmVyX2R1cCh0c2ZfYnVmZmVyX3QgKmJ1ZikgeworICAg
IGlmIChidWY9PSZlbXB0eV9idWZmZXIpIHsKKwlyZXR1cm4gYnVmOworICAgIH0KKyAgICAKKyAg
ICAvKiBLZWVwIGJlaW5nIGZhbHNlIG1lYW5zIHRoYXQgc29tZW9uZSBlbHNlIG93bnMgdGhlIGJh
Y2tpbmcgc3RvcmUuIE51bGwgcmVmZXJlbmNlIGNvdW50IG1lYW5zIAorICAgICAgIHRoYXQgdGhp
cyBidWZmZXIgaXMgb3duZWQgYnkgc29tZW9uZSBlbHNlLiAqLworICAgIGlmICghYnVmLT5rZWVw
IHx8ICF0c2ZfYXRvbWljX2NvdW50X3ZhbHVlKCZidWYtPnJlZl9jb3VudCkpIHsKKyAgICAgICAg
cmV0dXJuIHRzZl9idWZmZXJfY2xvbmUoYnVmKTsKKyAgICB9CisgICAgCisgICAgdHNmX2F0b21p
Y19jb3VudF94YWRkKCZidWYtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgaW5jcmVtZW50X2J1
ZmZlcl9iYWxhbmNlKCk7CisgICAgCisgICAgcmV0dXJuIGJ1ZjsKK30KKwordHNmX2J1ZmZlcl90
ICp0c2ZfYnVmZmVyX2Nsb25lKHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdHNmX2J1ZmZlcl90
ICpyZXQ9bWFsbG9jKHNpemVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0PT1OVUxMKSB7
CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2J1ZmZlcl90Iik7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnNpemU9YnVmLT5z
aXplOworICAgIHJldC0+ZGF0YT1tYWxsb2MoYnVmLT5zaXplKTsKKyAgICBpZiAocmV0LT5kYXRh
PT1OVUxMKSB7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IG1hbGxvYyBidWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IAorICAgIG1lbWNweShyZXQtPmRhdGEsYnVmLT5kYXRhLHJldC0+c2l6ZSk7CisgICAgCisgICAg
cmV0LT50eXBlPXRzZl90eXBlX2R1cChidWYtPnR5cGUpOworICAgIHJldC0+dHlwZXM9dHNmX3R5
cGVfaW5fbWFwX2Nsb25lKGJ1Zi0+dHlwZXMpOworICAgIGlmIChyZXQtPnR5cGVzPT1OVUxMKSB7
CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgZnJlZShyZXQt
PmRhdGEpOworICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KyAgICAKKyAgICByZXQtPmtlZXA9dHNmX3RydWU7CisgICAgCisgICAgdHNmX2F0b21pY19jb3Vu
dF9pbml0KCZyZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgaW5jcmVtZW50X2J1ZmZlcl9i
YWxhbmNlKCk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordHNmX2J1ZmZlcl90ICp0c2Zf
YnVmZmVyX2Nsb25lX2luKHRzZl9idWZmZXJfdCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbikgeworICAgIHRzZl9idWZmZXJfdCAqcmV0PXRzZl9y
ZWdpb25fYWxsb2MocmVnaW9uLHNpemVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0PT1O
VUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FsbG9j
IHRzZl9idWZmZXJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAg
cmV0LT5zaXplPWJ1Zi0+c2l6ZTsKKyAgICByZXQtPmRhdGE9dHNmX3JlZ2lvbl9hbGxvYyhyZWdp
b24sYnVmLT5zaXplKTsKKyAgICBpZiAocmV0LT5kYXRhPT1OVUxMKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FsbG9jIGJ1ZmZlciIpOworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgbWVtY3B5KHJldC0+ZGF0YSxidWYtPmRhdGEs
cmV0LT5zaXplKTsKKworICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2socmVnaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRzZl9yZWdpb25fY2JhY2tfdCl0c2ZfdHlwZV9k
ZXN0cm95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLT50eXBlKSkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3JlZ2lvbl9hZGRfY2JhY2sgZm9yICIK
KyAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfZGVzdHJveSIpOworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT50eXBlPXRzZl90eXBlX2R1cChidWYtPnR5
cGUpOworICAgIHJldC0+dHlwZXM9dHNmX3R5cGVfaW5fbWFwX2Nsb25lX2luKGJ1Zi0+dHlwZXMs
cmVnaW9uKTsKKyAgICBpZiAocmV0LT50eXBlcz09TlVMTCkgeworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgCisgICAgcmV0LT5rZWVwPXRzZl9mYWxzZTsKKyAgICAKKyAgICByZXR1
cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBkZXN0cm95X2J1ZmZlcl9jb250ZW50cyh0c2ZfYnVm
ZmVyX3QgKmJ1ZikgeworICAgIGlmIChidWYtPmtlZXApIHsKKyAgICAgICAgZnJlZShidWYtPmRh
dGEpOworICAgIH0KKworICAgIHRzZl9hdG9taWNfY291bnRfZGVzdHJveSgmYnVmLT5yZWZfY291
bnQpOworICAgIHRzZl90eXBlX2Rlc3Ryb3koYnVmLT50eXBlKTsKKyAgICB0c2ZfdHlwZV9pbl9t
YXBfZGVzdHJveShidWYtPnR5cGVzKTsKK30KKwordm9pZCB0c2ZfYnVmZmVyX2Rlc3Ryb3lfY3Vz
dG9tKHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdHNmX2Fzc2VydCh0c2ZfYXRvbWljX2NvdW50
X3ZhbHVlKCZidWYtPnJlZl9jb3VudCkgPT0gMCk7CisgICAgZGVzdHJveV9idWZmZXJfY29udGVu
dHMoYnVmKTsKK30KKwordm9pZCB0c2ZfYnVmZmVyX2Rlc3Ryb3kodHNmX2J1ZmZlcl90ICpidWYp
IHsKKyAgICBpZiAoYnVmPT0mZW1wdHlfYnVmZmVyKSB7CisJcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICB0c2ZfYXNzZXJ0KHRzZl9hdG9taWNfY291bnRfdmFsdWUoJmJ1Zi0+cmVmX2NvdW50KSk7
CisgICAgCisgICAgZGVjcmVtZW50X2J1ZmZlcl9iYWxhbmNlKCk7CisgICAgCisgICAgaWYgKHRz
Zl9hdG9taWNfY291bnRfeHN1YigmYnVmLT5yZWZfY291bnQsIDEpID4gMSkgeworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGRlc3Ryb3lfYnVmZmVyX2NvbnRlbnRzKGJ1Zik7Cisg
ICAgZnJlZShidWYpOworfQorCit2b2lkIHRzZl9idWZmZXJfZGVzdHJveV9iYXJlKHRzZl9idWZm
ZXJfdCAqYnVmKSB7CisgICAgZnJlZShidWYpOworfQorCit1aW50MzJfdCB0c2ZfYnVmZmVyX2dl
dF9zaXplKHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgcmV0dXJuIGJ1Zi0+c2l6ZTsKK30KKwor
Y29uc3Qgdm9pZCAqdHNmX2J1ZmZlcl9nZXRfZGF0YSh0c2ZfYnVmZmVyX3QgKmJ1ZikgeworICAg
IHJldHVybiBidWYtPmRhdGE7Cit9CisKK3R5cGVkZWYgZW51bSB7CisgICAgc21hbGxfbGVuZ3Ro
LAorICAgIGxhcmdlX2xlbmd0aAorfSBsZW5ndGhfc2l6ZV90OworCitzdGF0aWMgdHNmX2Jvb2xf
dCByZWFkX2J1ZmZlcl9pbXBsKHRzZl9idWZmZXJfdCAqcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlX2NvZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF90ICplbmNsb3NpbmdfdHlwZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWFkZXJfdCByZWFkZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1pdHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF9zaXplX3QgbGVuZ3RoX3NpemUpIHsKKyAg
ICB1aW50MzJfdCBzaXplOworICAgIAorICAgIGlmICh0eXBlX2NvZGUgPj0gdHNmX3R5cGVfaW5f
bWFwX2dldF9udW1fdHlwZXMoZW5jbG9zaW5nX3R5cGVzKSkgeworICAgICAgICB0c2Zfc2V0X2Vy
cm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJUeXBlIGNvZGUg
aXMgb3V0c2lkZSBvZiBib3VuZHMgb2YgdHlwZSBtYXA6ICIKKyAgICAgICAgICAgICAgICAgICAg
ICBmdWkzMiAiIGlzIHRoZSB0eXBlIGNvZGUsIHdoaWxlIHRoZSB0eXBlIG1hcCAiCisgICAgICAg
ICAgICAgICAgICAgICAgImhhcyBhIHNpemUgb2YgIiBmdWkzMiwKKyAgICAgICAgICAgICAgICAg
ICAgICB0eXBlX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2dl
dF9udW1fdHlwZXMoZW5jbG9zaW5nX3R5cGVzKSk7CisgICAgICAgIGdvdG8gZXJyb3IxOworICAg
IH0KKyAgICAKKyAgICByZXN1bHQtPnR5cGUgPSB0c2ZfdHlwZV9kdXAoCisgICAgICAgIHRzZl90
eXBlX2luX21hcF9nZXRfdHlwZShlbmNsb3NpbmdfdHlwZXMsIHR5cGVfY29kZSkpOworICAgIAor
ICAgIGlmICh0c2ZfdHlwZV9pc19keW5hbWljKHJlc3VsdC0+dHlwZSkpIHsKKyAgICAgICAgLyog
bXVzdCByZWFkIHR5cGUgdHJhbnNsYXRpb24gdGFibGUuICovCisgICAgICAgIHVpbnQzMl90IG51
bV90eXBlczsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIAorICAgICAgICByZXN1
bHQtPnR5cGVzID0gdHNmX3R5cGVfaW5fbWFwX2NyZWF0ZSgpOworICAgICAgICBpZiAocmVzdWx0
LT50eXBlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yMjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKCFyZWFkZXIoYXJnLCAmbnVtX3R5cGVzLCBzaXplb2YobnVt
X3R5cGVzKSkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3IzOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBudW1fdHlwZXMgPSBudG9obChudW1fdHlwZXMpOworICAgICAgICAKKyAgICAg
ICAgdHNmX3R5cGVfaW5fbWFwX3ByZXBhcmUocmVzdWx0LT50eXBlcywgbnVtX3R5cGVzKTsKKyAg
ICAgICAgCisgICAgICAgIHdoaWxlIChudW1fdHlwZXMgLS0+IDApIHsKKyAgICAgICAgICAgIGlm
ICghcmVhZGVyKGFyZywgJmluZGV4LCBzaXplb2YoaW5kZXgpKSkgeworICAgICAgICAgICAgICAg
IGdvdG8gZXJyb3IzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBp
bmRleCA9IG50b2hsKGluZGV4KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGluZGV4
ID49IHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVzKGVuY2xvc2luZ190eXBlcykpIHsKKyAg
ICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkluZGV4ICIgZnVpMzIgIiBpbnRvIGVuY2xvc2luZyB0eXBl
IHRhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyBvdXRzaWRlIG9mIGJv
dW5kczsgdGhlIGVuY2xvc2luZyB0YWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaGFzIGEgc2l6ZSBvZiAiIGZ1aTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0
X251bV90eXBlcyhlbmNsb3NpbmdfdHlwZXMpKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9y
MzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c2ZfdHlw
ZV9pbl9tYXBfYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICByZXN1bHQtPnR5cGVzLAorICAg
ICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoZW5jbG9zaW5nX3R5cGVz
LCBpbmRleCkpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjM7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQtPnR5cGVzID0gdHNmX3R5
cGVfaW5fbWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGxl
bmd0aF9zaXplKSB7CisgICAgY2FzZSBzbWFsbF9sZW5ndGg6IHsKKyAgICAgICAgdWludDhfdCBt
eV9zaXplOworICAgICAgICBpZiAoIXJlYWRlcihhcmcsICZteV9zaXplLCBzaXplb2YobXlfc2l6
ZSkpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgfQorICAgICAgICBzaXpl
ID0gbXlfc2l6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgbGFyZ2VfbGVuZ3Ro
OiB7CisgICAgICAgIGlmICghcmVhZGVyKGFyZywgJnNpemUsIHNpemVvZihzaXplKSkpIHsKKyAg
ICAgICAgICAgIGdvdG8gZXJyb3IzOworICAgICAgICB9CisgICAgICAgIHNpemUgPSBudG9obChz
aXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgfSB9CisgICAgCisgICAgaWYgKHNpemUgPiB0c2Zf
bGltaXRzX21heF9idWZfc2l6ZShsaW1pdHMpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNG
X0VfUEFSU0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIkJ1ZmZlciBzaXplIGV4Y2Vl
ZHMgbGltaXQiKTsKKyAgICAgICAgZ290byBlcnJvcjM7CisgICAgfQorICAgIAorICAgIGlmIChz
aXplID4gcmVzdWx0LT5zaXplKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YSA9IG1hbGxvYyhzaXpl
KTsKKyAgICAgICAgaWYgKHJlc3VsdC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgYnVmZmVyIGRhdGEuIik7CisgICAgICAgICAg
ICBnb3RvIGVycm9yMzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzdWx0LT5rZWVw
ID0gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+c2l6ZSA9IHNpemU7CisgICAg
CisgICAgaWYgKCFyZWFkZXIoYXJnLCByZXN1bHQtPmRhdGEsIHJlc3VsdC0+c2l6ZSkpIHsKKyAg
ICAgICAgZ290byBlcnJvcjQ7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKKwor
ZXJyb3I0OgorICAgIGZyZWUocmVzdWx0LT5kYXRhKTsKKyAgICByZXN1bHQtPmtlZXAgPSB0c2Zf
ZmFsc2U7CitlcnJvcjM6CisgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3kocmVzdWx0LT50eXBl
cyk7CitlcnJvcjI6CisgICAgdHNmX3R5cGVfZGVzdHJveShyZXN1bHQtPnR5cGUpOworZXJyb3Ix
OgorICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl9yZWFk
X3NpbXBsZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqZW5jbG9zaW5nX3R5cGVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl9yZWFkZXJfdCByZWFkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzKSB7CisgICAgdWludDMyX3QgdHlwZV9jb2RlOwor
ICAgIAorICAgIGlmICghcmVhZGVyKGFyZywgJnR5cGVfY29kZSwgc2l6ZW9mKHR5cGVfY29kZSkp
KSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiBy
ZWFkX2J1ZmZlcl9pbXBsKGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9obCh0
eXBlX2NvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2xvc2luZ190eXBlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXJnZV9sZW5ndGgpOworfQorCit0c2ZfYm9vbF90IHRz
Zl9idWZmZXJfcmVhZF9zbWFsbF93aXRoX3R5cGVfY29kZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5
cGVfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl90eXBlX2luX21hcF90ICplbmNsb3NpbmdfdHlwZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfcmVhZGVyX3QgcmVhZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190
ICpsaW1pdHMpIHsKKyAgICByZXR1cm4gcmVhZF9idWZmZXJfaW1wbChidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZV9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuY2xvc2luZ190eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbF9sZW5ndGgpOwor
fQorCit0c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfcmVhZF9mcm9tX2J1Zih0c2ZfdHlwZV9pbl9t
YXBfdCAqZW5jbG9zaW5nX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCAqKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKnJlZ2lvbikgeworICAgIHVpbnQzMl90IHR5cGVfY29kZTsKKyAgICB0c2ZfdHlwZV90
ICp0eXBlOworICAgIHRzZl9idWZmZXJfdCAqcmV0ID0gdHNmX2NvbmRfYWxsb2MocmVnaW9uLCBz
aXplb2YodHNmX2J1ZmZlcl90KSk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYyB0c2ZfYnVmZmVyX3QiKTsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+a2VlcCA9IChyZWdpb24g
PT0gTlVMTCA/IHRzZl90cnVlIDogdHNmX2ZhbHNlKTsKKyAgICAKKyAgICBjb3B5X250b2hsX2lu
Y3NyY19iYygodWludDhfdCopJnR5cGVfY29kZSwgKmN1ciwgZW5kLCBwaGFzZTFfYm91bmRzX2Vy
cm9yKTsKKyAgICAKKyAgICBpZiAodHlwZV9jb2RlID49IHRzZl90eXBlX2luX21hcF9nZXRfbnVt
X3R5cGVzKGVuY2xvc2luZ190eXBlcykpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9Q
QVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAiVHlwZSBjb2RlIGlzIG91dHNpZGUg
b2YgYm91bmRzIG9mIHR5cGUgbWFwOiAiCisgICAgICAgICAgICAgICAgICAgICAgZnVpMzIgIiBp
cyB0aGUgdHlwZSBjb2RlLCB3aGlsZSB0aGUgdHlwZSBtYXAgIgorICAgICAgICAgICAgICAgICAg
ICAgICJoYXMgYSBzaXplIG9mICIgZnVpMzIsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZV9j
b2RlLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVz
KGVuY2xvc2luZ190eXBlcykpOworICAgICAgICBpZiAocmVnaW9uID09IE5VTEwpIHsKKyAgICAg
ICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisgICAgCisgICAgdHlwZSA9IHRzZl90eXBlX2luX21hcF9nZXRfdHlwZShlbmNsb3NpbmdfdHlw
ZXMsIHR5cGVfY29kZSk7CisgICAgCisgICAgaWYgKHJlZ2lvbiAhPSBOVUxMKSB7CisgICAgICAg
IGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2socmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh0c2ZfcmVnaW9uX2NiYWNrX3QpdHNmX3R5cGVfZGVzdHJveSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKSkgeworICAgICAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IHRzZl9yZWdpb25fYWRkX2NiYWNrIGZvciAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ0c2ZfdHlwZV9kZXN0cm95Iik7CisgICAgICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGUgPSB0c2ZfdHlwZV9k
dXAodHlwZSk7CisgICAgCisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWMocmV0LT50eXBlKSkg
eworICAgICAgICAvKiBtdXN0IHJlYWQgdHlwZSB0cmFuc2xhdGlvbiB0YWJsZS4gKi8KKyAgICAg
ICAgdWludDMyX3QgbnVtX3R5cGVzOworICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAgICAg
CisgICAgICAgIGlmIChyZWdpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0LT50eXBlcyA9
IHRzZl90eXBlX2luX21hcF9jcmVhdGUoKTsKKyAgICAgICAgICAgIGlmIChyZXQtPnR5cGVzID09
IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7Cisg
ICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0LT50eXBlcyA9
IHRzZl90eXBlX2luX21hcF9jcmVhdGVfaW4ocmVnaW9uKTsKKyAgICAgICAgICAgIGlmIChyZXQt
PnR5cGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29weV9udG9obF9pbmNzcmNfYmMo
KHVpbnQ4X3QqKSZudW1fdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjdXIs
IGVuZCwgcGhhc2UyX2JvdW5kc19lcnJvcik7CisgICAgICAgIAorICAgICAgICB0c2ZfdHlwZV9p
bl9tYXBfcHJlcGFyZShyZXQtPnR5cGVzLCBudW1fdHlwZXMpOworICAgICAgICAKKyAgICAgICAg
d2hpbGUgKG51bV90eXBlcyAtLT4gMCkgeworICAgICAgICAgICAgY29weV9udG9obF9pbmNzcmNf
YmMoKHVpbnQ4X3QqKSZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpj
dXIsIGVuZCwgcGhhc2UyX2JvdW5kc19lcnJvcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChpbmRleCA+PSB0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhlbmNsb3NpbmdfdHlw
ZXMpKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmRleCAiIGZ1aTMyICIgaW50byBlbmNs
b3NpbmcgdHlwZSB0YWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXMgb3V0
c2lkZSBvZiBib3VuZHM7IHRoZSBlbmNsb3NpbmcgdGFibGUgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImhhcyBhIHNpemUgb2YgIiBmdWkzMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
aW5fbWFwX2dldF9udW1fdHlwZXMoZW5jbG9zaW5nX3R5cGVzKSk7CisgICAgICAgICAgICAgICAg
aWYgKHJlZ2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21h
cF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0
cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdHNmX3R5cGVfaW5fbWFwX2FwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgIHJldC0+dHlwZXMsCisgICAgICAgICAgICAgICAgICAgICB0c2Zf
dHlwZV9pbl9tYXBfZ2V0X3R5cGUoZW5jbG9zaW5nX3R5cGVzLCBpbmRleCkpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJlZ2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl90
eXBlX2luX21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAgICAgICAgICB0c2Zf
dHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGZyZWUocmV0KTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICByZXQtPnR5cGVzID0gdHNm
X3R5cGVfaW5fbWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKTsKKyAgICB9CisgICAgCisgICAgY29w
eV9udG9obF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZyZXQtPnNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgKmN1ciwgZW5kLCBwaGFzZTJfYm91bmRzX2Vycm9yKTsKKyAgICAKKyAgICBpZiAo
cmV0LT5zaXplICsgKmN1ciA+IGVuZCkgeworICAgICAgICBnb3RvIHBoYXNlMl9ib3VuZHNfZXJy
b3I7CisgICAgfQorICAgIAorICAgIHJldC0+ZGF0YSA9IHRzZl9jb25kX2FsbG9jKHJlZ2lvbiwg
cmV0LT5zaXplKTsKKyAgICBpZiAocmV0LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHJl
Z2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZGVzdHJveShyZXQt
PnR5cGVzKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAg
ICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgfQorICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgdHNmX2NvbmRfYWxsb2MgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICBtZW1jcHkocmV0LT5kYXRhLCAqY3VyLCByZXQtPnNpemUpOworICAgICgq
Y3VyKSArPSByZXQtPnNpemU7CisgICAgCisgICAgaWYgKHJlZ2lvbiA9PSBOVUxMKSB7CisgICAg
ICAgIHRzZl9hdG9taWNfY291bnRfaW5pdCgmcmV0LT5yZWZfY291bnQsIDEpOworICAgICAgICBp
bmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJldDsK
KworcGhhc2UyX2JvdW5kc19lcnJvcjoKKyAgICBpZiAocmVnaW9uID09IE5VTEwpIHsKKyAgICAg
ICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOworICAgICAgICB0c2ZfdHlwZV9pbl9tYXBf
ZGVzdHJveShyZXQtPnR5cGVzKTsKKyAgICB9CitwaGFzZTFfYm91bmRzX2Vycm9yOgorICAgIGlm
IChyZWdpb24gPT0gTlVMTCkgeworICAgICAgICBmcmVlKHJldCk7CisgICAgfQorICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAiQm91bmRzIGVy
cm9yIGluIHRzZl9idWZmZXJfcmVhZF9mcm9tX2J1ZigpIik7CisgICAgcmV0dXJuIE5VTEw7Cit9
CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl9za2lwX2luX2J1Zih0c2ZfdHlwZV9pbl9tYXBfdCAq
ZW5jbG9zaW5nX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKipjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZW5k
KSB7CisgICAgdWludDMyX3QgdHlwZV9jb2RlLHNpemU7CisgICAgCisgICAgY29weV9udG9obF9p
bmNzcmNfYmMoKHVpbnQ4X3QqKSZ0eXBlX2NvZGUsKmN1cixlbmQsYm91bmRzX2Vycm9yKTsKKyAg
ICAKKyAgICBpZiAodHlwZV9jb2RlPj10c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhlbmNs
b3NpbmdfdHlwZXMpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1Is
CisgICAgICAgICAgICAgICAgICAgICAgIlR5cGUgY29kZSBpcyBvdXRzaWRlIG9mIGJvdW5kcyBv
ZiB0eXBlIG1hcDogIgorICAgICAgICAgICAgICAgICAgICAgIGZ1aTMyICIgaXMgdGhlIHR5cGUg
Y29kZSwgd2hpbGUgdGhlIHR5cGUgbWFwICIKKyAgICAgICAgICAgICAgICAgICAgICAiaGFzIGEg
c2l6ZSBvZiAiIGZ1aTMyLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGVfY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhlbmNsb3Npbmdf
dHlwZXMpKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYg
KHRzZl90eXBlX2lzX2R5bmFtaWMoCisgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5
cGUoZW5jbG9zaW5nX3R5cGVzLHR5cGVfY29kZSkpKSB7CisgICAgICAgIC8qIG11c3Qgc2tpcCB0
eXBlIHRyYW5zbGF0aW9uIHRhYmxlLiAqLworICAgICAgICB1aW50MzJfdCBudW1fdHlwZXM7Cisg
ICAgICAgIAorICAgICAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhfdCopJm51bV90eXBl
cywqY3VyLGVuZCxib3VuZHNfZXJyb3IpOworICAgICAgICAKKyAgICAgICAgKCpjdXIpKz1udW1f
dHlwZXMqNDsKKyAgICB9CisKKyAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhfdCopJnNp
emUsKmN1cixlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAKKyAgICBpZiAoc2l6ZSArICpjdXIgPiBl
bmQpIHsKKyAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgfQorICAgIAorICAgICgqY3Vy
KSs9c2l6ZTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7CisgICAgCitib3VuZHNfZXJyb3I6
CisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAg
ICJCb3VuZHMgZXJyb3IgaW4gdHNmX2J1ZmZlcl9za2lwX2luX2J1ZigpIik7CisgICAgcmV0dXJu
IHRzZl9mYWxzZTsKK30KKwordWludDMyX3QgdHNmX2J1ZmZlcl9jYWxjX3NpemUodHNmX2J1ZmZl
cl90ICpidWYpIHsKKyAgICByZXR1cm4gKHRzZl90eXBlX2lzX2R5bmFtaWMoYnVmLT50eXBlKSA/
CisgICAgICAgICAgICA0ICsgNCAqIHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVzKGJ1Zi0+
dHlwZXMpIDogMCkgKworICAgICAgICBidWYtPnNpemUgKyA0ICsgNDsKK30KKworc3RhdGljIHRz
Zl9ib29sX3Qgd3JpdGVfYnVmZmVyX2ltcGwodHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRlcl90IHdyaXRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF9zaXplX3QgbGVuZ3RoX3NpemUpIHsK
KyAgICBpZiAodHNmX3R5cGVfaXNfZHluYW1pYyhidWYtPnR5cGUpKSB7CisgICAgICAgIHVpbnQz
Ml90IG51bSwgaSwgc2l6ZV93b3JkOworICAgICAgICBudW0gPSB0c2ZfdHlwZV9pbl9tYXBfZ2V0
X251bV90eXBlcyhidWYtPnR5cGVzKTsKKyAgICAgICAgc2l6ZV93b3JkID0gaHRvbmwobnVtKTsK
KyAgICAgICAgaWYgKCF3cml0ZXIoYXJnLCAmc2l6ZV93b3JkLCBzaXplb2Yoc2l6ZV93b3JkKSkp
IHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZm9y
IChpID0gMDsgaSA8IG51bTsgKytpKSB7CisgICAgICAgICAgICB1aW50MzJfdCB0eXBlX2NvZGU7
CisgICAgICAgICAgICBpZiAoIXRzZl90eXBlX291dF9tYXBfZ2V0X3R5cGVfY29kZSgKKyAgICAg
ICAgICAgICAgICAgICAgIHR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
aW5fbWFwX2dldF90eXBlKGJ1Zi0+dHlwZXMsIGkpLAorICAgICAgICAgICAgICAgICAgICAgJnR5
cGVfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHR5cGVfY29kZSA9
IGh0b25sKHR5cGVfY29kZSk7CisgICAgICAgICAgICBpZiAoIXdyaXRlcihhcmcsICZ0eXBlX2Nv
ZGUsIHNpemVvZih0eXBlX2NvZGUpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3dpdGNoIChs
ZW5ndGhfc2l6ZSkgeworICAgIGNhc2Ugc21hbGxfbGVuZ3RoOiB7CisgICAgICAgIHVpbnQ4X3Qg
c2l6ZV9ieXRlID0gYnVmLT5zaXplOworICAgICAgICB0c2ZfYXNzZXJ0KCh1aW50MzJfdClzaXpl
X2J5dGUgPT0gYnVmLT5zaXplKTsKKyAgICAgICAgaWYgKCF3cml0ZXIoYXJnLCAmc2l6ZV9ieXRl
LCBzaXplb2Yoc2l6ZV9ieXRlKSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgbGFyZ2VfbGVuZ3RoOiB7
CisgICAgICAgIHVpbnQzMl90IHNpemVfd29yZCA9IGh0b25sKGJ1Zi0+c2l6ZSk7CisgICAgICAg
IGlmICghd3JpdGVyKGFyZywgJnNpemVfd29yZCwgc2l6ZW9mKHNpemVfd29yZCkpKSB7CisgICAg
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0gfQorICAgIAorICAgIGlmICghd3JpdGVyKGFyZywgYnVmLT5kYXRhLCBidWYtPnNpemUpKSB7
CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2Zf
dHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3dyaXRlX3NpbXBsZSh0c2ZfYnVmZmVy
X3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlw
ZV9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRf
bWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
d3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICphcmcpIHsKKyAgICB0eXBlX2NvZGUgPSBodG9ubCh0eXBlX2NvZGUpOworICAgIAorICAgIGlm
ICghd3JpdGVyKGFyZywgJnR5cGVfY29kZSwgc2l6ZW9mKHR5cGVfY29kZSkpKSB7CisgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB3cml0ZV9idWZmZXJf
aW1wbChidWYsIHR5cGVfbWFwLCB3cml0ZXIsIGFyZywgbGFyZ2VfbGVuZ3RoKTsKK30KKwordHNm
X2Jvb2xfdCB0c2ZfYnVmZmVyX3dyaXRlX3NtYWxsX3dpdGhfdHlwZV9jb2RlKHRzZl9idWZmZXJf
dCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl90eXBlX291dF9tYXBfdCAqdHlwZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRlcl90IHdyaXRlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAgICBy
ZXR1cm4gd3JpdGVfYnVmZmVyX2ltcGwoYnVmLCB0eXBlX21hcCwgd3JpdGVyLCBhcmcsIHNtYWxs
X2xlbmd0aCk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl93cml0ZV90b19idWYodHNmX2J1
ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBl
X291dF9tYXBfdCAqdHlwZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKip0YXJnZXQpIHsKKyAgICB1aW50MzJfdCB0eXBlX2NvZGU7CisgICAgCisgICAg
aWYgKCF0c2ZfdHlwZV9vdXRfbWFwX2dldF90eXBlX2NvZGUodHlwZV9tYXAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLT50eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlX2NvZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgY29weV9odG9ubF9pbmNkc3QoKnRhcmdldCwodWludDhfdCopJnR5
cGVfY29kZSk7CisKKyAgICBpZiAodHNmX3R5cGVfaXNfZHluYW1pYyhidWYtPnR5cGUpKSB7Cisg
ICAgICAgIHVpbnQzMl90IG51bSxpOworICAgICAgICBudW09dHNmX3R5cGVfaW5fbWFwX2dldF9u
dW1fdHlwZXMoYnVmLT50eXBlcyk7CisgICAgICAgIGNvcHlfaHRvbmxfaW5jZHN0KCp0YXJnZXQs
KHVpbnQ4X3QqKSZudW0pOworICAgICAgICBmb3IgKGk9MDtpPG51bTsrK2kpIHsKKyAgICAgICAg
ICAgIGlmICghdHNmX3R5cGVfb3V0X21hcF9nZXRfdHlwZV9jb2RlKAorICAgICAgICAgICAgICAg
ICAgICAgdHlwZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0
X3R5cGUoYnVmLT50eXBlcyxpKSwKKyAgICAgICAgICAgICAgICAgICAgICZ0eXBlX2NvZGUsCisg
ICAgICAgICAgICAgICAgICAgICBOVUxMKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3B5X2h0b25sX2luY2RzdCgqdGFy
Z2V0LCh1aW50OF90KikmdHlwZV9jb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBj
b3B5X2h0b25sX2luY2RzdCgqdGFyZ2V0LCh1aW50OF90KikmYnVmLT5zaXplKTsKKyAgICAKKyAg
ICBtZW1jcHkoKnRhcmdldCxidWYtPmRhdGEsYnVmLT5zaXplKTsKKyAgICAoKnRhcmdldCkrPWJ1
Zi0+c2l6ZTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNm
X2J1ZmZlcl93cml0ZV93aG9sZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIHVpbnQzMl90IHNpemU7CisgICAgCisg
ICAgaWYgKGJ1Zj09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIXRzZl90eXBlX3dyaXRlKHRzZl9idWZmZXJfZ2V0X3R5cGUoYnVmKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFy
ZykpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRz
Zl90eXBlX2lzX2R5bmFtaWModHNmX2J1ZmZlcl9nZXRfdHlwZShidWYpKSkgeworICAgICAgICB1
aW50MzJfdCBudW0saTsKKyAgICAgICAgCisgICAgICAgIG51bT10c2ZfdHlwZV9pbl9tYXBfZ2V0
X251bV90eXBlcyhidWYtPnR5cGVzKTsKKyAgICAgICAgc2l6ZT1odG9ubChudW0pOworICAgICAg
ICBpZiAoIXdyaXRlcihhcmcsJnNpemUsc2l6ZW9mKHNpemUpKSkgeworICAgICAgICAgICAgcmV0
dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGk9MDtpPG51bTsrK2kpIHsK
KyAgICAgICAgICAgIGlmICghdHNmX3R5cGVfd3JpdGUodHNmX3R5cGVfaW5fbWFwX2dldF90eXBl
KGJ1Zi0+dHlwZXMsaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKSkgeworICAgICAgICAgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgc2l6ZT1odG9ubChidWYtPnNpemUpOworICAgIGlmICghd3JpdGVyKGFyZywmc2l6ZSxz
aXplb2Yoc2l6ZSkpKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIGlmICghd3JpdGVyKGFyZyxidWYtPmRhdGEsYnVmLT5zaXplKSkgeworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3Rz
Zl9idWZmZXJfdCAqdHNmX2J1ZmZlcl9yZWFkX3dob2xlKHRzZl9yZWFkZXJfdCByZWFkZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cykgeworICAgIHRz
Zl9idWZmZXJfdCAqcmV0OworICAgIAorICAgIGlmICh0c2ZfbGltaXRzX21heF90eXBlcyhsaW1p
dHMpPDEpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAiTGltaXRzIGRvIG5vdCBhbGxvdyBmb3IgYW55IHR5cGVzLCB3aGls
ZSByZWFkaW5nIGEgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAK
KyAgICByZXQ9bWFsbG9jKHNpemVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0PT1OVUxM
KSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgYnVmZmVyIGluIHRz
Zl9idWZmZXJfcmVhZF93aG9sZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg
ICAKKyAgICByZXQtPmtlZXA9dHNmX3RydWU7CisgICAgCisgICAgcmV0LT50eXBlPXRzZl90eXBl
X3JlYWQocmVhZGVyLGFyZyxsaW1pdHMpOworICAgIGlmIChyZXQtPnR5cGU9PU5VTEwpIHsKKyAg
ICAgICAgZnJlZShyZXQtPnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAg
CisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWMocmV0LT50eXBlKSkgeworICAgICAgICB1aW50
MzJfdCBudW1fdHlwZXM7CisgICAgICAgIAorICAgICAgICByZXQtPnR5cGVzPXRzZl90eXBlX2lu
X21hcF9jcmVhdGUoKTsKKyAgICAgICAgaWYgKHJldC0+dHlwZXM9PU5VTEwpIHsKKyAgICAgICAg
ICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsK
KyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAoIXJlYWRlcihhcmcsJm51bV90eXBlcyxzaXplb2YobnVtX3R5cGVzKSkpIHsKKyAgICAgICAg
ICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAgdHNm
X3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG51bV90eXBl
cz1udG9obChudW1fdHlwZXMpOworICAgICAgICAKKyAgICAgICAgaWYgKDErbnVtX3R5cGVzID4g
dHNmX2xpbWl0c19tYXhfdHlwZXMobGltaXRzKSkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIk1heCB0eXBl
cyBsaW1pdCBleGNlZWRlZC4iKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95
KHJldC0+dHlwZXMpOworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOwor
ICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHRzZl90eXBlX2luX21hcF9wcmVwYXJlKHJldC0+dHlwZXMs
bnVtX3R5cGVzKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChudW1fdHlwZXMtLT4wKSB7Cisg
ICAgICAgICAgICBpZiAoIXRzZl90eXBlX2luX21hcF9hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIHJldC0+dHlwZXMsCisgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3JlYWQocmVhZGVy
LGFyZyxsaW1pdHMpKSkgeworICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95
KHJldC0+dHlwZXMpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBl
KTsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICByZXQt
PnR5cGVzPXRzZl90eXBlX2luX21hcF9nZXRfZW1wdHlfc2luZ2xldG9uKCk7CisgICAgfQorCisg
ICAgaWYgKCFyZWFkZXIoYXJnLCZyZXQtPnNpemUsc2l6ZW9mKHJldC0+c2l6ZSkpKSB7CisgICAg
ICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICB0c2ZfdHlw
ZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+c2l6ZT1udG9obChyZXQtPnNpemUpOworICAg
IAorICAgIGlmIChyZXQtPnNpemU+dHNmX2xpbWl0c19tYXhfYnVmX3NpemUobGltaXRzKSkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAg
ICAgICAgICJCdWZmZXIgc2l6ZSBleGNlZWRzIGxpbWl0Iik7CisgICAgICAgIHRzZl90eXBlX2lu
X21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+
dHlwZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIHJldC0+ZGF0YT1tYWxsb2MocmV0LT5zaXplKTsKKyAgICBpZiAocmV0LT5kYXRh
PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBidWZm
ZXIgZGF0YS4iKTsKKyAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3kocmV0LT50eXBlcyk7
CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgZnJlZShyZXQp
OworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFyZWFkZXIoYXJn
LHJldC0+ZGF0YSxyZXQtPnNpemUpKSB7CisgICAgICAgIGZyZWUocmV0LT5kYXRhKTsKKyAgICAg
ICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3kocmV0LT50eXBlcyk7CisgICAgICAgIHRzZl90eXBl
X2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJnJldC0+cmVmX2NvdW50
LCAxKTsKKyAgICBpbmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1cm4g
cmV0OworfQorCit0c2ZfYm9vbF90IHRzZl9idWZmZXJfY2FsY19zaGExKHRzZl9idWZmZXJfdCAq
YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcmVzdWx0KSB7
CisgICAgdHNmX3NoYTFfd3RyX3QgKnNoYTE9dHNmX3NoYTFfd3JpdGVyX2NyZWF0ZSgpOworICAg
IGlmIChzaGExPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIGlmICghdHNmX2J1ZmZlcl93cml0ZV93aG9sZShidWYsdHNmX3NoYTFfd3JpdGVyX3dy
aXRlLHNoYTEpKSB7CisgICAgICAgIHRzZl9zaGExX3dyaXRlcl9kZXN0cm95KHNoYTEpOworICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodHNmX3NoYTFfd3Jp
dGVyX2ZpbmlzaChzaGExKT09TlVMTCkgeworICAgICAgICB0c2Zfc2hhMV93cml0ZXJfZGVzdHJv
eShzaGExKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbWVt
Y3B5KHJlc3VsdCwKKyAgICAgICAgICAgdHNmX3NoYTFfd3JpdGVyX3Jlc3VsdChzaGExKSwKKyAg
ICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSo1KTsKKyAgICAKKyAgICB0c2Zfc2hhMV93cml0ZXJf
ZGVzdHJveShzaGExKTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29s
X3QgdHNmX2J1ZmZlcl9jb21wYXJlKHRzZl9idWZmZXJfdCAqYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYikgeworICAgIGlmIChhPT1iKSB7CisgICAgICAg
IHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKGEtPnNpemUhPWItPnNpemUp
IHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2Zf
dHlwZV9jb21wYXJlKGEtPnR5cGUsYi0+dHlwZSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWMoYS0+dHlwZSkpIHsK
KyAgICAgICAgdHNmX2Fzc2VydCh0c2ZfdHlwZV9pc19keW5hbWljKGItPnR5cGUpKTsKKyAgICAg
ICAgdHNmX2Fzc2VydChhLT50eXBlcyE9TlVMTCk7CisgICAgICAgIHRzZl9hc3NlcnQoYi0+dHlw
ZXMhPU5VTEwpOworICAgICAgICAKKyAgICAgICAgaWYgKCF0c2ZfdHlwZV9pbl9tYXBfY29tcGFy
ZShhLT50eXBlcyxiLT50eXBlcykpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0c2ZfYXNzZXJ0KGEtPnR5cGVzPT10c2Zf
dHlwZV9pbl9tYXBfZ2V0X2VtcHR5X3NpbmdsZXRvbigpKTsKKyAgICAgICAgdHNmX2Fzc2VydChi
LT50eXBlcz09dHNmX3R5cGVfaW5fbWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKSk7CisgICAgfQor
ICAgIAorICAgIGlmIChtZW1jbXAoYS0+ZGF0YSxiLT5kYXRhLGEtPnNpemUpIT0wKSB7CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsK
K30KKwordHNmX3R5cGVfdCAqdHNmX2J1ZmZlcl9nZXRfdHlwZSh0c2ZfYnVmZmVyX3QgKmJ1Zikg
eworICAgIHJldHVybiBidWYtPnR5cGU7Cit9CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl9pbnN0
YW5jZW9mKHRzZl9idWZmZXJfdCAqYnVmLCB0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJu
IHRzZl90eXBlX2luc3RhbmNlb2YodHNmX2J1ZmZlcl9nZXRfdHlwZShidWYpLCB0eXBlKTsKK30K
KwordHNmX3R5cGVfaW5fbWFwX3QgKnRzZl9idWZmZXJfZ2V0X3NoYXJlZF90eXBlcyh0c2ZfYnVm
ZmVyX3QgKmJ1ZikgeworICAgIHJldHVybiBidWYtPnR5cGVzOworfQorCkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1aWxkX2RlZmluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1aWxkX2Rl
ZmluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX2J1aWxkX2RlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBA
CisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2NhbCIKKyNkZWZpbmUgSU5DTFVERV9ESVIgIi91c3Iv
bG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElCX0RJUiAiL3Vzci9sb2NhbC9saWIiCisjZGVmaW5l
IFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBYVFJBX0NQUEZMQUdTICItRF9SRUVOVFJBTlQgIgor
I2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisjZGVmaW5lIENGTEFHUyAiLWcgLU8yIC1mbm8tc3Ry
aWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscyIKKyNkZWZpbmUgQ1BQRkxB
R1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgorI2RlZmluZSBMSUJTICItbG0gIgorI2RlZmluZSBT
UkNESVIgIi4iCisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2NhbCIKKyNkZWZpbmUgSU5DTFVERV9E
SVIgIi91c3IvbG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElCX0RJUiAiL3Vzci9sb2NhbC9saWIi
CisjZGVmaW5lIFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBYVFJBX0NQUEZMQUdTICItRF9SRUVO
VFJBTlQgIgorI2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisjZGVmaW5lIENGTEFHUyAiLWcgLU8y
IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscyIKKyNkZWZp
bmUgQ1BQRkxBR1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgorI2RlZmluZSBMSUJTICItbG0gIgor
I2RlZmluZSBTUkNESVIgIi4iCisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2NhbCIKKyNkZWZpbmUg
SU5DTFVERV9ESVIgIi91c3IvbG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElCX0RJUiAiL3Vzci9s
b2NhbC9saWIiCisjZGVmaW5lIFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBYVFJBX0NQUEZMQUdT
ICItRF9SRUVOVFJBTlQgIgorI2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisjZGVmaW5lIENGTEFH
UyAiLWcgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxs
cyIKKyNkZWZpbmUgQ1BQRkxBR1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgorI2RlZmluZSBMSUJT
ICItbG0gIgorI2RlZmluZSBTUkNESVIgIi4iCisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2NhbCIK
KyNkZWZpbmUgSU5DTFVERV9ESVIgIi91c3IvbG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElCX0RJ
UiAiL3Vzci9sb2NhbC9saWIiCisjZGVmaW5lIFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBYVFJB
X0NQUEZMQUdTICItRF9SRUVOVFJBTlQgIgorI2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisjZGVm
aW5lIENGTEFHUyAiLWcgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUtc2li
bGluZy1jYWxscyIKKyNkZWZpbmUgQ1BQRkxBR1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgorI2Rl
ZmluZSBMSUJTICItbG0gIgorI2RlZmluZSBTUkNESVIgIi4iCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfY29uZmlnLmgJKG5vbmV4aXN0ZW50
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb25maWcuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZQX1RTRl9DT05GSUdf
SAorI2RlZmluZSBGUF9UU0ZfQ09ORklHX0gKKworI2luY2x1ZGUgInRzZl9jb25maWdfc3R1Yi5o
IgorCisvKiBoYWNrIHRvIGFsbG93IG91ciBwdWJsaWMgY29kZSB0aGF0IHJlcXVpcmVzIGlubGlu
aW5nIHRvIHdvcmsKKyAqIGNvcnJlY3RseSAqLworI2lmZGVmIF9fY3BsdXNwbHVzCisvKiB0aGUg
aW5saW5lIGtleXdvcmQgaXMgcGFydCBvZiBDKyssIHNvIHdlIGNhbiB1c2UgaXQgZGlyZWN0bHkK
KyAqIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBhdXRvY29uZiB0aGlua3MuICovCisjdW5kZWYgVFNGX2lu
bGluZQorI2RlZmluZSBUU0ZfaW5saW5lIGlubGluZQorI2Vsc2UKKy8qIGF1dG9jb25mIGFzc3Vt
ZXMgdGhhdCBpdCBpcyBkZWZpbmluZyAnaW5saW5lJy4gIHNvLCBpdCB0aGlua3MKKyAqIHRoYXQg
Ynkgbm90IGRlZmluaW5nICdpbmxpbmUnLCBpdCBpcyBtYWtpbmcgdXMgdXNlIHRoZSBpbmxpbmUK
KyAqIGtleXdvcmQuICBidXQgc2luY2UgdHNmX2NvbmZpZ19zdHViIGhhcyBldmVyeXRoaW5nIHJl
bmFtZWQgdG8KKyAqIGhhdmUgdGhlICdUU0ZfJyBzdWZmaXgsIGFuZCBzaW5jZSB0aGUgY29kZSB0
aGF0IHRha2VzIGFkdmFudGFnZQorICogb2YgdGhpcyBoYWNrIHdpbGwgdXNlICdUU0ZfaW5saW5l
Jywgd2UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nLiAqLworI2lmbmRlZiBUU0ZfaW5saW5lCisj
ZGVmaW5lIFRTRl9pbmxpbmUgaW5saW5lCisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYKKwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb25maWdfc3R1Yi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
Y29uZmlnX3N0dWIuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvdHNmX2NvbmZpZ19zdHViLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NDIgQEAKKy8qIGxpYnJhcnkvY29uZmlnLmguICBHZW5lcmF0ZWQgZnJvbSBjb25maWcuaC5pbiBi
eSBjb25maWd1cmUuICAqLworLyogbGlicmFyeS9jb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9t
IGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KKworLyogRGVmaW5lIGlmIGJ1aWxkaW5n
IHVuaXZlcnNhbCAoaW50ZXJuYWwgaGVscGVyIG1hY3JvKSAqLworLyogI3VuZGVmIFRTRl9BQ19B
UFBMRV9VTklWRVJTQUxfQlVJTEQgKi8KKworLyogZGVmaW5lcyBob3cgdG8gdGhyb3cgaW4gdGhl
IG5vaW5saW5lIGF0dHJpYnV0ZSAqLworI2RlZmluZSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FIF9f
YXR0cmlidXRlX18oKG5vaW5saW5lKSkKKworLyogRGVmaW5lZCBpZiB5b3UgY2FuIGRvIG1pc2Fs
aWduZWQgbG9hZHMgYW5kIHN0b3JlcyBvbiBmbG9hdHMgKi8KKyNkZWZpbmUgVFNGX0NBTl9ET19G
TE9BVF9NSVNBTElHTkVEX0xEU1QgMQorCisvKiBEZWZpbmVkIGlmIHlvdSBjYW4gZG8gbWlzYWxp
Z25lZCBsb2FkcyBhbmQgc3RvcmVzICovCisjZGVmaW5lIFRTRl9DQU5fRE9fTUlTQUxJR05FRF9M
RFNUIDEKKworLyogRGV0ZXJtaW5lcyB0aGUgcHJlZml4IGZvciBpbmNsdWRpbmcgVFNGIGZpbGVz
IGZyb20gZ2VuZXJhdGVkIGNvZGUgKi8KKyNkZWZpbmUgVFNGX0NPREVfR0VOX0lOQ0xVREVfUFJF
RklYICJ0c2YvIgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFjY2VwdCcgZnVu
Y3Rpb24uICovCisjZGVmaW5lIFRTRl9IQVZFX0FDQ0VQVCAwCisKKy8qIERlZmluZWQgaWYgd2Ug
Y2FuIHRha2UgYWRkcmVzc2VzIG9mIGxhYmVscyAqLworLy8jZGVmaW5lIFRTRl9IQVZFX0FERFJF
U1NfT0ZfTEFCRUwgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFycGEvaW5l
dC5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfQVJQQV9JTkVUX0ggMQorCisv
KiBEZWZpbmVkIGlmIHdlIGFyZSBvbiBhIGJpZyBlbmRpYW4gbWFjaGluZSAqLworLyogI3VuZGVm
IFRTRl9IQVZFX0JJR19FTkRJQU4gKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBiaW5kJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9CSU5EIDEKKworLyogRGVm
aWVuZCBpZiB5b3V2J2UgZ290IEJTRCBzb2NrZXRzICovCisvLyNkZWZpbmUgVFNGX0hBVkVfQlNE
U09DS1MgMQorCisvKiBEZWZpbmVkIGlmIHdlIGhhdmUgX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRf
c3dhcCAqLworLy8jZGVmaW5lIFRTRl9IQVZFX0JVSUxUSU5fQ0FTIDEKKworLyogRGVmaW5lZCBp
ZiB3ZSBoYXZlIF9fc3luY19mZXRjaF9hbmRfYWRkICovCisvLyNkZWZpbmUgVFNGX0hBVkVfQlVJ
TFRJTl9YQUREIDEKKworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIGxpYmJ6aXAyICovCisvKiAjdW5k
ZWYgVFNGX0hBVkVfQlpJUDIgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBj
b25uZWN0JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9DT05ORUNUIDEKKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkbGZjbi5oPiBoZWFkZXIgZmlsZS4gKi8KKy8v
I2RlZmluZSBUU0ZfSEFWRV9ETEZDTl9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBmb3JrJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9GT1JLIDEKKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRhZGRyaW5mbycgZnVuY3Rpb24uICovCisv
LyNkZWZpbmUgVFNGX0hBVkVfR0VUQUREUklORk8gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYGdldGhvc3RieW5hbWUnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZF
X0dFVEhPU1RCWU5BTUUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhv
c3RieW5hbWVfcicgZnVuY3Rpb24uICovCisvKiAjdW5kZWYgVFNGX0hBVkVfR0VUSE9TVEJZTkFN
RV9SICovCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0b3B0JyBmdW5jdGlv
bi4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfR0VUT1BUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBnZXRwYWdlc2l6ZScgZnVuY3Rpb24uICovCisjZGVmaW5lIFRTRl9IQVZFX0dF
VFBBR0VTSVpFIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXR0aW1lb2Zk
YXknIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9HRVRUSU1FT0ZEQVkgMQorCisvKiBE
ZXRlcm1pbmVzIGlmIHdlIGhhdmUgSUVFRSBmbG9hdGluZyBwb2ludCAqLworI2RlZmluZSBUU0Zf
SEFWRV9JRUVFX0ZMT0FUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbmV0
X250b2EnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9JTkVUX05UT0EgMQorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvcCcgZnVuY3Rpb24uICovCisjZGVm
aW5lIFRTRl9IQVZFX0lORVRfTlRPUCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX0lOVFRZUEVT
X0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG0nIGxpYnJhcnkgKC1sbSku
ICovCisjZGVmaW5lIFRTRl9IQVZFX0xJQk0gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYGxpc3RlbicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgVFNGX0hBVkVfTElTVEVOIDEK
KworLyogRGVmaW5lZCBpZiB3ZSBhcmUgb24gYSBsaXR0bGUgZW5kaWFuIG1hY2hpbmUgKi8KKyNk
ZWZpbmUgVFNGX0hBVkVfTElUVExFX0VORElBTiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgbG9jYWx0aW1lJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfTE9DQUxU
SU1FIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWVfcicgZnVu
Y3Rpb24uICovCisjZGVmaW5lIFRTRl9IQVZFX0xPQ0FMVElNRV9SIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBsb25nam1wJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0Zf
SEFWRV9MT05HSk1QIDEKKworLyogRGVmaW5lZCBpZiB0aGUgTUFQX0FOT04gY29uc3RhbnQgaXMg
ZGVmaW5lZC4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9NQVBfQU5PTiAxCisKKy8qIERlZmluZWQg
aWYgdGhlIE1BUF9BTk9OWU1PVVMgY29uc3RhbnQgaXMgZGVmaW5lZC4gKi8KKy8vI2RlZmluZSBU
U0ZfSEFWRV9NQVBfQU5PTllNT1VTIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX01FTU9SWV9IIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2R0ZW1wJyBmdW5jdGlvbi4gKi8K
Ky8vI2RlZmluZSBUU0ZfSEFWRV9NS0RURU1QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9NTUFQIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtcHJvdGVjdCcgZnVuY3Rpb24uICovCisv
LyNkZWZpbmUgVFNGX0hBVkVfTVBST1RFQ1QgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYG11bm1hcCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgVFNGX0hBVkVfTVVOTUFQIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYXRoY29uZicgZnVuY3Rpb24uICov
CisvLyNkZWZpbmUgVFNGX0hBVkVfUEFUSENPTkYgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYHByZWFkJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9QUkVBRCAx
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJlYWR2JyBmdW5jdGlvbi4gKi8K
Ky8qICN1bmRlZiBUU0ZfSEFWRV9QUkVBRFYgKi8KKworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIHB0
aHJlYWRzICovCisvLyNkZWZpbmUgVFNGX0hBVkVfUFRIUkVBRCAxCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFW
RV9QV1JJVEUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB3cml0ZXYnIGZ1
bmN0aW9uLiAqLworLyogI3VuZGVmIFRTRl9IQVZFX1BXUklURVYgKi8KKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBxc29ydCcgZnVuY3Rpb24uICovCisjZGVmaW5lIFRTRl9IQVZF
X1FTT1JUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkZGlyX3InIGZ1
bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZFX1JFQURESVJfUiAxCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZHYnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9I
QVZFX1JFQURWIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWdjb21wJyBm
dW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9SRUdDT01QIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGByZWdlcnJvcicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgVFNG
X0hBVkVfUkVHRVJST1IgMQorCisvKiBEZWZpbmVkIGlmIHlvdSd2ZSBnb3QgcmVnZXggZnVuY3Rp
b25zICovCisvLyNkZWZpbmUgVFNGX0hBVkVfUkVHRVggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgYHJlZ2V4ZWMnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZFX1JF
R0VYRUMgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2ZyZWUnIGZ1bmN0
aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZFX1JFR0ZSRUUgMQorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgPHNjaGVkLmg+IGhlYWRlciBmaWxlLiAqLworLy8jZGVmaW5lIFRTRl9I
QVZFX1NDSEVEX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3lp
ZWxkJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9TQ0hFRF9ZSUVMRCAxCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0am1wJyBmdW5jdGlvbi4gKi8KKy8vI2Rl
ZmluZSBUU0ZfSEFWRV9TRVRKTVAgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YHNldHZidWYnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9TRVRWQlVGIDEKKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGZ1bmN0aW9uLiAqLworLy8jZGVm
aW5lIFRTRl9IQVZFX1NPQ0tFVCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8
c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBUU0ZfSEFWRV9TVERJTlRfSCAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW8uaD4gaGVhZGVyIGZpbGUuICov
CisjZGVmaW5lIFRTRl9IQVZFX1NURElPX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfU1RETElC
X0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cGNweScgZnVuY3Rpb24u
ICovCisjZGVmaW5lIFRTRl9IQVZFX1NUUENQWSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfU1RS
SU5HU19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVh
ZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX1NUUklOR19IIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBzdHJzaWduYWwnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRT
Rl9IQVZFX1NUUlNJR05BTCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lz
L3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX1NZU19TVEFUX0ggMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmls
ZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfU1lTX1RZUEVTX0ggMQorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgPHN5cy91aW8uaD4gaGVhZGVyIGZpbGUuICovCisvLyNkZWZpbmUgVFNG
X0hBVkVfU1lTX1VJT19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0ZW1w
bmFtJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9URU1QTkFNIDEKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVm
aW5lIFRTRl9IQVZFX1VOSVNURF9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGB2YXNwcmludGYnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9WQVNQUklOVEYgMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdyaXRldicgZnVuY3Rpb24uICovCisv
LyNkZWZpbmUgVFNGX0hBVkVfV1JJVEVWIDEKKworLyogRGVmaW5lZCBpZiB3ZSBjYW4gdXNlIFg4
NiBpbmxpbmUgYXNzZW1ibHkgZm9yIGZlbmNlcyAqLworLy8jZGVmaW5lIFRTRl9IQVZFX1g4Nl9J
TkxJTkVfQVNNX0ZFTkNFUyAxCisKKy8qIERlZmluZWQgaWYgd2UgaGF2ZSBaTGliICovCisvLyNk
ZWZpbmUgVFNGX0hBVkVfWkxJQiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg
X2xvbmdqbXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZFX19MT05HSk1QIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBfc2V0am1wJyBmdW5jdGlvbi4gKi8KKy8q
ICN1bmRlZiBUU0ZfSEFWRV9fU0VUSk1QICovCisKKy8qIERlZmluZWQgd2hlbiB5b3UncmUgb24g
YSBzZW5zaWJsZSBPUywgdW5saWtlIE5ldEJTRC4gKi8KKyNkZWZpbmUgVFNGX0lOVFRZUEVTX1dP
UktfUklHSFQgMQorCisvKiBEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGli
dG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLgorICAgKi8KKyNkZWZpbmUgVFNGX0xU
X09CSkRJUiAiLmxpYnMvIgorCisvKiBUZWxsIHlvdSB0aGUgbmF0aXZlIGFsaWdubWVudCBvZiB5
b3VyIHBsYXRmb3JtICovCisjZGVmaW5lIFRTRl9OQVRJVkVfQUxJR05NRU5UIDE2CisKKy8qIE5h
bWUgb2YgcGFja2FnZSAqLworI2RlZmluZSBUU0ZfUEFDS0FHRSAidHNmIgorCisvKiBEZWZpbmUg
dG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQg
YmUgc2VudC4gKi8KKyNkZWZpbmUgVFNGX1BBQ0tBR0VfQlVHUkVQT1JUICJwaXpsb0BtYWMuY29t
IgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVm
aW5lIFRTRl9QQUNLQUdFX05BTUUgInRzZiIKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUg
YW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBUU0ZfUEFDS0FHRV9TVFJJ
TkcgInRzZiAxLjEuMCIKKworLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUg
b2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBUU0ZfUEFDS0FHRV9UQVJOQU1FICJ0c2YiCisK
Ky8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5l
IFRTRl9QQUNLQUdFX1VSTCAiIgorCisvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBw
YWNrYWdlLiAqLworI2RlZmluZSBUU0ZfUEFDS0FHRV9WRVJTSU9OICIxLjEuMCIKKworLyogVGhl
IHNpemUgb2YgYGRvdWJsZScsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgVFNG
X1NJWkVPRl9ET1VCTEUgOAorCisvKiBUaGUgc2l6ZSBvZiBgZmxvYXQnLCBhcyBjb21wdXRlZCBi
eSBzaXplb2YuICovCisjZGVmaW5lIFRTRl9TSVpFT0ZfRkxPQVQgNAorCisvKiBUaGUgc2l6ZSBv
ZiBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgVFNGX1NJWkVPRl9M
T05HIDQKKworLyogVGhlIHNpemUgb2YgYGxvbmcgZG91YmxlJywgYXMgY29tcHV0ZWQgYnkgc2l6
ZW9mLiAqLworI2RlZmluZSBUU0ZfU0laRU9GX0xPTkdfRE9VQkxFIDE2CisKKy8qIFRoZSBzaXpl
IG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFRTRl9T
SVpFT0ZfTE9OR19MT05HIDgKKworLyogVGhlIHNpemUgb2YgYG9mZl90JywgYXMgY29tcHV0ZWQg
Ynkgc2l6ZW9mLiAqLworI2RlZmluZSBUU0ZfU0laRU9GX09GRl9UIDgKKworLyogVGhlIHNpemUg
b2YgYHNpemVfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgVFNGX1NJWkVP
Rl9TSVpFX1QgNAorCisvKiBUaGUgc2l6ZSBvZiBgdm9pZCAqJywgYXMgY29tcHV0ZWQgYnkgc2l6
ZW9mLiAqLworI2RlZmluZSBUU0ZfU0laRU9GX1ZPSURfUCA0CisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLworI2RlZmluZSBUU0ZfU1REQ19I
RUFERVJTIDEKKworLyogRGV0ZXJtaW5lcyB3aGVyZSB0byBwbGFjZSB0ZW1wb3JhcnkgZmlsZXMg
Ki8KKyNkZWZpbmUgVFNGX1RNUF9ESVJFQ1RPUlkgIi90bXAiCisKKy8qIFZlcnNpb24gbnVtYmVy
IG9mIHBhY2thZ2UgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT04gIjEuMS4wIgorCisvKiBUU0YgbWFq
b3IgdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT05fTUFKT1IgMQorCisvKiBU
U0YgbWlub3IgdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT05fTUlOT1IgMQor
CisvKiBUU0YgcGF0Y2ggdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT05fUEFU
Q0ggMAorCisvKiBEZWZpbmUgV09SRFNfQklHRU5ESUFOIHRvIDEgaWYgeW91ciBwcm9jZXNzb3Ig
c3RvcmVzIHdvcmRzIHdpdGggdGhlIG1vc3QKKyAgIHNpZ25pZmljYW50IGJ5dGUgZmlyc3QgKGxp
a2UgTW90b3JvbGEgYW5kIFNQQVJDLCB1bmxpa2UgSW50ZWwpLiAqLworI2lmIGRlZmluZWQgQUNf
QVBQTEVfVU5JVkVSU0FMX0JVSUxECisjIGlmIGRlZmluZWQgX19CSUdfRU5ESUFOX18KKyMgIGRl
ZmluZSBXT1JEU19CSUdFTkRJQU4gMQorIyBlbmRpZgorI2Vsc2UKKyMgaWZuZGVmIFdPUkRTX0JJ
R0VORElBTgorLyogIyAgdW5kZWYgV09SRFNfQklHRU5ESUFOICovCisjIGVuZGlmCisjZW5kaWYK
KworLyogRW5hYmxlIGxhcmdlIGlub2RlIG51bWJlcnMgb24gTWFjIE9TIFggMTAuNS4gICovCisj
aWZuZGVmIF9EQVJXSU5fVVNFXzY0X0JJVF9JTk9ERQorIyBkZWZpbmUgX0RBUldJTl9VU0VfNjRf
QklUX0lOT0RFIDEKKyNlbmRpZgorCisvKiBOdW1iZXIgb2YgYml0cyBpbiBhIGZpbGUgb2Zmc2V0
LCBvbiBob3N0cyB3aGVyZSB0aGlzIGlzIHNldHRhYmxlLiAqLworLyogI3VuZGVmIFRTRl9fRklM
RV9PRkZTRVRfQklUUyAqLworCisvKiBEZWZpbmUgZm9yIGxhcmdlIGZpbGVzLCBvbiBBSVgtc3R5
bGUgaG9zdHMuICovCisvKiAjdW5kZWYgVFNGX19MQVJHRV9GSUxFUyAqLworCisvKiBEZWZpbmUg
dG8gZW1wdHkgaWYgYGNvbnN0JyBkb2VzIG5vdCBjb25mb3JtIHRvIEFOU0kgQy4gKi8KKy8qICN1
bmRlZiBUU0ZfY29uc3QgKi8KKworLyogRGVmaW5lIHRvIGBfX2lubGluZV9fJyBvciBgX19pbmxp
bmUnIGlmIHRoYXQncyB3aGF0IHRoZSBDIGNvbXBpbGVyCisgICBjYWxscyBpdCwgb3IgdG8gbm90
aGluZyBpZiAnaW5saW5lJyBpcyBub3Qgc3VwcG9ydGVkIHVuZGVyIGFueSBuYW1lLiAgKi8KKyNp
Zm5kZWYgX19jcGx1c3BsdXMKKy8qICN1bmRlZiBUU0ZfaW5saW5lICovCisjZW5kaWYKKworLyog
RGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3b3JkIGB2b2xhdGlsZScgZG9lcyBub3Qgd29yay4g
V2FybmluZzogdmFsaWQKKyAgIGNvZGUgdXNpbmcgYHZvbGF0aWxlJyBjYW4gYmVjb21lIGluY29y
cmVjdCB3aXRob3V0LiBEaXNhYmxlIHdpdGggY2FyZS4gKi8KKy8qICN1bmRlZiBUU0Zfdm9sYXRp
bGUgKi8KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfY29w
aWVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9jb3BpZXIuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvdHNmX2NvcGllci5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6bG8u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJ
TElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJncGMuaCIKKwor
dHNmX2NvcGllcl90ICp0c2ZfY29waWVyX2NyZWF0ZSh0c2ZfdHlwZV90ICpkZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICpzcmMpIHsKKyAgICB0c2ZfY29w
aWVyX3QgKnJlc3VsdDsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG89CisgICAgICAgIHRzZl9ncGNf
Y29kZV9nZW5fZ2VuZXJhdGVfY29udmVydGVyKGRlc3Qsc3JjKTsKKyAgICAKKyAgICBpZiAocHJv
dG89PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGdwY19j
b2RlX2dlbl9kZWJ1ZygiY29udmVydGVyIixwcm90byk7CisgICAgCisgICAgcmVzdWx0PW1hbGxv
YyhzaXplb2YodHNmX2NvcGllcl90KSk7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9jb3BpZXJfdCIpOworICAgICAg
ICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KyAgICAKKyAgICByZXN1bHQtPmNvcGllciA9IGdwY19wcm9ncmFtX2Zyb21fcHJvdG8ocHJvdG8p
OworICAgIAorICAgIGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAKKyAgICBpZiAocmVz
dWx0LT5jb3BpZXI9PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCB0c2Zf
Y29waWVyX2Rlc3Ryb3kodHNmX2NvcGllcl90ICpjb3BpZXIpIHsKKyAgICBncGNfcHJvZ3JhbV9k
ZXN0cm95KGNvcGllci0+Y29waWVyKTsKKyAgICBmcmVlKGNvcGllcik7Cit9CisKK3ZvaWQgKnRz
Zl9jb3BpZXJfY2xvbmUodHNmX2NvcGllcl90ICpjb3BpZXIsdm9pZCAqc3JjKSB7CisgICAgZ3Bj
X2NlbGxfdCBhcmdzWzJdOworICAgIGFyZ3NbMF09KGdwY19jZWxsX3QpTlVMTDsKKyAgICBhcmdz
WzFdPShncGNfY2VsbF90KXNyYzsKKyAgICByZXR1cm4gKHZvaWQqKWdwY19wcm9ncmFtX3J1bihj
b3BpZXItPmNvcGllcixOVUxMLGFyZ3MpOworfQorCit2b2lkICp0c2ZfY29waWVyX2Nsb25lX2lu
KHRzZl9jb3BpZXJfdCAqY29waWVyLHZvaWQgKnNyYyx2b2lkICpyZWdpb24pIHsKKyAgICBncGNf
Y2VsbF90IGFyZ3NbMl07CisgICAgYXJnc1swXT0oZ3BjX2NlbGxfdClOVUxMOworICAgIGFyZ3Nb
MV09KGdwY19jZWxsX3Qpc3JjOworICAgIHJldHVybiAodm9pZCopZ3BjX3Byb2dyYW1fcnVuKGNv
cGllci0+Y29waWVyLHJlZ2lvbixhcmdzKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfY29waWVyX2Nv
cHkodHNmX2NvcGllcl90ICpjb3BpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3JjLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgZ3BjX2NlbGxfdCBhcmdzWzJd
OworICAgIGFyZ3NbMF09KGdwY19jZWxsX3QpZGVzdDsKKyAgICBhcmdzWzFdPShncGNfY2VsbF90
KXNyYzsKKyAgICByZXR1cm4gZ3BjX3Byb2dyYW1fcnVuKGNvcGllci0+Y29waWVyLHJlZ2lvbixh
cmdzKSE9MD8KKyAgICAgICAgICAgICAgIHRzZl90cnVlOnRzZl9mYWxzZTsKK30KKworCisKKwpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9kZWZpbmVfaGVs
cGVycy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2ZfZGVmaW5lX2hlbHBlcnMuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2RlZmluZV9oZWxwZXJzLmMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRmlsaXAgUGl6bG8u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJ
TElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZGVmaW5l
X2hlbHBlcnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitz
dGF0aWMgdm9pZCBhb2VfZmFpbHVyZSh2b2lkKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJFcnJv
ciBkZWZpbmluZyBUU0YgdHlwZXM6ICVzXG4iLCB0c2ZfZ2V0X2Vycm9yKCkpOworICAgIGFib3J0
KCk7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2NyZWF0ZV9hb2UodHNmX3R5cGVfa2luZF90
IGtpbmRfY29kZSkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZShr
aW5kX2NvZGUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBhb2VfZmFpbHVy
ZSgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2ZfdHlw
ZV9jcmVhdGVfYXJyYXlfYW9lKHRzZl90eXBlX3QgKmVsZV90eXBlKSB7CisgICAgdHNmX3R5cGVf
dCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FycmF5KGVsZV90eXBlKTsKKyAgICBpZiAocmVz
dWx0ID09IE5VTEwpIHsKKyAgICAgICAgYW9lX2ZhaWx1cmUoKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25h
dGl2ZV9zaXplX2FvZShzaXplX3Qgc2l6ZSkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRz
Zl90eXBlX2NyZWF0ZShUU0ZfVEtfU1RSVUNUKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsK
KyAgICAgICAgYW9lX2ZhaWx1cmUoKTsKKyAgICB9CisgICAgaWYgKCF0c2ZfbmF0aXZlX3N0cnVj
dF90eXBlX3NldF9zaXplKCZyZXN1bHQsIHNpemUpKSB7CisgICAgICAgIGFvZV9mYWlsdXJlKCk7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2Ny
ZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZV90IHNp
emUsIHZvaWQgKCpkZXN0KSh2b2lkKikpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2Zf
dHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW9lKHNpemUpOworICAgIGlmICgh
dHNmX25hdGl2ZV9zdHJ1Y3RfdHlwZV9zZXRfZGVzdHJ1Y3RvcigmcmVzdWx0LCBkZXN0KSkgewor
ICAgICAgICBhb2VfZmFpbHVyZSgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
c2ZfdHlwZV90ICp0c2ZfdHlwZV9jcmVhdGVfY2hvaWNlX3dpdGhfbmF0aXZlX21hcF9hb2UoCisg
ICAgdHNmX3R5cGVfdCAqKnR5cGUsIHRzZl9ib29sX3QgaW5fcGxhY2UsIHNpemVfdCB2YWx1ZV9v
ZmZzZXQsIHNpemVfdCBkYXRhX29mZnNldCwgc2l6ZV90IHNpemUpIHsKKyAgICB0c2ZfdHlwZV90
ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX0NIT0lDRSk7CisgICAgaWYgKHJlc3Vs
dCA9PSBOVUxMKSB7CisgICAgICAgIGFvZV9mYWlsdXJlKCk7CisgICAgfQorICAgIGlmICghdHNm
X25hdGl2ZV9jaG9pY2VfdHlwZV9tYXAoJnJlc3VsdCwgaW5fcGxhY2UsIHZhbHVlX29mZnNldCwg
ZGF0YV9vZmZzZXQsIHNpemUpKSB7CisgICAgICAgIGFvZV9mYWlsdXJlKCk7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgdHNmX3R5cGVfc2V0X2NvbW1lbnRfYW9lKHRzZl90
eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpjb21tZW50KSB7CisgICAgaWYgKCF0c2ZfdHlwZV9z
ZXRfY29tbWVudCh0eXBlLCBjb21tZW50KSkgeworICAgICAgICBhb2VfZmFpbHVyZSgpOworICAg
IH0KK30KKwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3dpdGhfbmF0aXZlX21hcF9hb2Uo
CisgICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKmVs
ZV90eXBlLCBzaXplX3Qgb2Zmc2V0KSB7CisgICAgaWYgKCF0c2Zfc3RydWN0X3R5cGVfYXBwZW5k
KHR5cGUsIG5hbWUsIGVsZV90eXBlKSB8fAorICAgICAgICAhdHNmX25hdGl2ZV9zdHJ1Y3RfdHlw
ZV9tYXAodHlwZSwgbmFtZSwgb2Zmc2V0KSkgeworICAgICAgICBhb2VfZmFpbHVyZSgpOworICAg
IH0KK30KKwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2
ZV9tYXBfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB0c2Zf
dHlwZV9raW5kX3QgdHlwZV9raW5kLCBzaXplX3Qgb2Zmc2V0KSB7CisgICAgdHNmX3N0cnVjdF90
eXBlX2FwcGVuZF93aXRoX25hdGl2ZV9tYXBfYW9lKAorICAgICAgICB0eXBlLCBuYW1lLCB0c2Zf
dHlwZV9jcmVhdGVfYW9lKHR5cGVfa2luZCksIG9mZnNldCk7Cit9CisKK3ZvaWQgdHNmX3N0cnVj
dF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgK
KyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfdCAqKCpj
YWxsYmFjaykodm9pZCksIHNpemVfdCBvZmZzZXQpIHsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBw
ZW5kX3dpdGhfbmF0aXZlX21hcF9hb2UoCisgICAgICAgIHR5cGUsIG5hbWUsIHRzZl90eXBlX2R1
cChjYWxsYmFjaygpKSwgb2Zmc2V0KTsKK30KKwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5k
X3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBl
LCBjb25zdCBjaGFyICpuYW1lLCB0c2ZfdHlwZV90ICplbGVfdHlwZSwgc2l6ZV90IG9mZnNldCwK
KyAgICBjb25zdCBjaGFyICpjb21tZW50KSB7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF93
aXRoX25hdGl2ZV9tYXBfYW9lKHR5cGUsIG5hbWUsIGVsZV90eXBlLCBvZmZzZXQpOworICAgIGlm
ICghdHNmX3N0cnVjdF90eXBlX3NldF9jb21tZW50KHR5cGUsIG5hbWUsIGNvbW1lbnQpKSB7Cisg
ICAgICAgIGFvZV9mYWlsdXJlKCk7CisgICAgfQorfQorCit2b2lkIHRzZl9zdHJ1Y3RfdHlwZV9h
cHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAorICAgIHRz
Zl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB0c2ZfdHlwZV9raW5kX3QgdHlwZV9r
aW5kLCBzaXplX3Qgb2Zmc2V0LAorICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0c2Zf
c3RydWN0X3R5cGVfYXBwZW5kX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAorICAg
ICAgICB0eXBlLCBuYW1lLCB0c2ZfdHlwZV9jcmVhdGVfYW9lKHR5cGVfa2luZCksIG9mZnNldCwg
Y29tbWVudCk7Cit9CisKK3ZvaWQgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNr
X2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX3dpdGhfY29tbWVudF9hb2UoCisgICAgdHNmX3R5cGVf
dCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKigqY2FsbGJhY2spKHZvaWQp
LCBzaXplX3Qgb2Zmc2V0LAorICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0c2Zfc3Ry
dWN0X3R5cGVfYXBwZW5kX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAorICAgICAg
ICB0eXBlLCBuYW1lLCB0c2ZfdHlwZV9kdXAoY2FsbGJhY2soKSksIG9mZnNldCwgY29tbWVudCk7
Cit9CisKK3ZvaWQgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9hb2UodHNmX3R5cGVfdCAqKnR5cGUs
IGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKmVsZV90eXBlKSB7CisgICAgaWYgKCF0c2Zf
Y2hvaWNlX3R5cGVfYXBwZW5kKHR5cGUsIG5hbWUsIGVsZV90eXBlKSkgeworICAgICAgICBhb2Vf
ZmFpbHVyZSgpOworICAgIH0KK30KKwordm9pZCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX3ByaW1p
dGl2ZV9hb2UoCisgICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90
eXBlX2tpbmRfdCB0eXBlX2tpbmQpIHsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2FvZSh0
eXBlLCBuYW1lLCB0c2ZfdHlwZV9jcmVhdGVfYW9lKHR5cGVfa2luZCkpOworfQorCit2b2lkIHRz
Zl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgKKyAgICB0c2Zf
dHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfdCAqKCpjYWxsYmFjayko
dm9pZCkpIHsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2FvZSh0eXBlLCBuYW1lLCB0c2Zf
dHlwZV9kdXAoY2FsbGJhY2soKSkpOworfQorCit2b2lkIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRf
d2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAqbmFt
ZSwgdHNmX3R5cGVfdCAqZWxlX3R5cGUsIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0c2Zf
Y2hvaWNlX3R5cGVfYXBwZW5kX2FvZSh0eXBlLCBuYW1lLCBlbGVfdHlwZSk7CisgICAgaWYgKCF0
c2ZfY2hvaWNlX3R5cGVfc2V0X2NvbW1lbnQodHlwZSwgbmFtZSwgY29tbWVudCkpIHsKKyAgICAg
ICAgYW9lX2ZhaWx1cmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgdHNmX2Nob2ljZV90eXBlX2FwcGVu
ZF9wcmltaXRpdmVfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29u
c3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCwgY29uc3QgY2hhciAqY29t
bWVudCkgeworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfd2l0aF9jb21tZW50X2FvZSgKKyAg
ICAgICAgdHlwZSwgbmFtZSwgdHNmX3R5cGVfY3JlYXRlX2FvZSh0eXBlX2tpbmQpLCBjb21tZW50
KTsKK30KKwordm9pZCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1
cF93aXRoX2NvbW1lbnRfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpu
YW1lLCB0c2ZfdHlwZV90ICooKmNhbGxiYWNrKSh2b2lkKSwgY29uc3QgY2hhciAqY29tbWVudCkg
eworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfd2l0aF9jb21tZW50X2FvZSgKKyAgICAgICAg
dHlwZSwgbmFtZSwgdHNmX3R5cGVfZHVwKGNhbGxiYWNrKCkpLCBjb21tZW50KTsKK30KKwordm9p
ZCB0c2Zfc3RydWN0X3R5cGVfc2V0X29wdGlvbmFsX2FvZSh0c2ZfdHlwZV90ICoqdHlwZSwgY29u
c3QgY2hhciAqbmFtZSwgdHNmX2Jvb2xfdCBvcHRpb25hbCkgeworICAgIGlmICghdHNmX3N0cnVj
dF90eXBlX3NldF9vcHRpb25hbCh0eXBlLCBuYW1lLCBvcHRpb25hbCkpIHsKKyAgICAgICAgYW9l
X2ZhaWx1cmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgdHNmX3R5cGVfc2V0X25hbWVfYW9lKHRzZl90
eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7CisgICAgaWYgKCF0c2ZfdHlwZV9zZXRf
bmFtZSh0eXBlLCBuYW1lKSkgeworICAgICAgICBhb2VfZmFpbHVyZSgpOworICAgIH0KK30KKwor
dm9pZCB0c2ZfdHlwZV9zZXRfdmVyc2lvbl9hb2UodHNmX3R5cGVfdCAqKnR5cGUsIHVpbnQzMl90
IG1ham9yLCB1aW50MzJfdCBtaW5vciwgdWludDMyX3QgcGF0Y2gpIHsKKyAgICBpZiAoIXRzZl90
eXBlX3NldF92ZXJzaW9uKHR5cGUsIG1ham9yLCBtaW5vciwgcGF0Y2gpKSB7CisgICAgICAgIGFv
ZV9mYWlsdXJlKCk7CisgICAgfQorfQorCit0c2ZfYm9vbF90IHRzZl90eXBlZF9kYXRhX3dyaXRl
KHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZ2VucnRyX3QgKmdlbmVyYXRvciwg
dm9pZCAqZGF0YSkgeworICAgIHRzZl9idWZmZXJfdCBidWY7CisgICAgY2hhciBpbmxpbmVCdWZm
ZXJbMjU2XTsKKyAgICB0c2ZfYm9vbF90IHJlc3VsdDsKKyAgICAKKyAgICB0c2ZfYnVmZmVyX2lu
aXRpYWxpemVfY3VzdG9tKCZidWYsIGlubGluZUJ1ZmZlciwgc2l6ZW9mKGlubGluZUJ1ZmZlcikp
OworICAgIAorICAgIGlmICghdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9leGlzdGluZ19idWZmZXIo
Z2VuZXJhdG9yLCBkYXRhLCAmYnVmKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
IH0KKyAgICAKKyAgICByZXN1bHQgPSB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3dyaXRlKG91dCwg
JmJ1Zik7CisgICAgdHNmX2J1ZmZlcl9kZXN0cm95X2N1c3RvbSgmYnVmKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkICp0c2ZfdHlwZWRfZGF0YV9yZWFkKHRzZl9zdHJlYW1fZmlsZV9p
bnB1dF90ICppbiwgdHNmX3BhcnNlcl90ICpwYXJzZXIpIHsKKyAgICB0c2ZfYnVmZmVyX3QgYnVm
OworICAgIGNoYXIgaW5saW5lQnVmZmVyWzI1Nl07CisgICAgdm9pZCogcmVzdWx0OworICAgIAor
ICAgIHRzZl9idWZmZXJfaW5pdGlhbGl6ZV9jdXN0b20oJmJ1ZiwgaW5saW5lQnVmZmVyLCBzaXpl
b2YoaW5saW5lQnVmZmVyKSk7CisgICAgCisgICAgaWYgKCF0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
cmVhZF9leGlzdGluZ19idWZmZXIoaW4sICZidWYpKSB7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICAKKyAgICByZXN1bHQgPSB0c2ZfcGFyc2VyX3BhcnNlKHBhcnNlciwgJmJ1Zik7
CisgICAgdHNmX2J1ZmZlcl9kZXN0cm95X2N1c3RvbSgmYnVmKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byh0c2Zfc3RyZWFtX2Zp
bGVfaW5wdXRfdCAqaW4sIHRzZl9wYXJzZXJfdCAqcGFyc2VyLCB2b2lkICpyZXN1bHQpIHsKKyAg
ICB0c2ZfYnVmZmVyX3QgYnVmOworICAgIGNoYXIgaW5saW5lQnVmZmVyWzI1Nl07CisgICAgdHNm
X2Jvb2xfdCBzdWNjZXNzOworICAgIAorICAgIHRzZl9idWZmZXJfaW5pdGlhbGl6ZV9jdXN0b20o
JmJ1ZiwgaW5saW5lQnVmZmVyLCBzaXplb2YoaW5saW5lQnVmZmVyKSk7CisgICAgCisgICAgaWYg
KCF0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfcmVhZF9leGlzdGluZ19idWZmZXIoaW4sICZidWYpKSB7
CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHN1Y2Nlc3MgPSB0
c2ZfcGFyc2VyX3BhcnNlX2ludG8ocGFyc2VyLCAmYnVmLCByZXN1bHQsIE5VTEwpOworICAgIHRz
Zl9idWZmZXJfZGVzdHJveV9jdXN0b20oJmJ1Zik7CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisK
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVmaW5lX2hl
bHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvdHNmX2RlZmluZV9oZWxwZXJzLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9kZWZpbmVfaGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRmlsaXAgUGl6bG8u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJ
TElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgRlBfVFNGX0RFRklORV9IRUxQRVJTX0gKKyNkZWZpbmUgRlBfVFNG
X0RFRklORV9IRUxQRVJTX0gKKworI2luY2x1ZGUgInRzZi5oIgorCisvKiBUaGlzIGhlYWRlciBp
cyBtZWFudCB0byBvbmx5IGJlIGRlZmluZWQgYnkgLmMgZmlsZXMgZ2VuZXJhdGVkIGJ5CisgICB0
c2ZfZGVmaW5lLiAqLworCisvKiBGSVhNRTogYWRkIHRzZl9kZWZpbmUgaGVscGVycyBmb3IgZGVh
bGluZyB3aXRoIHByaW1pdGl2ZSBnZW5lcmF0b3JzLAorICAgcGFyc2VycywgYW5kIGNvcGllcnMs
IGFzIHdlbGwgYXMgY2FjaGluZyBhcnJheS1vZi1wcmltaXRpdmUgdHlwZXMuICovCisKKy8qICJB
Ym9ydCBPbiBFcnJvciIgKGFvZSkgaGVscGVycy4gSWYgYW55IGVycm9yIG9jY3VycywgdGhleSB3
aWxsIHByaW50CisgICB0aGUgZXJyb3IgdG8gc3RkZXJyIGFuZCB0aGVuIGFib3J0LiBUaGUgZXJy
b3Igd2lsbCBpbmRpY2F0ZSB0aGF0IGl0CisgICB3YXMgZHVyaW5nIHRzZl9kZWZpbmUgdHlwZSBi
dWlsZGluZy4gKi8KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX2FvZSh0c2ZfdHlwZV9r
aW5kX3Qga2luZF9jb2RlKTsKK3RzZl90eXBlX3QgKnRzZl90eXBlX2NyZWF0ZV9hcnJheV9hb2Uo
dHNmX3R5cGVfdCAqZWxlX3R5cGUpOwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX3N0cnVj
dF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplX3Qgc2l6ZSk7Cit0c2ZfdHlwZV90ICp0c2ZfdHlw
ZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNpemVf
dCBzaXplLCB2b2lkICgqZGVzdCkodm9pZCopKTsKK3RzZl90eXBlX3QgKnRzZl90eXBlX2NyZWF0
ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgdHNm
X2Jvb2xfdCBpbl9wbGFjZSwgc2l6ZV90IHZhbHVlX29mZnNldCwgc2l6ZV90IGRhdGFfb2Zmc2V0
LCBzaXplX3Qgc2l6ZSk7Cit2b2lkIHRzZl90eXBlX3NldF9jb21tZW50X2FvZSh0c2ZfdHlwZV90
ICoqdHlwZSwgY29uc3QgY2hhciAqY29tbWVudCk7CisKK3ZvaWQgdHNmX3N0cnVjdF90eXBlX2Fw
cGVuZF93aXRoX25hdGl2ZV9tYXBfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBj
aGFyICpuYW1lLCB0c2ZfdHlwZV90ICplbGVfdHlwZSwgc2l6ZV90IG9mZnNldCk7Cit2b2lkIHRz
Zl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF9hb2UoCisgICAg
dHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX2tpbmRfdCBwcmlt
aXRpdmVfdHlwZSwgc2l6ZV90IG9mZnNldCk7Cit2b2lkIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRf
ZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoCisgICAgdHNmX3R5cGVf
dCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKigqY2FsbGJhY2spKHZvaWQp
LCBzaXplX3Qgb2Zmc2V0KTsKK3ZvaWQgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF93aXRoX25hdGl2
ZV9tYXBfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hh
ciAqbmFtZSwgdHNmX3R5cGVfdCAqZWxlX3R5cGUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IGNoYXIg
KmNvbW1lbnQpOwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25h
dGl2ZV9tYXBfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3Qg
Y2hhciAqbmFtZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCwgc2l6ZV90IG9mZnNldCwKKyAg
ICBjb25zdCBjaGFyICpjb21tZW50KTsKK3ZvaWQgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9t
X2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX3dpdGhfY29tbWVudF9hb2UoCisgICAg
dHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKigqY2FsbGJh
Y2spKHZvaWQpLCBzaXplX3Qgb2Zmc2V0LAorICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpOworCit2
b2lkIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBlLCBj
b25zdCBjaGFyICpuYW1lLCB0c2ZfdHlwZV90ICplbGVfdHlwZSk7Cit2b2lkIHRzZl9jaG9pY2Vf
dHlwZV9hcHBlbmRfcHJpbWl0aXZlX2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3Qg
Y2hhciAqbmFtZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCk7Cit2b2lkIHRzZl9jaG9pY2Vf
dHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgKKyAgICB0c2ZfdHlwZV90ICoq
dHlwZSwgY29uc3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfdCAqKCpjYWxsYmFjaykodm9pZCkpOwor
dm9pZCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX3dpdGhfY29tbWVudF9hb2UoCisgICAgdHNmX3R5
cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKmVsZV90eXBlLCBjb25z
dCBjaGFyICpjb21tZW50KTsKK3ZvaWQgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRpdmVf
d2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAqbmFt
ZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCwgY29uc3QgY2hhciAqY29tbWVudCk7Cit2b2lk
IHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfY29tbWVu
dF9hb2UoCisgICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBl
X3QgKigqY2FsbGJhY2spKHZvaWQpLCBjb25zdCBjaGFyICpjb21tZW50KTsKKwordm9pZCB0c2Zf
c3RydWN0X3R5cGVfc2V0X29wdGlvbmFsX2FvZSh0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hh
ciAqbmFtZSwgdHNmX2Jvb2xfdCBvcHRpb25hbCk7CisKK3ZvaWQgdHNmX3R5cGVfc2V0X25hbWVf
YW9lKHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lKTsKK3ZvaWQgdHNmX3R5cGVf
c2V0X3ZlcnNpb25fYW9lKHRzZl90eXBlX3QgKip0eXBlLCB1aW50MzJfdCBtYWpvciwgdWludDMy
X3QgbWlub3IsIHVpbnQzMl90IHBhdGNoKTsKKworLyogSGVscGVycyBmb3IgcmVhZGluZyBhbmQg
d3JpdGluZy4gKi8KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZWRfZGF0YV93cml0ZSh0c2Zfc3RyZWFt
X2ZpbGVfb3V0cHV0X3QgKm91dCwgdHNmX2dlbnJ0cl90ICpnZW5lcmF0b3IsIHZvaWQgKmRhdGEp
Owordm9pZCAqdHNmX3R5cGVkX2RhdGFfcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4s
IHRzZl9wYXJzZXJfdCAqcGFyc2VyKTsKK3RzZl9ib29sX3QgdHNmX3R5cGVkX2RhdGFfcmVhZF9p
bnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwgdHNmX3BhcnNlcl90ICpwYXJzZXIsIHZv
aWQgKnJlc3VsdCk7CisKKyNlbmRpZiAvLyBGUF9UU0ZfREVGSU5FX0hFTFBFUlNfSAorCkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2Rlc3RydWN0b3IuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2Rl
c3RydWN0b3IuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
d2FzbS90c2YvdHNmX2Rlc3RydWN0b3IuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUEla
TE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAiZ3BjLmgiCisKK3RzZl9kZXN0cnVjdG9yX3Qg
KnRzZl9kZXN0cnVjdG9yX2NyZWF0ZSh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgdHNmX2Rlc3Ry
dWN0b3JfdCAqcmVzdWx0OworICAgIGdwY19wcm90b190ICpwcm90bzsKKyAgICAKKyAgICBwcm90
byA9IHRzZl9ncGNfY29kZV9nZW5fZ2VuZXJhdGVfZGVzdHJveWVyKHR5cGUpOworICAgIGlmIChw
cm90byA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBn
cGNfY29kZV9nZW5fZGVidWcoImRlc3Ryb3llciIscHJvdG8pOworICAgIAorICAgIHJlc3VsdCA9
IG1hbGxvYyhzaXplb2YodHNmX2Rlc3RydWN0b3JfdCkpOworICAgIGlmIChyZXN1bHQgPT0gTlVM
TCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9kZXN0cnVj
dG9yX3QiKTsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5kZXN0cnVjdG9yID0gZ3BjX3Byb2dy
YW1fZnJvbV9wcm90byhwcm90byk7CisgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAg
IAorICAgIGlmIChyZXN1bHQtPmRlc3RydWN0b3IgPT0gTlVMTCkgeworICAgICAgICBmcmVlKHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit2b2lkIHRzZl9kZXN0cnVjdG9yX2Rlc3Ryb3kodHNmX2Rlc3RydWN0b3JfdCAq
ZGVzdHJ1Y3RvcikgeworICAgIGdwY19wcm9ncmFtX2Rlc3Ryb3koZGVzdHJ1Y3Rvci0+ZGVzdHJ1
Y3Rvcik7CisgICAgZnJlZShkZXN0cnVjdG9yKTsKK30KKwordm9pZCB0c2ZfZGVzdHJ1Y3Rvcl9k
ZXN0cnVjdCh0c2ZfZGVzdHJ1Y3Rvcl90ICpkZXN0cnVjdG9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpvYmplY3QpIHsKKyAgICBncGNfY2VsbF90IGFyZ3NbMV07CisgICAg
YXJnc1swXSA9IChncGNfY2VsbF90KW9iamVjdDsKKyAgICBncGNfcHJvZ3JhbV9ydW4oZGVzdHJ1
Y3Rvci0+ZGVzdHJ1Y3RvciwgTlVMTCwgYXJncyk7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZXJyb3IuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2Vycm9yLmMJKG5vbmV4aXN0ZW50KQor
KysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9lcnJvci5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDE0IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVy
bmFsLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs
dWRlIDxlcnJuby5oPgorCisjaWZkZWYgSEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5o
PgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYK
KworI2lmZGVmIEhBVkVfQlpJUDIKKyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKK3N0YXRp
YyBjb25zdCBjaGFyICplbm9tZW1fbXNnID0gIlN5c3RlbSBlcnJvcjogQ2Fubm90IGFsbG9jYXRl
IG1lbW9yeSI7CisKK3N0YXRpYyBjb25zdCBjaGFyICplcnJvcl9hcnJheVtdID0geworICAgICJT
eXN0ZW0gZXJyb3IiLAorICAgICJaTGliIGVycm9yIiwKKyAgICAibGliYnppcDIgZXJyb3IiLAor
ICAgICJJbnZhbGlkIGFyZ3VtZW50IiwKKyAgICAiQmFkIHN0YXRlIiwKKyAgICAiU3RyaW5nIHRv
byBsb25nIiwKKyAgICAiUGFyc2UgZXJyb3IiLAorICAgICJQYXJzZWQgYW4gdW5leHBlY3RlZCB0
eXBlIiwKKyAgICAiRWxlbWVudCBpbiBjb250YWluZXIgaXMgTlVMTCIsCisgICAgIk5hbWUgYWxy
ZWFkeSB1c2VkIiwKKyAgICAiRW5kIG9mIGZpbGUiLAorICAgICJVbmV4cGVjdGVkIGVuZCBvZiBm
aWxlIiwKKyAgICAiRXJyb25lb3VzIGVuZCBvZiBmaWxlIiwKKyAgICAiRW5kIG9mIGZpbGUgbm90
IHJlYWNoZWQiLAorICAgICJQYXJhbWV0ZXIgaGFzIGJhZCB0eXBlIiwKKyAgICAiUGFyYW1ldGVy
IGhhcyBiYWQgdHlwZSBraW5kIiwKKyAgICAiRWxlbWVudCBub3QgZm91bmQiLAorICAgICJUeXBl
IGxhY2tzIHN0cnVjdCBtYXBwaW5nIiwKKyAgICAiVGhlIHByb3ZpZGVkIHN0cnVjdHVyZSBtYXBw
aW5nIGlzIGludmFsaWQiLAorICAgICJUeXBlIG1pc21hdGNoIiwKKyAgICAiQmFkIGNob2ljZSB2
YWx1ZSIsCisgICAgIkNvbXBhcmlzb24gZmFpbGVkIiwKKyAgICAiQyBjb21waWxlIGVycm9yIiwK
KyAgICAiQ2hpbGQgcHJvY2VzcyBkaWVkIGJlY2F1c2UgaXQgcmVjZWl2ZWQgYSBzaWduYWwiLAor
ICAgICJEeW5hbWljIGxvYWRpbmcgZXJyb3IiLAorICAgICJKdW1wIHRvIGJhZCBsYWJlbCBpbiBH
UEMgcHJvdG90eXBlIiwKKyAgICAiVmlvbGF0aW9uIG9mIEdQQyBzZW1hbnRpY3MiLAorICAgICJD
b21wYXJlLWFuZC1zd2FwIGZhaWxlZCIsCisgICAgIkhvc3RuYW1lIGxvb2t1cCBmYWlsdXJlIiwK
KyAgICAiT3BlcmF0aW9uIG5vdCBhbGxvd2VkIiwKKyAgICAiT3BlcmF0aW9uIG5vdCBpbXBsZW1l
bnRlZCIsCisgICAgIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIiwKKyAgICAiRXh0ZXJuYWwgZXJy
b3IiLAorICAgICJJbnRlcm5hbCBlcnJvciIKK307CisKK2NvbnN0IGNoYXIgKnRzZl9nZXRfbWVz
c2FnZV9mb3JfZXJyb3JfY29kZSh0c2ZfZXJyb3JfdCBjb2RlKSB7CisgICAgcmV0dXJuIGVycm9y
X2FycmF5W2NvZGVdOworfQorCitzdGF0aWMgdm9pZCB0c2Zfc2V0X2Vycm9yX2ltcGwodHNmX2Vy
cm9yX3QgKmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpl
cnJvcl9lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmVycm9yX2Rl
YWRseV9zaWduYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplcnJvcl96
bGliX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVy
cm9yX3psaWJfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiplcnJv
cl9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Vycm9yX3QgY29kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3lzX2Vycm5vLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBkZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB6bGliX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqemxpYl9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgbHN0KSB7CisgICAgY2hhciAqc3RyOworCisgICAgaWYgKCplcnJvcl9zdHIhPU5VTEwg
JiYgKmVycm9yX3N0ciE9ZW5vbWVtX21zZykgeworICAgICAgICBmcmVlKCplcnJvcl9zdHIpOwor
ICAgIH0KKyAgICAKKyAgICAqZXJyb3JfY29kZT1jb2RlOworICAgICplcnJvcl9lcnJubz1zeXNf
ZXJybm87CisgICAgKmVycm9yX2RlYWRseV9zaWduYWw9ZGVhZGx5X3NpZ25hbDsKKyAgICAqZXJy
b3JfemxpYl9jb2RlPXpsaWJfY29kZTsKKyAgICAqZXJyb3JfemxpYl9tc2c9emxpYl9tc2c7Cisg
ICAgCisgICAgaWYgKGZvcm1hdD09TlVMTCkgeworICAgICAgICAqZXJyb3Jfc3RyPXN0cmR1cChl
cnJvcl9hcnJheVtjb2RlXSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RyPXRzZl92YXNwcmlu
dGYoZm9ybWF0LCBsc3QpOworICAgICAgICBpZiAoc3RyPT1OVUxMKSB7CisgICAgICAgICAgICAq
ZXJyb3Jfc3RyPU5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqZXJyb3Jfc3Ry
PXRzZl9hc3ByaW50ZigiJXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yX2FycmF5W2NvZGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyKTsKKyAgICAgICAgICAgIGZyZWUoc3RyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBpZiAoKmVycm9yX3N0cj09TlVMTCkgeworICAgICAgICAqZXJyb3Jfc3RyPShjaGFyKill
bm9tZW1fbXNnOworICAgICAgICAqZXJyb3JfY29kZT1UU0ZfRV9FUlJOTzsKKyAgICAgICAgKmVy
cm9yX2Vycm5vPWVycm5vOworICAgIH0KK30KKworI2lmZGVmIEhBVkVfUFRIUkVBRAorCitzdHJ1
Y3QgdHNmX2Vycm9yX3N0cnVjdCB7CisgICAgdHNmX2Vycm9yX3QgZXJyb3JfY29kZTsKKyAgICBp
bnQgc3lzX2Vycm5vOworICAgIGludCBkZWFkbHlfc2lnbmFsOworICAgIGludCB6bGliX2NvZGU7
CisgICAgY29uc3QgY2hhciAqemxpYl9tc2c7CisgICAgY2hhciAqZXJyb3Jfc3RyOworfTsKKwor
c3RhdGljIHB0aHJlYWRfb25jZV90IG9uY2VfY29udHJvbCA9IFBUSFJFQURfT05DRV9JTklUOwor
c3RhdGljIHB0aHJlYWRfa2V5X3QgZXJyb3I7CisKK3N0YXRpYyB2b2lkIGVycm9yX2Rlc3Ryb3ko
dm9pZCAqYXJnKSB7CisgICAgaWYgKGFyZyE9TlVMTCkgeworICAgICAgICBzdHJ1Y3QgdHNmX2Vy
cm9yX3N0cnVjdCAqZXM9YXJnOworICAgICAgICBpZiAoZXMtPmVycm9yX3N0ciE9TlVMTCkgewor
ICAgICAgICAgICAgZnJlZShlcy0+ZXJyb3Jfc3RyKTsKKyAgICAgICAgfQorICAgICAgICBmcmVl
KGVzKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGluaXQoKSB7CisgICAgcHRocmVhZF9rZXlf
Y3JlYXRlKCZlcnJvcixlcnJvcl9kZXN0cm95KTsKK30KKwordm9pZCB0c2Zfc2V0X2Vycm9yX2Z1
bGx2KHRzZl9lcnJvcl90IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN5c19l
cnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVhZGx5X3NpZ25hbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgemxpYl9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICp6bGliX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBsc3QpIHsK
KyAgICBzdHJ1Y3QgdHNmX2Vycm9yX3N0cnVjdCAqZXM7CisgICAgcHRocmVhZF9vbmNlKCZvbmNl
X2NvbnRyb2wsaW5pdCk7CisgICAgCisgICAgZXM9cHRocmVhZF9nZXRzcGVjaWZpYyhlcnJvcik7
CisgICAgaWYgKGVzPT1OVUxMKSB7CisgICAgICAgIGVzPW1hbGxvYyhzaXplb2Yoc3RydWN0IHRz
Zl9lcnJvcl9zdHJ1Y3QpKTsKKyAgICAgICAgaWYgKGVzPT1OVUxMKSB7CisgICAgICAgICAgICAv
KiB3ZSdyZSBkZWFkISAqLworICAgICAgICAgICAgdHNmX2Fib3J0KCJDb3VsZCBub3QgYWxsb2Nh
dGUgZXJyb3Igc3RydWN0IGluICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3NldF9lcnJv
clxuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVzLT5lcnJvcl9jb2RlPTA7Cisg
ICAgICAgIGVzLT5zeXNfZXJybm89MDsKKyAgICAgICAgZXMtPmRlYWRseV9zaWduYWw9MDsKKyAg
ICAgICAgZXMtPnpsaWJfY29kZT0wOworICAgICAgICBlcy0+emxpYl9tc2c9TlVMTDsKKyAgICAg
ICAgZXMtPmVycm9yX3N0cj1OVUxMOworICAgICAgICAKKyAgICAgICAgcHRocmVhZF9zZXRzcGVj
aWZpYyhlcnJvcixlcyk7CisgICAgfQorICAgIAorICAgIHRzZl9zZXRfZXJyb3JfaW1wbCgmZXMt
PmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICZlcy0+c3lzX2Vycm5vLAorICAg
ICAgICAgICAgICAgICAgICAgICAmZXMtPmRlYWRseV9zaWduYWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICZlcy0+emxpYl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAmZXMtPnpsaWJf
bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAmZXMtPmVycm9yX3N0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3lzX2Vycm5vLAorICAg
ICAgICAgICAgICAgICAgICAgICBkZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAgICAgICAg
ICB6bGliX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICB6bGliX21zZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBsc3QpOworfQor
Cit0c2ZfZXJyb3JfdCB0c2ZfZ2V0X2Vycm9yX2NvZGUoKSB7CisgICAgcmV0dXJuICgoc3RydWN0
IHRzZl9lcnJvcl9zdHJ1Y3QqKXB0aHJlYWRfZ2V0c3BlY2lmaWMoZXJyb3IpKS0+ZXJyb3JfY29k
ZTsKK30KKworaW50IHRzZl9nZXRfc3lzdGVtX2Vycm5vKCkgeworICAgIHJldHVybiAoKHN0cnVj
dCB0c2ZfZXJyb3Jfc3RydWN0KilwdGhyZWFkX2dldHNwZWNpZmljKGVycm9yKSktPnN5c19lcnJu
bzsKK30KKworaW50IHRzZl9nZXRfZGVhZGx5X3NpZ25hbCgpIHsKKyAgICByZXR1cm4gKChzdHJ1
Y3QgdHNmX2Vycm9yX3N0cnVjdCopcHRocmVhZF9nZXRzcGVjaWZpYyhlcnJvcikpLT5kZWFkbHlf
c2lnbmFsOworfQorCitpbnQgdHNmX2dldF96bGliX2Vycm9yX2NvZGUoKSB7CisgICAgcmV0dXJu
ICgoc3RydWN0IHRzZl9lcnJvcl9zdHJ1Y3QqKXB0aHJlYWRfZ2V0c3BlY2lmaWMoZXJyb3IpKS0+
emxpYl9jb2RlOworfQorCitjb25zdCBjaGFyICp0c2ZfZ2V0X3psaWJfZXJyb3JfbXNnKCkgewor
ICAgIHJldHVybiAoKHN0cnVjdCB0c2ZfZXJyb3Jfc3RydWN0KilwdGhyZWFkX2dldHNwZWNpZmlj
KGVycm9yKSktPnpsaWJfbXNnOworfQorCitpbnQgdHNmX2dldF9saWJiemlwMl9lcnJvcl9jb2Rl
KCkgeworICAgIHJldHVybiAoKHN0cnVjdCB0c2ZfZXJyb3Jfc3RydWN0KilwdGhyZWFkX2dldHNw
ZWNpZmljKGVycm9yKSktPnpsaWJfY29kZTsKK30KKworY29uc3QgY2hhciAqdHNmX2dldF9saWJi
emlwMl9lcnJvcl9tc2coKSB7CisgICAgcmV0dXJuICgoc3RydWN0IHRzZl9lcnJvcl9zdHJ1Y3Qq
KXB0aHJlYWRfZ2V0c3BlY2lmaWMoZXJyb3IpKS0+emxpYl9tc2c7Cit9CisKK2NvbnN0IGNoYXIg
KnRzZl9nZXRfZXJyb3Iodm9pZCkgeworICAgIHJldHVybiAoKHN0cnVjdCB0c2ZfZXJyb3Jfc3Ry
dWN0KilwdGhyZWFkX2dldHNwZWNpZmljKGVycm9yKSktPmVycm9yX3N0cjsKK30KKworI2Vsc2UK
Kworc3RhdGljIHRzZl9lcnJvcl90IGVycm9yX2NvZGU9VFNGX0VfTEFTVDsKK3N0YXRpYyBpbnQg
c3lzX2Vycm5vPTA7CitzdGF0aWMgaW50IGRlYWRseV9zaWduYWw9MDsKK3N0YXRpYyBpbnQgemxp
Yl9jb2RlPTA7CitzdGF0aWMgY29uc3QgY2hhciAqemxpYl9tc2c9TlVMTDsKK3N0YXRpYyBjaGFy
ICplcnJvcl9zdHI9TlVMTDsKKwordm9pZCB0c2Zfc2V0X2Vycm9yX2Z1bGx2KHRzZl9lcnJvcl90
IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG15X2Vycm5vLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBteV9kZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBteV96bGliX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm15X3psaWJfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGxzdCkgeworICAgIHRz
Zl9zZXRfZXJyb3JfaW1wbCgmZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJnN5
c19lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgJmRlYWRseV9zaWduYWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICZ6bGliX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICZ6bGli
X21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX3N0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbXlfZXJybm8sCisgICAgICAg
ICAgICAgICAgICAgICAgIG15X2RlYWRseV9zaWduYWwsCisgICAgICAgICAgICAgICAgICAgICAg
IG15X3psaWJfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgIG15X3psaWJfbXNnLAorICAg
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGxzdCk7
Cit9CisKK3RzZl9lcnJvcl90IHRzZl9nZXRfZXJyb3JfY29kZSgpIHsKKyAgICByZXR1cm4gZXJy
b3JfY29kZTsKK30KKworaW50IHRzZl9nZXRfc3lzdGVtX2Vycm5vKCkgeworICAgIHJldHVybiBz
eXNfZXJybm87Cit9CisKK2ludCB0c2ZfZ2V0X2RlYWRseV9zaWduYWwoKSB7CisgICAgcmV0dXJu
IGRlYWRseV9zaWduYWw7Cit9CisKK2ludCB0c2ZfZ2V0X3psaWJfZXJyb3JfY29kZSgpIHsKKyAg
ICByZXR1cm4gemxpYl9jb2RlOworfQorCitjb25zdCBjaGFyICp0c2ZfZ2V0X3psaWJfZXJyb3Jf
bXNnKCkgeworICAgIHJldHVybiB6bGliX21zZzsKK30KKworaW50IHRzZl9nZXRfbGliYnppcDJf
ZXJyb3JfY29kZSgpIHsKKyAgICByZXR1cm4gemxpYl9jb2RlOworfQorCitjb25zdCBjaGFyICp0
c2ZfZ2V0X2xpYmJ6aXAyX2Vycm9yX21zZygpIHsKKyAgICByZXR1cm4gemxpYl9tc2c7Cit9CisK
K2NvbnN0IGNoYXIgKnRzZl9nZXRfZXJyb3IoKSB7CisgICAgcmV0dXJuIGVycm9yX3N0cjsKK30K
KworI2VuZGlmCisKK3ZvaWQgdHNmX3NldF9lcnJvcl9mdWxsKHRzZl9lcnJvcl90IGNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbXlfZXJybm8sCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbXlfZGVhZGx5X3NpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
eV96bGliX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbXlfemxp
Yl9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAuLi4pIHsKKyAgICB2YV9saXN0IGxzdDsKKyAgICAKKyAgICB2
YV9zdGFydChsc3QsIGZvcm1hdCk7CisgICAgdHNmX3NldF9lcnJvcl9mdWxsdihjb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbXlfZXJybm8sCisgICAgICAgICAgICAgICAgICAgICAgICBt
eV9kZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgbXlfemxpYl9lcnJvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG15X3psaWJfbXNnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0KTsKKyAgICB2YV9lbmQo
bHN0KTsKK30KKworI2RlZmluZSBlcnJvcl9ib2R5KGVycm5vLHNpZyx6bF9jb2RlLHpsX21zZyxj
b2RlLHByZWZtdCxzdHJlcnIpIFwKK2RvIHsgXAorICAgIHZhX2xpc3QgbHN0OyBcCisgICAgY2hh
ciAqbXNnOyBcCisgICAgIFwKKyAgICBpZiAoZm9ybWF0PT1OVUxMKSB7IFwKKyAgICAgICAgdHNm
X3NldF9lcnJvcl9mdWxsKGNvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5v
LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWcsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHpsX2NvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsX21zZywg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZm10LCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlcnIpOyBcCisgICAgICAgIHJldHVybjsgXAorICAgIH0gXAorICAgICBc
CisgICAgdmFfc3RhcnQobHN0LCBmb3JtYXQpOyBcCisgICAgbXNnPXRzZl92YXNwcmludGYoZm9y
bWF0LCBsc3QpOyBcCisgICAgdmFfZW5kKGxzdCk7IFwKKyAgICAgXAorICAgIGlmIChtc2c9PU5V
TEwpIHsgXAorICAgICAgICB0c2Zfc2V0X2Vycm9yX2Z1bGwoVFNGX0VfRVJSTk8sIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJlcnJvcihlcnJubykpOyBcCisgICAgICAgIHJldHVybjsgXAorICAgIH0gXAorICAgICBc
CisgICAgdHNmX3NldF9lcnJvcl9mdWxsKGNvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ZXJybm8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgc2lnLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgIHpsX2NvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgemxfbXNnLCBcCisgICAg
ICAgICAgICAgICAgICAgICAgIHByZWZtdCAiOiAlcyIsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZXJyLCBcCisgICAgICAgICAgICAgICAgICAgICAgIG1zZyk7IFwKKyAgICAgXAorICAg
IGZyZWUobXNnKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBzaW1wbGVfZXJyb3JfYm9keShj
b2RlKSBcCitkbyB7IFwKKyAgICB2YV9saXN0IGxzdDsgXAorICAgIHZhX3N0YXJ0KGxzdCwgZm9y
bWF0KTsgXAorICAgIHRzZl9zZXRfZXJyb3JfZnVsbHYoY29kZSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Qp
OyBcCisgICAgdmFfZW5kKGxzdCk7IFwKK30gd2hpbGUgKDApCisKK3ZvaWQgdHNmX3NldF9lcnJv
cih0c2ZfZXJyb3JfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAuLi4pIHsKKyAgICBzaW1wbGVfZXJyb3JfYm9keShjb2Rl
KTsKK30KKwordm9pZCB0c2Zfc2V0X3NwZWNpZmljX2Vycm5vKGludCBjdXJfZXJybm8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC4uLikgeworICAgIGVycm9yX2JvZHkoY3VyX2Vycm5vLDAsMCxOVUxM
LFRTRl9FX0VSUk5PLCIlcyIsc3RyZXJyb3IoY3VyX2Vycm5vKSk7Cit9CisKK3ZvaWQgdHNmX3Nl
dF9lcnJubyhjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgLi4uKSB7Cisg
ICAgaW50IG15X2Vycm5vID0gZXJybm87CisgICAgZXJyb3JfYm9keShteV9lcnJubywwLDAsTlVM
TCxUU0ZfRV9FUlJOTywiJXMiLHN0cmVycm9yKG15X2Vycm5vKSk7Cit9CisKK3ZvaWQgdHNmX3Nl
dF9kZWFkbHlfc2lnbmFsKGludCBkZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqZm9ybWF0LC4uLikgeworICAgIGVycm9yX2JvZHkoMCwKKyAgICAg
ICAgICAgICAgIGRlYWRseV9zaWduYWwsCisgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgICAgIFRTRl9FX0RFQVRIX0JZX1NJR05BTCwKKyAgICAgICAg
ICAgICAgICJSZWNlaXZlZCBzaWduYWwgIyVkIiwKKyAgICAgICAgICAgICAgIGRlYWRseV9zaWdu
YWwpOworfQorCisjaWZkZWYgSEFWRV9aTElCCisKK2NvbnN0IGNoYXIgKnRzZl96bGliX3N0cmVy
cm9yKGludCBjb2RlKSB7CisgICAgc3dpdGNoIChjb2RlKSB7CisgICAgICAgIGNhc2UgWl9WRVJT
SU9OX0VSUk9SOiAgIHJldHVybiAiWkxpYiBjb21waWxlZCB3aXRoIHdyb25nIGhlYWRlci8iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlicmFyeSBjb21iaW5hdGlv
bi4iOworICAgICAgICBjYXNlIFpfU1RSRUFNX0VSUk9SOiAgICByZXR1cm4gIlN0cmVhbSBlcnJv
ci4iOworICAgICAgICBjYXNlIFpfTUVNX0VSUk9SOiAgICAgICByZXR1cm4gIkF0dGVtcHQgdG8g
cmVxdWVzdCBtZW1vcnkgZmFpbGVkLiI7CisgICAgICAgIGNhc2UgWl9EQVRBX0VSUk9SOiAgICAg
IHJldHVybiAiRGF0YSBpbnRlZ3JpdHkgZXJyb3IuIjsKKyAgICAgICAgY2FzZSBaX0JVRl9FUlJP
UjogICAgICAgcmV0dXJuICJCdWZmZXJpbmcgZXJyb3IuIjsKKyAgICAgICAgY2FzZSBaX0VSUk5P
OiAgICAgICAgICAgcmV0dXJuICJTeXN0ZW0gZXJyb3IuICBDaGVjayBlcnJuby4iOworICAgICAg
ICBkZWZhdWx0OiAgICAgICAgICAgICAgICByZXR1cm4gIlVua25vd24gZXJyb3IgY29kZS4iOwor
ICAgIH0KK30KKwordm9pZCB0c2Zfc2V0X3psaWJfZXJyb3IoaW50IGVycm9yX2NvZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcl9tc2csCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsLi4uKSB7CisgICAgc3dpdGNoIChlcnJvcl9j
b2RlKSB7CisgICAgY2FzZSBaX0VSUk5POiB7CisgICAgICAgIGludCBteV9lcnJubyA9IGVycm5v
OyAvLyBTYXZlIGVycm5vIHNpbmNlIGl0IGNhbiBjaGFuZ2UgdmVyeSBlYXNpbHkuCisgICAgICAg
IGVycm9yX2JvZHkobXlfZXJybm8sIDAsIDAsIE5VTEwsIFRTRl9FX0VSUk5PLCAiJXMiLCBzdHJl
cnJvcihteV9lcnJubykpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBaX01FTV9F
UlJPUjoKKyAgICAgICAgZXJyb3JfYm9keShFTk9NRU0sIDAsIDAsIE5VTEwsIFRTRl9FX0VSUk5P
LCAiJXMiLCBzdHJlcnJvcihFTk9NRU0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgaWYgKGVycm9yX21zZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnJvcl9tc2cg
PSB0c2ZfemxpYl9zdHJlcnJvcihlcnJvcl9jb2RlKTsKKyAgICAgICAgfQorICAgICAgICBlcnJv
cl9ib2R5KDAsCisgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2RlLAorICAgICAgICAgICAgICAgICAgIGVycm9yX21zZywKKyAgICAgICAgICAgICAgICAg
ICBUU0ZfRV9aTElCX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICIlcyIsCisgICAgICAgICAg
ICAgICAgICAgZXJyb3JfbXNnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisjZWxzZQor
Citjb25zdCBjaGFyICp0c2ZfemxpYl9zdHJlcnJvcihpbnQgY29kZSkgeworICAgIHRzZl9hYm9y
dCgidHNmX3psaWJfc3RyZXJyb3IoKSBjYWxsZWQgZXZlbiB0aG91Z2ggemxpYiBzdXBwb3J0IGlz
IG5vdCAiCisgICAgICAgICAgICAgICJjb21waWxlZCBpbi4iKTsKK30KKwordm9pZCB0c2Zfc2V0
X3psaWJfZXJyb3IoaW50IGVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICplcnJvcl9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpm
b3JtYXQsLi4uKSB7CisgICAgdHNmX2Fib3J0KCJ0c2Zfc2V0X3psaWJfZXJyb3IoKSBjYWxsZWQg
ZXZlbiB0aG91Z2ggemxpYiBzdXBwb3J0IGlzIG5vdCAiCisgICAgICAgICAgICAgICJjb21waWxl
ZCBpbi4iKTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX0JaSVAyCisKK2NvbnN0IGNoYXIg
KnRzZl9saWJiemlwMl9zdHJlcnJvcihpbnQgY29kZSkgeworICAgIHN3aXRjaCAoY29kZSkgewor
ICAgICAgICBjYXNlIEJaX0NPTkZJR19FUlJPUjogICByZXR1cm4gImxpYmJ6aXAyIGlzIG5vdCBj
b25maWd1cmVkIHRvIHJ1biBvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0aGlzIHBsYXRmb3JtLiAgVGhpcyBpcyBhIGZhdGFsIGVycm9yLiI7CisgICAgICAgIGNh
c2UgQlpfU0VRVUVOQ0VfRVJST1I6IHJldHVybiAiSW5jb3JyZWN0IHNlcXVlbmNlIG9mIGNhbGxz
IHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWJiemlwMiBm
dW5jdGlvbnMuICBUaGlzIGlzIGEgZmF0YWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImVycm9yLiI7CisgICAgICAgIGNhc2UgQlpfUEFSQU1fRVJST1I6ICAgIHJl
dHVybiAiUGFyYW1ldGVyIHRvIGxpYmJ6aXAyIGZ1bmN0aW9uIGlzIG91dCAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgcmFuZ2UuICBUaGlzIGlzIGEgZmF0YWwg
ZXJyb3IuIjsKKyAgICAgICAgY2FzZSBCWl9NRU1fRVJST1I6ICAgICAgcmV0dXJuICJBdHRlbXB0
IHRvIHJlcXVlc3QgbWVtb3J5IGZhaWxlZC4iOworICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1I6
ICAgICByZXR1cm4gIkRhdGEgaW50ZWdyaXR5IGVycm9yLiI7CisgICAgICAgIGNhc2UgQlpfREFU
QV9FUlJPUl9NQUdJQzogcmV0dXJuICJEYXRhIGRvZXMgbm90IGNvbnRhaW4gY29ycmVjdCBtYWdp
YyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMuIjsKKyAg
ICAgICAgY2FzZSBCWl9JT19FUlJPUjogICAgICAgcmV0dXJuICJJL08gZXJyb3IuICBDaGVjayBz
eXN0ZW0ncyBlcnJuby4iOworICAgICAgICBjYXNlIEJaX1VORVhQRUNURURfRU9GOiByZXR1cm4g
IlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUuIjsKKyAgICAgICAgY2FzZSBCWl9PVVRCVUZGX0ZVTEw6
ICAgcmV0dXJuICJPdXRwdXQgYnVmZmVyIGlzIHRvbyBzbWFsbC4iOworICAgICAgICBkZWZhdWx0
OiAgICAgICAgICAgICAgICByZXR1cm4gIlVua25vd24gZXJyb3IgY29kZS4iOworICAgIH0KK30K
Kwordm9pZCB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKGludCBlcnJvcl9jb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSB7CisgICAgc3dpdGNo
IChlcnJvcl9jb2RlKSB7CisgICAgY2FzZSBCWl9NRU1fRVJST1I6CisgICAgICAgIGVycm9yX2Jv
ZHkoRU5PTUVNLCAwLCAwLCBOVUxMLCBUU0ZfRV9FUlJOTywgIiVzIiwgc3RyZXJyb3IoRU5PTUVN
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQlpfSU9fRVJST1I6IHsKKyAgICAgICAgaW50
IG15X2Vycm5vID0gZXJybm87CisgICAgICAgIGVycm9yX2JvZHkobXlfZXJybm8sIDAsIDAsIE5V
TEwsIFRTRl9FX0VSUk5PLCAiJXMiLCBzdHJlcnJvcihteV9lcnJubykpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBCWl9VTkVYUEVDVEVEX0VPRjoKKyAgICAgICAgc2ltcGxlX2Vy
cm9yX2JvZHkoVFNGX0VfRVJST05FT1VTX0VPRik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGVycm9yX2JvZHkoMCwKKyAgICAgICAgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgICAgICAgIGVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgdHNmX2xpYmJ6aXAy
X3N0cmVycm9yKGVycm9yX2NvZGUpLAorICAgICAgICAgICAgICAgICAgIFRTRl9FX0xJQkJaSVAy
X0VSUk9SLAorICAgICAgICAgICAgICAgICAgICIlcyIsCisgICAgICAgICAgICAgICAgICAgdHNm
X2xpYmJ6aXAyX3N0cmVycm9yKGVycm9yX2NvZGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCisjZWxzZQorCitjb25zdCBjaGFyICp0c2ZfbGliYnppcDJfc3RyZXJyb3IoaW50IGNvZGUp
IHsKKyAgICB0c2ZfYWJvcnQoInRzZl9saWJiemlwMl9zdHJlcnJvcigpIGdvdCBjYWxsZWQsIGJ1
dCBsaWJiemlwMiBzdXBwb3J0ICIKKyAgICAgICAgICAgICAgIndhcyBub3QgY29tcGlsZWQgaW4u
Iik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgdHNmX3NldF9saWJiemlwMl9lcnJvcihp
bnQgZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpm
b3JtYXQsLi4uKSB7CisgICAgdHNmX2Fib3J0KCJ0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKCkgZ290
IGNhbGxlZCwgYnV0IGxpYmJ6aXAyIHN1cHBvcnQgIgorICAgICAgICAgICAgICAid2FzIG5vdCBj
b21waWxlZCBpbi4iKTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BUSFJFQUQKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCBidWZfb25jZV9jb250cm9sPVBUSFJFQURfT05DRV9JTklUOworc3Rh
dGljIHB0aHJlYWRfa2V5X3Qgc3RyX2J1ZjsKKworc3RhdGljIHZvaWQgaW5pdF9zdHJfYnVmKHZv
aWQpIHsKKyAgICBwdGhyZWFkX2tleV9jcmVhdGUoJnN0cl9idWYsZnJlZSk7Cit9CisKK3N0YXRp
YyBjaGFyICpnZXRfc3RyX2J1Zih2b2lkKSB7CisgICAgcHRocmVhZF9vbmNlKCZidWZfb25jZV9j
b250cm9sLGluaXRfc3RyX2J1Zik7CisgICAgY2hhciAqcmVzdWx0PXB0aHJlYWRfZ2V0c3BlY2lm
aWMoc3RyX2J1Zik7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworCXJlc3VsdD1tYWxsb2MoMTAw
KTsKKwlwdGhyZWFkX3NldHNwZWNpZmljKHN0cl9idWYscmVzdWx0KTsKKyAgICB9CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKyNlbHNlCitzdGF0aWMgY2hhciBzdHJfYnVmWzEwMF07CisKK3N0YXRp
YyBjaGFyICpnZXRfc3RyX2J1Zih2b2lkKSB7CisgICAgcmV0dXJuIHN0cl9idWY7Cit9CisjZW5k
aWYKKworY29uc3QgY2hhciAqdHNmX2dldF9lcnJvcl9pbmZpeCh2b2lkKSB7CisgICAgc3dpdGNo
ICh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSkgeworICAgIGNhc2UgVFNGX0VfRVJSTk86IHJldHVybiBz
dHJlcnJvcih0c2ZfZ2V0X3N5c3RlbV9lcnJubygpKTsKKyAgICBjYXNlIFRTRl9FX0RFQVRIX0JZ
X1NJR05BTDoKKwlpZiAoZ2V0X3N0cl9idWYoKT09TlVMTCkgeworCSAgICByZXR1cm4gTlVMTDsK
Kwl9CisJc3ByaW50ZihnZXRfc3RyX2J1ZigpLCJSZWNlaXZlZCBzaWduYWwgIyVkIiwKKwkJdHNm
X2dldF9kZWFkbHlfc2lnbmFsKCkpOworCXJldHVybiBnZXRfc3RyX2J1ZigpOworI2lmZGVmIEhB
VkVfWkxJQgorICAgIGNhc2UgVFNGX0VfWkxJQl9FUlJPUjoKKwlyZXR1cm4gdHNmX2dldF96bGli
X2Vycm9yX21zZygpOworI2VuZGlmCisjaWZkZWYgSEFWRV9CWklQMgorICAgIGNhc2UgVFNGX0Vf
TElCQlpJUDJfRVJST1I6CisJcmV0dXJuIHRzZl9nZXRfbGliYnppcDJfZXJyb3JfbXNnKCk7Cisj
ZW5kaWYKKyAgICBkZWZhdWx0OgorCXJldHVybiBOVUxMOworICAgIH0KK30KKworY29uc3QgY2hh
ciAqdHNmX2dldF9lcnJvcl9zdWZmaXgodm9pZCkgeworICAgIGNvbnN0IGNoYXIgKndob2xlX21z
Zz10c2ZfZ2V0X2Vycm9yKCk7CisgICAgY29uc3QgY2hhciAqcHJlZml4PXRzZl9nZXRfZXJyb3Jf
cHJlZml4KCk7CisgICAgdW5zaWduZWQgcHJlZml4X2xlbj1zdHJsZW4ocHJlZml4KTsKKworICAg
IC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHByZWZpeCAqLwor
ICAgIGlmIChzdHJsZW4od2hvbGVfbXNnKT09cHJlZml4X2xlbikgeworCXJldHVybiBOVUxMOwor
ICAgIH0gZWxzZSB7CisJLyogdHVybnMgb3V0IG5vdC4gIG5vdyB0aGVyZSBhcmUgdHdvIHBvc3Np
YmlsaXRpZXMgdG8KKwkgICBjb25zaWRlcjoKKwkgICAKKwkgICAtIHRoZSByZW1haW5kZXIgaXMg
IjogIiBmb2xsb3dlZCBieSBzb21lIHRleHQsIG9yCisKKwkgICAtIHRoZSByZW1haW5kZXIgaXMg
c29tZXRoaW5nIGVsc2UsIG1lYW5pbmcgdGhhdCB0aGlzCisJICAgICBpcyBhIGNvbXBsZXRlbHkg
aW52YWxpZCBlcnJvciBzdHJpbmchICovCisKKwljb25zdCBjaGFyICppbmZpeD10c2ZfZ2V0X2Vy
cm9yX2luZml4KCk7CisJY29uc3QgY2hhciAqcmVzdWx0PXdob2xlX21zZytwcmVmaXhfbGVuKzI7
CisKKwl0c2ZfYXNzZXJ0KHdob2xlX21zZ1twcmVmaXhfbGVuXT09JzonICYmCisJCSAgIHdob2xl
X21zZ1twcmVmaXhfbGVuKzFdPT0nICcpOworCisJLyogb2suICB3ZSBrbm93IHRoYXQgdGhlIGVy
cm9yIHN0cmluZyBpcyBwcm9wZXJseQorCSAgIGZvcm1hdHRlZC4gIG5vdyB0aGVyZSBhcmUgdGhy
ZWUgb3RoZXIgcG9zc2liaWxpdGVzIHRvCisJICAgZGVhbCB3aXRoOgorCisJICAgLSB0aGUgcmVt
YWluZGVyIGNvbnRhaW5zIHRoZSBzby1jYWxsZWQgaW5maXggKHdoaWNoIGlzCisJICAgICBqdXN0
IHRoZSBlcnJvciBzdHJpbmcgdGhhdCB3ZSBnb3QgZnJvbSBzb21lIGRlcGVuZGVuY3kKKwkgICAg
IHRoYXQgZ2VuZXJhdGVkIHRoZSBlcnJvciksIGZvbGxvd2VkIGJ5IG5vdGhpbmcgZWxzZS4KKwkg
ICAgIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBzdWZmaXguCisKKwkgICAtIHRoZSByZW1h
aW5kZXIgY29udGFpbnMgdGhlIHNvLWNhbGxlZCBpbmZpeCBmb2xsb3dlZCBieQorCSAgICAgYSAi
OiAiIGFuZCB0aGUgYWN0dWFsIHN1ZmZpeC4KKworCSAgIC0gdGhlIHJlbWFpbmRlciBlaXRoZXIg
ZG9lc24ndCBjb250YWluIHRoZSBpbmZpeCwgb3IKKwkgICAgIGVsc2UgaXQgY29udGFpbnMgdGhl
IGluZml4IGJ1dCB3aXRob3V0IHRoZSAiOiAiOyB0aGlzCisJICAgICBtZWFucyB3ZSBhc3N1bWUg
dGhhdCB0aGUgd2hvbGUgcmVtYWluZGVyIGlzIHRoZSBzdWZmaXguICovCisKKwkvKiBwcmludGYo
ImluZml4ID0gJXNcbnJlc3VsdCA9ICVzXG4iLGluZml4LHJlc3VsdCk7ICovCisKKwlpZiAoaW5m
aXghPU5VTEwgJiYKKwkgICAgc3Ryc3RyKHJlc3VsdCxpbmZpeCk9PXJlc3VsdCkgeworCSAgICB1
bnNpZ25lZCBpbmZpeF9sZW49c3RybGVuKGluZml4KTsKKwkgICAgaWYgKHJlc3VsdFtpbmZpeF9s
ZW5dPT0wKSB7CisJCS8qIHRoZXJlIGlzIG5vIHN1ZmZpeCAodGhlIHdob2xlIHJlbWFpbmRlciBp
cyBqdXN0CisJCSAgIGluZml4LiAqLworCQlyZXR1cm4gTlVMTDsKKwkgICAgfQorCSAgICBpZiAo
cmVzdWx0W2luZml4X2xlbl09PSc6JyAmJgorCQlyZXN1bHRbaW5maXhfbGVuKzFdPT0nICcpIHsK
KwkJLyogdGhlcmUgaXMgYSBzdWZmaXggYWZ0ZXIgdGhlIGluZml4LiAqLworCQlyZXR1cm4gcmVz
dWx0K2luZml4X2xlbisyOworCSAgICB9IGVsc2UgeworCQkvKiB0aGUgaW5maXggaXMgdGhlcmUs
IGJ1dCB0aGVyZSBpcyBubyAiOiAiLCBzbyB3ZQorCQkgICBhc3N1bWUgdGhhdCB0aGVyZSBpcyBu
byBpbmZpeCBhZnRlcmFsbC4gKi8KKwkJcmV0dXJuIHJlc3VsdDsKKwkgICAgfQorCX0gZWxzZSB7
CisJICAgIC8qIHRoZXJlIGlzIG5vIGluZml4LiAqLworCSAgICByZXR1cm4gcmVzdWx0OworCX0K
KyAgICB9Cit9CisKK3ZvaWQgdHNmX2ZfYWJvcnQoY29uc3QgY2hhciAqbXNnKSB7CisgICAgZnBy
aW50ZihzdGRlcnIsInRzZl9mX2Fib3J0KFwiJXNcIilcbiIsbXNnKTsKKyAgICBhYm9ydCgpOwor
fQorCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZm9y
bWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9mb3JtYXQuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvdHNmX2Zvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJ
WkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgRlBfVFNGX0ZPUk1BVF9ICisjZGVmaW5lIEZQX1RTRl9GT1JNQVRfSAorCisj
aW5jbHVkZSAidHNmX2NvbmZpZy5oIgorCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKworI2RlZmlu
ZSBmaTggIiUiIFBSSWQ4CisjZGVmaW5lIGZ1aTggIiUiIFBSSXU4CisjZGVmaW5lIGZpMTYgIiUi
IFBSSWQxNgorI2RlZmluZSBmdWkxNiAiJSIgUFJJdTE2CisjZGVmaW5lIGZpMzIgIiUiIFBSSWQz
MgorI2RlZmluZSBmdWkzMiAiJSIgUFJJdTMyCisjZGVmaW5lIGZpNjQgIiUiIFBSSWQ2NAorI2Rl
ZmluZSBmdWk2NCAiJSIgUFJJdTY0CisKKyNpZiBUU0ZfU0laRU9GX1NJWkVfVCA9PSAyCisjZGVm
aW5lIGZzeiBmdWkxNgorI2Vsc2UKKyNpZiBUU0ZfU0laRU9GX1NJWkVfVCA9PSA0CisjZGVmaW5l
IGZzeiBmdWkzMgorI2Vsc2UKKyNpZiBUU0ZfU0laRU9GX1NJWkVfVCA9PSA4CisjZGVmaW5lIGZz
eiBmdWk2NAorI2Vsc2UKKyNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gcHJpbnQgc2l6ZV90Igor
I2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisjaWYgVFNGX1NJWkVPRl9WT0lEX1AgPT0gMgorI2Rl
ZmluZSBmcHRyIGZpMTYKKyNkZWZpbmUgZnVwdHIgZnVpMTYKKyNlbHNlCisjaWYgVFNGX1NJWkVP
Rl9WT0lEX1AgPT0gNAorI2RlZmluZSBmcHRyIGZpMzIKKyNkZWZpbmUgZnVwdHIgZnVpMzIKKyNl
bHNlCisjaWYgVFNGX1NJWkVPRl9WT0lEX1AgPT0gOAorI2RlZmluZSBmcHRyIGZpNjQKKyNkZWZp
bmUgZnVwdHIgZnVpNjQKKyNlbHNlCisjZXJyb3IgIkRvbid0IGtub3cgaG93IHRvIHByaW50IHZv
aWQgKiIKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworI2VuZGlmCisKKwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiLmMJKG5vbmV4aXN0
ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDE0LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVy
bmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorI2luY2x1ZGUgInRzZl9mc2RiX3Byb3Rv
Y29sLmgiCisKKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o
PgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2lmZGVmIEhBVkVfQlNEU09DS1MKKyNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8
c3lzL3VuLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGRiLmg+Cisj
aW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxhcnBh
L2luZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZF
X0JTRFNPQ0tTCitzdGF0aWMgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqY29ubmVjdGlvbl9yZWFkKHRz
Zl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29uKTsKKworc3RhdGljIHRzZl9ib29sX3Qgb3Blbl9jb25u
ZWN0aW9uKGludCBkb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByb3RvY29sLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAq
YWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgYWRkcmxl
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZkKSB7CisgICAgaW50
IGZsYWc7CisgICAgCisgICAgKmZkPXNvY2tldChkb21haW4sdHlwZSxwcm90b2NvbCk7CisgICAg
aWYgKCpmZDwwKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBjcmVhdGUgc29j
a2V0IHdpdGggZG9tYWluICVkLCB0eXBlICVkLCBwcm90b2NvbCAlZCIsCisgICAgICAgICAgICAg
ICAgICAgICAgZG9tYWluLHR5cGUscHJvdG9jb2wpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgIH0KKyAgICAKKyAgICBpZiAoY29ubmVjdCgqZmQsYWRkcixhZGRybGVuKTwwKSB7Cisg
ICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBlc3RhYmxpc2ggY29ubmVjdGlvbiIpOwor
ICAgICAgICBjbG9zZSgqZmQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICBmbGFnPTE7CisgICAgaWYgKHNldHNvY2tvcHQoKmZkLCBJUFBST1RPX1RDUCwgVENQ
X05PREVMQVksIChjaGFyKikmZmxhZywgc2l6ZW9mKGZsYWcpKTwwKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBkaXNhYmxlIE5hZ2xlJ3MgYWxnb3JpdGhtIik7CisgICAgICAg
IGNsb3NlKCpmZCk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAg
IHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29u
bmVjdGlvbl9jcmVhdGUoaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX2ZzZGJfdCAqZnNkYikgeworICAgIHRzZl9mc2RiX2Nvbm5lY3Rp
b25fdCAqcmVzdWx0OworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX3QgKnJzcDsKKyAgICAKKyAgICB0
c2ZfYXNzZXJ0KGZkPj0wKTsKKyAgICAKKyAgICByZXN1bHQ9bWFsbG9jKHNpemVvZih0c2ZfZnNk
Yl9jb25uZWN0aW9uX3QpKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2ZzZGJfY29ubmVjdGlvbl90Iik7CisgICAg
ICAgIGdvdG8gZXJyb3IxOworICAgIH0KKyAgICAKKyAgICByZXN1bHQtPmJ1Zl9zaXplPTA7Cisg
ICAgcmVzdWx0LT5idWZfY3Vyc29yPTA7CisgICAgcmVzdWx0LT5idWY9TlVMTDsKKyAgICAKKyAg
ICByZXN1bHQtPmZkPWZkOworICAgIAorICAgIHJlc3VsdC0+aW49dHNmX3N0cmVhbV9maWxlX2lu
cHV0X2ZkX29wZW4oCisgICAgICAgIGZkLGZzZGItPmxpbWl0cywmZnNkYi0+cmRyX2F0dHIsdHNm
X2ZhbHNlLFRTRl9ERUZfTkVUX0JVRl9TSVpFKTsKKyAgICBpZiAocmVzdWx0LT5pbj09TlVMTCkg
eworICAgICAgICBnb3RvIGVycm9yMjsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5vdXQ9dHNm
X3N0cmVhbV9maWxlX291dHB1dF9mZF9vcGVuKAorICAgICAgICBmZCwmZnNkYi0+d3RyX2F0dHIs
dHNmX2ZhbHNlLFRTRl9ERUZfTkVUX0JVRl9TSVpFKTsKKyAgICBpZiAocmVzdWx0LT5vdXQ9PU5V
TEwpIHsKKyAgICAgICAgZ290byBlcnJvcjM7CisgICAgfQorICAgIAorICAgIHJzcD1jb25uZWN0
aW9uX3JlYWQocmVzdWx0KTsKKyAgICBpZiAocnNwPT1OVUxMKSB7CisgICAgICAgIGdvdG8gZXJy
b3I0OworICAgIH0KKyAgICAKKyAgICBpZiAocnNwLT5wYXlsb2FkLnZhbHVlIT10c2ZfZnNkYl9y
ZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9F
X1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJCYWQgcmVzcG9uc2UgZnJvbSBG
U0RCIHNlcnZlcjogcmVzcG9uc2UgJXMgd2l0aCBzdGF0ZSAlcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3RvX3N0cihyc3AtPnBheWxvYWQudmFs
dWUpLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl9mc2RiX3N0YXRlX190b19zdHIocnNwLT5z
dGF0ZS52YWx1ZSkpOworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAgZ290
byBlcnJvcjQ7CisgICAgfQorICAgIAorICAgIHRzZl9yZWdpb25fZnJlZShyc3ApOworICAgIAor
ICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yNDoKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0
X2Nsb3NlKHJlc3VsdC0+b3V0KTsKK2Vycm9yMzoKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
Y2xvc2UocmVzdWx0LT5pbik7CitlcnJvcjI6CisgICAgZnJlZShyZXN1bHQpOworZXJyb3IxOgor
ICAgIGNsb3NlKGZkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgY29ubmVj
dGlvbl9kZXN0cm95KHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29uKSB7CisgICAgaWYgKGNvbi0+
YnVmIT1OVUxMKSB7CisgICAgICAgIGZyZWUoY29uLT5idWYpOworICAgIH0KKyAgICB0c2Zfc3Ry
ZWFtX2ZpbGVfaW5wdXRfY2xvc2UoY29uLT5pbik7CisgICAgdHNmX3N0cmVhbV9maWxlX291dHB1
dF9jbG9zZShjb24tPm91dCk7CisgICAgY2xvc2UoY29uLT5mZCk7CisgICAgZnJlZShjb24pOwor
fQorCitzdGF0aWMgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqY29ubmVjdGlvbl9yZWFkKHRzZl9mc2Ri
X2Nvbm5lY3Rpb25fdCAqY29uKSB7CisgICAgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqcnNwPXRzZl9m
c2RiX3Jlc3BvbnNlX19yZWFkKGNvbi0+aW4pOworICAgIGlmIChyc3A9PU5VTEwpIHsKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGNvbi0+Y2xlYXI9KHJzcC0+c3RhdGUu
dmFsdWU9PXRzZl9mc2RiX3N0YXRlX19jbGVhcik7CisgICAgCisgICAgcmV0dXJuIHJzcDsKK30K
Kworc3RhdGljIHZvaWQgY29ubmVjdGlvbl9yZXR1cm4odHNmX2ZzZGJfdCAqZnNkYiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29uKSB7Cisg
ICAgaWYgKGNvbi0+Y2xlYXIpIHsKKyAgICAgICAgdHNmX211dGV4X2xvY2soJmZzZGItPmxvY2sp
OworICAgICAgICBpZiAoZnNkYi0+dS5yZW1vdGUuY29ubmVjdGlvbj09TlVMTCkgeworICAgICAg
ICAgICAgZnNkYi0+dS5yZW1vdGUuY29ubmVjdGlvbj1jb247CisgICAgICAgICAgICBjb249TlVM
TDsKKyAgICAgICAgfQorICAgICAgICB0c2ZfbXV0ZXhfdW5sb2NrKCZmc2RiLT5sb2NrKTsKKyAg
ICB9CisgICAgCisgICAgaWYgKGNvbiE9TlVMTCkgeworICAgICAgICBjb25uZWN0aW9uX2Rlc3Ry
b3koY29uKTsKKyAgICB9Cit9CisKK3N0YXRpYyB0c2ZfZnNkYl9jb25uZWN0aW9uX3QgKmNyZWF0
ZV9maXJzdF9jb25uZWN0aW9uKHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0bmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBwb3J0KSB7CisgICAgaW50IGZkPS0xOworICAgIHRzZl9ib29sX3QgY29ubmVjdGVkPXRzZl9m
YWxzZTsKKyAgICAKKyNpZmRlZiBIQVZFX0dFVEFERFJJTkZPCisgICAgc3RydWN0IGFkZHJpbmZv
IGhpbnRzOworICAgIHN0cnVjdCBhZGRyaW5mbyAqcmVzdWx0LCpjdXI7CisgICAgY2hhciBidWZb
MzJdOworICAgIAorICAgIGJ6ZXJvKCZoaW50cyxzaXplb2YoaGludHMpKTsKKyAgICBoaW50cy5h
aV9mYW1pbHk9QUZfSU5FVDsKKyAgICBoaW50cy5haV9zb2NrdHlwZT1TT0NLX1NUUkVBTTsKKyAg
ICAKKyAgICBzbnByaW50ZihidWYsc2l6ZW9mKGJ1ZiksIiVkIixwb3J0KTsKKyAgICAKKyAgICBp
ZiAoZ2V0YWRkcmluZm8oaG9zdG5hbWUsYnVmLCZoaW50cywmcmVzdWx0KSE9MCkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0hPU1ROQU1FLAorICAgICAgICAgICAgICAgICAgICAgICJD
b3VsZCBub3QgbG9va3VwIGhvc3RuYW1lICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICBob3N0
bmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBmb3IgKGN1cj1y
ZXN1bHQ7Y3VyIT1OVUxMO2N1cj1jdXItPmFpX25leHQpIHsKKyAgICAgICAgaWYgKG9wZW5fY29u
bmVjdGlvbihjdXItPmFpX2ZhbWlseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIt
PmFpX3NvY2t0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ci0+YWlfcHJvdG9j
b2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyLT5haV9hZGRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGN1ci0+YWlfYWRkcmxlbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmZmQpKSB7CisgICAgICAgICAgICBjb25uZWN0ZWQ9dHNmX3RydWU7CisgICAgICAg
ICAgICBmc2RiLT51LnJlbW90ZS5yZXN1bHQ9cmVzdWx0OworICAgICAgICAgICAgZnNkYi0+dS5y
ZW1vdGUuY3VyPWN1cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGlmICghY29ubmVjdGVkKSB7CisgICAgICAgIGZyZWVhZGRyaW5mbyhyZXN1bHQpOwor
ICAgIH0KKyNlbHNlCisgICAgc3RydWN0IGhvc3RlbnQgKmhwID0gZ2V0aG9zdGJ5bmFtZShob3N0
bmFtZSk7CisKKyAgICBpZiAoaHAgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRT
Rl9FX0hPU1ROQU1FLAorICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgbG9va3VwIGhv
c3RuYW1lICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICBob3N0bmFtZSk7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIGk7CisgICAgICAgIGZv
ciAoaT0wO2hwLT5oX2FkZHJfbGlzdFtpXSE9TlVMTDsrK2kpIHsKKyAgICAgICAgICAgIHN0cnVj
dCBzb2NrYWRkcl9pbiBhZGRyOworICAgICAgICAgICAgc29ja2xlbl90IHNsZW49c2l6ZW9mKGFk
ZHIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBiemVybygmYWRkcixzbGVuKTsKKyAgICAg
ICAgICAgIGFkZHIuc2luX2ZhbWlseT1BRl9JTkVUOworICAgICAgICAgICAgYWRkci5zaW5fcG9y
dD1odG9ucyhwb3J0KTsKKyAgICAgICAgICAgIGFkZHIuc2luX2FkZHIuc19hZGRyPSooc3RydWN0
IGluX2FkZHIqKShocC0+aF9hZGRyX2xpc3RbaV0pOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAob3Blbl9jb25uZWN0aW9uKEFGX0lORVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZk
KSkgeworICAgICAgICAgICAgICAgIGNvbm5lY3RlZD10c2ZfdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBmc2RiLT51LnJlbW90ZS5hZGRyPSoodWludDMyX3QqKShocC0+aF9hZGRyX2xpc3RbaV0pOwor
ICAgICAgICAgICAgICAgIGZzZGItPnUucmVtb3RlLnBvcnQ9cG9ydDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIAor
ICAgIGlmICghY29ubmVjdGVkKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gY29ubmVjdGlvbl9jcmVhdGUoZmQsZnNkYik7Cit9CisKK3N0YXRpYyB0c2Zf
ZnNkYl9jb25uZWN0aW9uX3QgKmNyZWF0ZV9jb25uZWN0aW9uKHRzZl9mc2RiX3QgKmZzZGIpIHsK
KyAgICBpbnQgZmQ7CisKKyNpZmRlZiBIQVZFX0dFVEFERFJJTkZPCisgICAgaWYgKCFvcGVuX2Nv
bm5lY3Rpb24oZnNkYi0+dS5yZW1vdGUuY3VyLT5haV9mYW1pbHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZnNkYi0+dS5yZW1vdGUuY3VyLT5haV9zb2NrdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBmc2RiLT51LnJlbW90ZS5jdXItPmFpX3Byb3RvY29sLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGZzZGItPnUucmVtb3RlLmN1ci0+YWlfYWRkciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBmc2RiLT51LnJlbW90ZS5jdXItPmFpX2FkZHJsZW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJmZkKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZWxzZQor
ICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworICAgIHNvY2tsZW5fdCBzbGVuPXNpemVvZihh
ZGRyKTsKKyAgICAKKyAgICBiemVybygmYWRkcixzbGVuKTsKKyAgICBhZGRyLnNpbl9mYW1pbHk9
QUZfSU5FVDsKKyAgICBhZGRyLnNpbl9wb3J0PWh0b25zKGZzZGItPnUucmVtb3RlLnBvcnQpOwor
ICAgIGFkZHIuc2luX2FkZHIuc19hZGRyPSooc3RydWN0IGluX2FkZHIqKSgmZnNkYi0+dS5yZW1v
dGUuYWRkcik7CisgICAgICAgICAgICAKKyAgICBpZiAoIW9wZW5fY29ubmVjdGlvbihBRl9JTkVU
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZmQpKSB7Cisg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIAorICAgIHJldHVybiBjb25u
ZWN0aW9uX2NyZWF0ZShmZCxmc2RiKTsKK30KKworc3RhdGljIHRzZl9mc2RiX3Jlc3BvbnNlX3Qg
KmZpcnN0X2FjdGlvbih0c2ZfZnNkYl90ICpmc2RiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfZnNkYl9jb25uZWN0aW9uX3QgKipjb25uZWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX3Qg
KmNtZCkgeworICAgIHVuc2lnbmVkIGk7CisgICAgdHNmX211dGV4X2xvY2soJmZzZGItPmxvY2sp
OworICAgICpjb25uZWN0aW9uPWZzZGItPnUucmVtb3RlLmNvbm5lY3Rpb247CisgICAgZnNkYi0+
dS5yZW1vdGUuY29ubmVjdGlvbj1OVUxMOworICAgIHRzZl9tdXRleF91bmxvY2soJmZzZGItPmxv
Y2spOworICAgIAorICAgIGZvciAoaT0wOzsrK2kpIHsKKyAgICAgICAgaWYgKCpjb25uZWN0aW9u
IT1OVUxMICYmCisgICAgICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX193cml0ZSgoKmNvbm5lY3Rp
b24pLT5vdXQsY21kKSAmJgorICAgICAgICAgICAgdHNmX3N0cmVhbV9maWxlX291dHB1dF9mbHVz
aCgoKmNvbm5lY3Rpb24pLT5vdXQpKSB7CisgICAgICAgICAgICB0c2ZfZnNkYl9yZXNwb25zZV90
ICpyZXNwb25zZT1jb25uZWN0aW9uX3JlYWQoKmNvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYg
KHJlc3BvbnNlIT1OVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaT09MCkgeworICAg
ICAgICAgICAgLyogcmV0cnkgLSB0aGUgY29ubmVjdGlvbiBtYXkgaGF2ZSBnb25lIHN0YWxlICov
CisgICAgICAgICAgICBpZiAoKmNvbm5lY3Rpb24hPU5VTEwpIHsKKyAgICAgICAgICAgICAgICBj
b25uZWN0aW9uX2Rlc3Ryb3koKmNvbm5lY3Rpb24pOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICAqY29ubmVjdGlvbj1jcmVhdGVfY29ubmVjdGlvbihmc2RiKTsKKyAg
ICAgICAgICAgIGlmICgqY29ubmVjdGlvbj09TlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyog
YWxyZWFkeSB0cmllZCBiZWZvcmUsIG5vdyBmYWlsIHBlcm1hbmVudGx5IGFuZCBkZXN0cm95IHRo
ZSBjb25uZWN0aW9uLiAqLworICAgICAgICAgICAgdHNmX2Fzc2VydCgqY29ubmVjdGlvbiE9TlVM
TCk7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koKmNvbm5lY3Rpb24pOworICAgICAg
ICAgICAgKmNvbm5lY3Rpb249TlVMTDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAg
ICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBzZXRfZXJyb3IodHNmX2ZzZGJfcmVzcG9uc2Vf
dCAqcnNwKSB7CisgICAgc3dpdGNoIChyc3AtPnBheWxvYWQudmFsdWUpIHsKKyAgICBjYXNlIHRz
Zl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3I6CisgICAgICAgIHRzZl9zZXRfZXJy
b3IoVFNGX0VfRVhURVJOQUwsCisgICAgICAgICAgICAgICAgICAgICAgIkZTREIgc2VydmVyIHJl
c3BvbmRlZCB3aXRoIHN5c3RlbSBlcnJvcjogJXMiLAorICAgICAgICAgICAgICAgICAgICAgIHJz
cC0+cGF5bG9hZC51LnN5c19lcnJvci5tc2cpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHRz
Zl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcjoKKyAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9FWFRFUk5BTCwKKyAgICAgICAgICAgICAgICAgICAgICAiRlNEQiBzZXJ2ZXIg
cmVzcG9uZGVkIHdpdGggcHJvdG9jb2wgZXJyb3I6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICByc3AtPnBheWxvYWQudS5wcm90b19lcnJvci5tc2cpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19ub3RfZm91bmQ6CisgICAgICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfRUxFX05PVF9GT1VORCwKKyAgICAgICAgICAgICAgICAgICAgICAiRlNE
QiBzZXJ2ZXIgY291bGQgbm90IGZpbmQgdGhlIHJlcXVlc3RlZCBlbGVtZW50Iik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2VvZjoKKyAg
ICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9FT0YsCisgICAgICAgICAgICAgICAgICAgICAgIkVu
ZCBvZiBmaWxlIGZyb20gRlNEQiBzZXJ2ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAiVW5leHBlY3RlZCBvciB1bnJlY29nbml6ZWQgcmVzcG9uc2UgZnJvbSBGU0RC
IHNlcnZlcjsgIgorICAgICAgICAgICAgICAgICAgICAgICJzdGF0ZSA9ICVzLCByZXNwb25zZSA9
ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICB0c2ZfZnNkYl9zdGF0ZV9fdG9fc3RyKHJzcC0+
c3RhdGUudmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX190b19zdHIocnNwLT5wYXlsb2FkLnZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworc3RhdGljIHRzZl9ib29sX3QgbmV0d29ya193cml0ZXJfZmx1c2godHNmX2ZzZGJf
b3V0X3QgKm91dCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfdCBjbWQ7CisgICAgdHNmX2ZzZGJf
cmVzcG9uc2VfdCAqcnNwOworICAgIAorICAgIGNtZC52YWx1ZT10c2ZfZnNkYl9jb21tYW5kX19v
dXRfd3JpdGU7CisgICAgY21kLnUub3V0X3dyaXRlLmRhdGEuZGF0YT1vdXQtPnUucmVtb3RlLmNv
bm5lY3Rpb24tPmJ1ZjsKKyAgICBjbWQudS5vdXRfd3JpdGUuZGF0YS5sZW49b3V0LT51LnJlbW90
ZS5jb25uZWN0aW9uLT5idWZfY3Vyc29yOworICAgIGlmICghdHNmX2ZzZGJfY29tbWFuZF9fd3Jp
dGUob3V0LT51LnJlbW90ZS5jb25uZWN0aW9uLT5vdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmY21kKSB8fAorICAgICAgICAhdHNmX3N0cmVhbV9maWxlX291dHB1dF9mbHVz
aChvdXQtPnUucmVtb3RlLmNvbm5lY3Rpb24tPm91dCkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgCisgICAgcnNwPWNvbm5lY3Rpb25fcmVhZChvdXQtPnUucmVtb3Rl
LmNvbm5lY3Rpb24pOworICAgIGlmIChyc3A9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHJzcC0+c3RhdGUudmFsdWUhPXRzZl9mc2RiX3N0
YXRlX19wdXQgfHwKKyAgICAgICAgcnNwLT5wYXlsb2FkLnZhbHVlIT10c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fb2spIHsKKyAgICAgICAgc2V0X2Vycm9yKHJzcCk7CisgICAgICAgIHRzZl9y
ZWdpb25fZnJlZShyc3ApOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAK
KyAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAKKyAgICBvdXQtPnUucmVtb3RlLmNvbm5l
Y3Rpb24tPmJ1Zl9jdXJzb3I9MDsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0
YXRpYyB0c2ZfYm9vbF90IG5ldHdvcmtfd3JpdGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1Zl8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB0c2ZfZnNkYl9vdXRfdCAqb3V0PSh0
c2ZfZnNkYl9vdXRfdCopYXJnOworICAgIHVpbnQ4X3QgKmJ1ZiA9ICh1aW50OF90KilidWZfOwor
ICAgIHVpbnQzMl90IHRvd3JpdGU7CisgICAgCisgICAgd2hpbGUgKGxlbj4wKSB7CisgICAgICAg
IHRvd3JpdGU9dHNmX21pbihsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQtPnUucmVt
b3RlLmNvbm5lY3Rpb24tPmJ1Zl9zaXplLQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LT51
LnJlbW90ZS5jb25uZWN0aW9uLT5idWZfY3Vyc29yKTsKKyAgICAgICAgbWVtY3B5KG91dC0+dS5y
ZW1vdGUuY29ubmVjdGlvbi0+YnVmKworICAgICAgICAgICAgICAgb3V0LT51LnJlbW90ZS5jb25u
ZWN0aW9uLT5idWZfY3Vyc29yLAorICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAg
dG93cml0ZSk7CisgICAgICAgIAorICAgICAgICBvdXQtPnUucmVtb3RlLmNvbm5lY3Rpb24tPmJ1
Zl9jdXJzb3IrPXRvd3JpdGU7CisgICAgICAgIGJ1Zis9dG93cml0ZTsKKyAgICAgICAgbGVuLT10
b3dyaXRlOworICAgICAgICAKKyAgICAgICAgaWYgKGxlbj09MCkgeworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghbmV0d29ya193cml0ZXJfZmx1
c2gob3V0KSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90IG5l
dHdvcmtfcmVhZGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmJ1Zl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBs
ZW4pIHsKKyAgICB0c2ZfZnNkYl9pbl90ICppbj0odHNmX2ZzZGJfaW5fdCopYXJnOworICAgIHVp
bnQ4X3QgKmJ1Zj0odWludDhfdCopYnVmXzsKKyAgICAKKyAgICB3aGlsZSAobGVuPjApIHsKKyAg
ICAgICAgaWYgKGluLT51LnJlbW90ZS5yc3AhPU5VTEwpIHsKKyAgICAgICAgICAgIHVpbnQzMl90
IHRvcmVhZD0KKyAgICAgICAgICAgICAgICB0c2ZfbWluKGxlbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluLT51LnJlbW90ZS5yc3AtPnBheWxvYWQudS5pbl9kYXRhLmRhdGEubGVuLQorICAg
ICAgICAgICAgICAgICAgICAgICAgaW4tPnUucmVtb3RlLnJzcF9jdXJzb3IpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtZW1jcHkoYnVmLAorICAgICAgICAgICAgICAgICAgIGluLT51LnJl
bW90ZS5yc3AtPnBheWxvYWQudS5pbl9kYXRhLmRhdGEuZGF0YStpbi0+dS5yZW1vdGUucnNwX2N1
cnNvciwKKyAgICAgICAgICAgICAgICAgICB0b3JlYWQpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpbi0+dS5yZW1vdGUucnNwX2N1cnNvcis9dG9yZWFkOworICAgICAgICAgICAgbGVuLT10
b3JlYWQ7CisgICAgICAgICAgICBidWYrPXRvcmVhZDsKKworICAgICAgICAgICAgaWYgKGxlbj09
MCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiAoaW4tPnUucmVtb3RlLnJzcCE9TlVMTCAmJgorICAgICAgICAg
ICAgaW4tPnUucmVtb3RlLnJzcF9jdXJzb3I9PWluLT51LnJlbW90ZS5yc3AtPnBheWxvYWQudS5p
bl9kYXRhLmRhdGEubGVuKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRzZl9yZWdpb25f
ZnJlZShpbi0+dS5yZW1vdGUucnNwKTsKKyAgICAgICAgICAgIGluLT51LnJlbW90ZS5yc3A9TlVM
TDsKKyAgICAgICAgICAgIGluLT51LnJlbW90ZS5yc3BfY3Vyc29yPTA7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoaW4tPnUucmVtb3RlLnJzcD09TlVMTCkgeworICAgICAgICAgICAgaW4tPnUu
cmVtb3RlLnJzcF9jdXJzb3I9MDsKKyAgICAgICAgICAgIGluLT51LnJlbW90ZS5yc3A9CisgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbl9yZWFkKGluLT51LnJlbW90ZS5jb25uZWN0aW9uKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChpbi0+dS5yZW1vdGUucnNwLT5wYXlsb2Fk
LnZhbHVlKSB7CisgICAgICAgICAgICBjYXNlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19p
bl9kYXRhOgorICAgICAgICAgICAgICAgIC8qIG9rISAqLworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZW9mOgor
ICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoKHZvaWQqKWJ1Zj09YnVmXz8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRTRl9FX1VORVhQRUNURURfRU9GOlRTRl9FX0VSUk9ORU9V
U19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRU9GIGluIHJlc3BvbnNlIGZy
b20gRlNEQiBzZXJ2ZXIiKTsKKyAgICAgICAgICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUoaW4tPnUu
cmVtb3RlLnJzcCk7CisgICAgICAgICAgICAgICAgaW4tPnUucmVtb3RlLnJzcD1OVUxMOworICAg
ICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHNldF9lcnJvcihpbi0+dS5yZW1vdGUucnNwKTsKKyAgICAgICAgICAgICAg
ICB0c2ZfcmVnaW9uX2ZyZWUoaW4tPnUucmVtb3RlLnJzcCk7CisgICAgICAgICAgICAgICAgaW4t
PnUucmVtb3RlLnJzcD1OVUxMOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVl
OworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIGNvcHlfcGFyYW1zKHRzZl9mc2RiX3QgKmZzZGIs
CisgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl96aXBfcmRyX2F0dHJfdCAqcmRyX2F0dHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnd0cl9hdHRyKSB7CisgICAgZnNkYi0+
bGltaXRzPWxpbWl0czsKKyAgICAKKyAgICBpZiAocmRyX2F0dHI9PU5VTEwpIHsKKyAgICAgICAg
dHNmX3ppcF9yZHJfYXR0cl9nZXRfZGVmYXVsdCgmZnNkYi0+cmRyX2F0dHIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGZzZGItPnJkcl9hdHRyPSpyZHJfYXR0cjsKKyAgICB9CisgICAgCisgICAg
aWYgKHd0cl9hdHRyPT1OVUxMKSB7CisgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1
bHQoJmZzZGItPnd0cl9hdHRyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmc2RiLT53dHJfYXR0
cj0qd3RyX2F0dHI7CisgICAgfQorfQorCit0c2ZfZnNkYl90ICp0c2ZfZnNkYl9vcGVuX2xvY2Fs
KGNvbnN0IGNoYXIgKmRpcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl9saW1pdHNfdCAqbGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
emlwX3Jkcl9hdHRyX3QgKnJkcl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfemlwX3d0cl9hdHRyX3QgKnd0cl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfYm9vbF90IHVwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHNmX2Jvb2xfdCB0cnVuY2F0ZSkgeworICAgIHRzZl9mc2RiX3QgKnJlc3VsdDsKKyAgICBj
aGFyICptYXJrZXJfZmxubTsKKyAgICBGSUxFICpmaW47CisgICAgY2hhciBidWZbOV07CisgICAg
CisgICAgaWYgKCF1cGRhdGUgJiYgdHJ1bmNhdGUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihU
U0ZfRV9JTlZBTElEX0FSRywKKyAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkg
dGhlIHRydW5jYXRlIHdpdGhvdXQgdGhlIHVwZGF0ZSAiCisgICAgICAgICAgICAgICAgICAgICAg
ImZsYWciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlc3VsdD1t
YWxsb2Moc2l6ZW9mKHRzZl9mc2RiX3QpKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7CisgICAg
ICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2ZzZGJfdCIpOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5raW5kPVRTRl9GU0RCX0xP
Q0FMOworICAgIAorICAgIHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lPXN0cmR1cChkaXJuYW1lKTsK
KyAgICBpZiAocmVzdWx0LT51LmxvY2FsLmRpcm5hbWU9PU5VTEwpIHsKKyAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IHN0cmR1cCBkaXJuYW1lIGluIHRzZl9mc2RiX29wZW5fbG9jYWwi
KTsKKyAgICAgICAgZ290byBlcnJvcjE7CisgICAgfQorICAgIAorICAgIGlmICh1cGRhdGUpIHsK
KyAgICAgICAgaWYgKG1rZGlyKHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lLDA3NzcpPDApIHsKKyAg
ICAgICAgICAgIGlmIChlcnJubz09RUVYSVNUKSB7CisgICAgICAgICAgICAgICAgLyogYWxsIGdv
b2QuICovCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCBjcmVhdGUgZnNkYiBkaXJlY3RvcnkgJXMiLHJlc3VsdC0+dS5sb2NhbC5k
aXJuYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGRpcmVjdG9yeSBjcmVhdGVkOyBub3cgY3Jl
YXRlIHRoZSBtYXJrZXIgZmlsZS4gKi8KKyAgICAgICAgICAgIEZJTEUgKmZvdXQ7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIG1hcmtlcl9mbG5tPXRzZl9hc3ByaW50ZigiJXMvVFNGX0ZTREIi
LHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICAgICAgICAgIGlmIChtYXJrZXJfZmxubT09
TlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0
ZSBzdHJpbmciKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZm91dD1mb3BlbihtYXJrZXJfZmxubSwidyIpOwor
ICAgICAgICAgICAgaWYgKGZvdXQ9PU5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vy
cm5vKCJDb3VsZCBub3Qgb3BlbiAlcyIsbWFya2VyX2Zsbm0pOworICAgICAgICAgICAgICAgIGZy
ZWUobWFya2VyX2Zsbm0pOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3IyOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmcmVlKG1hcmtlcl9mbG5tKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnB1dHMoIlRTRl9GU0RCIixmb3V0KTsgLyogRklYTUU6IGVy
cm9yIGNoZWNraW5nPyAqLworICAgICAgICAgICAgCisgICAgICAgICAgICBmY2xvc2UoZm91dCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgbWFya2VyX2Zsbm09dHNmX2FzcHJpbnRmKCIl
cy9UU0ZfRlNEQiIscmVzdWx0LT51LmxvY2FsLmRpcm5hbWUpOworICAgIGlmIChtYXJrZXJfZmxu
bT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgc3Ry
aW5nIik7CisgICAgICAgIGdvdG8gZXJyb3IyOworICAgIH0KKyAgICAKKyAgICBmaW49Zm9wZW4o
bWFya2VyX2Zsbm0sInIiKTsKKyAgICBpZiAoZmluPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCBvcGVuICVzIixtYXJrZXJfZmxubSk7CisgICAgICAgIGZyZWUobWFy
a2VyX2Zsbm0pOworICAgICAgICBnb3RvIGVycm9yMjsKKyAgICB9CisgICAgCisgICAgZnJlZSht
YXJrZXJfZmxubSk7CisgICAgCisgICAgYnplcm8oYnVmLHNpemVvZihidWYpKTsKKyAgICBmZ2V0
cyhidWYsc2l6ZW9mKGJ1ZiksZmluKTsKKyAgICAKKyAgICBmY2xvc2UoZmluKTsKKyAgICAKKyAg
ICBpZiAoc3RyY21wKGJ1ZiwiVFNGX0ZTREIiKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRT
Rl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJCYWQgRlNEQiBkYXRhYmFz
ZTogdGhlIG1hcmtlciBmaWxlIGNvbnRhaW5zICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAi
aW5zdGVhZCBvZiBUU0ZfRlNEQiIsCisgICAgICAgICAgICAgICAgICAgICAgYnVmKTsKKyAgICAg
ICAgZ290byBlcnJvcjI7CisgICAgfQorCisgICAgLyogbWFrZSBzdXJlIHRoYXQgaXQgZXhpc3Rz
IGFuZCBpcyBhIGRpcmVjdG9yeSwgYW5kIGtlZXAgYSBoYW5kbGUgdG8gaXQKKyAgICAgICBqdXN0
IGZvciBnb29kIG1lYXN1cmUuICovCisgICAgCisgICAgcmVzdWx0LT51LmxvY2FsLmRpcmhhbmRs
ZT1vcGVuZGlyKHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICBpZiAocmVzdWx0LT51Lmxv
Y2FsLmRpcmhhbmRsZT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
b3BlbiBmc2RiIGRpcmVjdG9yeSAlcyIscmVzdWx0LT51LmxvY2FsLmRpcm5hbWUpOworICAgICAg
ICBnb3RvIGVycm9yMjsKKyAgICB9CisgICAgCisgICAgLyogaWYgd2UncmUgdHJ1bmNhdGluZywg
dGhlbiBkZWxldGUgYWxsIG9mIHRoZSBmaWxlcy4gKi8KKyAgICBpZiAodHJ1bmNhdGUpIHsKKyAg
ICAgICAgc3RydWN0IGRpcmVudCAqZW50cnk7CisKKyNpZiBkZWZpbmVkKEhBVkVfUkVBRERJUl9S
KSAmJiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisgICAgICAgIHN0cnVjdCBkaXJlbnQgKmVudHJ5
YnVmOworICAgICAgICBsb25nIGxpbWl0OworICAgICAgICBzaXplX3QgbGVuOworICAgICAgICAK
KyAgICAgICAgbGltaXQ9cGF0aGNvbmYocmVzdWx0LT51LmxvY2FsLmRpcm5hbWUsX1BDX1BBVEhf
TUFYKTsKKyAgICAgICAgaWYgKGxpbWl0PDApIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8o
IkNvdWxkIG5vdCBnZXQgcGF0aGNvbmYgX1BDX1BBVEhfTUFYIGZvciAlcyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICAgICAgICAgIGdv
dG8gZXJyb3IzOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsZW49dHNmX29mZnNldG9m
KHN0cnVjdCBkaXJlbnQsZF9uYW1lKStsaW1pdCsxOworICAgICAgICAKKyAgICAgICAgZW50cnli
dWY9bWFsbG9jKGxlbik7CisgICAgICAgIGlmIChlbnRyeWJ1Zj09TlVMTCkgeworICAgICAgICAg
ICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBzdHJ1Y3QgZGlyZW50IHdpdGggc2l6
ZSAiIGZzeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKKyAgICAgICAgICAgIGdv
dG8gZXJyb3IzOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIGZvciAoOzsp
IHsKKyAgICAgICAgICAgIGNoYXIgKmZsbm07CisgICAgICAgICAgICAKKyNpZiBkZWZpbmVkKEhB
VkVfUkVBRERJUl9SKSAmJiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisgICAgICAgICAgICBlbnRy
eT1OVUxMOworICAgICAgICAgICAgaWYgKHJlYWRkaXJfcihyZXN1bHQtPnUubG9jYWwuZGlyaGFu
ZGxlLGVudHJ5YnVmLCZlbnRyeSkhPTApIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5v
KCJDb3VsZCBub3QgcmVhZGRpcl9yIGluICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICAgICAgICAgICAgICBmcmVlKGVudHJ5
YnVmKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgICAgICBlcnJubz0wOworICAgICAgICAgICAgZW50cnk9cmVhZGRpcihyZXN1bHQt
PnUubG9jYWwuZGlyaGFuZGxlKTsKKyAgICAgICAgICAgIGlmIChlbnRyeT09TlVMTCAmJiBlcnJu
byE9MCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCByZWFkZGly
IGluICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+dS5sb2NhbC5k
aXJuYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgICAgIH0KKyNl
bmRpZgorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZW50cnk9PU5VTEwpIHsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKHN0cmNtcChlbnRyeS0+ZF9uYW1lLCIuIikgJiYKKyAgICAgICAgICAgICAgICBzdHJj
bXAoZW50cnktPmRfbmFtZSwiLi4iKSAmJgorICAgICAgICAgICAgICAgIHN0cmNtcChlbnRyeS0+
ZF9uYW1lLCJUU0ZfRlNEQiIpKSB7CisKKyAgICAgICAgICAgICAgICBmbG5tPXRzZl9hc3ByaW50
ZigiJXMvJXMiLHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lLGVudHJ5LT5kX25hbWUpOworICAgICAg
ICAgICAgICAgIGlmIChmbG5tPT1OVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCB0c2ZfYXNwcmludGYiKTsKKyNpZiBkZWZpbmVkKEhBVkVfUkVBRERJ
Ul9SKSAmJiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisgICAgICAgICAgICAgICAgICAgIGZyZWUo
ZW50cnlidWYpOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3IzOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAodW5s
aW5rKGZsbm0pPDApIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IHVubGluayAlcyIsZmxubSk7CisjaWYgZGVmaW5lZChIQVZFX1JFQURESVJfUikgJiYgZGVm
aW5lZChIQVZFX1BBVEhDT05GKQorICAgICAgICAgICAgICAgICAgICBmcmVlKGVudHJ5YnVmKTsK
KyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBmcmVlKGZsbm0pOworICAgICAgICAgICAgICAg
ICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgZnJlZShmbG5tKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAKKyNpZiBkZWZpbmVkKEhBVkVfUkVBRERJUl9SKSAmJiBkZWZpbmVkKEhBVkVfUEFUSENP
TkYpCisgICAgICAgIGZyZWUoZW50cnlidWYpOworI2VuZGlmCisgICAgfQorCisgICAgY29weV9w
YXJhbXMocmVzdWx0LGxpbWl0cyxyZHJfYXR0cix3dHJfYXR0cik7CisgICAgCisgICAgcmVzdWx0
LT51LmxvY2FsLnVwZGF0ZT11cGRhdGU7CisgICAgcmVzdWx0LT51LmxvY2FsLnRydW5jYXRlPXRy
dW5jYXRlOworICAgIAorICAgIHJlc3VsdC0+dS5sb2NhbC5jcmVhdGVfY250PSgoKGludDY0X3Qp
dGltZShOVUxMKSk8PDMyKSsoKChpbnQ2NF90KWdldHBpZCgpKTw8NDgpOworICAgIAorICAgIHRz
Zl9tdXRleF9pbml0KCZyZXN1bHQtPmxvY2spOworICAgIAorICAgIHJldHVybiByZXN1bHQ7CisK
K2Vycm9yMzoKKyAgICBjbG9zZWRpcihyZXN1bHQtPnUubG9jYWwuZGlyaGFuZGxlKTsKK2Vycm9y
MjoKKyAgICBmcmVlKCh2b2lkKilyZXN1bHQtPnUubG9jYWwuZGlybmFtZSk7CitlcnJvcjE6Cisg
ICAgZnJlZShyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCit0c2ZfZnNkYl90ICp0c2Zf
ZnNkYl9vcGVuX3JlbW90ZShjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl96aXBfcmRyX2F0dHJfdCAqcmRyX2F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnd0cl9hdHRyKSB7CisjaWZkZWYgSEFWRV9CU0RTT0NL
UworICAgIHRzZl9mc2RiX3QgKnJlc3VsdDsKKyAgICAKKyAgICByZXN1bHQ9bWFsbG9jKHNpemVv
Zih0c2ZfZnNkYl90KSk7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9mc2RiX3QiKTsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+a2luZD1UU0ZfRlNEQl9SRU1PVEU7CisgICAg
CisgICAgY29weV9wYXJhbXMocmVzdWx0LGxpbWl0cyxyZHJfYXR0cix3dHJfYXR0cik7CisgICAg
CisgICAgcmVzdWx0LT51LnJlbW90ZS5jb25uZWN0aW9uPWNyZWF0ZV9maXJzdF9jb25uZWN0aW9u
KHJlc3VsdCxob3N0LHBvcnQpOworICAgIGlmIChyZXN1bHQtPnUucmVtb3RlLmNvbm5lY3Rpb249
PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgCisgICAgdHNmX211dGV4X2luaXQoJnJlc3VsdC0+bG9jayk7CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfU1VQUE9S
VEVELAorICAgICAgICAgICAgICAgICAgIkJTRCBzb2NrZXRzIHN1cHBvcnQgd2FzIG5vdCBmb3Vu
ZCBvbiB5b3VyIHN5c3RlbSIpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKK3ZvaWQg
dHNmX2ZzZGJfY2xvc2UodHNmX2ZzZGJfdCAqZnNkYikgeworICAgIHRzZl9tdXRleF9kZXN0cm95
KCZmc2RiLT5sb2NrKTsKKyAgICAKKyAgICBzd2l0Y2ggKGZzZGItPmtpbmQpIHsKKyAgICBjYXNl
IFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICBjbG9zZWRpcihmc2RiLT51LmxvY2FsLmRpcmhhbmRs
ZSk7CisgICAgICAgIGZyZWUoKHZvaWQqKWZzZGItPnUubG9jYWwuZGlybmFtZSk7CisgICAgICAg
IGJyZWFrOworI2lmZGVmIEhBVkVfQlNEU09DS1MKKyAgICBjYXNlIFRTRl9GU0RCX1JFTU9URToK
KyNpZmRlZiBIQVZFX0dFVEFERFJJTkZPCisgICAgICAgIGZyZWVhZGRyaW5mbyhmc2RiLT51LnJl
bW90ZS5yZXN1bHQpOworI2VuZGlmCisgICAgICAgIGlmIChmc2RiLT51LnJlbW90ZS5jb25uZWN0
aW9uIT1OVUxMKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koZnNkYi0+dS5yZW1v
dGUuY29ubmVjdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBk
ZWZhdWx0OgorICAgICAgICB0c2ZfYWJvcnQoImJhZCBGU0RCIGtpbmQiKTsKKyAgICB9CisgICAg
ZnJlZShmc2RiKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ndXRzX3B1dCh0c2ZfZnNkYl90
ICpmc2RiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtleSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKnBhcnRmbG5tKSB7CisgICAgdHNmX3N0cmVhbV9maWxlX291dHB1
dF90ICpvdXQ7CisgICAgCisgICAgaWYgKGZzZGI9PU5VTEwgfHwga2V5PT1OVUxMKSB7CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHRzZl9hc3NlcnQoZnNkYi0+
a2luZD09VFNGX0ZTREJfTE9DQUwpOworICAgIAorICAgIGlmICghZnNkYi0+dS5sb2NhbC51cGRh
dGUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfQUxMT1dFRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAiQ2Fubm90IHB1dCBpbnRvIEZTREIgYmVjYXVzZSB1cGRhdGUgZmxhZyB3
YXMgbm90IHNldC4iKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisg
ICAgZm9yICg7OykgeworICAgICAgICB1aW50NjRfdCBteV9pZDsKKyAgICAgICAgCisgICAgICAg
IHRzZl9tdXRleF9sb2NrKCZmc2RiLT5sb2NrKTsKKyAgICAgICAgbXlfaWQ9ZnNkYi0+dS5sb2Nh
bC5jcmVhdGVfY250OworICAgICAgICBmc2RiLT51LmxvY2FsLmNyZWF0ZV9jbnQrPSh1aW50NjRf
dCkodWludHB0cl90KWZkOworICAgICAgICB0c2ZfbXV0ZXhfdW5sb2NrKCZmc2RiLT5sb2NrKTsK
KyAgICAgICAgCisgICAgICAgICpwYXJ0ZmxubT10c2ZfYXNwcmludGYoIiVzL3BhcnQtIiBmdWk2
NCxmc2RiLT51LmxvY2FsLmRpcm5hbWUsbXlfaWQpOworICAgICAgICBpZiAoKnBhcnRmbG5tPT1O
VUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2FzcHJpbnRm
IGluIHRzZl9mc2RiX3B1dCIpOworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgKmZkPW9wZW4oKnBhcnRmbG5tLE9fQ1JFQVR8T19FWENM
fE9fV1JPTkxZfE9fVFJVTkMsMDY2Nik7CisgICAgICAgIGlmICgqZmQ8MCkgeworICAgICAgICAg
ICAgaWYgKGVycm5vPT1FRVhJU1QpIHsKKyAgICAgICAgICAgICAgICBmcmVlKCpwYXJ0ZmxubSk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0
c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qgb3BlbiAlcyIsKnBhcnRmbG5tKTsKKyAgICAgICAgICAg
IGZyZWUoKnBhcnRmbG5tKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICAvKiBvaywgbm93
IHdyaXRlIHRoZSBrZXkgYXMgdGhlIGZpcnN0IHJlY29yZCBvZiB0aGUgZmlsZS4gKi8KKyAgICBv
dXQ9dHNmX3N0cmVhbV9maWxlX291dHB1dF9mZF9vcGVuKCpmZCxOVUxMLHRzZl9mYWxzZSwwKTsK
KyAgICBpZiAob3V0PT1OVUxMKSB7CisgICAgICAgIGdvdG8gYWJvcnQ7CisgICAgfQorICAgIAor
ICAgIGlmICghdHNmX3N0cmVhbV9maWxlX291dHB1dF93cml0ZShvdXQsa2V5KSkgeworICAgICAg
ICB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2Nsb3NlKG91dCk7CisgICAgICAgIGdvdG8gYWJvcnQ7
CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3N0cmVhbV9maWxlX291dHB1dF9jbG9zZShvdXQp
KSB7CisgICAgICAgIGdvdG8gYWJvcnQ7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1
ZTsKK2Fib3J0OgorICAgIHRzZl9mc2RiX2d1dHNfYWJvcnQoZnNkYiwqcGFydGZsbm0pOworICAg
IGZyZWUoKnBhcnRmbG5tKTsKKyAgICBjbG9zZSgqZmQpOworICAgIHJldHVybiB0c2ZfZmFsc2U7
Cit9CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJfZ3V0c19jb21taXQodHNmX2ZzZGJfdCAqZnNkYiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcGFydGZsbm0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqa2V5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqZGF0YWZsbm0pIHsKKyAgICBjaGFyICpuYW1lOwor
ICAgIGNoYXIgKmZsbm07CisgICAgdWludDMyX3Qgc2hhMXN1bVs1XTsKKyAgICAKKyAgICBpZiAo
ZnNkYj09TlVMTCB8fCBwYXJ0ZmxubT09TlVMTCB8fCBrZXk9PU5VTEwpIHsKKyAgICAgICAgcmV0
dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgdHNmX2Fzc2VydChmc2RiLT5raW5kPT1U
U0ZfRlNEQl9MT0NBTCk7CisgICAgCisgICAgaWYgKCFmc2RiLT51LmxvY2FsLnVwZGF0ZSkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9BTExPV0VELAorICAgICAgICAgICAgICAg
ICAgICAgICJDYW5ub3QgY29tbWl0IGludG8gRlNEQiBiZWNhdXNlIHVwZGF0ZSBmbGFnIHdhcyBu
b3Qgc2V0LiIpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIXRzZl9idWZmZXJfY2FsY19zaGExKGtleSxzaGExc3VtKSkgeworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBuYW1lPXRzZl9zaGExX3N1bV90b19zdHIoc2hh
MXN1bSk7CisgICAgaWYgKG5hbWU9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgZmxubT10c2ZfYXNwcmludGYoIiVzL2RhdGEtJXMiLGZzZGItPnUu
bG9jYWwuZGlybmFtZSxuYW1lKTsKKyAgICBpZiAoZmxubT09TlVMTCkgeworICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgYXNwcmludGYgaW4gdHNmX2ZzZGJfZ3V0c19jb21taXQiKTsK
KyAgICAgICAgZnJlZShuYW1lKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgZnJlZShuYW1lKTsKKyAgICAKKyAgICBpZiAocmVuYW1lKHBhcnRmbG5tLGZsbm0p
PDApIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHJlbmFtZSAlcyB0byAlcyIs
CisgICAgICAgICAgICAgICAgICAgICAgcGFydGZsbm0sZmxubSk7CisgICAgICAgIGZyZWUoZmxu
bSk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChkYXRh
ZmxubSE9TlVMTCkgeworICAgICAgICAqZGF0YWZsbm09ZmxubTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBmcmVlKGZsbm0pOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisK
K3RzZl9ib29sX3QgdHNmX2ZzZGJfZ3V0c19hYm9ydCh0c2ZfZnNkYl90ICpmc2RiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcnRmbG5tKSB7CisgICAgaWYgKGZzZGI9
PU5VTEwgfHwgcGFydGZsbm09PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICB9CisgICAgCisgICAgdHNmX2Fzc2VydChmc2RiLT5raW5kPT1UU0ZfRlNEQl9MT0NBTCk7Cisg
ICAgCisgICAgaWYgKCFmc2RiLT51LmxvY2FsLnVwZGF0ZSkgeworICAgICAgICB0c2Zfc2V0X2Vy
cm9yKFRTRl9FX05PVF9BTExPV0VELAorICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgYWJv
cnQgRlNEQiBmaWxlIGJlY2F1c2UgdXBkYXRlIGZsYWcgd2FzIG5vdCBzZXQuIik7CisgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHVubGluayhwYXJ0ZmxubSk7Cisg
ICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9mc2RiX2d1dHNf
Z2V0KHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9i
dWZmZXJfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqZGF0YWZsbm0pIHsKKyAgICB1aW50MzJf
dCBzaGExc3VtWzVdOworICAgIGNoYXIgKm5hbWU7CisgICAgY2hhciAqZmxubTsKKyAgICB0c2Zf
c2VyaWFsX2luX21hbl90ICppbl9tYW47CisgICAgdHNmX2J1Zl9yZHJfdCAqcmVhZGVyOworICAg
IHRzZl9idWZmZXJfdCAqcmVhZF9rZXk7CisgICAgdWludDMyX3QgbnVtX3JlbWFpbmluZzsKKwor
ICAgIGlmIChmc2RiPT1OVUxMIHx8IGtleT09TlVMTCkgeworICAgICAgICAvKiBwcm9wYWdhdGUg
ZXJyb3IgKi8KKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgdHNm
X2Fzc2VydChmc2RiLT5raW5kPT1UU0ZfRlNEQl9MT0NBTCk7CisgICAgCisgICAgaWYgKCF0c2Zf
YnVmZmVyX2NhbGNfc2hhMShrZXksc2hhMXN1bSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgbmFtZT10c2Zfc2hhMV9zdW1fdG9fc3RyKHNoYTFzdW0pOwor
ICAgIGlmIChuYW1lPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGZsbm09dHNmX2FzcHJpbnRmKCIlcy9kYXRhLSVzIixmc2RiLT51LmxvY2FsLmRp
cm5hbWUsbmFtZSk7CisgICAgaWYgKGZsbm09PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJu
bygiQ291bGQgbm90IGFzcHJpbnRmIGluIHRzZl9mc2RiX2dldCIpOworICAgICAgICBmcmVlKG5h
bWUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBmcmVlKG5h
bWUpOworICAgIAorICAgICpmZD1vcGVuKGZsbm0sT19SRE9OTFkpOworICAgIGlmICgqZmQ8MCkg
eworICAgICAgICBpZiAoZXJybm89PUVOT0VOVCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9FTEVfTk9UX0ZPVU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHJl
cXVlc3RlZCBrZXkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgRlNEQiBkYXRhYmFzZSIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG9wZW4gJXMg
Zm9yIHJlYWRpbmciLGZsbm0pOworICAgICAgICB9CisgICAgICAgIGZyZWUoZmxubSk7CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChkYXRhZmxubSE9TlVM
TCkgeworICAgICAgICAqZGF0YWZsbm09ZmxubTsKKyAgICB9IGVsc2UgeworICAgICAgICBmcmVl
KGZsbm0pOworICAgIH0KKyAgICAKKyAgICAvKiBub3cgdmVyaWZ5IHRoYXQgdGhlIGtleSBpcyB3
aGF0IGl0IGlzIHN1cHBvc2VkIHRvIGJlLiAgdXNlIGEgbG93ZXItbGV2ZWwKKyAgICAgICBhcHBy
b2FjaCB0byByZWFkaW5nIHNvIHdlIGNhbiBjb250cm9sIGhvdyBtdWNoIGJ1ZmZlcmluZyBpcyBk
b25lLiAqLworICAgIHJlYWRlcj10c2ZfYnVmX3JlYWRlcl9jcmVhdGUoKmZkLDEyOCx0c2ZfZmFs
c2UpOworICAgIGlmIChyZWFkZXI9PU5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0K
KyAgICAKKyAgICBpbl9tYW49dHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKHRzZl9idWZfcmVhZGVy
X3JlYWQscmVhZGVyLGZzZGItPmxpbWl0cyk7CisgICAgaWYgKGluX21hbj09TlVMTCkgeworICAg
ICAgICB0c2ZfYnVmX3JlYWRlcl9kZXN0cm95KHJlYWRlcik7CisgICAgICAgIGdvdG8gZmFpbDsK
KyAgICB9CisgICAgCisgICAgcmVhZF9rZXk9dHNmX3NlcmlhbF9pbl9tYW5fcmVhZChpbl9tYW4p
OworICAgIGlmIChyZWFkX2tleT09TlVMTCkgeworICAgICAgICB0c2Zfc2VyaWFsX2luX21hbl9k
ZXN0cm95KGluX21hbik7CisgICAgICAgIHRzZl9idWZfcmVhZGVyX2Rlc3Ryb3kocmVhZGVyKTsK
KyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICAKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9k
ZXN0cm95KGluX21hbik7CisgICAgCisgICAgbnVtX3JlbWFpbmluZz10c2ZfYnVmX3JlYWRlcl9n
ZXRfcmVtYWluaW5nKHJlYWRlcik7CisgICAgdHNmX2J1Zl9yZWFkZXJfZGVzdHJveShyZWFkZXIp
OworICAgIAorICAgIGlmIChsc2VlaygqZmQsLSgob2ZmX3QpbnVtX3JlbWFpbmluZyksU0VFS19D
VVIpPDApIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHVuc2VlayBidWZmZXJl
ZCBkYXRhIik7CisgICAgICAgIHRzZl9idWZmZXJfZGVzdHJveShyZWFkX2tleSk7CisgICAgICAg
IGdvdG8gZmFpbDsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2ZfYnVmZmVyX2NvbXBhcmUoa2V5
LHJlYWRfa2V5KSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAor
ICAgICAgICAgICAgICAgICAgICAgICJLZXkgbWlzbWF0Y2ggb24gZW50cnkgaW4gRlNEQiBkYXRh
YmFzZSIpOworICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3kocmVhZF9rZXkpOworICAgICAgICBn
b3RvIGZhaWw7CisgICAgfQorICAgIAorICAgIHRzZl9idWZmZXJfZGVzdHJveShyZWFkX2tleSk7
CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworCitmYWlsOgorICAgIGlmIChkYXRhZmxubSE9
TlVMTCkgeworICAgICAgICBmcmVlKCpkYXRhZmxubSk7CisgICAgfQorICAgIGNsb3NlKCpmZCk7
CisgICAgcmV0dXJuIHRzZl9mYWxzZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ndXRzX3Jt
KHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZl
cl90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmRhdGFmbG5tKSB7
CisgICAgdWludDMyX3Qgc2hhMXN1bVs1XTsKKyAgICBjaGFyICpuYW1lOworICAgIGNoYXIgKmZs
bm07CisKKyAgICBpZiAoZnNkYj09TlVMTCB8fCBrZXk9PU5VTEwpIHsKKyAgICAgICAgLyogcHJv
cGFnYXRlIGVycm9yICovCisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIHRzZl9hc3NlcnQoZnNkYi0+a2luZD09VFNGX0ZTREJfTE9DQUwpOworICAgIAorICAgIGlm
ICghZnNkYi0+dS5sb2NhbC51cGRhdGUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9O
T1RfQUxMT1dFRCwKKyAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHJtIGZyb20gRlNEQiBi
ZWNhdXNlIHVwZGF0ZSBmbGFnIHdhcyBub3Qgc2V0LiIpOworICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoIXRzZl9idWZmZXJfY2FsY19zaGExKGtleSxzaGEx
c3VtKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBuYW1l
PXRzZl9zaGExX3N1bV90b19zdHIoc2hhMXN1bSk7CisgICAgaWYgKG5hbWU9PU5VTEwpIHsKKyAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgZmxubT10c2ZfYXNwcmlu
dGYoIiVzL2RhdGEtJXMiLGZzZGItPnUubG9jYWwuZGlybmFtZSxuYW1lKTsKKyAgICBpZiAoZmxu
bT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYXNwcmludGYgaW4g
dHNmX2ZzZGJfZ2V0Iik7CisgICAgICAgIGZyZWUobmFtZSk7CisgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorICAgIAorICAgIGZyZWUobmFtZSk7CisgICAgCisgICAgaWYgKHVubGlu
ayhmbG5tKTwwKSB7CisgICAgICAgIGlmIChlcnJubz09RU5PRU5UKSB7CisgICAgICAgICAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX0VMRV9OT1RfRk9VTkQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJUaGUgcmVxdWVzdGVkIGtleSB3YXMgbm90IGZvdW5kIGluIHRoZSBGU0RCIGRhdGFiYXNl
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgdW5saW5rICVzIixmbG5tKTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKGZsbm0pOworICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKworICAgIGlmIChkYXRhZmxubSE9TlVMTCkg
eworICAgICAgICAqZGF0YWZsbm09ZmxubTsKKyAgICB9IGVsc2UgeworICAgICAgICBmcmVlKGZs
bm0pOworICAgIH0KKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9mc2RiX291dF90ICp0
c2ZfZnNkYl9wdXQodHNmX2ZzZGJfdCAqZnNkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHNmX2J1ZmZlcl90ICprZXkpIHsKKyAgICBpZiAoZnNkYj09TlVMTCB8fCBrZXk9PU5VTEwp
IHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoZnNkYi0+
a2luZCkgeworICAgIGNhc2UgVFNGX0ZTREJfTE9DQUw6IHsKKyAgICAgICAgaW50IGZkOworICAg
ICAgICBjaGFyICpmbG5tOworICAgICAgICB0c2ZfZnNkYl9vdXRfdCAqcmVzdWx0OworICAgIAor
ICAgICAgICBpZiAoIXRzZl9mc2RiX2d1dHNfcHV0KGZzZGIsa2V5LCZmZCwmZmxubSkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgCisgICAgICAgIHJlc3VsdD1t
YWxsb2Moc2l6ZW9mKHRzZl9mc2RiX291dF90KSk7CisgICAgICAgIGlmIChyZXN1bHQ9PU5VTEwp
IHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgaW4gdHNmX2Zz
ZGJfcHV0Iik7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICB0c2ZfZnNkYl9n
dXRzX2Fib3J0KGZzZGIsZmxubSk7CisgICAgICAgICAgICBmcmVlKGZsbm0pOworICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmVzdWx0LT5kYj1mc2Ri
OworICAgICAgICByZXN1bHQtPnUubG9jYWwucGFydG5hbWU9ZmxubTsKKyAgICAKKyAgICAgICAg
cmVzdWx0LT51LmxvY2FsLm91dD10c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2ZkX29wZW4oZmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZmc2RiLT53dHJfYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3RydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAocmVzdWx0
LT51LmxvY2FsLm91dD09TlVMTCkgeworICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAg
ICAgdHNmX2ZzZGJfZ3V0c19hYm9ydChmc2RiLGZsbm0pOworICAgICAgICAgICAgZnJlZShmbG5t
KTsKKyAgICAgICAgICAgIGZyZWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwor
ICAgICAgICB9CisgICAgCisgICAgICAgIHJlc3VsdC0+dS5sb2NhbC5rZXk9dHNmX2J1ZmZlcl9k
dXAoa2V5KTsKKyAgICAgICAgaWYgKHJlc3VsdC0+dS5sb2NhbC5rZXk9PU5VTEwpIHsKKyAgICAg
ICAgICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfY2xvc2UocmVzdWx0LT51LmxvY2FsLm91dCk7
CisgICAgICAgICAgICB0c2ZfZnNkYl9ndXRzX2Fib3J0KGZzZGIsZmxubSk7CisgICAgICAgICAg
ICBmcmVlKGZsbm0pOworICAgICAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisjaWZkZWYgSEFWRV9CU0RTT0NLUworICAgIGNhc2UgVFNGX0ZTREJfUkVNT1RFOiB7CisgICAg
ICAgIHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbjsKKyAgICAgICAgdHNmX2ZzZGJf
Y29tbWFuZF90IGNtZDsKKyAgICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqcnNwOworICAgICAg
ICB0c2ZfZnNkYl9vdXRfdCAqcmVzdWx0OworICAgICAgICAKKyAgICAgICAgY21kLnZhbHVlPXRz
Zl9mc2RiX2NvbW1hbmRfX3B1dDsKKyAgICAgICAgdHNmX2Fzc2VydChrZXkhPU5VTEwpOworICAg
ICAgICBjbWQudS5wdXQua2V5PWtleTsKKyAgICAgICAgCisgICAgICAgIHJzcD1maXJzdF9hY3Rp
b24oZnNkYiwmY29ubmVjdGlvbiwmY21kKTsKKyAgICAgICAgaWYgKHJzcD09TlVMTCkgeworICAg
ICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChy
c3AtPnN0YXRlLnZhbHVlIT10c2ZfZnNkYl9zdGF0ZV9fcHV0IHx8CisgICAgICAgICAgICByc3At
PnBheWxvYWQudmFsdWUhPXRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19vaykgeworICAgICAg
ICAgICAgc2V0X2Vycm9yKHJzcCk7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29u
bmVjdGlvbik7CisgICAgICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAgICAg
IHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0c2ZfcmVnaW9uX2Zy
ZWUocnNwKTsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9mc2Ri
X291dF90KSk7CisgICAgICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgaW4gdHNmX2ZzZGJfcHV0Iik7CisgICAgICAgICAg
ICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICAgICAgfQorICAgIAorICAgICAgICByZXN1bHQtPmRiPWZzZGI7CisgICAgICAgIHJl
c3VsdC0+dS5yZW1vdGUuY29ubmVjdGlvbj1jb25uZWN0aW9uOworICAgICAgICAKKyAgICAgICAg
aWYgKGNvbm5lY3Rpb24tPmJ1Zj09TlVMTCkgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+YnVm
X3NpemU9VFNGX0RFRl9ORVRfQlVGX1NJWkU7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5idWZf
Y3Vyc29yPTA7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5idWY9bWFsbG9jKGNvbm5lY3Rpb24t
PmJ1Zl9zaXplKTsKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uLT5idWY9PU5VTEwpIHsKKyAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAgICAg
ICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXN1bHQtPnUucmVtb3RlLm91
dF9tYW49CisgICAgICAgICAgICB0c2Zfc2VyaWFsX291dF9tYW5fY3JlYXRlKG5ldHdvcmtfd3Jp
dGVyLCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0LT51LnJlbW90ZS5vdXRfbWFuPT1OVUxM
KSB7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAg
ICAgICBmcmVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisjZW5kaWYKKyAgICBkZWZh
dWx0OiB0c2ZfYWJvcnQoImJhZCBGU0RCIGtpbmQiKTsKKyAgICB9Cit9CisKK3RzZl9mc2RiX2lu
X3QgKnRzZl9mc2RiX2dldCh0c2ZfZnNkYl90ICpmc2RiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRzZl9idWZmZXJfdCAqa2V5KSB7CisgICAgaWYgKGZzZGI9PU5VTEwgfHwga2V5PT1O
VUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKGZz
ZGItPmtpbmQpIHsKKyAgICBjYXNlIFRTRl9GU0RCX0xPQ0FMOiB7CisgICAgICAgIGludCBmZDsK
KyAgICAgICAgdHNmX2ZzZGJfaW5fdCAqcmVzdWx0OworICAgICAgICAKKyAgICAgICAgaWYgKCF0
c2ZfZnNkYl9ndXRzX2dldChmc2RiLGtleSwmZmQsTlVMTCkpIHsKKyAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICB9CisgICAgCisgICAgICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRz
Zl9mc2RiX2luX3QpKTsKKyAgICAgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICAgICAg
dHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBpbiB0c2ZfZnNkYl9nZXQiKTsKKyAgICAg
ICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9Cisg
ICAgCisgICAgICAgIHJlc3VsdC0+ZGI9ZnNkYjsKKyAgICAKKyAgICAgICAgcmVzdWx0LT51Lmxv
Y2FsLmluPXRzZl9zdHJlYW1fZmlsZV9pbnB1dF9mZF9vcGVuKGZkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnNkYi0+bGltaXRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmZzZGItPnJkcl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX3RydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKHJlc3VsdC0+dS5s
b2NhbC5pbj09TlVMTCkgeworICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgZnJl
ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAKKyAg
ICAgICAgcmVzdWx0LT51LmxvY2FsLmtleT10c2ZfYnVmZmVyX2R1cChrZXkpOworICAgICAgICBp
ZiAocmVzdWx0LT51LmxvY2FsLmtleT09TlVMTCkgeworICAgICAgICAgICAgdHNmX3N0cmVhbV9m
aWxlX2lucHV0X2Nsb3NlKHJlc3VsdC0+dS5sb2NhbC5pbik7CisgICAgICAgICAgICBmcmVlKHJl
c3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIAorICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAgY2FzZSBU
U0ZfRlNEQl9SRU1PVEU6IHsKKyAgICAgICAgdHNmX2ZzZGJfY29ubmVjdGlvbl90ICpjb25uZWN0
aW9uOworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX3QgY21kOworICAgICAgICB0c2ZfZnNkYl9y
ZXNwb25zZV90ICpyc3A7CisgICAgICAgIHRzZl9mc2RiX2luX3QgKnJlc3VsdDsKKyAgICAgICAg
CisgICAgICAgIGNtZC52YWx1ZT10c2ZfZnNkYl9jb21tYW5kX19nZXQ7CisgICAgICAgIGNtZC51
LmdldC5rZXk9a2V5OworICAgICAgICAKKyAgICAgICAgcnNwPWZpcnN0X2FjdGlvbihmc2RiLCZj
b25uZWN0aW9uLCZjbWQpOworICAgICAgICBpZiAocnNwPT1OVUxMKSB7CisgICAgICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHJzcC0+c3RhdGUu
dmFsdWUhPXRzZl9mc2RiX3N0YXRlX19nZXQgfHwKKyAgICAgICAgICAgIHJzcC0+cGF5bG9hZC52
YWx1ZSE9dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX29rKSB7CisgICAgICAgICAgICBzZXRf
ZXJyb3IocnNwKTsKKyAgICAgICAgICAgIGlmIChyc3AtPnBheWxvYWQudmFsdWU9PXRzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX19ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0
aW9uX3JldHVybihmc2RiLGNvbm5lY3Rpb24pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsK
KyAgICAgICAgCisgICAgICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9mc2RiX2luX3QpKTsK
KyAgICAgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygi
Q291bGQgbm90IG1hbGxvYyBpbiB0c2ZfZnNkYl9nZXQiKTsKKyAgICAgICAgICAgIGNvbm5lY3Rp
b25fZGVzdHJveShjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAg
ICB9CisgICAgCisgICAgICAgIHJlc3VsdC0+ZGI9ZnNkYjsKKyAgICAgICAgcmVzdWx0LT51LnJl
bW90ZS5jb25uZWN0aW9uPWNvbm5lY3Rpb247CisgICAgICAgIAorICAgICAgICByZXN1bHQtPnUu
cmVtb3RlLnJzcD1OVUxMOworICAgICAgICByZXN1bHQtPnUucmVtb3RlLnJzcF9jdXJzb3I9MDsK
KyAgICAgICAgCisgICAgICAgIHJlc3VsdC0+dS5yZW1vdGUuaW5fbWFuPQorICAgICAgICAgICAg
dHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKG5ldHdvcmtfcmVhZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmc2RiLT5saW1pdHMpOworICAgICAgICBpZiAocmVzdWx0LT51LnJlbW90ZS5p
bl9tYW49PU5VTEwpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb25fZGVzdHJveShjb25uZWN0aW9u
KTsKKyAgICAgICAgICAgIGZyZWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyNlbmRp
ZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgiYmFkIEZTREIga2luZCIpOworICAgIH0KK30KKwor
dHNmX2Jvb2xfdCB0c2ZfZnNkYl9ybSh0c2ZfZnNkYl90ICpmc2RiLAorICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfYnVmZmVyX3QgKmtleSkgeworICAgIGlmIChmc2RiPT1OVUxMIHx8IGtleT09
TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBzd2l0
Y2ggKGZzZGItPmtpbmQpIHsKKyAgICBjYXNlIFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICByZXR1
cm4gdHNmX2ZzZGJfZ3V0c19ybShmc2RiLGtleSxOVUxMKTsKKyNpZmRlZiBIQVZFX0JTRFNPQ0tT
CisgICAgY2FzZSBUU0ZfRlNEQl9SRU1PVEU6IHsKKyAgICAgICAgdHNmX2ZzZGJfY29ubmVjdGlv
bl90ICpjb25uZWN0aW9uOworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX3QgY21kOworICAgICAg
ICB0c2ZfZnNkYl9yZXNwb25zZV90ICpyc3A7CisgICAgICAgIAorICAgICAgICBjbWQudmFsdWU9
dHNmX2ZzZGJfY29tbWFuZF9fcm07CisgICAgICAgIGNtZC51LnJtLmtleT1rZXk7CisgICAgICAg
IAorICAgICAgICByc3A9Zmlyc3RfYWN0aW9uKGZzZGIsJmNvbm5lY3Rpb24sJmNtZCk7CisgICAg
ICAgIGlmIChyc3A9PU5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChyc3AtPnN0YXRlLnZhbHVlIT10c2ZfZnNkYl9z
dGF0ZV9fY2xlYXIgfHwKKyAgICAgICAgICAgIHJzcC0+cGF5bG9hZC52YWx1ZSE9dHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX29rKSB7CisgICAgICAgICAgICBzZXRfZXJyb3IocnNwKTsKKyAg
ICAgICAgICAgIGlmIChyc3AtPnBheWxvYWQudmFsdWU9PXRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uX3JldHVybihmc2Ri
LGNvbm5lY3Rpb24pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0
c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHRzZl9yZWdpb25fZnJlZShyc3ApOworICAgICAgICBj
b25uZWN0aW9uX3JldHVybihmc2RiLGNvbm5lY3Rpb24pOworICAgICAgICAKKyAgICAgICAgcmV0
dXJuIHRzZl90cnVlOworICAgIH0KKyNlbmRpZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgiYmFk
IEZTREIga2luZCIpOworICAgIH0KK30KKwordm9pZCB0c2ZfZnNkYl9pbl9jbG9zZSh0c2ZfZnNk
Yl9pbl90ICppbikgeworICAgIHN3aXRjaCAoaW4tPmRiLT5raW5kKSB7CisgICAgY2FzZSBUU0Zf
RlNEQl9MT0NBTDoKKyAgICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X2Nsb3NlKGluLT51Lmxv
Y2FsLmluKTsKKyAgICAgICAgdHNmX2J1ZmZlcl9kZXN0cm95KGluLT51LmxvY2FsLmtleSk7Cisg
ICAgICAgIGJyZWFrOworI2lmZGVmIEhBVkVfQlNEU09DS1MKKyAgICBjYXNlIFRTRl9GU0RCX1JF
TU9URToKKyAgICAgICAgY29ubmVjdGlvbl9yZXR1cm4oaW4tPmRiLGluLT51LnJlbW90ZS5jb25u
ZWN0aW9uKTsKKyAgICAgICAgaWYgKGluLT51LnJlbW90ZS5yc3AhPU5VTEwpIHsKKyAgICAgICAg
ICAgIHRzZl9yZWdpb25fZnJlZShpbi0+dS5yZW1vdGUucnNwKTsKKyAgICAgICAgfQorICAgICAg
ICB0c2Zfc2VyaWFsX2luX21hbl9kZXN0cm95KGluLT51LnJlbW90ZS5pbl9tYW4pOworICAgICAg
ICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgiYmFkIEZTREIga2luZCIp
OworICAgIH0KKyAgICBmcmVlKGluKTsKK30KKwordHNmX2J1ZmZlcl90ICp0c2ZfZnNkYl9pbl9y
ZWFkKHRzZl9mc2RiX2luX3QgKmluKSB7CisgICAgc3dpdGNoIChpbi0+ZGItPmtpbmQpIHsKKyAg
ICBjYXNlIFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICByZXR1cm4gdHNmX3N0cmVhbV9maWxlX2lu
cHV0X3JlYWQoaW4tPnUubG9jYWwuaW4pOworI2lmZGVmIEhBVkVfQlNEU09DS1MKKyAgICBjYXNl
IFRTRl9GU0RCX1JFTU9URToKKyAgICAgICAgcmV0dXJuIHRzZl9zZXJpYWxfaW5fbWFuX3JlYWQo
aW4tPnUucmVtb3RlLmluX21hbik7CisjZW5kaWYKKyAgICBkZWZhdWx0OiB0c2ZfYWJvcnQoImJh
ZCBGU0RCIGtpbmQiKTsKKyAgICB9Cit9CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJfb3V0X2NvbW1p
dCh0c2ZfZnNkYl9vdXRfdCAqb3V0KSB7CisgICAgaWYgKG91dD09TlVMTCkgeworICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKG91dC0+ZGItPmtpbmQp
IHsKKyAgICBjYXNlIFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICBpZiAoIXRzZl9zdHJlYW1fZmls
ZV9vdXRwdXRfY2xvc2Uob3V0LT51LmxvY2FsLm91dCkpIHsKKyAgICAgICAgICAgIGdvdG8gYWJv
cnRfbG9jYWw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghdHNmX2ZzZGJfZ3V0
c19jb21taXQob3V0LT5kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQt
PnUubG9jYWwucGFydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LT51LmxvY2FsLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkg
eworICAgICAgICAgICAgZ290byBhYm9ydF9sb2NhbDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgZnJlZShvdXQtPnUubG9jYWwucGFydG5hbWUpOworICAgICAgICB0c2ZfYnVmZmVyX2Rl
c3Ryb3kob3V0LT51LmxvY2FsLmtleSk7CisgICAgICAgIGZyZWUob3V0KTsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgCisgICAgYWJvcnRfbG9jYWw6CisgICAg
ICAgIHRzZl9mc2RiX2d1dHNfYWJvcnQob3V0LT5kYixvdXQtPnUubG9jYWwucGFydG5hbWUpOwor
ICAgICAgICBmcmVlKG91dC0+dS5sb2NhbC5wYXJ0bmFtZSk7CisgICAgICAgIHRzZl9idWZmZXJf
ZGVzdHJveShvdXQtPnUubG9jYWwua2V5KTsKKyAgICAgICAgZnJlZShvdXQpOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAgY2Fz
ZSBUU0ZfRlNEQl9SRU1PVEU6IHsKKyAgICAgICAgdHNmX2ZzZGJfY29tbWFuZF90IGNtZDsKKyAg
ICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqcnNwOworICAgICAgICAKKyAgICAgICAgLyogdGhp
cyBwYXJ0IGNvdWxkIGJlIG9wdGltaXplZCAtIHdlJ3JlIGN1cnJlbnRseSBzZW5kaW5nIHRoZSBj
b21taXQgY29tbWFuZAorICAgICAgICAgKiBhcyBhIHNlcGFyYXRlIHBhY2tldC4gIGl0IHdvdWxk
IGJlIGJlc3QgdG8gdHJ5IHRvIHNlbmQgaXQgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICogbGFz
dCBwYWNrZXQgb2YgdGhlIGZsdXNoLiAqLworICAgICAgICAKKyAgICAgICAgaWYgKCFuZXR3b3Jr
X3dyaXRlcl9mbHVzaChvdXQpKSB7CisgICAgICAgICAgICB0c2ZfZnNkYl9vdXRfYWJvcnQob3V0
KTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGNtZC52YWx1ZT10c2ZfZnNkYl9jb21tYW5kX19vdXRfY29tbWl0OworICAgICAgICBp
ZiAoIXRzZl9mc2RiX2NvbW1hbmRfX3dyaXRlKG91dC0+dS5yZW1vdGUuY29ubmVjdGlvbi0+b3V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbWQpIHx8CisgICAgICAg
ICAgICAhdHNmX3N0cmVhbV9maWxlX291dHB1dF9mbHVzaChvdXQtPnUucmVtb3RlLmNvbm5lY3Rp
b24tPm91dCkpIHsKKyAgICAgICAgICAgIHRzZl9mc2RiX291dF9hYm9ydChvdXQpOworICAgICAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcnNw
PWNvbm5lY3Rpb25fcmVhZChvdXQtPnUucmVtb3RlLmNvbm5lY3Rpb24pOworICAgICAgICBpZiAo
cnNwPT1OVUxMKSB7CisgICAgICAgICAgICB0c2ZfZnNkYl9vdXRfYWJvcnQob3V0KTsKKyAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlm
IChyc3AtPnN0YXRlLnZhbHVlIT10c2ZfZnNkYl9zdGF0ZV9fY2xlYXIgfHwKKyAgICAgICAgICAg
IHJzcC0+cGF5bG9hZC52YWx1ZSE9dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX29rKSB7Cisg
ICAgICAgICAgICBzZXRfZXJyb3IocnNwKTsKKyAgICAgICAgICAgIHRzZl9yZWdpb25fZnJlZShy
c3ApOworICAgICAgICAgICAgdHNmX2ZzZGJfb3V0X2Fib3J0KG91dCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0c2ZfcmVnaW9u
X2ZyZWUocnNwKTsKKyAgICAgICAgCisgICAgICAgIGNvbm5lY3Rpb25fcmV0dXJuKG91dC0+ZGIs
b3V0LT51LnJlbW90ZS5jb25uZWN0aW9uKTsKKyAgICAgICAgdHNmX3NlcmlhbF9vdXRfbWFuX2Rl
c3Ryb3kob3V0LT51LnJlbW90ZS5vdXRfbWFuKTsKKyAgICAgICAgZnJlZShvdXQpOworICAgICAg
ICByZXR1cm4gdHNmX3RydWU7CisgICAgfQorI2VuZGlmCisgICAgZGVmYXVsdDogdHNmX2Fib3J0
KCJiYWQgRlNEQiBraW5kIik7CisgICAgfQorfQorCit2b2lkIHRzZl9mc2RiX291dF9hYm9ydCh0
c2ZfZnNkYl9vdXRfdCAqb3V0KSB7CisgICAgc3dpdGNoIChvdXQtPmRiLT5raW5kKSB7CisgICAg
Y2FzZSBUU0ZfRlNEQl9MT0NBTDoKKyAgICAgICAgdHNmX3N0cmVhbV9maWxlX291dHB1dF9jbG9z
ZShvdXQtPnUubG9jYWwub3V0KTsKKyAgICAgICAgdHNmX2ZzZGJfZ3V0c19hYm9ydChvdXQtPmRi
LG91dC0+dS5sb2NhbC5wYXJ0bmFtZSk7CisgICAgICAgIHRzZl9idWZmZXJfZGVzdHJveShvdXQt
PnUubG9jYWwua2V5KTsKKyAgICAgICAgZnJlZShvdXQtPnUubG9jYWwucGFydG5hbWUpOworICAg
ICAgICBicmVhazsKKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAgY2FzZSBUU0ZfRlNEQl9SRU1P
VEU6CisgICAgICAgIGNvbm5lY3Rpb25fZGVzdHJveShvdXQtPnUucmVtb3RlLmNvbm5lY3Rpb24p
OworICAgICAgICB0c2Zfc2VyaWFsX291dF9tYW5fZGVzdHJveShvdXQtPnUucmVtb3RlLm91dF9t
YW4pOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgiYmFk
IEZTREIga2luZCIpOworICAgIH0KKyAgICBmcmVlKG91dCk7Cit9CisKK3RzZl9ib29sX3QgdHNm
X2ZzZGJfb3V0X3dyaXRlKHRzZl9mc2RiX291dF90ICpvdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZikgeworICAgIGlmIChvdXQ9PU5VTEwgfHwgYnVm
PT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHN3
aXRjaCAob3V0LT5kYi0+a2luZCkgeworICAgIGNhc2UgVFNGX0ZTREJfTE9DQUw6CisgICAgICAg
IHJldHVybiB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3dyaXRlKG91dC0+dS5sb2NhbC5vdXQsYnVm
KTsKKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAgY2FzZSBUU0ZfRlNEQl9SRU1PVEU6CisgICAg
ICAgIHJldHVybiB0c2Zfc2VyaWFsX291dF9tYW5fd3JpdGUob3V0LT51LnJlbW90ZS5vdXRfbWFu
LGJ1Zik7CisjZW5kaWYKKyAgICBkZWZhdWx0OiB0c2ZfYWJvcnQoImJhZCBGU0RCIGtpbmQiKTsK
KyAgICB9Cit9CisKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9mc2RiX3Byb3RvY29sLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiX3Byb3RvY29sLmMJKG5vbmV4aXN0ZW50KQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiX3Byb3RvY29sLmMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3MzUgQEAKKy8qIC4vbGlicmFyeS90c2ZfZnNkYl9wcm90
b2NvbC5jIC0tIGdlbmVyYXRlZCBieSB0c2ZfZGVmaW5lIGZyb20gLi9saWJyYXJ5L3RzZl9mc2Ri
X3Byb3RvY29sLnQgKi8KKworI2luY2x1ZGUgInRzZl9mc2RiX3Byb3RvY29sLmgiCisjaW5jbHVk
ZSAidHNmX2RlZmluZV9oZWxwZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworc3RhdGljIHRz
Zl90eXBlX3QgKnRzZl9mc2RiX2J1ZmZlcl9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKnRzZl9mc2RiX3N0YXRlX19idWlsZF90eXBl
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2Zz
ZGJfY29tbWFuZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3Rh
dGljIHRzZl90eXBlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19idWlsZF90eXBlKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdWludDhfX2FycmF5X19idWls
ZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAq
dHNmX2ZzZGJfY29tbWFuZF9fcHV0X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX19i
dWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVf
dCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVf
Tk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2J1aWxk
X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICp0
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X193ZWxjb21lX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0
aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNp
b25fX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2Zf
dHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX19idWlsZF90eXBl
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX19idWlsZF90eXBlKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX2luX2RhdGFfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJfYnVmZmVyX19idWlsZF90eXBlKHZvaWQpIHsKKyAg
ICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9kdXAodWludDhfX2FycmF5X19nZXRfdHlw
ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9zdGF0
ZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVf
Y3JlYXRlX2Nob2ljZV93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsIHRzZl90cnVlLCB0c2Zf
b2Zmc2V0b2YodHNmX2ZzZGJfc3RhdGVfdCwgdmFsdWUpLCAwLCBzaXplb2YodHNmX2ZzZGJfc3Rh
dGVfdCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfY29tbWVu
dF9hb2UoJnJlc3VsdCwgImNsZWFyIiwgVFNGX1RLX1ZPSUQsICIgdGhlIGNvbm5lY3Rpb24gaXMg
cmVhZHkgZm9yIHB1dC9nZXQgcmVxdWVzdHMuICIpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBl
bmRfcHJpbWl0aXZlX3dpdGhfY29tbWVudF9hb2UoJnJlc3VsdCwgInB1dCIsIFRTRl9US19WT0lE
LCAiIHRoZSBjb25uZWN0aW9uIGlzIGluICdwdXQnIG1vZGUsIGFuZCBpcyBleHBlY3RpbmcgZWl0
aGVyXG4gJ291dF93cml0ZScsICdvdXRfY29tbWl0Jywgb3IgJ3Jlc2V0JyBjb21tYW5kcy4gIik7
CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9jb21tZW50X2FvZSgm
cmVzdWx0LCAiZ2V0IiwgVFNGX1RLX1ZPSUQsICIgdGhlIGNvbm5lY3Rpb24gaXMgaW4gJ2dldCcg
bW9kZSwgYW5kIGlzIHNlbmRpbmcgZGF0YVxuIHVudGlsIEVPRi4gIHRoZSBvbmx5IHZhbGlkIGNv
bW1hbmQgaXMgJ3Jlc2V0Jy4gIik7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQs
ICJ0c2ZfZnNkYl9zdGF0ZSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3Qg
KnRzZl9mc2RiX2NvbW1hbmRfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJl
c3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0
LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKHRzZl9mc2RiX2NvbW1hbmRfdCwgdmFsdWUpLCB0c2Zf
b2Zmc2V0b2YodHNmX2ZzZGJfY29tbWFuZF90LCB1KSwgc2l6ZW9mKHRzZl9mc2RiX2NvbW1hbmRf
dCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfY29tbWVudF9h
b2UoJnJlc3VsdCwgInBpbmciLCBUU0ZfVEtfVk9JRCwgIiBuby1vcCBjb21tYW5kLCB3aGljaCBp
bGxpY2l0cyBhbiBvayByZXNwb25zZS4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9m
cm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0LCAicHV0IiwgdHNm
X2ZzZGJfY29tbWFuZF9fcHV0X19nZXRfdHlwZSwgIiBzdGFydCBwdXR0aW5nIGEgdmFsdWUgYXQg
dGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlblxuIGtleXN1bSwgd2hpY2ggbXVzdCBiZSBh
biBhcnJheSBvZiA1IHVpbnQzMidzLiAgdGhpcyBwbGFjZXNcbiB0aGUgY29ubmVjdGlvbiBpbnRv
IHRoZSAncHV0JyBzdGF0ZSwgYW5kIHRoZSBvbmx5IHZhbGlkXG4gY29tbWFuZHMgYXJlIG91dF93
cml0ZSwgb3V0X2NvbW1pdCwgb3IgcmVzZXQuXG4gYWNrbm93bGVkZ2VkIHdpdGggYW4gJ29rJyBy
ZXNwb25zZSBvciBhbiBlcnJvci4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9t
X2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0LCAib3V0X3dyaXRlIiwg
dHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX19nZXRfdHlwZSwgIiB3cml0ZSBhIHNlcXVlbmNl
IG9mIGJ5dGVzIGludG8gdGhlIGZpbGUgb3BlbmVkIGJ5ICdwdXQnLlxuIG5vdGUgdGhhdCB0aGVy
ZSBuZWVkIG5vdCBiZSBhIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhlXG4gYnVmZmVycyBmcm9t
IHRzZl9mc2RiX291dF93cml0ZSdzIHBlcnNwZWN0aXZlLCBhbmQgdGhlXG4gdW5pdHMgb2YgZGF0
YSBzZW50IGhlcmUuICBhY2tub3dsZWRnZWQgd2l0aCBhbiAnb2snIG9yXG4gYW4gZXJyb3IuICIp
OworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfY29tbWVudF9hb2Uo
JnJlc3VsdCwgIm91dF9jb21taXQiLCBUU0ZfVEtfVk9JRCwgIiBjb21taXQgdGhlICdwdXQnLiAg
cmVnYXJkbGVzcyBvZiBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZVxuIGNvbm5lY3Rpb24gc3dpdGNo
ZXMgdG8gJ2NsZWFyJyBzdGF0ZS4gIGFja25vd2xlZGdlZCB3aXRoXG4gYW4gJ29rJyBvciBhbiBl
cnJvci4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9k
dXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0LCAiZ2V0IiwgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0
X19nZXRfdHlwZSwgIiBzdGFydCBnZXR0aW5nIHZhbHVlcyBhdCB0aGUga2V5IGlkZW50aWZpZWQg
YnkgdGhlIGdpdmVuXG4ga2V5c3VtLCB3aGljaCBtdXN0IGJlIGFuIGFycmF5IG9mIDUgdWludDMy
J3MuICB0aGlzXG4gcGxhY2VzIHRoZSBjb25uZWN0aW9uIGludG8gdGhlICdnZXQnIHN0YXRlLCBh
bmQgdGhlIG9ubHlcbiB2YWxpZCBjb21tYW5kIGJlY29tZXMgJ3Jlc2V0Jy4gIGFja25vbHdlZGdl
ZCB3aXRoXG4gZWl0aGVyICdvaycsICdub3RfZm91bmQnLCBvciBhbiBlcnJvci4gIGlmIGFja25v
d2xlZGdlZFxuIHdpdGggJ29rJywgdGhlIHNlcnZlciB3aWxsIHN0YXJ0IHNlbmRpbmcgZGF0YS4g
IHRoZSBkYXRhXG4gc3RyZWFtIHdpbGwgZW5kIHdpdGggZWl0aGVyICdzeXNfZXJyb3InIG9yICdp
bl9lb2YnLCBhdFxuIHdoaWNoIHBvaW50IHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgYmFjayBpbiAn
Y2xlYXInIHN0YXRlLiAiKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJh
Y2tfYW5kX2R1cF93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJybSIsIHRzZl9mc2RiX2NvbW1h
bmRfX3JtX19nZXRfdHlwZSwgIiByZW1vdmUgYW4gZW50cnkgZnJvbSB0aGUgZGF0YWJhc2UuIGFj
a25vd2xlZGdlZCB3aXRoIGVpdGhlclxuIGFuICdvaycsICdub3RfZm91bmQnLCBvciBhbiBlcnJv
ci4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9jb21tZW50
X2FvZSgmcmVzdWx0LCAicmVzZXQiLCBUU0ZfVEtfVk9JRCwgIiByZXNldCB0aGUgY29ubmVjdGlv
biBiYWNrIHRvICdjbGVhcicgc3RhdGUuICB0aGlzIGNhblxuIGJlIHVzZWQgdG8gZWl0aGVyIGFi
b3J0IGEgJ3B1dCcgb3IgdG8gY2xvc2UgYSAnZ2V0J1xuIHByZW1hdHVyZWx5LiAgaWYgaXNzdWVk
IGluICdwdXQnIG9yICdjbGVhcicgc3RhdGVzLCBpdFxuIGlzIGFja25vd2xlZGdlZCBpbW1lZGlh
dGVseSB3aXRoIGFuICdvaycuICBpZiBpc3N1ZWRcbiBpbiAnZ2V0JyBzdGF0ZSwgdGhlcmUgbWF5
IGJlIHNvbWUgbnVtYmVyIG9mICdpbl9kYXRhJ1xuIG9yICdpbl9lb2YnIHBhY2tldHMgcXVldWVk
IHVwLCBhcyB3ZWxsIGFzIHBvc3NpYmx5IGFcbiAnc3lzX2Vycm9yJywgc28gYmUgc3VyZSB0byBl
aXRoZXIgaWdub3JlIG9yIHJlcG9ydCB0aG9zZVxuIGFuZCB3YWl0IGZvciB0aGUgJ29rJyBiZWZv
cmUgcHJvY2VlZGluZyBmdXJ0aGVyLiAgbm90ZVxuIHRoYXQgYSBzb21ld2hhdCBzYWZlciBtZXRo
b2Qgb2YgYWJvcnRpbmcgYSBwdXQgb3IgZ2V0XG4gaXMgdG8gc2ltcGx5IGRpc2Nvbm5lY3QgZnJv
bSB0aGUgc2VydmVyLiAgY3VycmVudGx5IHRoYXRcbiBpcyBmYXN0ZXIgZm9yIGFib3J0aW5nIGEg
Z2V0LCBidXQgc2xvd2VyIGZvciBhYm9ydGluZ1xuIGEgcHV0LiAiKTsKKyAgICB0c2ZfdHlwZV9z
ZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX2NvbW1hbmQiKTsKKyAgICB0c2ZfdHlwZV9z
ZXRfY29tbWVudF9hb2UoJnJlc3VsdCwgIiBjb21tYW5kIHNlbnQgZnJvbSBjbGllbnQgdG8gc2Vy
dmVyLiAgZWFjaCBjb21tYW5kIGlzIGFja25vd2xlZGdlZFxuIGJ5IGEgcmVzcG9uc2UsIHdoaWNo
IG1heSBiZSBqdXN0ICdvaycuICIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBl
X3QgKnRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5
cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2Fu
ZF9kZXN0cnVjdG9yX2FvZShzaXplb2YodHNmX2ZzZGJfY29tbWFuZF9fcHV0X3QpLCAodm9pZCgq
KSh2b2lkKikpdHNmX2ZzZGJfY29tbWFuZF9fcHV0X19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVj
dF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAia2V5
IiwgVFNGX1RLX0FOWSwgdHNmX29mZnNldG9mKHRzZl9mc2RiX2NvbW1hbmRfX3B1dF90LCBrZXkp
KTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX2NvbW1hbmRf
X3B1dCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9mc2RiX2Nv
bW1hbmRfX291dF93cml0ZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVz
dWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVj
dG9yX2FvZShzaXplb2YodHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX3QpLCAodm9pZCgqKSh2
b2lkKikpdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX19kZXN0cnVjdCk7CisgICAgdHNmX3N0
cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2Fv
ZSgmcmVzdWx0LCAiZGF0YSIsIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRv
Zih0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfdCwgZGF0YSkpOworICAgIHRzZl90eXBlX3Nl
dF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlIik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdWludDhfX2FycmF5X19idWlsZF90eXBl
KHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJyYXlf
YW9lKHRzZl90eXBlX2NyZWF0ZV9hb2UoVFNGX1RLX1VJTlQ4KSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19idWlsZF90eXBlKHZv
aWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dp
dGhfbmF0aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNpemVvZih0c2ZfZnNkYl9jb21tYW5k
X19nZXRfdCksICh2b2lkKCopKHZvaWQqKSl0c2ZfZnNkYl9jb21tYW5kX19nZXRfX2Rlc3RydWN0
KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2ZV9tYXBf
YW9lKCZyZXN1bHQsICJrZXkiLCBUU0ZfVEtfQU5ZLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfY29t
bWFuZF9fZ2V0X3QsIGtleSkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAi
dHNmX2ZzZGJfY29tbWFuZF9fZ2V0Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5
cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90
eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9h
bmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKHRzZl9mc2RiX2NvbW1hbmRfX3JtX3QpLCAodm9pZCgq
KSh2b2lkKikpdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2Rlc3RydWN0KTsKKyAgICB0c2Zfc3RydWN0
X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJrZXki
LCBUU0ZfVEtfQU5ZLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfY29tbWFuZF9fcm1fdCwga2V5KSk7
CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJ0c2ZfZnNkYl9jb21tYW5kX19y
bSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9mc2RiX3Jlc3Bv
bnNlX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlw
ZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNpemVv
Zih0c2ZfZnNkYl9yZXNwb25zZV90KSwgKHZvaWQoKikodm9pZCopKXRzZl9mc2RiX3Jlc3BvbnNl
X19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2Fu
ZF9kdXBfd2l0aF9uYXRpdmVfbWFwX3dpdGhfY29tbWVudF9hb2UoJnJlc3VsdCwgInN0YXRlIiwg
dHNmX2ZzZGJfc3RhdGVfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2Vf
dCwgc3RhdGUpLCAiIGRlc2NyaWJlcyB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24gYXMgYSBy
ZXN1bHQgb2ZcbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kLiAiKTsK
KyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25h
dGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJwYXlsb2FkIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfdCwgcGF5bG9hZCkp
OworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfcmVzcG9uc2Ui
KTsKKyAgICB0c2ZfdHlwZV9zZXRfY29tbWVudF9hb2UoJnJlc3VsdCwgIiByZXNwb25zZSBzZW50
IGZyb20gc2VydmVyIHRvIGNsaWVudCAiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2Zf
dHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fYnVpbGRfdHlwZSh2b2lkKSB7Cisg
ICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2Nob2ljZV93aXRoX25hdGl2
ZV9tYXBfYW9lKCZyZXN1bHQsIHRzZl90cnVlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfdCwgdmFsdWUpLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfdCwgdSksIHNpemVvZih0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF90KSk7CisgICAg
dHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0
LCAib2siLCBUU0ZfVEtfVk9JRCwgIiBnZW5lcmljIGFja25vd2xlZGdlbWVudCB0aGF0IHRoZSBw
cmV2aW91cyBjb21tYW5kXG4gc3VjY2VlZGVkLiAiKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBw
ZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJ3ZWxj
b21lIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2dldF90eXBlLCAiIHJl
c3BvbnNlIHNlbnQgdG8gYSBuZXcgY29ubmVjdGlvbi4gIik7CisgICAgdHNmX2Nob2ljZV90eXBl
X2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0LCAi
c3lzX2Vycm9yIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9fZ2V0X3R5
cGUsICIgYW4gZXJyb3IgaW5kaWNhdGluZyBhbiB1bmV4cGVjdGVkIHN5c3RlbSBmYXVsdC4gIik7
CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9j
b21tZW50X2FvZSgmcmVzdWx0LCAicHJvdG9fZXJyb3IiLCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fcHJvdG9fZXJyb3JfX2dldF90eXBlLCAiIGFuIGVycm9yIGFyaXNpbmcgb3V0IG9mIGlu
Y29ycmVjdCB1c2Ugb2YgdGhlIHByb3RvY29sLiAiKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBw
ZW5kX3ByaW1pdGl2ZV93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJub3RfZm91bmQiLCBUU0Zf
VEtfVk9JRCwgIiBpbmRpY2F0ZXMgdGhhdCB0aGUgZ2l2ZW4ga2V5IHdhcyBub3QgZm91bmQgaW4g
dGhlXG4gZGF0YWJhc2UuICIpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxs
YmFja19hbmRfZHVwX3dpdGhfY29tbWVudF9hb2UoJnJlc3VsdCwgImluX2RhdGEiLCB0c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZ2V0X3R5cGUsICIgYSBkYXRhIHBhY2tldCBp
biByZXNwb25zZSB0byBhICdnZXQnIHJlcXVlc3QuICB0aGVzZSBidWZmZXJzXG4gbWF5IG5vdCBj
b3JyZXNwb25kIHRvIHRoZSBidWZmZXJzIHJldHVybmVkIGZyb21cbiB0c2ZfZnNkYl9pbl9yZWFk
KCksIGJ1dCBtYXkgYmUgYXQgYW55IGdyYW51bGFyaXR5LiAiKTsKKyAgICB0c2ZfY2hvaWNlX3R5
cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJpbl9lb2YiLCBU
U0ZfVEtfVk9JRCwgIiBlbmQtb2YtZmlsZSBvbiBhICdnZXQnIHJlcXVlc3Q7IGluZGljYXRlcyB0
aGF0IGFsbCBhdmFpbGFibGVcbiBkYXRhIGhhcyBiZWVuIHNlbnQuICIpOworICAgIHRzZl90eXBl
X3NldF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWQiKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fd2VsY29tZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0
ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9y
X2FvZShzaXplb2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfdCksICh2b2lk
KCopKHZvaWQqKSl0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fZGVzdHJ1Y3Qp
OworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF93
aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJuYW1lIiwgVFNGX1RLX1NUUklORywgdHNmX29mZnNl
dG9mKHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX3QsIG5hbWUpLCAiIHRoZSBu
YW1lIG9mIHRoZSBzZXJ2ZXIgc29mdHdhcmUuICIpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBl
bmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9l
KCZyZXN1bHQsICJ2ZXJzaW9uIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVf
X3ZlcnNpb25fX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3dlbGNvbWVfdCwgdmVyc2lvbiksICIgdGhlIHZlcnNpb24gb2YgdGhlIHNlcnZlciBzb2Z0
d2FyZTsgdGhpcyBpcyB1c3VhbGx5XG4gdGhlIFRTRiB2ZXJzaW9uLiAiKTsKKyAgICB0c2ZfdHlw
ZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxj
b21lIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX2J1aWxkX3R5cGUodm9pZCkgeworICAg
IHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVf
c2l6ZV9hb2Uoc2l6ZW9mKHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJz
aW9uX3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2
ZV9tYXBfYW9lKCZyZXN1bHQsICJtYWpvciIsIFRTRl9US19JTlQzMiwgdHNmX29mZnNldG9mKHRz
Zl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9uX3QsIG1ham9yKSk7Cisg
ICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgm
cmVzdWx0LCAibWlub3IiLCBUU0ZfVEtfSU5UMzIsIHRzZl9vZmZzZXRvZih0c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl90LCBtaW5vcikpOworICAgIHRzZl9zdHJ1
Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgInBh
dGNoIiwgVFNGX1RLX0lOVDMyLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3dlbGNvbWVfX3ZlcnNpb25fdCwgcGF0Y2gpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9h
b2UoJnJlc3VsdCwgInRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9u
Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX3N5c19lcnJvcl9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVf
dCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9k
ZXN0cnVjdG9yX2FvZShzaXplb2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJv
cl90KSwgKHZvaWQoKikodm9pZCopKXRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJy
b3JfX2Rlc3RydWN0KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRo
X25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJtc2ciLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zmc2V0
b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl90LCBtc2cpKTsKKyAgICB0
c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X19zeXNfZXJyb3IiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX2J1aWxkX3R5cGUodm9pZCkgewor
ICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRp
dmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKHRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19wcm90b19lcnJvcl90KSwgKHZvaWQoKikodm9pZCopKXRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX19wcm90b19lcnJvcl9fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBl
bmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJt
c2ciLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3Byb3RvX2Vycm9yX3QsIG1zZyksICIgYSBzZXJ2ZXItZ2VuZXJhdGVkIG1lc3NhZ2UgZGVz
Y3JpYmluZyB3aGF0IHdlbnQgd3JvbmcgIik7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZy
ZXN1bHQsICJ0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3IiKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9faW5fZGF0YV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0g
dHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2Fv
ZShzaXplb2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfdCksICh2b2lkKCop
KHZvaWQqKSl0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZGVzdHJ1Y3QpOwor
ICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0
aXZlX21hcF9hb2UoJnJlc3VsdCwgImRhdGEiLCB0c2ZfZnNkYl9idWZmZXJfX2dldF90eXBlLCB0
c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfdCwgZGF0YSkp
OworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX2luX2RhdGEiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdHNm
X3R5cGVfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX2J1ZmZlcl9fdHlwZSA9IE5VTEw7CitzdGF0aWMg
dHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgdHNmX2ZzZGJfYnVmZmVyX19nZW5ydHIgPSBOVUxMOwor
c3RhdGljIHRzZl9wYXJzZXJfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX2J1ZmZlcl9fcGFyc2VyID0g
TlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29u
Y2VfdCB0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0
aWMgdm9pZCB0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9m
c2RiX2J1ZmZlcl9fdHlwZSA9IHRzZl9mc2RiX2J1ZmZlcl9fYnVpbGRfdHlwZSgpOworfQorI2Vs
c2UKK3N0YXRpYyB2b2lkICp0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiB0c2ZfZnNkYl9idWZmZXJfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNm
X3R5cGVfdCAqdHNmX2ZzZGJfYnVmZmVyX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVy
KCh2b2lkKiopJnRzZl9mc2RiX2J1ZmZlcl9fdHlwZSwgdHNmX2ZzZGJfYnVmZmVyX190eXBlX19i
dWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9idWZmZXJfX3R5cGVf
X29jLCB0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNk
Yl9idWZmZXJfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9idWZmZXJfX2dlbnJ0cl9fb2MgPSBQ
VEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRyX19i
dWlsZGVyKHZvaWQpIHsKKyAgICB0c2ZfZnNkYl9idWZmZXJfX2dlbnJ0ciA9IHRzZl9nZW5lcmF0
b3JfY3JlYXRlKHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKnRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1
cm4gdHNmX2dlbmVyYXRvcl9jcmVhdGUodHNmX2ZzZGJfYnVmZmVyX19nZXRfdHlwZSgpKTsKK30K
KyNlbmRpZgordHNmX2dlbnJ0cl90ICp0c2ZfZnNkYl9idWZmZXJfX2dldF9nZW5lcmF0b3Iodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0
cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRyLCB0
c2ZfZnNkYl9idWZmZXJfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25j
ZSgmdHNmX2ZzZGJfYnVmZmVyX19nZW5ydHJfX29jLCB0c2ZfZnNkYl9idWZmZXJfX2dlbnJ0cl9f
YnVpbGRlcik7CisgICAgcmV0dXJuIHRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRyOworI2VuZGlmCit9
CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3Qg
dHNmX2ZzZGJfYnVmZmVyX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMg
dm9pZCB0c2ZfZnNkYl9idWZmZXJfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNmX2Zz
ZGJfYnVmZmVyX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9idWZmZXJfX2dl
dF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICp0c2ZfZnNkYl9idWZmZXJfX3BhcnNl
cl9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9wYXJzZXJfY3JlYXRlKHRzZl9mc2Ri
X2J1ZmZlcl9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqdHNmX2ZzZGJf
YnVmZmVyX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
KyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZ0c2Zf
ZnNkYl9idWZmZXJfX3BhcnNlciwgdHNmX2ZzZGJfYnVmZmVyX19wYXJzZXJfX2J1aWxkZXIpOwor
I2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2J1ZmZlcl9fcGFyc2VyX19vYywgdHNm
X2ZzZGJfYnVmZmVyX19wYXJzZXJfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9idWZm
ZXJfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9idWZmZXJfX2Rlc3RydWN0KHRz
Zl9mc2RiX2J1ZmZlcl90ICpkYXRhKSB7CisgICAgdWludDhfX2FycmF5X19kZXN0cnVjdChkYXRh
KTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9idWZmZXJfX3dyaXRlKHRzZl9zdHJlYW1fZmls
ZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNkYl9idWZmZXJfdCAqZGF0YSkgeworICAgIHJldHVybiB0
c2ZfdHlwZWRfZGF0YV93cml0ZShvdXQsIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X2dlbmVyYXRvcigp
LCBkYXRhKTsKK30KKwordHNmX2ZzZGJfYnVmZmVyX3QgKnRzZl9mc2RiX2J1ZmZlcl9fcmVhZCh0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFf
cmVhZChpbiwgdHNmX2ZzZGJfYnVmZmVyX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90
IHRzZl9mc2RiX2J1ZmZlcl9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwg
dHNmX2ZzZGJfYnVmZmVyX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9y
ZWFkX2ludG8oaW4sIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQor
CitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX3N0YXRlX190eXBlID0gTlVM
TDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9zdGF0ZV9fZ2VucnRy
ID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9zdGF0ZV9f
cGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBw
dGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9zdGF0ZV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5J
VDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3N0YXRlX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAg
ICB0c2ZfZnNkYl9zdGF0ZV9fdHlwZSA9IHRzZl9mc2RiX3N0YXRlX19idWlsZF90eXBlKCk7Cit9
CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3N0YXRlX190eXBlX19idWlsZGVyKHZvaWQp
IHsKKyAgICByZXR1cm4gdHNmX2ZzZGJfc3RhdGVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgor
dHNmX3R5cGVfdCAqdHNmX2ZzZGJfc3RhdGVfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50
ZXIoKHZvaWQqKikmdHNmX2ZzZGJfc3RhdGVfX3R5cGUsIHRzZl9mc2RiX3N0YXRlX190eXBlX19i
dWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9zdGF0ZV9fdHlwZV9f
b2MsIHRzZl9mc2RiX3N0YXRlX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJf
c3RhdGVfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9zdGF0ZV9fZ2VucnRyX19vYyA9IFBUSFJF
QURfT05DRV9JTklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfc3RhdGVfX2dlbnJ0cl9fYnVpbGRl
cih2b2lkKSB7CisgICAgdHNmX2ZzZGJfc3RhdGVfX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3Jl
YXRlKHRzZl9mc2RiX3N0YXRlX19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAq
dHNmX2ZzZGJfc3RhdGVfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9n
ZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX3N0YXRlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgor
dHNmX2dlbnJ0cl90ICp0c2ZfZnNkYl9zdGF0ZV9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZk
ZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9p
bml0X3BvaW50ZXIoKHZvaWQqKikmdHNmX2ZzZGJfc3RhdGVfX2dlbnJ0ciwgdHNmX2ZzZGJfc3Rh
dGVfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmdHNmX2ZzZGJf
c3RhdGVfX2dlbnJ0cl9fb2MsIHRzZl9mc2RiX3N0YXRlX19nZW5ydHJfX2J1aWxkZXIpOworICAg
IHJldHVybiB0c2ZfZnNkYl9zdGF0ZV9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgdHNmX2ZzZGJfc3RhdGVf
X3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3N0
YXRlX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2RiX3N0YXRlX19wYXJzZXIg
PSB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5cGUoKSk7Cit9CisjZWxz
ZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3N0YXRlX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5cGUoKSk7
Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqdHNmX2ZzZGJfc3RhdGVfX2dldF9wYXJzZXIodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNl
cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX3N0YXRlX19wYXJzZXIsIHRz
Zl9mc2RiX3N0YXRlX19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2Uo
JnRzZl9mc2RiX3N0YXRlX19wYXJzZXJfX29jLCB0c2ZfZnNkYl9zdGF0ZV9fcGFyc2VyX19idWls
ZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfc3RhdGVfX3BhcnNlcjsKKyNlbmRpZgorfQorCit0
c2ZfYm9vbF90IHRzZl9mc2RiX3N0YXRlX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3Qg
Km91dCwgdHNmX2ZzZGJfc3RhdGVfdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV93cml0ZShvdXQsIHRzZl9mc2RiX3N0YXRlX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQor
Cit0c2ZfZnNkYl9zdGF0ZV90ICp0c2ZfZnNkYl9zdGF0ZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVf
aW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgdHNmX2Zz
ZGJfc3RhdGVfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJfc3RhdGVf
X3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIHRzZl9mc2RiX3N0YXRlX3Qg
KnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkX2ludG8oaW4sIHRzZl9m
c2RiX3N0YXRlX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90
ICogdm9sYXRpbGUgdHNmX2ZzZGJfY29tbWFuZF9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNmX2dl
bnJ0cl90ICogdm9sYXRpbGUgdHNmX2ZzZGJfY29tbWFuZF9fZ2VucnRyID0gTlVMTDsKK3N0YXRp
YyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXIgPSBOVUxM
OworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90
IHRzZl9mc2RiX2NvbW1hbmRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMg
dm9pZCB0c2ZfZnNkYl9jb21tYW5kX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2ZfZnNk
Yl9jb21tYW5kX190eXBlID0gdHNmX2ZzZGJfY29tbWFuZF9fYnVpbGRfdHlwZSgpOworfQorI2Vs
c2UKK3N0YXRpYyB2b2lkICp0c2ZfZnNkYl9jb21tYW5kX190eXBlX19idWlsZGVyKHZvaWQpIHsK
KyAgICByZXR1cm4gdHNmX2ZzZGJfY29tbWFuZF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0
c2ZfdHlwZV90ICp0c2ZfZnNkYl9jb21tYW5kX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJnRzZl9mc2RiX2NvbW1hbmRfX3R5cGUsIHRzZl9mc2RiX2NvbW1hbmRfX3R5
cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1hbmRf
X3R5cGVfX29jLCB0c2ZfZnNkYl9jb21tYW5kX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4g
dHNmX2ZzZGJfY29tbWFuZF9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lO
SVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX2NvbW1hbmRfX2dlbnJ0
cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2NvbW1hbmRf
X2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJfY29tbWFuZF9fZ2VucnRyID0g
dHNmX2dlbmVyYXRvcl9jcmVhdGUodHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3R5cGUoKSk7Cit9Cisj
ZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX2NvbW1hbmRfX2dlbnJ0cl9fYnVpbGRlcih2b2lk
KSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX2NvbW1hbmRfX2dl
dF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKnRzZl9mc2RiX2NvbW1hbmRfX2dl
dF9nZW5lcmF0b3Iodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJl
dHVybiAodHNmX2dlbnJ0cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX2Nv
bW1hbmRfX2dlbnJ0ciwgdHNmX2ZzZGJfY29tbWFuZF9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNl
CisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9jb21tYW5kX19nZW5ydHJfX29jLCB0c2ZfZnNk
Yl9jb21tYW5kX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9jb21tYW5k
X19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0
YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXJfX29jID0gUFRIUkVB
RF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCB0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXJfX2J1aWxk
ZXIodm9pZCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfX3BhcnNlciA9IHRzZl9wYXJzZXJfY3Jl
YXRlKHRzZl9mc2RiX2NvbW1hbmRfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lk
ICp0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0
c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9jb21tYW5kX19nZXRfdHlwZSgpKTsKK30KKyNlbmRp
ZgordHNmX3BhcnNlcl90ICp0c2ZfZnNkYl9jb21tYW5kX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNp
ZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNm
X2luaXRfcG9pbnRlcigodm9pZCoqKSZ0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXIsIHRzZl9mc2Ri
X2NvbW1hbmRfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmdHNm
X2ZzZGJfY29tbWFuZF9fcGFyc2VyX19vYywgdHNmX2ZzZGJfY29tbWFuZF9fcGFyc2VyX19idWls
ZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfY29tbWFuZF9fcGFyc2VyOworI2VuZGlmCit9Cit2
b2lkIHRzZl9mc2RiX2NvbW1hbmRfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRfdCAqZGF0YSkg
eworICAgIHN3aXRjaCAoZGF0YS0+dmFsdWUpIHsKKyAgICBjYXNlIDE6CisgICAgICAgIHRzZl9m
c2RiX2NvbW1hbmRfX3B1dF9fZGVzdHJ1Y3QoJmRhdGEtPnUucHV0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAyOgorICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2Rlc3Ry
dWN0KCZkYXRhLT51Lm91dF93cml0ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAg
ICAgICAgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19kZXN0cnVjdCgmZGF0YS0+dS5nZXQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDU6CisgICAgICAgIHRzZl9mc2RiX2NvbW1hbmRfX3JtX19k
ZXN0cnVjdCgmZGF0YS0+dS5ybSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9jb21tYW5kX193cml0
ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgdHNmX2ZzZGJfY29tbWFuZF90ICpkYXRh
KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgdHNmX2ZzZGJfY29tbWFu
ZF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKwordHNmX2ZzZGJfY29tbWFuZF90ICp0c2Zf
ZnNkYl9jb21tYW5kX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJl
dHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfcGFyc2Vy
KCkpOworfQorCit0c2ZfYm9vbF90IHRzZl9mc2RiX2NvbW1hbmRfX3JlYWRfaW50byh0c2Zfc3Ry
ZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIHRzZl9mc2RiX2NvbW1hbmRfdCAqcmVzdWx0KSB7CisgICAg
cmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0
X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIHRz
Zl9mc2RiX3Jlc3BvbnNlX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xh
dGlsZSB0c2ZfZnNkYl9yZXNwb25zZV9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2Vy
X3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9yZXNwb25zZV9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9y
ZXNwb25zZV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9m
c2RiX3Jlc3BvbnNlX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2ZfZnNkYl9yZXNwb25z
ZV9fdHlwZSA9IHRzZl9mc2RiX3Jlc3BvbnNlX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKnRzZl9mc2RiX3Jlc3BvbnNlX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBy
ZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5
cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIo
KHZvaWQqKikmdHNmX2ZzZGJfcmVzcG9uc2VfX3R5cGUsIHRzZl9mc2RiX3Jlc3BvbnNlX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9yZXNwb25zZV9f
dHlwZV9fb2MsIHRzZl9mc2RiX3Jlc3BvbnNlX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4g
dHNmX2ZzZGJfcmVzcG9uc2VfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9J
TklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9yZXNwb25zZV9fZ2Vu
cnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfcmVzcG9u
c2VfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0
ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfdHlwZSgpKTsK
K30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0cl9fYnVpbGRl
cih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX3Jlc3Bv
bnNlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICp0c2ZfZnNkYl9yZXNw
b25zZV9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdHNm
X2ZzZGJfcmVzcG9uc2VfX2dlbnJ0ciwgdHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0cl9fYnVpbGRl
cik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmdHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0cl9f
b2MsIHRzZl9mc2RiX3Jlc3BvbnNlX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2Zf
ZnNkYl9yZXNwb25zZV9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5J
VF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BhcnNl
cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3Jlc3BvbnNl
X19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZXIg
PSB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9yZXNwb25zZV9fZ2V0X3R5cGUoKSk7Cit9Cisj
ZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZXJfX2J1aWxkZXIodm9p
ZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9yZXNwb25zZV9fZ2V0
X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX2dl
dF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVy
biAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX3Jlc3Bv
bnNlX19wYXJzZXIsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UK
KyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZXJfX29jLCB0c2ZfZnNk
Yl9yZXNwb25zZV9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9u
c2VfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fZGVzdHJ1Y3Qo
dHNmX2ZzZGJfcmVzcG9uc2VfdCAqZGF0YSkgeworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19kZXN0cnVjdCgmZGF0YS0+cGF5bG9hZCk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJf
cmVzcG9uc2VfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNkYl9y
ZXNwb25zZV90ICpkYXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwg
dHNmX2ZzZGJfcmVzcG9uc2VfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK3RzZl9mc2Ri
X3Jlc3BvbnNlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1
dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCB0c2ZfZnNkYl9y
ZXNwb25zZV9fZ2V0X3BhcnNlcigpKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9yZXNwb25z
ZV9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwgdHNmX2ZzZGJfcmVzcG9u
c2VfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwg
dHNmX2ZzZGJfcmVzcG9uc2VfX2dldF9wYXJzZXIoKSwgcmVzdWx0KTsKK30KKworc3RhdGljIHRz
Zl90eXBlX3QgKiB2b2xhdGlsZSB1aW50OF9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IHVpbnQ4X19hcnJh
eV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHVpbnQ4X19hcnJh
eV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgdWludDhfX2FycmF5X190eXBlID0gdWludDhf
X2FycmF5X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKnVpbnQ4X19hcnJh
eV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHVpbnQ4X19hcnJheV9fYnVpbGRf
dHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp1aW50OF9fYXJyYXlfX2dldF90eXBlKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBl
X3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdWludDhfX2FycmF5X190eXBlLCB1aW50OF9f
YXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnVpbnQ4X19h
cnJheV9fdHlwZV9fb2MsIHVpbnQ4X19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJu
IHVpbnQ4X19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB1aW50OF9fYXJyYXlfX2Rlc3Ry
dWN0KHVpbnQ4X19hcnJheV90ICpkYXRhKSB7CisgICAgZnJlZShkYXRhLT5kYXRhKTsKK30KKwor
c3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9jb21tYW5kX19wdXRfX3R5cGUg
PSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRf
b25jZV90IHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5J
VDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZV9fYnVpbGRlcih2b2lk
KSB7CisgICAgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X190eXBlID0gdHNmX2ZzZGJfY29tbWFuZF9f
cHV0X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX2NvbW1h
bmRfX3B1dF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9mc2RiX2NvbW1h
bmRfX3B1dF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9j
b21tYW5kX19wdXRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdHNm
X2ZzZGJfY29tbWFuZF9fcHV0X190eXBlLCB0c2ZfZnNkYl9jb21tYW5kX19wdXRfX3R5cGVfX2J1
aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1hbmRfX3B1dF9f
dHlwZV9fb2MsIHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0
dXJuIHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNk
Yl9jb21tYW5kX19wdXRfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRfX3B1dF90ICpkYXRhKSB7
CisgICAgdHNmX2J1ZmZlcl9kZXN0cm95KComZGF0YS0+a2V5KTsKK30KKworc3RhdGljIHRzZl90
eXBlX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX3R5cGUgPSBOVUxM
OworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90
IHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5J
VDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX190eXBlID0gdHNmX2Zz
ZGJfY29tbWFuZF9fb3V0X3dyaXRlX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZv
aWQgKnRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgcmV0dXJuIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fYnVpbGRfdHlwZSgpOworfQor
I2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2dldF90eXBl
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90
eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dy
aXRlX190eXBlLCB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX3R5cGVfX2J1aWxkZXIpOwor
I2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlw
ZV9fb2MsIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fYnVpbGRlcik7CisgICAg
cmV0dXJuIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZTsKKyNlbmRpZgorfQordm9p
ZCB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRf
X291dF93cml0ZV90ICpkYXRhKSB7CisgICAgdHNmX2ZzZGJfYnVmZmVyX19kZXN0cnVjdCgmZGF0
YS0+ZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfY29t
bWFuZF9fZ2V0X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGVfX29jID0g
UFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5
cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfX2dldF9fdHlwZSA9IHRz
Zl9mc2RiX2NvbW1hbmRfX2dldF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lk
ICp0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVy
biB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5
cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJnRzZl9mc2RiX2NvbW1hbmRfX2dldF9fdHlwZSwgdHNmX2ZzZGJfY29tbWFu
ZF9fZ2V0X190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNk
Yl9jb21tYW5kX19nZXRfX3R5cGVfX29jLCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGVfX2J1
aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGU7CisjZW5kaWYK
K30KK3ZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19kZXN0cnVjdCh0c2ZfZnNkYl9jb21tYW5k
X19nZXRfdCAqZGF0YSkgeworICAgIHRzZl9idWZmZXJfZGVzdHJveSgqJmRhdGEtPmtleSk7Cit9
CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX3R5
cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJl
YWRfb25jZV90IHRzZl9mc2RiX2NvbW1hbmRfX3JtX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9J
TklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX3R5cGVfX2J1aWxkZXIodm9p
ZCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfX3JtX190eXBlID0gdHNmX2ZzZGJfY29tbWFuZF9f
cm1fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJfY29tbWFu
ZF9fcm1fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZnNkYl9jb21tYW5k
X19ybV9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9jb21t
YW5kX19ybV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
ICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZ0c2ZfZnNk
Yl9jb21tYW5kX19ybV9fdHlwZSwgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX3R5cGVfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1hbmRfX3JtX190eXBlX19v
YywgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2Zf
ZnNkYl9jb21tYW5kX19ybV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9jb21tYW5k
X19ybV9fZGVzdHJ1Y3QodHNmX2ZzZGJfY29tbWFuZF9fcm1fdCAqZGF0YSkgeworICAgIHRzZl9i
dWZmZXJfZGVzdHJveSgqJmRhdGEtPmtleSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9s
YXRpbGUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3R5cGUgPSBOVUxMOworCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZv
aWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAg
IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90
ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9p
bnRlcigodm9pZCoqKSZ0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fdHlwZSwgdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29u
Y2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX190eXBlX19vYywgdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fZGVzdHJ1Y3QodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfdCAqZGF0YSkgeworICAg
IHN3aXRjaCAoZGF0YS0+dmFsdWUpIHsKKyAgICBjYXNlIDE6CisgICAgICAgIHRzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkX193ZWxjb21lX19kZXN0cnVjdCgmZGF0YS0+dS53ZWxjb21lKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fc3lzX2Vycm9yX19kZXN0cnVjdCgmZGF0YS0+dS5zeXNfZXJyb3IpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19w
cm90b19lcnJvcl9fZGVzdHJ1Y3QoJmRhdGEtPnUucHJvdG9fZXJyb3IpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIDU6CisgICAgICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9k
YXRhX19kZXN0cnVjdCgmZGF0YS0+dS5pbl9kYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZv
bGF0aWxlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX190eXBlID0gTlVMTDsK
KworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdHlwZV9fb2MgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21l
X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9f
d2VsY29tZV9fdHlwZSA9IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX19idWls
ZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX193ZWxjb21lX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNm
X3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2dldF90eXBlKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBl
X3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X3dlbGNvbWVfX3R5cGUsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fd2VsY29tZV9fdHlwZV9fb2MsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193
ZWxjb21lX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3dlbGNvbWVfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX3dlbGNvbWVfX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193
ZWxjb21lX3QgKmRhdGEpIHsKKyAgICBmcmVlKComZGF0YS0+bmFtZSk7Cit9CisKK3N0YXRpYyB0
c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVf
X3ZlcnNpb25fX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21l
X192ZXJzaW9uX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxkZXIo
dm9pZCkgeworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9u
X190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX2J1
aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVy
biB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fYnVpbGRfdHlw
ZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9f
d2VsY29tZV9fdmVyc2lvbl9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRf
UE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoq
KSZ0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fdHlwZSwgdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193
ZWxjb21lX192ZXJzaW9uX190eXBlX19vYywgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dl
bGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fdHlwZTsKKyNlbmRpZgorfQorCitzdGF0
aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNf
ZXJyb3JfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3Rh
dGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3Jf
X3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCB0c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBlID0gdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX3N5c19lcnJvcl9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2
b2lkICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBlX19idWlsZGVy
KHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJv
cl9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fc3lzX2Vycm9yX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVf
SU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2
b2lkKiopJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3JfX3R5cGUsIHRzZl9m
c2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3JfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UK
KyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3Jf
X3R5cGVfX29jLCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBlX19i
dWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJv
cl9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lz
X2Vycm9yX19kZXN0cnVjdCh0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX3Qg
KmRhdGEpIHsKKyAgICBmcmVlKComZGF0YS0+bXNnKTsKK30KKworc3RhdGljIHRzZl90eXBlX3Qg
KiB2b2xhdGlsZSB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX3R5cGUg
PSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRf
b25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcl9fdHlwZV9fb2Mg
PSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19wcm90b19lcnJvcl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3Byb3RvX2Vycm9yX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQg
KnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcl9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJv
cl9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIo
KHZvaWQqKikmdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX190eXBlLCB0
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX3R5cGVfX2J1aWxkZXIpOwor
I2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90
b19lcnJvcl9fdHlwZV9fb2MsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJv
cl9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X19wcm90b19lcnJvcl9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fcHJvdG9fZXJyb3JfX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X19wcm90b19lcnJvcl90ICpkYXRhKSB7CisgICAgZnJlZSgqJmRhdGEtPm1zZyk7Cit9CisKK3N0
YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2lu
X2RhdGFfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3Rh
dGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX190
eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX2luX2RhdGFfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fYnVpbGRfdHlw
ZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9f
aW5fZGF0YV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
ICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZ0c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fdHlwZSwgdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2Uo
JnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX190eXBlX19vYywgdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fdHlwZTsKKyNlbmRpZgorfQordm9p
ZCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZGVzdHJ1Y3QodHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfdCAqZGF0YSkgeworICAgIHRzZl9mc2RiX2J1ZmZl
cl9fZGVzdHJ1Y3QoJmRhdGEtPmRhdGEpOworfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX2ZzZGJfcHJvdG9jb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ZzZGJfcHJvdG9jb2wuaAkobm9u
ZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2Zz
ZGJfcHJvdG9jb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3NiBAQAorLyogLi9saWJy
YXJ5L3RzZl9mc2RiX3Byb3RvY29sLmggLS0gZ2VuZXJhdGVkIGJ5IHRzZl9kZWZpbmUgZnJvbSAu
L2xpYnJhcnkvdHNmX2ZzZGJfcHJvdG9jb2wudCAqLworCisjaW5jbHVkZSAidHNmLmgiCisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX3N0YXRlCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNU
X0RFQ0xfdHNmX2ZzZGJfc3RhdGUKK3N0cnVjdCB0c2ZfZnNkYl9zdGF0ZV9zOworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9jb21tYW5kCisjZGVmaW5l
IFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfY29tbWFuZAorc3RydWN0IHRzZl9mc2Ri
X2NvbW1hbmRfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNm
X2ZzZGJfcmVzcG9uc2UKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9y
ZXNwb25zZQorc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX3M7CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX1NUUlVDVF9ERUNMX3VpbnQ4X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1NU
UlVDVF9ERUNMX3VpbnQ4X19hcnJheQorc3RydWN0IHVpbnQ4X19hcnJheV9zOworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9jb21tYW5kX19wdXQKKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9jb21tYW5kX19wdXQKK3N0cnVj
dCB0c2ZfZnNkYl9jb21tYW5kX19wdXRfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVf
U1RSVUNUX0RFQ0xfdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlCisjZGVmaW5lIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlCitzdHJ1Y3QgdHNmX2Zz
ZGJfY29tbWFuZF9fb3V0X3dyaXRlX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NU
UlVDVF9ERUNMX3RzZl9mc2RiX2NvbW1hbmRfX2dldAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX3RzZl9mc2RiX2NvbW1hbmRfX2dldAorc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX2dl
dF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9j
b21tYW5kX19ybQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX2NvbW1h
bmRfX3JtCitzdHJ1Y3QgdHNmX2ZzZGJfY29tbWFuZF9fcm1fczsKKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWQKKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZAorc3Ry
dWN0IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lCisj
ZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X3dlbGNvbWUKK3N0cnVjdCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9zOwor
I2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9E
RUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9uCitzdHJ1Y3Qg
dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fczsKKyNlbmRpZgor
CisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3N5c19lcnJvcgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3IKK3N0cnVjdCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fc3lzX2Vycm9yX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9E
RUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcgorI2RlZmluZSBUU0Zf
REVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJv
cgorc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcl9zOworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9faW5fZGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX2luX2RhdGFfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90
c2ZfZnNkYl9zdGF0ZQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfc3RhdGUK
K3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX3N0YXRlX3MgdHNmX2ZzZGJfc3RhdGVfdDsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kCisjZGVmaW5l
IFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kCit0eXBlZGVmIHN0cnVjdCB0c2Zf
ZnNkYl9jb21tYW5kX3MgdHNmX2ZzZGJfY29tbWFuZF90OworI2VuZGlmCisKKyNpZm5kZWYgVFNG
X0RFRklORV9UWVBFREVGX3RzZl9mc2RiX3Jlc3BvbnNlCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQ
RURFRl90c2ZfZnNkYl9yZXNwb25zZQordHlwZWRlZiBzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2Vf
cyB0c2ZfZnNkYl9yZXNwb25zZV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBF
REVGX3VpbnQ4X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdWludDhfX2FycmF5
Cit0eXBlZGVmIHN0cnVjdCB1aW50OF9fYXJyYXlfcyB1aW50OF9fYXJyYXlfdDsKKyNlbmRpZgor
CisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kX19wdXQKKyNkZWZp
bmUgVFNGX0RFRklORV9UWVBFREVGX3RzZl9mc2RiX2NvbW1hbmRfX3B1dAordHlwZWRlZiBzdHJ1
Y3QgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X3MgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X3Q7CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dy
aXRlCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kX19vdXRfd3Jp
dGUKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9zIHRzZl9mc2Ri
X2NvbW1hbmRfX291dF93cml0ZV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBF
REVGX3RzZl9mc2RiX2NvbW1hbmRfX2dldAorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNm
X2ZzZGJfY29tbWFuZF9fZ2V0Cit0eXBlZGVmIHN0cnVjdCB0c2ZfZnNkYl9jb21tYW5kX19nZXRf
cyB0c2ZfZnNkYl9jb21tYW5kX19nZXRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVf
VFlQRURFRl90c2ZfZnNkYl9jb21tYW5kX19ybQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZf
dHNmX2ZzZGJfY29tbWFuZF9fcm0KK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX3Jt
X3MgdHNmX2ZzZGJfY29tbWFuZF9fcm1fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVf
VFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZAorI2RlZmluZSBUU0ZfREVGSU5FX1RZ
UEVERUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWQKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfdDsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9fd2VsY29tZQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX3dlbGNvbWUKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX193ZWxjb21lX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfdDsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fd2VsY29tZV9fdmVyc2lvbgorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb24KK3R5cGVkZWYgc3RydWN0IHRz
Zl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9uX3MgdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yCisj
ZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lz
X2Vycm9yCit0eXBlZGVmIHN0cnVjdCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vy
cm9yX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl90OworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19w
cm90b19lcnJvcgorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX3Byb3RvX2Vycm9yCit0eXBlZGVmIHN0cnVjdCB0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fcHJvdG9fZXJyb3JfcyB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9f
ZXJyb3JfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9y
ZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGEKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X2luX2RhdGFfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNk
Yl9idWZmZXIKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX3RzZl9mc2RiX2J1ZmZlcgordHlw
ZWRlZiB1aW50OF9fYXJyYXlfdCB0c2ZfZnNkYl9idWZmZXJfdDsKKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfU1RSVUNUX0RFRl91aW50OF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9T
VFJVQ1RfREVGX3VpbnQ4X19hcnJheQorc3RydWN0IHVpbnQ4X19hcnJheV9zIHsKKyAgICB1aW50
OF90ICpkYXRhOworICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfc3RhdGUKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJV
Q1RfREVGX3RzZl9mc2RiX3N0YXRlCitzdHJ1Y3QgdHNmX2ZzZGJfc3RhdGVfcyB7CisgICAgdHNm
X2Nob2ljZV90IHZhbHVlOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNU
X0RFRl90c2ZfZnNkYl9jb21tYW5kX19wdXQKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVG
X3RzZl9mc2RiX2NvbW1hbmRfX3B1dAorc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9zIHsK
KyAgICB0c2ZfYnVmZmVyX3QqIGtleTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X1NUUlVDVF9ERUZfdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlCisjZGVmaW5lIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGUKK3N0cnVjdCB0c2ZfZnNk
Yl9jb21tYW5kX19vdXRfd3JpdGVfcyB7CisgICAgdHNmX2ZzZGJfYnVmZmVyX3QgZGF0YTsKK307
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfY29tbWFu
ZF9fZ2V0CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9jb21tYW5kX19n
ZXQKK3N0cnVjdCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfcyB7CisgICAgdHNmX2J1ZmZlcl90KiBr
ZXk7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2Ri
X2NvbW1hbmRfX3JtCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9jb21t
YW5kX19ybQorc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX3JtX3MgeworICAgIHRzZl9idWZmZXJf
dCoga2V5OworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2Zf
ZnNkYl9jb21tYW5kCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9jb21t
YW5kCitzdHJ1Y3QgdHNmX2ZzZGJfY29tbWFuZF9zIHsKKyAgICB0c2ZfY2hvaWNlX3QgdmFsdWU7
CisgICAgdW5pb24geworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX19wdXRfdCBwdXQ7CisgICAg
ICAgIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV90IG91dF93cml0ZTsKKyAgICAgICAgdHNm
X2ZzZGJfY29tbWFuZF9fZ2V0X3QgZ2V0OworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX19ybV90
IHJtOworICAgIH0gdTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9E
RUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb24KKyNkZWZpbmUg
VFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21l
X192ZXJzaW9uCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3Zl
cnNpb25fcyB7CisgICAgaW50MzJfdCBtYWpvcjsKKyAgICBpbnQzMl90IG1pbm9yOworICAgIGlu
dDMyX3QgcGF0Y2g7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVG
X3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lCisjZGVmaW5lIFRTRl9ERUZJTkVf
U1RSVUNUX0RFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZQorc3RydWN0IHRz
Zl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX3MgeworICAgIGNoYXIqIG5hbWU7Cisg
ICAgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fdCB2ZXJzaW9u
OworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9y
ZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RF
Rl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yCitzdHJ1Y3QgdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9zIHsKKyAgICBjaGFyKiBtc2c7Cit9OworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX19wcm90b19lcnJvcgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX3MgeworICAgIGNoYXIqIG1zZzsKK307CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX2luX2RhdGEKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3Bv
bnNlX19wYXlsb2FkX19pbl9kYXRhCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X2luX2RhdGFfcyB7CisgICAgdHNmX2ZzZGJfYnVmZmVyX3QgZGF0YTsKK307CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWQK
KyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
CitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfcyB7CisgICAgdHNmX2Nob2ljZV90
IHZhbHVlOworICAgIHVuaW9uIHsKKyAgICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X3dlbGNvbWVfdCB3ZWxjb21lOworICAgICAgICB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9f
c3lzX2Vycm9yX3Qgc3lzX2Vycm9yOworICAgICAgICB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9fcHJvdG9fZXJyb3JfdCBwcm90b19lcnJvcjsKKyAgICAgICAgdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX2luX2RhdGFfdCBpbl9kYXRhOworICAgIH0gdTsKK307CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfcmVzcG9uc2UKKyNkZWZpbmUgVFNG
X0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNlCitzdHJ1Y3QgdHNmX2ZzZGJfcmVz
cG9uc2VfcyB7CisgICAgdHNmX2ZzZGJfc3RhdGVfdCBzdGF0ZTsKKyAgICB0c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF90IHBheWxvYWQ7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklO
RV9DSE9JQ0VfREVGU190c2ZfZnNkYl9zdGF0ZQorI2RlZmluZSBUU0ZfREVGSU5FX0NIT0lDRV9E
RUZTX3RzZl9mc2RiX3N0YXRlCisjZGVmaW5lIHRzZl9mc2RiX3N0YXRlX19jbGVhciAwCisjZGVm
aW5lIHRzZl9mc2RiX3N0YXRlX19wdXQgMQorI2RlZmluZSB0c2ZfZnNkYl9zdGF0ZV9fZ2V0IDIK
K3N0YXRpYyBUU0ZfaW5saW5lIGNvbnN0IGNoYXIgKnRzZl9mc2RiX3N0YXRlX190b19zdHIodHNm
X2Nob2ljZV90IHZhbHVlKSB7CisgICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgMDogcmV0
dXJuICJjbGVhciI7CisgICAgY2FzZSAxOiByZXR1cm4gInB1dCI7CisgICAgY2FzZSAyOiByZXR1
cm4gImdldCI7CisgICAgY2FzZSBVSU5UMzJfTUFYOiByZXR1cm4gIjx1bmtub3duPiI7CisgICAg
ZGVmYXVsdDogYWJvcnQoKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X0NIT0lDRV9ERUZTX3RzZl9mc2RiX2NvbW1hbmQKKyNkZWZpbmUgVFNGX0RFRklORV9DSE9JQ0Vf
REVGU190c2ZfZnNkYl9jb21tYW5kCisjZGVmaW5lIHRzZl9mc2RiX2NvbW1hbmRfX3BpbmcgMAor
I2RlZmluZSB0c2ZfZnNkYl9jb21tYW5kX19wdXQgMQorI2RlZmluZSB0c2ZfZnNkYl9jb21tYW5k
X19vdXRfd3JpdGUgMgorI2RlZmluZSB0c2ZfZnNkYl9jb21tYW5kX19vdXRfY29tbWl0IDMKKyNk
ZWZpbmUgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0IDQKKyNkZWZpbmUgdHNmX2ZzZGJfY29tbWFuZF9f
cm0gNQorI2RlZmluZSB0c2ZfZnNkYl9jb21tYW5kX19yZXNldCA2CitzdGF0aWMgVFNGX2lubGlu
ZSBjb25zdCBjaGFyICp0c2ZfZnNkYl9jb21tYW5kX190b19zdHIodHNmX2Nob2ljZV90IHZhbHVl
KSB7CisgICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgMDogcmV0dXJuICJwaW5nIjsKKyAg
ICBjYXNlIDE6IHJldHVybiAicHV0IjsKKyAgICBjYXNlIDI6IHJldHVybiAib3V0X3dyaXRlIjsK
KyAgICBjYXNlIDM6IHJldHVybiAib3V0X2NvbW1pdCI7CisgICAgY2FzZSA0OiByZXR1cm4gImdl
dCI7CisgICAgY2FzZSA1OiByZXR1cm4gInJtIjsKKyAgICBjYXNlIDY6IHJldHVybiAicmVzZXQi
OworICAgIGNhc2UgVUlOVDMyX01BWDogcmV0dXJuICI8dW5rbm93bj4iOworICAgIGRlZmF1bHQ6
IGFib3J0KCk7CisgICAgfQorfQorI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9DSE9JQ0Vf
REVGU190c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZAorI2RlZmluZSBUU0ZfREVGSU5FX0NIT0lD
RV9ERUZTX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkCisjZGVmaW5lIHRzZl9mc2RiX3Jlc3Bv
bnNlX19wYXlsb2FkX19vayAwCisjZGVmaW5lIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193
ZWxjb21lIDEKKyNkZWZpbmUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvciAy
CisjZGVmaW5lIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvciAzCisjZGVm
aW5lIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19ub3RfZm91bmQgNAorI2RlZmluZSB0c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YSA1CisjZGVmaW5lIHRzZl9mc2RiX3Jlc3Bv
bnNlX19wYXlsb2FkX19pbl9lb2YgNgorc3RhdGljIFRTRl9pbmxpbmUgY29uc3QgY2hhciAqdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3RvX3N0cih0c2ZfY2hvaWNlX3QgdmFsdWUpIHsKKyAg
ICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSAwOiByZXR1cm4gIm9rIjsKKyAgICBjYXNlIDE6
IHJldHVybiAid2VsY29tZSI7CisgICAgY2FzZSAyOiByZXR1cm4gInN5c19lcnJvciI7CisgICAg
Y2FzZSAzOiByZXR1cm4gInByb3RvX2Vycm9yIjsKKyAgICBjYXNlIDQ6IHJldHVybiAibm90X2Zv
dW5kIjsKKyAgICBjYXNlIDU6IHJldHVybiAiaW5fZGF0YSI7CisgICAgY2FzZSA2OiByZXR1cm4g
ImluX2VvZiI7CisgICAgY2FzZSBVSU5UMzJfTUFYOiByZXR1cm4gIjx1bmtub3duPiI7CisgICAg
ZGVmYXVsdDogYWJvcnQoKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X0ZVTkNTX3RzZl9mc2RiX2J1ZmZlcgorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2Ri
X2J1ZmZlcgordHNmX3R5cGVfdCAqdHNmX2ZzZGJfYnVmZmVyX19nZXRfdHlwZSh2b2lkKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOwordm9pZCB0c2ZfZnNkYl9idWZmZXJfX2Rlc3RydWN0KHRzZl9m
c2RiX2J1ZmZlcl90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqdHNmX2ZzZGJfYnVmZmVyX19nZXRf
Z2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKnRz
Zl9mc2RiX2J1ZmZlcl9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
c3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX190c2ZfZnNkYl9idWZmZXIo
dHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCB0c2Zf
ZnNkYl9idWZmZXJfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90
IGJ1Zl9pbnN0YW5jZW9mX190c2ZfZnNkYl9idWZmZXIodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0
dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3R5cGUo
KSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqdHNmX2ZzZGJfYnVmZmVyX19n
ZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKHRzZl9m
c2RiX2J1ZmZlcl9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUg
dHNmX2J1ZmZlcl90ICp0c2ZfZnNkYl9idWZmZXJfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZv
aWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbih0c2ZfZnNkYl9i
dWZmZXJfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxp
bmUgdHNmX2ZzZGJfYnVmZmVyX3QgKnRzZl9mc2RiX2J1ZmZlcl9fcGFyc2UodHNmX2J1ZmZlcl90
ICpidWYpIHsgcmV0dXJuICh0c2ZfZnNkYl9idWZmZXJfdCopdHNmX3BhcnNlcl9wYXJzZSh0c2Zf
ZnNkYl9idWZmZXJfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNm
X2ZzZGJfYnVmZmVyX3QgKnRzZl9mc2RiX2J1ZmZlcl9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpi
dWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKHRzZl9mc2RiX2J1ZmZlcl90Kil0c2ZfcGFyc2Vy
X3BhcnNlX2luKHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0K
K3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgdHNmX2ZzZGJfYnVmZmVyX19wYXJzZV9pbnRv
KHRzZl9idWZmZXJfdCAqYnVmLCB0c2ZfZnNkYl9idWZmZXJfdCAqZGF0YSwgdm9pZCAqcmVnaW9u
KSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8odHNmX2ZzZGJfYnVmZmVyX19nZXRfcGFy
c2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCB0c2ZfZnNkYl9idWZmZXJf
X3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNkYl9idWZmZXJfdCAq
ZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9mc2RiX2J1ZmZlcl90ICp0c2ZfZnNk
Yl9idWZmZXJfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK3RzZl9ib29sX3QgdHNmX2ZzZGJfYnVmZmVyX19yZWFkX2ludG8odHNmX3N0
cmVhbV9maWxlX2lucHV0X3QgKmlucCwgdHNmX2ZzZGJfYnVmZmVyX3QgKnJlc3VsdCkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfdHNm
X2ZzZGJfc3RhdGUKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9zdGF0ZQordHNm
X3R5cGVfdCAqdHNmX2ZzZGJfc3RhdGVfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIHRzZl9mc2RiX3N0YXRlX19kZXN0cnVjdCh0
c2ZfZnNkYl9zdGF0ZV90ICpkYXRhKSB7IH0KK3RzZl9nZW5ydHJfdCAqdHNmX2ZzZGJfc3RhdGVf
X2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJf
dCAqdHNmX2ZzZGJfc3RhdGVfX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fdHNmX2ZzZGJfc3Rh
dGUodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCB0
c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29s
X3QgYnVmX2luc3RhbmNlb2ZfX3RzZl9mc2RiX3N0YXRlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJl
dHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCB0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5cGUo
KSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqdHNmX2ZzZGJfc3RhdGVfX2dl
bmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUodHNmX2Zz
ZGJfc3RhdGVfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRz
Zl9idWZmZXJfdCAqdHNmX2ZzZGJfc3RhdGVfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQg
KnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbih0c2ZfZnNkYl9zdGF0
ZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfZnNkYl9zdGF0ZV90ICp0c2ZfZnNkYl9zdGF0ZV9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYp
IHsgcmV0dXJuICh0c2ZfZnNkYl9zdGF0ZV90Kil0c2ZfcGFyc2VyX3BhcnNlKHRzZl9mc2RiX3N0
YXRlX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9mc2RiX3N0
YXRlX3QgKnRzZl9mc2RiX3N0YXRlX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAq
cmVnaW9uKSB7IHJldHVybiAodHNmX2ZzZGJfc3RhdGVfdCopdHNmX3BhcnNlcl9wYXJzZV9pbih0
c2ZfZnNkYl9zdGF0ZV9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0Zf
aW5saW5lIHRzZl9ib29sX3QgdHNmX2ZzZGJfc3RhdGVfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90
ICpidWYsIHRzZl9mc2RiX3N0YXRlX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNm
X3BhcnNlcl9wYXJzZV9pbnRvKHRzZl9mc2RiX3N0YXRlX19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0
YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCB0c2ZfZnNkYl9zdGF0ZV9fd3JpdGUodHNmX3N0cmVh
bV9maWxlX291dHB1dF90ICpvdXQsIHRzZl9mc2RiX3N0YXRlX3QgKmRhdGEpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7Cit0c2ZfZnNkYl9zdGF0ZV90ICp0c2ZfZnNkYl9zdGF0ZV9fcmVhZCh0c2Zf
c3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jv
b2xfdCB0c2ZfZnNkYl9zdGF0ZV9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICpp
bnAsIHRzZl9mc2RiX3N0YXRlX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfdHNmX2ZzZGJfY29tbWFuZAorI2RlZmlu
ZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmQKK3RzZl90eXBlX3QgKnRzZl9mc2Ri
X2NvbW1hbmRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIHRz
Zl9mc2RiX2NvbW1hbmRfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRfdCAqZGF0YSk7Cit0c2Zf
Z2VucnRyX3QgKnRzZl9mc2RiX2NvbW1hbmRfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3BhcnNl
cih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jv
b2xfdCBpbnN0YW5jZW9mX190c2ZfZnNkYl9jb21tYW5kKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0
dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3R5cGUo
KSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX3RzZl9m
c2RiX2NvbW1hbmQodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFu
Y2VvZihidWYsIHRzZl9mc2RiX2NvbW1hbmRfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lu
bGluZSB0c2ZfYnVmZmVyX3QgKnRzZl9mc2RiX2NvbW1hbmRfX2dlbmVyYXRlKHZvaWQgKmRhdGEp
IHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUodHNmX2ZzZGJfY29tbWFuZF9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICp0c2Zf
ZnNkYl9jb21tYW5kX19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0
dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4odHNmX2ZzZGJfY29tbWFuZF9fZ2V0X2dlbmVy
YXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfZnNkYl9jb21t
YW5kX3QgKnRzZl9mc2RiX2NvbW1hbmRfX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVy
biAodHNmX2ZzZGJfY29tbWFuZF90Kil0c2ZfcGFyc2VyX3BhcnNlKHRzZl9mc2RiX2NvbW1hbmRf
X2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2ZzZGJfY29tbWFu
ZF90ICp0c2ZfZnNkYl9jb21tYW5kX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAq
cmVnaW9uKSB7IHJldHVybiAodHNmX2ZzZGJfY29tbWFuZF90Kil0c2ZfcGFyc2VyX3BhcnNlX2lu
KHRzZl9mc2RiX2NvbW1hbmRfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMg
VFNGX2lubGluZSB0c2ZfYm9vbF90IHRzZl9mc2RiX2NvbW1hbmRfX3BhcnNlX2ludG8odHNmX2J1
ZmZlcl90ICpidWYsIHRzZl9mc2RiX2NvbW1hbmRfdCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJl
dHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8odHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3BhcnNlcigp
LCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgdHNmX2ZzZGJfY29tbWFuZF9fd3Jp
dGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIHRzZl9mc2RiX2NvbW1hbmRfdCAqZGF0
YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9mc2RiX2NvbW1hbmRfdCAqdHNmX2ZzZGJf
Y29tbWFuZF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9jb21tYW5kX19yZWFkX2ludG8odHNmX3N0
cmVhbV9maWxlX2lucHV0X3QgKmlucCwgdHNmX2ZzZGJfY29tbWFuZF90ICpyZXN1bHQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX3Rz
Zl9mc2RiX3Jlc3BvbnNlCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfdHNmX2ZzZGJfcmVzcG9u
c2UKK3RzZl90eXBlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOwordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fZGVzdHJ1Y3QodHNmX2Zz
ZGJfcmVzcG9uc2VfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19n
ZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3Qg
KnRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJ
TkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX3RzZl9mc2RiX3Jl
c3BvbnNlKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlw
ZSwgdHNmX2ZzZGJfcmVzcG9uc2VfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX190c2ZfZnNkYl9yZXNwb25zZSh0c2ZfYnVmZmVyX3Qg
KmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgdHNmX2ZzZGJfcmVzcG9u
c2VfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKnRzZl9m
c2RiX3Jlc3BvbnNlX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9y
X2dlbmVyYXRlKHRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9Citz
dGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19nZW5lcmF0
ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2Vu
ZXJhdGVfaW4odHNmX2ZzZGJfcmVzcG9uc2VfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9u
KTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqdHNmX2ZzZGJfcmVz
cG9uc2VfX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAodHNmX2ZzZGJfcmVzcG9u
c2VfdCopdHNmX3BhcnNlcl9wYXJzZSh0c2ZfZnNkYl9yZXNwb25zZV9fZ2V0X3BhcnNlcigpLCBi
dWYpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfZnNkYl9yZXNwb25zZV90ICp0c2ZfZnNkYl9y
ZXNwb25zZV9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1
cm4gKHRzZl9mc2RiX3Jlc3BvbnNlX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4odHNmX2ZzZGJfcmVz
cG9uc2VfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYm9vbF90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVm
LCB0c2ZfZnNkYl9yZXNwb25zZV90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9w
YXJzZXJfcGFyc2VfaW50byh0c2ZfZnNkYl9yZXNwb25zZV9fZ2V0X3BhcnNlcigpLCBidWYsIGRh
dGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3dyaXRlKHRzZl9z
dHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNkYl9yZXNwb25zZV90ICpkYXRhKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOwordHNmX2ZzZGJfcmVzcG9uc2VfdCAqdHNmX2ZzZGJfcmVzcG9u
c2VfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3RzZl9ib29sX3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3JlYWRfaW50byh0c2Zfc3RyZWFt
X2ZpbGVfaW5wdXRfdCAqaW5wLCB0c2ZfZnNkYl9yZXNwb25zZV90ICpyZXN1bHQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX3VpbnQ4
X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3VpbnQ4X19hcnJheQorI2RlZmluZSB1
aW50OF9fYXJyYXlfX2dldF90eXBlIHVpbnQ4X19hcnJheVZYc0dCdlJoVzRGbDliS0FuNkg1MTM1
YUNwMldidGdHcmQ4ZzFwZl9fZ2V0X3R5cGUKKyNkZWZpbmUgdWludDhfX2FycmF5X19kZXN0cnVj
dCB1aW50OF9fYXJyYXlWWHNHQnZSaFc0Rmw5YktBbjZINTEzNWFDcDJXYnRnR3JkOGcxcGZfX2Rl
c3RydWN0Cit0c2ZfdHlwZV90ICp1aW50OF9fYXJyYXlfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7Cit2b2lkIHVpbnQ4X19hcnJheV9fZGVzdHJ1Y3QodWludDhfX2FycmF5
X3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9j
b21tYW5kX19wdXQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9jb21tYW5kX19w
dXQKK3RzZl90eXBlX3QgKnRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fZ2V0X3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X19kZXN0cnVj
dCh0c2ZfZnNkYl9jb21tYW5kX19wdXRfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZQorI2RlZmluZSBUU0ZfREVG
SU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZQordHNmX3R5cGVfdCAqdHNmX2Zz
ZGJfY29tbWFuZF9fb3V0X3dyaXRlX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOwordm9pZCB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2Rlc3RydWN0KHRzZl9mc2Ri
X2NvbW1hbmRfX291dF93cml0ZV90ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfRlVOQ1NfdHNmX2ZzZGJfY29tbWFuZF9fZ2V0CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1Nf
dHNmX2ZzZGJfY29tbWFuZF9fZ2V0Cit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9jb21tYW5kX19nZXRf
X2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIHRzZl9mc2RiX2Nv
bW1hbmRfX2dldF9fZGVzdHJ1Y3QodHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3QgKmRhdGEpOworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9jb21tYW5kX19ybQorI2Rl
ZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmRfX3JtCit0c2ZfdHlwZV90ICp0
c2ZfZnNkYl9jb21tYW5kX19ybV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3ZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRf
X3JtX3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9f
Z2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX3QgKmRh
dGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fd2VsY29tZQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkX193ZWxjb21lCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fd2VsY29tZV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3ZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2Rlc3RydWN0KHRzZl9m
c2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9f
dmVyc2lvbgorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX193ZWxjb21lX192ZXJzaW9uCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X3dlbGNvbWVfX3ZlcnNpb25fX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193
ZWxjb21lX192ZXJzaW9uX3QgKmRhdGEpIHsgfQorI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklO
RV9GVU5DU190c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yCisjZGVmaW5lIFRT
Rl9ERUZJTkVfRlVOQ1NfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcgordHNm
X3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9fZ2V0X3R5cGUo
dm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3N5c19lcnJvcl9fZGVzdHJ1Y3QodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5
c19lcnJvcl90ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yCisjZGVmaW5lIFRTRl9ERUZJTkVf
RlVOQ1NfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yCit0c2ZfdHlwZV90
ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX2dldF90eXBlKHZvaWQp
IFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X19wcm90b19lcnJvcl9fZGVzdHJ1Y3QodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3Rv
X2Vycm9yX3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNT
X3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhCit0c2ZfdHlwZV90ICp0c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfX2Rl
c3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX3QgKmRhdGEpOworI2Vu
ZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfTsKKyNlbmRpZgorCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2dlbmVyYXRvci5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZ2VuZXJhdG9yLmMJKG5v
bmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9n
ZW5lcmF0b3IuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQ
IFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImdwYy5oIgorI2luY2x1ZGUgPHVuaXN0
ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3RzZl9nZW5y
dHJfdCAqdHNmX2dlbmVyYXRvcl9jcmVhdGUodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHRzZl9n
ZW5ydHJfdCAqcmVzdWx0OworICAgIGdwY19wcm90b190ICpwcm90bzsKKyAgICAKKyAgICBwcm90
bz10c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRlX2dlbmVyYXRvcih0eXBlKTsKKyAgICBpZiAocHJv
dG89PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGdwY19j
b2RlX2dlbl9kZWJ1ZygiZ2VuZXJhdG9yIixwcm90byk7CisgICAgCisgICAgcmVzdWx0PW1hbGxv
YyhzaXplb2YodHNmX2dlbnJ0cl90KSk7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9nZW5ydHJfdCIpOworICAgICAg
ICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KyAgICAKKyAgICByZXN1bHQtPnR5cGU9dHNmX3R5cGVfZHVwKHR5cGUpOworICAgIHJlc3VsdC0+
Z2VuZXJhdG9yPQorCWdwY19wcm9ncmFtX2Zyb21fcHJvdG8ocHJvdG8pOworICAgIAorICAgIGdw
Y19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAKKyAgICBpZiAocmVzdWx0LT5nZW5lcmF0b3I9
PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCB0c2ZfZ2VuZXJhdG9yX2Rl
c3Ryb3kodHNmX2dlbnJ0cl90ICpnZW4pIHsKKyAgICBncGNfcHJvZ3JhbV9kZXN0cm95KGdlbi0+
Z2VuZXJhdG9yKTsKKyAgICB0c2ZfdHlwZV9kZXN0cm95KGdlbi0+dHlwZSk7CisgICAgZnJlZShn
ZW4pOworfQorCit0c2ZfYnVmZmVyX3QgKnRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUodHNmX2dlbnJ0
cl90ICpnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0
YSkgeworICAgIGdwY19jZWxsX3QgYXJnc1syXTsKKyAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZlcjsK
KyAgICAKKyAgICBidWZmZXIgPSB0c2ZfYnVmZmVyX2NyZWF0ZV9iYXJlKCk7CisgICAgaWYgKGJ1
ZmZlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBh
cmdzWzBdID0gKGdwY19jZWxsX3QpYnVmZmVyOworICAgIGFyZ3NbMV0gPSAoZ3BjX2NlbGxfdClk
YXRhOworICAgIGlmICghZ3BjX3Byb2dyYW1fcnVuKGdlbi0+Z2VuZXJhdG9yLCBOVUxMLCBhcmdz
KSkgeworICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3lfYmFyZShidWZmZXIpOworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgYnVmZmVyLT50eXBlID0gdHNmX3R5cGVfZHVw
KGdlbi0+dHlwZSk7CisgICAgCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordHNmX2J1ZmZlcl90
ICp0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2luKHRzZl9nZW5ydHJfdCAqZ2VuLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgZ3BjX2NlbGxf
dCBhcmdzWzJdOworICAgIHRzZl9idWZmZXJfdCAqYnVmZmVyOworICAgIAorICAgIGlmIChyZWdp
b24gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZShnZW4s
IGRhdGEpOworICAgIH0KKyAgICAKKyAgICBidWZmZXIgPSB0c2ZfYnVmZmVyX2NyZWF0ZV9iYXJl
X2luKHJlZ2lvbik7CisgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBO
VUxMOworICAgIH0KKyAgICAKKyAgICBhcmdzWzBdID0gKGdwY19jZWxsX3QpYnVmZmVyOworICAg
IGFyZ3NbMV0gPSAoZ3BjX2NlbGxfdClkYXRhOworICAgIGlmICghZ3BjX3Byb2dyYW1fcnVuKGdl
bi0+Z2VuZXJhdG9yLCByZWdpb24sIGFyZ3MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICBpZiAoIXRzZl9yZWdpb25fYWRkX2NiYWNrKHJlZ2lvbiwgKHRzZl9yZWdp
b25fY2JhY2tfdCl0c2ZfdHlwZV9kZXN0cm95LCBnZW4tPnR5cGUpKSB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKyAgICBidWZmZXItPnR5cGUgPSB0c2ZfdHlwZV9kdXAoZ2VuLT50eXBl
KTsKKyAgICAKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit0c2ZfYm9vbF90IHRzZl9nZW5lcmF0
b3JfZ2VuZXJhdGVfZXhpc3RpbmdfYnVmZmVyKHRzZl9nZW5ydHJfdCAqZ2VuLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVy
X3QgKmJ1ZikgeworICAgIGdwY19jZWxsX3QgYXJnc1syXTsKKyAgICAKKyAgICBhcmdzWzBdID0g
KGdwY19jZWxsX3QpYnVmOworICAgIGFyZ3NbMV0gPSAoZ3BjX2NlbGxfdClkYXRhOworICAgIGlm
ICghZ3BjX3Byb2dyYW1fcnVuKGdlbi0+Z2VuZXJhdG9yLCBOVUxMLCBhcmdzKSkKKyAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICAKKyAgICBidWYtPnR5cGUgPSB0c2ZfdHlwZV9kdXAoZ2Vu
LT50eXBlKTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZ3BjX2NvZGVfZ2VuLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9ncGNfY29kZV9nZW4uYwko
bm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X2dwY19jb2RlX2dlbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzE1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAxNCwgMjAxNSBGaWxpcCBQ
aXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImdwYy5o
IgorCisjaW5jbHVkZSA8bWF0aC5oPgorCisjZGVmaW5lIEMoZXhwKSBkbyB7ICAgICAgICAgXAor
ICAgIGlmICghKGV4cCkpIHsgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsg
ICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSgwKQorCisjZGVmaW5l
IGFwcGVuZCBncGNfcHJvdG9fYXBwZW5kCisjZGVmaW5lIGFwcGVuZF90YWJsZXNldF9sb2NhbF90
b19maWVsZCBcCisgICAgZ3BjX3Byb3RvX2FwcGVuZF90YWJsZXNldF9sb2NhbF90b19maWVsZAor
I2RlZmluZSBhcHBlbmRfdGFibGVzZXRfZmllbGRfdG9fZmllbGQgXAorICAgIGdwY19wcm90b19h
cHBlbmRfdGFibGVzZXRfZmllbGRfdG9fZmllbGQKKyNkZWZpbmUgYXBwZW5kX3RhYmxlanVtcF9s
b2NhbCBncGNfcHJvdG9fYXBwZW5kX3RhYmxlanVtcF9sb2NhbAorI2RlZmluZSBhcHBlbmRfdGFi
bGVqdW1wX2ZpZWxkIGdwY19wcm90b19hcHBlbmRfdGFibGVqdW1wX2ZpZWxkCisKK3N0YXRpYyB0
c2ZfYm9vbF90IGdlbmVyYXRlX3NpemVfY2FsYyhncGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IG9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IGxhYmVsKSB7CisgICAgdWlu
dDMyX3QgaTsKKyAgICB1aW50MzJfdCBudW1fYml0cyA9IDA7CisgICAgZ3BjX2NlbGxfdCBsYWJl
bF9vZmZzZXQ7CisgICAgZ3BjX2NlbGxfdCBkb25lX2xhYmVsLCByZWFsbHlfZG9uZV9sYWJlbDsK
KyAgICBncGNfY2VsbF90ICp0YXJnZXRzOworICAgIHRzZl9ib29sX3QgcmVzdWx0OworICAgIAor
ICAgIGdwY19jZWxsX3Qgc3RhdGljX3NpemUgPSB0c2ZfdHlwZV9nZXRfc3RhdGljX3NpemUodHlw
ZSk7CisgICAgaWYgKHN0YXRpY19zaXplICE9IFVJTlQzMl9NQVgpIHsKKyAgICAgICAgaWYgKHN0
YXRpY19zaXplICE9IDApIHsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9JTkNf
U0laRSwgc3RhdGljX3NpemUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJu
IHRzZl90cnVlOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29kZSkgewor
ICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9U
U0ZfSU5URUdFUl9TSVpFLCBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfTE9ORzoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1NJWkUsIG9m
ZnNldCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6CisgICAgICAg
IGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsg
KytpKSB7CisgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0gdHNmX3N0cnVjdF90eXBl
X2dldF9lbGVtZW50KHR5cGUsIGkpOworICAgICAgICAgICAgaWYgKG4tPnR5cGUtPmtpbmRfY29k
ZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICAgICAgKytudW1fYml0czsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMoZ2VuZXJhdGVf
c2l6ZV9jYWxjKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+dHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIG4tPm9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKSk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKG51bV9iaXRzICE9IDApIHsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAor
ICAgICAgICAgICAgICAgICAgICAgR1BDX0lfSU5DX1NJWkUsCisgICAgICAgICAgICAgICAgICAg
ICAoZ3BjX2NlbGxfdCkoKG51bV9iaXRzICsgNykgPj4gMykpKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgaWYgKHR5cGUtPnUuYS5l
bGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworICAgICAgICAgICAgQyhh
cHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9JTkNfU0laRV9BUlJBWV9M
RU4sCisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2
ZV92b2lkX2FycmF5X3QsIGxlbikpKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlLT51LmEuZWxl
bWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgQyhhcHBl
bmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9JTkNfU0laRV9CSVRWRUNUT1Is
CisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0YXRpY19zaXplID0gdHNmX3R5cGVfZ2V0X3N0YXRpY19zaXplKHR5cGUtPnUuYS5l
bGVtZW50X3R5cGUpOworICAgICAgICAgICAgaWYgKHN0YXRpY19zaXplID09IFVJTlQzMl9NQVgp
IHsKKyAgICAgICAgICAgICAgICBncGNfY2VsbF90IGxvb3BfbGFiZWwgPSBsYWJlbCsrOworICAg
ICAgICAgICAgICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHUENfSV9JTkNfU0laRV9BUlJBWV9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSkpOworICAgICAgICAgICAgICAgIEMo
YXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX1BVU0hfUFRSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0aXZl
X2FycmF5X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGEpKSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR1BDX0lfUkVQVVNIX01VTEFERF9QVFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGUtPnUuYS5lbGVtZW50X3R5cGUpKSk7CisgICAgICAgICAgICAgICAg
QyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPTVBGQUlMSlVNUCwgZG9uZV9sYWJlbCkpOworICAgICAg
ICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgbG9vcF9sYWJlbCkpOworICAg
ICAgICAgICAgICAgIEMoZ2VuZXJhdGVfc2l6ZV9jYWxjKHByb3RvLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0FERENPTVBKVU1QLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9vcF9sYWJlbCkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9M
QUJFTCwgZG9uZV9sYWJlbCkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9UV09fUE9QKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEMoYXBw
ZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0lOQ19TSVpFX0FSUkFZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAoZ3BjX2NlbGxfdClzdGF0aWNfc2l6ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0NIT0lDRToKKyAgICAgICAgdHNmX2Fz
c2VydCh0c2ZfY2hvaWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpIHx8CisgICAgICAgICAgICAg
ICAgICAgKHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpID49IDI1NiAmJgor
ICAgICAgICAgICAgICAgICAgICAhdHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpKTsKKyAg
ICAgICAgaWYgKHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpID49IDI1Nikg
eworICAgICAgICAgICAgaWYgKHR5cGUtPnUuaC5jaG9pY2VfYXNfZnVsbF93b3JkKSB7CisgICAg
ICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0lOQ19TSVpFLCA0KSk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9UU0Zf
VU5TSUdORURfUExVUzFfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0
eXBlLT51LmgudmFsdWVfb2Zmc2V0KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSU5DX1NJWkUsIDEpKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAodHNmX2Nob2ljZV90eXBlX2hhc19ub25fdm9pZCh0eXBlKSkgewor
ICAgICAgICAgICAgbGFiZWxfb2Zmc2V0ID0gbGFiZWw7CisgICAgICAgICAgICBsYWJlbCArPSB0
c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsKKyAgICAgICAgICAgIGRvbmVf
bGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgcmVhbGx5X2RvbmVfbGFiZWwgPSBsYWJlbCsr
OworICAgICAgICAgICAgdGFyZ2V0cz1tYWxsb2Moc2l6ZW9mKGdwY19jZWxsX3QpKgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlw
ZSkpOworICAgICAgICAgICAgaWYgKHRhcmdldHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgYXJyYXkgb2YgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImdwY19jZWxsX3QiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRz
Zl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICB0YXJnZXRzW2ldID0gbGFiZWxfb2Zmc2V0ICsgaTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJlc3VsdD1hcHBlbmRfdGFibGVqdW1wX2ZpZWxkKAorICAgICAgICAgICAgICAgIHBy
b3RvLAorICAgICAgICAgICAgICAgIG9mZnNldCArIHR5cGUtPnUuaC52YWx1ZV9vZmZzZXQsCisg
ICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSksCisg
ICAgICAgICAgICAgICAgdGFyZ2V0cyk7CisgICAgICAgICAgICBmcmVlKHRhcmdldHMpOworICAg
ICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAs
IHJlYWxseV9kb25lX2xhYmVsKSk7IC8qIGZvciB1bmtub3duIHZhbHVlcyAqLworICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUp
OyArK2kpIHsKKyAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0gdHNmX2Nob2lj
ZV90eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHBy
b3RvLCBHUENfSV9MQUJFTCwgbGFiZWxfb2Zmc2V0ICsgaSkpOworICAgICAgICAgICAgICAgIGlm
ICh0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lzX2luX3BsYWNlKHR5cGUpKSB7CisgICAgICAgICAg
ICAgICAgICAgIEMoZ2VuZXJhdGVfc2l6ZV9jYWxjKHByb3RvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmguZGF0YV9vZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogY2Fubm90IG1vdmUgdGhpcyBwdXNo
IGFib3ZlIHRoZSB0YWJsZWp1bXAgc2luY2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHRh
YmxlanVtcCB1c2VzIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaywgYW5kCisgICAg
ICAgICAgICAgICAgICAgICAgIEkgZG9uJ3QgZmVlbCBsaWtlIGFkZGluZyBhIHNlY29uZCB0YWJs
ZWp1bXAganVzdCB0bworICAgICAgICAgICAgICAgICAgICAgICBnZXQgYXJvdW5kIHRoYXQuICov
CisgICAgICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9QVVNIX1BUUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgdHlwZS0+dS5oLmRhdGFfb2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgICAgIEMoZ2VuZXJhdGVfc2l6ZV9jYWxjKHByb3RvLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT50eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgZG9uZV9sYWJlbCkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLyogaWYgaXQgaXMgaW4gcGxhY2UsIHlvdSBnZXQgdHdvIGxh
YmVscy4uLiAgb2ggd2VsbC4gKi8KKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9M
QUJFTCwgZG9uZV9sYWJlbCkpOworICAgICAgICAgICAgaWYgKCF0c2ZfbmF0aXZlX2Nob2ljZV90
eXBlX2lzX2luX3BsYWNlKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX1BPUCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0xBQkVMLCByZWFsbHlfZG9uZV9sYWJlbCkpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVFNGX1RLX1NUUklORzoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX1NUUklOR19TSVpFLCBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfQU5ZOgorICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQU5ZX1NJWkUsIG9mZnNldCkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICB0c2ZfYWJvcnQoIlR5cGVz
IG90aGVyIHRoYW4gc3RydWN0LCBhcnJheSwgYW5kIGNob2ljZSAiCisgICAgICAgICAgICAgICAg
ICAic2hvdWxkIGhhdmUgc3RhdGljIHNpemUhIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90IGdlbmVyYXRl
X2dlbmVyYXRvcihncGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfY2VsbF90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfY2VsbF90IGxhYmVsKSB7CisgICAgdWludDMyX3QgaTsKKyAgICB1aW50
MzJfdCBiaXQgPSAwOworICAgIGdwY19jZWxsX3QgZG9uZV9sYWJlbCwgcmVhbGx5X2RvbmVfbGFi
ZWw7CisgICAgCisgICAgc3dpdGNoICh0eXBlLT5raW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9U
S19WT0lEOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQ4OgorICAgIGNhc2Ug
VFNGX1RLX1VJTlQ4OgorICAgICAgICBDKGFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAgICAg
R1BDX0lfQ09QWV9IVE9OQ19JTkNEU1QsCisgICAgICAgICAgICAgICAgIG9mZnNldCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQxNjoKKyAgICBjYXNlIFRTRl9US19VSU5U
MTY6CisgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICBHUENfSV9DT1BZ
X0hUT05TX0lOQ0RTVCwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVFNGX1RLX0lOVDMyOgorICAgIGNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAg
ICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgIEdQQ19JX0NPUFlfSFRPTkxfSU5D
RFNULAorICAgICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUU0ZfVEtfSU5UNjQ6CisgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICBDKGFwcGVu
ZChwcm90bywKKyAgICAgICAgICAgICAgICAgR1BDX0lfQ09QWV9IVE9OTExfSU5DRFNULAorICAg
ICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtf
RkxPQVQ6CisgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICBHUENfSV9D
T1BZX0hUT05GX0lOQ0RTVCwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVFNGX1RLX0RPVUJMRToKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sCisg
ICAgICAgICAgICAgICAgIEdQQ19JX0NPUFlfSFRPTkRfSU5DRFNULAorICAgICAgICAgICAgICAg
ICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQklUOgorICAgICAg
ICBDKGFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAgICAgR1BDX0lfQklUX1dSSVRFLAorICAg
ICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtf
SU5URUdFUjoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9JTlRFR0VSX1dSSVRF
LCBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKyAgICAg
ICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1dSSVRFLCBvZmZzZXQpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAg
ICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbiA9IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudCh0
eXBlLCBpKTsKKyAgICAgICAgICAgIGlmIChuLT50eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJ
VCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQyhnZW5lcmF0ZV9nZW5lcmF0b3IocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0
ICsgbi0+b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwpKTsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90eXBlX2dldF9u
dW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAq
biA9IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudCh0eXBlLCBpKTsKKyAgICAgICAgICAgIGlm
IChuLT50eXBlLT5raW5kX2NvZGUgIT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAg
ICAgICAgICAgICAgICAgICBHUENfSV9CSVRfTUFTS19XUklURSwKKyAgICAgICAgICAgICAgICAg
ICAgIGJpdCwKKyAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIG4tPm9mZnNldCkpOworICAg
ICAgICAgICAgKytiaXQ7CisgICAgICAgICAgICBpZiAoYml0ID09IDgpIHsKKyAgICAgICAgICAg
ICAgICBiaXQgPSAwOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9TS0lQ
LCAxKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJpdCkgeworICAg
ICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NLSVAsIDEpKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgaWYgKHR5cGUtPnUu
YS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworICAgICAgICAgICAg
QyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9BUlJBWV9MRU5fV1JJ
VEVfRklFTEQsCisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNm
X25hdGl2ZV92b2lkX2FycmF5X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGVuKSkpOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUtPnUuYS5lbGVtZW50X3R5
cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICBDKGFwcGVuZChwcm90
bywKKyAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0JJVFZFQ1RPUl9XUklURSwKKyAgICAgICAg
ICAgICAgICAgICAgIG9mZnNldCkpOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUtPnUuYS5lbGVt
ZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVUlOVDggfHwKKyAgICAgICAgICAgICAgICAg
ICB0eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0lOVDgKKyNpZm5k
ZWYgTkVFRF9JTlRfQ09OVkVSU0lPTgorICAgICAgICAgICAgICAgICAgIHx8IHRzZl90eXBlX2tp
bmRfaXNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT51LmEuZWxlbWVudF90eXBl
LT5raW5kX2NvZGUpCisjZW5kaWYKKyNpZm5kZWYgTkVFRF9GTE9BVF9DT05WRVJTSU9OCisgICAg
ICAgICAgICAgICAgICAgfHwgdHNmX3R5cGVfa2luZF9pc19mbG9hdCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlKQorI2VuZGlmCisgICAg
ICAgICAgICApIHsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAg
ICAgICAgR1BDX0lfQllURV9BUlJBWV9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlLT51LmEuZWxlbWVudF90eXBlKSkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgZ3BjX2NlbGxfdCBsb29wX2xhYmVsID0gbGFiZWwrKzsKKyAg
ICAgICAgICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9BUlJBWV9M
RU5fV1JJVEVfRklFTEQsCisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0
b2YodHNmX25hdGl2ZV9hcnJheV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxlbikpKTsKKworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAg
ICAgICAgICAgICAgICBHUENfSV9QVVNIX1BUUiwKKyAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkpKTsKKyAgICAgICAgICAgIEMoYXBwZW5kKHBy
b3RvLAorICAgICAgICAgICAgICAgICAgICAgR1BDX0lfUkVQVVNIX01VTEFERF9QVFIsCisgICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV9hcnJheV90
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiksCisgICAg
ICAgICAgICAgICAgICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKyAgICAgICAgICAgIEMoYXBw
ZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgR1BDX0lfQ09NUEZBSUxKVU1QLAorICAg
ICAgICAgICAgICAgICAgICAgZG9uZV9sYWJlbCkpOworICAgICAgICAgICAgQyhhcHBlbmQocHJv
dG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9MQUJFTCwKKyAgICAgICAgICAgICAgICAg
ICAgIGxvb3BfbGFiZWwpKTsKKyAgICAgICAgICAgIEMoZ2VuZXJhdGVfZ2VuZXJhdG9yKHByb3Rv
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRfdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisg
ICAgICAgICAgICAgICAgICAgICBHUENfSV9BRERDT01QSlVNUCwKKyAgICAgICAgICAgICAgICAg
ICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlLT51LmEuZWxlbWVudF90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgIGxvb3BfbGFiZWwp
KTsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgR1BD
X0lfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICBkb25lX2xhYmVsKSk7CisgICAgICAgICAg
ICBDKGFwcGVuZChwcm90byxHUENfSV9UV09fUE9QKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAgICAgICBpZiAodHNmX2Nob2ljZV90eXBl
X2dldF9udW1fZWxlbWVudHModHlwZSkgPj0gMjU2KSB7CisgICAgICAgICAgICBpZiAodHlwZS0+
dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpIHsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHUENfSV9DT1BZX0hUT05MX0lOQ0RTVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmgudmFsdWVfb2Zmc2V0KSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX1RTRl9VTlNJR05FRF9QTFVTMV9XUklURSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmgudmFsdWVfb2Zmc2V0
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDKGFwcGVu
ZChwcm90bywKKyAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0NPUFlfSFRPTkNIT0lDRV9UT19V
SThfSU5DRFNULAorICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgdHlwZS0+dS5oLnZhbHVl
X29mZnNldCkpOworICAgICAgICB9CisgICAgICAgIGlmICh0c2ZfY2hvaWNlX3R5cGVfaGFzX25v
bl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICBncGNfY2VsbF90ICp0YXJnZXRzOworICAgICAg
ICAgICAgZ3BjX2NlbGxfdCBsYWJlbF9vZmZzZXQ7CisgICAgICAgICAgICB0c2ZfYm9vbF90IHJl
c3VsdDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGxhYmVsX29mZnNldCA9IGxhYmVs
OworICAgICAgICAgICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMo
dHlwZSk7CisgICAgICAgICAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKyAgICAgICAgICAgIHJl
YWxseV9kb25lX2xhYmVsID0gbGFiZWwrKzsKKyAgICAgICAgICAgIHRhcmdldHMgPSBtYWxsb2Mo
c2l6ZW9mKGdwY19jZWxsX3QpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2No
b2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSkpOworICAgICAgICAgICAgaWYgKHRhcmdl
dHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBt
YWxsb2MgYXJyYXkgb2YgZ3BjX2NlbGxfdCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2No
b2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgICAg
IHRhcmdldHNbaV0gPSBsYWJlbF9vZmZzZXQgKyBpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlanVtcF9maWVsZCgKKyAgICAgICAgICAgICAgICBwcm90
bywKKyAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmgudmFsdWVfb2Zmc2V0LAorICAg
ICAgICAgICAgICAgIHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpLAorICAg
ICAgICAgICAgICAgIHRhcmdldHMpOworICAgICAgICAgICAgZnJlZSh0YXJnZXRzKTsKKyAgICAg
ICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8qIGZvciB1bmtu
b3duIHZhbHVlcyAqLworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAsIHJl
YWxseV9kb25lX2xhYmVsKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgewor
ICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2ZfY2hvaWNlX3R5cGVfZ2V0
X2VsZW1lbnQodHlwZSwgaSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19J
X0xBQkVMLCBsYWJlbF9vZmZzZXQgKyBpKSk7CisgICAgICAgICAgICAgICAgaWYgKHRzZl9uYXRp
dmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxhY2UodHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
QyhnZW5lcmF0ZV9nZW5lcmF0b3IocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9mZnNldCArIHR5cGUtPnUuaC5kYXRhX29mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUFVTSF9QVFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIHR5cGUtPnUuaC5kYXRhX29mZnNl
dCkpOworICAgICAgICAgICAgICAgICAgICBDKGdlbmVyYXRlX2dlbmVyYXRvcihwcm90bywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+dHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAsIGRvbmVfbGFiZWwpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgZG9uZV9s
YWJlbCkpOworICAgICAgICAgICAgaWYgKCF0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lzX2luX3Bs
YWNlKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BPUCkp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVM
LCByZWFsbHlfZG9uZV9sYWJlbCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVFNGX1RLX1NUUklORzoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NUUklOR19X
UklURSwgb2Zmc2V0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FOWToKKyAg
ICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0FOWV9XUklURSwgb2Zmc2V0KSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHRzZl9hYm9ydCgiQmFkIGtpbmQgY29kZSEi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30K
KworZ3BjX3Byb3RvX3QgKnRzZl9ncGNfY29kZV9nZW5fZ2VuZXJhdGVfZ2VuZXJhdG9yKHRzZl90
eXBlX3QgKnR5cGUpIHsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG87CisgICAgCisgICAgaWYgKCF0
c2ZfbmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9tYXBwaW5nKHR5cGUpKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfTk9fU1RSVUNUX01BUCwgTlVMTCk7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICAKKyAgICBwcm90bz1ncGNfcHJvdG9fY3JlYXRlKDIpOworICAgIGlmIChw
cm90byA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIWdlbmVyYXRlX3NpemVfY2FsYyhwcm90bywgdHlwZSwgMCwgMCkpIHsKKyAgICAgICAgZ3Bj
X3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAg
CisgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX01BTExPQ19CVUYpKSB7CisgICAgICAgIGdw
Y19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IAorICAgIGlmICh0c2ZfdHlwZV9pc19keW5hbWljKHR5cGUpKSB7CisgICAgICAgIGlmICghYXBw
ZW5kKHByb3RvLCBHUENfSV9NQUtFX09VVF9NQVApKSB7CisgICAgICAgICAgICBncGNfcHJvdG9f
ZGVzdHJveShwcm90byk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBpZiAoIWdlbmVyYXRlX2dlbmVyYXRvcihwcm90bywgdHlwZSwgMCwgMCkp
IHsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWModHlwZSkpIHsKKyAg
ICAgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX1JFVFVSTl9PTkVfSU5JVF9CVUZfV0lUSF9U
WVBFU19GUk9NX09VVF9NQVApKSB7CisgICAgICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90
byk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmICghYXBwZW5kKHByb3RvLCBHUENfSV9SRVRVUk5fT05FX0lOSVRfQlVGX1dJVEhf
RU1QVFlfVFlQRVMpKSB7CisgICAgICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7Cisg
ICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcHJvdG87Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90IGdlbmVyYXRlX3NldF96ZXJvX3B0cihn
cGNfcHJvdG9fdCAqcHJvdG8sCisJCQkJCWdwY19jZWxsX3Qgb2Zmc2V0KSB7CisgICAgaWYgKHNp
emVvZih2b2lkKikgPT0gNCkgeworCUMoYXBwZW5kKHByb3RvLCBHUENfSV9TRVRfTCwgb2Zmc2V0
LCAwKSk7CisgICAgfSBlbHNlIGlmIChzaXplb2Yodm9pZCopID09IDgpIHsKKwlDKGFwcGVuZChw
cm90bywgR1BDX0lfU0VUX0wsIG9mZnNldCwgMCkpOworCUMoYXBwZW5kKHByb3RvLCBHUENfSV9T
RVRfTCwgb2Zmc2V0KzQsIDApKTsKKyAgICB9IGVsc2UgeworCXRzZl9hYm9ydCgid2VpcmQgcG9p
bnRlciBzaXplIik7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIHRz
Zl9ib29sX3QgZ2VuZXJhdGVfc2V0X2RlZmF1bHQoZ3BjX3Byb3RvX3QgKnByb3RvLAorCQkJCSAg
ICAgICB0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisJCQkJICAgICAgIGdwY19jZWxsX3Qgb2Zmc2V0
KSB7CisgICAgLyogZmlsbCBpbiBkZWZhdWx0IHZhbHVlcyAqLworICAgIHVuc2lnbmVkIGk7CisJ
CisgICAgc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RLX0lO
VDg6CisgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NFVF9D
LCBvZmZzZXQsIDApKTsKKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQxNjoKKyAgICBjYXNl
IFRTRl9US19VSU5UMTY6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NFVF9TLCBvZmZzZXQsIDAp
KTsKKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAgICBjYXNlIFRTRl9US19VSU5U
MzI6CisgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwlDKGFwcGVuZChwcm90bywgR1BDX0lfU0VU
X0wsIG9mZnNldCwgMCkpOworCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgIGNh
c2UgVFNGX1RLX1VJTlQ2NDoKKyAgICBjYXNlIFRTRl9US19MT05HOgorCUMoYXBwZW5kKHByb3Rv
LCBHUENfSV9TRVRfTCwgb2Zmc2V0ICsgMCwgMCkpOworCUMoYXBwZW5kKHByb3RvLCBHUENfSV9T
RVRfTCwgb2Zmc2V0ICsgNCwgMCkpOworCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0ZMT0FUOiB7
CisJdW5pb24geworCSAgICBmbG9hdCBmOworCSAgICB1aW50MzJfdCBpOworCX0gdTsKKwl1LmYg
PSAoZmxvYXQpbG9nKC0xLik7IC8qIE5hTiAqLworCUMoYXBwZW5kKHByb3RvLCBHUENfSV9TRVRf
TCwgb2Zmc2V0LCB1LmkpKTsKKwlicmVhazsKKyAgICB9CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxF
OiB7CisJdW5pb24geworCSAgICBkb3VibGUgZDsKKwkgICAgdWludDMyX3QgaVsyXTsKKwl9IHU7
CisJdS5kID0gKGRvdWJsZSlsb2coLTEuKTsgLyogTmFOICovCisJQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX1NFVF9MLCBvZmZzZXQgKyAwLCB1LmlbMF0pKTsKKwlDKGFwcGVuZChwcm90bywgR1BDX0lf
U0VUX0wsIG9mZnNldCArIDQsIHUuaVsxXSkpOworCWJyZWFrOworICAgIH0KKyAgICBjYXNlIFRT
Rl9US19CSVQ6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NFVF9DLCBvZmZzZXQsIDApKTsKKwli
cmVhazsKKyAgICBjYXNlIFRTRl9US19TVFJJTkc6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NU
UklOR19TRVRFTVBUWSwgb2Zmc2V0KSk7CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQVJSQVk6
CisJc3dpdGNoIChkZXN0X3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSkgeworCWNh
c2UgVFNGX1RLX1ZPSUQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9TRVRfTCwKKwkJICAg
ICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2FycmF5X3QsIGxlbiksCisJ
CSAgICAgMCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9TRVRfTCwKKwkJICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25h
dGl2ZV9iaXR2ZWN0b3JfdCwgbnVtX2JpdHMpLAorCQkgICAgIDApKTsKKwkgICAgQyhnZW5lcmF0
ZV9zZXRfemVyb19wdHIocHJvdG8sCisJCQkJICAgIG9mZnNldCArIHRzZl9vZmZzZXRvZih0c2Zf
bmF0aXZlX2JpdHZlY3Rvcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJpdHMpKSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJ
ICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9TRVRfTCwKKwkJICAgICBvZmZzZXQgKyB0c2Zfb2Zm
c2V0b2YodHNmX25hdGl2ZV9hcnJheV90LCBsZW4pLAorCQkgICAgIDApKTsKKwkgICAgQyhnZW5l
cmF0ZV9zZXRfemVyb19wdHIocHJvdG8sCisJCQkJICAgIG9mZnNldCArIHRzZl9vZmZzZXRvZih0
c2ZfbmF0aXZlX2FycmF5X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YSkpKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOwor
ICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKwlmb3IgKGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90eXBl
X2dldF9udW1fZWxlbWVudHMoZGVzdF90eXBlKTsgKytpKSB7CisJICAgIHRzZl9uYW1lZF90eXBl
X3QgKm4gPSB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQoZGVzdF90eXBlLCBpKTsKKwkgICAg
QyhnZW5lcmF0ZV9zZXRfZGVmYXVsdChwcm90bywgbi0+dHlwZSwKKwkJCQkgICBvZmZzZXQgKyBu
LT5vZmZzZXQpKTsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorCUMoYXBw
ZW5kKHByb3RvLCBHUENfSV9TRVRfTCwKKwkJIChncGNfY2VsbF90KShvZmZzZXQgKyBkZXN0X3R5
cGUtPnUuaC52YWx1ZV9vZmZzZXQpLAorCQkgKGdwY19jZWxsX3QpVUlOVDMyX01BWCkpOworCWJy
ZWFrOworICAgIGNhc2UgVFNGX1RLX0FOWToKKwl0c2ZfYWJvcnQoIm5vdCBpbXBsZW1lbnRlZCIp
OworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJdHNmX2Fib3J0KCJiYWQga2luZCBjb2RlIik7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIHRzZl9ib29sX3Qg
Z2VuZXJhdGVfc2V0X2RlZmF1bHRfY29waWVyKGdwY19wcm90b190ICpwcm90bywKKwkJCQkJICAg
ICAgdHNmX3R5cGVfdCAqZGVzdF90eXBlLAorCQkJCQkgICAgICBncGNfY2VsbF90IG9mZnNldCkg
eworICAgIC8qIHRoaXMgY2FuIGJlIG9wdGltaXplZC4uLiAqLworCisgICAgQyhhcHBlbmQocHJv
dG8sIEdQQ19JX0RVUF9QVFJfMk5EKSk7CisgICAgQyhnZW5lcmF0ZV9zZXRfZGVmYXVsdChwcm90
bywgZGVzdF90eXBlLCBvZmZzZXQpKTsKKyAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUE9QKSk7
CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCitzdGF0aWMgdHNmX2Jvb2xfdCBnZW5l
cmF0ZV9wYXJzZXIoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRzZl90eXBlX3QgKmRlc3RfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfdHlwZV90ICpzcmNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfY2VsbF90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncGNfY2VsbF90IGxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRzZl9ib29sX3QgZG9fYm91bmRzX2NoZWNrKSB7CisgICAgdWludDMyX3QgaSwgYml0ID0g
MCwgbnVtX2JpdHMgPSAwOworICAgIGdwY19jZWxsX3QgbG9vcF9sYWJlbCwgZG9uZV9sYWJlbCwg
cmVhbGx5X2RvbmVfbGFiZWwsIGxhYmVsX29mZnNldDsKKyAgICBncGNfY2VsbF90ICp0YXJnZXRz
OworICAgIHVpbnQzMl90IHN0YXRpY19zaXplOworICAgIHRzZl9ib29sX3QgcmVzdWx0OworICAg
IHRzZl9ib29sX3QgaW5zdGFuY2VvZjsKKyAgICAKKyAgICBzdGF0aWNfc2l6ZSA9IHRzZl90eXBl
X2dldF9zdGF0aWNfc2l6ZShzcmNfdHlwZSk7CisKKyAgICBpZiAoZG9fYm91bmRzX2NoZWNrICYm
IHN0YXRpY19zaXplICE9IFVJTlQzMl9NQVgpIHsKKyAgICAgICAgaWYgKHN0YXRpY19zaXplID4g
MCkgeworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0JDLCBzdGF0aWNfc2l6ZSkp
OworICAgICAgICB9CisgICAgICAgIGRvX2JvdW5kc19jaGVjayA9IHRzZl9mYWxzZTsKKyAgICB9
CisgICAgCisgICAgaW5zdGFuY2VvZiA9IHRzZl90eXBlX2luc3RhbmNlb2Yoc3JjX3R5cGUsIGRl
c3RfdHlwZSk7CisgICAgCisgICAgaWYgKCFpbnN0YW5jZW9mKSB7CisJQyhnZW5lcmF0ZV9zZXRf
ZGVmYXVsdChwcm90bywgZGVzdF90eXBlLCBvZmZzZXQpKTsKKyAgICB9CisgICAgCisgICAgaWYg
KGRlc3RfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lEIHx8ICFpbnN0YW5jZW9mKSB7CisJ
LyogdGhpcyBpcyB0aGUgc2tpcCBwYXJzZXIuICovCisKKyAgICAgICAgdHNmX3R5cGVfdCAqdHlw
ZSA9IHNyY190eXBlOyAgLyogbWFrZXMgdGhpbmdzIHNpbXBsZXIgc2luY2Ugd2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogd29uJ3QgcmVmZXIgdG8gZGVzdF90eXBl
IGF0IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcG9pbnQu
ICovCisgICAgICAgIAorICAgICAgICBpZiAoc3RhdGljX3NpemUgIT0gVUlOVDMyX01BWCkgewor
ICAgICAgICAgICAgaWYgKHN0YXRpY19zaXplID4gMCkgeworICAgICAgICAgICAgICAgIEMoYXBw
ZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX1NLSVAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgKGdwY19jZWxsX3Qpc3RhdGljX3NpemUpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgLyogaW50ZXJlc3Rpbmcgb2JzZXJ2YXRpb246IGZyb20gaGVyZSBvbiwgZG9fYm91bmRz
X2NoZWNrIG11c3QgYmUgdHJ1ZS4KKyAgICAgICAgICogYmVjYXVzZSBpZiBkb19ib3VuZHNfY2hl
Y2sgd2FzIGZhbHNlLCB0aGVuIHRoYXQgbWVhbnMgdGhhdCBhIGJvdW5kcworICAgICAgICAgKiBj
aGVjayB3YXMgcG9zc2libGUsIHdoaWNoIG1lYW5zIGluIHR1cm4gdGhhdCBvdXIgc2l6ZSBpcyBz
dGF0aWNhbGx5CisgICAgICAgICAqIGtub3duLiAqLworICAgICAgICB0c2ZfYXNzZXJ0KGRvX2Jv
dW5kc19jaGVjayk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29kZSkg
eworICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorICAgICAgICAgICAgQyhhcHBlbmQocHJv
dG8sIEdQQ19JX1RTRl9JTlRFR0VSX1NLSVApKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFRTRl9US19MT05HOgorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RT
Rl9MT05HX1NLSVApKTsKKyAgICAgICAgICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1NUUlVDVDoK
KwkgICAgZm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5
cGUpOyArK2kpIHsKKwkJdHNmX25hbWVkX3R5cGVfdCAqbiA9IHRzZl9zdHJ1Y3RfdHlwZV9nZXRf
ZWxlbWVudCh0eXBlLCBpKTsKKwkJaWYgKG4tPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQklU
KSB7CisJCSAgICBudW1fYml0cysrOworCQkgICAgY29udGludWU7CisJCX0KKwkJQyhnZW5lcmF0
ZV9wYXJzZXIocHJvdG8sCisJCQkJICB0c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX1ZPSUQpLAorCQkJ
CSAgbi0+dHlwZSwKKwkJCQkgIDAsCisJCQkJICBsYWJlbCwKKwkJCQkgIHRzZl90cnVlKSk7CisJ
ICAgIH0KKwkgICAgaWYgKG51bV9iaXRzKSB7CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19J
X1NLSVAsCisJCQkgKGdwY19jZWxsX3QpKChudW1fYml0cyArIDcpID4+IDMpKSk7CisJICAgIH0K
KwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfQVJSQVk6CisJICAgIGlmICh0eXBlLT51LmEuZWxl
bWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX1ZPSUQpIHsKKwkJQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0FSUkFZX0xFTl9TS0lQKSk7CisJICAgIH0gZWxzZSBpZiAodHlwZS0+dS5hLmVsZW1l
bnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKwkJQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX0JJVFZFQ1RPUl9TS0lQKSk7CisJICAgIH0gZWxzZSB7CisJCXN0YXRpY19zaXplID0KKwkJ
ICAgIHRzZl90eXBlX2dldF9zdGF0aWNfc2l6ZSh0eXBlLT51LmEuZWxlbWVudF90eXBlKTsKKwkJ
aWYgKHN0YXRpY19zaXplID09IFVJTlQzMl9NQVgpIHsKKwkJICAgIEMoYXBwZW5kKHByb3RvLCBH
UENfSV9BUlJBWV9MRU5fUkVBRF9MT0NBTCkpOworCisJCSAgICBsb29wX2xhYmVsID0gbGFiZWwr
KzsKKwkJICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgICAgICAgICAg
CisJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfWkVST0pVTVAsIGRvbmVfbGFiZWwpKTsKKwkJ
ICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgbG9vcF9sYWJlbCkpOworCQkgICAgQyhn
ZW5lcmF0ZV9wYXJzZXIocHJvdG8sCisJCQkJICAgICAgdHNmX3R5cGVfY3JlYXRlKFRTRl9US19W
T0lEKSwKKwkJCQkgICAgICB0eXBlLT51LmEuZWxlbWVudF90eXBlLAorCQkJCSAgICAgIDAsCisJ
CQkJICAgICAgbGFiZWwsCisJCQkJICAgICAgdHNmX3RydWUpKTsKKwkJICAgIEMoYXBwZW5kKHBy
b3RvLCBHUENfSV9ERUNDT01QSlVNUCwgbG9vcF9sYWJlbCkpOworCQkgICAgQyhhcHBlbmQocHJv
dG8sIEdQQ19JX0xBQkVMLCBkb25lX2xhYmVsKSk7CisJCSAgICBDKGFwcGVuZChwcm90bywgR1BD
X0lfUE9QKSk7CisJCX0gZWxzZSB7CisJCSAgICBDKGFwcGVuZChwcm90bywKKwkJCSAgICAgR1BD
X0lfQVJSQVlfU0tJUCwKKwkJCSAgICAgKGdwY19jZWxsX3Qpc3RhdGljX3NpemUpKTsKKwkJfQor
CSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0NIT0lDRToKKwkgICAgdHNmX2Fzc2Vy
dCh0c2ZfY2hvaWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICh0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSA+PSAyNTYgJiYK
KyAgICAgICAgICAgICAgICAgICAgICAgICF0eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29yZCkp
OworICAgICAgICAgICAgICAgIAorCSAgICBpZiAodHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxl
bWVudHModHlwZSkgPj0gMjU2KSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUtPnUuaC5jaG9p
Y2VfYXNfZnVsbF93b3JkKSB7CisgICAgICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBH
UENfSV9CQywgNCkpOworICAgICAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lf
UkVBREwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBp
ZiAodHNmX2Nob2ljZV90eXBlX2hhc19ub25fdm9pZCh0eXBlKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9VTlNJR05FRF9SRUFEX1NVQjEpKTsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9UU0ZfVU5TSUdORURfU0tJUCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorCSAgICB9IGVsc2UgeworCQlDKGFwcGVuZChwcm90
bywgR1BDX0lfQkMsIDEpKTsKKwkJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1JFQURDX1RPX0NIT0lD
RSkpOworCSAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0c2ZfY2hvaWNlX3R5
cGVfaGFzX25vbl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgbGFiZWxfb2Zmc2V0ID0g
bGFiZWw7CisgICAgICAgICAgICAgICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9udW1f
ZWxlbWVudHModHlwZSk7CisgICAgICAgICAgICAgICAgZG9uZV9sYWJlbCA9IGxhYmVsKys7Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0cz1tYWxsb2Moc2l6ZW9mKGdwY19jZWxsX3QpICoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50
cyh0eXBlKSk7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldHMgPT0gTlVMTCkgeworICAgICAg
ICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGFycmF5IG9mICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3BjX2NlbGxfdCIpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVu
dHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICB0YXJnZXRzW2ldID0gbGFiZWxf
b2Zmc2V0ICsgaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
YXBwZW5kX3RhYmxlanVtcF9sb2NhbCgKKyAgICAgICAgICAgICAgICAgICAgcHJvdG8sCisgICAg
ICAgICAgICAgICAgICAgIHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpLAor
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRzKTsKKyAgICAgICAgICAgICAgICBmcmVlKHRhcmdl
dHMpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIC8qIGZvciB1bmtub3duIChkZWZhdWx0KSB2YWx1ZXMgKi8KKyAgICAg
ICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgZG9uZV9sYWJlbCkpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfY2hvaWNl
X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
IHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQodHlwZSwg
aSk7CisgICAgICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgbGFi
ZWxfb2Zmc2V0ICsgaSkpOworICAgICAgICAgICAgICAgICAgICBDKGdlbmVyYXRlX3BhcnNlcihw
cm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfY3Jl
YXRlKFRTRl9US19WT0lEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bi0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl90cnVlKSk7CisgICAgICAgICAgICAgICAgICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9KVU1QLCBkb25lX2xhYmVsKSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgZG9uZV9sYWJl
bCkpOworICAgICAgICAgICAgfQorCSAgICBicmVhazsKKwljYXNlIFRTRl9US19TVFJJTkc6CisJ
ICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9TVFJJTkdfU0tJUCkpOworCSAgICBicmVhazsKKwlj
YXNlIFRTRl9US19BTlk6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9BTllfU0tJUCkpOwor
CSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQoIlRoZXJlIGFwcGVhcnMgdG8g
YmUgYSBraW5kIGNvZGUgdGhhdCB3ZSBkb24ndCAiCisJCSAgICAgICJrbm93IGFib3V0Iik7CisJ
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHNmX3RydWU7
CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoc3JjX3R5cGUtPmtpbmRfY29kZSkgeworICAgIGNh
c2UgVFNGX1RLX1ZPSUQ6CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKwlzd2l0Y2gg
KGRlc3RfdHlwZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtfQklUOgorCSAgICBDKGFwcGVu
ZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSENfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFw
cGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19TX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorCWNhc2UgVFNGX1RLX0lOVDMyOgorICAg
ICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09Q
WV9OVE9IQ19UT19MX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0Zf
VEtfVUlOVDY0OgorCWNhc2UgVFNGX1RLX0lOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19MT05H
OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19MTF9FX0lOQ1NSQywg
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVu
ZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19GX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lf
Q09QWV9OVE9IQ19UT19EX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVs
dDoKKwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAi
CisJCSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlw
ZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNG
X1RLX1VJTlQ4OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9U
S19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0JJVF9JTkNT
UkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNG
X1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19JTkNTUkMs
IG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMTY6CisJY2FzZSBUU0Zf
VEtfSU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX1NfWl9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6CisJY2Fz
ZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBw
ZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0xfWl9JTkNTUkMsIG9mZnNldCkpOworCSAg
ICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UNjQ6CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAg
ICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05U
T0hDX1RPX0xMX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtf
RkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0ZfWl9JTkNT
UkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19ET1VCTEU6CisJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0RfWl9JTkNTUkMsIG9mZnNldCkpOwor
CSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0
X3R5cGUgY29tYmluYXRpb247ICIKKwkJICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5
ICIKKwkJICAgICAgInRzZl90eXBlX2luc3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJ
YnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRf
Y29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NP
UFlfTlRPSFNfVE9fQklUX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNG
X1RLX0lOVDg6CisJY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9DT1BZX05UT0hTX1RPX0NfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBU
U0ZfVEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywg
R1BDX0lfQ09QWV9OVE9IU19JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRT
Rl9US19VSU5UMzI6CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lO
VEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0xfRV9JTkNT
UkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UNjQ6CisJY2FzZSBU
U0ZfVEtfSU5UNjQ6CisgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5kKHBy
b3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0xMX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZ
X05UT0hTX1RPX0ZfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9U
S19ET1VCTEU6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0RfRV9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQo
IkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRpb247ICIKKwkJICAgICAgInNob3VsZCBo
YXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRzZl90eXBlX2luc3RhbmNlb2YoKSIpOwor
CSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDE2OgorCXN3aXRj
aCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMoYXBw
ZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0JJVF9JTkNTUkMsIG9mZnNldCkpOworCSAg
ICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBD
KGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IU19UT19DX0lOQ1NSQywgb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQxNjoKKwljYXNlIFRTRl9US19JTlQxNjoKKwkg
ICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSFNfSU5DU1JDLCBvZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorCWNhc2UgVFNGX1RLX0lOVDMyOgorICAg
ICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09Q
WV9OVE9IU19UT19MX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0Zf
VEtfVUlOVDY0OgorCWNhc2UgVFNGX1RLX0lOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19MT05H
OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IU19UT19MTF9aX0lOQ1NSQywg
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVu
ZChwcm90bywgR1BDX0lfQ09QWV9OVE9IU19UT19GX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lf
Q09QWV9OVE9IU19UT19EX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVs
dDoKKwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAi
CisJCSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlw
ZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNG
X1RLX0lOVDMyOgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9U
S19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMX1RPX0JJVF9JTkNT
UkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNG
X1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITF9UT19DX0lO
Q1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQxNjoKKwljYXNl
IFRTRl9US19JTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExfVE9f
U19JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6CisJ
Y2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKwljYXNlIFRTRl9US19JTlQ2NDoKKyAgICAgICAg
Y2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExf
VE9fTExfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9B
VDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExfVE9fRl9FX0lOQ1NSQywg
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBl
bmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExfVE9fRF9FX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlw
ZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgor
CQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVh
azsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29k
ZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlf
TlRPSExfVE9fQklUX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RL
X0lOVDg6CisJY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9D
T1BZX05UT0hMX1RPX0NfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0Zf
VEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BD
X0lfQ09QWV9OVE9ITF9UT19TX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2Ug
VFNGX1RLX1VJTlQzMjoKKwljYXNlIFRTRl9US19JTlQzMjoKKyAgICAgICAgY2FzZSBUU0ZfVEtf
SU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExfSU5DU1JDLCBv
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorCWNhc2UgVFNGX1RL
X0lOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywg
R1BDX0lfQ09QWV9OVE9ITF9UT19MTF9aX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOwor
CWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9I
TF9UT19GX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9V
QkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITF9UT19EX1pfSU5DU1JD
LCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdHNmX2Fib3J0KCJCYWQg
c3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAgICAgICJzaG91bGQgaGF2ZSBi
ZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAg
YnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorCXN3aXRjaCAoZGVz
dF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHBy
b3RvLCBHUENfSV9DT1BZX05UT0hMTF9UT19CSVRfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBl
bmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX1RPX0NfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBD
KGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITExfVE9fU19JTkNTUkMsIG9mZnNldCkpOwor
CSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6CisJY2FzZSBUU0ZfVEtfSU5UMzI6Cisg
ICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9D
T1BZX05UT0hMTF9UT19MX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNG
X1RLX1VJTlQ2NDoKKwljYXNlIFRTRl9US19JTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9O
RzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX0lOQ1NSQywgb2Zmc2V0
KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90
bywgR1BDX0lfQ09QWV9OVE9ITExfVE9fRl9FX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFr
OworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlf
TlRPSExMX1RPX0RfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZhdWx0Ogor
CSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRpb247ICIKKwkJ
ICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRzZl90eXBlX2lu
c3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtf
VUlOVDY0OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19C
SVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMTF9UT19CSVRfSU5DU1JD
LCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9U
S19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX1RPX0NfSU5D
U1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCWNhc2Ug
VFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITExfVE9f
U19JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6CisJ
Y2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMTF9UT19MX0lOQ1NSQywgb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKwljYXNlIFRTRl9US19JTlQ2NDoKKyAg
ICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlf
TlRPSExMX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FU
OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITExfVE9fRl9aX0lOQ1NSQywg
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBl
bmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX1RPX0RfWl9JTkNTUkMsIG9mZnNldCkpOworCSAg
ICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5
cGUgY29tYmluYXRpb247ICIKKwkJICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIK
KwkJICAgICAgInRzZl90eXBlX2luc3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJYnJl
YWs7CisgICAgY2FzZSBUU0ZfVEtfRkxPQVQ6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29k
ZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlf
TlRPSEZfVE9fQklUX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RL
X0lOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hGX1RPX0NfRV9JTkNT
UkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSEZfVE9fQ19aX0lOQ1NSQywgb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BD
X0lfQ09QWV9OVE9IRl9UT19TX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2Fz
ZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRl9U
T19TX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMzI6
CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9DT1BZX05UT0hGX1RPX0xfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNl
IFRTRl9US19VSU5UMzI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hGX1RP
X0xfWl9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ2NDoK
KyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NP
UFlfTlRPSEZfVE9fTExfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRT
Rl9US19VSU5UNjQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hGX1RPX0xM
X1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJ
ICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hGX0lOQ1NSQywgb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX0NPUFlfTlRPSEZfVE9fRF9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZh
dWx0OgorCSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRpb247
ICIKKwkJICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRzZl90
eXBlX2luc3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfRE9VQkxFOgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRT
Rl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hEX1RPX0JJVF9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCSAgICBD
KGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19DX0VfSU5DU1JDLCBvZmZzZXQpKTsK
KwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLCBH
UENfSV9DT1BZX05UT0hEX1RPX0NfWl9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlj
YXNlIFRTRl9US19JTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSERf
VE9fU19FX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQx
NjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSERfVE9fU19aX0lOQ1NSQywg
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgorICAgICAgICBjYXNl
IFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9U
T19MX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDMy
OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JDLCBv
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAgICAgIGNhc2Ug
VFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hEX1RPX0xM
X0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDY0Ogor
CSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19MTF9aX0lOQ1NSQywgb2Zm
c2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChw
cm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19GX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFr
OworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlf
TlRPSERfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdHNm
X2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAgICAgICJz
aG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0YW5jZW9m
KCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6
CisgICAgICAgIHRzZl9hc3NlcnQoZG9fYm91bmRzX2NoZWNrKTsKKwlzd2l0Y2ggKGRlc3RfdHlw
ZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtfQklUOgorCSAgICBDKGFwcGVuZChwcm90bywg
R1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19CSVQsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlj
YXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90
bywgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19DLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChw
cm90bywgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7
CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNl
IFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfVFNGX0lOVEVHRVJf
UkVBRCwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2Ug
VFNGX1RLX1VJTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQo
cHJvdG8sIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fTEwsIG9mZnNldCkpOworCSAgICBicmVh
azsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9J
TlRFR0VSX1JFQURfVE9fRiwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RP
VUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fRCwg
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNy
Y190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVl
biBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJy
ZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19MT05HOgorICAgICAgICB0c2ZfYXNz
ZXJ0KGRvX2JvdW5kc19jaGVjayk7CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgewor
CWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JF
QURfVE9fQklULCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwlj
YXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JF
QURfVE9fQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCWNh
c2UgVFNGX1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JF
QURfVE9fUywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgorCWNh
c2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fTCwgb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAgICAg
Y2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JF
QUQsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fRiwgb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RT
Rl9MT05HX1JFQURfVE9fRCwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAg
IHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAg
ICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFu
Y2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19CSVQ6
CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0lOVDg6CisJ
Y2FzZSBUU0ZfVEtfVUlOVDg6CisJY2FzZSBUU0ZfVEtfQklUOgorCSAgICBDKGFwcGVuZChwcm90
bywgR1BDX0lfQklUX1JFQUQsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19J
TlQxNjoKKwljYXNlIFRTRl9US19VSU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9C
SVRfUkVBRF9UT19TLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMzI6
CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCSAg
ICBDKGFwcGVuZChwcm90bywgR1BDX0lfQklUX1JFQURfVE9fTCwgb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAgICAg
Y2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0JJVF9SRUFEX1RP
X0xMLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9CSVRfUkVBRF9UT19GLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7
CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQklUX1JF
QURfVE9fRCwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9y
dCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxk
IGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7
CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6CisJaWYg
KGRlc3RfdHlwZS0+dS5zLmNvbnN0cnVjdG9yICE9IE5VTEwpIHsKKwkgICAgQyhhcHBlbmQocHJv
dG8sIEdQQ19JX0NBTEwsCisJCSAgICAgb2Zmc2V0LAorCQkgICAgIGRlc3RfdHlwZS0+dS5zLmNv
bnN0cnVjdG9yKSk7CisJfQorCWlmIChkZXN0X3R5cGUtPnUucy5wcmVfZGVzdHJ1Y3RvciAhPSBO
VUxMKSB7CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9BRERfQ0JBQ0ssCisJCSAgICAgb2Zm
c2V0LAorCQkgICAgIGRlc3RfdHlwZS0+dS5zLnByZV9kZXN0cnVjdG9yKSk7CisJfQorCisJZm9y
IChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRlc3RfdHlwZSk7
ICsraSkgeworCSAgICB0c2ZfbmFtZWRfdHlwZV90ICpkbiA9IHRzZl9zdHJ1Y3RfdHlwZV9nZXRf
ZWxlbWVudChkZXN0X3R5cGUsIGkpOworCSAgICBpZiAodHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9k
ZShzcmNfdHlwZSwgZG4tPm5hbWUpID09IE5VTEwpIHsKKwkJQyhnZW5lcmF0ZV9zZXRfZGVmYXVs
dChwcm90bywgZG4tPnR5cGUsIG9mZnNldCArIGRuLT5vZmZzZXQpKTsKKwkgICAgfQorCX0KKwlm
b3IgKGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUp
OyArK2kpIHsKKwkgICAgdHNmX25hbWVkX3R5cGVfdCAqc24gPSB0c2Zfc3RydWN0X3R5cGVfZ2V0
X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCSAgICB0c2ZfbmFtZWRfdHlwZV90ICpkbjsKKwkgICAg
aWYgKHNuLT50eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworCQludW1fYml0cysrOwor
CQljb250aW51ZTsKKwkgICAgfQorCSAgICBkbiA9IHRzZl9zdHJ1Y3RfdHlwZV9maW5kX25vZGUo
ZGVzdF90eXBlLCBzbi0+bmFtZSk7CisJICAgIGlmIChkbiA9PSBOVUxMKSB7CisJCS8qIHNraXAg
Ki8KKwkJQyhnZW5lcmF0ZV9wYXJzZXIocHJvdG8sCisJCQkJICB0c2ZfdHlwZV9jcmVhdGUoVFNG
X1RLX1ZPSUQpLAorCQkJCSAgc24tPnR5cGUsCisJCQkJICAwLAorCQkJCSAgbGFiZWwsCisJCQkJ
ICBkb19ib3VuZHNfY2hlY2spKTsKKwkgICAgfSBlbHNlIHsKKwkJLyogcmVhZCBpdCAqLworCQlD
KGdlbmVyYXRlX3BhcnNlcihwcm90bywKKwkJCQkgIGRuLT50eXBlLAorCQkJCSAgc24tPnR5cGUs
CisJCQkJICBvZmZzZXQgKyBkbi0+b2Zmc2V0LAorCQkJCSAgbGFiZWwsCisJCQkJICBkb19ib3Vu
ZHNfY2hlY2spKTsKKwkgICAgfQorCX0KKyAgICAgICAgICAgIAorCWlmIChudW1fYml0cykgewor
CSAgICBpZiAoZG9fYm91bmRzX2NoZWNrKSB7CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19J
X0JDLAorCQkJIChncGNfY2VsbF90KSgobnVtX2JpdHMgKyA3KSA+PiAzKSkpOworCSAgICB9Cisg
ICAgICAgICAgICAgICAgCisJICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVfZ2V0
X251bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2ZfbmFtZWRfdHlwZV90ICpzbiA9
CisJCSAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCQl0c2Zf
bmFtZWRfdHlwZV90ICpkbjsKKwkJaWYgKHNuLT50eXBlLT5raW5kX2NvZGUgIT0gVFNGX1RLX0JJ
VCkgeworCQkgICAgY29udGludWU7CisJCX0KKwkJZG4gPSB0c2Zfc3RydWN0X3R5cGVfZmluZF9u
b2RlKGRlc3RfdHlwZSwgc24tPm5hbWUpOworCQlpZiAoZG4gIT0gTlVMTCkgeworCQkgICAgc3dp
dGNoIChkbi0+dHlwZS0+a2luZF9jb2RlKSB7CisJCSAgICBjYXNlIFRTRl9US19WT0lEOgorCQkJ
YnJlYWs7CisJCSAgICBjYXNlIFRTRl9US19CSVQ6CisJCSAgICBjYXNlIFRTRl9US19JTlQ4Ogor
CQkgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisJCQlDKGFwcGVuZChwcm90bywKKwkJCQkgR1BDX0lf
QklUX01BU0tfUkVBRCwKKwkJCQkgYml0LAorCQkJCSBvZmZzZXQgKyBkbi0+b2Zmc2V0KSk7CisJ
CQlicmVhazsKKwkJICAgIGNhc2UgVFNGX1RLX0lOVDE2OgorCQkgICAgY2FzZSBUU0ZfVEtfVUlO
VDE2OgorCQkJQyhhcHBlbmQocHJvdG8sCisJCQkJIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fUywK
KwkJCQkgYml0LAorCQkJCSBvZmZzZXQgKyBkbi0+b2Zmc2V0KSk7CisJCQlicmVhazsKKwkJICAg
IGNhc2UgVFNGX1RLX0lOVDMyOgorCQkgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCQkJQyhhcHBlbmQocHJvdG8sCisJCQkJ
IEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fTCwKKwkJCQkgYml0LAorCQkJCSBvZmZzZXQgKyBkbi0+
b2Zmc2V0KSk7CisJCQlicmVhazsKKwkJICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorCQkgICAgY2Fz
ZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICAgICAgICAgICAgICBjYXNlIFRTRl9US19MT05HOgor
CQkJQyhhcHBlbmQocHJvdG8sCisJCQkJIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fTEwsCisJCQkJ
IGJpdCwKKwkJCQkgb2Zmc2V0ICsgZG4tPm9mZnNldCkpOworCQkJYnJlYWs7CisJCSAgICBjYXNl
IFRTRl9US19GTE9BVDoKKwkJCUMoYXBwZW5kKHByb3RvLAorCQkJCSBHUENfSV9CSVRfTUFTS19S
RUFEX1RPX0YsCisJCQkJIGJpdCwKKwkJCQkgb2Zmc2V0ICsgZG4tPm9mZnNldCkpOworCQkJYnJl
YWs7CisJCSAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJCQlDKGFwcGVuZChwcm90bywKKwkJCQkg
R1BDX0lfQklUX01BU0tfUkVBRF9UT19ELAorCQkJCSBiaXQsCisJCQkJIG9mZnNldCArIGRuLT5v
ZmZzZXQpKTsKKwkJCWJyZWFrOworCQkgICAgZGVmYXVsdDoKKwkJCXRzZl9hYm9ydCgiQmFkIHNy
Y190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkJCSAgInNob3VsZCBoYXZlIGJlZW4g
Y2F1Z2h0IGJ5ICIKKwkJCQkgICJ0c2ZfdHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkJCWJyZWFrOwor
CQkgICAgfQorCQl9CisJCSsrYml0OworCQlpZiAoYml0ID09IDgpIHsKKwkJICAgIGJpdCA9IDA7
CisJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfU0tJUCwgMSkpOworCQl9CisJICAgIH0KKwkg
ICAgaWYgKGJpdCkgeworCQlDKGFwcGVuZChwcm90bywgR1BDX0lfU0tJUCwgMSkpOworCSAgICB9
CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorCWlmIChkZXN0X3R5cGUtPnUu
YS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworCSAgICBDKGFwcGVu
ZChwcm90bywKKwkJICAgICBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRCwKKwkJICAgICBvZmZz
ZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2FycmF5X3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSkpOworICAgICAgICAgICAgICAgIAor
CSAgICBpZiAoc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtf
QklUKSB7CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0JJVFZFQ1RPUl9CQ19BTkRfU0tJ
UF9GSUVMRCwKKwkJCSBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2FycmF5
X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbikp
KTsKKwkgICAgfSBlbHNlIGlmIChzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2Rl
CisJCSAgICAgICA9PSBUU0ZfVEtfVk9JRCkgeworCQkvKiBub3RoaW5nIHRvIGRvICovCisJICAg
IH0gZWxzZSB7CisJCXN0YXRpY19zaXplID0KKwkJICAgIHRzZl90eXBlX2dldF9zdGF0aWNfc2l6
ZShzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSk7CisJCWlmIChzdGF0aWNfc2l6ZSA9PSBVSU5U
MzJfTUFYKSB7CisJCSAgICBsb29wX2xhYmVsID0gbGFiZWwrKzsKKwkJICAgIGRvbmVfbGFiZWwg
PSBsYWJlbCsrOworICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgICBDKGFwcGVuZChwcm90
bywKKwkJCSAgICAgR1BDX0lfUFVTSF9WQUwsCisJCQkgICAgIG9mZnNldCArIHRzZl9vZmZzZXRv
Zih0c2ZfbmF0aXZlX3ZvaWRfYXJyYXlfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxlbikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAor
CQkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1pFUk9KVU1QLCBkb25lX2xhYmVsKSk7CisJCSAg
ICBDKGFwcGVuZChwcm90bywgR1BDX0lfTEFCRUwsIGxvb3BfbGFiZWwpKTsKKwkJICAgIEMoZ2Vu
ZXJhdGVfcGFyc2VyKHByb3RvLAorCQkJCSAgICAgIHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfVk9J
RCksCisJCQkJICAgICAgc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisJCQkJICAgICAgMCwK
KwkJCQkgICAgICBsYWJlbCwKKwkJCQkgICAgICB0c2ZfdHJ1ZSkpOworCQkgICAgQyhhcHBlbmQo
cHJvdG8sIEdQQ19JX0RFQ0NPTVBKVU1QLCBsb29wX2xhYmVsKSk7CisJCSAgICBDKGFwcGVuZChw
cm90bywgR1BDX0lfTEFCRUwsIGRvbmVfbGFiZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IAorCQkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BPUCkpOworCQl9IGVsc2UgeworCQkgICAg
QyhhcHBlbmQocHJvdG8sCisJCQkgICAgIEdQQ19JX0FSUkFZX0JDX0FORF9TS0lQX0ZJRUxELAor
CQkJICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2FycmF5X3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pLAor
CQkJICAgICBzdGF0aWNfc2l6ZSkpOworCQl9CisJICAgIH0KKwl9IGVsc2UgaWYgKGRlc3RfdHlw
ZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKwkgICAgc3dp
dGNoIChzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlKSB7CisJICAgIGNhc2Ug
VFNGX1RLX0JJVDoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9SX1JFQUQs
CisJCQkgb2Zmc2V0KSk7CisJCWJyZWFrOworCSAgICBjYXNlIFRTRl9US19VSU5UODoKKwkgICAg
Y2FzZSBUU0ZfVEtfSU5UODoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9S
X1JFQURfRlJPTV9DLAorCQkJIG9mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtf
VUlOVDE2OgorCSAgICBjYXNlIFRTRl9US19JTlQxNjoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkg
R1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9TLAorCQkJIG9mZnNldCkpOworCQlicmVhazsKKwkg
ICAgY2FzZSBUU0ZfVEtfVUlOVDMyOgorCSAgICBjYXNlIFRTRl9US19JTlQzMjoKKwkJQyhhcHBl
bmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9MLAorCQkJIG9mZnNldCkp
OworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorCSAgICBjYXNlIFRTRl9US19J
TlQ2NDoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9M
TCwKKwkJCSBvZmZzZXQpKTsKKwkJYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRTRl9US19JTlRF
R0VSOgorICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fVFNGX0lOVEVHRVJfQVJSQVksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFRTRl9US19MT05HOgorICAgICAgICAgICAgICAgIEMoYXBwZW5kKHBy
b3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01f
VFNGX0xPTkdfQVJSQVksCisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0ZMT0FUOgorCQlDKGFwcGVuZChw
cm90bywKKwkJCSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0YsCisJCQkgb2Zmc2V0KSk7CisJ
CWJyZWFrOworCSAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJ
IEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fRCwKKwkJCSBvZmZzZXQpKTsKKwkJYnJlYWs7CisJ
ICAgIGRlZmF1bHQ6CisJCXRzZl9hYm9ydCgib2RkIGNhc2UiKTsKKwkJYnJlYWs7CisJICAgIH0K
Kwl9IGVsc2UgaWYgKHNyY190eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNG
X1RLX0JJVCkgeworCSAgICBzd2l0Y2ggKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2lu
ZF9jb2RlKSB7CisJICAgIGNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBjYXNlIFRTRl9US19JTlQ4
OgorCQlDKGFwcGVuZChwcm90bywKKwkJCSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19DLAorCQkJ
IG9mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBjYXNl
IFRTRl9US19JTlQxNjoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9SX1JF
QURfVE9fUywKKwkJCSBvZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX1VJTlQz
MjoKKwkgICAgY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgICAgICBjYXNlIFRTRl9US19JTlRF
R0VSOgorCQlDKGFwcGVuZChwcm90bywKKwkJCSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19MLAor
CQkJIG9mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorCSAgICBj
YXNlIFRTRl9US19JTlQ2NDoKKyAgICAgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJCUMoYXBw
ZW5kKHByb3RvLAorCQkJIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX1RPX0xMLAorCQkJIG9mZnNldCkp
OworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfRkxPQVQ6CisJCUMoYXBwZW5kKHByb3RvLAor
CQkJIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX1RPX0YsCisJCQkgb2Zmc2V0KSk7CisJCWJyZWFrOwor
CSAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0JJ
VFZFQ1RPUl9SRUFEX1RPX0QsCisJCQkgb2Zmc2V0KSk7CisJCWJyZWFrOworCSAgICBkZWZhdWx0
OgorCQl0c2ZfYWJvcnQoIm9kZCBjYXNlIik7CisJCWJyZWFrOworCSAgICB9CisJfSBlbHNlIGlm
IChzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlCisJCSAgID09IGRlc3RfdHlw
ZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlICYmCisJCSAgIChzcmNfdHlwZS0+dS5hLmVs
ZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19VSU5UOCB8fAorCQkgICAgc3JjX3R5cGUt
PnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfSU5UOAorI2lmbmRlZiBORUVE
X0lOVF9DT05WRVJTSU9OCisJCSAgICB8fCAodHNmX3R5cGVfa2luZF9pc19pbnQoc3JjX3R5cGUt
PnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYm
IHNyY190eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgIT0gVFNGX1RLX0lOVEVHRVIK
KyAgICAgICAgICAgICAgICAgICAgICAgICYmIHNyY190eXBlLT51LmEuZWxlbWVudF90eXBlLT5r
aW5kX2NvZGUgIT0gVFNGX1RLX0xPTkcpCisjZW5kaWYKKyNpZm5kZWYgTkVFRF9GTE9BVF9DT05W
RVJTSU9OCisJCSAgICB8fCB0c2ZfdHlwZV9raW5kX2lzX2Zsb2F0KHNyY190eXBlLT51LmEuZWxl
bWVudF90eXBlLT5raW5kX2NvZGUpCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKSkgewor
CSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9CWVRFX0FSUkFZX1JFQUQsCisJCSAg
ICAgb2Zmc2V0LAorCQkgICAgIHRzZl90eXBlX2dldF9zdGF0aWNfc2l6ZShzcmNfdHlwZS0+dS5h
LmVsZW1lbnRfdHlwZSkpKTsKKwl9IGVsc2UgeworCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAg
ICBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRCwKKwkJICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0
b2YodHNmX25hdGl2ZV9hcnJheV90LCBsZW4pKSk7CisgICAgICAgICAgICAgICAgCisJICAgIHN0
YXRpY19zaXplID0gdHNmX3R5cGVfZ2V0X3N0YXRpY19zaXplKHNyY190eXBlLT51LmEuZWxlbWVu
dF90eXBlKTsKKwkgICAgaWYgKHN0YXRpY19zaXplICE9IFVJTlQzMl9NQVgpIHsKKwkJQyhhcHBl
bmQocHJvdG8sCisJCQkgR1BDX0lfQVJSQVlfQkNfRklFTEQsCisJCQkgb2Zmc2V0ICsgdHNmX29m
ZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwgbGVuKSwKKwkJCSBzdGF0aWNfc2l6ZSkpOworCSAg
ICB9CisgICAgICAgICAgICAKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQUxM
T0NfQVJSQVksCisJCSAgICAgb2Zmc2V0LAorCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6
ZShkZXN0X3R5cGUtPnUuYS5lbGVtZW50X3R5cGUpKSk7CisgICAgICAgICAgICAgICAgCisJICAg
IGxvb3BfbGFiZWwgPSBsYWJlbCsrOworCSAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKyAgICAg
ICAgICAgICAgICAKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfUkVQVVNIX01V
TEFERF9QVFIsCisJCSAgICAgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlf
dCxsZW4pLAorCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZShkZXN0X3R5cGUtPnUuYS5l
bGVtZW50X3R5cGUpKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPTVBG
QUlMSlVNUCwKKwkJICAgICBkb25lX2xhYmVsKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9MQUJFTCwgbG9vcF9sYWJlbCkpOworCSAgICBDKGdlbmVyYXRlX3BhcnNlcihwcm90bywKKwkJ
CSAgICAgIGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSwKKwkJCSAgICAgIHNyY190eXBlLT51
LmEuZWxlbWVudF90eXBlLAorCQkJICAgICAgMCwKKwkJCSAgICAgIGxhYmVsLAorCQkJICAgICAg
c3RhdGljX3NpemUgPT0gVUlOVDMyX01BWCkpOworCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAg
ICBHUENfSV9BRERDT01QSlVNUCwKKwkJICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoZGVz
dF90eXBlLT51LmEuZWxlbWVudF90eXBlKSwKKwkJICAgICBsb29wX2xhYmVsKSk7CisJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgZG9uZV9sYWJlbCkpOworCSAgICBDKGFwcGVuZChw
cm90bywgR1BDX0lfVFdPX1BPUCkpOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19DSE9J
Q0U6CisJaWYgKHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHNyY190eXBlKSA+PSAy
NTYpIHsKKyAgICAgICAgICAgIGlmIChzcmNfdHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZG9fYm91bmRzX2NoZWNrKSB7CisgICAgICAgICAgICAg
ICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9CQywgNCkpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUkVBREwpKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9V
TlNJR05FRF9SRUFEX1NVQjEpKTsKKyAgICAgICAgICAgIH0KKwl9IGVsc2UgeworCSAgICBpZiAo
ZG9fYm91bmRzX2NoZWNrKSB7CisJCUMoYXBwZW5kKHByb3RvLCBHUENfSV9CQywgMSkpOworCSAg
ICB9CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9SRUFEQ19UT19DSE9JQ0UpKTsKKwl9Cisg
ICAgICAgICAgICAKKwlpZiAodHNmX2Nob2ljZV90eXBlX2hhc19ub25fdm9pZChzcmNfdHlwZSkp
IHsKKwkgICAgLyogdXNlIHRhYmxlanVtcCAqLworCSAgICBsYWJlbF9vZmZzZXQgPSBsYWJlbDsK
KwkgICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUp
OworCSAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKwkgICAgcmVhbGx5X2RvbmVfbGFiZWwgPSBs
YWJlbCsrOworCSAgICB0YXJnZXRzPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkgKgorCQkJICAg
dHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUpKTsKKwkgICAgaWYgKHRh
cmdldHMgPT0gTlVMTCkgeworCQl0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGFycmF5
IG9mICIKKwkJCSAgICAgICJncGNfY2VsbF90Iik7CisJCXJldHVybiB0c2ZfZmFsc2U7CisJICAg
IH0KKwkgICAgZm9yIChpID0gMDsgaSA8IHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRz
KHNyY190eXBlKTsgKytpKSB7CisJCXRhcmdldHNbaV0gPSBsYWJlbF9vZmZzZXQgKyBpOworCSAg
ICB9CisJICAgIHJlc3VsdD1hcHBlbmRfdGFibGVqdW1wX2xvY2FsKHByb3RvLAorCQkJCQkgIHRz
Zl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHNyY190eXBlKSwKKwkJCQkJICB0YXJnZXRz
KTsKKwkgICAgZnJlZSh0YXJnZXRzKTsKKwkgICAgaWYgKCFyZXN1bHQpIHsKKwkJcmV0dXJuIHRz
Zl9mYWxzZTsKKwkgICAgfQorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9TRVRf
TCwKKwkJICAgICAoZ3BjX2NlbGxfdCkob2Zmc2V0ICsgZGVzdF90eXBlLT51LmgudmFsdWVfb2Zm
c2V0KSwKKwkJICAgICAoZ3BjX2NlbGxfdClVSU5UMzJfTUFYKSk7CisJICAgIEMoYXBwZW5kKHBy
b3RvLCBHUENfSV9KVU1QLCByZWFsbHlfZG9uZV9sYWJlbCkpOworCSAgICBmb3IgKGkgPSAwOyBp
IDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUpOyArK2kpIHsKKwkJ
dHNmX25hbWVkX3R5cGVfdCAqc24gPQorCQkgICAgdHNmX2Nob2ljZV90eXBlX2dldF9lbGVtZW50
KHNyY190eXBlLCBpKTsKKwkJdHNmX25hbWVkX3R5cGVfdCAqZG4gPQorCQkgICAgdHNmX2Nob2lj
ZV90eXBlX2ZpbmRfbm9kZShkZXN0X3R5cGUsIHNuLT5uYW1lKTsKKwkJQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0xBQkVMLCBsYWJlbF9vZmZzZXQgKyBpKSk7CisJCWlmIChkbiA9PSBOVUxMKSB7CisJ
CSAgICBDKGFwcGVuZChwcm90bywKKwkJCSAgICAgR1BDX0lfU0VUX0wsCisJCQkgICAgIChncGNf
Y2VsbF90KW9mZnNldCArIGRlc3RfdHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKwkJCSAgICAgKGdw
Y19jZWxsX3QpVUlOVDMyX01BWCkpOworCQkgICAgQyhnZW5lcmF0ZV9wYXJzZXIocHJvdG8sCisJ
CQkJICAgICAgdHNmX3R5cGVfY3JlYXRlKFRTRl9US19WT0lEKSwKKwkJCQkgICAgICBzbi0+dHlw
ZSwKKwkJCQkgICAgICAwLAorCQkJCSAgICAgIGxhYmVsLAorCQkJCSAgICAgIHRzZl90cnVlKSk7
CisJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgcmVhbGx5X2RvbmVfbGFiZWwpKTsK
KwkJfSBlbHNlIHsKKwkJICAgIEMoYXBwZW5kKHByb3RvLAorCQkJICAgICBHUENfSV9TRVRfTCwK
KwkJCSAgICAgKGdwY19jZWxsX3Qpb2Zmc2V0ICsgZGVzdF90eXBlLT51LmgudmFsdWVfb2Zmc2V0
LAorCQkJICAgICAoZ3BjX2NlbGxfdClkbi0+aW5kZXgpKTsKKwkJICAgIGlmICh0c2ZfbmF0aXZl
X2Nob2ljZV90eXBlX2lzX2luX3BsYWNlKGRlc3RfdHlwZSkpIHsKKwkJCUMoZ2VuZXJhdGVfcGFy
c2VyKHByb3RvLAorCQkJCQkgIGRuLT50eXBlLAorCQkJCQkgIHNuLT50eXBlLAorCQkJCQkgIG9m
ZnNldCArIGRlc3RfdHlwZS0+dS5oLmRhdGFfb2Zmc2V0LAorCQkJCQkgIGxhYmVsLAorCQkJCQkg
IHRzZl90cnVlKSk7CisJCSAgICB9IGVsc2UgeworCQkJQyhhcHBlbmQocHJvdG8sCisJCQkJIEdQ
Q19JX0FMTE9DLAorCQkJCSB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoZG4tPnR5cGUpKSk7CisJ
CQlDKGFwcGVuZChwcm90bywKKwkJCQkgR1BDX0lfU1RPUkVfUFRSLAorCQkJCSBvZmZzZXQgKyBk
ZXN0X3R5cGUtPnUuaC5kYXRhX29mZnNldCkpOworCQkJQyhnZW5lcmF0ZV9wYXJzZXIocHJvdG8s
CisJCQkJCSAgZG4tPnR5cGUsCisJCQkJCSAgc24tPnR5cGUsCisJCQkJCSAgMCwKKwkJCQkJICBs
YWJlbCwKKwkJCQkJICB0c2ZfdHJ1ZSkpOworCQkgICAgfQorCQkgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0pVTVAsIGRvbmVfbGFiZWwpKTsKKwkJfQorCSAgICB9CisJICAgIEMoYXBwZW5kKHBy
b3RvLCBHUENfSV9MQUJFTCwgZG9uZV9sYWJlbCkpOworCSAgICBpZiAoIXRzZl9uYXRpdmVfY2hv
aWNlX3R5cGVfaXNfaW5fcGxhY2UoZGVzdF90eXBlKSkgeworCQlDKGFwcGVuZChwcm90bywgR1BD
X0lfUE9QKSk7CisJICAgIH0KKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCByZWFs
bHlfZG9uZV9sYWJlbCkpOworCX0gZWxzZSBpZiAodHNmX2Nob2ljZV90eXBlX3VzZXNfc2FtZV9p
bmRpY2VzKHNyY190eXBlLAorCQkJCQkJICAgICBkZXN0X3R5cGUpKSB7CisJICAgIC8qIHVzZSBj
aGVja2Nob2ljZSBhbmQgc3RvcmUgKi8KKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BD
X0lfQ0hFQ0tDSE9JQ0UsCisJCSAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMo
c3JjX3R5cGUpKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1NUT1JFX1ZB
TCwKKwkJICAgICBvZmZzZXQgKyBkZXN0X3R5cGUtPnUuaC52YWx1ZV9vZmZzZXQpKTsKKwkgICAg
QyhhcHBlbmQocHJvdG8sIEdQQ19JX1BPUCkpOworCX0gZWxzZSB7CisJICAgIC8qIHVzZSB0YWJs
ZXNldF9sb2NhbF90b19maWVsZCAqLworCSAgICB0YXJnZXRzPW1hbGxvYyhzaXplb2YoZ3BjX2Nl
bGxfdCkgKgorCQkJICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUp
KTsKKwkgICAgaWYgKHRhcmdldHM9PU5VTEwpIHsKKwkJdHNmX3NldF9lcnJubygiQ291bGQgbm90
IG1hbGxvYyBhcnJheSBvZiAiCisJCQkgICAgICAiZ3BjX2NlbGxfdCIpOworCQlyZXR1cm4gdHNm
X2ZhbHNlOworCSAgICB9CisJICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfY2hvaWNlX3R5cGVfZ2V0
X251bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2ZfbmFtZWRfdHlwZV90ICpzbiA9
CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCQl0c2Zf
bmFtZWRfdHlwZV90ICpkbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2RlKGRlc3Rf
dHlwZSwgc24tPm5hbWUpOworCQlpZiAoZG4gPT0gTlVMTCkgeworCQkgICAgdGFyZ2V0c1tpXSA9
IFVJTlQzMl9NQVg7CisJCX0gZWxzZSB7CisJCSAgICB0YXJnZXRzW2ldID0gZG4tPmluZGV4Owor
CQl9CisJICAgIH0KKwkgICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlc2V0X2xvY2FsX3RvX2ZpZWxk
KAorICAgICAgICAgICAgICAgIHByb3RvLAorICAgICAgICAgICAgICAgIG9mZnNldCArIGRlc3Rf
dHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICB0c2ZfY2hvaWNlX3R5cGVf
Z2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSksCisgICAgICAgICAgICAgICAgdGFyZ2V0cyk7CisJ
ICAgIGZyZWUodGFyZ2V0cyk7CisJICAgIGlmICghcmVzdWx0KSB7CisJCXJldHVybiB0c2ZfZmFs
c2U7CisJICAgIH0KKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSSU5HOgorCUMoYXBw
ZW5kKHByb3RvLCBHUENfSV9TVFJJTkdfUkVBRCwgb2Zmc2V0KSk7CisJYnJlYWs7CisgICAgY2Fz
ZSBUU0ZfVEtfQU5ZOgorCUMoYXBwZW5kKHByb3RvLCBHUENfSV9BTllfUkVBRCwgb2Zmc2V0KSk7
CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwl0c2ZfYWJvcnQoIlVua25vd24gdHlwZSIpOworCWJy
ZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK2dwY19wcm90b190
ICp0c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRlX3BhcnNlcih0c2ZfdHlwZV90ICpkZXN0X3R5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
dCAqc3JjX3R5cGUpIHsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG87CisKKyAgICBpZiAoIXRzZl9u
YXRpdmVfdHlwZV9oYXNfc3RydWN0X21hcHBpbmcoZGVzdF90eXBlKSkgeworICAgICAgICB0c2Zf
c2V0X2Vycm9yKFRTRl9FX05PX1NUUlVDVF9NQVAsIE5VTEwpOworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2ZfdHlwZV9pbnN0YW5jZW9mKHNyY190eXBlLCBk
ZXN0X3R5cGUpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfVFlQRV9NSVNNQVRDSCwg
TlVMTCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBwcm90bz1ncGNf
cHJvdG9fY3JlYXRlKDIpOworICAgIGlmIChwcm90bz09TlVMTCkgeworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX1BPUF9CVUYp
KSB7CisgICAgICAgIGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorCisgICAgaWYgKCFnZW5lcmF0ZV9wYXJzZXIocHJvdG8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNyY190
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHJ1ZSkpIHsKKyAgICAgICAgZ3Bj
X3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAg
CisgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX1JFVFVSTl9PTkUpKSB7CisgICAgICAgIGdw
Y19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IAorICAgIHJldHVybiBwcm90bzsKK30KKworc3RhdGljIHRzZl9ib29sX3QgZ2VuZXJhdGVfY29u
dmVydGVyKGdwY19wcm90b190ICpwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3R5cGVfdCAqc3JjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBkZXN0X29mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IHNyY19vZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBsYWJlbCkgeworICAgIHVpbnQzMl90
IGk7CisgICAgZ3BjX2NlbGxfdCBkb25lX2xhYmVsLHJlYWxseV9kb25lX2xhYmVsOworICAgIGdw
Y19jZWxsX3QgbG9vcF9sYWJlbDsKKyAgICBncGNfY2VsbF90IGxhYmVsX29mZnNldDsKKyAgICBn
cGNfY2VsbF90ICp0YXJnZXRzOworICAgIHRzZl9ib29sX3QgcmVzdWx0OworICAgIAorICAgIGlm
IChkZXN0X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworICAgICAgICByZXR1cm4g
dHNmX3RydWU7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3R5cGVfaW5zdGFuY2VvZihzcmNf
dHlwZSwgZGVzdF90eXBlKSkgeworCUMoZ2VuZXJhdGVfc2V0X2RlZmF1bHRfY29waWVyKHByb3Rv
LCBkZXN0X3R5cGUsIGRlc3Rfb2Zmc2V0KSk7CisgICAgfQorICAgIAorICAgIC8qIHJlYXNvbiB3
aHkgd2UgZG9uJ3QgbWVtY3B5IHByaW1pdGl2ZXM6IGlmIHdlIHNlZSBhIHByaW1pdGl2ZSBhdAor
ICAgICAgIHRoaXMgcG9pbnQsIHRoZW4gaXQgaXMganVzdCBvbmUgd29yZCAtIHNvIGEgcHJpbWl0
aXZlIGNvcHkKKyAgICAgICBvcGVyYXRpb24gd2lsbCBiZSBmYXN0ZXIgdGhhbiBtZW1jcHkuCisg
ICAgICAgCisgICAgICAgaW50ZXJlc3RpbmdseSwgaWYgd2Ugc2VlIGEgc3RydWN0IHRoYXQgY29u
dGFpbnMgZXhhY3RseSBvbmUKKyAgICAgICBwcmltaXRpdmUsIHdlIHdpbGwgc3RpbGwgdXNlIG1l
bWNweSAodW5sZXNzIGl0IGlzIGEgYnl0ZSkuICB0aGlzCisgICAgICAgaXMgbm90IG9wdGltYWws
IGJ1dCBvaCB3ZWxsLiAqLworICAgIGlmICghdHNmX3R5cGVfa2luZF9pc19wcmltaXRpdmUodHNm
X3R5cGVfZ2V0X2tpbmRfY29kZShzcmNfdHlwZSkpICYmCisgICAgICAgIHRzZl9uYXRpdmVfdHlw
ZV9jYW5fYmxpdChkZXN0X3R5cGUsc3JjX3R5cGUpKSB7CisgICAgICAgIHN3aXRjaCAodHNmX25h
dGl2ZV90eXBlX2dldF9zaXplKHNyY190eXBlKSkgeworCWNhc2UgMDoKKwkgICAgYnJlYWs7CisJ
Y2FzZSAxOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0MsCisJCSAg
ICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZh
dWx0OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9NRU1DUFksCisJCSAgICAg
ZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCwKKwkJICAgICB0c2ZfbmF0aXZlX3R5cGVf
Z2V0X3NpemUoc3JjX3R5cGUpKSk7CisJICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgc3dpdGNoIChzcmNfdHlwZS0+a2luZF9j
b2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQklUOgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2Nv
ZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIHRzZl9hYm9ydCgiYml0LXRvLWJpdCBjb3Bp
ZXMgc2hvdWxkIGhhdmUgYmVlbiBoYW5kbGVkIGVsc2V3aGVyZSIpOworCSAgICBicmVhazsKKwlj
YXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90
bywKKwkJICAgICBHUENfSV9DT1BZX0JJVCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBz
cmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCWNhc2UgVFNG
X1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9CSVRf
VE9fUywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAg
Y2FzZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lf
Q09QWV9CSVRfVE9fTCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2NDoK
KyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAg
R1BDX0lfQ09QWV9CSVRfVE9fTEwsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29m
ZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAgQyhhcHBlbmQo
cHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9CSVRfVE9fRiwKKwkJICAgICBkZXN0X29mZnNldCwK
KwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToK
KwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9CSVRfVE9fRCwKKwkJICAg
ICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1
bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsg
IgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5
cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRT
Rl9US19JTlQ4OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9U
S19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfQklULAorCQkg
ICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2Fz
ZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8s
CisJCSAgICAgR1BDX0lfQ09QWV9DLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19v
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0ZfVEtf
VUlOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fU19F
LAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7
CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNl
IFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZ
X0NfVE9fTF9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAg
ICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENf
SV9DT1BZX0NfVE9fTExfRSwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0
KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90
bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fRl9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkg
ICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAg
ICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fRF9FLAorCQkgICAgIGRl
c3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoK
KwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJ
CSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9p
bnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RL
X1VJTlQ4OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19C
SVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfQklULAorCQkgICAg
IGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBU
U0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJ
CSAgICAgR1BDX0lfQ09QWV9DLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZz
ZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0ZfVEtfVUlO
VDE2OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fU19aLAor
CQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNlIFRT
Rl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0Nf
VE9fTF9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAg
ICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9D
T1BZX0NfVE9fTExfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90bywK
KwkJICAgICBHUENfSV9DT1BZX0NfVE9fRl9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAg
IHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBD
KGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fRF9aLAorCQkgICAgIGRlc3Rf
b2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkg
ICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAg
ICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0
YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lO
VDE2OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6
CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfU19UT19CSVQsCisJCSAg
ICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNl
IFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywK
KwkJICAgICBHUENfSV9DT1BZX1NfVE9fQywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBz
cmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCWNhc2UgVFNG
X1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9TLAor
CQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNlIFRT
Rl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX1Nf
VE9fTF9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAg
ICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9D
T1BZX1NfVE9fTExfRSwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90bywK
KwkJICAgICBHUENfSV9DT1BZX1NfVE9fRl9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAg
IHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBD
KGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX1NfVE9fRF9FLAorCQkgICAgIGRlc3Rf
b2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkg
ICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAg
ICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0
YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX1VJ
TlQxNjoKKwlzd2l0Y2ggKGRlc3RfdHlwZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtfQklU
OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX1NfVE9fQklULAorCQkg
ICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2Fz
ZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8s
CisJCSAgICAgR1BDX0lfQ09QWV9TX1RPX0MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAg
c3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQxNjoKKwljYXNlIFRT
Rl9US19VSU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfUywK
KwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOwor
CWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBU
U0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9T
X1RPX0xfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAg
ICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lf
Q09QWV9TX1RPX0xMX1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkp
OworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAgQyhhcHBlbmQocHJvdG8s
CisJCSAgICAgR1BDX0lfQ09QWV9TX1RPX0ZfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAg
ICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAg
QyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9TX1RPX0RfWiwKKwkJICAgICBkZXN0
X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJ
ICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkg
ICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5z
dGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19J
TlQzMjoKKyAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5k
X2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAg
IEdQQ19JX0NPUFlfTF9UT19CSVQsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29m
ZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJ
TlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fQywKKwkJ
ICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNh
c2UgVFNGX1RLX0lOVDE2OgorCWNhc2UgVFNGX1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJv
dG8sCisJCSAgICAgR1BDX0lfQ09QWV9MX1RPX1MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAg
ICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQzMjoKKwljYXNl
IFRTRl9US19VSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBw
ZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJ
ICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNh
c2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBl
bmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MX1RPX0xMX0UsCisJCSAgICAgZGVzdF9vZmZz
ZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9B
VDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MX1RPX0ZfRSwKKwkJ
ICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNh
c2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09Q
WV9MX1RPX0RfRSwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3Rf
dHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkg
IgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwli
cmVhazsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRf
Y29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAg
R1BDX0lfQ09QWV9MX1RPX0JJVCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zm
c2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDg6CisJY2FzZSBUU0ZfVEtfVUlO
VDg6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTF9UT19DLAorCQkg
ICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2Fz
ZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChwcm90
bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fUywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAg
ICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2Ug
VFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBl
bmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkg
ICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2Fz
ZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVu
ZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fTExfWiwKKwkJICAgICBkZXN0X29mZnNl
dCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FU
OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fRl9aLAorCQkg
ICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2Fz
ZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZ
X0xfVE9fRF9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90
eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAi
CisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJy
ZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJc3dp
dGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhh
cHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MTF9UT19CSVQsCisJCSAgICAgZGVzdF9v
ZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19J
TlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBH
UENfSV9DT1BZX0xMX1RPX0MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNl
dCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQxNjoKKwljYXNlIFRTRl9US19VSU5U
MTY6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTExfVE9fUywKKwkJ
ICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNh
c2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBUU0Zf
VEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MTF9U
T19MLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICBj
YXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZ
X0xMLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQ
Q19JX0NPUFlfTExfVE9fRl9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZz
ZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0xMX1RPX0RfRSwKKwkJICAgICBkZXN0X29mZnNldCwK
KwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9h
Ym9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hv
dWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigp
Iik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19VSU5UNjQ6CisJ
c3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAg
QyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MTF9UT19CSVQsCisJCSAgICAgZGVz
dF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9U
S19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAg
ICBHUENfSV9DT1BZX0xMX1RPX0MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29m
ZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQxNjoKKwljYXNlIFRTRl9US19V
SU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTExfVE9fUywK
KwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOwor
CWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBU
U0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9M
TF9UT19MLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAg
ICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9D
T1BZX0xMLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAg
IEdQQ19JX0NPUFlfTExfVE9fRl9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19v
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVu
ZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xMX1RPX0RfWiwKKwkJICAgICBkZXN0X29mZnNl
dCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRz
Zl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAi
c2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2Vv
ZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19GTE9BVDoK
Kwlzd2l0Y2ggKGRlc3RfdHlwZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtfQklUOgorCSAg
ICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0ZfVE9fQklULAorCQkgICAgIGRl
c3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0Zf
VEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRl9UT19D
X1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVh
azsKKwljYXNlIFRTRl9US19JTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENf
SV9DT1BZX0ZfVE9fQ19FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQp
KTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChwcm90
bywKKwkJICAgICBHUENfSV9DT1BZX0ZfVE9fU19aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkg
ICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMTY6CisJICAg
IEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRl9UT19TX0UsCisJCSAgICAgZGVz
dF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9U
S19VSU5UMzI6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRl9UT19M
X1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVh
azsKKwljYXNlIFRTRl9US19JTlQzMjoKKyAgICAgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwkg
ICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9GX1RPX0xfRSwKKwkJICAgICBk
ZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNG
X1RLX1VJTlQ2NDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9GX1RP
X0xMX1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBi
cmVhazsKKwljYXNlIFRTRl9US19JTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkg
ICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9GX1RPX0xMX0UsCisJCSAgICAg
ZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRT
Rl9US19GTE9BVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9GLAor
CQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9D
T1BZX0ZfVE9fRCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3Rf
dHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkg
IgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwli
cmVhazsKKyAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRf
Y29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAg
R1BDX0lfQ09QWV9EX1RPX0JJVCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zm
c2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0RfVE9fQ19aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAor
CQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwkg
ICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9EX1RPX0NfRSwKKwkJICAgICBk
ZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNG
X1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9EX1RP
X1NfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBH
UENfSV9DT1BZX0RfVE9fU19FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZz
ZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0RfVE9fTF9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAor
CQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMzI6Cisg
ICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAg
IEdQQ19JX0NPUFlfRF9UT19MX0UsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29m
ZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UNjQ6CisJICAgIEMoYXBwZW5k
KHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRF9UT19MTF9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0
LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6
CisgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAg
IEdQQ19JX0NPUFlfRF9UT19MTF9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19v
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBwZW5k
KHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRF9UT19GLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAor
CQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgor
CSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0QsCisJCSAgICAgZGVzdF9v
ZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAg
ICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRpb247ICIKKwkJICAg
ICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRzZl90eXBlX2luc3Rh
bmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RS
VUNUOgorICAgICAgICBpZiAoZGVzdF90eXBlLT51LnMuY29uc3RydWN0b3IgIT0gTlVMTCB8fAor
ICAgICAgICAgICAgZGVzdF90eXBlLT51LnMucHJlX2Rlc3RydWN0b3IgIT0gTlVMTCkgeworICAg
ICAgICAgICAgLyogVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgYnkgYWRkaW5nIElfQ0FMTF8yTkQg
YW5kIElfQUREX0NCQUNLXzJORC4gSSBkb24ndCB0aGluaworICAgICAgICAgICAgICAgaXQncyB3
b3J0aCBpdC4gKi8KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX0RVUF9QVFJfMk5EKSk7CisgICAgICAgICAgICBpZiAoZGVzdF90eXBlLT51LnMuY29uc3Ry
dWN0b3IgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9D
QUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfb2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RfdHlwZS0+dS5zLmNvbnN0cnVjdG9yKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoZGVzdF90eXBlLT51LnMucHJlX2Rlc3RydWN0b3IgIT0gTlVMTCkg
eworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9BRERfQ0JBQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdF90eXBlLT51LnMucHJlX2Rlc3RydWN0b3IpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9QT1ApKTsKKyAgICAgICAgfQorCisJZm9yIChp
ID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRlc3RfdHlwZSk7ICsr
aSkgeworCSAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0KKwkJdHNmX3N0cnVjdF90eXBlX2dldF9l
bGVtZW50KGRlc3RfdHlwZSwgaSk7CisgICAgICAgICAgICAgICAgCisJICAgIHRzZl9uYW1lZF90
eXBlX3QgKm4yID0KKwkJdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShzcmNfdHlwZSwgbi0+bmFt
ZSk7CisJICAgIAorCSAgICBpZiAobjIgPT0gTlVMTCkgeworCQlDKGdlbmVyYXRlX3NldF9kZWZh
dWx0X2NvcGllcigKKyAgICAgICAgICAgICAgICAgICAgICBwcm90bywgbi0+dHlwZSwgZGVzdF9v
ZmZzZXQgKyBuLT5vZmZzZXQpKTsKKwkgICAgfSBlbHNlIHsKKwkJQyhnZW5lcmF0ZV9jb252ZXJ0
ZXIocHJvdG8sCisJCQkJICAgICBuLT50eXBlLAorCQkJCSAgICAgbjItPnR5cGUsCisJCQkJICAg
ICBkZXN0X29mZnNldCArIG4tPm9mZnNldCwKKwkJCQkgICAgIHNyY19vZmZzZXQgKyBuMi0+b2Zm
c2V0LAorCQkJCSAgICAgbGFiZWwpKTsKKwkgICAgfQorCX0KKwlicmVhazsKKyAgICBjYXNlIFRT
Rl9US19BUlJBWToKKwlpZiAoZGVzdF90eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUg
PT0gVFNGX1RLX1ZPSUQpIHsKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09Q
WV9MLAorCQkgICAgIChncGNfY2VsbF90KShkZXN0X29mZnNldCArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfdm9pZF9hcnJheV90LCBs
ZW4pKSwKKwkJICAgICAoZ3BjX2NlbGxfdCkoc3JjX29mZnNldCArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9
PSBUU0ZfVEtfVk9JRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdHNmX29m
ZnNldG9mKHRzZl9uYXRpdmVfdm9pZF9hcnJheV90LCBsZW4pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAoc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9
PSBUU0ZfVEtfQklUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0c2Zf
b2Zmc2V0b2YodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCwgbnVtX2JpdHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV9hcnJheV90
LCBsZW4pKSkpKTsKKwl9IGVsc2UgaWYgKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2lu
ZF9jb2RlID09IFRTRl9US19CSVQpIHsKKwkgICAgc3dpdGNoIChzcmNfdHlwZS0+dS5hLmVsZW1l
bnRfdHlwZS0+a2luZF9jb2RlKSB7CisJICAgIGNhc2UgVFNGX1RLX0JJVDoKKwkJQyhhcHBlbmQo
cHJvdG8sCisJCQkgR1BDX0lfQ09QWV9CSVRWRUNUT1IsCisJCQkgZGVzdF9vZmZzZXQsCisJCQkg
c3JjX29mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAgIGNh
c2UgVFNGX1RLX0lOVDg6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0NPUFlfQklUVkVD
VE9SX0ZST01fQywKKwkJCSBkZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7CisJCWJyZWFr
OworCSAgICBjYXNlIFRTRl9US19VSU5UMTY6CisJICAgIGNhc2UgVFNGX1RLX0lOVDE2OgorCQlD
KGFwcGVuZChwcm90bywKKwkJCSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX1MsCisJCQkgZGVz
dF9vZmZzZXQsCisJCQkgc3JjX29mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtf
VUlOVDMyOgorCSAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAgICAgICAgICAgIGNhc2UgVFNGX1RL
X0lOVEVHRVI6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZS
T01fTCwKKwkJCSBkZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7CisJCWJyZWFrOworCSAg
ICBjYXNlIFRTRl9US19VSU5UNjQ6CisJICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgICAgICAg
ICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQ09QWV9C
SVRWRUNUT1JfRlJPTV9MTCwKKwkJCSBkZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7CisJ
CWJyZWFrOworCSAgICBjYXNlIFRTRl9US19GTE9BVDoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkg
R1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9GLAorCQkJIGRlc3Rfb2Zmc2V0LAorCQkJIHNyY19v
ZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0RPVUJMRToKKwkJQyhhcHBlbmQo
cHJvdG8sCisJCQkgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9ELAorCQkJIGRlc3Rfb2Zmc2V0
LAorCQkJIHNyY19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCXRzZl9hYm9y
dCgiY2FzZSBtaXNzZWQiKTsKKwkJYnJlYWs7CisJICAgIH0KKwl9IGVsc2UgaWYgKHNyY190eXBl
LT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworCSAgICBzd2l0
Y2ggKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlKSB7CisJICAgIGNhc2Ug
VFNGX1RLX1VJTlQ4OgorCSAgICBjYXNlIFRTRl9US19JTlQ4OgorCQlDKGFwcGVuZChwcm90bywK
KwkJCSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19DLAorCQkJIGRlc3Rfb2Zmc2V0LAorCQkJIHNy
Y19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX1VJTlQxNjoKKwkgICAgY2Fz
ZSBUU0ZfVEtfSU5UMTY6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0NPUFlfQklUVkVD
VE9SX1RPX1MsCisJCQkgZGVzdF9vZmZzZXQsCisJCQkgc3JjX29mZnNldCkpOworCQlicmVhazsK
KwkgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOgorCSAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAgICAg
ICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19J
X0NPUFlfQklUVkVDVE9SX1RPX0wsCisJCQkgZGVzdF9vZmZzZXQsCisJCQkgc3JjX29mZnNldCkp
OworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorCSAgICBjYXNlIFRTRl9US19J
TlQ2NDoKKyAgICAgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJCUMoYXBwZW5kKHByb3RvLAor
CQkJIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0xMLAorCQkJIGRlc3Rfb2Zmc2V0LAorCQkJIHNy
Y19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0ZMT0FUOgorCQlDKGFwcGVu
ZChwcm90bywKKwkJCSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19GLAorCQkJIGRlc3Rfb2Zmc2V0
LAorCQkJIHNyY19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0RPVUJMRToK
KwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fRCwKKwkJCSBk
ZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7CisJCWJyZWFrOworCSAgICBkZWZhdWx0Ogor
CQl0c2ZfYWJvcnQoImNhc2UgbWlzc2VkIik7CisJICAgIH0KKwl9IGVsc2UgaWYgKHRzZl9uYXRp
dmVfdHlwZV9jYW5fYmxpdChkZXN0X3R5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisJCQkJCSAgICBz
cmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkgJiYKKwkJICAgdHNmX25hdGl2ZV90eXBlX2dldF9z
aXplKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkgPT0KKwkJICAgdHNmX25hdGl2ZV90eXBl
X2dldF9zaXplKHNyY190eXBlLT51LmEuZWxlbWVudF90eXBlKSkgeworCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0FSUkFZLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkg
ICAgIHNyY19vZmZzZXQsCisJCSAgICAgdHNmX25hdGl2ZV90eXBlX2dldF9zaXplKGRlc3RfdHlw
ZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKwl9IGVsc2UgeworCSAgICBsb29wX2xhYmVsID0gbGFi
ZWwrKzsKKwkgICAgZG9uZV9sYWJlbCA9IGxhYmVsKys7CisgICAgICAgICAgICAgICAgCisJICAg
IEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTCwKKwkJICAgICBkZXN0X29mZnNl
dCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsIGxlbiksCisJCSAgICAgc3JjX29m
ZnNldCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsIGxlbikpKTsKKwkgICAgQyhh
cHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQUxMT0NfQVJSQVlfMk5ELAorCQkgICAgIGRlc3Rf
b2Zmc2V0LAorCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZShkZXN0X3R5cGUtPnUuYS5l
bGVtZW50X3R5cGUpKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1JFUFVT
SF9NVUxBRERfUFRSXzJORCwKKwkJICAgICBkZXN0X29mZnNldCArIHRzZl9vZmZzZXRvZih0c2Zf
bmF0aXZlX2FycmF5X3QsIGxlbiksCisJCSAgICAgdHNmX25hdGl2ZV90eXBlX2dldF9zaXplKGRl
c3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAg
ICAgR1BDX0lfUFVTSF9QVFJfM1JELAorCQkgICAgIHNyY19vZmZzZXQgKyB0c2Zfb2Zmc2V0b2Yo
dHNmX25hdGl2ZV9hcnJheV90LCBkYXRhKSkpOworCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAg
ICBHUENfSV9DT01QRkFJTEpVTVBfMk5ELAorCQkgICAgIGRvbmVfbGFiZWwpKTsKKwkgICAgQyhh
cHBlbmQocHJvdG8sR1BDX0lfTEFCRUwsIGxvb3BfbGFiZWwpKTsKKwkgICAgQyhnZW5lcmF0ZV9j
b252ZXJ0ZXIocHJvdG8sCisJCQkJIGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSwKKwkJCQkg
c3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisJCQkJIDAsCisJCQkJIDAsCisJCQkJIGxhYmVs
KSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1RXT19BRERDT01QSlVNUCwK
KwkJICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoZGVzdF90eXBlLT51LmEuZWxlbWVudF90
eXBlKSwKKwkJICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoc3JjX3R5cGUtPnUuYS5lbGVt
ZW50X3R5cGUpLAorCQkgICAgIGxvb3BfbGFiZWwpKTsKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX0xBQkVMLCBkb25lX2xhYmVsKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9USFJF
RV9QT1ApKTsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorCXRhcmdldHM9
bWFsbG9jKHNpemVvZihncGNfY2VsbF90KSAqCisJCSAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0
X251bV9lbGVtZW50cyhzcmNfdHlwZSkpOworCWlmICh0YXJnZXRzID09IE5VTEwpIHsKKwkgICAg
dHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBhcnJheSBvZiAiCisJCQkgICJncGNfY2Vs
bF90Iik7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJfQorCWlmICh0c2ZfY2hvaWNlX3R5cGVf
aGFzX25vbl92b2lkKHNyY190eXBlKSkgeworCSAgICBsYWJlbF9vZmZzZXQgPSBsYWJlbDsKKwkg
ICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUpOwor
CSAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKwkgICAgcmVhbGx5X2RvbmVfbGFiZWwgPSBsYWJl
bCsrOworCSAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVu
dHMoc3JjX3R5cGUpOyArK2kpIHsKKwkJdGFyZ2V0c1tpXSA9IGxhYmVsX29mZnNldCArIGk7CisJ
ICAgIH0KKwkgICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlanVtcF9maWVsZCgKKyAgICAgICAgICAg
ICAgICBwcm90bywKKyAgICAgICAgICAgICAgICBzcmNfb2Zmc2V0ICsgc3JjX3R5cGUtPnUuaC52
YWx1ZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxl
bWVudHMoc3JjX3R5cGUpLAorICAgICAgICAgICAgICAgIHRhcmdldHMpOworCSAgICBmcmVlKHRh
cmdldHMpOworCSAgICBpZiAoIXJlc3VsdCkgeworCQlyZXR1cm4gdHNmX2ZhbHNlOworCSAgICB9
CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1NFVF8yTkRfTCwKKwkJICAgICAo
Z3BjX2NlbGxfdCkoZGVzdF9vZmZzZXQgKyBkZXN0X3R5cGUtPnUuaC52YWx1ZV9vZmZzZXQpLAor
CQkgICAgIChncGNfY2VsbF90KVVJTlQzMl9NQVgpKTsKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX0pVTVAsIHJlYWxseV9kb25lX2xhYmVsKSk7CisJICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zf
Y2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2ZfbmFt
ZWRfdHlwZV90ICpzbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoc3JjX3R5
cGUsIGkpOworCQl0c2ZfbmFtZWRfdHlwZV90ICpkbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVf
ZmluZF9ub2RlKGRlc3RfdHlwZSwgc24tPm5hbWUpOworCQlDKGFwcGVuZChwcm90bywgR1BDX0lf
TEFCRUwsIGxhYmVsX29mZnNldCArIGkpKTsKKwkJaWYgKGRuID09IE5VTEwpIHsKKwkJICAgIEMo
YXBwZW5kKHByb3RvLAorCQkJICAgICBHUENfSV9TRVRfMk5EX0wsCisJCQkgICAgIChncGNfY2Vs
bF90KShkZXN0X29mZnNldCArIGRlc3RfdHlwZS0+dS5oLnZhbHVlX29mZnNldCksCisJCQkgICAg
IChncGNfY2VsbF90KVVJTlQzMl9NQVgpKTsKKwkJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9K
VU1QLCByZWFsbHlfZG9uZV9sYWJlbCkpOworCQl9IGVsc2UgeworCQkgICAgQyhhcHBlbmQocHJv
dG8sCisJCQkgICAgIEdQQ19JX1NFVF8yTkRfTCwKKwkJCSAgICAgKGdwY19jZWxsX3QpKGRlc3Rf
b2Zmc2V0ICsgZGVzdF90eXBlLT51LmgudmFsdWVfb2Zmc2V0KSwKKwkJCSAgICAgKGdwY19jZWxs
X3QpZG4tPmluZGV4KSk7CisJCSAgICBpZiAoIXRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5f
cGxhY2Uoc3JjX3R5cGUpIHx8CisJCQkhdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9wbGFj
ZShkZXN0X3R5cGUpKSB7CisJCQl1aW50MzJfdCBzcmNfb2ZmID0gMDsKKwkJCXVpbnQzMl90IGRl
c3Rfb2ZmID0gMDsKKwkJCWlmICh0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lzX2luX3BsYWNlKGRl
c3RfdHlwZSkpIHsKKwkJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRFVQX1BUUl8yTkQpKTsK
KwkJCSAgICBkZXN0X29mZiA9IGRlc3Rfb2Zmc2V0ICsKKwkJCQlkZXN0X3R5cGUtPnUuaC5kYXRh
X29mZnNldDsKKwkJCX0gZWxzZSB7CisJCQkgICAgLyogbXVzdCBhbGxvYyAqLworCQkJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9BTExPQywKKwkJCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRf
c2l6ZShkbi0+dHlwZSkpKTsKKwkJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfU1RPUkVfUFRS
XzJORCwKKwkJCQkgICAgIGRlc3Rfb2Zmc2V0ICsKKwkJCQkgICAgIGRlc3RfdHlwZS0+dS5oLmRh
dGFfb2Zmc2V0KSk7CisJCQl9CisJCQlpZiAodHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9w
bGFjZShzcmNfdHlwZSkpIHsKKwkJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRFVQX1BUUl8y
TkQpKTsKKwkJCSAgICBzcmNfb2ZmID0gc3JjX29mZnNldCArCisJCQkJc3JjX3R5cGUtPnUuaC5k
YXRhX29mZnNldDsKKwkJCX0gZWxzZSB7CisJCQkgICAgLyoganVzdCBsb2FkICovCisJCQkgICAg
QyhhcHBlbmQocHJvdG8sIEdQQ19JX1BVU0hfUFRSXzJORCwKKwkJCQkgICAgIHNyY19vZmZzZXQg
KworCQkJCSAgICAgc3JjX3R5cGUtPnUuaC5kYXRhX29mZnNldCkpOworCQkJfQorCQkJQyhnZW5l
cmF0ZV9jb252ZXJ0ZXIocHJvdG8sCisJCQkJCSAgICAgZG4tPnR5cGUsCisJCQkJCSAgICAgc24t
PnR5cGUsCisJCQkJCSAgICAgZGVzdF9vZmYsCisJCQkJCSAgICAgc3JjX29mZiwKKwkJCQkJICAg
ICBsYWJlbCkpOworCQkJQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAsIGRvbmVfbGFiZWwpKTsK
KwkJICAgIH0gZWxzZSB7CisJCQlDKGdlbmVyYXRlX2NvbnZlcnRlcihwcm90bywKKwkJCQkJICAg
ICBkbi0+dHlwZSwKKwkJCQkJICAgICBzbi0+dHlwZSwKKwkJCQkJICAgICBkZXN0X29mZnNldCAr
CisJCQkJCSAgICAgZGVzdF90eXBlLT51LmguZGF0YV9vZmZzZXQsCisJCQkJCSAgICAgc3JjX29m
ZnNldCArCisJCQkJCSAgICAgc3JjX3R5cGUtPnUuaC5kYXRhX29mZnNldCwKKwkJCQkJICAgICBs
YWJlbCkpOworCQkJQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAsIHJlYWxseV9kb25lX2xhYmVs
KSk7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfTEFC
RUwsIGRvbmVfbGFiZWwpKTsKKwkgICAgaWYgKCF0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lzX2lu
X3BsYWNlKHNyY190eXBlKSB8fAorCQkhdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9wbGFj
ZShkZXN0X3R5cGUpKSB7CisJCUMoYXBwZW5kKHByb3RvLCBHUENfSV9UV09fUE9QKSk7CisJICAg
IH0KKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCByZWFsbHlfZG9uZV9sYWJlbCkp
OworCX0gZWxzZSB7CisJICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251
bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2ZfbmFtZWRfdHlwZV90ICpzbiA9CisJ
CSAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCQl0c2ZfbmFt
ZWRfdHlwZV90ICpkbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2RlKGRlc3RfdHlw
ZSwgc24tPm5hbWUpOworCQlpZiAoZG4gPT0gTlVMTCkgeworCQkgICAgdGFyZ2V0c1tpXSA9IFVJ
TlQzMl9NQVg7CisJCX0gZWxzZSB7CisJCSAgICB0YXJnZXRzW2ldID0gZG4tPmluZGV4OworCQl9
CisJICAgIH0KKwkgICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlc2V0X2ZpZWxkX3RvX2ZpZWxkKAor
ICAgICAgICAgICAgICAgIHByb3RvLAorICAgICAgICAgICAgICAgIGRlc3Rfb2Zmc2V0ICsgZGVz
dF90eXBlLT51LmgudmFsdWVfb2Zmc2V0LAorICAgICAgICAgICAgICAgIHNyY19vZmZzZXQgKyBz
cmNfdHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICB0c2ZfY2hvaWNlX3R5
cGVfZ2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSksCisgICAgICAgICAgICAgICAgdGFyZ2V0cyk7
CisJICAgIGZyZWUodGFyZ2V0cyk7CisJICAgIGlmICghcmVzdWx0KSB7CisJCXJldHVybiB0c2Zf
ZmFsc2U7CisJICAgIH0KKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSSU5HOgorCUMo
YXBwZW5kKHByb3RvLAorCQkgR1BDX0lfU1RSSU5HX0NPUFksCisJCSBkZXN0X29mZnNldCwKKwkJ
IHNyY19vZmZzZXQpKTsKKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19BTlk6CisJQyhhcHBlbmQo
cHJvdG8sCisJCSBHUENfSV9BTllfQ09QWSwKKwkJIGRlc3Rfb2Zmc2V0LAorCQkgc3JjX29mZnNl
dCkpOworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJdHNmX2Fib3J0KCJCYWQgdHlwZS4iKTsKKwli
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK2dwY19wcm90b190ICp0
c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRlX2NvbnZlcnRlcih0c2ZfdHlwZV90ICpkZXN0X3R5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfdCAqc3JjX3R5cGUpIHsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG87CisKKyAgICBpZiAoIXRz
Zl9uYXRpdmVfdHlwZV9oYXNfc3RydWN0X21hcHBpbmcoZGVzdF90eXBlKSkgeworICAgICAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX05PX1NUUlVDVF9NQVAsCisgICAgICAgICAgICAgICAgICAgICAg
IkRlc3RpbmF0aW9uIGxhY2tzIGEgc3RydWN0dXJlIG1hcHBpbmciKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX25hdGl2ZV90eXBlX2hhc19zdHJ1Y3Rf
bWFwcGluZyhzcmNfdHlwZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT19TVFJV
Q1RfTUFQLAorICAgICAgICAgICAgICAgICAgICAgICJTb3VyY2UgbGFja3MgYSBzdHJ1Y3R1cmUg
bWFwcGluZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCF0
c2ZfdHlwZV9pbnN0YW5jZW9mKHNyY190eXBlLCBkZXN0X3R5cGUpKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfVFlQRV9NSVNNQVRDSCwgTlVMTCk7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICAKKyAgICBwcm90byA9IGdwY19wcm90b19jcmVhdGUoMik7CisgICAgaWYg
KHByb3RvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAg
IC8qIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCBhbGxvY2F0ZSB0aGUgcmVnaW9uIGZvciB1cy4g
Ki8KKyAgICBpZiAoIWFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAgICBHUENfSV9BTExPQ19S
T09UX01BWUJFXzJORCwKKyAgICAgICAgICAgICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUo
ZGVzdF90eXBlKSkpIHsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFnZW5lcmF0ZV9jb252ZXJ0ZXIo
cHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF90eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNyY190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwKSkgeworICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAoIWFwcGVuZChwcm90bywgR1BDX0lf
UE9QKSkgeworICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAoIWFwcGVuZChwcm90bywgR1BDX0lfUkVUVVJO
X1RPUF9XSVRIX1JFR0lPTikpIHsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOwor
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHByb3RvOworfQor
CitzdGF0aWMgdHNmX2Jvb2xfdCBuZWVkc19kZXN0cnVjdGlvbih0c2ZfdHlwZV90ICp0eXBlKSB7
CisgICAgdWludDMyX3QgaTsKKyAgICAKKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29kZSkgewor
ICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICAgICAgaWYgKHR5cGUtPnUucy5kZXN0cnVjdG9y
ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGlmICh0eXBlLT51LnMucHJlX2Rlc3RydWN0b3IgIT0gTlVMTCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBl
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbiA9IHRzZl9zdHJ1
Y3RfdHlwZV9nZXRfZWxlbWVudCh0eXBlLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAobi0+dHlw
ZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChuZWVkc19kZXN0cnVj
dGlvbihuLT50eXBlKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX3RydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgICAgICBpZiAodHlwZS0+dS5hLmVsZW1lbnRf
dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lEKSB7CisgICAgICAgICAgICAvKiBOb3RoaW5n
IHRvIGRvIC0gYSB2b2lkIGFycmF5IGlzbid0IHJlYWxseSBhIGNvbnRhaW5lci4gKi8KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgIGlmICh0c2ZfY2hv
aWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX3Ry
dWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSSU5HOgor
ICAgICAgICByZXR1cm4gdHNmX3RydWU7CisgICAgY2FzZSBUU0ZfVEtfQU5ZOgorICAgICAgICBy
ZXR1cm4gdHNmX3RydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogTm9uZSBvZiB0aGUgb3Ro
ZXIgdHlwZXMgaGF2ZSB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGZyZWVkLiAqLworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl9mYWxzZTsKK30KKworc3RhdGljIHRz
Zl9ib29sX3QgZ2VuZXJhdGVfZGVzdHJveWVyKGdwY19wcm90b190ICpwcm90bywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3Qgb2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgbGFiZWwpIHsKKyAgICB1aW50
MzJfdCBpOworICAgIGdwY19jZWxsX3QgbGFiZWxfb2Zmc2V0OworICAgIGdwY19jZWxsX3QgZG9u
ZV9sYWJlbCwgcmVhbGx5X2RvbmVfbGFiZWw7CisgICAgZ3BjX2NlbGxfdCAqdGFyZ2V0czsKKyAg
ICB0c2ZfYm9vbF90IHJlc3VsdDsKKyAgICAKKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29kZSkg
eworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICAgICAgLyogSWYgdGhlIHN0cnVjdCBoYXMg
YSBkZXN0cnVjdG9yLCBhc3N1bWUgdGhhdCBpdCB3aWxsIGRlc3Ryb3kgYWxsIG9mIHRoZSBmaWVs
ZHMsCisgICAgICAgICAgIGluY2x1ZGluZyB0aGUgb25lcyB0aGF0IHdlIGtub3cgYWJvdXQuICov
CisgICAgICAgIGlmICh0eXBlLT51LnMuZGVzdHJ1Y3RvciAhPSBOVUxMKSB7CisgICAgICAgICAg
ICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ0FMTCwKKyAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnUucy5kZXN0cnVjdG9yKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAodHlwZS0+dS5zLnByZV9kZXN0cnVjdG9yICE9IE5V
TEwpIHsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ0FMTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZS0+dS5zLnByZV9kZXN0cnVjdG9yKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkg
eworICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2Zfc3RydWN0X3R5cGVf
Z2V0X2VsZW1lbnQodHlwZSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKG4tPnR5cGUtPmtpbmRf
Y29kZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBDKGdlbmVyYXRlX2Rlc3Ryb3llcihwcm90
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT50eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIG4tPm9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgICAg
ICBpZiAodHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lEKSB7
CisgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIGRvIC0gYSB2b2lkIGFycmF5IGlzbid0IHJlYWxs
eSBhIGNvbnRhaW5lci4gKi8KKyAgICAgICAgfSBlbHNlIGlmICh0eXBlLT51LmEuZWxlbWVudF90
eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgQyhhcHBlbmQocHJv
dG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9GUkVFLAorICAgICAgICAgICAgICAgICAg
ICAgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QsIGJpdHMpKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobmVlZHNfZGVzdHJ1Y3Rpb24odHlw
ZS0+dS5hLmVsZW1lbnRfdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBncGNfY2VsbF90IGxvb3Bf
bGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsrOwor
ICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdQQ19JX1BVU0hfUFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIHRzZl9v
ZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsIGRhdGEpKSk7CisgICAgICAgICAgICAgICAgQyhh
cHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgR1BDX0lfUkVQVVNIX01VTEFE
RF9QVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRz
Zl9uYXRpdmVfYXJyYXlfdCwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbmF0
aXZlX3R5cGVfZ2V0X3NpemUodHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKyAgICAgICAgICAg
ICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09NUEZBSUxKVU1QLCBkb25lX2xhYmVsKSk7Cisg
ICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCBsb29wX2xhYmVsKSk7
CisgICAgICAgICAgICAgICAgQyhnZW5lcmF0ZV9kZXN0cm95ZXIocHJvdG8sIHR5cGUtPnUuYS5l
bGVtZW50X3R5cGUsIDAsIGxhYmVsKSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgR1BDX0lfQUREQ09NUEpVTVAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX25hdGl2ZV90eXBlX2dldF9zaXplKHR5cGUtPnUuYS5lbGVtZW50
X3R5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BfbGFiZWwpKTsKKyAgICAgICAg
ICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfTEFCRUwsIGRvbmVfbGFiZWwpKTsKKyAgICAg
ICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfVFdPX1BPUCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRlJFRSwg
b2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwgZGF0YSkpKTsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgIGlm
ICh0c2ZfY2hvaWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICBsYWJl
bF9vZmZzZXQgPSBsYWJlbDsKKyAgICAgICAgICAgIGxhYmVsICs9IHRzZl9jaG9pY2VfdHlwZV9n
ZXRfbnVtX2VsZW1lbnRzKHR5cGUpOworICAgICAgICAgICAgZG9uZV9sYWJlbCA9IGxhYmVsKys7
CisgICAgICAgICAgICByZWFsbHlfZG9uZV9sYWJlbCA9IGxhYmVsKys7CisgICAgICAgICAgICB0
YXJnZXRzPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkqCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSk7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0cyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygi
Q291bGQgbm90IG1hbGxvYyBhcnJheSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZ3BjX2NlbGxfdCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90eXBlX2dl
dF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgICAgIHRhcmdldHNbaV0g
PSBsYWJlbF9vZmZzZXQgKyBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0PWFw
cGVuZF90YWJsZWp1bXBfZmllbGQoCisgICAgICAgICAgICAgICAgcHJvdG8sCisgICAgICAgICAg
ICAgICAgb2Zmc2V0ICsgdHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICB0
c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSwKKyAgICAgICAgICAgICAgICB0
YXJnZXRzKTsKKyAgICAgICAgICAgIGZyZWUodGFyZ2V0cyk7CisgICAgICAgICAgICBpZiAoIXJl
c3VsdCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgcmVhbGx5X2RvbmVfbGFi
ZWwpKTsgLyogZm9yIHVua25vd24gdmFsdWVzICovCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAg
ICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1l
bnQodHlwZSwgaSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVM
LCBsYWJlbF9vZmZzZXQgKyBpKSk7CisgICAgICAgICAgICAgICAgaWYgKHRzZl9uYXRpdmVfY2hv
aWNlX3R5cGVfaXNfaW5fcGxhY2UodHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQyhnZW5l
cmF0ZV9kZXN0cm95ZXIocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9mZnNldCArIHR5cGUtPnUuaC5kYXRhX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAvKiBjYW5ub3QgbW92ZSB0aGlzIHB1c2ggYWJvdmUgdGhlIHRhYmxl
anVtcCBzaW5jZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdGFibGVqdW1wIHVzZXMgdGhl
IHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLCBhbmQKKyAgICAgICAgICAgICAgICAgICAg
ICAgSSBkb24ndCBmZWVsIGxpa2UgYWRkaW5nIGEgc2Vjb25kIHRhYmxlanVtcCBqdXN0IHRvCisg
ICAgICAgICAgICAgICAgICAgICAgIGdldCBhcm91bmQgdGhhdC4gKi8KKyAgICAgICAgICAgICAg
ICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BVU0hfUFRSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmguZGF0YV9vZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQyhnZW5lcmF0ZV9kZXN0cm95ZXIocHJvdG8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhYmVsKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9KVU1QLCBkb25lX2xhYmVsKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAvKiBpZiBpdCBpcyBpbiBwbGFjZSwgeW91IGdldCB0d28gbGFiZWxzLi4uICBvaCB3ZWxs
LiAqLworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCBkb25lX2xhYmVs
KSk7CisgICAgICAgICAgICBpZiAoIXRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxhY2Uo
dHlwZSkpIHsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRlJFRV9JTU1F
RElBVEUpKTsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUE9QKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfTEFCRUwsIHJl
YWxseV9kb25lX2xhYmVsKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfU1RSSU5HOgorICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRlJFRSwgb2Zmc2V0
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FOWToKKyAgICAgICAgQyhhcHBl
bmQocHJvdG8sIEdQQ19JX0RFU1RST1lfQlVGRkVSLCBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogTm9uZSBvZiB0aGUgb3RoZXIgdHlwZXMgaGF2ZSB0
aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGZyZWVkLiAqLworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCitncGNfcHJvdG9fdCAqdHNmX2dwY19jb2Rl
X2dlbl9nZW5lcmF0ZV9kZXN0cm95ZXIodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIGdwY19wcm90
b190ICpwcm90bzsKKyAgICAKKyAgICBpZiAoIXRzZl9uYXRpdmVfdHlwZV9oYXNfc3RydWN0X21h
cHBpbmcodHlwZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT19TVFJVQ1RfTUFQ
LCBOVUxMKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHByb3RvID0g
Z3BjX3Byb3RvX2NyZWF0ZSgxKTsKKyAgICBpZiAocHJvdG8gPT0gTlVMTCkgeworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFnZW5lcmF0ZV9kZXN0cm95ZXIocHJv
dG8sIHR5cGUsIDAsIDApKSB7CisgICAgICAgIGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghYXBwZW5kKHByb3RvLCBH
UENfSV9SRVRVUk5fT05FKSkgeworICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7Cisg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcHJvdG87Cit9CisK
KwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pbmRlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X2luZGVudC5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfaW5kZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJ
TElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBGUF9UU0ZfSU5ERU5UX0gKKyNkZWZpbmUgRlBfVFNGX0lOREVOVF9ICisKKyNpbmNs
dWRlIDxpbnR0eXBlcy5oPgorCisvKiByZXR1cm5zIGFuIGluZGVudCBzdHJpbmcgKi8KK2NvbnN0
IGNoYXIgKnRzZl9pbmRlbnRfc3RyKHVpbnQzMl90IGluZGVudCk7CisKKyNlbmRpZgorCkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pbnRl
cm5hbC5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L3RzZi90c2ZfaW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2NDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTEsIDIwMTQsIDIwMTUgRmls
aXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlBfVFNGX0lOVEVSTkFMX0gKKyNkZWZpbmUgRlBf
VFNGX0lOVEVSTkFMX0gKKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbF9jb25maWcuaCIKKyNpbmNs
dWRlICJ0c2YuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgor
I2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyNpbmNsdWRlICJ0c2ZfaW50dHlwZXMuaCIKKworLyog
ZGVmaW5lIGFsbCBvZiB0aGUgc3RydWN0cyB0aGF0IHdlcmUgbGVmdCBvcGFxdWUgaW4gdHNmLmgu
ICovCitzdHJ1Y3QgdHNmX3R5cGVfdGFibGUgeworICAgIHRzZl9uYW1lZF90eXBlX3QgKiplbGVt
ZW50czsKKyAgICB1aW50MzJfdCBudW1fZWxlbWVudHM7CisgICAgCisgICAgdHNmX3N0X3RhYmxl
ICplbGVfdGFibGU7Cit9OworCitzdHJ1Y3QgdHNmX3R5cGVfaW5fbWFwIHsKKyAgICB2b2lkICpy
ZWdpb247ICAgICAgICAgICAvKiBOVUxMIGlmIG5vdCBhbGxvY2F0ZWQgaW4gYSByZWdpb24gKi8K
KyAgICB0c2ZfdHlwZV90ICoqZWxlbWVudHM7CisgICAgdWludDMyX3QgbnVtX2VsZW1lbnRzOwor
ICAgIHVpbnQzMl90IGNhcGFjaXR5OworfTsKKworc3RydWN0IHRzZl9yYV90eXBlX2luZm8gewor
ICAgIHVpbnQzMl90IHR5cGVfY29kZTsKKyAgICB1aW50NjRfdCByZWZfY291bnQ7Cit9OworCitz
dHJ1Y3QgdHNmX3JhX3RjX25vZGUgeworICAgIHVpbnQzMl90IHR5cGVfY29kZTsKKyAgICB0c2Zf
cmFfdGNfbm9kZV90ICpuZXh0OworfTsKKworc3RydWN0IHRzZl9yYV90eXBlX21hbiB7CisgICAg
dHNmX3JhX3RjX25vZGVfdCAqdHlwZV9jb2RlczsKKyAgICB0c2Zfc3RfdGFibGUgKm91dF9tYXA7
CisgICAgdHNmX3N0X3RhYmxlICppbl9tYXA7Cit9OworCitzdHJ1Y3QgdHNmX3R5cGUgeworICAg
IHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGU7CisgICAgCisgICAgLyogdHJ1ZSBpZiB0aGlzIGlz
IGFuIEFOWSBvciBpZiBpcyBhIGNvbnRhaW5lciB0aGF0IGNvbnRhaW5zIGFuIEFOWS4gKi8KKyAg
ICB0c2ZfYm9vbF90IGlzX2R5bmFtaWM7CisgICAgCisgICAgdW5pb24geworICAgICAgICAvKiBh
ZGRpdGlvbmFsIGRhdGEgZm9yIGFycmF5ICovCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAg
ICB0c2ZfdHlwZV90ICplbGVtZW50X3R5cGU7CisgICAgICAgIH0gYTsKKyAgICAgICAgCisgICAg
ICAgIC8qIGFkZGl0aW9uYWwgZGF0YSBmb3Igc3RydWN0ICovCisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICAvKiBzdHJ1Y3QgbWFwcGluZyBzdXBwb3J0IC0gbmVlZCB0byBrbm93IHRoZSBz
aXplIG9mCisgICAgICAgICAgICAgKiB0aGUgc3RydWN0IGluIG1lbW9yeS4gIHRoaXMgaXMgTk9U
IHRoZSBzdW0gb2YgdGhlCisgICAgICAgICAgICAgKiBzaXplcyBvZiB0aGUgZWxlbWVudHMsIGJl
Y2F1c2UgdGhhdCBkb2Vzbid0IHRha2UKKyAgICAgICAgICAgICAqIGludG8gYWNjb3VudCBwYWRk
aW5nIG9yIHRoZSBwb3NzaWJpbGl0eSBvZiBhZGRpdGlvbmFsCisgICAgICAgICAgICAgKiBmaWVs
ZHMgaW4gdGhhdCBzdHJ1Y3QgdGhhdCB0aGUgdXNlciBpc24ndCB0ZWxsaW5nIHVzCisgICAgICAg
ICAgICAgKiBhYm91dC4gIEhPV0VWRVIhIHdlIGNhbiBiZSBzdXJlIHRoYXQgdGhpcyBzaXplIG11
c3QKKyAgICAgICAgICAgICAqIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3VtIG9m
IHRoZSBzaXplcyBvZgorICAgICAgICAgICAgICogdGhlIGVsZW1lbnRzLiAqLworICAgICAgICAg
ICAgdHNmX2Jvb2xfdCBoYXNfc2l6ZTsKKyAgICAgICAgICAgIHNpemVfdCBzaXplOworCisJICAg
IHZvaWQgKCpjb25zdHJ1Y3Rvcikodm9pZCAqKTsKKwkgICAgdm9pZCAoKnByZV9kZXN0cnVjdG9y
KSh2b2lkICopOworCSAgICB2b2lkICgqZGVzdHJ1Y3Rvcikodm9pZCAqKTsKKworICAgICAgICAg
ICAgdHNmX3R5cGVfdGFibGVfdCAqdHQ7CisgICAgICAgIH0gczsKKyAgICAgICAgCisgICAgICAg
IC8qIGFkZGl0aW9uYWwgZGF0YSBmb3IgY2hvaWNlICovCisgICAgICAgIHN0cnVjdCB7CisgICAg
ICAgICAgICB0c2ZfdHlwZV90YWJsZV90ICp0dDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Lyogc3RydWN0IG1hcHBpbmcgc3VwcG9ydCAqLworICAgICAgICAgICAgdHNmX2Jvb2xfdCBoYXNf
bWFwcGluZzsKKwkgICAgCisJICAgIHRzZl9ib29sX3QgaW5fcGxhY2U7ICAgIC8qIHVzZSB1bmlv
bj8gKi8KKyAgICAgICAgICAgIHRzZl9ib29sX3QgY2hvaWNlX2FzX2Z1bGxfd29yZDsgLyogdXNl
IGZ1bGwgMzItYml0IHdvcmQgZm9yIGVtaXR0aW5nIHRoZSBjaG9pY2UuICovCisKKyAgICAgICAg
ICAgIHNpemVfdCB2YWx1ZV9vZmZzZXQ7ICAgIC8qIG9mZnNldCB0byB0aGUgdmFsdWUgZmllbGQg
Ki8KKyAgICAgICAgICAgIHNpemVfdCBkYXRhX29mZnNldDsgICAgIC8qIG9mZnNldCB0byB0aGUg
dW5pb24gaWYgaW5fcGxhY2UKKwkJCQkgICAgICAgaXMgdHJ1ZSwgb3IgdG8gdGhlIHBvaW50ZXIg
aWYKKwkJCQkgICAgICAgaXQgaXMgZmFsc2UuICovCisgICAgICAgICAgICBzaXplX3Qgc2l6ZTsg
ICAgICAgICAgICAvKiBzaXplIG9mIHRoZSBjaG9pY2Ugc3RydWN0dXJlICovCisgICAgICAgIH0g
aDsKKyAgICB9IHU7CisgICAgCisgICAgLyogcHJlY29tcHV0ZWQgaGFzaCBjb2RlLiAgc2luY2Ug
ZWFjaCB0c2ZfdHlwZSBvYmplY3QgaXMgaW1tdXRhYmxlCisgICAgICogKHRoYXQncyB3aHkgYWxs
IGZ1bmN0aW9ucyB0aGF0ICdtb2RpZnknIGEgdHNmX3R5cGUgYWN0dWFsbHkgdGFrZQorICAgICAq
IGEgcG9pbnRlciB0byBhIHBvaW50ZXIgdG8gYSB0c2ZfdHlwZSAtIHNvIHRoYXQgaW5zdGVhZCBv
ZiBtb2RpZnlpbmcKKyAgICAgKiB0aGUgYWN0dWFsIHRzZl90eXBlLCBpdCBhbGxvY2F0ZXMgYSBu
ZXcgb25lIGFuZCBjaGFuZ2VzIHlvdXIKKyAgICAgKiBwb2ludGVyKSwgdGhlIGhhc2ggY29kZSBj
YW4gc2FmZWx5IGJlIHByZWNvbXB1dGVkIHdoZW4gdGhlCisgICAgICogdHNmX3R5cGUgaXMgY3Jl
YXRlZC4gKi8KKyAgICBpbnQgaGFzaF9jb2RlOworICAgIAorICAgIC8qIGxhemlseSBjb21wdXRl
ZCB0eXBlIHNpemUgaW4gYnl0ZXMuICBpZiBpdCBoYXNuJ3QgYmVlbiBjb21wdXRlZCB5ZXQsCisg
ICAgICogaXRzIHZhbHVlIHdpbGwgYmUgMC4gKi8KKyAgICB2b2xhdGlsZSB1aW50MzJfdCBieXRl
X3NpemU7CisgICAgCisgICAgLyogaG9sZGVyIGZvciBhbiBvcHRpb25hbCBjb21tZW50IHN1cHBs
aWVkIGJ5IHRoZSB1c2VyLiAgb25seQorICAgICAqIGNvbW1lbnRhYmxlIHR5cGVzIGNhbiBob2xk
IGNvbW1lbnRzICh1c2UgdHNmX3R5cGVfa2luZF9pc19jb21tZW50YWJsZSgpCisgICAgICogdG8g
ZmluZCBvdXQgaWYgaXQgaXMgY29tbWVudGFibGUpLiAgdGhlIGNvbW1lbnQgaXMgYSBVVEYtOCBz
dHJpbmcKKyAgICAgKiBzdXBwbGllZCBieSB0aGUgdXNlciB2aWEgYSBmdW5jdGlvbiBjYWxsIChz
ZWUgdHNmX3R5cGVfc2V0X2NvbW1lbnQoKSkKKyAgICAgKiBvciBieSB1c2luZyBqYXZhZG9jIGNv
bW1lbnRzIGluIGRlZmluaXRpb25zIHBhc3NlZCB0byB0c2ZfZGVmaW5lLiAqLworICAgIGNoYXIg
KmNvbW1lbnQ7CisgICAgCisgICAgLyogaG9sZGVyIGZvciBhbiBvcHRpb25hbCB0eXBlIG5hbWUg
c3VwcGxpZWQgYnkgdGhlIHVzZXIuICBvbmx5CisgICAgICogY29tbWVudGFibGUgdHlwZXMgY2Fu
IGhhdmUgbmFtZXMgKHVzZSB0c2ZfdHlwZV9raW5kX2lzX2NvbW1lbnRhYmxlKCkKKyAgICAgKiB0
byBmaW5kIG91dCBpZiBpdCBpcyBjb21tZW50YWJsZSkuICB0aGUgbmFtZSBpcyBhIFVURi04IHN0
cmluZworICAgICAqIHN1cHBsaWVkIGJ5IHRoZSB1c2VyIHZpYSBhIGZ1bmN0aW9uIGNhbGwgKHNl
ZSB0c2ZfdHlwZV9zZXRfbmFtZSgpKS4KKyAgICAgKiB0eXBlcyBkZWZpbmVkIHVzaW5nIHRzZl9k
ZWZpbmUgYXV0b21hdGljYWxseSBoYXZlIG5hbWVzLiAqLworICAgIGNoYXIgKm5hbWU7CisgICAg
CisgICAgLyogb3B0aW9uYWwgdmVyc2lvbiBudW1iZXIgZm9yIGEgdHlwZS4gIHRoZSBkZWZhdWx0
IHZhbHVlIGlzIDAuCisgICAgICogdGhpcyBpcyBhY3R1YWxseSBhbiBlbmNvZGluZyBvZiBtYWpv
ci5taW5vci5wYXRjaCwgd2hlcmUgbWFqb3IKKyAgICAgKiBpcyBhIHVpbnQxNl90LCBtaW5vciBp
cyBhIHVpbnQ4X3QsIGFuZCBwYXRjaCBpcyBhIHVpbnQ4X3QuCisgICAgICogdGhpcyBjYW4gb25s
eSBiZSBjaGFuZ2VkIGZvciBjb21tZW50YWJsZSB0eXBlcyAodXNlCisgICAgICogdHNmX3R5cGVf
a2luZF9pc19jb21tZW50YWJsZSgpIHRvIGZpbmQgb3V0IGlmIGl0IGlzIGNvbW1lbnRhYmxlKS4g
Ki8KKyAgICB1aW50MzJfdCB2ZXJzaW9uOworICAgIAorICAgIC8qIG9ubHkgdXNlZCBmb3Igbm9u
LXNpbmdsZXRvbnMgKi8KKyAgICB0c2ZfYXRvbWljX2NvdW50X3QgcmVmX2NvdW50OworCisgICAg
LyogZm9yIG1lbW9pemF0aW9uOiBwb2ludHMgYXQgdGhlIG1lbW8gbWFzdGVyLiBtYXkgYmUgTlVM
TCwgaW5kaWNhdGluZworICAgICAqIHRoYXQgd2UgaGF2ZW4ndCBldmVyIG1lbW9pemVkIHRoaXMg
dHlwZS4gbWF5IHBvaW50IHRvIHNlbGYsCisgICAgICogaW5kaWNhdGluZyB0aGF0IHRoaXMgaXMg
dGhlIG1lbW8gbWFzdGVyLiAqLworICAgIHRzZl90eXBlX3QgKm1lbW9fbWFzdGVyOworfTsKKwor
c3RydWN0IHRzZl9uYW1lZF90eXBlIHsKKyAgICBjaGFyICpuYW1lOworICAgIHRzZl90eXBlX3Qg
KnR5cGU7CisgICAgdWludDMyX3QgaW5kZXg7CisgICAgCisgICAgLyogZm9yIHN0cnVjdCBlbnRy
aWVzIC0gc3RydWN0IGVudHJpZXMgbWF5IGJlIG1hcmtlZCBvcHRpb25hbC4gIG5vdGUKKyAgICAg
KiB0aGF0IGlmIHdlIGhhdmUgc3RydWN0dXJlIEEsIEIsIGFuZCBDLCBzbyB0aGF0IEEgZG9lcyBu
b3QgaGF2ZQorICAgICAqIGZpZWxkIEYsIEIgaGFzIGFuIG9wdGlvbmFsIGZpZWxkIEYsIGFuZCBD
IGhhcyBmaWVsZCBGLCB0aGVuLCBhc3N1bWluZworICAgICAqIHRoZSBzdHJ1Y3RzIGFyZSBvdGhl
cndpc2UgZXF1YWwsIHRoZSBpbnN0YW5jZW9mICdtYXRyaXgnIGdvZXMgYXMKKyAgICAgKiBmb2xs
b3dzOgorICAgICAqCisgICAgICogICBBIEIgQworICAgICAqIEEgWSBZIE4KKyAgICAgKiBCIFkg
WSBOCisgICAgICogQyBZIFkgWQorICAgICAqIAorICAgICAqIEluIG90aGVyIHdvcmRzLCBhIHN0
cnVjdHVyZSB3aXRoIGFuIG9wdGlvbmFsIEYgaXMgbm90IGluc3RhbmNlb2YgYQorICAgICAqIHN0
cnVjdHVyZSB3aXRoIGEgbWFuZGF0b3J5IEYuICovCisgICAgdHNmX2Jvb2xfdCBvcHRpb25hbDsK
KyAgICAKKyAgICAvKiBzdHJ1Y3QgbWFwcGluZyBzdXBwb3J0IC0gbmVlZCB0byBrbm93IHRoZSBv
ZmZzZXQgb2YgdGhpcworICAgICAqIGVsZW1lbnQgd2l0aGluIGl0cyBwYXJlbnQgc3RydWN0Lgor
ICAgICAqCisgICAgICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYXBwbHkgdG8gY2hvaWNlIHR5
cGVzLCB3aGVyZQorICAgICAqIGFsbCBlbGVtZW50cyBoYXZlIHRoZSBzYW1lIG9mZnNldC4gKi8K
KyAgICB0c2ZfYm9vbF90IGhhc19vZmZzZXQ7CisgICAgc2l6ZV90IG9mZnNldDsKKyAgICAKKyAg
ICAvKiBob2xkZXIgZm9yIGFuIG9wdGlvbmFsIGNvbW1lbnQgc3VwcGxpZWQgYnkgdGhlIHVzZXIg
ZWl0aGVyIHRocm91Z2gKKyAgICAgKiBhIGZ1bmN0aW9uIGNhbGwgb3IgdGhyb3VnaCB0c2ZfZGVm
aW5lLiAqLworICAgIGNoYXIgKmNvbW1lbnQ7Cit9OworCitzdHJ1Y3QgdHNmX2J1ZmZlciB7Cisg
ICAgdHNmX3R5cGVfdCAqdHlwZTsKKyAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXM7CisgICAg
dHNmX2Jvb2xfdCBrZWVwOworICAgIHZvaWQgKmRhdGE7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAg
ICAKKyAgICB0c2ZfYXRvbWljX2NvdW50X3QgcmVmX2NvdW50OworfTsKKworc3RydWN0IHRzZl9y
ZWZsZWN0IHsKKyAgICB0c2ZfdHlwZV90ICp0eXBlOworICAgIHVuaW9uIHsKKyAgICAgICAgLyog
Y29udGFpbmVyLCB1c2VkIGZvciBib3RoIHN0cnVjdCBhbmQgYXJyYXkuICBub3RlIHRoYXQgaXQK
KyAgICAgICAgICogaXMgdXNlZCBkaWZmZXJlbnRseSBmb3Igc3RydWN0IGFuZCBmb3IgYXJyYXku
ICovCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICoqYXJyYXk7
CisgICAgICAgICAgICB1aW50MzJfdCBzaXplOworICAgICAgICB9IGM7CisgICAgICAgIAorICAg
ICAgICAvKiBjaG9pY2UgZGF0YS4gKi8KKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVp
bnQzMl90IGNob2ljZTsgICAgLyogJ3Vua25vd24nIGlmIGVxdWFsIHRvIFVJTlQzMl9NQVggKi8K
KyAgICAgICAgICAgIHRzZl9yZWZsZWN0X3QgKmRhdGE7CisgICAgICAgIH0gaDsKKyAgICAgICAg
CisgICAgICAgIC8qIHN0cmluZyBkYXRhLiAqLworICAgICAgICBjaGFyICpzdHI7CisgICAgICAg
IAorICAgICAgICAvKiBwcmltaXRpdmVzICovCisgICAgICAgIGludDhfdCAgIHBfaW50OF90Owor
ICAgICAgICB1aW50OF90ICBwX3VpbnQ4X3Q7CisgICAgICAgIGludDE2X3QgIHBfaW50MTZfdDsK
KyAgICAgICAgdWludDE2X3QgcF91aW50MTZfdDsKKyAgICAgICAgaW50MzJfdCAgcF9pbnQzMl90
OworICAgICAgICB1aW50MzJfdCBwX3VpbnQzMl90OworICAgICAgICBpbnQ2NF90ICBwX2ludDY0
X3Q7CisgICAgICAgIHVpbnQ2NF90IHBfdWludDY0X3Q7CisgICAgICAgIHRzZl9pbnRlZ2VyX3Qg
cF9pbnRlZ2VyOworICAgICAgICB0c2ZfbG9uZ190IHBfbG9uZzsKKyAgICAgICAgZmxvYXQgICAg
cF9mbG9hdDsKKyAgICAgICAgZG91YmxlICAgcF9kb3VibGU7CisgICAgICAgIAorICAgICAgICAv
KiBiaXQgKi8KKyAgICAgICAgdHNmX2Jvb2xfdCBiaXQ7CisgICAgICAgIAorICAgICAgICAvKiBm
b3IgdGhlIGFueSB0eXBlICovCisgICAgICAgIHRzZl9idWZmZXJfdCAqYW55OworICAgIH0gdTsK
K307CisKK3N0cnVjdCB0c2ZfZ2VucnRyIHsKKyAgICB0c2ZfdHlwZV90ICp0eXBlOworICAgIGdw
Y19wcm9ncmFtX3QgKmdlbmVyYXRvcjsKK307CisKK3N0cnVjdCB0c2ZfcGFyc2VyIHsKKyAgICB0
c2ZfdHlwZV90ICpleHBlY3RlZF90eXBlOworICAgIHNpemVfdCBleHBlY3RlZF90eXBlX3NpemU7
CisgICAgdHNmX3N0X3RhYmxlICpwYXJzZXJzOworICAgIAorICAgIGdwY19wcm9ncmFtX3QgKmNh
Y2hlZF9wcm9ncmFtOworICAgIHRzZl90eXBlX3QgKmNhY2hlZF90eXBlOworICAgIAorICAgIHRz
Zl9tdXRleF90IGxvY2s7Cit9OworCitzdHJ1Y3QgdHNmX2NvcGllciB7CisgICAgZ3BjX3Byb2dy
YW1fdCAqY29waWVyOworfTsKKworc3RydWN0IHRzZl9kZXN0cnVjdG9yIHsKKyAgICBncGNfcHJv
Z3JhbV90ICpkZXN0cnVjdG9yOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHRzZl90eXBl
X2NiYWNrX3QgY2JhY2s7CisgICAgdm9pZCAqYXJnOworfSB0c2Zfc2VyaWFsX2luX21hbl9jYmFj
a190OworCitzdHJ1Y3QgdHNmX3NlcmlhbF9pbl9tYW4geworICAgIHRzZl90eXBlX2luX21hcF90
ICp0eXBlczsKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9zdGF0ZV90IHN0YXRlOworICAgIAorICAg
IHVpbnQzMl90IHR5cGVzX2J5dGVfc2l6ZTsKKyAgICAKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9j
YmFja190ICpjYmFja3M7CisgICAgdWludDMyX3QgbnVtX2NiYWNrczsKKyAgICAKKyAgICB0c2Zf
cmVhZGVyX3QgcmVhZGVyOworICAgIHZvaWQgKmFyZzsKKyAgICAKKyAgICB0c2ZfbGltaXRzX3Qg
KmxpbWl0czsKK307CisKK3N0cnVjdCB0c2Zfc2VyaWFsX291dF9tYW4geworICAgIHRzZl90eXBl
X291dF9tYXBfdCAqdHlwZXM7CisgICAgCisgICAgdHNmX3dyaXRlcl90IHdyaXRlcjsKKyAgICB2
b2lkICphcmc7Cit9OworCitzdHJ1Y3QgdHNmX3NoYTFfd3RyIHsKKyAgICB0c2ZfU0hBMUNvbnRl
eHQgY3R4OworfTsKKworc3RydWN0IHRzZl9idWZfcmRyIHsKKyAgICBpbnQgZmQ7CisgICAgdHNm
X2Jvb2xfdCBrZWVwX2ZkOworICAgIHVpbnQ4X3QgKmJ1ZjsKKyAgICB1aW50MzJfdCBzaXplOwor
ICAgIHVpbnQzMl90IHB1dGk7CisgICAgdWludDMyX3QgZ2V0aTsKK307CisKK3N0cnVjdCB0c2Zf
YnVmX3d0ciB7CisgICAgaW50IGZkOworICAgIHRzZl9ib29sX3Qga2VlcF9mZDsKKyAgICB1aW50
OF90ICpidWY7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICB1aW50MzJfdCBwb3M7Cit9OworCitz
dHJ1Y3QgdHNmX3ppcF9yZHIgeworICAgIHRzZl96aXBfbW9kZV90IG1vZGU7CisgICAgCisgICAg
dHNmX3BhcnRpYWxfcmVhZGVyX3QgcmVhZGVyOworICAgIHZvaWQgKnJlYWRlcl9hcmc7CisgICAg
CisgICAgdm9pZCAqc3RyZWFtOyAgIC8qIGNhbiBiZSBlaXRoZXIgb2YgdHlwZSB6X3N0cmVhbSBv
ciBiel9zdHJlYW0gKi8KKyAgICAKKyAgICB0c2ZfemlwX2Fic3RyYWN0X3QgYWJzdHJhY3Q7Cisg
ICAgCisgICAgdHNmX2Jvb2xfdCBkZWNvbXBfZW9mOyAgLyogdHJ1ZSBpZiB0aGUgZGVjb21wcmVz
c2lvbiBhbGdvcml0aG0gaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVhY2hl
ZCBFT0YuICovCisgICAgCisgICAgdWludDhfdCAqYnVmOworICAgIHVpbnQzMl90IGJ1Zl9zaXpl
OworfTsKKworc3RydWN0IHRzZl96aXBfd3RyIHsKKyAgICB0c2ZfemlwX21vZGVfdCBtb2RlOwor
ICAgIAorICAgIHRzZl93cml0ZXJfdCB3cml0ZXI7CisgICAgdm9pZCAqd3JpdGVyX2FyZzsKKyAg
ICAKKyAgICB2b2lkICpzdHJlYW07ICAgLyogY2FuIGJlIGVpdGhlciBvZiB0eXBlIHpfc3RyZWFt
IG9mIGJ6X3N0cmVhbSAqLworICAgIAorICAgIHRzZl96aXBfYWJzdHJhY3RfdCBhYnN0cmFjdDsK
KyAgICAKKyAgICB1aW50OF90ICpidWY7CisgICAgdWludDMyX3QgYnVmX3NpemU7Cit9OworCitz
dHJ1Y3QgdHNmX2FkcHRfcmRyIHsKKyAgICB0c2ZfemlwX21vZGVfdCBtb2RlOworICAgIAorICAg
IHRzZl9wYXJ0aWFsX3JlYWRlcl90IHJlYWRlcjsKKyAgICB2b2lkICpyZWFkZXJfYXJnOworICAg
IAorICAgIHZvaWQgKnN0cmVhbTsgICAvKiBjYW4gYmUgZWl0aGVyIG9mIHR5cGUgel9zdHJlYW0g
b3IgYnpfc3RyZWFtICovCisgICAgCisgICAgdHNmX3ppcF9hYnN0cmFjdF90IGFic3RyYWN0Owor
ICAgIAorICAgIHRzZl9ib29sX3QgZXhwZWN0X3N3aXRjaDsKKyAgICAKKyAgICB1aW50OF90ICpi
dWY7CisgICAgdWludDMyX3QgcHV0aSxnZXRpOyAvKiBzYW1lIGFzIGluIGJ1ZmZlcmVkIHJlYWRl
ciAqLworICAgIHVpbnQzMl90IGJ1Zl9zaXplOworCisgICAgdHNmX3ppcF9yZHJfYXR0cl90IGF0
dHI7CisgICAgdWludDMyX3Qgbm96aXBfYnVmX3NpemU7Cit9OworCitzdHJ1Y3QgdHNmX3N0cmVh
bV9maWxlX2lucHV0IHsKKyAgICBpbnQgZmQ7CisgICAgdHNmX2Jvb2xfdCBrZWVwX2ZkOworICAg
IAorICAgIHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbjsKKyAgICAKKyAgICB0c2ZfYm9vbF90
IHVzZV9hZHB0OworICAgIHVuaW9uIHsKKyAgICAgICAgdHNmX2J1Zl9yZHJfdCAqYnVmOworICAg
ICAgICB0c2ZfYWRwdF9yZHJfdCAqYWRwdDsKKyAgICAgICAgdm9pZCAqcHRyOworICAgIH0gcmVh
ZGVyOworfTsKKworc3RydWN0IHRzZl9zdHJlYW1fZmlsZV9vdXRwdXQgeworICAgIGludCBmZDsK
KyAgICB0c2ZfYm9vbF90IGtlZXBfZmQ7CisgICAgCisgICAgdHNmX3NlcmlhbF9vdXRfbWFuX3Qg
Km91dF9tYW47CisgICAgCisgICAgdHNmX2Jvb2xfdCB1c2VfemlwOworICAgIHVuaW9uIHsKKyAg
ICAgICAgdHNmX2J1Zl93dHJfdCAqYnVmOworICAgICAgICB0c2ZfemlwX3d0cl90ICp6aXA7Cisg
ICAgICAgIHZvaWQgKnB0cjsKKyAgICB9IHdyaXRlcjsKKyAgICAKKyAgICB0c2ZfYm9vbF90IGFs
bF9nb29kOworfTsKKworc3RydWN0IHRzZl9mc2RiX2Nvbm5lY3Rpb24geworICAgIGludCBmZDsK
KyAgICB0c2ZfYm9vbF90IGNsZWFyOworICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbjsK
KyAgICB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dDsKKyAgICB1aW50OF90ICpidWY7Cisg
ICAgdWludDMyX3QgYnVmX3NpemU7CisgICAgdWludDMyX3QgYnVmX2N1cnNvcjsKK307CisKK3N0
cnVjdCB0c2ZfZnNkYiB7CisgICAgdHNmX2ZzZGJfa2luZF90IGtpbmQ7CisgICAgdW5pb24gewor
ICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgRElSICpkaXJoYW5kbGU7CisgICAgICAgICAg
ICBjb25zdCBjaGFyICpkaXJuYW1lOworICAgICAgICAgICAgdHNmX2Jvb2xfdCB1cGRhdGU7Cisg
ICAgICAgICAgICB0c2ZfYm9vbF90IHRydW5jYXRlOworICAgICAgICAgICAgdWludDY0X3QgY3Jl
YXRlX2NudDsKKyAgICAgICAgfSBsb2NhbDsKKyAgICAgICAgc3RydWN0IHsKKyNpZmRlZiBUU0Zf
SEFWRV9CU0RTT0NLUworICAgICAgICAgICAgLyogRklYTUU6IG9wZW5fcmVtb3RlKCkgc2hvdWxk
IGF0dGVtcHQgdG8gY29ubmVjdCBqdXN0IHRvIHNlZSB3aGljaAorICAgICAgICAgICAgICogYWRk
cmVzcyB3b3Jrcy4gIGl0IHNob3VsZCBsZWF2ZSB0aGF0IGNvbm5lY3Rpb24gb3BlbiB1bnRpbCB0
aGUKKyAgICAgICAgICAgICAqIGZpcnN0IHB1dC9nZXQgcmVxdWVzdC4gIGFuZCBpdCBzaG91bGQg
bGVhdmUgZW5vdWdoIGluZm8gaW4gaGVyZQorICAgICAgICAgICAgICogdG8gbWFrZSBzdWJzZXF1
ZW50IGNvbm5lY3Rpb24gcmVxdWVzdHMgcG9zc2libGUuICovCisjaWZkZWYgVFNGX0hBVkVfR0VU
QUREUklORk8KKyAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqcmVzdWx0OworICAgICAgICAg
ICAgc3RydWN0IGFkZHJpbmZvICpjdXI7CisjZWxzZQorICAgICAgICAgICAgdWludDMyX3QgYWRk
cjsKKyAgICAgICAgICAgIGludCBwb3J0OworI2VuZGlmCisgICAgICAgICAgICB0c2ZfZnNkYl9j
b25uZWN0aW9uX3QgKmNvbm5lY3Rpb247CisjZW5kaWYKKyAgICAgICAgfSByZW1vdGU7CisgICAg
fSB1OworICAgIHRzZl9saW1pdHNfdCAqbGltaXRzOworICAgIHRzZl96aXBfcmRyX2F0dHJfdCBy
ZHJfYXR0cjsKKyAgICB0c2ZfemlwX3d0cl9hdHRyX3Qgd3RyX2F0dHI7CisKKyAgICB0c2ZfbXV0
ZXhfdCBsb2NrOworfTsKKworc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX3M7CisKK3N0cnVjdCB0
c2ZfZnNkYl9pbiB7CisgICAgdHNmX2ZzZGJfdCAqZGI7CisgICAgdW5pb24geworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICprZXk7CisgICAgICAgICAgICB0c2Zf
c3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW47CisgICAgICAgIH0gbG9jYWw7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICB0c2ZfZnNkYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb247CisgICAg
ICAgICAgICBzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfcyAqcnNwOworICAgICAgICAgICAgdWlu
dDMyX3QgcnNwX2N1cnNvcjsKKyAgICAgICAgICAgIHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21h
bjsKKyAgICAgICAgfSByZW1vdGU7CisgICAgfSB1OworfTsKKworc3RydWN0IHRzZl9mc2RiX291
dCB7CisgICAgdHNmX2ZzZGJfdCAqZGI7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgY2hhciAqcGFydG5hbWU7CisgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtl
eTsKKyAgICAgICAgICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0OworICAgICAgICB9
IGxvY2FsOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdHNmX2ZzZGJfY29ubmVjdGlv
bl90ICpjb25uZWN0aW9uOworICAgICAgICAgICAgdHNmX3NlcmlhbF9vdXRfbWFuX3QgKm91dF9t
YW47CisgICAgICAgIH0gcmVtb3RlOworICAgIH0gdTsKK307CisKKy8qIG1pbiBhbmQgbWF4ICov
CisjZGVmaW5lIHRzZl9taW4oYSxiKSAoKGEpPChiKT8oYSk6KGIpKQorI2RlZmluZSB0c2ZfbWF4
KGEsYikgKChhKT4oYik/KGEpOihiKSkKKworLyogdGltZXN0YW1waW5nICovCisjaWZkZWYgSEFW
RV9HRVRUSU1FT0ZEQVkKK3N0YXRpYyBUU0ZfaW5saW5lIGludDY0X3QgdHNmX2N1cl90aW1lKHZv
aWQpIHsKKyAgICBpbnQ2NF90IHJlc3VsdDsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKworICAg
IGdldHRpbWVvZmRheSgmdHYsTlVMTCk7CisgICAgCisgICAgcmVzdWx0PXR2LnR2X3NlYzsKKyAg
ICByZXN1bHQqPTEwMDA7CisgICAgcmVzdWx0Kj0xMDAwOworICAgIHJlc3VsdCs9dHYudHZfdXNl
YzsKKyAgICByZXN1bHQqPTEwMDA7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbHNl
CitzdGF0aWMgVFNGX2lubGluZSBpbnQ2NF90IHRzZl9jdXJfdGltZSh2b2lkKSB7CisgICAgcmV0
dXJuICgoaW50NjRfdCl0aW1lKE5VTEwpKSooMTAwMCoxMDAwKjEwMDApOworfQorI2VuZGlmCisK
Ky8qIHRoZSBmdWxsIGVycm9yIHNldHRpbmcgY29tbWFuZCAqLwordm9pZCB0c2Zfc2V0X2Vycm9y
X2Z1bGx2KHRzZl9lcnJvcl90IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN5
c19lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVhZGx5X3NpZ25hbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgemxpYl9lcnJvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICp6bGliX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBsc3Qp
OworCit2b2lkIHRzZl9zZXRfZXJyb3JfZnVsbCh0c2ZfZXJyb3JfdCBjb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHN5c19lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBkZWFkbHlfc2lnbmFsLAorCQkJaW50IHpsaWJfZXJyb3IsCisJCQljb25zdCBjaGFyICp6bGli
X21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC4uLik7CisKKy8qIHRoaXMgaXMgYW4gc3RyZXJyb3IgdGhpbmd5
IGZvciB6bGliLiAgaXQgd2lsbCBhYm9ydCBpZiBjYWxsZWQgd2hlbgorICogbm8gemxpYiBzdXBw
b3J0IGlzIGNvbXBpbGVkLiAqLworY29uc3QgY2hhciAqdHNmX3psaWJfc3RyZXJyb3IoaW50IGNv
ZGUpOworCisvKiB0aGlzIGlzIGFuIHN0cmVycm9yIHRoaW5neSBmb3IgbGliYnppcDIuICBpdCB3
aWxsIGFib3J0IGlmIGNhbGxlZAorICogd2hlbiBubyBsaWJiemlwMiBzdXBwb3J0IGlzIGNvbXBp
bGVkLiAqLworY29uc3QgY2hhciAqdHNmX2xpYmJ6aXAyX3N0cmVycm9yKGludCBjb2RlKTsKKwor
LyogdGhpcyBpcyBqdXN0IHBsYWluIGR1bWIuICB0aGFua3MgYSBsb3QsIEdOVSBwcGwuICovCisj
aWYgZGVmaW5lZChIQVZFX1NUUENQWSkgJiYgIWRlZmluZWQoc3RwY3B5KQorY2hhciAqc3RwY3B5
KGNoYXIgKmRlc3QsY29uc3QgY2hhciAqc3JjKTsKKyNlbmRpZgorCisvKiB0c2Zfc29ydCBqdXN0
IGNhbGxzIHFzb3J0IGlmIGF2YWlsYWJsZS4gIG90aGVyd2lzZSBpdCBpcyBzb21lIHNoaXR0eQor
ICogc29ydGluZyBhbGdvIHRoYXQgSSBpbXBsZW1lbnRlZC4gKi8KK3ZvaWQgdHNmX3NvcnQodm9p
ZCAqYmFzZSxzaXplX3Qgbm1lbWIsc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgIGludCAoKmNv
bXBhcikoY29uc3Qgdm9pZCAqYSxjb25zdCB2b2lkICpiKSk7CisKKy8qIHNvcnRzIGFuIGFycmF5
IG9mIHVpbnQzMl90IGluIGFzY2VuZGluZyBvcmRlci4gKi8KK3ZvaWQgdHNmX3VpMzJfc29ydCh1
aW50MzJfdCAqYmFzZSxzaXplX3Qgbm1lbWIpOworCisvKiBzdHJpbmcgY3JlYXRpb24gc3R1ZmYu
ICBvbiBlcnJvciwgYm90aCBmdW5jdGlvbnMganVzdCBzZXQgZXJybm8uICovCitjaGFyICp0c2Zf
dmFzcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCx2YV9saXN0IGxzdCk7CisKK2NoYXIgKnRzZl9h
c3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsLi4uKTsKKworLyogaGFzaHRhYmxlIHN0dWZmICov
Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3R5cGV0YWJsZSgpOworCisvKiBsaW1pdHMgc3R1
ZmYgKi8KKworLyogbWF4IG51bWJlciBvZiB0eXBlcyBpbiBvbmUgc3RyZWFtICovCisjZGVmaW5l
IHRzZl9saW1pdHNfbWF4X3R5cGVzKGxpbWl0cykgXAorICAgICAgICAgICAgKChsaW1pdHMpPT1O
VUxMP1VJTlQzMl9NQVg6KGxpbWl0cyktPm1heF90eXBlcykKKworLyogbWF4aW11bSBzaXplIGlu
IGJ5dGVzIG9mIGEgc2VyaWFsaXplZCB0eXBlICovCisjZGVmaW5lIHRzZl9saW1pdHNfbWF4X3R5
cGVfc2l6ZShsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09TlVMTD9VSU5UMzJfTUFY
OihsaW1pdHMpLT5tYXhfdHlwZV9zaXplKQorCisvKiBtYXhpbXVtIHRvdGFsIHNpemUgb2YgYWxs
IHR5cGVzIHJlYWQgaW4gYSBzZXNzaW9uICovCisjZGVmaW5lIHRzZl9saW1pdHNfbWF4X3RvdGFs
X3R5cGVfc2l6ZShsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09TlVMTD9VSU5UMzJf
TUFYOihsaW1pdHMpLT5tYXhfdG90YWxfdHlwZV9zaXplKQorCisvKiBtYXhpbXVtIHNpemUgaW4g
Ynl0ZXMgb2YgYSBidWZmZXIgKi8KKyNkZWZpbmUgdHNmX2xpbWl0c19tYXhfYnVmX3NpemUobGlt
aXRzKSBcCisgICAgICAgICAgICAoKGxpbWl0cyk9PU5VTEw/VUlOVDMyX01BWDoobGltaXRzKS0+
bWF4X2J1Zl9zaXplKQorCisvKiBjb250YWluZXIgZGVwdGggbGltaXQgKi8KKyNkZWZpbmUgdHNm
X2xpbWl0c19kZXB0aF9saW1pdChsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09TlVM
TD9VSU5UMzJfTUFYOihsaW1pdHMpLT5kZXB0aF9saW1pdCkKKworLyogY29tbWVudHMgKi8KKyNk
ZWZpbmUgdHNmX2xpbWl0c19hbGxvd19jb21tZW50cyhsaW1pdHMpIFwKKyAgICAgICAgICAgICgo
bGltaXRzKT09TlVMTD90c2ZfdHJ1ZToobGltaXRzKS0+YWxsb3dfY29tbWVudHMpCisKKy8qIG1h
eGltdW0gYXJyYXkgbGVuZ3RoICovCisjZGVmaW5lIHRzZl9saW1pdHNfbWF4X2FycmF5X2xlbmd0
aChsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09TlVMTD9VSU5UMzJfTUFYOihsaW1p
dHMpLT5tYXhfYXJyYXlfbGVuZ3RoKQorCisvKiBtYXhpbXVtIHN0cnVjdCBzaXplLCBpbiBudW1i
ZXIgb2YgZWxlbWVudHMgKi8KKyNkZWZpbmUgdHNmX2xpbWl0c19tYXhfc3RydWN0X3NpemUobGlt
aXRzKSBcCisgICAgICAgICAgICAoKGxpbWl0cyk9PU5VTEw/VUlOVDMyX01BWDoobGltaXRzKS0+
bWF4X3N0cnVjdF9zaXplKQorCisvKiBtYXhpbXVtIGNob2ljZSBzaXplLCBpbiBudW1iZXIgb2Yg
ZWxlbWVudHMgKi8KKyNkZWZpbmUgdHNmX2xpbWl0c19tYXhfY2hvaWNlX3NpemUobGltaXRzKSBc
CisgICAgICAgICAgICAoKGxpbWl0cyk9PU5VTEw/VUlOVDMyX01BWDoobGltaXRzKS0+bWF4X2No
b2ljZV9zaXplKQorCisvKiBtYXhpbXVtIHN0cmluZyBzaXplICovCisjZGVmaW5lIHRzZl9saW1p
dHNfbWF4X3N0cmluZ19zaXplKGxpbWl0cykgXAorICAgICAgICAgICAgKChsaW1pdHMpPT1OVUxM
P1VJTlQzMl9NQVg6KGxpbWl0cyktPm1heF9zdHJpbmdfc2l6ZSkKKworLyogZW5kaWFubmVzcyBz
dHVmZiAqLworCisvKiBnZXQgbnRvaGwsIGh0b25sLCBudG9ocywgaHRvbnMgKi8KKyNpZmRlZiBI
QVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZWxzZQorI2lmZGVmIEhB
VkVfTElUVExFX0VORElBTgorc3RhdGljIGlubGluZSB1aW50MzJfdCBudG9obCh1aW50MzJfdCB4
KSB7CisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCB4OworICAgICAgICB1aW50OF90IGNb
NF07CisgICAgfSB1OworICAgIHUueD14OworICAgIHUuY1swXV49dS5jWzNdXj11LmNbMF1ePXUu
Y1szXTsKKyAgICB1LmNbMV1ePXUuY1syXV49dS5jWzFdXj11LmNbMl07CisgICAgcmV0dXJuIHUu
eDsKK30KK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgbnRvaHModWludDE2X3QgeCkgeworICAgIHVu
aW9uIHsKKyAgICAgICAgdWludDE2X3QgeDsKKyAgICAgICAgdWludDhfdCBjWzJdOworICAgIH0g
dTsKKyAgICB1Lng9eDsKKyAgICB1LmNbMF1ePXUuY1sxXV49dS5jWzBdXj11LmNbMV07CisgICAg
cmV0dXJuIHUueDsKK30KKyNkZWZpbmUgaHRvbmwoeCkgKG50b2hsKHgpKQorI2RlZmluZSBodG9u
cyh4KSAobnRvaHMoeCkpCisjZWxzZQorI2RlZmluZSBudG9obCh4KSAoeCkKKyNkZWZpbmUgaHRv
bmwoeCkgKHgpCisjZGVmaW5lIG50b2hzKHgpICh4KQorI2RlZmluZSBodG9ucyh4KSAoeCkKKyNl
bmRpZgorI2VuZGlmCisKKy8qIGRlZmluZSBzdHVwaWQgdHJpdmlhbCBzdHVmZiAqLworI2RlZmlu
ZSBodG9uYyh4KSAoeCkKKyNkZWZpbmUgbnRvaGMoeCkgKHgpCisKKyNpZmRlZiBIQVZFX0JJR19F
TkRJQU4KKworLyogI3VuZGVmIE5FRURfSU5UX0NPTlZFUlNJT04gKi8KKworLyogZGVmaW5lIGxv
bmcgbG9uZyBlcXVpdmFsZW50IG9mIHRoZSBhcnBhL2luZXQgZnVuY3Rpb25zICovCisjaWZuZGVm
IGh0b25sbAorI2RlZmluZSBodG9ubGwoeCkgKHgpCisjZW5kaWYKKworLyogZGVmaW5lIG1pc2Fs
aWduZWQgY29weSBlcXVpdmFsZW50cyBvZiBhbGwgb2YgdGhlIGFycGEvaW5ldCBmdW5jdGlvbnMg
Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2h0b25jKHVpbnQ4X3QgKmRzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnNyYykgeworICAgICpkc3Q9KnNyYzsKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbnModWludDhfdCAqZHN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7CisjaWZkZWYgQ0FOX0RPX01JU0FM
SUdORURfTERTVAorICAgICooKHVpbnQxNl90Kilkc3QpPSooKHVpbnQxNl90KilzcmMpOworI2Vs
c2UKKyAgICBkc3RbMF09c3JjWzBdOworICAgIGRzdFsxXT1zcmNbMV07CisjZW5kaWYKK30KKwor
c3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbmwodWludDhfdCAqZHN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7CisjaWZkZWYgQ0FOX0RPX01JU0FMSUdO
RURfTERTVAorICAgIHVpbnQzMl90IHRtcD0qKCh1aW50MzJfdCopc3JjKTsKKyAgICAqKCh1aW50
MzJfdCopZHN0KT10bXA7CisjZWxzZQorICAgIGRzdFswXT1zcmNbMF07CisgICAgZHN0WzFdPXNy
Y1sxXTsKKyAgICBkc3RbMl09c3JjWzJdOworICAgIGRzdFszXT1zcmNbM107CisjZW5kaWYKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbmxsKHVpbnQ4X3QgKmRzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpzcmMpIHsKKyNpZmRlZiBDQU5fRE9fTUlT
QUxJR05FRF9MRFNUCisgICAgKigodWludDY0X3QqKWRzdCk9KigodWludDY0X3QqKXNyYyk7Cisj
ZWxzZQorICAgIGRzdFswXT1zcmNbMF07CisgICAgZHN0WzFdPXNyY1sxXTsKKyAgICBkc3RbMl09
c3JjWzJdOworICAgIGRzdFszXT1zcmNbM107CisgICAgZHN0WzRdPXNyY1s0XTsKKyAgICBkc3Rb
NV09c3JjWzVdOworICAgIGRzdFs2XT1zcmNbNl07CisgICAgZHN0WzddPXNyY1s3XTsKKyNlbmRp
ZgorfQorCisjZGVmaW5lIGNvcHlfbnRvaGMoZHN0LHNyYykgY29weV9odG9uYyhkc3Qsc3JjKQor
I2RlZmluZSBjb3B5X250b2hzKGRzdCxzcmMpIGNvcHlfaHRvbnMoZHN0LHNyYykKKyNkZWZpbmUg
Y29weV9udG9obChkc3Qsc3JjKSBjb3B5X2h0b25sKGRzdCxzcmMpCisjZGVmaW5lIGNvcHlfbnRv
aGxsKGRzdCxzcmMpIGNvcHlfaHRvbmxsKGRzdCxzcmMpCisKKyNlbHNlCisKKyNkZWZpbmUgTkVF
RF9JTlRfQ09OVkVSU0lPTgorCisjaWZuZGVmIGh0b25sbAorLyogZGVmaW5lIGxvbmcgbG9uZyBl
cXVpdmFsZW50IG9mIHRoZSBhcnBhL2luZXQgZnVuY3Rpb25zICovCitzdGF0aWMgaW5saW5lIHVp
bnQ2NF90IGh0b25sbCh1aW50NjRfdCB4KSB7CisgICAgLyogcHJvYmFibHkgbm90IHZlcnkgZWZm
aWNpZW50LCBidXQgb2ggd2VsbC4gKi8KKyAgICByZXR1cm4gKCh4ID4+IDU2KSAmIFVJTlQ2NF9D
KDB4MDAwMDAwMDAwMDAwMDBmZikpCisgICAgICAgIHwgICgoeCA+PiA0MCkgJiBVSU5UNjRfQygw
eDAwMDAwMDAwMDAwMGZmMDApKQorICAgICAgICB8ICAoKHggPj4gMjQpICYgVUlOVDY0X0MoMHgw
MDAwMDAwMDAwZmYwMDAwKSkKKyAgICAgICAgfCAgKCh4ID4+ICA4KSAmIFVJTlQ2NF9DKDB4MDAw
MDAwMDBmZjAwMDAwMCkpCisgICAgICAgIHwgICgoeCA8PCAgOCkgJiBVSU5UNjRfQygweDAwMDAw
MGZmMDAwMDAwMDApKQorICAgICAgICB8ICAoKHggPDwgMjQpICYgVUlOVDY0X0MoMHgwMDAwZmYw
MDAwMDAwMDAwKSkKKyAgICAgICAgfCAgKCh4IDw8IDQwKSAmIFVJTlQ2NF9DKDB4MDBmZjAwMDAw
MDAwMDAwMCkpCisgICAgICAgIHwgICgoeCA8PCA1NikgJiBVSU5UNjRfQygweGZmMDAwMDAwMDAw
MDAwMDApKTsKK30KKyNlbmRpZiAvKiAjaWZuZGVmIGh0b25sbCAqLworCisvKiBkZWZpbmUgbWlz
YWxpZ25lZCBjb3B5IGVxdWl2YWxlbnRzIG9mIGFsbCBvZiB0aGUgYXJwYS9pbmV0IGZ1bmN0c2lv
bnMgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2h0b25jKHVpbnQ4X3QgKmRzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnNyYykgeworICAgICpkc3Q9KnNyYzsK
K30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbnModWludDhfdCAqZHN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7CisgICAgZHN0WzBdPXNyY1sx
XTsKKyAgICBkc3RbMV09c3JjWzBdOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY29weV9odG9u
bCh1aW50OF90ICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpz
cmMpIHsKKyAgICBkc3RbMF09c3JjWzNdOworICAgIGRzdFsxXT1zcmNbMl07CisgICAgZHN0WzJd
PXNyY1sxXTsKKyAgICBkc3RbM109c3JjWzBdOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY29w
eV9odG9ubGwodWludDhfdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKnNyYykgeworICAgIGRzdFswXT1zcmNbN107CisgICAgZHN0WzFdPXNyY1s2XTsKKyAg
ICBkc3RbMl09c3JjWzVdOworICAgIGRzdFszXT1zcmNbNF07CisgICAgZHN0WzRdPXNyY1szXTsK
KyAgICBkc3RbNV09c3JjWzJdOworICAgIGRzdFs2XT1zcmNbMV07CisgICAgZHN0WzddPXNyY1sw
XTsKK30KKworI2RlZmluZSBjb3B5X250b2hjKGRzdCxzcmMpIGNvcHlfaHRvbmMoZHN0LHNyYykK
KyNkZWZpbmUgY29weV9udG9ocyhkc3Qsc3JjKSBjb3B5X2h0b25zKGRzdCxzcmMpCisjZGVmaW5l
IGNvcHlfbnRvaGwoZHN0LHNyYykgY29weV9odG9ubChkc3Qsc3JjKQorI2RlZmluZSBjb3B5X250
b2hsbChkc3Qsc3JjKSBjb3B5X2h0b25sbChkc3Qsc3JjKQorCisjZW5kaWYKKworI2lmbmRlZiBu
dG9obGwKKyNkZWZpbmUgbnRvaGxsKHgpIChodG9ubGwoeCkpCisjZW5kaWYKKworLyogZmxvYXRp
bmcgcG9pbnQgc3R1ZmYgKi8KKworI2lmZGVmIFRTRl9IQVZFX0lFRUVfRkxPQVQKKworI2lmZGVm
IE5FRURfSU5UX0NPTlZFUlNJT04KKyNkZWZpbmUgTkVFRF9GTE9BVF9DT05WRVJTSU9OCisjZW5k
aWYKKworc3RhdGljIGlubGluZSBmbG9hdCBodG9uZihmbG9hdCB4KSB7CisgICAgdWludDMyX3Qg
cmV0PWh0b25sKCooKGxvbmcqKSZ4KSk7CisgICAgcmV0dXJuICooKGZsb2F0KikmcmV0KTsKK30K
Kworc3RhdGljIGlubGluZSBkb3VibGUgaHRvbmQoZG91YmxlIHgpIHsKKyAgICB1aW50NjRfdCBy
ZXQ9aHRvbmxsKCooKHVpbnQ2NF90KikmeCkpOworICAgIHJldHVybiAqKChkb3VibGUqKSZyZXQp
OworfQorCisjZGVmaW5lIG50b2hmKHgpIChodG9uZih4KSkKKyNkZWZpbmUgbnRvaGQoeCkgKGh0
b25kKHgpKQorCisjaWYgIWRlZmluZWQoTkVFRF9JTlRfQ09OVkVSU0lPTikgJiZcCisgICAgZGVm
aW5lZChDQU5fRE9fTUlTQUxJR05FRF9MRFNUKSAmJlwKKyAgICAhZGVmaW5lZChDQU5fRE9fRkxP
QVRfTUlTQUxJR05FRF9MRFNUKQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbmYodWludDhf
dCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7Cisg
ICAgZHN0WzBdPXNyY1swXTsKKyAgICBkc3RbMV09c3JjWzFdOworICAgIGRzdFsyXT1zcmNbMl07
CisgICAgZHN0WzNdPXNyY1szXTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbmQo
dWludDhfdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3Jj
KSB7CisgICAgZHN0WzBdPXNyY1swXTsKKyAgICBkc3RbMV09c3JjWzFdOworICAgIGRzdFsyXT1z
cmNbMl07CisgICAgZHN0WzNdPXNyY1szXTsKKyAgICBkc3RbNF09c3JjWzRdOworICAgIGRzdFs1
XT1zcmNbNV07CisgICAgZHN0WzZdPXNyY1s2XTsKKyAgICBkc3RbN109c3JjWzddOworfQorI2Vs
c2UKKyNkZWZpbmUgY29weV9odG9uZihkc3Qsc3JjKSBjb3B5X2h0b25sKGRzdCxzcmMpCisjZGVm
aW5lIGNvcHlfaHRvbmQoZHN0LHNyYykgY29weV9odG9ubGwoZHN0LHNyYykKKyNlbmRpZgorCisj
ZGVmaW5lIGNvcHlfbnRvaGYoZHN0LHNyYykgY29weV9odG9uZihkc3Qsc3JjKQorI2RlZmluZSBj
b3B5X250b2hkKGRzdCxzcmMpIGNvcHlfaHRvbmQoZHN0LHNyYykKKworI2Vsc2UKKworI2RlZmlu
ZSBORUVEX0ZMT0FUX0NPTlZFUlNJT04KKworI2Vycm9yICJDdXJyZW50bHksIHdlIG9ubHkgc3Vw
cG9ydCBJRUVFIGZsb2F0cyEiCisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChORUVEX0ZMT0FUX0NP
TlZFUlNJT04pIHx8IGRlZmluZWQoTkVFRF9JTlRfQ09WRVJTSU9OKQorI2RlZmluZSBORUVEX0NP
TlZFUlNJT04KKyNlbmRpZgorCisvKiBkZXN0aW5hdGlvbi1pbmNyZW1lbnRpbmcgbWlzYWxpZ25l
ZCBjb3B5IG1hY3Jvcy4gIHRoZXNlIGRvCisgKiBubyBib3VuZHMgY2hlY2tpbmcuICovCisKKyNk
ZWZpbmUgY29weV9odG9uY19pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRv
bmMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVp
bnQ4X3QqKShkc3QpKSsxKTsgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9o
Y19pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGMoZHN0LHNyYyk7ICAg
ICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQ4X3QqKShkc3QpKSsx
KTsgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9uc19pbmNkc3QoZHN0LHNy
YykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbnMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAg
ICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQxNl90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hp
bGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oc19pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAor
ICAgIGNvcHlfbnRvaHMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9
KHZvaWQqKSgoKHVpbnQxNl90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZp
bmUgY29weV9odG9ubF9pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbmwo
ZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQz
Ml90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9obF9p
bmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGwoZHN0LHNyYyk7ICAgICAg
ICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQzMl90KikoZHN0KSkrMSk7
ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9ubGxfaW5jZHN0KGRzdCxzcmMp
IGRvIHsgICAgXAorICAgIGNvcHlfaHRvbmxsKGRzdCxzcmMpOyAgICAgICAgICAgICAgICAgICBc
CisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQ2NF90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hpbGUg
KDApCisKKyNkZWZpbmUgY29weV9udG9obGxfaW5jZHN0KGRzdCxzcmMpIGRvIHsgICAgXAorICAg
IGNvcHlfbnRvaGxsKGRzdCxzcmMpOyAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZv
aWQqKSgoKHVpbnQ2NF90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUg
Y29weV9odG9uZl9pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbmYoZHN0
LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKGZsb2F0Kiko
ZHN0KSkrMSk7ICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oZl9pbmNk
c3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGYoZHN0LHNyYyk7ICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKGZsb2F0KikoZHN0KSkrMSk7ICAgICAg
IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9uZF9pbmNkc3QoZHN0LHNyYykgZG8g
eyAgICAgXAorICAgIGNvcHlfaHRvbmQoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgKGRzdCk9KHZvaWQqKSgoKGRvdWJsZSopKGRzdCkpKzEpOyAgICAgIFwKK30gd2hpbGUgKDAp
CisKKyNkZWZpbmUgY29weV9udG9oZF9pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNv
cHlfbnRvaGQoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQq
KSgoKGRvdWJsZSopKGRzdCkpKzEpOyAgICAgIFwKK30gd2hpbGUgKDApCisKKy8qIHNvdXJjZS1p
bmNyZW1lbnRpbmcgbWlzYWxpZ25lZCBjb3B5IG1hY3Jvcy4gIHRoZXNlIGRvCisgKiBubyBib3Vu
ZHMgY2hlY2tpbmcuICovCisKKyNkZWZpbmUgY29weV9odG9uY19pbmNzcmMoZHN0LHNyYykgZG8g
eyAgICAgXAorICAgIGNvcHlfaHRvbmMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQ4X3QqKShzcmMpKSsxKTsgICAgIFwKK30gd2hpbGUgKDAp
CisKKyNkZWZpbmUgY29weV9udG9oY19pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNv
cHlfbnRvaGMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQq
KSgoKHVpbnQ4X3QqKShzcmMpKSsxKTsgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29w
eV9odG9uc19pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbnMoZHN0LHNy
Yyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQxNl90Kiko
c3JjKSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oc19pbmNzcmMo
ZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaHMoZHN0LHNyYyk7ICAgICAgICAgICAg
ICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQxNl90Kikoc3JjKSkrMSk7ICAgIFwK
K30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9ubF9pbmNzcmMoZHN0LHNyYykgZG8geyAg
ICAgXAorICAgIGNvcHlfaHRvbmwoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAg
KHNyYyk9KHZvaWQqKSgoKHVpbnQzMl90Kikoc3JjKSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisK
KyNkZWZpbmUgY29weV9udG9obF9pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlf
bnRvaGwoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgo
KHVpbnQzMl90Kikoc3JjKSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9o
dG9ubGxfaW5jc3JjKGRzdCxzcmMpIGRvIHsgICAgXAorICAgIGNvcHlfaHRvbmxsKGRzdCxzcmMp
OyAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQ2NF90Kikoc3Jj
KSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9obGxfaW5jc3JjKGRz
dCxzcmMpIGRvIHsgICAgXAorICAgIGNvcHlfbnRvaGxsKGRzdCxzcmMpOyAgICAgICAgICAgICAg
ICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQ2NF90Kikoc3JjKSkrMSk7ICAgIFwKK30g
d2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9uZl9pbmNzcmMoZHN0LHNyYykgZG8geyAgICAg
XAorICAgIGNvcHlfaHRvbmYoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNy
Yyk9KHZvaWQqKSgoKGZsb2F0Kikoc3JjKSkrMSk7ICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNk
ZWZpbmUgY29weV9udG9oZl9pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRv
aGYoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKGZs
b2F0Kikoc3JjKSkrMSk7ICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9u
ZF9pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbmQoZHN0LHNyYyk7ICAg
ICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKGRvdWJsZSopKHNyYykpKzEp
OyAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oZF9pbmNzcmMoZHN0LHNy
YykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGQoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAg
ICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKGRvdWJsZSopKHNyYykpKzEpOyAgICAgIFwKK30gd2hp
bGUgKDApCisKKy8qIHNvdXJjZS1pbmNyZW1lbnRpbmcgbWlzYWxpZ25lZCBjb3B5IG1hY3Jvcy4g
IHRoZXNlIGRvCisgKiBib3VuZHMgY2hlY2tzLiAgd2hlbiBhIGJvdW5kcyBjaGVjayBmYWlscywg
dGhleSBqdW1wIHRvCisgKiB0aGUgbGFiZWwgeW91IGdpdmUgdGhlbS4gKi8KKworI2RlZmluZSBj
b3B5X2h0b25jX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYg
KCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDEpIHsgICAgICAgIFwKKyAgICAg
ICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgY29weV9odG9uYyhkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAoc3JjKT0odm9pZCopKCgodWludDhfdCopKHNyYykpKzEpOyAgICAgICAgICAgICAgICAg
XAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hjX2luY3NyY19iYyhkc3Qsc3JjLGVu
ZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCop
KHNyYykpPDEpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9udG9oYyhkc3Qsc3JjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDhfdCop
KHNyYykpKzEpOyAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5
X2h0b25zX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgo
dWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDIpIHsgICAgICAgIFwKKyAgICAgICAg
Z290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
Y29weV9odG9ucyhkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAoc3JjKT0odm9pZCopKCgodWludDE2X3QqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAgXAor
fSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hzX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxs
YWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNy
YykpPDIpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9udG9ocyhkc3Qsc3JjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDE2X3QqKShz
cmMpKSsxKTsgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2h0
b25sX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWlu
dDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDQpIHsgICAgICAgIFwKKyAgICAgICAgZ290
byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29w
eV9odG9ubChkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAo
c3JjKT0odm9pZCopKCgodWludDMyX3QqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAgXAorfSB3
aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hsX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJl
bCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykp
PDQpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgY29weV9udG9obChkc3Qsc3JjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDMyX3QqKShzcmMp
KSsxKTsgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2h0b25s
bF9pbmNzcmNfYmMoZHN0LHNyYyxlbmQsbGFiZWwpIGRvIHsgICBcCisgICAgaWYgKCgodWludDhf
dCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDgpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBs
YWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9o
dG9ubGwoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3Jj
KT0odm9pZCopKCgodWludDY0X3QqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAgXAorfSB3aGls
ZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hsbF9pbmNzcmNfYmMoZHN0LHNyYyxlbmQsbGFiZWwp
IGRvIHsgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDgp
IHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgY29weV9udG9obGwoZHN0LHNyYyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDY0X3QqKShzcmMpKSsx
KTsgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2h0b25mX2lu
Y3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCop
KGVuZCkpLSgodWludDhfdCopKHNyYykpPDQpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJl
bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9odG9u
Zihkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0o
dm9pZCopKCgoZmxvYXQqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAo
MCkKKworI2RlZmluZSBjb3B5X250b2hmX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8g
eyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDQpIHsg
ICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgY29weV9udG9oZihkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgoZmxvYXQqKShzcmMpKSsxKTsgICAg
ICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2h0b25kX2luY3Ny
Y19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVu
ZCkpLSgodWludDhfdCopKHNyYykpPDgpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9odG9uZChk
c3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9p
ZCopKCgoZG91YmxlKikoc3JjKSkrMSk7ICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkK
KworI2RlZmluZSBjb3B5X250b2hkX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAg
ICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDgpIHsgICAg
ICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgY29weV9udG9oZChkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgoZG91YmxlKikoc3JjKSkrMSk7ICAgICAg
ICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworc3RhdGljIGlubGluZSBzaXplX3Qgc2l6ZV9v
Zl90c2ZfaW50ZWdlcih0c2ZfaW50ZWdlcl90IHNyYykgeworICAgIGlmIChzcmMgPj0gLVRTRl9J
TlRFR0VSX1NNQUxMX0xJTSAmJiBzcmMgPCBUU0ZfSU5URUdFUl9TTUFMTF9MSU0pIHsKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIGlmIChzcmMgPj0gLVRTRl9JTlRFR0VSX01F
RElVTV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSkgeworICAgICAgICByZXR1
cm4gMjsKKyAgICB9CisgICAgCisgICAgaWYgKHNyYyA+PSAtVFNGX0lOVEVHRVJfTEFSR0VfTElN
ICYmIHNyYyA8IFRTRl9JTlRFR0VSX0xBUkdFX0xJTSkgeworICAgICAgICByZXR1cm4gNDsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIDU7Cit9CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHNpemVf
b2ZfdHNmX3Vuc2lnbmVkKHRzZl91bnNpZ25lZF90IHNyYykgeworICAgIGlmIChzcmMgPCBUU0Zf
VU5TSUdORURfU01BTExfTElNKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAKKyAg
ICBpZiAoc3JjIDwgVFNGX1VOU0lHTkVEX01FRElVTV9MSU0pIHsKKyAgICAgICAgcmV0dXJuIDI7
CisgICAgfQorICAgIAorICAgIGlmIChzcmMgPCBUU0ZfVU5TSUdORURfTEFSR0VfTElNKSB7Cisg
ICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gNTsKK30KKworc3RhdGlj
IGlubGluZSBzaXplX3Qgc2l6ZV9vZl90c2ZfbG9uZyh0c2ZfbG9uZ190IHNyYykgeworICAgIGlm
IChzcmMgPj0gLVRTRl9JTlRFR0VSX1NNQUxMX0xJTSAmJiBzcmMgPCBUU0ZfSU5URUdFUl9TTUFM
TF9MSU0pIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIGlmIChzcmMgPj0g
LVRTRl9JTlRFR0VSX01FRElVTV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSkg
eworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgCisgICAgaWYgKHNyYyA+PSAtVFNGX0lO
VEVHRVJfTEFSR0VfTElNICYmIHNyYyA8IFRTRl9JTlRFR0VSX0xBUkdFX0xJTSkgeworICAgICAg
ICByZXR1cm4gNDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgc2l6ZV90IHdyaXRlX3RzZl9pbnRlZ2VyKHVpbnQ4X3QgKmRzdCwgdHNmX2ludGVnZXJfdCBz
cmMpIHsKKyAgICBpZiAoc3JjID49IC1UU0ZfSU5URUdFUl9TTUFMTF9MSU0gJiYgc3JjIDwgVFNG
X0lOVEVHRVJfU01BTExfTElNKSB7CisgICAgICAgIGRzdFswXSA9ICgodWludDhfdCkoaW50OF90
KXNyYykgJiB+VFNGX0lOVEVHRVJfTUVESVVNX0JJVDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
fQorICAgIAorICAgIC8qIEZJWE1FOiBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZnVuY3Rpb24gY291
bGQgYmUgYW4gb3V0LW9mLWxpbmUgc2xvdyBwYXRoLiAqLworICAgIAorICAgIGlmIChzcmMgPj0g
LVRTRl9JTlRFR0VSX01FRElVTV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSkg
eworICAgICAgICBpZiAoc3JjIDwgMCkgeworICAgICAgICAgICAgc3JjICs9IFRTRl9JTlRFR0VS
X1NNQUxMX0xJTTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNyYyAtPSBUU0ZfSU5U
RUdFUl9TTUFMTF9MSU07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRzdFswXSA9Cisg
ICAgICAgICAgICAoKChpbnQ4X3QpKChzcmMgPj4gOCkgJiAyNTUpKSAtIFRTRl9JTlRFR0VSX01F
RElVTV9ESUZGKSB8CisgICAgICAgICAgICBUU0ZfSU5URUdFUl9NRURJVU1fQklUOworICAgICAg
ICBkc3RbMV0gPSBzcmMgJiAyNTU7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICAKKyAg
ICBpZiAoc3JjID49IC1UU0ZfSU5URUdFUl9MQVJHRV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJf
TEFSR0VfTElNKSB7CisgICAgICAgIGlmIChzcmMgPCAwKSB7CisgICAgICAgICAgICBzcmMgKz0g
VFNGX0lOVEVHRVJfTUVESVVNX0xJTTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNy
YyAtPSBUU0ZfSU5URUdFUl9NRURJVU1fTElNOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9MQVJHRV9UQUc7CisgICAgICAgIGRzdFsxXSA9IChzcmMg
Pj4gMTYpICYgMjU1OworICAgICAgICBkc3RbMl0gPSAoc3JjID4+IDgpICYgMjU1OworICAgICAg
ICBkc3RbM10gPSBzcmMgJiAyNTU7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICAKKyAg
ICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9IVUdFX1RBRzsKKyAgICBkc3RbMV0gPSAoc3JjID4+IDI0
KSAmIDI1NTsKKyAgICBkc3RbMl0gPSAoc3JjID4+IDE2KSAmIDI1NTsKKyAgICBkc3RbM10gPSAo
c3JjID4+IDgpICYgMjU1OworICAgIGRzdFs0XSA9IHNyYyAmIDI1NTsKKyAgICByZXR1cm4gNTsK
K30KKworc3RhdGljIGlubGluZSBzaXplX3Qgd3JpdGVfdHNmX3Vuc2lnbmVkKHVpbnQ4X3QgKmRz
dCwgdHNmX3Vuc2lnbmVkX3Qgc3JjKSB7CisgICAgaWYgKHNyYyA8IFRTRl9VTlNJR05FRF9TTUFM
TF9MSU0pIHsKKyAgICAgICAgZHN0WzBdID0gc3JjOworICAgICAgICByZXR1cm4gMTsKKyAgICB9
CisgICAgCisgICAgLyogRklYTUU6IFRoZSByZW1haW5kZXIgb2YgdGhpcyBmdW5jdGlvbiBjb3Vs
ZCBiZSBhbiBvdXQtb2YtbGluZSBzbG93IHBhdGguICovCisgICAgCisgICAgaWYgKHNyYyA8IFRT
Rl9VTlNJR05FRF9NRURJVU1fTElNKSB7CisgICAgICAgIHNyYyAtPSBUU0ZfVU5TSUdORURfU01B
TExfTElNOworICAgICAgICAKKyAgICAgICAgZHN0WzBdID0gKChzcmMgPj4gOCkgJiAyNTUpIHwg
VFNGX1VOU0lHTkVEX01FRElVTV9CSVQ7CisgICAgICAgIGRzdFsxXSA9IHNyYyAmIDI1NTsKKyAg
ICAgICAgcmV0dXJuIDI7CisgICAgfQorICAgIAorICAgIGlmIChzcmMgPCBUU0ZfVU5TSUdORURf
TEFSR0VfTElNKSB7CisgICAgICAgIHNyYyAtPSBUU0ZfVU5TSUdORURfTUVESVVNX0xJTTsKKyAg
ICAgICAgCisgICAgICAgIGRzdFswXSA9IFRTRl9VTlNJR05FRF9MQVJHRV9UQUc7CisgICAgICAg
IGRzdFsxXSA9IChzcmMgPj4gMTYpICYgMjU1OworICAgICAgICBkc3RbMl0gPSAoc3JjID4+IDgp
ICYgMjU1OworICAgICAgICBkc3RbM10gPSBzcmMgJiAyNTU7CisgICAgICAgIHJldHVybiA0Owor
ICAgIH0KKyAgICAKKyAgICBkc3RbMF0gPSBUU0ZfVU5TSUdORURfSFVHRV9UQUc7CisgICAgZHN0
WzFdID0gKHNyYyA+PiAyNCkgJiAyNTU7CisgICAgZHN0WzJdID0gKHNyYyA+PiAxNikgJiAyNTU7
CisgICAgZHN0WzNdID0gKHNyYyA+PiA4KSAmIDI1NTsKKyAgICBkc3RbNF0gPSBzcmMgJiAyNTU7
CisgICAgcmV0dXJuIDU7Cit9CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHdyaXRlX3RzZl9sb25n
KHVpbnQ4X3QgKmRzdCwgdHNmX2xvbmdfdCBzcmMpIHsKKyAgICBpZiAoc3JjID49IC1UU0ZfSU5U
RUdFUl9TTUFMTF9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfU01BTExfTElNKSB7CisgICAgICAg
IGRzdFswXSA9ICgodWludDhfdCkoaW50OF90KXNyYykgJiB+VFNGX0lOVEVHRVJfTUVESVVNX0JJ
VDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIC8qIEZJWE1FOiBUaGUgcmVt
YWluZGVyIG9mIHRoaXMgZnVuY3Rpb24gY291bGQgYmUgYW4gb3V0LW9mLWxpbmUgc2xvdyBwYXRo
LiAqLworICAgIAorICAgIGlmIChzcmMgPj0gLVRTRl9JTlRFR0VSX01FRElVTV9MSU0gJiYgc3Jj
IDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSkgeworICAgICAgICBpZiAoc3JjIDwgMCkgeworICAg
ICAgICAgICAgc3JjICs9IFRTRl9JTlRFR0VSX1NNQUxMX0xJTTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHNyYyAtPSBUU0ZfSU5URUdFUl9TTUFMTF9MSU07CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGRzdFswXSA9CisgICAgICAgICAgICAoKChpbnQ4X3QpKChzcmMgPj4g
OCkgJiAyNTUpKSAtIFRTRl9JTlRFR0VSX01FRElVTV9ESUZGKSB8CisgICAgICAgICAgICBUU0Zf
SU5URUdFUl9NRURJVU1fQklUOworICAgICAgICBkc3RbMV0gPSBzcmMgJiAyNTU7CisgICAgICAg
IHJldHVybiAyOworICAgIH0KKyAgICAKKyAgICBpZiAoc3JjID49IC1UU0ZfSU5URUdFUl9MQVJH
RV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTEFSR0VfTElNKSB7CisgICAgICAgIGlmIChzcmMg
PCAwKSB7CisgICAgICAgICAgICBzcmMgKz0gVFNGX0lOVEVHRVJfTUVESVVNX0xJTTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNyYyAtPSBUU0ZfSU5URUdFUl9NRURJVU1fTElNOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9MQVJHRV9U
QUc7CisgICAgICAgIGRzdFsxXSA9IChzcmMgPj4gMTYpICYgMjU1OworICAgICAgICBkc3RbMl0g
PSAoc3JjID4+IDgpICYgMjU1OworICAgICAgICBkc3RbM10gPSBzcmMgJiAyNTU7CisgICAgICAg
IHJldHVybiA0OworICAgIH0KKyAgICAKKyAgICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9IVUdFX1RB
RzsKKyAgICBkc3RbMV0gPSAoc3JjID4+IDU2KSAmIDI1NTsKKyAgICBkc3RbMl0gPSAoc3JjID4+
IDQ4KSAmIDI1NTsKKyAgICBkc3RbM10gPSAoc3JjID4+IDQwKSAmIDI1NTsKKyAgICBkc3RbNF0g
PSAoc3JjID4+IDMyKSAmIDI1NTsKKyAgICBkc3RbNV0gPSAoc3JjID4+IDI0KSAmIDI1NTsKKyAg
ICBkc3RbNl0gPSAoc3JjID4+IDE2KSAmIDI1NTsKKyAgICBkc3RbN10gPSAoc3JjID4+IDgpICYg
MjU1OworICAgIGRzdFs4XSA9IHNyYyAmIDI1NTsKKyAgICByZXR1cm4gOTsKK30KKworc3RhdGlj
IGlubGluZSBzaXplX3Qgc2l6ZV9vZl9lbmNvZGVkX3RzZl9pbnRlZ2VyKGludDhfdCB2YWx1ZSkg
eworICAgIGlmICghKHZhbHVlICYgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpIHsKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlIFRT
Rl9JTlRFR0VSX0xBUkdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBUU0ZfSU5U
RUdFUl9IVUdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIDI7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHNpemVfdCBzaXplX29mX2VuY29k
ZWRfdHNmX3Vuc2lnbmVkKHVpbnQ4X3QgdmFsdWUpIHsKKyAgICBpZiAoISh2YWx1ZSAmIFRTRl9V
TlNJR05FRF9NRURJVU1fQklUKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgCisg
ICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgVFNGX1VOU0lHTkVEX0xBUkdFX1RBRzoKKyAg
ICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBUU0ZfVU5TSUdORURfSFVHRV9UQUc6CisgICAgICAg
IHJldHVybiA1OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAyOworICAgIH0KK30KKwor
c3RhdGljIGlubGluZSBzaXplX3Qgc2l6ZV9vZl9lbmNvZGVkX3RzZl9sb25nKGludDhfdCB2YWx1
ZSkgeworICAgIGlmICghKHZhbHVlICYgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpIHsKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNl
IFRTRl9JTlRFR0VSX0xBUkdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBUU0Zf
SU5URUdFUl9IVUdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIDI7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHNpemVfdCByZWFkX3RzZl9p
bnRlZ2VyKHRzZl9pbnRlZ2VyX3QgKmRzdCwgdWludDhfdCAqc3JjLCBzaXplX3Qgc3JjX3JlbWFp
bmluZykgeworICAgIGlmICghc3JjX3JlbWFpbmluZykKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
CisgICAgaW50OF90IGhlYWRfdmFsdWUgPSBzcmNbMF07CisgICAgaWYgKCEoaGVhZF92YWx1ZSAm
IFRTRl9JTlRFR0VSX01FRElVTV9CSVQpKSB7CisgICAgICAgICpkc3QgPSAoKGludDhfdCkoaGVh
ZF92YWx1ZSA8PCAxKSkgPj4gMTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAg
IC8qIEZJWE1FOiBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZnVuY3Rpb24gY291bGQgYmUgYW4gb3V0
LW9mLWxpbmUgc2xvdyBwYXRoLiAqLworICAgIAorICAgIHN3aXRjaCAoaGVhZF92YWx1ZSkgewor
ICAgIGNhc2UgVFNGX0lOVEVHRVJfTEFSR0VfVEFHOiB7CisgICAgICAgIGlmIChzcmNfcmVtYWlu
aW5nIDwgNCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpbnQzMl90IHZhbHVlID0K
KyAgICAgICAgICAgICgoKGludDMyX3QpKGludDhfdClzcmNbMV0pIDw8IDE2KSB8CisgICAgICAg
ICAgICAoKChpbnQzMl90KSh1aW50MzJfdClzcmNbMl0pIDw8IDgpIHwKKyAgICAgICAgICAgICgo
aW50MzJfdCkodWludDMyX3Qpc3JjWzNdKTsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAg
ICAgICAgIHZhbHVlIC09IFRTRl9JTlRFR0VSX01FRElVTV9MSU07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHZhbHVlICs9IFRTRl9JTlRFR0VSX01FRElVTV9MSU07CisgICAgICAgICpkc3Qg
PSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgfQorICAgIGNhc2UgVFNGX0lOVEVHRVJf
SFVHRV9UQUc6IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCA1KQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGludDMyX3QgdmFsdWUgPQorICAgICAgICAgICAgKCgoaW50MzJf
dCkoaW50OF90KXNyY1sxXSkgPDwgMjQpIHwKKyAgICAgICAgICAgICgoKGludDMyX3QpKHVpbnQz
Ml90KXNyY1syXSkgPDwgMTYpIHwKKyAgICAgICAgICAgICgoKGludDMyX3QpKHVpbnQzMl90KXNy
Y1szXSkgPDwgOCkgfAorICAgICAgICAgICAgKChpbnQzMl90KSh1aW50MzJfdClzcmNbNF0pOwor
ICAgICAgICAqZHN0ID0gdmFsdWU7CisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICBkZWZh
dWx0OiB7CisgICAgICAgIGlmIChzcmNfcmVtYWluaW5nIDwgMikKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICBpbnQzMl90IHZhbHVlID0KKyAgICAgICAgICAgICgoaW50MzJfdCkodWlu
dDMyX3Qpc3JjWzFdKSB8CisgICAgICAgICAgICAoKChpbnQzMl90KSgoKChpbnQ4X3QpKGhlYWRf
dmFsdWUgPDwgMSkpID4+IDEpICsgVFNGX0lOVEVHRVJfTUVESVVNX0RJRkYpKSA8PCA4KTsKKyAg
ICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgIHZhbHVlIC09IFRTRl9JTlRFR0VSX1NN
QUxMX0xJTTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgKz0gVFNGX0lOVEVHRVJf
U01BTExfTElNOworICAgICAgICAqZHN0ID0gdmFsdWU7CisgICAgICAgIHJldHVybiAyOworICAg
IH0gfQorfQorCitzdGF0aWMgaW5saW5lIHNpemVfdCByZWFkX3RzZl91bnNpZ25lZCh0c2ZfdW5z
aWduZWRfdCAqZHN0LCB1aW50OF90ICpzcmMsIHNpemVfdCBzcmNfcmVtYWluaW5nKSB7CisgICAg
aWYgKCFzcmNfcmVtYWluaW5nKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICB1aW50OF90
IGhlYWRfdmFsdWUgPSBzcmNbMF07CisgICAgaWYgKCEoaGVhZF92YWx1ZSAmIFRTRl9VTlNJR05F
RF9NRURJVU1fQklUKSkgeworICAgICAgICAqZHN0ID0gaGVhZF92YWx1ZTsKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgfQorICAgIAorICAgIC8qIEZJWE1FOiBUaGUgcmVtYWluZGVyIG9mIHRoaXMg
ZnVuY3Rpb24gY291bGQgYmUgYW4gb3V0LW9mLWxpbmUgc2xvdyBwYXRoLiAqLworICAgIAorICAg
IHN3aXRjaCAoaGVhZF92YWx1ZSkgeworICAgIGNhc2UgVFNGX1VOU0lHTkVEX0xBUkdFX1RBRzog
eworICAgICAgICBpZiAoc3JjX3JlbWFpbmluZyA8IDQpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgaW50MzJfdCB2YWx1ZSA9CisgICAgICAgICAgICAoKChpbnQzMl90KShpbnQ4X3Qp
c3JjWzFdKSA8PCAxNikgfAorICAgICAgICAgICAgKCgoaW50MzJfdCkodWludDMyX3Qpc3JjWzJd
KSA8PCA4KSB8CisgICAgICAgICAgICAoKGludDMyX3QpKHVpbnQzMl90KXNyY1szXSk7CisgICAg
ICAgIHZhbHVlICs9IFRTRl9VTlNJR05FRF9NRURJVU1fTElNOworICAgICAgICAqZHN0ID0gdmFs
dWU7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICBjYXNlIFRTRl9VTlNJR05FRF9IVUdF
X1RBRzogeworICAgICAgICBpZiAoc3JjX3JlbWFpbmluZyA8IDUpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9CisgICAgICAgICAgICAoKChpbnQzMl90KShp
bnQ4X3Qpc3JjWzFdKSA8PCAyNCkgfAorICAgICAgICAgICAgKCgoaW50MzJfdCkodWludDMyX3Qp
c3JjWzJdKSA8PCAxNikgfAorICAgICAgICAgICAgKCgoaW50MzJfdCkodWludDMyX3Qpc3JjWzNd
KSA8PCA4KSB8CisgICAgICAgICAgICAoKGludDMyX3QpKHVpbnQzMl90KXNyY1s0XSk7CisgICAg
ICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfQorICAgIGRlZmF1bHQ6
IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCAyKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGludDMyX3QgdmFsdWUgPQorICAgICAgICAgICAgKChpbnQzMl90KSh1aW50MzJf
dClzcmNbMV0pIHwKKyAgICAgICAgICAgICgoaGVhZF92YWx1ZSAmIH5UU0ZfVU5TSUdORURfTUVE
SVVNX0JJVCkgPDwgOCk7CisgICAgICAgIHZhbHVlICs9IFRTRl9VTlNJR05FRF9TTUFMTF9MSU07
CisgICAgICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfSB9Cit9CisK
K3N0YXRpYyBpbmxpbmUgc2l6ZV90IHJlYWRfdHNmX2xvbmcodHNmX2xvbmdfdCAqZHN0LCB1aW50
OF90ICpzcmMsIHNpemVfdCBzcmNfcmVtYWluaW5nKSB7CisgICAgaWYgKCFzcmNfcmVtYWluaW5n
KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpbnQ4X3QgaGVhZF92YWx1ZSA9IHNyY1sw
XTsKKyAgICBpZiAoIShoZWFkX3ZhbHVlICYgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpIHsKKyAg
ICAgICAgKmRzdCA9ICgoaW50OF90KShoZWFkX3ZhbHVlIDw8IDEpKSA+PiAxOworICAgICAgICBy
ZXR1cm4gMTsKKyAgICB9CisgICAgCisgICAgLyogRklYTUU6IFRoZSByZW1haW5kZXIgb2YgdGhp
cyBmdW5jdGlvbiBjb3VsZCBiZSBhbiBvdXQtb2YtbGluZSBzbG93IHBhdGguICovCisgICAgCisg
ICAgc3dpdGNoIChoZWFkX3ZhbHVlKSB7CisgICAgY2FzZSBUU0ZfSU5URUdFUl9MQVJHRV9UQUc6
IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCA0KQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGludDY0X3QgdmFsdWUgPQorICAgICAgICAgICAgKCgoaW50NjRfdCkoaW50OF90
KXNyY1sxXSkgPDwgMTYpIHwKKyAgICAgICAgICAgICgoKGludDY0X3QpKHVpbnQ2NF90KXNyY1sy
XSkgPDwgOCkgfAorICAgICAgICAgICAgKChpbnQ2NF90KSh1aW50NjRfdClzcmNbM10pOworICAg
ICAgICBpZiAodmFsdWUgPCAwKQorICAgICAgICAgICAgdmFsdWUgLT0gVFNGX0lOVEVHRVJfTUVE
SVVNX0xJTTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgKz0gVFNGX0lOVEVHRVJf
TUVESVVNX0xJTTsKKyAgICAgICAgKmRzdCA9IHZhbHVlOworICAgICAgICByZXR1cm4gNDsKKyAg
ICB9CisgICAgY2FzZSBUU0ZfSU5URUdFUl9IVUdFX1RBRzogeworICAgICAgICBpZiAoc3JjX3Jl
bWFpbmluZyA8IDkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaW50NjRfdCB2YWx1
ZSA9CisgICAgICAgICAgICAoKChpbnQ2NF90KShpbnQ4X3Qpc3JjWzFdKSA8PCA1NikgfAorICAg
ICAgICAgICAgKCgoaW50NjRfdCkodWludDY0X3Qpc3JjWzJdKSA8PCA0OCkgfAorICAgICAgICAg
ICAgKCgoaW50NjRfdCkodWludDY0X3Qpc3JjWzNdKSA8PCA0MCkgfAorICAgICAgICAgICAgKCgo
aW50NjRfdCkodWludDY0X3Qpc3JjWzRdKSA8PCAzMikgfAorICAgICAgICAgICAgKCgoaW50NjRf
dCkodWludDY0X3Qpc3JjWzVdKSA8PCAyNCkgfAorICAgICAgICAgICAgKCgoaW50NjRfdCkodWlu
dDY0X3Qpc3JjWzZdKSA8PCAxNikgfAorICAgICAgICAgICAgKCgoaW50NjRfdCkodWludDY0X3Qp
c3JjWzddKSA8PCA4KSB8CisgICAgICAgICAgICAoKGludDY0X3QpKHVpbnQ2NF90KXNyY1s4XSk7
CisgICAgICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDk7CisgICAgfQorICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCAyKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGludDY0X3QgdmFsdWUgPQorICAgICAgICAgICAgKChpbnQ2NF90KSh1
aW50NjRfdClzcmNbMV0pIHwKKyAgICAgICAgICAgICgoKGludDY0X3QpKCgoKGludDhfdCkoaGVh
ZF92YWx1ZSA8PCAxKSkgPj4gMSkgKyBUU0ZfSU5URUdFUl9NRURJVU1fRElGRikpIDw8IDgpOwor
ICAgICAgICBpZiAodmFsdWUgPCAwKQorICAgICAgICAgICAgdmFsdWUgLT0gVFNGX0lOVEVHRVJf
U01BTExfTElNOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSArPSBUU0ZfSU5URUdF
Ul9TTUFMTF9MSU07CisgICAgICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDI7Cisg
ICAgfSB9Cit9CisKKyNkZWZpbmUgcmVhZF90c2ZfaW50ZWdlcl9pbmNzcmMoZHN0LCBzcmMsIGVu
ZCwgYm91bmRzX2Vycm9yKSBkbyB7ICAgICAgIFwKKyAgICAgICAgc2l6ZV90IHRvdGFsX2J5dGVz
X3JlYWQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIHJlYWRfdHNmX2ludGVnZXIoKGRzdCksIChzcmMpLCAoZW5kKSAtIChzcmMpKTsgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaWYgKCF0b3RhbF9ieXRlc19yZWFkKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGdvdG8gYm91bmRzX2Vycm9y
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKHNyYykgKz0gdG90YWxfYnl0ZXNfcmVh
ZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgw
KQorCisjZGVmaW5lIHJlYWRfdHNmX3Vuc2lnbmVkX2luY3NyYyhkc3QsIHNyYywgZW5kLCBib3Vu
ZHNfZXJyb3IpIGRvIHsgICAgICBcCisgICAgICAgIHNpemVfdCB0b3RhbF9ieXRlc19yZWFkID0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZWFk
X3RzZl91bnNpZ25lZCgoZHN0KSwgKHNyYyksIChlbmQpIC0gKHNyYykpOyAgICAgICAgICAgICBc
CisgICAgICAgIGlmICghdG90YWxfYnl0ZXNfcmVhZCkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIChzcmMpICs9IHRvdGFsX2J5dGVzX3JlYWQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2Rl
ZmluZSByZWFkX3RzZl9sb25nX2luY3NyYyhkc3QsIHNyYywgZW5kLCBib3VuZHNfZXJyb3IpIGRv
IHsgICAgICAgICAgXAorICAgICAgICBzaXplX3QgdG90YWxfYnl0ZXNfcmVhZCA9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmVhZF90c2ZfbG9u
ZygoZHN0KSwgKHNyYyksIChlbmQpIC0gKHNyYykpOyAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoIXRvdGFsX2J5dGVzX3JlYWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAoc3JjKSArPSB0b3RhbF9ieXRlc19yZWFkOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyBpbmxp
bmUgc2l6ZV90IHNraXBfc3RyaW5nKGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQp
IHsKKyAgICBjb25zdCBjaGFyICpjdXIgPSBzdGFydDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAg
IGlmIChjdXIgPj0gZW5kKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghKmN1
cikKKyAgICAgICAgICAgIHJldHVybiBjdXIgKyAxIC0gc3RhcnQ7CisgICAgICAgIGN1cisrOwor
ICAgIH0KK30KKworLyogaW50ZXJuYWwgcmVjdXJzaXZlIGZ1bmN0aW9uIGZvciByZWFkaW5nIHR5
cGVzICovCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9yZWFkX3JlYyh0c2ZfcmVhZGVyX3QgcmVhZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1pdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBkZXB0aCk7CisKKy8qIHJlYWQgYSB0eXBlIHRhYmxlICov
Cit0c2ZfdHlwZV90YWJsZV90KiB0c2ZfdHlwZV90YWJsZV9yZWFkKGNvbnN0IGNoYXIgKm5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWFkZXJfdCByZWFk
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1pdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemVfbGlt
aXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRlcHRo
KTsKKworLyogY2xvbmVzIGEgdHlwZSwgcmV0dXJuaW5nIGEgbmV3IG9uZSBqdXN0IGxpa2UgaXQu
IG5vdGUgdGhpcyBpcworICogYWN0dWFsbHkgZGVlcCBjb3B5LiAqLwordHNmX3R5cGVfdCogdHNm
X3R5cGVfY2xvbmUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGdpdmVzIHlvdSBhIHZlcnNpb24g
b2YgdGhlIGdpdmVuIHR5cGUgdGhhdCB5b3Ugb3duOyBpLmUuIGlmIHlvdSBtYWtlCisgKiBjaGFu
Z2VzIHRvIGl0IGluLXBsYWNlIHRoZW4gbm9ib2R5IGVsc2Ugd2lsbCBub3RpY2UuIHRoaXMgaXMg
YSBPKDEpCisgKiBvcGVyYXRpb24gdGhhdCByZXR1cm5zIHRoZSBwYXNzZWQtaW4gdHlwZSBvYmpl
Y3QgaWYgaXQgYWxyZWFkeSBoYXMgYQorICogcmVmZXJlbmNlIGNvdW50IG9mIDEuIG90aGVyd2lz
ZSB0aGUgdHlwZSBpcyBjb3BpZWQgdXNpbmcKKyAqIHRzZl90eXBlX2Nsb25lKCkuICovCit0c2Zf
dHlwZV90KiB0c2ZfdHlwZV9vd25fYmVnaW4odHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGNvbW1p
dHMgdG8gYW4gb3duZXJzaGlwIG9wZXJhdGlvbiBieSByZWxpbnF1aXNoaW5nIG91ciByZWZlcmVu
Y2UgdG8KKyAqIHRoZSBvcmlnaW5hbCB0eXBlLiAqLwordm9pZCB0c2ZfdHlwZV9vd25fY29tbWl0
KHRzZl90eXBlX3QgKipkc3QsIHRzZl90eXBlX3QgKnJldCk7CisKKy8qIHVuZG9lcyBhbiBvd25l
cnNoaXAgb3BlcmF0aW9uIGJ5IGRlbGV0aW5nIHRoZSBjbG9uZSBpZiBuZWNlc3NhcnkuICovCit2
b2lkIHRzZl90eXBlX293bl9hYm9ydCh0c2ZfdHlwZV90ICpkc3QsIHRzZl90eXBlX3QgKnJldCk7
CisKKy8qIHJlY29tcHV0ZSB0aGUgaGFzaCBjb2RlICovCit2b2lkIHRzZl90eXBlX3JlY29tcHV0
ZV9oYXNoKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBjcmVhdGUgYSB0c2ZfYnVmZmVyIGluIHdo
aWNoIHRoZSBjYWxsZXIgb3ducyB0aGUgdHNmX2J1ZmZlciBvYmplY3QgaXRzZWxmCisgICBhbmQg
dGhlIG9yaWdpbmFsIGJhY2tpbmcgc3RvcmUuIHRoaXMgY2FuIGJlIHVzZWQgdG8gcmVhZCBzdGFj
ay1hbGxvY2F0ZWQKKyAgIGJ1ZmZlcnMuIHRoaXMgbXVzdCBiZSBkZXN0cm95ZWQgd2l0aCB0c2Zf
YnVmZmVyX2Rlc3Ryb3lfY3VzdG9tKCkuIGZldworICAgZnVuY3Rpb25zIHdvcmsgb24gdGhlIGJ1
ZmZlciB0aGF0IHRoaXMgcmV0dXJucy4gdGhlIHRzZl9idWZmZXJfcmVhZF9zaW1wbGUKKyAgIGFu
ZCB0c2ZfYnVmZmVyX3JlYWRfc21hbGxfd2l0aF90eXBlX2NvZGUgZnVuY3Rpb25zIGFyZSB0d28g
ZnVuY3Rpb25zIHRoYXQKKyAgIGRvIHdvcmsgd2l0aCBjdXN0b20gYnVmZmVycy4KKworICAgbm90
ZSB0aGF0IHRoaXMgcmVhbGx5IG5lZWRzIHRvIGJlIGludGVybmFsIEFQSSwgc2luY2UgaXQgcmVx
dWlyZXMgdGhhdCB0aGUKKyAgIGNhbGxlciBrbm93cyBleGFjdGx5IHRoZSBzaXplb2YodHNmX2J1
ZmZlcl90KS4gaWYgd2Ugd2FudGVkIGFuIGV4dGVybmFsCisgICB2ZXNpb24gb2YgdGhpcyBBUEks
IHdlJ2QgaGF2ZSB0aGUgdXNlciBqdXN0IHBhc3MgaW4gYSBiYWNraW5nIHN0b3JlIGFuZCB3ZSdk
CisgICBwYXJ0aXRpb24gaXQgaW50byBhIHRzZl9idWZmZXJfdCBhbmQgdGhlIGFjdHVhbCBiYWNr
aW5nIHN0b3JlLiB3ZSdkIGFsc28KKyAgIGtpbmRseSByZXBvcnQgZXJyb3IgaWYgdGhlIGJ1ZmZl
ciB3YXNuJ3QgYmlnIGVub3VnaCBmb3IgYSB0c2ZfYnVmZmVyX3QuICovCit2b2lkIHRzZl9idWZm
ZXJfaW5pdGlhbGl6ZV9jdXN0b20odHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqYmFja2luZ19zdG9yZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgYmFja2luZ19zdG9yZV9zaXplKTsKKworLyogZGVzdHJv
eSBhIHRzZl9idWZmZXIgY3JlYXRlZCB3aXRoIHRzZl9idWZmZXJfaW5pdGlhbGl6ZV9jdXN0b20o
KS4gKi8KK3ZvaWQgdHNmX2J1ZmZlcl9kZXN0cm95X2N1c3RvbSh0c2ZfYnVmZmVyX3QgKmJ1Zik7
CisKKy8qIGNyZWF0ZSBhIHRzZl9idWZmZXIgdGhhdCBpcyByZWFkeSBmb3IgdXNlIHdpdGggdHNm
X2J1ZmZlcl9yZWFkX3NpbXBsZSwKKyAgIHRzZl9idWZmZXJfcmVhZF9zbWFsbF93aXRoX3R5cGVf
Y29kZSwgYW5kIHRoZSBHUEMgZ2VuZXJhdG9yLiAqLwordHNmX2J1ZmZlcl90ICp0c2ZfYnVmZmVy
X2NyZWF0ZV9iYXJlKHZvaWQpOworCisvKiBjcmVhdGUgYSB0c2ZfYnVmZmVyIHRoYXQgaXMgcmVh
ZHkgZm9yIHVzZSB3aXRoIEdQQyBnZW5lcmF0b3Igd2l0aCBhIG5vbi1OVUxMCisgKiByZWdpb24u
ICovCit0c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfY3JlYXRlX2JhcmVfaW4odm9pZCogcmVnaW9u
KTsKKworLyogZGVzdHJveSBhIHRzZl9idWZmZXIgdGhhdCB3YXMgY3JlYXRlZCB3aXRoIHRzZl9i
dWZmZXJfY3JlYXRlX2JhcmUoKQorICAgYnV0IGRpZG4ndCB5ZXQgaGF2ZSBhbnl0aGluZyBlbHNl
IGRvbmUgdG8gaXQuICovCit2b2lkIHRzZl9idWZmZXJfZGVzdHJveV9iYXJlKHRzZl9idWZmZXJf
dCAqYnVmKTsKKworLyogcmVhZC93cml0ZSBhIGJ1ZmZlciB1c2luZyB0aGUgb2xkIGJ1ZmZlciBm
cmFtaW5nIGZvcm1hdCwgd2hpY2ggaXMgc3RpbGwKKyAqIGFwcHJvcHJpYXRlIGZvciBsYXJnZSBi
dWZmZXJzLiAqLwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3JlYWRfc2ltcGxlKHRzZl9idWZmZXJf
dCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21h
cF90ICplbmNsb3NpbmdfdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHNmX3JlYWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190
ICpsaW1pdHMpOwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3dyaXRlX3NpbXBsZSh0c2ZfYnVmZmVy
X3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlw
ZV9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRf
bWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
d3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICphcmcpOworCisvKiByZWFkL3dyaXRlIGEgc21hbGwgYnVmZmVyIHVzaW5nIHRoZSBuZXcgZnJh
bWluZyBmb3JtYXQsIHdoaWNoIG9ubHkgd29ya3MKKyAqIGZvciBzbWFsbCBidWZmZXJzLiAqLwor
dHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3JlYWRfc21hbGxfd2l0aF90eXBlX2NvZGUodHNmX2J1ZmZl
cl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCB0eXBlX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqZW5jbG9zaW5nX3R5cGVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlYWRlcl90IHJl
YWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl9saW1pdHNfdCAqbGltaXRzKTsKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl93cml0ZV9zbWFs
bF93aXRoX3R5cGVfY29kZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl93
cml0ZXJfdCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqYXJnKTsKKworLyogcmVhZCBpbnRvIGFuIGFscmVhZHktY3JlYXRlZCBi
dWZmZXIuIHRoZSBidWZmZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkCisgICB1c2luZyBlaXRo
ZXIgdHNmX2J1ZmZlcl9pbml0aWFsaXplX2N1c3RvbSgpIG9yIHRzZl9idWZmZXJfY3JlYXRlX2Jh
cmUoKSAqLwordHNmX2Jvb2xfdCB0c2Zfc2VyaWFsX2luX21hbl9yZWFkX2V4aXN0aW5nX2J1ZmZl
cih0c2Zfc2VyaWFsX2luX21hbl90ICppbl9tYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmKTsKKworLyogcmVhZCBh
IGJ1ZmZlciBmcm9tIGEgZmlsZSB0aGF0IHdhcyBvcGVubmVkIGZvciByZWFkaW5nIHVzaW5nIGFu
IGFscmVhZHktY3JlYXRlZAorICAgYnVmZmVyLiAqLwordHNmX2Jvb2xfdCB0c2Zfc3RyZWFtX2Zp
bGVfaW5wdXRfcmVhZF9leGlzdGluZ19idWZmZXIodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZp
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfYnVmZmVyX3QgKmJ1Zik7CisKKy8qIGdlbmVyYXRlIGludG8gYW4gZXhpc3RpbmcgYnVm
ZmVyIGNyZWF0ZWQgdXNpZ24gdHNmX2J1ZmZlcl9pbml0aWFsaXplX2N1c3RvbSgpLiAqLwordHNm
X2Jvb2xfdCB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2V4aXN0aW5nX2J1ZmZlcih0c2ZfZ2VucnRy
X3QgKmdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWYpOworCisvKiB3cml0ZSBhIHR5cGUgYWNjb3JkaW5n
IHRvIHRoZSBzZXJpYWwgcHJvdG9jb2wgKi8KK3RzZl9ib29sX3QgdHNmX3NlcmlhbF9vdXRfbWFu
X3dyaXRlX3R5cGUodHNmX3dyaXRlcl90IHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogdmVyaWZ5IHRoYXQgdGhlIGRh
dGEgaXMgdmFsaWQuICBiYXNpY2FsbHkganVzdCBkb2VzIE5VTEwgY2hlY2tzLiAqLwordHNmX2Jv
b2xfdCB0c2ZfcmVmbGVjdF92ZXJpZnkodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGdlbmVy
YXRlIGEgZ3BpbnQgcHJvdG90eXBlIGZvciBhIGdlbmVyYXRvci4gIGEgZ2VuZXJhdG9yIHRha2Vz
CisgKiB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2s6IGEgcG9pbnRlciB0byBh
IHRzZl90eXBlX3QsCisgKiBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIHN0cnVjdHVyZS4gIHRo
ZSBnZW5lcmF0b3IgcmV0dXJucyBhCisgKiBwb2ludGVyIHRvIGEgdHNmX2J1ZmZlcl90LCBvciAw
IGlmIGFuIGVycm9yIG9jY3VycmVkLiAqLworZ3BjX3Byb3RvX3QgKnRzZl9ncGNfY29kZV9nZW5f
Z2VuZXJhdGVfZ2VuZXJhdG9yKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBnZW5lcmF0ZSBhIGdw
aW50IHByb3RvdHlwZSBmb3IgYSBwYXJzZXIuICBhIHBhcnNlciB0YWtlcyB0aGUKKyAqIGZvbGxv
d2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrOiBhIHBvaW50ZXIgdG8gYSB0c2ZfYnVmZmVyX3Qu
CisgKiBpdCByZXR1cm5zIGEgcG9pbnRlciB0byBhIHVzZXIgc3RydWN0dXJlIHRoYXQgaXMgYWxz
byBhIHJlZ2lvbi4gKi8KK2dwY19wcm90b190ICp0c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRlX3Bh
cnNlcih0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqc3JjX3R5cGUpOworCisvKiBnZW5lcmF0ZSBh
IGdwaW50IHByb3RvdHlwZSBmb3IgYSBjb252ZXJ0ZXIuICBhIGNvbnZlcnRlciB0YWtlcworICog
dGhlIGZvbGxvd2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrOiBhIHBvaW50ZXIgdG8gdGhlIGRl
c3RpbmF0aW9uLAorICogd2hpY2ggbWF5IGJlIE5VTEwgaW5kaWNhdGluZyB0aGF0IHRoZSBkZXN0
aW5hdGlvbiBzaG91bGQgYmUKKyAqIGFsbG9jYXRlZCwgYW5kIGEgcG9pbnRlciB0byB0aGUgc291
cmNlLiAgdGhlIHJlZ2lvbiByZWdpc3RlcgorICogbWF5IGJlIE5VTEwgb25seSBpZiB0aGUgZGVz
dGluYXRpb24gaXMgTlVMTDsgaWYgdGhlIHJlZ2lvbgorICogaXMgTlVMTCBpdCBtZWFucyB0aGF0
IGEgbmV3IHJlZ2lvbiBzaG91bGQgYmUgYWxsb2NhdGVkLiAgYQorICogY29udmVydGVyIHJldHVy
bnMgdGhlIGRlc3RpbmF0aW9uLiAqLworZ3BjX3Byb3RvX3QgKnRzZl9ncGNfY29kZV9nZW5fZ2Vu
ZXJhdGVfY29udmVydGVyKHRzZl90eXBlX3QgKmRlc3RfdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICpzcmNfdHlwZSk7CisK
Ky8qIGdlbmVyYXRlIGEgZ3BpbnQgcHJvdG90eXBlIGZvciBhIGRlc3Ryb3llci4gIGEgZGVzdHJv
eWVyIHRha2VzIHRoZQorICogZm9sbG93aW5nIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2s6IGEgcG9p
bnRlciB0byB0aGUgdXNlciBzdHJ1Y3R1cmUuCisgKiBpdCByZXR1cm5zIDAuICovCitncGNfcHJv
dG9fdCAqdHNmX2dwY19jb2RlX2dlbl9nZW5lcmF0ZV9kZXN0cm95ZXIodHNmX3R5cGVfdCAqdHlw
ZSk7CisKKy8qIGludGVybmFsIEZTREIgcHV0IGZ1bmN0aW9uLiAganVzdCBnaXZlcyB5b3UgYSBm
aWxlIGRlc2NyaXB0b3IKKyAqIGZvciB3cml0aW5nIHRvIHRoZSBmaWxlIGFuZCB0aGUgZmlsZSBu
YW1lLiAqLwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ndXRzX3B1dCh0c2ZfZnNkYl90ICpmc2RiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtleSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ICpmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKnBhcnRmbG5tKTsKKworLyogaW50ZXJuYWwgRlNEQiBjb21taXQgZnVuY3Rpb24u
ICovCit0c2ZfYm9vbF90IHRzZl9mc2RiX2d1dHNfY29tbWl0KHRzZl9mc2RiX3QgKmZzZGIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcnRmbG5tLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtleSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKmRhdGFmbG5tKTsKKworLyogaW50ZXJuYWwgRlNEQiBh
Ym9ydCBmdW5jdGlvbi4gKi8KK3RzZl9ib29sX3QgdHNmX2ZzZGJfZ3V0c19hYm9ydCh0c2ZfZnNk
Yl90ICpmc2RiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcnRmbG5t
KTsKKworLyogaW50ZXJuYWwgRlNEQiBnZXQgZnVuY3Rpb24uICovCit0c2ZfYm9vbF90IHRzZl9m
c2RiX2d1dHNfZ2V0KHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRzZl9idWZmZXJfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
KmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqZGF0YWZsbm0pOworCisv
KiBpbnRlcm5hbCBGU0RCIHJtIGZ1bmN0aW9uLiAqLwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ndXRz
X3JtKHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1
ZmZlcl90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmRhdGFmbG5t
KTsKKworLyogYWJvcnQgYmVjYXVzZSB3ZSBzY3Jld2VkIHVwIGJpZyB0aW1lICovCisjZGVmaW5l
IHRzZl9hYm9ydChtc2cpIGRvIHsJCQkJCQlcCisJZnByaW50ZihzdGRlcnIsInRzZl9hYm9ydChc
IiVzXCIpOiBjYWxsZWQgYXQgJXM6JWRcbiIsCQlcCisJCW1zZyxfX0ZJTEVfXyxfX0xJTkVfXyk7
CQkJCQlcCisJYWJvcnQoKTsJCQkJCQkJXAorICAgIH0gd2hpbGUgKDApCisKKy8qIGZ1bmN0aW9u
IHZlcnNpb24gb2YgYWJvcnQgKi8KK3ZvaWQgdHNmX2ZfYWJvcnQoY29uc3QgY2hhciAqbXNnKTsK
KworLyogbWFrZSBhbiBhc3NlcnRpb24gdGhhdCwgaWYgaXQgZmFpbHMsIGNhdXNlcyB1cyB0byBh
Ym9ydC4gd2UgZG9uJ3QKKyAqIHN1cHBvcnQgdGhlIG5vdGlvbiBvZiBvcHRpb25hbCBhc3NlcnRp
b25zOyB0aGV5IGFyZSBhbHdheXMgZW5hYmxlZC4gKi8KKyNkZWZpbmUgdHNmX2Fzc2VydChleHAp
IGRvIHsJCQkJCQlcCisJaWYgKCEoZXhwKSkgewkJCQkJCQlcCisJICAgIGZwcmludGYoc3RkZXJy
LCJ0c2ZfYXNzZXJ0KCVzKTogZmFpbGVkIGF0ICVzOiVkXG4iLAkJXAorCQkgICAgI2V4cCxfX0ZJ
TEVfXyxfX0xJTkVfXyk7CQkJCVwKKwkgICAgYWJvcnQoKTsJCQkJCQkJXAorCX0JCQkJCQkJCVwK
KyAgICB9IHdoaWxlICgwKQorCisjZW5kaWYKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsX2NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaW50ZXJuYWxfY29uZmlnLmgJ
KG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl9pbnRlcm5hbF9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklM
SVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisv
KgorICogVGhpcyBmaWxlIGhvbGRzIHRzZl9pbnRlcm5hbF9jb25maWdfc3R1Yi5oLCB3aGljaCBp
cyBhdXRvLWdlbmVyYXRlZC4KKyAqCisgKiBTaW5jZSB0aGlzIGNvbnRhaW5zIGludGVybmFsIGNv
bmZpZ3VyYXRpb24sIGl0IHNob3VsZCBvbmx5IGJlOgorICogLT4gSW5jbHVkZWQgZnJvbSBvdXIg
b3duIEMgZmlsZXMgKGVpdGhlciBmaWxlcyBpbiB0aGUgZGlzdHJpYnV0aW9uIG9yCisgKiAgICBD
IGZpbGVzIHdlIGNvZGUtZ2VuZXJhdGUgdGhhdCBkbyBub3QgZGlyZWN0bHkgY29udGFpbiBhbnkg
dXNlciBjb2RlKQorICogLT4gSW5jbHVkZWQgaW4gQyBmaWxlcyEhICBJZiB0aGVyZSBpcyBldmVy
IGFueSBDKysgY29kZSwgaXQgc2hvdWxkIG5vdAorICogICAgaW5jbHVkZSB0aGlzIHVubGVzcyB0
aGluZ3MgYXJlIGNoYW5nZWQgYXJvdW5kLiAgVGhpcyBpcyBiZWNhdXNlIHRoaXMKKyAqICAgIGNv
bmZpZyBtYXkgcmVkZWZpbmUgaW5saW5lIChhbmQgcG90ZW50aWFsbHkgb3RoZXIgdGhpbmdzKSB0
aGF0IHdvdWxkCisgKiAgICBwcm9iYWJseSBzY3JldyB1cCBhIGxvdCBvZiBDKysgY29kZS4KKyAq
LworCisjaWZuZGVmIEZQX1RTRl9JTlRFUk5BTF9DT05GSUdfSAorI2RlZmluZSBGUF9UU0ZfSU5U
RVJOQUxfQ09ORklHX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjZXJyb3IgIlRoaXMgaGVhZGVy
IHNob3VsZCBORVZFUiBiZSBpbmNsdWRlZCBpbiBDKysgY29kZSIKKyNlbmRpZgorCisjaW5jbHVk
ZSAidHNmX2ludGVybmFsX2NvbmZpZ19zdHViLmgiCisKKyNlbmRpZgorCkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsX2NvbmZpZ19zdHViLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9p
bnRlcm5hbF9jb25maWdfc3R1Yi5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
SmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaW50ZXJuYWxfY29uZmlnX3N0dWIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM0MiBAQAorLyogbGlicmFyeS9jb25maWcuaC4gIEdlbmVyYXRlZCBm
cm9tIGNvbmZpZy5oLmluIGJ5IGNvbmZpZ3VyZS4gICovCisvKiBsaWJyYXJ5L2NvbmZpZy5oLmlu
LiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLworCisvKiBE
ZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisv
KiAjdW5kZWYgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxEICovCisKKy8qIGRlZmluZXMgaG93IHRv
IHRocm93IGluIHRoZSBub2lubGluZSBhdHRyaWJ1dGUgKi8KKyNkZWZpbmUgQVRUUklCVVRFX05P
SU5MSU5FIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKworLyogRGVmaW5lZCBpZiB5b3UgY2Fu
IGRvIG1pc2FsaWduZWQgbG9hZHMgYW5kIHN0b3JlcyBvbiBmbG9hdHMgKi8KKyNkZWZpbmUgQ0FO
X0RPX0ZMT0FUX01JU0FMSUdORURfTERTVCAxCisKKy8qIERlZmluZWQgaWYgeW91IGNhbiBkbyBt
aXNhbGlnbmVkIGxvYWRzIGFuZCBzdG9yZXMgKi8KKyNkZWZpbmUgQ0FOX0RPX01JU0FMSUdORURf
TERTVCAxCisKKy8qIERldGVybWluZXMgdGhlIHByZWZpeCBmb3IgaW5jbHVkaW5nIFRTRiBmaWxl
cyBmcm9tIGdlbmVyYXRlZCBjb2RlICovCisjZGVmaW5lIENPREVfR0VOX0lOQ0xVREVfUFJFRklY
ICJ0c2YvIgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFjY2VwdCcgZnVuY3Rp
b24uICovCisjZGVmaW5lIEhBVkVfQUNDRVBUIDAKKworLyogRGVmaW5lZCBpZiB3ZSBjYW4gdGFr
ZSBhZGRyZXNzZXMgb2YgbGFiZWxzICovCisvLyNkZWZpbmUgSEFWRV9BRERSRVNTX09GX0xBQkVM
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhcnBhL2luZXQuaD4gaGVhZGVy
IGZpbGUuICovCisjZGVmaW5lIEhBVkVfQVJQQV9JTkVUX0ggMQorCisvKiBEZWZpbmVkIGlmIHdl
IGFyZSBvbiBhIGJpZyBlbmRpYW4gbWFjaGluZSAqLworLyogI3VuZGVmIEhBVkVfQklHX0VORElB
TiAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJpbmQnIGZ1bmN0aW9uLiAq
LworLy8jZGVmaW5lIEhBVkVfQklORCAxCisKKy8qIERlZmllbmQgaWYgeW91didlIGdvdCBCU0Qg
c29ja2V0cyAqLworLy8jZGVmaW5lIEhBVkVfQlNEU09DS1MgMQorCisvKiBEZWZpbmVkIGlmIHdl
IGhhdmUgX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcCAqLworLy8jZGVmaW5lIEhBVkVfQlVJ
TFRJTl9DQVMgMQorCisvKiBEZWZpbmVkIGlmIHdlIGhhdmUgX19zeW5jX2ZldGNoX2FuZF9hZGQg
Ki8KKy8vI2RlZmluZSBIQVZFX0JVSUxUSU5fWEFERCAxCisKKy8qIERlZmluZWQgaWYgd2UgaGF2
ZSBsaWJiemlwMiAqLworLyogI3VuZGVmIEhBVkVfQlpJUDIgKi8KKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBjb25uZWN0JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX0NP
Tk5FQ1QgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRsZmNuLmg+IGhlYWRl
ciBmaWxlLiAqLworLy8jZGVmaW5lIEhBVkVfRExGQ05fSCAxCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgZm9yaycgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9GT1JLIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRhZGRyaW5mbycgZnVuY3Rpb24u
ICovCisvLyNkZWZpbmUgSEFWRV9HRVRBRERSSU5GTyAxCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgZ2V0aG9zdGJ5bmFtZScgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9H
RVRIT1NUQllOQU1FIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0
YnluYW1lX3InIGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SICov
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0b3B0JyBmdW5jdGlvbi4gKi8K
KyNkZWZpbmUgSEFWRV9HRVRPUFQgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YGdldHBhZ2VzaXplJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9HRVRQQUdFU0laRSAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0dGltZW9mZGF5JyBmdW5jdGlvbi4g
Ki8KKyNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQorCisvKiBEZXRlcm1pbmVzIGlmIHdlIGhh
dmUgSUVFRSBmbG9hdGluZyBwb2ludCAqLworI2RlZmluZSBIQVZFX0lFRUVfRkxPQVQgMQorCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvYScgZnVuY3Rpb24uICovCisj
ZGVmaW5lIEhBVkVfSU5FVF9OVE9BIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBpbmV0X250b3AnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0lORVRfTlRPUCAxCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICov
CisjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSBgbScgbGlicmFyeSAoLWxtKS4gKi8KKyNkZWZpbmUgSEFWRV9MSUJNIDEKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsaXN0ZW4nIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5l
IEhBVkVfTElTVEVOIDEKKworLyogRGVmaW5lZCBpZiB3ZSBhcmUgb24gYSBsaXR0bGUgZW5kaWFu
IG1hY2hpbmUgKi8KKyNkZWZpbmUgSEFWRV9MSVRUTEVfRU5ESUFOIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWUnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZF
X0xPQ0FMVElNRSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9jYWx0aW1l
X3InIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0xPQ0FMVElNRV9SIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb25nam1wJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBI
QVZFX0xPTkdKTVAgMQorCisvKiBEZWZpbmVkIGlmIHRoZSBNQVBfQU5PTiBjb25zdGFudCBpcyBk
ZWZpbmVkLiAqLworLy8jZGVmaW5lIEhBVkVfTUFQX0FOT04gMQorCisvKiBEZWZpbmVkIGlmIHRo
ZSBNQVBfQU5PTllNT1VTIGNvbnN0YW50IGlzIGRlZmluZWQuICovCisvLyNkZWZpbmUgSEFWRV9N
QVBfQU5PTllNT1VTIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnku
aD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZHRlbXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhB
VkVfTUtEVEVNUCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcgZnVu
Y3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9NTUFQIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBtcHJvdGVjdCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9NUFJPVEVD
VCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXVubWFwJyBmdW5jdGlvbi4g
Ki8KKy8vI2RlZmluZSBIQVZFX01VTk1BUCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUEFUSENPTkYgMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByZWFkJyBmdW5jdGlvbi4gKi8KKy8v
I2RlZmluZSBIQVZFX1BSRUFEIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBw
cmVhZHYnIGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIEhBVkVfUFJFQURWICovCisKKy8qIERlZmlu
ZWQgaWYgd2UgaGF2ZSBwdGhyZWFkcyAqLworLy8jZGVmaW5lIEhBVkVfUFRIUkVBRCAxCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlJyBmdW5jdGlvbi4gKi8KKy8vI2Rl
ZmluZSBIQVZFX1BXUklURSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdy
aXRldicgZnVuY3Rpb24uICovCisvKiAjdW5kZWYgSEFWRV9QV1JJVEVWICovCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcXNvcnQnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZF
X1FTT1JUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkZGlyX3InIGZ1
bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUkVBRERJUl9SIDEKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGByZWFkdicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9SRUFE
ViAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVnY29tcCcgZnVuY3Rpb24u
ICovCisvLyNkZWZpbmUgSEFWRV9SRUdDT01QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGByZWdlcnJvcicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9SRUdFUlJPUiAx
CisKKy8qIERlZmluZWQgaWYgeW91J3ZlIGdvdCByZWdleCBmdW5jdGlvbnMgKi8KKy8vI2RlZmlu
ZSBIQVZFX1JFR0VYIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWdleGVj
JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1JFR0VYRUMgMQorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2ZyZWUnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVf
UkVHRlJFRSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2NoZWQuaD4gaGVh
ZGVyIGZpbGUuICovCisvLyNkZWZpbmUgSEFWRV9TQ0hFRF9IIDEKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBzY2hlZF95aWVsZCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFW
RV9TQ0hFRF9ZSUVMRCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0am1w
JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1NFVEpNUCAxCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgc2V0dmJ1ZicgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU0VU
VkJVRiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc29ja2V0JyBmdW5jdGlv
bi4gKi8KKy8vI2RlZmluZSBIQVZFX1NPQ0tFVCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NURElOVF9I
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpby5oPiBoZWFkZXIgZmls
ZS4gKi8KKyNkZWZpbmUgSEFWRV9TVERJT19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RETElCX0gg
MQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cGNweScgZnVuY3Rpb24uICov
CisjZGVmaW5lIEhBVkVfU1RQQ1BZIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAq
LworI2RlZmluZSBIQVZFX1NUUklOR19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBzdHJzaWduYWwnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfU1RSU0lHTkFMIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmls
ZS4gKi8KKyNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1lT
X1RZUEVTX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91aW8uaD4g
aGVhZGVyIGZpbGUuICovCisvLyNkZWZpbmUgSEFWRV9TWVNfVUlPX0ggMQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRlbXBuYW0nIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhB
VkVfVEVNUE5BTSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+
IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGB2YXNwcmludGYnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZF
X1ZBU1BSSU5URiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd3JpdGV2JyBm
dW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1dSSVRFViAxCisKKy8qIERlZmluZWQgaWYgd2Ug
Y2FuIHVzZSBYODYgaW5saW5lIGFzc2VtYmx5IGZvciBmZW5jZXMgKi8KKy8vI2RlZmluZSBIQVZF
X1g4Nl9JTkxJTkVfQVNNX0ZFTkNFUyAxCisKKy8qIERlZmluZWQgaWYgd2UgaGF2ZSBaTGliICov
CisvLyNkZWZpbmUgSEFWRV9aTElCIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBfbG9uZ2ptcCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9fTE9OR0pNUCAxCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX3NldGptcCcgZnVuY3Rpb24uICovCisvKiAj
dW5kZWYgSEFWRV9fU0VUSk1QICovCisKKy8qIERlZmluZWQgd2hlbiB5b3UncmUgb24gYSBzZW5z
aWJsZSBPUywgdW5saWtlIE5ldEJTRC4gKi8KKyNkZWZpbmUgSU5UVFlQRVNfV09SS19SSUdIVCAx
CisKKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSBpbiB3aGljaCBsaWJ0b29sIHN0b3Jl
cyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuCisgICAqLworI2RlZmluZSBMVF9PQkpESVIgIi5saWJz
LyIKKworLyogVGVsbCB5b3UgdGhlIG5hdGl2ZSBhbGlnbm1lbnQgb2YgeW91ciBwbGF0Zm9ybSAq
LworI2RlZmluZSBOQVRJVkVfQUxJR05NRU5UIDE2CisKKy8qIE5hbWUgb2YgcGFja2FnZSAqLwor
I2RlZmluZSBQQUNLQUdFICJ0c2YiCisKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBi
dWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI2RlZmluZSBQ
QUNLQUdFX0JVR1JFUE9SVCAicGl6bG9AbWFjLmNvbSIKKworLyogRGVmaW5lIHRvIHRoZSBmdWxs
IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX05BTUUgInRzZiIKKwor
LyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAq
LworI2RlZmluZSBQQUNLQUdFX1NUUklORyAidHNmIDEuMS4wIgorCisvKiBEZWZpbmUgdG8gdGhl
IG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tB
R0VfVEFSTkFNRSAidHNmIgorCisvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBw
YWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX1VSTCAiIgorCisvKiBEZWZpbmUgdG8gdGhlIHZl
cnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEuMS4w
IgorCisvKiBUaGUgc2l6ZSBvZiBgZG91YmxlJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwor
I2RlZmluZSBTSVpFT0ZfRE9VQkxFIDgKKworLyogVGhlIHNpemUgb2YgYGZsb2F0JywgYXMgY29t
cHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfRkxPQVQgNAorCisvKiBUaGUgc2l6
ZSBvZiBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX0xP
TkcgNAorCisvKiBUaGUgc2l6ZSBvZiBgbG9uZyBkb3VibGUnLCBhcyBjb21wdXRlZCBieSBzaXpl
b2YuICovCisjZGVmaW5lIFNJWkVPRl9MT05HX0RPVUJMRSAxNgorCisvKiBUaGUgc2l6ZSBvZiBg
bG9uZyBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfTE9O
R19MT05HIDgKKworLyogVGhlIHNpemUgb2YgYG9mZl90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9m
LiAqLworI2RlZmluZSBTSVpFT0ZfT0ZGX1QgOAorCisvKiBUaGUgc2l6ZSBvZiBgc2l6ZV90Jywg
YXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfU0laRV9UIDQKKworLyog
VGhlIHNpemUgb2YgYHZvaWQgKicsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUg
U0laRU9GX1ZPSURfUCA0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMg
aGVhZGVyIGZpbGVzLiAqLworI2RlZmluZSBTVERDX0hFQURFUlMgMQorCisvKiBEZXRlcm1pbmVz
IHdoZXJlIHRvIHBsYWNlIHRlbXBvcmFyeSBmaWxlcyAqLworI2RlZmluZSBUTVBfRElSRUNUT1JZ
ICIvdG1wIgorCisvKiBWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlICovCisjZGVmaW5lIFZFUlNJ
T04gIjEuMS4wIgorCisvKiBUU0YgbWFqb3IgdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVkVS
U0lPTl9NQUpPUiAxCisKKy8qIFRTRiBtaW5vciB2ZXJzaW9uIG51bWJlciAqLworI2RlZmluZSBW
RVJTSU9OX01JTk9SIDEKKworLyogVFNGIHBhdGNoIHZlcnNpb24gbnVtYmVyICovCisjZGVmaW5l
IFZFUlNJT05fUEFUQ0ggMAorCisvKiBEZWZpbmUgV09SRFNfQklHRU5ESUFOIHRvIDEgaWYgeW91
ciBwcm9jZXNzb3Igc3RvcmVzIHdvcmRzIHdpdGggdGhlIG1vc3QKKyAgIHNpZ25pZmljYW50IGJ5
dGUgZmlyc3QgKGxpa2UgTW90b3JvbGEgYW5kIFNQQVJDLCB1bmxpa2UgSW50ZWwpLiAqLworI2lm
IGRlZmluZWQgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECisjIGlmIGRlZmluZWQgX19CSUdfRU5E
SUFOX18KKyMgIGRlZmluZSBXT1JEU19CSUdFTkRJQU4gMQorIyBlbmRpZgorI2Vsc2UKKyMgaWZu
ZGVmIFdPUkRTX0JJR0VORElBTgorLyogIyAgdW5kZWYgV09SRFNfQklHRU5ESUFOICovCisjIGVu
ZGlmCisjZW5kaWYKKworLyogRW5hYmxlIGxhcmdlIGlub2RlIG51bWJlcnMgb24gTWFjIE9TIFgg
MTAuNS4gICovCisjaWZuZGVmIF9EQVJXSU5fVVNFXzY0X0JJVF9JTk9ERQorIyBkZWZpbmUgX0RB
UldJTl9VU0VfNjRfQklUX0lOT0RFIDEKKyNlbmRpZgorCisvKiBOdW1iZXIgb2YgYml0cyBpbiBh
IGZpbGUgb2Zmc2V0LCBvbiBob3N0cyB3aGVyZSB0aGlzIGlzIHNldHRhYmxlLiAqLworLyogI3Vu
ZGVmIF9GSUxFX09GRlNFVF9CSVRTICovCisKKy8qIERlZmluZSBmb3IgbGFyZ2UgZmlsZXMsIG9u
IEFJWC1zdHlsZSBob3N0cy4gKi8KKy8qICN1bmRlZiBfTEFSR0VfRklMRVMgKi8KKworLyogRGVm
aW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCisv
KiAjdW5kZWYgY29uc3QgKi8KKworLyogRGVmaW5lIHRvIGBfX2lubGluZV9fJyBvciBgX19pbmxp
bmUnIGlmIHRoYXQncyB3aGF0IHRoZSBDIGNvbXBpbGVyCisgICBjYWxscyBpdCwgb3IgdG8gbm90
aGluZyBpZiAnaW5saW5lJyBpcyBub3Qgc3VwcG9ydGVkIHVuZGVyIGFueSBuYW1lLiAgKi8KKyNp
Zm5kZWYgX19jcGx1c3BsdXMKKy8qICN1bmRlZiBpbmxpbmUgKi8KKyNlbmRpZgorCisvKiBEZWZp
bmUgdG8gZW1wdHkgaWYgdGhlIGtleXdvcmQgYHZvbGF0aWxlJyBkb2VzIG5vdCB3b3JrLiBXYXJu
aW5nOiB2YWxpZAorICAgY29kZSB1c2luZyBgdm9sYXRpbGUnIGNhbiBiZWNvbWUgaW5jb3JyZWN0
IHdpdGhvdXQuIERpc2FibGUgd2l0aCBjYXJlLiAqLworLyogI3VuZGVmIHZvbGF0aWxlICovCklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludHR5cGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9p
bnR0eXBlcy5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfaW50dHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisvKgorICogSGFj
a3MgaW50dHlwZXMgdG8gd29yayByaWdodCBvbiBOZXRCU0QgKGFuZCBwb3NzaWJseSBvdGhlciBz
eXN0ZW1zKSBhbmQgQysrLgorICovCisKKy8qIHRoZXNlIGFyZSB0aGUgdHdvIGxpYnJhcmllcyB0
aGF0IG1pZ2h0ICNkZWZpbmUgdGhlIGludFhYWCBtYWNyb3MuCisgICBpbmNsdWRpbmcgdGhlbSBo
ZXJlIHByZXZlbnRzIHRoZW0gZnJvbSBiZWluZyBpbmNsdWRlZCBhZnRlciBJJ3ZlCisgICBhbHJl
YWR5ICN1bmRlZmluZWQgdGhlIG1hY3Jvcy4gKi8KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWZuZGVmIFRTRl9JTlRUWVBFU19XT1JLX1JJR0hUCisj
dW5kZWYgaW50OF90CisjdW5kZWYgdWludDhfdAorI3VuZGVmIGludDE2X3QKKyN1bmRlZiB1aW50
MTZfdAorI3VuZGVmIGludDMyX3QKKyN1bmRlZiB1aW50MzJfdAorI3VuZGVmIGludDY0X3QKKyN1
bmRlZiB1aW50NjRfdAorI2VuZGlmCisKKy8qIHdvdy4gIGp1c3Qgd293LiAgdGhlIHdheSBDKysg
c2Fib3RhZ2VzIGludHR5cGVzLmggaXMgc3BlY3RhY3VsYXIuICovCisjaWZuZGVmIFVJTlQzMl9N
QVgKKyNkZWZpbmUgVUlOVDMyX01BWCAoKCh1aW50MzJfdCkwKS0oKHVpbnQzMl90KTEpKQorI2Vu
ZGlmCisKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9p
by5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2ZfaW8uYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX2lvLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBG
SUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxP
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk
ZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwordHNmX2Jvb2xfdCB0c2ZfZmRfd3Jp
dGVyKHZvaWQgKmFyZywgY29uc3Qgdm9pZCAqZGF0YSwgdWludDMyX3QgbGVuKSB7CisgICAgdWlu
dDhfdCAqY3VyID0gKHVpbnQ4X3QqKWRhdGE7CisgICAgaW50IGZkID0gKigoaW50KilhcmcpOwor
ICAgIHdoaWxlIChsZW4pIHsKKyAgICAgICAgaW50IHJlcyA9IHdyaXRlKGZkLCBjdXIsIGxlbik7
CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIp
IHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNhbGxpbmcgd3JpdGUoKSBpbiB0c2ZfZmRfd3JpdGVyKCkiKTsKKyAg
ICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgY3VyICs9IHJl
czsKKyAgICAgICAgbGVuIC09IHJlczsKKyAgICB9CisgICAgcmV0dXJuIHRzZl90cnVlOworfQor
Cit0c2ZfYm9vbF90IHRzZl9mZF9yZWFkZXIodm9pZCAqYXJnLCB2b2lkICpkYXRhLCB1aW50MzJf
dCBsZW4pIHsKKyAgICB1aW50OF90ICpjdXI9ZGF0YTsKKyAgICBpbnQgZmQ9KigoaW50Kilhcmcp
OworICAgIHdoaWxlIChsZW4pIHsKKyAgICAgICAgaW50IHJlcz1yZWFkKGZkLGN1cixsZW4pOwor
ICAgICAgICBpZiAocmVzPDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubz09RUlOVFIpIHsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNhbGxpbmcgcmVhZCgpIGluIHRzZl9mZF9yZWFkZXIoKSIpOworICAgICAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzPT0wKSB7Cisg
ICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKCh2b2lkKiljdXI9PWRhdGE/CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRTRl9FX1VORVhQRUNURURfRU9GOlRTRl9FX0VSUk9ORU9VU19FT0YsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfZmRfcmVhZGVy
KCkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
Y3VyKz1yZXM7CisgICAgICAgIGxlbi09cmVzOworICAgIH0KKyAgICByZXR1cm4gdHNmX3RydWU7
Cit9CisKK2ludDMyX3QgdHNmX2ZkX3BhcnRpYWxfcmVhZGVyKHZvaWQgKmFyZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICBpbnQgZmQ9KigoaW50KilhcmcpOworICAgIGZv
ciAoOzspIHsKKyAgICAgICAgaW50IHJlcz1yZWFkKGZkLGRhdGEsbGVuKTsKKyAgICAgICAgaWYg
KHJlczwwKSB7CisgICAgICAgICAgICBpZiAoZXJybm89PUVJTlRSKSB7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJD
YWxsaW5nIHJlYWQoKSBpbiB0c2ZfZmRfcGFydGlhbF9yZWFkZXIoKSIpOworICAgICAgICAgICAg
cmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChyZXM9PTApIHsKKyAgICAgICAgICAg
IHRzZl9zZXRfZXJyb3IoVFNGX0VfVU5FWFBFQ1RFRF9FT0YsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfZmRfcGFydGlhbF9yZWFkZXIoKSIpOworICAg
ICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXM7CisgICAg
fQorfQorCit0c2ZfYm9vbF90IHRzZl9jb21wYXJpbmdfd3JpdGVyKHZvaWQgKmFyZywKKwkJCQlj
b25zdCB2b2lkICpidWYsCisJCQkJdWludDMyX3QgbGVuKSB7CisgICAgdHNmX2NvbXBhcmluZ193
cml0ZXJfdCAqc2VsZj1hcmc7CisgICAgdm9pZCAqbXlfYnVmPW1hbGxvYyhsZW4pOworICAgIGlm
IChteV9idWY9PU5VTEwpIHsKKwl0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgdGVt
cG9yYXJ5IGJ1ZmZlciIpOworCXJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIGlmIChzZWxm
LT5yZWFkZXIoc2VsZi0+YXJnLG15X2J1ZixsZW4pKSB7CisJaW50IHJlcz1tZW1jbXAoYnVmLG15
X2J1ZixsZW4pOworCWZyZWUobXlfYnVmKTsKKwlpZiAocmVzPT0wKSB7CisJICAgIHJldHVybiB0
c2ZfdHJ1ZTsKKwl9IGVsc2UgeworCSAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0NPTVBBUkVfRkFJ
TCxOVUxMKTsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKwl9CisgICAgfSBlbHNlIHsKKwlmcmVl
KG15X2J1Zik7CisJcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cit9CisKK3RzZl9ib29sX3QgdHNm
X2hhc2hpbmdfd3JpdGVyKHZvaWQgKmFyZywKKwkJCSAgICAgIGNvbnN0IHZvaWQgKl9idWYsCisJ
CQkgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB1aW50OF90ICpidWYgPSAodWludDhfdCopX2J1
ZjsKKyAgICB1aW50MzJfdCAqaGFzaCA9IGFyZzsKKyAgICB1aW50MzJfdCBoID0gKmhhc2gsIGc7
CisgICAgCisgICAgLyogdGhpcyBpcyB0aGUgRUxGIGhhc2gsIGF0IGxlYXN0IGFjY29yZGluZyB0
byBteSBoYXNodGFibGUKKyAgICAgICBsaWJyYXJ5LiAqLworICAgIHdoaWxlIChsZW4gLS0+IDAp
IHsKKwloID0gKGggPDwgNCkgKyBidWZbbGVuXTsKKwlnID0gaCAmIDB4ZjAwMDAwMDA7CisJaWYg
KGcpIHsKKwkgICAgaCBePSBnID4+IDI0OworCX0KKwloICY9IH5nOworICAgIH0KKworICAgICpo
YXNoID0gaDsKKworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2Zfc2l6
ZV9jYWxjX3dyaXRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbGVuKSB7CisgICAgdWludDMyX3QgKnRvdGFsX2xlbj1hcmc7CisgICAgKCp0b3RhbF9sZW4p
Kz1sZW47CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9zaXplX2F3
YXJlX3JlYWRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4p
IHsKKyAgICB0c2Zfc2l6ZV9hd2FyZV9yZHJfdCAqc2VsZj1hcmc7CisgICAgCisgICAgaWYgKHNl
bGYtPmxpbWl0PGxlbikgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9S
LAorICAgICAgICAgICAgICAgICAgICAgICJPdmVycmFuIHNpemUgbGltaXQgZm9yICVzIixzZWxm
LT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYg
KCFzZWxmLT5yZWFkZXIoc2VsZi0+YXJnLGJ1ZixsZW4pKSB7CisgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorICAgIAorICAgIHNlbGYtPmxpbWl0LT1sZW47CisgICAgCisgICAgcmV0
dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9idWZmZXJfb25seV93cml0ZXIodm9p
ZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAg
ICB1aW50OF90ICoqY3VyID0gYXJnOworICAgIG1lbWNweSgqY3VyLCBidWYsIGxlbik7CisgICAg
KCpjdXIpICs9IGxlbjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNm
X3Jlc2l6YWJsZV9idWZmZXJfd3JpdGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbikgeworICAgIHRzZl9yZXNpemFibGVfYnVm
ZmVyX3QgKnJlc2l6YWJsZSA9IGFyZzsKKyAgICAKKyAgICBpZiAocmVzaXphYmxlLT5lbmQgLSBy
ZXNpemFibGUtPmN1ciA8IGxlbikgeworICAgICAgICBzaXplX3Qgb2xkX3NpemU7CisgICAgICAg
IHNpemVfdCBuZXdfc2l6ZTsKKyAgICAgICAgdWludDhfdCAqbmV3X2Jhc2U7CisgICAgICAgIAor
ICAgICAgICBvbGRfc2l6ZSA9IHJlc2l6YWJsZS0+ZW5kIC0gcmVzaXphYmxlLT5iYXNlOworICAg
ICAgICBuZXdfc2l6ZSA9IChvbGRfc2l6ZSArIGxlbikgPDwgMTsKKyAgICAgICAgCisgICAgICAg
IGlmIChyZXNpemFibGUtPmJhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgbmV3X2Jhc2UgPSBt
YWxsb2MobmV3X3NpemUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV3X2Jhc2Ug
PSByZWFsbG9jKHJlc2l6YWJsZS0+YmFzZSwgbmV3X3NpemUpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAobmV3X2Jhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9l
cnJubygiQ291bGQgbm90IG1hbGxvYyByZXNpemFibGUgYnVmZmVyIik7CisgICAgICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXNpemFibGUt
PmVuZCA9IG5ld19iYXNlICsgbmV3X3NpemU7CisgICAgICAgIHJlc2l6YWJsZS0+Y3VyID0gbmV3
X2Jhc2UgKyAocmVzaXphYmxlLT5jdXIgLSByZXNpemFibGUtPmJhc2UpOworICAgICAgICByZXNp
emFibGUtPmJhc2UgPSBuZXdfYmFzZTsKKyAgICB9CisgICAgCisgICAgbWVtY3B5KHJlc2l6YWJs
ZS0+Y3VyLCBidWYsIGxlbik7CisgICAgcmVzaXphYmxlLT5jdXIgKz0gbGVuOworICAgIHJldHVy
biB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX29ubHlfcmVhZGVyKHZvaWQg
KmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpidWYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVuKSB7CisgICAgdHNmX2xp
Z2h0X2J1ZmZlcl90ICpzdGF0ZT1hcmc7CisgICAgaWYgKHN0YXRlLT5jdXIgPT0gc3RhdGUtPmVu
ZCkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1VORVhQRUNURURfRU9GLAorICAgICAg
ICAgICAgICAgICAgICAgICJCdWZmZXIgaXMgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgaWYgKHN0YXRlLT5jdXIrbGVuID4gc3RhdGUtPmVuZCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0VSUk9ORU9VU19FT0YsCisgICAgICAgICAgICAgICAg
ICAgICAgIkJ1ZmZlciBkb2VzIG5vdCBoYXZlIHJlcXVlc3RlZCBkYXRhIik7CisgICAgICAgIHJl
dHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIG1lbWNweShidWYsc3RhdGUtPmN1cixsZW4pOwor
ICAgIHN0YXRlLT5jdXIrPWxlbjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKKwpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pb191dGlscy5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaW9fdXRp
bHMuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvdHNmX2lvX3V0aWxzLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJ
UCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisKK2NoYXIg
KnRzZl9yZWFkX3N0cmluZyh0c2ZfcmVhZGVyX3QgcmVhZGVyLAorICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X3NpemUpIHsK
KyAgICB1aW50OF90IHVpOF90bXA7CisKKyAgICBjb25zdCBzaXplX3Qgc3RlcD0xMjg7CisgICAg
c2l6ZV90IHNpemU9c3RlcDsKKyAgICAKKyAgICB1aW50MzJfdCBpPTA7CisgICAgCisgICAgY2hh
ciAqc3RyPW1hbGxvYyhzaXplKTsKKyAgICAKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHVpbnQz
Ml90IG47CisgICAgICAgIHRzZl9ib29sX3QgZG9uZT10c2ZfZmFsc2U7CisgICAgICAgIAorICAg
ICAgICBpZiAoc3RyPT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgKG18cmUpYWxsb2Mgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgZm9yIChuPXN0ZXA7bi0tPjA7KSB7CisgICAgICAgICAg
ICBpZiAoIXJlYWRlcihhcmcsJnVpOF90bXAsMSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cltpKytdPXVpOF90bXA7CisgICAg
ICAgICAgICBpZiAodWk4X3RtcD09MCkgeworICAgICAgICAgICAgICAgIGRvbmU9dHNmX3RydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChkb25lKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgc2l6ZSs9c3RlcDsKKyAgICAgICAgaWYgKHNpemU+bWF4X3NpemUp
IHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJSZW1vdGUgZW5kIGF0dGVtcHRlZCB0byBzZW5kIGEgc3RyaW5n
IHRoYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZWVkZWQgb3VyIGxpbWl0IG9m
ICIgZnN6ICIuIixtYXhfc2l6ZSk7CisgICAgICAgICAgICBmcmVlKHN0cik7CisgICAgICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzdHI9cmVhbGxvYyhzdHIsc2l6ZSk7
CisgICAgfQorICAgIAorICAgIHJldHVybiBzdHI7Cit9CisKK3RzZl9ib29sX3QgdHNmX3dyaXRl
X3N0cmluZyh0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIp
IHsKKyAgICBjb25zdCBjaGFyICpjdXJfY2hhcj1zdHI7CisKKyAgICBkbyB7CisgICAgICAgIGlm
ICghd3JpdGVyKGFyZywodm9pZCopY3VyX2NoYXIsMSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9IHdoaWxlICgqY3VyX2NoYXIrKyk7CisgICAgCisg
ICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9mdWxsX3JlYWRfb2ZfcGFy
dGlhbCh0c2ZfcGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisJCQkJICAgIHZvaWQgKmFyZywKKwkJ
CQkgICAgdm9pZCAqX2RhdGEsCisJCQkJICAgIHVpbnQzMl90IGxlbikgeworICAgIHVpbnQ4X3Qg
KmRhdGE9X2RhdGE7CisgICAgd2hpbGUgKGxlbj4wKSB7CisJaW50MzJfdCByZXM9cmVhZGVyKGFy
ZyxkYXRhLGxlbik7CisJaWYgKHJlczwwKSB7CisJICAgIGlmICh0c2ZfZ2V0X2Vycm9yX2NvZGUo
KT09VFNGX0VfVU5FWFBFQ1RFRF9FT0YKKwkJJiYgZGF0YSE9X2RhdGEpIHsKKyAgICAgICAgICAg
ICAgICBjaGFyICpwcmV2aW91c19lcnJvciA9IHN0cmR1cCh0c2ZfZ2V0X2Vycm9yKCkpOworCQl0
c2Zfc2V0X2Vycm9yKFRTRl9FX0VSUk9ORU9VU19FT0YsCisJCQkgICAgICAiRW5kLW9mLWZpbGUg
YWZ0ZXIgcGFydCBvZiBhIGZ1bGwgcmVhZDsgb3JpZ2luYWwgIgorCQkJICAgICAgImVycm9yOiAl
cyIsIHByZXZpb3VzX2Vycm9yKTsKKyAgICAgICAgICAgICAgICBmcmVlKHByZXZpb3VzX2Vycm9y
KTsKKwkgICAgfQorCSAgICByZXR1cm4gdHNmX2ZhbHNlOworCX0KKwlkYXRhKz1yZXM7CisJbGVu
LT1yZXM7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pci5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaXIuYwkobm9uZXhpc3RlbnQpCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNDgxIEBACisvKiAuL3Rlc3RzL3N1aXRlcy90b3lpci90c2ZfaXIu
YyAtLSBnZW5lcmF0ZWQgYnkgdHNmX2RlZmluZSBmcm9tIC4vdGVzdHMvc3VpdGVzL3RveWlyL3Rz
Zl9pci50ICovCisKKyNpbmNsdWRlICJ0c2ZfaXIuaCIKKyNpbmNsdWRlICJ0c2ZfZGVmaW5lX2hl
bHBlcnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCitzdGF0aWMgdHNmX3R5cGVfdCAqT3BlcmFu
ZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90
eXBlX3QgKlR5cGVfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0
YXRpYyB0c2ZfdHlwZV90ICpDb2RlT2Zmc2V0X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqVmFyaWFibGVEZWNsX19idWlsZF90eXBl
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqSW5zdHJ1
Y3Rpb25fX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0
c2ZfdHlwZV90ICpEZWJ1Z0RhdGFfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9jZWR1cmVfX2J1aWxkX3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9jZWR1cmVEZWNsX19i
dWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVf
dCAqUHJvY2VkdXJlRGVmbl9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIHRzZl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19idWlsZF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqUHJvZ3JhbV9fYnVpbGRf
dHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKklu
c3RydWN0aW9uX19tb3ZfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3N0YXRpYyB0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYWRkX19idWlsZF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2Fs
bG9jX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNm
X3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX3JldF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkluc3RydWN0aW9uX19qdW1wX19idWlsZF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqSW5z
dHJ1Y3Rpb25fX2NhbGxfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3N0YXRpYyB0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fYnVpbGRfdHlwZSh2
b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKmludGVnZXJf
X2FycmF5X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMg
dHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9jZWR1cmVEZWZuX192
YXJpYWJsZXNfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRp
YyB0c2ZfdHlwZV90ICpWYXJpYWJsZURlY2xfX2FycmF5X19idWlsZF90eXBlKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9fY29k
ZV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90
eXBlX3QgKkluc3RydWN0aW9uX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2RlYnVnX19idWls
ZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAq
RGVidWdEYXRhX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIHRzZl90eXBlX3QgKlByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9ncmFtRWxlbWVu
dF9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKwordHNm
X3R5cGVfdCAqT3BlcmFuZF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVz
dWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FvZShUU0ZfVEtfSU5URUdFUik7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordHNmX3R5cGVfdCAqVHlwZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNm
X3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FvZShUU0ZfVEtfU1RSSU5HKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpDb2RlT2Zmc2V0X19idWlsZF90eXBl
KHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYW9lKFRT
Rl9US19JTlRFR0VSKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpWYXJp
YWJsZURlY2xfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRz
Zl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uo
c2l6ZW9mKFZhcmlhYmxlRGVjbF90KSwgKHZvaWQoKikodm9pZCopKVZhcmlhYmxlRGVjbF9fZGVz
dHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVw
X3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgInR5cGUiLCBUeXBlX19nZXRfdHlwZSwgdHNm
X29mZnNldG9mKFZhcmlhYmxlRGVjbF90LCB0eXBlKSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2Fw
cGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAibmFtZSIsIFRTRl9U
S19TVFJJTkcsIHRzZl9vZmZzZXRvZihWYXJpYWJsZURlY2xfdCwgbmFtZSkpOworICAgIHRzZl90
eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiVmFyaWFibGVEZWNsIik7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2J1aWxkX3R5cGUodm9pZCkgewor
ICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9uYXRp
dmVfbWFwX2FvZSgmcmVzdWx0LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX3Qs
IHZhbHVlKSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX3QsIHUpLCBzaXplb2YoSW5zdHJ1Y3Rp
b25fdCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX2FvZSgmcmVzdWx0
LCAibm9wIiwgVFNGX1RLX1ZPSUQpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9j
YWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0LCAibW92IiwgSW5zdHJ1Y3Rpb25fX21vdl9fZ2V0
X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVw
X2FvZSgmcmVzdWx0LCAiYWRkIiwgSW5zdHJ1Y3Rpb25fX2FkZF9fZ2V0X3R5cGUpOworICAgIHRz
Zl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0LCAi
YWxsb2MiLCBJbnN0cnVjdGlvbl9fYWxsb2NfX2dldF90eXBlKTsKKyAgICB0c2ZfY2hvaWNlX3R5
cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF9hb2UoJnJlc3VsdCwgInJldCIsIEluc3Ry
dWN0aW9uX19yZXRfX2dldF90eXBlKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21f
Y2FsbGJhY2tfYW5kX2R1cF9hb2UoJnJlc3VsdCwgImp1bXAiLCBJbnN0cnVjdGlvbl9fanVtcF9f
Z2V0X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRf
ZHVwX2FvZSgmcmVzdWx0LCAiY2FsbCIsIEluc3RydWN0aW9uX19jYWxsX19nZXRfdHlwZSk7Cisg
ICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfYW9lKCZyZXN1
bHQsICJicmFuY2haZXJvIiwgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2dldF90eXBlKTsKKyAg
ICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkluc3RydWN0aW9uIik7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX21vdl9fYnVpbGRfdHlw
ZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVj
dF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplb2YoSW5zdHJ1Y3Rpb25fX21vdl90KSk7CisgICAg
dHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVf
bWFwX2FvZSgmcmVzdWx0LCAiZGVzdCIsIE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2Yo
SW5zdHJ1Y3Rpb25fX21vdl90LCBkZXN0KSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9m
cm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAic3JjIiwg
T3BlcmFuZF9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRvZihJbnN0cnVjdGlvbl9fbW92X3QsIHNyYykp
OworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiSW5zdHJ1Y3Rpb25fX21vdiIp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19hZGRf
X2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2Ny
ZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hb2Uoc2l6ZW9mKEluc3RydWN0aW9uX19hZGRf
dCkpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dp
dGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRlc3QiLCBPcGVyYW5kX19nZXRfdHlwZSwgdHNm
X29mZnNldG9mKEluc3RydWN0aW9uX19hZGRfdCwgZGVzdCkpOworICAgIHRzZl9zdHJ1Y3RfdHlw
ZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3Vs
dCwgInNyYyIsIE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoSW5zdHJ1Y3Rpb25fX2Fk
ZF90LCBzcmMpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkluc3RydWN0
aW9uX19hZGQiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpJbnN0cnVj
dGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9
IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9h
b2Uoc2l6ZW9mKEluc3RydWN0aW9uX19hbGxvY190KSwgKHZvaWQoKikodm9pZCopKUluc3RydWN0
aW9uX19hbGxvY19fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9j
YWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgInR5cGUiLCBUeXBl
X19nZXRfdHlwZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX19hbGxvY190LCB0eXBlKSk7Cisg
ICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJJbnN0cnVjdGlvbl9fYWxsb2MiKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fcmV0X19i
dWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVh
dGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW9lKHNpemVvZihJbnN0cnVjdGlvbl9fcmV0X3Qp
KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRo
X25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJzcmMiLCBPcGVyYW5kX19nZXRfdHlwZSwgdHNmX29m
ZnNldG9mKEluc3RydWN0aW9uX19yZXRfdCwgc3JjKSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVf
YW9lKCZyZXN1bHQsICJJbnN0cnVjdGlvbl9fcmV0Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2p1bXBfX2J1aWxkX3R5cGUodm9pZCkgeworICAg
IHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVf
c2l6ZV9hb2Uoc2l6ZW9mKEluc3RydWN0aW9uX19qdW1wX3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5
cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1
bHQsICJ0YXJnZXQiLCBDb2RlT2Zmc2V0X19nZXRfdHlwZSwgdHNmX29mZnNldG9mKEluc3RydWN0
aW9uX19qdW1wX3QsIHRhcmdldCkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0
LCAiSW5zdHJ1Y3Rpb25fX2p1bXAiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlw
ZV90ICpJbnN0cnVjdGlvbl9fY2FsbF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVf
dCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9k
ZXN0cnVjdG9yX2FvZShzaXplb2YoSW5zdHJ1Y3Rpb25fX2NhbGxfdCksICh2b2lkKCopKHZvaWQq
KSlJbnN0cnVjdGlvbl9fY2FsbF9fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBl
bmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRl
c3QiLCBPcGVyYW5kX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX19jYWxsX3Qs
IGRlc3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1
cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJjYWxsZWUiLCBPcGVyYW5kX19nZXRfdHlw
ZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX19jYWxsX3QsIGNhbGxlZSkpOworICAgIHRzZl9z
dHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9h
b2UoJnJlc3VsdCwgImFyZ3MiLCBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fZ2V0X3R5cGUsIHRz
Zl9vZmZzZXRvZihJbnN0cnVjdGlvbl9fY2FsbF90LCBhcmdzKSk7CisgICAgdHNmX3R5cGVfc2V0
X25hbWVfYW9lKCZyZXN1bHQsICJJbnN0cnVjdGlvbl9fY2FsbCIpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RzZl90eXBlX3QgKmludGVnZXJfX2FycmF5X19idWlsZF90eXBlKHZvaWQpIHsK
KyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJyYXlfYW9lKHRzZl90
eXBlX2NyZWF0ZV9hb2UoVFNGX1RLX0lOVEVHRVIpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fYnVpbGRfdHlwZSh2b2lkKSB7
CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25h
dGl2ZV9zaXplX2FvZShzaXplb2YoSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCkpOworICAgIHRz
Zl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21h
cF9hb2UoJnJlc3VsdCwgInNyYyIsIE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoSW5z
dHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCwgc3JjKSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVu
ZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAidGFy
Z2V0IiwgQ29kZU9mZnNldF9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRvZihJbnN0cnVjdGlvbl9fYnJh
bmNoWmVyb190LCB0YXJnZXQpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwg
Ikluc3RydWN0aW9uX19icmFuY2haZXJvIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNm
X3R5cGVfdCAqRGVidWdEYXRhX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpy
ZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW5kX2Rlc3Ry
dWN0b3JfYW9lKHNpemVvZihEZWJ1Z0RhdGFfdCksICh2b2lkKCopKHZvaWQqKSlEZWJ1Z0RhdGFf
X2Rlc3RydWN0KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25h
dGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJzdGFydE9mZnNldCIsIFRTRl9US19JTlRFR0VSLCB0c2Zf
b2Zmc2V0b2YoRGVidWdEYXRhX3QsIHN0YXJ0T2Zmc2V0KSk7CisgICAgdHNmX3N0cnVjdF90eXBl
X2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAic3BhblNpemUi
LCBUU0ZfVEtfSU5URUdFUiwgdHNmX29mZnNldG9mKERlYnVnRGF0YV90LCBzcGFuU2l6ZSkpOwor
ICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF9hb2Uo
JnJlc3VsdCwgImRhdGEiLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zmc2V0b2YoRGVidWdEYXRhX3Qs
IGRhdGEpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRlYnVnRGF0YSIp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2NlZHVyZV9fYnVpbGRf
dHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0
cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2FvZShzaXplb2YoUHJvY2VkdXJl
X3QpLCAodm9pZCgqKSh2b2lkKikpUHJvY2VkdXJlX19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVj
dF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAibmFt
ZSIsIFRTRl9US19TVFJJTkcsIHRzZl9vZmZzZXRvZihQcm9jZWR1cmVfdCwgbmFtZSkpOworICAg
IHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiUHJvY2VkdXJlIik7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVjbF9fYnVpbGRfdHlwZSh2b2lk
KSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRo
X25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2FvZShzaXplb2YoUHJvY2VkdXJlRGVjbF90KSwg
KHZvaWQoKikodm9pZCopKVByb2NlZHVyZURlY2xfX2Rlc3RydWN0KTsKKyAgICB0c2Zfc3RydWN0
X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJuYW1l
IiwgVFNGX1RLX1NUUklORywgdHNmX29mZnNldG9mKFByb2NlZHVyZURlY2xfdCwgbmFtZSkpOwor
ICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiUHJvY2VkdXJlRGVjbCIpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2J1aWxkX3R5
cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1
Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKFByb2NlZHVyZURl
Zm5fdCksICh2b2lkKCopKHZvaWQqKSlQcm9jZWR1cmVEZWZuX19kZXN0cnVjdCk7CisgICAgdHNm
X3N0cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0
LCAibmFtZSIsIFRTRl9US19TVFJJTkcsIHRzZl9vZmZzZXRvZihQcm9jZWR1cmVEZWZuX3QsIG5h
bWUpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93
aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJ2YXJpYWJsZXMiLCBQcm9jZWR1cmVEZWZuX192
YXJpYWJsZXNfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoUHJvY2VkdXJlRGVmbl90LCB2YXJpYWJs
ZXMpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93
aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJjb2RlIiwgUHJvY2VkdXJlRGVmbl9fY29kZV9f
Z2V0X3R5cGUsIHRzZl9vZmZzZXRvZihQcm9jZWR1cmVEZWZuX3QsIGNvZGUpKTsKKyAgICB0c2Zf
c3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25hdGl2ZV9tYXBf
YW9lKCZyZXN1bHQsICJkZWJ1ZyIsIFByb2NlZHVyZURlZm5fX2RlYnVnX19nZXRfdHlwZSwgdHNm
X29mZnNldG9mKFByb2NlZHVyZURlZm5fdCwgZGVidWcpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFt
ZV9hb2UoJnJlc3VsdCwgIlByb2NlZHVyZURlZm4iKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0c2ZfdHlwZV90ICpWYXJpYWJsZURlY2xfX2FycmF5X19idWlsZF90eXBlKHZvaWQpIHsKKyAg
ICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJyYXlfYW9lKHRzZl90eXBl
X2R1cChWYXJpYWJsZURlY2xfX2dldF90eXBlKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgeworICAg
IHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9hcnJheV9hb2UodHNmX3R5cGVf
ZHVwKEluc3RydWN0aW9uX19nZXRfdHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dHNmX3R5cGVfdCAqRGVidWdEYXRhX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNm
X3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FycmF5X2FvZSh0c2ZfdHlwZV9kdXAo
RGVidWdEYXRhX19nZXRfdHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5
cGVfdCAqUHJvZ3JhbUVsZW1lbnRfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3Qg
KnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVz
dWx0LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKFByb2dyYW1FbGVtZW50X3QsIHZhbHVlKSwgdHNm
X29mZnNldG9mKFByb2dyYW1FbGVtZW50X3QsIHUpLCBzaXplb2YoUHJvZ3JhbUVsZW1lbnRfdCkp
OworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgm
cmVzdWx0LCAicHJvY2VkdXJlRGVjbCIsIFByb2NlZHVyZURlY2xfX2dldF90eXBlKTsKKyAgICB0
c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF9hb2UoJnJlc3VsdCwg
InByb2NlZHVyZURlZm4iLCBQcm9jZWR1cmVEZWZuX19nZXRfdHlwZSk7CisgICAgdHNmX3R5cGVf
c2V0X25hbWVfYW9lKCZyZXN1bHQsICJQcm9ncmFtRWxlbWVudCIpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2dyYW1fX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRz
Zl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6
ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKFByb2dyYW1fdCksICh2b2lkKCopKHZvaWQqKSlQ
cm9ncmFtX19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxi
YWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAiZ2xvYmFscyIsIFByb2dy
YW1fX2dsb2JhbHNfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoUHJvZ3JhbV90LCBnbG9iYWxzKSk7
CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJQcm9ncmFtIik7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19idWls
ZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVf
YXJyYXlfYW9lKHRzZl90eXBlX2R1cChQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUoKSkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19jYWxsX19hcmdz
X19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9k
dXAoaW50ZWdlcl9fYXJyYXlfX2dldF90eXBlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fYnVpbGRfdHlwZSh2b2lkKSB7
CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfZHVwKFZhcmlhYmxlRGVjbF9fYXJy
YXlfX2dldF90eXBlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlBy
b2NlZHVyZURlZm5fX2NvZGVfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJl
c3VsdCA9IHRzZl90eXBlX2R1cChJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90eXBlKCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2RlYnVnX19i
dWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9kdXAo
RGVidWdEYXRhX19hcnJheV9fZ2V0X3R5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dHNmX3R5cGVfdCAqUHJvZ3JhbV9fZ2xvYmFsc19fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNm
X3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfZHVwKFByb2dyYW1FbGVtZW50X19hcnJheV9fZ2V0
X3R5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2
b2xhdGlsZSBPcGVyYW5kX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xh
dGlsZSBPcGVyYW5kX19nZW5ydHIgPSBOVUxMOworc3RhdGljIHRzZl9wYXJzZXJfdCAqIHZvbGF0
aWxlIE9wZXJhbmRfX3BhcnNlciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lO
VEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgT3BlcmFuZF9fdHlwZV9fb2MgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKK3N0YXRpYyB2b2lkIE9wZXJhbmRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAg
IE9wZXJhbmRfX3R5cGUgPSBPcGVyYW5kX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKk9wZXJhbmRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBPcGVyYW5k
X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKk9wZXJhbmRfX2dldF90eXBl
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90
eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmT3BlcmFuZF9fdHlwZSwgT3BlcmFuZF9f
dHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmT3BlcmFuZF9fdHlwZV9f
b2MsIE9wZXJhbmRfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBPcGVyYW5kX190eXBlOwor
I2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVh
ZF9vbmNlX3QgT3BlcmFuZF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGlj
IHZvaWQgT3BlcmFuZF9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBPcGVyYW5kX19nZW5y
dHIgPSB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShPcGVyYW5kX19nZXRfdHlwZSgpKTsKK30KKyNlbHNl
CitzdGF0aWMgdm9pZCAqT3BlcmFuZF9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1
cm4gdHNmX2dlbmVyYXRvcl9jcmVhdGUoT3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYK
K3RzZl9nZW5ydHJfdCAqT3BlcmFuZF9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3Bv
aW50ZXIoKHZvaWQqKikmT3BlcmFuZF9fZ2VucnRyLCBPcGVyYW5kX19nZW5ydHJfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJk9wZXJhbmRfX2dlbnJ0cl9fb2MsIE9wZXJhbmRf
X2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIE9wZXJhbmRfX2dlbnJ0cjsKKyNlbmRpZgor
fQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90
IE9wZXJhbmRfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIE9w
ZXJhbmRfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgT3BlcmFuZF9fcGFyc2VyID0gdHNm
X3BhcnNlcl9jcmVhdGUoT3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZv
aWQgKk9wZXJhbmRfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9wYXJz
ZXJfY3JlYXRlKE9wZXJhbmRfX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfcGFyc2VyX3Qg
Kk9wZXJhbmRfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
UgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJk9w
ZXJhbmRfX3BhcnNlciwgT3BlcmFuZF9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRo
cmVhZF9vbmNlKCZPcGVyYW5kX19wYXJzZXJfX29jLCBPcGVyYW5kX19wYXJzZXJfX2J1aWxkZXIp
OworICAgIHJldHVybiBPcGVyYW5kX19wYXJzZXI7CisjZW5kaWYKK30KKwordHNmX2Jvb2xfdCBP
cGVyYW5kX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgT3BlcmFuZF90ICpk
YXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgT3BlcmFuZF9fZ2V0
X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworT3BlcmFuZF90ICpPcGVyYW5kX19yZWFkKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFk
KGluLCBPcGVyYW5kX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IE9wZXJhbmRfX3Jl
YWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIE9wZXJhbmRfdCAqcmVzdWx0KSB7
CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgT3BlcmFuZF9fZ2V0X3Bh
cnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIFR5cGVf
X3R5cGUgPSBOVUxMOworc3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIFR5cGVfX2dlbnJ0
ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgVHlwZV9fcGFyc2VyID0g
TlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29u
Y2VfdCBUeXBlX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgVHlw
ZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgVHlwZV9fdHlwZSA9IFR5cGVfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqVHlwZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIFR5cGVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAq
VHlwZV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAg
IHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZUeXBlX190eXBl
LCBUeXBlX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZUeXBlX190
eXBlX19vYywgVHlwZV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFR5cGVfX3R5cGU7Cisj
ZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBUeXBlX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9p
ZCBUeXBlX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIFR5cGVfX2dlbnJ0ciA9IHRzZl9n
ZW5lcmF0b3JfY3JlYXRlKFR5cGVfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lk
ICpUeXBlX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9y
X2NyZWF0ZShUeXBlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpUeXBl
X19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAg
ICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZUeXBlX19n
ZW5ydHIsIFR5cGVfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgm
VHlwZV9fZ2VucnRyX19vYywgVHlwZV9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gVHlw
ZV9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitz
dGF0aWMgcHRocmVhZF9vbmNlX3QgVHlwZV9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05DRV9JTklU
Oworc3RhdGljIHZvaWQgVHlwZV9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBUeXBlX19w
YXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShUeXBlX19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitz
dGF0aWMgdm9pZCAqVHlwZV9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNm
X3BhcnNlcl9jcmVhdGUoVHlwZV9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJf
dCAqVHlwZV9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CisgICAgcmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmVHlw
ZV9fcGFyc2VyLCBUeXBlX19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29u
Y2UoJlR5cGVfX3BhcnNlcl9fb2MsIFR5cGVfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJu
IFR5cGVfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBUeXBlX19kZXN0cnVjdChUeXBlX3QgKmRh
dGEpIHsKKyAgICBmcmVlKCpkYXRhKTsKK30KKwordHNmX2Jvb2xfdCBUeXBlX193cml0ZSh0c2Zf
c3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgVHlwZV90ICpkYXRhKSB7CisgICAgcmV0dXJuIHRz
Zl90eXBlZF9kYXRhX3dyaXRlKG91dCwgVHlwZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30K
KworVHlwZV90ICpUeXBlX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAg
IHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBUeXBlX19nZXRfcGFyc2VyKCkpOworfQor
Cit0c2ZfYm9vbF90IFR5cGVfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4s
IFR5cGVfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhp
biwgVHlwZV9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAq
IHZvbGF0aWxlIENvZGVPZmZzZXRfX3R5cGUgPSBOVUxMOworc3RhdGljIHRzZl9nZW5ydHJfdCAq
IHZvbGF0aWxlIENvZGVPZmZzZXRfX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90
ICogdm9sYXRpbGUgQ29kZU9mZnNldF9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBDb2RlT2Zmc2V0X190eXBlX19v
YyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgQ29kZU9mZnNldF9fdHlwZV9fYnVp
bGRlcih2b2lkKSB7CisgICAgQ29kZU9mZnNldF9fdHlwZSA9IENvZGVPZmZzZXRfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIENvZGVPZmZzZXRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgor
dHNmX3R5cGVfdCAqQ29kZU9mZnNldF9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZF
X0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigo
dm9pZCoqKSZDb2RlT2Zmc2V0X190eXBlLCBDb2RlT2Zmc2V0X190eXBlX19idWlsZGVyKTsKKyNl
bHNlCisgICAgcHRocmVhZF9vbmNlKCZDb2RlT2Zmc2V0X190eXBlX19vYywgQ29kZU9mZnNldF9f
dHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIENvZGVPZmZzZXRfX3R5cGU7CisjZW5kaWYKK30K
KworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBD
b2RlT2Zmc2V0X19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBD
b2RlT2Zmc2V0X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIENvZGVPZmZzZXRfX2dlbnJ0
ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKENvZGVPZmZzZXRfX2dldF90eXBlKCkpOworfQorI2Vs
c2UKK3N0YXRpYyB2b2lkICpDb2RlT2Zmc2V0X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAg
IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShDb2RlT2Zmc2V0X19nZXRfdHlwZSgpKTsKK30K
KyNlbmRpZgordHNmX2dlbnJ0cl90ICpDb2RlT2Zmc2V0X19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsK
KyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5ydHJfdCop
dHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZDb2RlT2Zmc2V0X19nZW5ydHIsIENvZGVPZmZzZXRf
X2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmQ29kZU9mZnNldF9f
Z2VucnRyX19vYywgQ29kZU9mZnNldF9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gQ29k
ZU9mZnNldF9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lO
VEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgQ29kZU9mZnNldF9fcGFyc2VyX19vYyA9IFBUSFJF
QURfT05DRV9JTklUOworc3RhdGljIHZvaWQgQ29kZU9mZnNldF9fcGFyc2VyX19idWlsZGVyKHZv
aWQpIHsKKyAgICBDb2RlT2Zmc2V0X19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShDb2RlT2Zm
c2V0X19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqQ29kZU9mZnNldF9fcGFy
c2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoQ29kZU9m
ZnNldF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqQ29kZU9mZnNldF9f
Z2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0
dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmQ29kZU9mZnNldF9f
cGFyc2VyLCBDb2RlT2Zmc2V0X19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFk
X29uY2UoJkNvZGVPZmZzZXRfX3BhcnNlcl9fb2MsIENvZGVPZmZzZXRfX3BhcnNlcl9fYnVpbGRl
cik7CisgICAgcmV0dXJuIENvZGVPZmZzZXRfX3BhcnNlcjsKKyNlbmRpZgorfQorCit0c2ZfYm9v
bF90IENvZGVPZmZzZXRfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBDb2Rl
T2Zmc2V0X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfd3JpdGUob3V0LCBD
b2RlT2Zmc2V0X19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitDb2RlT2Zmc2V0X3QgKkNv
ZGVPZmZzZXRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluKSB7CisgICAgcmV0dXJu
IHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIENvZGVPZmZzZXRfX2dldF9wYXJzZXIoKSk7Cit9CisK
K3RzZl9ib29sX3QgQ29kZU9mZnNldF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90
ICppbiwgQ29kZU9mZnNldF90ICpyZXN1bHQpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFf
cmVhZF9pbnRvKGluLCBDb2RlT2Zmc2V0X19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0
YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgVmFyaWFibGVEZWNsX190eXBlID0gTlVMTDsKK3N0
YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGlsZSBWYXJpYWJsZURlY2xfX2dlbnJ0ciA9IE5VTEw7
CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgVmFyaWFibGVEZWNsX19wYXJzZXIgPSBO
VUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25j
ZV90IFZhcmlhYmxlRGVjbF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2
b2lkIFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgVmFyaWFibGVEZWNs
X190eXBlID0gVmFyaWFibGVEZWNsX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZv
aWQgKlZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFZhcmlh
YmxlRGVjbF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpWYXJpYWJsZURl
Y2xfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICBy
ZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmVmFyaWFibGVEZWNs
X190eXBlLCBWYXJpYWJsZURlY2xfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFk
X29uY2UoJlZhcmlhYmxlRGVjbF9fdHlwZV9fb2MsIFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRl
cik7CisgICAgcmV0dXJuIFZhcmlhYmxlRGVjbF9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFZhcmlhYmxlRGVj
bF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgVmFyaWFibGVE
ZWNsX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIFZhcmlhYmxlRGVjbF9fZ2VucnRyID0g
dHNmX2dlbmVyYXRvcl9jcmVhdGUoVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNlbHNl
CitzdGF0aWMgdm9pZCAqVmFyaWFibGVEZWNsX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAg
IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShWYXJpYWJsZURlY2xfX2dldF90eXBlKCkpOwor
fQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKlZhcmlhYmxlRGVjbF9fZ2V0X2dlbmVyYXRvcih2b2lk
KSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRy
X3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmVmFyaWFibGVEZWNsX19nZW5ydHIsIFZhcmlh
YmxlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZWYXJp
YWJsZURlY2xfX2dlbnJ0cl9fb2MsIFZhcmlhYmxlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsKKyAg
ICByZXR1cm4gVmFyaWFibGVEZWNsX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBWYXJpYWJsZURlY2xfX3Bh
cnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFZhcmlhYmxlRGVjbF9f
cGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBWYXJpYWJsZURlY2xfX3BhcnNlciA9IHRzZl9w
YXJzZXJfY3JlYXRlKFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKlZhcmlhYmxlRGVjbF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4g
dHNmX3BhcnNlcl9jcmVhdGUoVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgor
dHNmX3BhcnNlcl90ICpWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJlZhcmlhYmxlRGVjbF9fcGFyc2VyLCBWYXJpYWJsZURlY2xfX3BhcnNl
cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmVmFyaWFibGVEZWNsX19wYXJz
ZXJfX29jLCBWYXJpYWJsZURlY2xfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIFZhcmlh
YmxlRGVjbF9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lkIFZhcmlhYmxlRGVjbF9fZGVzdHJ1Y3Qo
VmFyaWFibGVEZWNsX3QgKmRhdGEpIHsKKyAgICBUeXBlX19kZXN0cnVjdCgmZGF0YS0+dHlwZSk7
CisgICAgZnJlZSgqJmRhdGEtPm5hbWUpOworfQorCit0c2ZfYm9vbF90IFZhcmlhYmxlRGVjbF9f
d3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFZhcmlhYmxlRGVjbF90ICpkYXRh
KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgVmFyaWFibGVEZWNsX19n
ZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitWYXJpYWJsZURlY2xfdCAqVmFyaWFibGVEZWNs
X19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlw
ZWRfZGF0YV9yZWFkKGluLCBWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9i
b29sX3QgVmFyaWFibGVEZWNsX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlu
LCBWYXJpYWJsZURlY2xfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3Jl
YWRfaW50byhpbiwgVmFyaWFibGVEZWNsX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0
YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgSW5zdHJ1Y3Rpb25fX3R5cGUgPSBOVUxMOworc3Rh
dGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19nZW5ydHIgPSBOVUxMOwor
c3RhdGljIHRzZl9wYXJzZXJfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19wYXJzZXIgPSBOVUxM
OworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90
IEluc3RydWN0aW9uX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQg
SW5zdHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX190eXBl
ID0gSW5zdHJ1Y3Rpb25fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqSW5z
dHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBJbnN0cnVjdGlvbl9f
YnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fZ2V0X3R5
cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNm
X3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9fdHlwZSwgSW5z
dHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkluc3Ry
dWN0aW9uX190eXBlX19vYywgSW5zdHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVy
biBJbnN0cnVjdGlvbl9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRf
UE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19nZW5ydHJfX29jID0g
UFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBJbnN0cnVjdGlvbl9fZ2VucnRyX19idWls
ZGVyKHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9jcmVh
dGUoSW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpJbnN0
cnVjdGlvbl9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2dlbmVyYXRv
cl9jcmVhdGUoSW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRy
X3QgKkluc3RydWN0aW9uX19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9J
TklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRlcigo
dm9pZCoqKSZJbnN0cnVjdGlvbl9fZ2VucnRyLCBJbnN0cnVjdGlvbl9fZ2VucnRyX19idWlsZGVy
KTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZJbnN0cnVjdGlvbl9fZ2VucnRyX19vYywgSW5z
dHJ1Y3Rpb25fX2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIEluc3RydWN0aW9uX19nZW5y
dHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBw
dGhyZWFkX29uY2VfdCBJbnN0cnVjdGlvbl9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05DRV9JTklU
Oworc3RhdGljIHZvaWQgSW5zdHJ1Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAg
SW5zdHJ1Y3Rpb25fX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKEluc3RydWN0aW9uX19nZXRf
dHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqSW5zdHJ1Y3Rpb25fX3BhcnNlcl9fYnVp
bGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9wYXJzZXJfY3JlYXRlKEluc3RydWN0aW9uX19n
ZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpJbnN0cnVjdGlvbl9fZ2V0X3Bh
cnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0
c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25fX3BhcnNl
ciwgSW5zdHJ1Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25j
ZSgmSW5zdHJ1Y3Rpb25fX3BhcnNlcl9fb2MsIEluc3RydWN0aW9uX19wYXJzZXJfX2J1aWxkZXIp
OworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lkIEluc3Ry
dWN0aW9uX19kZXN0cnVjdChJbnN0cnVjdGlvbl90ICpkYXRhKSB7CisgICAgc3dpdGNoIChkYXRh
LT52YWx1ZSkgeworICAgIGNhc2UgMzoKKyAgICAgICAgSW5zdHJ1Y3Rpb25fX2FsbG9jX19kZXN0
cnVjdCgmZGF0YS0+dS5hbGxvYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNjoKKyAgICAg
ICAgSW5zdHJ1Y3Rpb25fX2NhbGxfX2Rlc3RydWN0KCZkYXRhLT51LmNhbGwpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RzZl9ib29s
X3QgSW5zdHJ1Y3Rpb25fX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBJbnN0
cnVjdGlvbl90ICpkYXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwg
SW5zdHJ1Y3Rpb25fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK0luc3RydWN0aW9uX3Qg
Kkluc3RydWN0aW9uX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJl
dHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigpKTsK
K30KKwordHNmX2Jvb2xfdCBJbnN0cnVjdGlvbl9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9p
bnB1dF90ICppbiwgSW5zdHJ1Y3Rpb25fdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBl
ZF9kYXRhX3JlYWRfaW50byhpbiwgSW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSwgcmVzdWx0KTsK
K30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEZWJ1Z0RhdGFfX3R5cGUgPSBOVUxM
Oworc3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIERlYnVnRGF0YV9fZ2VucnRyID0gTlVM
TDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSBEZWJ1Z0RhdGFfX3BhcnNlciA9IE5V
TEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNl
X3QgRGVidWdEYXRhX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQg
RGVidWdEYXRhX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEZWJ1Z0RhdGFfX3R5cGUgPSBE
ZWJ1Z0RhdGFfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRGVidWdEYXRh
X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRGVidWdEYXRhX19idWlsZF90eXBl
KCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRlYnVnRGF0YV9fZ2V0X3R5cGUodm9pZCkgewor
I2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNm
X2luaXRfcG9pbnRlcigodm9pZCoqKSZEZWJ1Z0RhdGFfX3R5cGUsIERlYnVnRGF0YV9fdHlwZV9f
YnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRGVidWdEYXRhX190eXBlX19vYywg
RGVidWdEYXRhX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRGVidWdEYXRhX190eXBlOwor
I2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVh
ZF9vbmNlX3QgRGVidWdEYXRhX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0
aWMgdm9pZCBEZWJ1Z0RhdGFfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRGVidWdEYXRh
X19nZW5ydHIgPSB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShEZWJ1Z0RhdGFfX2dldF90eXBlKCkpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEZWJ1Z0RhdGFfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERlYnVnRGF0YV9fZ2V0X3R5cGUoKSk7
Cit9CisjZW5kaWYKK3RzZl9nZW5ydHJfdCAqRGVidWdEYXRhX19nZXRfZ2VuZXJhdG9yKHZvaWQp
IHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5ydHJf
dCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEZWJ1Z0RhdGFfX2dlbnJ0ciwgRGVidWdEYXRh
X19nZW5ydHJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRlYnVnRGF0YV9f
Z2VucnRyX19vYywgRGVidWdEYXRhX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBEZWJ1
Z0RhdGFfX2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
Ugorc3RhdGljIHB0aHJlYWRfb25jZV90IERlYnVnRGF0YV9fcGFyc2VyX19vYyA9IFBUSFJFQURf
T05DRV9JTklUOworc3RhdGljIHZvaWQgRGVidWdEYXRhX19wYXJzZXJfX2J1aWxkZXIodm9pZCkg
eworICAgIERlYnVnRGF0YV9fcGFyc2VyID0gdHNmX3BhcnNlcl9jcmVhdGUoRGVidWdEYXRhX19n
ZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRGVidWdEYXRhX19wYXJzZXJfX2J1
aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShEZWJ1Z0RhdGFfX2dl
dF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKkRlYnVnRGF0YV9fZ2V0X3BhcnNl
cih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2Zf
cGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRGVidWdEYXRhX19wYXJzZXIsIERl
YnVnRGF0YV9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEZWJ1
Z0RhdGFfX3BhcnNlcl9fb2MsIERlYnVnRGF0YV9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1
cm4gRGVidWdEYXRhX19wYXJzZXI7CisjZW5kaWYKK30KK3ZvaWQgRGVidWdEYXRhX19kZXN0cnVj
dChEZWJ1Z0RhdGFfdCAqZGF0YSkgeworICAgIGZyZWUoKiZkYXRhLT5kYXRhKTsKK30KKwordHNm
X2Jvb2xfdCBEZWJ1Z0RhdGFfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBE
ZWJ1Z0RhdGFfdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV93cml0ZShvdXQs
IERlYnVnRGF0YV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworRGVidWdEYXRhX3QgKkRl
YnVnRGF0YV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4g
dHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRGVidWdEYXRhX19nZXRfcGFyc2VyKCkpOworfQorCit0
c2ZfYm9vbF90IERlYnVnRGF0YV9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICpp
biwgRGVidWdEYXRhX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFk
X2ludG8oaW4sIERlYnVnRGF0YV9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMg
dHNmX3R5cGVfdCAqIHZvbGF0aWxlIFByb2NlZHVyZV9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNm
X2dlbnJ0cl90ICogdm9sYXRpbGUgUHJvY2VkdXJlX19nZW5ydHIgPSBOVUxMOworc3RhdGljIHRz
Zl9wYXJzZXJfdCAqIHZvbGF0aWxlIFByb2NlZHVyZV9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9jZWR1cmVf
X3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9jZWR1cmVfX3R5
cGVfX2J1aWxkZXIodm9pZCkgeworICAgIFByb2NlZHVyZV9fdHlwZSA9IFByb2NlZHVyZV9fYnVp
bGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVfX3R5cGVfX2J1aWxk
ZXIodm9pZCkgeworICAgIHJldHVybiBQcm9jZWR1cmVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRp
ZgordHNmX3R5cGVfdCAqUHJvY2VkdXJlX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVy
KCh2b2lkKiopJlByb2NlZHVyZV9fdHlwZSwgUHJvY2VkdXJlX190eXBlX19idWlsZGVyKTsKKyNl
bHNlCisgICAgcHRocmVhZF9vbmNlKCZQcm9jZWR1cmVfX3R5cGVfX29jLCBQcm9jZWR1cmVfX3R5
cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBQcm9jZWR1cmVfX3R5cGU7CisjZW5kaWYKK30KKwor
I2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9j
ZWR1cmVfX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2Nl
ZHVyZV9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1cmVfX2dlbnJ0ciA9IHRz
Zl9nZW5lcmF0b3JfY3JlYXRlKFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKlByb2NlZHVyZV9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4g
dHNmX2dlbmVyYXRvcl9jcmVhdGUoUHJvY2VkdXJlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgor
dHNmX2dlbnJ0cl90ICpQcm9jZWR1cmVfX2dldF9nZW5lcmF0b3Iodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0cl90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJlByb2NlZHVyZV9fZ2VucnRyLCBQcm9jZWR1cmVfX2dlbnJ0cl9fYnVp
bGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvY2VkdXJlX19nZW5ydHJfX29jLCBQ
cm9jZWR1cmVfX2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZV9fZ2VucnRy
OworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgUHJvY2VkdXJlX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7Citz
dGF0aWMgdm9pZCBQcm9jZWR1cmVfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJvY2Vk
dXJlX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9jZWR1cmVfX2dldF90eXBlKCkpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIHRzZl9wYXJzZXJfY3JlYXRlKFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7Cit9
CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJlX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNp
ZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNm
X2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1cmVfX3BhcnNlciwgUHJvY2VkdXJlX19wYXJz
ZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJlByb2NlZHVyZV9fcGFyc2Vy
X19vYywgUHJvY2VkdXJlX19wYXJzZXJfX2J1aWxkZXIpOworICAgIHJldHVybiBQcm9jZWR1cmVf
X3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBQcm9jZWR1cmVfX2Rlc3RydWN0KFByb2NlZHVyZV90
ICpkYXRhKSB7CisgICAgZnJlZSgqJmRhdGEtPm5hbWUpOworfQorCit0c2ZfYm9vbF90IFByb2Nl
ZHVyZV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFByb2NlZHVyZV90ICpk
YXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgUHJvY2VkdXJlX19n
ZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitQcm9jZWR1cmVfdCAqUHJvY2VkdXJlX19yZWFk
KHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV9yZWFkKGluLCBQcm9jZWR1cmVfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgUHJv
Y2VkdXJlX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluLCBQcm9jZWR1cmVf
dCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgUHJv
Y2VkdXJlX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICog
dm9sYXRpbGUgUHJvY2VkdXJlRGVjbF9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNmX2dlbnJ0cl90
ICogdm9sYXRpbGUgUHJvY2VkdXJlRGVjbF9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFy
c2VyX3QgKiB2b2xhdGlsZSBQcm9jZWR1cmVEZWNsX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2NlZHVyZURl
Y2xfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9jZWR1cmVE
ZWNsX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1cmVEZWNsX190eXBlID0gUHJv
Y2VkdXJlRGVjbF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1
cmVEZWNsX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVjbF9f
YnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpQcm9jZWR1cmVEZWNsX19nZXRf
dHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0
c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2NlZHVyZURlY2xfX3R5cGUs
IFByb2NlZHVyZURlY2xfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2Uo
JlByb2NlZHVyZURlY2xfX3R5cGVfX29jLCBQcm9jZWR1cmVEZWNsX190eXBlX19idWlsZGVyKTsK
KyAgICByZXR1cm4gUHJvY2VkdXJlRGVjbF9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2NlZHVyZURlY2xf
X2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2NlZHVyZURl
Y2xfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJvY2VkdXJlRGVjbF9fZ2VucnRyID0g
dHNmX2dlbmVyYXRvcl9jcmVhdGUoUHJvY2VkdXJlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxz
ZQorc3RhdGljIHZvaWQgKlByb2NlZHVyZURlY2xfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKFByb2NlZHVyZURlY2xfX2dldF90eXBlKCkp
OworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKlByb2NlZHVyZURlY2xfX2dldF9nZW5lcmF0b3Io
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dl
bnJ0cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2NlZHVyZURlY2xfX2dlbnJ0ciwg
UHJvY2VkdXJlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNl
KCZQcm9jZWR1cmVEZWNsX19nZW5ydHJfX29jLCBQcm9jZWR1cmVEZWNsX19nZW5ydHJfX2J1aWxk
ZXIpOworICAgIHJldHVybiBQcm9jZWR1cmVEZWNsX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lm
bmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9jZWR1
cmVEZWNsX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9j
ZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIFByb2NlZHVyZURlY2xfX3Bh
cnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKFByb2NlZHVyZURlY2xfX2dldF90eXBlKCkpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9jZWR1cmVEZWNsX19nZXRfdHlwZSgp
KTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2VyKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJz
ZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1cmVEZWNsX19wYXJzZXIsIFBy
b2NlZHVyZURlY2xfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgm
UHJvY2VkdXJlRGVjbF9fcGFyc2VyX19vYywgUHJvY2VkdXJlRGVjbF9fcGFyc2VyX19idWlsZGVy
KTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVjbF9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lkIFBy
b2NlZHVyZURlY2xfX2Rlc3RydWN0KFByb2NlZHVyZURlY2xfdCAqZGF0YSkgeworICAgIGZyZWUo
KiZkYXRhLT5uYW1lKTsKK30KKwordHNmX2Jvb2xfdCBQcm9jZWR1cmVEZWNsX193cml0ZSh0c2Zf
c3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgUHJvY2VkdXJlRGVjbF90ICpkYXRhKSB7CisgICAg
cmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgUHJvY2VkdXJlRGVjbF9fZ2V0X2dlbmVy
YXRvcigpLCBkYXRhKTsKK30KKworUHJvY2VkdXJlRGVjbF90ICpQcm9jZWR1cmVEZWNsX19yZWFk
KHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV9yZWFkKGluLCBQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90
IFByb2NlZHVyZURlY2xfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIFBy
b2NlZHVyZURlY2xfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRf
aW50byhpbiwgUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0
aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIFByb2NlZHVyZURlZm5fX3R5cGUgPSBOVUxMOworc3Rh
dGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIFByb2NlZHVyZURlZm5fX2dlbnJ0ciA9IE5VTEw7
CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgUHJvY2VkdXJlRGVmbl9fcGFyc2VyID0g
TlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29u
Y2VfdCBQcm9jZWR1cmVEZWZuX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGlj
IHZvaWQgUHJvY2VkdXJlRGVmbl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJvY2VkdXJl
RGVmbl9fdHlwZSA9IFByb2NlZHVyZURlZm5fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0
aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJu
IFByb2NlZHVyZURlZm5fX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqUHJv
Y2VkdXJlRGVmbl9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
UgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9j
ZWR1cmVEZWZuX190eXBlLCBQcm9jZWR1cmVEZWZuX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisg
ICAgcHRocmVhZF9vbmNlKCZQcm9jZWR1cmVEZWZuX190eXBlX19vYywgUHJvY2VkdXJlRGVmbl9f
dHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX3R5cGU7CisjZW5kaWYK
K30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2Vf
dCBQcm9jZWR1cmVEZWZuX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMg
dm9pZCBQcm9jZWR1cmVEZWZuX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIFByb2NlZHVy
ZURlZm5fX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKFByb2NlZHVyZURlZm5fX2dldF90
eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVEZWZuX19nZW5ydHJfX2J1
aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShQcm9jZWR1cmVE
ZWZuX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpQcm9jZWR1cmVEZWZu
X19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAg
ICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1
cmVEZWZuX19nZW5ydHIsIFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQor
ICAgIHB0aHJlYWRfb25jZSgmUHJvY2VkdXJlRGVmbl9fZ2VucnRyX19vYywgUHJvY2VkdXJlRGVm
bl9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fZ2VucnRyOwor
I2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVh
ZF9vbmNlX3QgUHJvY2VkdXJlRGVmbl9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOwor
c3RhdGljIHZvaWQgUHJvY2VkdXJlRGVmbl9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBQ
cm9jZWR1cmVEZWZuX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9jZWR1cmVEZWZuX19n
ZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fcGFyc2Vy
X19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoUHJvY2VkdXJl
RGVmbl9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJlRGVm
bl9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAg
cmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmUHJvY2VkdXJl
RGVmbl9fcGFyc2VyLCBQcm9jZWR1cmVEZWZuX19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAg
ICBwdGhyZWFkX29uY2UoJlByb2NlZHVyZURlZm5fX3BhcnNlcl9fb2MsIFByb2NlZHVyZURlZm5f
X3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX3BhcnNlcjsKKyNl
bmRpZgorfQordm9pZCBQcm9jZWR1cmVEZWZuX19kZXN0cnVjdChQcm9jZWR1cmVEZWZuX3QgKmRh
dGEpIHsKKyAgICBmcmVlKComZGF0YS0+bmFtZSk7CisgICAgUHJvY2VkdXJlRGVmbl9fdmFyaWFi
bGVzX19kZXN0cnVjdCgmZGF0YS0+dmFyaWFibGVzKTsKKyAgICBQcm9jZWR1cmVEZWZuX19jb2Rl
X19kZXN0cnVjdCgmZGF0YS0+Y29kZSk7CisgICAgUHJvY2VkdXJlRGVmbl9fZGVidWdfX2Rlc3Ry
dWN0KCZkYXRhLT5kZWJ1Zyk7Cit9CisKK3RzZl9ib29sX3QgUHJvY2VkdXJlRGVmbl9fd3JpdGUo
dHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFByb2NlZHVyZURlZm5fdCAqZGF0YSkgewor
ICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV93cml0ZShvdXQsIFByb2NlZHVyZURlZm5fX2dldF9n
ZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK1Byb2NlZHVyZURlZm5fdCAqUHJvY2VkdXJlRGVmbl9f
cmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVk
X2RhdGFfcmVhZChpbiwgUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcigpKTsKK30KKwordHNmX2Jv
b2xfdCBQcm9jZWR1cmVEZWZuX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlu
LCBQcm9jZWR1cmVEZWZuX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9y
ZWFkX2ludG8oaW4sIFByb2NlZHVyZURlZm5fX2dldF9wYXJzZXIoKSwgcmVzdWx0KTsKK30KKwor
c3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBQcm9ncmFtRWxlbWVudF9fdHlwZSA9IE5VTEw7
CitzdGF0aWMgdHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0ciA9
IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgUHJvZ3JhbUVsZW1lbnRfX3Bh
cnNlciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgUHJvZ3JhbUVsZW1lbnRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7
CitzdGF0aWMgdm9pZCBQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAg
UHJvZ3JhbUVsZW1lbnRfX3R5cGUgPSBQcm9ncmFtRWxlbWVudF9fYnVpbGRfdHlwZSgpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIFByb2dyYW1FbGVtZW50X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3Rz
Zl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVy
KCh2b2lkKiopJlByb2dyYW1FbGVtZW50X190eXBlLCBQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVp
bGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvZ3JhbUVsZW1lbnRfX3R5cGVfX29j
LCBQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2dyYW1FbGVt
ZW50X190eXBlOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitz
dGF0aWMgcHRocmVhZF9vbmNlX3QgUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0cl9fb2MgPSBQVEhSRUFE
X09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxkZXIo
dm9pZCkgeworICAgIFByb2dyYW1FbGVtZW50X19nZW5ydHIgPSB0c2ZfZ2VuZXJhdG9yX2NyZWF0
ZShQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKlBy
b2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2Vu
ZXJhdG9yX2NyZWF0ZShQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3Rz
Zl9nZW5ydHJfdCAqUHJvZ3JhbUVsZW1lbnRfX2dldF9nZW5lcmF0b3Iodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0cl90Kil0c2ZfaW5p
dF9wb2ludGVyKCh2b2lkKiopJlByb2dyYW1FbGVtZW50X19nZW5ydHIsIFByb2dyYW1FbGVtZW50
X19nZW5ydHJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJlByb2dyYW1FbGVt
ZW50X19nZW5ydHJfX29jLCBQcm9ncmFtRWxlbWVudF9fZ2VucnRyX19idWlsZGVyKTsKKyAgICBy
ZXR1cm4gUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9I
QVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1FbGVtZW50X19w
YXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9ncmFtRWxlbWVu
dF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9ncmFtRWxlbWVudF9fcGFyc2VyID0g
dHNmX3BhcnNlcl9jcmVhdGUoUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOworfQorI2Vsc2UK
K3N0YXRpYyB2b2lkICpQcm9ncmFtRWxlbWVudF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAg
ICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOwor
fQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKlByb2dyYW1FbGVtZW50X19nZXRfcGFyc2VyKHZvaWQp
IHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJf
dCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9ncmFtRWxlbWVudF9fcGFyc2VyLCBQcm9n
cmFtRWxlbWVudF9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZQ
cm9ncmFtRWxlbWVudF9fcGFyc2VyX19vYywgUHJvZ3JhbUVsZW1lbnRfX3BhcnNlcl9fYnVpbGRl
cik7CisgICAgcmV0dXJuIFByb2dyYW1FbGVtZW50X19wYXJzZXI7CisjZW5kaWYKK30KK3ZvaWQg
UHJvZ3JhbUVsZW1lbnRfX2Rlc3RydWN0KFByb2dyYW1FbGVtZW50X3QgKmRhdGEpIHsKKyAgICBz
d2l0Y2ggKGRhdGEtPnZhbHVlKSB7CisgICAgY2FzZSAwOgorICAgICAgICBQcm9jZWR1cmVEZWNs
X19kZXN0cnVjdCgmZGF0YS0+dS5wcm9jZWR1cmVEZWNsKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAxOgorICAgICAgICBQcm9jZWR1cmVEZWZuX19kZXN0cnVjdCgmZGF0YS0+dS5wcm9jZWR1
cmVEZWZuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCit0c2ZfYm9vbF90IFByb2dyYW1FbGVtZW50X193cml0ZSh0c2Zfc3RyZWFtX2Zp
bGVfb3V0cHV0X3QgKm91dCwgUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YSkgeworICAgIHJldHVybiB0
c2ZfdHlwZWRfZGF0YV93cml0ZShvdXQsIFByb2dyYW1FbGVtZW50X19nZXRfZ2VuZXJhdG9yKCks
IGRhdGEpOworfQorCitQcm9ncmFtRWxlbWVudF90ICpQcm9ncmFtRWxlbWVudF9fcmVhZCh0c2Zf
c3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVh
ZChpbiwgUHJvZ3JhbUVsZW1lbnRfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgUHJv
Z3JhbUVsZW1lbnRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIFByb2dy
YW1FbGVtZW50X3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkX2lu
dG8oaW4sIFByb2dyYW1FbGVtZW50X19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRp
YyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgUHJvZ3JhbV9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNm
X2dlbnJ0cl90ICogdm9sYXRpbGUgUHJvZ3JhbV9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2Zf
cGFyc2VyX3QgKiB2b2xhdGlsZSBQcm9ncmFtX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1fX3R5cGVf
X29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9ncmFtX190eXBlX19idWls
ZGVyKHZvaWQpIHsKKyAgICBQcm9ncmFtX190eXBlID0gUHJvZ3JhbV9fYnVpbGRfdHlwZSgpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9ncmFtX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAg
ICByZXR1cm4gUHJvZ3JhbV9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpQ
cm9ncmFtX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisg
ICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2dyYW1f
X3R5cGUsIFByb2dyYW1fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2Uo
JlByb2dyYW1fX3R5cGVfX29jLCBQcm9ncmFtX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4g
UHJvZ3JhbV9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
Ugorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1fX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2dyYW1fX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgUHJvZ3JhbV9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUoUHJvZ3JhbV9fZ2V0X3R5
cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKlByb2dyYW1fX2dlbnJ0cl9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKFByb2dyYW1fX2dldF90eXBl
KCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKlByb2dyYW1fX2dldF9nZW5lcmF0b3Iodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0
cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2dyYW1fX2dlbnJ0ciwgUHJvZ3JhbV9f
Z2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZQcm9ncmFtX19nZW5y
dHJfX29jLCBQcm9ncmFtX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBQcm9ncmFtX19n
ZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCBQcm9ncmFtX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7
CitzdGF0aWMgdm9pZCBQcm9ncmFtX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIFByb2dy
YW1fX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKFByb2dyYW1fX2dldF90eXBlKCkpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9ncmFtX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAg
IHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9ncmFtX19nZXRfdHlwZSgpKTsKK30KKyNlbmRp
ZgordHNmX3BhcnNlcl90ICpQcm9ncmFtX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRfcG9p
bnRlcigodm9pZCoqKSZQcm9ncmFtX19wYXJzZXIsIFByb2dyYW1fX3BhcnNlcl9fYnVpbGRlcik7
CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvZ3JhbV9fcGFyc2VyX19vYywgUHJvZ3JhbV9f
cGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gUHJvZ3JhbV9fcGFyc2VyOworI2VuZGlmCit9
Cit2b2lkIFByb2dyYW1fX2Rlc3RydWN0KFByb2dyYW1fdCAqZGF0YSkgeworICAgIFByb2dyYW1f
X2dsb2JhbHNfX2Rlc3RydWN0KCZkYXRhLT5nbG9iYWxzKTsKK30KKwordHNmX2Jvb2xfdCBQcm9n
cmFtX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgUHJvZ3JhbV90ICpkYXRh
KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgUHJvZ3JhbV9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhKTsKK30KKworUHJvZ3JhbV90ICpQcm9ncmFtX19yZWFkKHRzZl9zdHJl
YW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGlu
LCBQcm9ncmFtX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IFByb2dyYW1fX3JlYWRf
aW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIFByb2dyYW1fdCAqcmVzdWx0KSB7Cisg
ICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgUHJvZ3JhbV9fZ2V0X3BhcnNl
cigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0
aW9uX19tb3ZfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19tb3ZfX3R5cGVfX29jID0gUFRIUkVB
RF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBJbnN0cnVjdGlvbl9fbW92X190eXBlX19idWlsZGVy
KHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fbW92X190eXBlID0gSW5zdHJ1Y3Rpb25fX21vdl9f
YnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpJbnN0cnVjdGlvbl9fbW92X190
eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX21vdl9fYnVpbGRf
dHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fbW92X19nZXRfdHlw
ZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2Zf
dHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkluc3RydWN0aW9uX19tb3ZfX3R5cGUs
IEluc3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29u
Y2UoJkluc3RydWN0aW9uX19tb3ZfX3R5cGVfX29jLCBJbnN0cnVjdGlvbl9fbW92X190eXBlX19i
dWlsZGVyKTsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX21vdl9fdHlwZTsKKyNlbmRpZgorfQor
CitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19hZGRfX3R5cGUgPSBO
VUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25j
ZV90IEluc3RydWN0aW9uX19hZGRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0
aWMgdm9pZCBJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBJbnN0
cnVjdGlvbl9fYWRkX190eXBlID0gSW5zdHJ1Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSgpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICpJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZvaWQp
IHsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlm
Cit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYWRkX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJkluc3RydWN0aW9uX19hZGRfX3R5cGUsIEluc3RydWN0aW9uX19hZGRf
X3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkluc3RydWN0aW9uX19h
ZGRfX3R5cGVfX29jLCBJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1
cm4gSW5zdHJ1Y3Rpb25fX2FkZF9fdHlwZTsKKyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5cGVf
dCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19hbGxvY19fdHlwZSA9IE5VTEw7CisKKyNpZm5kZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgSW5zdHJ1Y3Rpb25f
X2FsbG9jX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgSW5zdHJ1
Y3Rpb25fX2FsbG9jX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fYWxs
b2NfX3R5cGUgPSBJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitz
dGF0aWMgdm9pZCAqSW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAg
ICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2FsbG9jX19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3Rz
Zl90eXBlX3QgKkluc3RydWN0aW9uX19hbGxvY19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9p
bnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9fYWxsb2NfX3R5cGUsIEluc3RydWN0aW9uX19hbGxv
Y19fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmSW5zdHJ1Y3Rpb25f
X2FsbG9jX190eXBlX19vYywgSW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlX19idWlsZGVyKTsKKyAg
ICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlOworI2VuZGlmCit9Cit2b2lkIEluc3Ry
dWN0aW9uX19hbGxvY19fZGVzdHJ1Y3QoSW5zdHJ1Y3Rpb25fX2FsbG9jX3QgKmRhdGEpIHsKKyAg
ICBUeXBlX19kZXN0cnVjdCgmZGF0YS0+dHlwZSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICog
dm9sYXRpbGUgSW5zdHJ1Y3Rpb25fX3JldF9fdHlwZSA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgSW5zdHJ1Y3Rpb25fX3JldF9f
dHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9uX19y
ZXRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX19yZXRfX3R5cGUgPSBJ
bnN0cnVjdGlvbl9fcmV0X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKklu
c3RydWN0aW9uX19yZXRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBJbnN0cnVj
dGlvbl9fcmV0X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkluc3RydWN0
aW9uX19yZXRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
KyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1
Y3Rpb25fX3JldF9fdHlwZSwgSW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcik7CisjZWxz
ZQorICAgIHB0aHJlYWRfb25jZSgmSW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fb2MsIEluc3RydWN0
aW9uX19yZXRfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fcmV0X190
eXBlOworI2VuZGlmCit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgSW5zdHJ1Y3Rp
b25fX2p1bXBfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19qdW1wX190eXBlX19vYyA9IFBUSFJF
QURfT05DRV9JTklUOworc3RhdGljIHZvaWQgSW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxk
ZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX19qdW1wX190eXBlID0gSW5zdHJ1Y3Rpb25fX2p1
bXBfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqSW5zdHJ1Y3Rpb25fX2p1
bXBfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fanVtcF9f
YnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fanVtcF9f
Z2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVy
biAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9fanVt
cF9fdHlwZSwgSW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBw
dGhyZWFkX29uY2UoJkluc3RydWN0aW9uX19qdW1wX190eXBlX19vYywgSW5zdHJ1Y3Rpb25fX2p1
bXBfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fanVtcF9fdHlwZTsK
KyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19j
YWxsX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCBJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9uX19jYWxsX190eXBlX19idWlsZGVyKHZv
aWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZSA9IEluc3RydWN0aW9uX19jYWxsX19i
dWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkluc3RydWN0aW9uX19jYWxsX190
eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2NhbGxfX2J1aWxk
X3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2NhbGxfX2dldF90
eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRz
Zl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25fX2NhbGxfX3R5
cGUsIEluc3RydWN0aW9uX19jYWxsX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVh
ZF9vbmNlKCZJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MsIEluc3RydWN0aW9uX19jYWxsX190
eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2NhbGxfX3R5cGU7CisjZW5k
aWYKK30KK3ZvaWQgSW5zdHJ1Y3Rpb25fX2NhbGxfX2Rlc3RydWN0KEluc3RydWN0aW9uX19jYWxs
X3QgKmRhdGEpIHsKKyAgICBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fZGVzdHJ1Y3QoJmRhdGEt
PmFyZ3MpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19j
YWxsX19hcmdzX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fdHlwZV9fb2Mg
PSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9uX19jYWxsX19hcmdz
X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fdHlw
ZSA9IEluc3RydWN0aW9uX19jYWxsX19hcmdzX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKkluc3RydWN0aW9uX19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKHZvaWQpIHsK
KyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX2J1aWxkX3R5cGUoKTsKK30KKyNl
bmRpZgordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX2dldF90eXBlKHZvaWQp
IHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3Qq
KXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGUs
IEluc3RydWN0aW9uX19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRo
cmVhZF9vbmNlKCZJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fdHlwZV9fb2MsIEluc3RydWN0aW9u
X19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2Nh
bGxfX2FyZ3NfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3Nf
X2Rlc3RydWN0KEluc3RydWN0aW9uX19jYWxsX19hcmdzX3QgKmRhdGEpIHsKKyAgICBpbnRlZ2Vy
X19hcnJheV9fZGVzdHJ1Y3QoZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRp
bGUgaW50ZWdlcl9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRf
UE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IGludGVnZXJfX2FycmF5X190eXBlX19vYyA9
IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgaW50ZWdlcl9fYXJyYXlfX3R5cGVfX2J1
aWxkZXIodm9pZCkgeworICAgIGludGVnZXJfX2FycmF5X190eXBlID0gaW50ZWdlcl9fYXJyYXlf
X2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqaW50ZWdlcl9fYXJyYXlfX3R5
cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBpbnRlZ2VyX19hcnJheV9fYnVpbGRfdHlw
ZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICppbnRlZ2VyX19hcnJheV9fZ2V0X3R5cGUodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVf
dCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZpbnRlZ2VyX19hcnJheV9fdHlwZSwgaW50ZWdl
cl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJmludGVn
ZXJfX2FycmF5X190eXBlX19vYywgaW50ZWdlcl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworICAg
IHJldHVybiBpbnRlZ2VyX19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCBpbnRlZ2VyX19h
cnJheV9fZGVzdHJ1Y3QoaW50ZWdlcl9fYXJyYXlfdCAqZGF0YSkgeworICAgIGZyZWUoZGF0YS0+
ZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgSW5zdHJ1Y3Rpb25fX2Jy
YW5jaFplcm9fX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19icmFuY2haZXJvX190eXBlX19vYyA9
IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9f
X3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX19icmFuY2haZXJvX190eXBl
ID0gSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0
aWMgdm9pZCAqSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fYnVpbGRfdHlwZSgpOworfQorI2Vu
ZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fZ2V0X3R5cGUodm9pZCkg
eworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCop
dHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fdHlwZSwg
SW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhy
ZWFkX29uY2UoJkluc3RydWN0aW9uX19icmFuY2haZXJvX190eXBlX19vYywgSW5zdHJ1Y3Rpb25f
X2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fYnJh
bmNoWmVyb19fdHlwZTsKKyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxl
IFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fdHlwZSA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgUHJvY2VkdXJlRGVmbl9fdmFy
aWFibGVzX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgUHJvY2Vk
dXJlRGVmbl9fdmFyaWFibGVzX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1cmVE
ZWZuX192YXJpYWJsZXNfX3R5cGUgPSBQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX190
eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVz
X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX3Zh
cmlhYmxlc19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
ICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1
cmVEZWZuX192YXJpYWJsZXNfX3R5cGUsIFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fdHlwZV9f
YnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvY2VkdXJlRGVmbl9fdmFyaWFi
bGVzX190eXBlX19vYywgUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBlX19idWlsZGVyKTsK
KyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBlOworI2VuZGlmCit9Cit2
b2lkIFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fZGVzdHJ1Y3QoUHJvY2VkdXJlRGVmbl9fdmFy
aWFibGVzX3QgKmRhdGEpIHsKKyAgICBWYXJpYWJsZURlY2xfX2FycmF5X19kZXN0cnVjdChkYXRh
KTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBWYXJpYWJsZURlY2xfX2FycmF5
X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBw
dGhyZWFkX29uY2VfdCBWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19vYyA9IFBUSFJFQURfT05D
RV9JTklUOworc3RhdGljIHZvaWQgVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZSA9IFZhcmlhYmxlRGVjbF9fYXJy
YXlfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqVmFyaWFibGVEZWNsX19h
cnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFZhcmlhYmxlRGVjbF9fYXJy
YXlfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqVmFyaWFibGVEZWNsX19h
cnJheV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAg
IHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZWYXJpYWJsZURl
Y2xfX2FycmF5X190eXBlLCBWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19idWlsZGVyKTsKKyNl
bHNlCisgICAgcHRocmVhZF9vbmNlKCZWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19vYywgVmFy
aWFibGVEZWNsX19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFZhcmlhYmxlRGVj
bF9fYXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgVmFyaWFibGVEZWNsX19hcnJheV9fZGVz
dHJ1Y3QoVmFyaWFibGVEZWNsX19hcnJheV90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaTsKKyAg
ICBmb3IgKGkgPSBkYXRhLT5sZW47IGktLTspCisgICAgICAgIFZhcmlhYmxlRGVjbF9fZGVzdHJ1
Y3QoKGRhdGEtPmRhdGEgKyBpKSk7CisgICAgZnJlZShkYXRhLT5kYXRhKTsKK30KKworc3RhdGlj
IHRzZl90eXBlX3QgKiB2b2xhdGlsZSBQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlID0gTlVMTDsK
KworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQ
cm9jZWR1cmVEZWZuX19jb2RlX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGlj
IHZvaWQgUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJv
Y2VkdXJlRGVmbl9fY29kZV9fdHlwZSA9IFByb2NlZHVyZURlZm5fX2NvZGVfX2J1aWxkX3R5cGUo
KTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9fYnVp
bGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX2NvZGVfX2J1aWxkX3R5cGUo
KTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9fY29kZV9fZ2V0X3R5cGUo
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5
cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1cmVEZWZuX19jb2RlX190eXBl
LCBQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVh
ZF9vbmNlKCZQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlX19vYywgUHJvY2VkdXJlRGVmbl9fY29k
ZV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX2NvZGVfX3R5cGU7
CisjZW5kaWYKK30KK3ZvaWQgUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVzdHJ1Y3QoUHJvY2VkdXJl
RGVmbl9fY29kZV90ICpkYXRhKSB7CisgICAgSW5zdHJ1Y3Rpb25fX2FycmF5X19kZXN0cnVjdChk
YXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBJbnN0cnVjdGlvbl9fYXJy
YXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGlj
IHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgSW5zdHJ1Y3Rpb25fX2FycmF5X190eXBlID0gSW5zdHJ1Y3Rpb25fX2FycmF5
X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkluc3RydWN0aW9uX19hcnJh
eV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIEluc3RydWN0aW9uX19hcnJheV9f
YnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYXJyYXlf
X2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1
cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25fX2Fy
cmF5X190eXBlLCBJbnN0cnVjdGlvbl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAg
ICBwdGhyZWFkX29uY2UoJkluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MsIEluc3RydWN0aW9u
X19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIEluc3RydWN0aW9uX19hcnJheV9f
dHlwZTsKKyNlbmRpZgorfQordm9pZCBJbnN0cnVjdGlvbl9fYXJyYXlfX2Rlc3RydWN0KEluc3Ry
dWN0aW9uX19hcnJheV90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaTsKKyAgICBmb3IgKGkgPSBk
YXRhLT5sZW47IGktLTspCisgICAgICAgIEluc3RydWN0aW9uX19kZXN0cnVjdCgoZGF0YS0+ZGF0
YSArIGkpKTsKKyAgICBmcmVlKGRhdGEtPmRhdGEpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAq
IHZvbGF0aWxlIFByb2NlZHVyZURlZm5fX2RlYnVnX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9jZWR1cmVEZWZu
X19kZWJ1Z19fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2Nl
ZHVyZURlZm5fX2RlYnVnX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1cmVEZWZu
X19kZWJ1Z19fdHlwZSA9IFByb2NlZHVyZURlZm5fX2RlYnVnX19idWlsZF90eXBlKCk7Cit9Cisj
ZWxzZQorc3RhdGljIHZvaWQgKlByb2NlZHVyZURlZm5fX2RlYnVnX190eXBlX19idWlsZGVyKHZv
aWQpIHsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fZGVidWdfX2J1aWxkX3R5cGUoKTsKK30K
KyNlbmRpZgordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9fZGVidWdfX2dldF90eXBlKHZvaWQp
IHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3Qq
KXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmUHJvY2VkdXJlRGVmbl9fZGVidWdfX3R5cGUsIFBy
b2NlZHVyZURlZm5fX2RlYnVnX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9v
bmNlKCZQcm9jZWR1cmVEZWZuX19kZWJ1Z19fdHlwZV9fb2MsIFByb2NlZHVyZURlZm5fX2RlYnVn
X190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fZGVidWdfX3R5cGU7
CisjZW5kaWYKK30KK3ZvaWQgUHJvY2VkdXJlRGVmbl9fZGVidWdfX2Rlc3RydWN0KFByb2NlZHVy
ZURlZm5fX2RlYnVnX3QgKmRhdGEpIHsKKyAgICBEZWJ1Z0RhdGFfX2FycmF5X19kZXN0cnVjdChk
YXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEZWJ1Z0RhdGFfX2FycmF5
X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBw
dGhyZWFkX29uY2VfdCBEZWJ1Z0RhdGFfX2FycmF5X190eXBlX19vYyA9IFBUSFJFQURfT05DRV9J
TklUOworc3RhdGljIHZvaWQgRGVidWdEYXRhX19hcnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7
CisgICAgRGVidWdEYXRhX19hcnJheV9fdHlwZSA9IERlYnVnRGF0YV9fYXJyYXlfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRGVidWdEYXRhX19hcnJheV9fdHlwZV9fYnVp
bGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERlYnVnRGF0YV9fYXJyYXlfX2J1aWxkX3R5cGUoKTsK
K30KKyNlbmRpZgordHNmX3R5cGVfdCAqRGVidWdEYXRhX19hcnJheV9fZ2V0X3R5cGUodm9pZCkg
eworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCop
dHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEZWJ1Z0RhdGFfX2FycmF5X190eXBlLCBEZWJ1Z0Rh
dGFfX2FycmF5X190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEZWJ1
Z0RhdGFfX2FycmF5X190eXBlX19vYywgRGVidWdEYXRhX19hcnJheV9fdHlwZV9fYnVpbGRlcik7
CisgICAgcmV0dXJuIERlYnVnRGF0YV9fYXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgRGVi
dWdEYXRhX19hcnJheV9fZGVzdHJ1Y3QoRGVidWdEYXRhX19hcnJheV90ICpkYXRhKSB7CisgICAg
dWludDMyX3QgaTsKKyAgICBmb3IgKGkgPSBkYXRhLT5sZW47IGktLTspCisgICAgICAgIERlYnVn
RGF0YV9fZGVzdHJ1Y3QoKGRhdGEtPmRhdGEgKyBpKSk7CisgICAgZnJlZShkYXRhLT5kYXRhKTsK
K30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBQcm9ncmFtX19nbG9iYWxzX190eXBl
ID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBQcm9ncmFtX19nbG9iYWxzX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOwor
c3RhdGljIHZvaWQgUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAg
UHJvZ3JhbV9fZ2xvYmFsc19fdHlwZSA9IFByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUoKTsK
K30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIFByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUoKTsKK30KKyNl
bmRpZgordHNmX3R5cGVfdCAqUHJvZ3JhbV9fZ2xvYmFsc19fZ2V0X3R5cGUodm9pZCkgeworI2lm
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2lu
aXRfcG9pbnRlcigodm9pZCoqKSZQcm9ncmFtX19nbG9iYWxzX190eXBlLCBQcm9ncmFtX19nbG9i
YWxzX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZQcm9ncmFtX19n
bG9iYWxzX190eXBlX19vYywgUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZV9fYnVpbGRlcik7CisgICAg
cmV0dXJuIFByb2dyYW1fX2dsb2JhbHNfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgUHJvZ3JhbV9f
Z2xvYmFsc19fZGVzdHJ1Y3QoUHJvZ3JhbV9fZ2xvYmFsc190ICpkYXRhKSB7CisgICAgUHJvZ3Jh
bUVsZW1lbnRfX2FycmF5X19kZXN0cnVjdChkYXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3Qg
KiB2b2xhdGlsZSBQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1FbGVt
ZW50X19hcnJheV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFBy
b2dyYW1FbGVtZW50X19hcnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJvZ3JhbUVs
ZW1lbnRfX2FycmF5X190eXBlID0gUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19idWlsZF90eXBlKCk7
Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKlByb2dyYW1FbGVtZW50X19hcnJheV9fdHlwZV9fYnVp
bGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFByb2dyYW1FbGVtZW50X19hcnJheV9fYnVpbGRfdHlw
ZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2dldF90
eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRz
Zl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmUHJvZ3JhbUVsZW1lbnRfX2FycmF5
X190eXBlLCBQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAg
ICBwdGhyZWFkX29uY2UoJlByb2dyYW1FbGVtZW50X19hcnJheV9fdHlwZV9fb2MsIFByb2dyYW1F
bGVtZW50X19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2dyYW1FbGVtZW50
X19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCBQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2Rl
c3RydWN0KFByb2dyYW1FbGVtZW50X19hcnJheV90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaTsK
KyAgICBmb3IgKGkgPSBkYXRhLT5sZW47IGktLTspCisgICAgICAgIFByb2dyYW1FbGVtZW50X19k
ZXN0cnVjdCgoZGF0YS0+ZGF0YSArIGkpKTsKKyAgICBmcmVlKGRhdGEtPmRhdGEpOworfQorCklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pci5oCShu
b25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
aXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3MSBAQAorLyogLi90ZXN0cy9zdWl0ZXMv
dG95aXIvdHNmX2lyLmggLS0gZ2VuZXJhdGVkIGJ5IHRzZl9kZWZpbmUgZnJvbSAuL3Rlc3RzL3N1
aXRlcy90b3lpci90c2ZfaXIudCAqLworCisjaW5jbHVkZSAidHNmLmgiCisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX1ZhcmlhYmxlRGVjbAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1Zhcmlh
YmxlRGVjbAorc3RydWN0IFZhcmlhYmxlRGVjbF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RF
RklORV9TVFJVQ1RfREVDTF9JbnN0cnVjdGlvbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9E
RUNMX0luc3RydWN0aW9uCitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fczsKKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRGVidWdEYXRhCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RS
VUNUX0RFQ0xfRGVidWdEYXRhCitzdHJ1Y3QgRGVidWdEYXRhX3M7CisjZW5kaWYKKworI2lmbmRl
ZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1Byb2NlZHVyZQorI2RlZmluZSBUU0ZfREVGSU5FX1NU
UlVDVF9ERUNMX1Byb2NlZHVyZQorc3RydWN0IFByb2NlZHVyZV9zOworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9Qcm9jZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFQ0xfUHJvY2VkdXJlRGVjbAorc3RydWN0IFByb2NlZHVyZURlY2xfczsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfUHJvY2VkdXJlRGVmbgorI2Rl
ZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1Byb2NlZHVyZURlZm4KK3N0cnVjdCBQcm9jZWR1
cmVEZWZuX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1Byb2dy
YW1FbGVtZW50CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfUHJvZ3JhbUVsZW1lbnQK
K3N0cnVjdCBQcm9ncmFtRWxlbWVudF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9T
VFJVQ1RfREVDTF9Qcm9ncmFtCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfUHJvZ3Jh
bQorc3RydWN0IFByb2dyYW1fczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNU
X0RFQ0xfSW5zdHJ1Y3Rpb25fX21vdgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0lu
c3RydWN0aW9uX19tb3YKK3N0cnVjdCBJbnN0cnVjdGlvbl9fbW92X3M7CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0luc3RydWN0aW9uX19hZGQKKyNkZWZpbmUgVFNG
X0RFRklORV9TVFJVQ1RfREVDTF9JbnN0cnVjdGlvbl9fYWRkCitzdHJ1Y3QgSW5zdHJ1Y3Rpb25f
X2FkZF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9JbnN0cnVj
dGlvbl9fYWxsb2MKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9JbnN0cnVjdGlvbl9f
YWxsb2MKK3N0cnVjdCBJbnN0cnVjdGlvbl9fYWxsb2NfczsKKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfU1RSVUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX3JldAorI2RlZmluZSBUU0ZfREVGSU5F
X1NUUlVDVF9ERUNMX0luc3RydWN0aW9uX19yZXQKK3N0cnVjdCBJbnN0cnVjdGlvbl9fcmV0X3M7
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0luc3RydWN0aW9uX19q
dW1wCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX2p1bXAKK3N0
cnVjdCBJbnN0cnVjdGlvbl9fanVtcF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9T
VFJVQ1RfREVDTF9JbnN0cnVjdGlvbl9fY2FsbAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9E
RUNMX0luc3RydWN0aW9uX19jYWxsCitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2NhbGxfczsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfaW50ZWdlcl9fYXJyYXkKKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9pbnRlZ2VyX19hcnJheQorc3RydWN0IGludGVnZXJf
X2FycmF5X3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0luc3Ry
dWN0aW9uX19icmFuY2haZXJvCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfSW5zdHJ1
Y3Rpb25fX2JyYW5jaFplcm8KK3N0cnVjdCBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zOworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9WYXJpYWJsZURlY2xfX2FycmF5
CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfVmFyaWFibGVEZWNsX19hcnJheQorc3Ry
dWN0IFZhcmlhYmxlRGVjbF9fYXJyYXlfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVf
U1RSVUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNU
X0RFQ0xfSW5zdHJ1Y3Rpb25fX2FycmF5CitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2FycmF5X3M7Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RlYnVnRGF0YV9fYXJyYXkK
KyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9EZWJ1Z0RhdGFfX2FycmF5CitzdHJ1Y3Qg
RGVidWdEYXRhX19hcnJheV9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1Rf
REVDTF9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVD
TF9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKK3N0cnVjdCBQcm9ncmFtRWxlbWVudF9fYXJyYXlfczsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9WYXJpYWJsZURlY2wKKyNkZWZp
bmUgVFNGX0RFRklORV9UWVBFREVGX1ZhcmlhYmxlRGVjbAordHlwZWRlZiBzdHJ1Y3QgVmFyaWFi
bGVEZWNsX3MgVmFyaWFibGVEZWNsX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZ
UEVERUZfSW5zdHJ1Y3Rpb24KKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9u
Cit0eXBlZGVmIHN0cnVjdCBJbnN0cnVjdGlvbl9zIEluc3RydWN0aW9uX3Q7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfRGVidWdEYXRhCisjZGVmaW5lIFRTRl9ERUZJTkVf
VFlQRURFRl9EZWJ1Z0RhdGEKK3R5cGVkZWYgc3RydWN0IERlYnVnRGF0YV9zIERlYnVnRGF0YV90
OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZQorI2RlZmlu
ZSBUU0ZfREVGSU5FX1RZUEVERUZfUHJvY2VkdXJlCit0eXBlZGVmIHN0cnVjdCBQcm9jZWR1cmVf
cyBQcm9jZWR1cmVfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9j
ZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9jZWR1cmVEZWNsCit0eXBl
ZGVmIHN0cnVjdCBQcm9jZWR1cmVEZWNsX3MgUHJvY2VkdXJlRGVjbF90OworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm4KKyNkZWZpbmUgVFNGX0RFRklO
RV9UWVBFREVGX1Byb2NlZHVyZURlZm4KK3R5cGVkZWYgc3RydWN0IFByb2NlZHVyZURlZm5fcyBQ
cm9jZWR1cmVEZWZuX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfUHJv
Z3JhbUVsZW1lbnQKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX1Byb2dyYW1FbGVtZW50Cit0
eXBlZGVmIHN0cnVjdCBQcm9ncmFtRWxlbWVudF9zIFByb2dyYW1FbGVtZW50X3Q7CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfUHJvZ3JhbQorI2RlZmluZSBUU0ZfREVGSU5F
X1RZUEVERUZfUHJvZ3JhbQordHlwZWRlZiBzdHJ1Y3QgUHJvZ3JhbV9zIFByb2dyYW1fdDsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0cnVjdGlvbl9fbW92CisjZGVm
aW5lIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0cnVjdGlvbl9fbW92Cit0eXBlZGVmIHN0cnVjdCBJ
bnN0cnVjdGlvbl9fbW92X3MgSW5zdHJ1Y3Rpb25fX21vdl90OworI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19hZGQKKyNkZWZpbmUgVFNGX0RFRklORV9U
WVBFREVGX0luc3RydWN0aW9uX19hZGQKK3R5cGVkZWYgc3RydWN0IEluc3RydWN0aW9uX19hZGRf
cyBJbnN0cnVjdGlvbl9fYWRkX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVE
RUZfSW5zdHJ1Y3Rpb25fX2FsbG9jCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0cnVj
dGlvbl9fYWxsb2MKK3R5cGVkZWYgc3RydWN0IEluc3RydWN0aW9uX19hbGxvY19zIEluc3RydWN0
aW9uX19hbGxvY190OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0luc3Ry
dWN0aW9uX19yZXQKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19yZXQK
K3R5cGVkZWYgc3RydWN0IEluc3RydWN0aW9uX19yZXRfcyBJbnN0cnVjdGlvbl9fcmV0X3Q7Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfSW5zdHJ1Y3Rpb25fX2p1bXAKKyNk
ZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19qdW1wCit0eXBlZGVmIHN0cnVj
dCBJbnN0cnVjdGlvbl9fanVtcF9zIEluc3RydWN0aW9uX19qdW1wX3Q7CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfSW5zdHJ1Y3Rpb25fX2NhbGwKKyNkZWZpbmUgVFNGX0RF
RklORV9UWVBFREVGX0luc3RydWN0aW9uX19jYWxsCit0eXBlZGVmIHN0cnVjdCBJbnN0cnVjdGlv
bl9fY2FsbF9zIEluc3RydWN0aW9uX19jYWxsX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX1RZUEVERUZfaW50ZWdlcl9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX2lu
dGVnZXJfX2FycmF5Cit0eXBlZGVmIHN0cnVjdCBpbnRlZ2VyX19hcnJheV9zIGludGVnZXJfX2Fy
cmF5X3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfSW5zdHJ1Y3Rpb25f
X2JyYW5jaFplcm8KKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19icmFu
Y2haZXJvCit0eXBlZGVmIHN0cnVjdCBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zIEluc3RydWN0
aW9uX19icmFuY2haZXJvX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZf
VmFyaWFibGVEZWNsX19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfVmFyaWFibGVE
ZWNsX19hcnJheQordHlwZWRlZiBzdHJ1Y3QgVmFyaWFibGVEZWNsX19hcnJheV9zIFZhcmlhYmxl
RGVjbF9fYXJyYXlfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0
cnVjdGlvbl9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19h
cnJheQordHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2FycmF5X3MgSW5zdHJ1Y3Rpb25fX2Fy
cmF5X3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfRGVidWdEYXRhX19h
cnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRGVidWdEYXRhX19hcnJheQordHlwZWRl
ZiBzdHJ1Y3QgRGVidWdEYXRhX19hcnJheV9zIERlYnVnRGF0YV9fYXJyYXlfdDsKKyNlbmRpZgor
CisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNkZWZp
bmUgVFNGX0RFRklORV9UWVBFREVGX1Byb2dyYW1FbGVtZW50X19hcnJheQordHlwZWRlZiBzdHJ1
Y3QgUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3MgUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3Q7CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfT3BlcmFuZAorI2RlZmluZSBUU0ZfREVG
SU5FX1RZUEVERUZfT3BlcmFuZAordHlwZWRlZiB0c2ZfaW50ZWdlcl90IE9wZXJhbmRfdDsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9UeXBlCisjZGVmaW5lIFRTRl9ERUZJ
TkVfVFlQRURFRl9UeXBlCit0eXBlZGVmIGNoYXIqIFR5cGVfdDsKKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfVFlQRURFRl9Db2RlT2Zmc2V0CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURF
Rl9Db2RlT2Zmc2V0Cit0eXBlZGVmIHRzZl9pbnRlZ2VyX3QgQ29kZU9mZnNldF90OworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19jYWxsX19hcmdzCisj
ZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0cnVjdGlvbl9fY2FsbF9fYXJncwordHlwZWRl
ZiBpbnRlZ2VyX19hcnJheV90IEluc3RydWN0aW9uX19jYWxsX19hcmdzX3Q7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzCisjZGVm
aW5lIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9jZWR1cmVEZWZuX192YXJpYWJsZXMKK3R5cGVkZWYg
VmFyaWFibGVEZWNsX19hcnJheV90IFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc190OworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm5fX2NvZGUKKyNkZWZp
bmUgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm5fX2NvZGUKK3R5cGVkZWYgSW5zdHJ1
Y3Rpb25fX2FycmF5X3QgUHJvY2VkdXJlRGVmbl9fY29kZV90OworI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm5fX2RlYnVnCisjZGVmaW5lIFRTRl9ERUZJ
TkVfVFlQRURFRl9Qcm9jZWR1cmVEZWZuX19kZWJ1ZwordHlwZWRlZiBEZWJ1Z0RhdGFfX2FycmF5
X3QgUHJvY2VkdXJlRGVmbl9fZGVidWdfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVf
VFlQRURFRl9Qcm9ncmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9n
cmFtX19nbG9iYWxzCit0eXBlZGVmIFByb2dyYW1FbGVtZW50X19hcnJheV90IFByb2dyYW1fX2ds
b2JhbHNfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9WYXJpYWJs
ZURlY2wKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX1ZhcmlhYmxlRGVjbAorc3RydWN0
IFZhcmlhYmxlRGVjbF9zIHsKKyAgICBUeXBlX3QgdHlwZTsKKyAgICBjaGFyKiBuYW1lOworfTsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fbW92
CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fbW92CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb25fX21vdl9zIHsKKyAgICBPcGVyYW5kX3QgZGVzdDsKKyAgICBPcGVyYW5kX3Qg
c3JjOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVj
dGlvbl9fYWRkCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fYWRk
CitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2FkZF9zIHsKKyAgICBPcGVyYW5kX3QgZGVzdDsKKyAgICBP
cGVyYW5kX3Qgc3JjOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RF
Rl9JbnN0cnVjdGlvbl9fYWxsb2MKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0luc3Ry
dWN0aW9uX19hbGxvYworc3RydWN0IEluc3RydWN0aW9uX19hbGxvY19zIHsKKyAgICBUeXBlX3Qg
dHlwZTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1
Y3Rpb25fX3JldAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25fX3Jl
dAorc3RydWN0IEluc3RydWN0aW9uX19yZXRfcyB7CisgICAgT3BlcmFuZF90IHNyYzsKK307Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25fX2p1bXAK
KyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0luc3RydWN0aW9uX19qdW1wCitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb25fX2p1bXBfcyB7CisgICAgQ29kZU9mZnNldF90IHRhcmdldDsKK307CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfaW50ZWdlcl9fYXJyYXkKKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX2ludGVnZXJfX2FycmF5CitzdHJ1Y3QgaW50ZWdlcl9f
YXJyYXlfcyB7CisgICAgdHNmX2ludGVnZXJfdCAqZGF0YTsKKyAgICB1aW50MzJfdCBsZW47Cit9
OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0luc3RydWN0aW9uX19j
YWxsCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fY2FsbAorc3Ry
dWN0IEluc3RydWN0aW9uX19jYWxsX3MgeworICAgIE9wZXJhbmRfdCBkZXN0OworICAgIE9wZXJh
bmRfdCBjYWxsZWU7CisgICAgSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCBhcmdzOworfTsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fYnJhbmNo
WmVybworI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25fX2JyYW5jaFpl
cm8KK3N0cnVjdCBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zIHsKKyAgICBPcGVyYW5kX3Qgc3Jj
OworICAgIENvZGVPZmZzZXRfdCB0YXJnZXQ7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RF
RklORV9TVFJVQ1RfREVGX0luc3RydWN0aW9uCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RF
Rl9JbnN0cnVjdGlvbgorc3RydWN0IEluc3RydWN0aW9uX3MgeworICAgIHRzZl9jaG9pY2VfdCB2
YWx1ZTsKKyAgICB1bmlvbiB7CisgICAgICAgIEluc3RydWN0aW9uX19tb3ZfdCBtb3Y7CisgICAg
ICAgIEluc3RydWN0aW9uX19hZGRfdCBhZGQ7CisgICAgICAgIEluc3RydWN0aW9uX19hbGxvY190
IGFsbG9jOworICAgICAgICBJbnN0cnVjdGlvbl9fcmV0X3QgcmV0OworICAgICAgICBJbnN0cnVj
dGlvbl9fanVtcF90IGp1bXA7CisgICAgICAgIEluc3RydWN0aW9uX19jYWxsX3QgY2FsbDsKKyAg
ICAgICAgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCBicmFuY2haZXJvOworICAgIH0gdTsKK307
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRGVidWdEYXRhCisjZGVm
aW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EZWJ1Z0RhdGEKK3N0cnVjdCBEZWJ1Z0RhdGFfcyB7
CisgICAgdHNmX2ludGVnZXJfdCBzdGFydE9mZnNldDsKKyAgICB0c2ZfaW50ZWdlcl90IHNwYW5T
aXplOworICAgIGNoYXIqIGRhdGE7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9T
VFJVQ1RfREVGX1Byb2NlZHVyZQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfUHJvY2Vk
dXJlCitzdHJ1Y3QgUHJvY2VkdXJlX3MgeworICAgIGNoYXIqIG5hbWU7Cit9OworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2NlZHVyZURlY2wKKyNkZWZpbmUgVFNG
X0RFRklORV9TVFJVQ1RfREVGX1Byb2NlZHVyZURlY2wKK3N0cnVjdCBQcm9jZWR1cmVEZWNsX3Mg
eworICAgIGNoYXIqIG5hbWU7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJV
Q1RfREVGX1ZhcmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVG
X1ZhcmlhYmxlRGVjbF9fYXJyYXkKK3N0cnVjdCBWYXJpYWJsZURlY2xfX2FycmF5X3MgeworICAg
IFZhcmlhYmxlRGVjbF90ICpkYXRhOworICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5l
IFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fYXJyYXkKK3N0cnVjdCBJbnN0cnVj
dGlvbl9fYXJyYXlfcyB7CisgICAgSW5zdHJ1Y3Rpb25fdCAqZGF0YTsKKyAgICB1aW50MzJfdCBs
ZW47Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RlYnVnRGF0
YV9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RlYnVnRGF0YV9fYXJyYXkK
K3N0cnVjdCBEZWJ1Z0RhdGFfX2FycmF5X3MgeworICAgIERlYnVnRGF0YV90ICpkYXRhOworICAg
IHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9E
RUZfUHJvY2VkdXJlRGVmbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfUHJvY2VkdXJl
RGVmbgorc3RydWN0IFByb2NlZHVyZURlZm5fcyB7CisgICAgY2hhciogbmFtZTsKKyAgICBQcm9j
ZWR1cmVEZWZuX192YXJpYWJsZXNfdCB2YXJpYWJsZXM7CisgICAgUHJvY2VkdXJlRGVmbl9fY29k
ZV90IGNvZGU7CisgICAgUHJvY2VkdXJlRGVmbl9fZGVidWdfdCBkZWJ1ZzsKK307CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfUHJvZ3JhbUVsZW1lbnQKKyNkZWZpbmUg
VFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2dyYW1FbGVtZW50CitzdHJ1Y3QgUHJvZ3JhbUVsZW1l
bnRfcyB7CisgICAgdHNmX2Nob2ljZV90IHZhbHVlOworICAgIHVuaW9uIHsKKyAgICAgICAgUHJv
Y2VkdXJlRGVjbF90IHByb2NlZHVyZURlY2w7CisgICAgICAgIFByb2NlZHVyZURlZm5fdCBwcm9j
ZWR1cmVEZWZuOworICAgIH0gdTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NU
UlVDVF9ERUZfUHJvZ3JhbUVsZW1lbnRfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNU
X0RFRl9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKK3N0cnVjdCBQcm9ncmFtRWxlbWVudF9fYXJyYXlf
cyB7CisgICAgUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YTsKKyAgICB1aW50MzJfdCBsZW47Cit9Owor
I2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2dyYW0KKyNkZWZpbmUg
VFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2dyYW0KK3N0cnVjdCBQcm9ncmFtX3MgeworICAgIFBy
b2dyYW1fX2dsb2JhbHNfdCBnbG9iYWxzOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfQ0hPSUNFX0RFRlNfSW5zdHJ1Y3Rpb24KKyNkZWZpbmUgVFNGX0RFRklORV9DSE9JQ0VfREVG
U19JbnN0cnVjdGlvbgorI2RlZmluZSBJbnN0cnVjdGlvbl9fbm9wIDAKKyNkZWZpbmUgSW5zdHJ1
Y3Rpb25fX21vdiAxCisjZGVmaW5lIEluc3RydWN0aW9uX19hZGQgMgorI2RlZmluZSBJbnN0cnVj
dGlvbl9fYWxsb2MgMworI2RlZmluZSBJbnN0cnVjdGlvbl9fcmV0IDQKKyNkZWZpbmUgSW5zdHJ1
Y3Rpb25fX2p1bXAgNQorI2RlZmluZSBJbnN0cnVjdGlvbl9fY2FsbCA2CisjZGVmaW5lIEluc3Ry
dWN0aW9uX19icmFuY2haZXJvIDcKK3N0YXRpYyBUU0ZfaW5saW5lIGNvbnN0IGNoYXIgKkluc3Ry
dWN0aW9uX190b19zdHIodHNmX2Nob2ljZV90IHZhbHVlKSB7CisgICAgc3dpdGNoICh2YWx1ZSkg
eworICAgIGNhc2UgMDogcmV0dXJuICJub3AiOworICAgIGNhc2UgMTogcmV0dXJuICJtb3YiOwor
ICAgIGNhc2UgMjogcmV0dXJuICJhZGQiOworICAgIGNhc2UgMzogcmV0dXJuICJhbGxvYyI7Cisg
ICAgY2FzZSA0OiByZXR1cm4gInJldCI7CisgICAgY2FzZSA1OiByZXR1cm4gImp1bXAiOworICAg
IGNhc2UgNjogcmV0dXJuICJjYWxsIjsKKyAgICBjYXNlIDc6IHJldHVybiAiYnJhbmNoWmVybyI7
CisgICAgY2FzZSBVSU5UMzJfTUFYOiByZXR1cm4gIjx1bmtub3duPiI7CisgICAgZGVmYXVsdDog
YWJvcnQoKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0NIT0lDRV9E
RUZTX1Byb2dyYW1FbGVtZW50CisjZGVmaW5lIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfUHJvZ3Jh
bUVsZW1lbnQKKyNkZWZpbmUgUHJvZ3JhbUVsZW1lbnRfX3Byb2NlZHVyZURlY2wgMAorI2RlZmlu
ZSBQcm9ncmFtRWxlbWVudF9fcHJvY2VkdXJlRGVmbiAxCitzdGF0aWMgVFNGX2lubGluZSBjb25z
dCBjaGFyICpQcm9ncmFtRWxlbWVudF9fdG9fc3RyKHRzZl9jaG9pY2VfdCB2YWx1ZSkgeworICAg
IHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlIDA6IHJldHVybiAicHJvY2VkdXJlRGVjbCI7Cisg
ICAgY2FzZSAxOiByZXR1cm4gInByb2NlZHVyZURlZm4iOworICAgIGNhc2UgVUlOVDMyX01BWDog
cmV0dXJuICI8dW5rbm93bj4iOworICAgIGRlZmF1bHQ6IGFib3J0KCk7CisgICAgfQorfQorI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19PcGVyYW5kCisjZGVmaW5lIFRTRl9ERUZJ
TkVfRlVOQ1NfT3BlcmFuZAordHNmX3R5cGVfdCAqT3BlcmFuZF9fZ2V0X3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgT3BlcmFuZF9fZGVz
dHJ1Y3QoT3BlcmFuZF90ICpkYXRhKSB7IH0KK3RzZl9nZW5ydHJfdCAqT3BlcmFuZF9fZ2V0X2dl
bmVyYXRvcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX3BhcnNlcl90ICpPcGVy
YW5kX19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNG
X2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX09wZXJhbmQodHNmX3R5cGVfdCAqdHlwZSkg
eyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBPcGVyYW5kX19nZXRfdHlwZSgpKTsg
fQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBidWZfaW5zdGFuY2VvZl9fT3BlcmFuZCh0
c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgT3Bl
cmFuZF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqT3Bl
cmFuZF9fZ2VuZXJhdGUodm9pZCAqZGF0YSkgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0
ZShPcGVyYW5kX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYnVmZmVyX3QgKk9wZXJhbmRfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lv
bikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihPcGVyYW5kX19nZXRfZ2VuZXJh
dG9yKCksIGRhdGEsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIE9wZXJhbmRfdCAqT3Bl
cmFuZF9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChPcGVyYW5kX3QqKXRzZl9w
YXJzZXJfcGFyc2UoT3BlcmFuZF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNGX2lu
bGluZSBPcGVyYW5kX3QgKk9wZXJhbmRfX3BhcnNlX2luKHRzZl9idWZmZXJfdCAqYnVmLCB2b2lk
ICpyZWdpb24pIHsgcmV0dXJuIChPcGVyYW5kX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4oT3BlcmFu
ZF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9i
b29sX3QgT3BlcmFuZF9fcGFyc2VfaW50byh0c2ZfYnVmZmVyX3QgKmJ1ZiwgT3BlcmFuZF90ICpk
YXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhPcGVyYW5k
X19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBPcGVyYW5k
X193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgT3BlcmFuZF90ICpkYXRhKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOworT3BlcmFuZF90ICpPcGVyYW5kX19yZWFkKHRzZl9zdHJl
YW1fZmlsZV9pbnB1dF90ICppbnApIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfYm9vbF90
IE9wZXJhbmRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBPcGVyYW5k
X3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfRlVOQ1NfVHlwZQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX1R5cGUKK3RzZl90
eXBlX3QgKlR5cGVfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lk
IFR5cGVfX2Rlc3RydWN0KFR5cGVfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKlR5cGVfX2dldF9n
ZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqVHlw
ZV9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9p
bmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19UeXBlKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0
dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgVHlwZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX1R5cGUodHNmX2J1ZmZlcl90
ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIFR5cGVfX2dldF90eXBl
KCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlR5cGVfX2dlbmVyYXRlKHZv
aWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUoVHlwZV9fZ2V0X2dlbmVy
YXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpUeXBlX19n
ZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0
b3JfZ2VuZXJhdGVfaW4oVHlwZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9Citz
dGF0aWMgVFNGX2lubGluZSBUeXBlX3QgKlR5cGVfX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7
IHJldHVybiAoVHlwZV90Kil0c2ZfcGFyc2VyX3BhcnNlKFR5cGVfX2dldF9wYXJzZXIoKSwgYnVm
KTsgfQorc3RhdGljIFRTRl9pbmxpbmUgVHlwZV90ICpUeXBlX19wYXJzZV9pbih0c2ZfYnVmZmVy
X3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoVHlwZV90Kil0c2ZfcGFyc2VyX3BhcnNl
X2luKFR5cGVfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYm9vbF90IFR5cGVfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIFR5cGVfdCAq
ZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oVHlwZV9f
Z2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgVHlwZV9fd3Jp
dGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFR5cGVfdCAqZGF0YSkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK1R5cGVfdCAqVHlwZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
dCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBUeXBlX19yZWFkX2lu
dG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgVHlwZV90ICpyZXN1bHQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0NvZGVP
ZmZzZXQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19Db2RlT2Zmc2V0Cit0c2ZfdHlwZV90ICpD
b2RlT2Zmc2V0X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGlj
IFRTRl9pbmxpbmUgdm9pZCBDb2RlT2Zmc2V0X19kZXN0cnVjdChDb2RlT2Zmc2V0X3QgKmRhdGEp
IHsgfQordHNmX2dlbnJ0cl90ICpDb2RlT2Zmc2V0X19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkNvZGVPZmZzZXRfX2dldF9wYXJzZXIo
dm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29s
X3QgaW5zdGFuY2VvZl9fQ29kZU9mZnNldCh0c2ZfdHlwZV90ICp0eXBlKSB7IHJldHVybiB0c2Zf
dHlwZV9pbnN0YW5jZW9mKHR5cGUsIENvZGVPZmZzZXRfX2dldF90eXBlKCkpOyB9CitzdGF0aWMg
VFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19Db2RlT2Zmc2V0KHRzZl9idWZm
ZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBDb2RlT2Zmc2V0
X19nZXRfdHlwZSgpKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpDb2RlT2Zm
c2V0X19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRl
KENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5l
IHRzZl9idWZmZXJfdCAqQ29kZU9mZnNldF9fZ2VuZXJhdGVfaW4odm9pZCAqZGF0YSwgdm9pZCAq
cmVnaW9uKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2luKENvZGVPZmZzZXRfX2dl
dF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgQ29kZU9m
ZnNldF90ICpDb2RlT2Zmc2V0X19wYXJzZSh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gKENv
ZGVPZmZzZXRfdCopdHNmX3BhcnNlcl9wYXJzZShDb2RlT2Zmc2V0X19nZXRfcGFyc2VyKCksIGJ1
Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIENvZGVPZmZzZXRfdCAqQ29kZU9mZnNldF9fcGFyc2Vf
aW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKENvZGVPZmZzZXRf
dCopdHNmX3BhcnNlcl9wYXJzZV9pbihDb2RlT2Zmc2V0X19nZXRfcGFyc2VyKCksIGJ1ZiwgcmVn
aW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBDb2RlT2Zmc2V0X19wYXJzZV9p
bnRvKHRzZl9idWZmZXJfdCAqYnVmLCBDb2RlT2Zmc2V0X3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikg
eyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKENvZGVPZmZzZXRfX2dldF9wYXJzZXIoKSwg
YnVmLCBkYXRhLCByZWdpb24pOyB9Cit0c2ZfYm9vbF90IENvZGVPZmZzZXRfX3dyaXRlKHRzZl9z
dHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBDb2RlT2Zmc2V0X3QgKmRhdGEpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CitDb2RlT2Zmc2V0X3QgKkNvZGVPZmZzZXRfX3JlYWQodHNmX3N0cmVhbV9m
aWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgQ29k
ZU9mZnNldF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIENvZGVPZmZz
ZXRfdCAqcmVzdWx0KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9GVU5DU19WYXJpYWJsZURlY2wKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19W
YXJpYWJsZURlY2wKK3RzZl90eXBlX3QgKlZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgVmFyaWFibGVEZWNsX19kZXN0cnVjdChWYXJpYWJs
ZURlY2xfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKlZhcmlhYmxlRGVjbF9fZ2V0X2dlbmVyYXRv
cih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX3BhcnNlcl90ICpWYXJpYWJsZURl
Y2xfX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0Zf
aW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fVmFyaWFibGVEZWNsKHRzZl90eXBlX3QgKnR5
cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgVmFyaWFibGVEZWNsX19nZXRf
dHlwZSgpKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBidWZfaW5zdGFuY2VvZl9f
VmFyaWFibGVEZWNsKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3Rh
bmNlb2YoYnVmLCBWYXJpYWJsZURlY2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYnVmZmVyX3QgKlZhcmlhYmxlRGVjbF9fZ2VuZXJhdGUodm9pZCAqZGF0YSkgeyByZXR1
cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZShWYXJpYWJsZURlY2xfX2dldF9nZW5lcmF0b3IoKSwg
ZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqVmFyaWFibGVEZWNsX19n
ZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0
b3JfZ2VuZXJhdGVfaW4oVmFyaWFibGVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEsIHJlZ2lv
bik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIFZhcmlhYmxlRGVjbF90ICpWYXJpYWJsZURlY2xfX3Bh
cnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAoVmFyaWFibGVEZWNsX3QqKXRzZl9wYXJz
ZXJfcGFyc2UoVmFyaWFibGVEZWNsX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0Zf
aW5saW5lIFZhcmlhYmxlRGVjbF90ICpWYXJpYWJsZURlY2xfX3BhcnNlX2luKHRzZl9idWZmZXJf
dCAqYnVmLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIChWYXJpYWJsZURlY2xfdCopdHNmX3BhcnNl
cl9wYXJzZV9pbihWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9Citz
dGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IFZhcmlhYmxlRGVjbF9fcGFyc2VfaW50byh0c2Zf
YnVmZmVyX3QgKmJ1ZiwgVmFyaWFibGVEZWNsX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1
cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYs
IGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgVmFyaWFibGVEZWNsX193cml0ZSh0c2Zfc3Ry
ZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgVmFyaWFibGVEZWNsX3QgKmRhdGEpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CitWYXJpYWJsZURlY2xfdCAqVmFyaWFibGVEZWNsX19yZWFkKHRzZl9zdHJl
YW1fZmlsZV9pbnB1dF90ICppbnApIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfYm9vbF90
IFZhcmlhYmxlRGVjbF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIFZh
cmlhYmxlRGVjbF90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uCisjZGVmaW5lIFRTRl9ERUZJTkVf
RlVOQ1NfSW5zdHJ1Y3Rpb24KK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19nZXRfdHlwZSh2b2lk
KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBJbnN0cnVjdGlvbl9fZGVzdHJ1Y3QoSW5z
dHJ1Y3Rpb25fdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKkluc3RydWN0aW9uX19nZXRfZ2VuZXJh
dG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkluc3RydWN0
aW9uX19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNG
X2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX0luc3RydWN0aW9uKHRzZl90eXBlX3QgKnR5
cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgSW5zdHJ1Y3Rpb25fX2dldF90
eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19J
bnN0cnVjdGlvbih0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5j
ZW9mKGJ1ZiwgSW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYnVmZmVyX3QgKkluc3RydWN0aW9uX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0
c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKEluc3RydWN0aW9uX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEp
OyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkluc3RydWN0aW9uX19nZW5lcmF0
ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2Vu
ZXJhdGVfaW4oSW5zdHJ1Y3Rpb25fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQor
c3RhdGljIFRTRl9pbmxpbmUgSW5zdHJ1Y3Rpb25fdCAqSW5zdHJ1Y3Rpb25fX3BhcnNlKHRzZl9i
dWZmZXJfdCAqYnVmKSB7IHJldHVybiAoSW5zdHJ1Y3Rpb25fdCopdHNmX3BhcnNlcl9wYXJzZShJ
bnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNGX2lubGluZSBJbnN0
cnVjdGlvbl90ICpJbnN0cnVjdGlvbl9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQg
KnJlZ2lvbikgeyByZXR1cm4gKEluc3RydWN0aW9uX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4oSW5z
dHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYm9vbF90IEluc3RydWN0aW9uX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBJ
bnN0cnVjdGlvbl90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFy
c2VfaW50byhJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0K
K3RzZl9ib29sX3QgSW5zdHJ1Y3Rpb25fX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAq
b3V0LCBJbnN0cnVjdGlvbl90ICpkYXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworSW5zdHJ1
Y3Rpb25fdCAqSW5zdHJ1Y3Rpb25fX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgSW5zdHJ1Y3Rpb25fX3JlYWRfaW50
byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBJbnN0cnVjdGlvbl90ICpyZXN1bHQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNT
X0RlYnVnRGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RlYnVnRGF0YQordHNmX3R5cGVf
dCAqRGVidWdEYXRhX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9p
ZCBEZWJ1Z0RhdGFfX2Rlc3RydWN0KERlYnVnRGF0YV90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAq
RGVidWdEYXRhX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0
c2ZfcGFyc2VyX3QgKkRlYnVnRGF0YV9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05P
SU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19EZWJ1Z0Rh
dGEodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBE
ZWJ1Z0RhdGFfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1
Zl9pbnN0YW5jZW9mX19EZWJ1Z0RhdGEodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9i
dWZmZXJfaW5zdGFuY2VvZihidWYsIERlYnVnRGF0YV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRGVidWdEYXRhX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7
IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERlYnVnRGF0YV9fZ2V0X2dlbmVyYXRvcigp
LCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpEZWJ1Z0RhdGFfX2dl
bmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRv
cl9nZW5lcmF0ZV9pbihEZWJ1Z0RhdGFfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsg
fQorc3RhdGljIFRTRl9pbmxpbmUgRGVidWdEYXRhX3QgKkRlYnVnRGF0YV9fcGFyc2UodHNmX2J1
ZmZlcl90ICpidWYpIHsgcmV0dXJuIChEZWJ1Z0RhdGFfdCopdHNmX3BhcnNlcl9wYXJzZShEZWJ1
Z0RhdGFfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRGVidWdEYXRh
X3QgKkRlYnVnRGF0YV9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikg
eyByZXR1cm4gKERlYnVnRGF0YV90Kil0c2ZfcGFyc2VyX3BhcnNlX2luKERlYnVnRGF0YV9fZ2V0
X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3Qg
RGVidWdEYXRhX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBEZWJ1Z0RhdGFfdCAqZGF0
YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oRGVidWdEYXRh
X19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEZWJ1Z0Rh
dGFfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEZWJ1Z0RhdGFfdCAqZGF0
YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK0RlYnVnRGF0YV90ICpEZWJ1Z0RhdGFfX3JlYWQo
dHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3Rz
Zl9ib29sX3QgRGVidWdEYXRhX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlu
cCwgRGVidWdEYXRhX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKyNlbmRpZgor
CisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJlCisjZGVmaW5lIFRTRl9ERUZJTkVf
RlVOQ1NfUHJvY2VkdXJlCit0c2ZfdHlwZV90ICpQcm9jZWR1cmVfX2dldF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIFByb2NlZHVyZV9fZGVzdHJ1Y3QoUHJvY2VkdXJl
X3QgKmRhdGEpOwordHNmX2dlbnJ0cl90ICpQcm9jZWR1cmVfX2dldF9nZW5lcmF0b3Iodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJlX19nZXRfcGFy
c2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2Zf
Ym9vbF90IGluc3RhbmNlb2ZfX1Byb2NlZHVyZSh0c2ZfdHlwZV90ICp0eXBlKSB7IHJldHVybiB0
c2ZfdHlwZV9pbnN0YW5jZW9mKHR5cGUsIFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX1Byb2NlZHVyZSh0c2ZfYnVm
ZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgUHJvY2VkdXJl
X19nZXRfdHlwZSgpKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpQcm9jZWR1
cmVfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUo
UHJvY2VkdXJlX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYnVmZmVyX3QgKlByb2NlZHVyZV9fZ2VuZXJhdGVfaW4odm9pZCAqZGF0YSwgdm9pZCAqcmVn
aW9uKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2luKFByb2NlZHVyZV9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSBQcm9jZWR1cmVf
dCAqUHJvY2VkdXJlX19wYXJzZSh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gKFByb2NlZHVy
ZV90Kil0c2ZfcGFyc2VyX3BhcnNlKFByb2NlZHVyZV9fZ2V0X3BhcnNlcigpLCBidWYpOyB9Citz
dGF0aWMgVFNGX2lubGluZSBQcm9jZWR1cmVfdCAqUHJvY2VkdXJlX19wYXJzZV9pbih0c2ZfYnVm
ZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoUHJvY2VkdXJlX3QqKXRzZl9wYXJz
ZXJfcGFyc2VfaW4oUHJvY2VkdXJlX19nZXRfcGFyc2VyKCksIGJ1ZiwgcmVnaW9uKTsgfQorc3Rh
dGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBQcm9jZWR1cmVfX3BhcnNlX2ludG8odHNmX2J1ZmZl
cl90ICpidWYsIFByb2NlZHVyZV90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9w
YXJzZXJfcGFyc2VfaW50byhQcm9jZWR1cmVfX2dldF9wYXJzZXIoKSwgYnVmLCBkYXRhLCByZWdp
b24pOyB9Cit0c2ZfYm9vbF90IFByb2NlZHVyZV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1
dF90ICpvdXQsIFByb2NlZHVyZV90ICpkYXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworUHJv
Y2VkdXJlX3QgKlByb2NlZHVyZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBQcm9jZWR1cmVfX3JlYWRfaW50byh0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBQcm9jZWR1cmVfdCAqcmVzdWx0KSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19Qcm9j
ZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJlRGVjbAordHNmX3R5
cGVfdCAqUHJvY2VkdXJlRGVjbF9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3ZvaWQgUHJvY2VkdXJlRGVjbF9fZGVzdHJ1Y3QoUHJvY2VkdXJlRGVjbF90ICpkYXRhKTsK
K3RzZl9nZW5ydHJfdCAqUHJvY2VkdXJlRGVjbF9fZ2V0X2dlbmVyYXRvcih2b2lkKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOwordHNmX3BhcnNlcl90ICpQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2Vy
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9v
bF90IGluc3RhbmNlb2ZfX1Byb2NlZHVyZURlY2wodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4g
dHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBQcm9jZWR1cmVEZWNsX19nZXRfdHlwZSgpKTsgfQor
c3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBidWZfaW5zdGFuY2VvZl9fUHJvY2VkdXJlRGVj
bCh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1Ziwg
UHJvY2VkdXJlRGVjbF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZm
ZXJfdCAqUHJvY2VkdXJlRGVjbF9fZ2VuZXJhdGUodm9pZCAqZGF0YSkgeyByZXR1cm4gdHNmX2dl
bmVyYXRvcl9nZW5lcmF0ZShQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9
CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlByb2NlZHVyZURlY2xfX2dlbmVyYXRl
X2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5l
cmF0ZV9pbihQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEsIHJlZ2lvbik7IH0K
K3N0YXRpYyBUU0ZfaW5saW5lIFByb2NlZHVyZURlY2xfdCAqUHJvY2VkdXJlRGVjbF9fcGFyc2Uo
dHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChQcm9jZWR1cmVEZWNsX3QqKXRzZl9wYXJzZXJf
cGFyc2UoUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNGX2lu
bGluZSBQcm9jZWR1cmVEZWNsX3QgKlByb2NlZHVyZURlY2xfX3BhcnNlX2luKHRzZl9idWZmZXJf
dCAqYnVmLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIChQcm9jZWR1cmVEZWNsX3QqKXRzZl9wYXJz
ZXJfcGFyc2VfaW4oUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0K
K3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgUHJvY2VkdXJlRGVjbF9fcGFyc2VfaW50byh0
c2ZfYnVmZmVyX3QgKmJ1ZiwgUHJvY2VkdXJlRGVjbF90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsg
cmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2VyKCks
IGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBQcm9jZWR1cmVEZWNsX193cml0ZSh0
c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgUHJvY2VkdXJlRGVjbF90ICpkYXRhKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOworUHJvY2VkdXJlRGVjbF90ICpQcm9jZWR1cmVEZWNsX19yZWFk
KHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnApIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0
c2ZfYm9vbF90IFByb2NlZHVyZURlY2xfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
dCAqaW5wLCBQcm9jZWR1cmVEZWNsX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJlRGVmbgorI2RlZmlu
ZSBUU0ZfREVGSU5FX0ZVTkNTX1Byb2NlZHVyZURlZm4KK3RzZl90eXBlX3QgKlByb2NlZHVyZURl
Zm5fX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIFByb2NlZHVy
ZURlZm5fX2Rlc3RydWN0KFByb2NlZHVyZURlZm5fdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKlBy
b2NlZHVyZURlZm5fX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19Q
cm9jZWR1cmVEZWZuKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNl
b2YodHlwZSwgUHJvY2VkdXJlRGVmbl9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5l
IHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX1Byb2NlZHVyZURlZm4odHNmX2J1ZmZlcl90ICpi
dWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIFByb2NlZHVyZURlZm5fX2dl
dF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlByb2NlZHVyZURl
Zm5fX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUo
UHJvY2VkdXJlRGVmbl9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxp
bmUgdHNmX2J1ZmZlcl90ICpQcm9jZWR1cmVEZWZuX19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2
b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4oUHJvY2VkdXJl
RGVmbl9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSBQcm9jZWR1cmVEZWZuX3QgKlByb2NlZHVyZURlZm5fX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVm
KSB7IHJldHVybiAoUHJvY2VkdXJlRGVmbl90Kil0c2ZfcGFyc2VyX3BhcnNlKFByb2NlZHVyZURl
Zm5fX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgUHJvY2VkdXJlRGVm
bl90ICpQcm9jZWR1cmVEZWZuX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVn
aW9uKSB7IHJldHVybiAoUHJvY2VkdXJlRGVmbl90Kil0c2ZfcGFyc2VyX3BhcnNlX2luKFByb2Nl
ZHVyZURlZm5fX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYm9vbF90IFByb2NlZHVyZURlZm5fX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYs
IFByb2NlZHVyZURlZm5fdCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFyc2Vy
X3BhcnNlX2ludG8oUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lv
bik7IH0KK3RzZl9ib29sX3QgUHJvY2VkdXJlRGVmbl9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291
dHB1dF90ICpvdXQsIFByb2NlZHVyZURlZm5fdCAqZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK1Byb2NlZHVyZURlZm5fdCAqUHJvY2VkdXJlRGVmbl9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVf
aW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBQcm9jZWR1
cmVEZWZuX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgUHJvY2VkdXJl
RGVmbl90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRl
ZiBUU0ZfREVGSU5FX0ZVTkNTX1Byb2dyYW1FbGVtZW50CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVO
Q1NfUHJvZ3JhbUVsZW1lbnQKK3RzZl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19nZXRfdHlwZSh2
b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBQcm9ncmFtRWxlbWVudF9fZGVzdHJ1
Y3QoUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKlByb2dyYW1FbGVtZW50
X19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2Vy
X3QgKlByb2dyYW1FbGVtZW50X19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJ
TkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX1Byb2dyYW1FbGVt
ZW50KHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwg
UHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9v
bF90IGJ1Zl9pbnN0YW5jZW9mX19Qcm9ncmFtRWxlbWVudCh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyBy
ZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBl
KCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlByb2dyYW1FbGVtZW50X19n
ZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKFByb2dy
YW1FbGVtZW50X19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYnVmZmVyX3QgKlByb2dyYW1FbGVtZW50X19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lk
ICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4oUHJvZ3JhbUVsZW1l
bnRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUg
UHJvZ3JhbUVsZW1lbnRfdCAqUHJvZ3JhbUVsZW1lbnRfX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVm
KSB7IHJldHVybiAoUHJvZ3JhbUVsZW1lbnRfdCopdHNmX3BhcnNlcl9wYXJzZShQcm9ncmFtRWxl
bWVudF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNGX2lubGluZSBQcm9ncmFtRWxl
bWVudF90ICpQcm9ncmFtRWxlbWVudF9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQg
KnJlZ2lvbikgeyByZXR1cm4gKFByb2dyYW1FbGVtZW50X3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4o
UHJvZ3JhbUVsZW1lbnRfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNG
X2lubGluZSB0c2ZfYm9vbF90IFByb2dyYW1FbGVtZW50X19wYXJzZV9pbnRvKHRzZl9idWZmZXJf
dCAqYnVmLCBQcm9ncmFtRWxlbWVudF90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRz
Zl9wYXJzZXJfcGFyc2VfaW50byhQcm9ncmFtRWxlbWVudF9fZ2V0X3BhcnNlcigpLCBidWYsIGRh
dGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgUHJvZ3JhbUVsZW1lbnRfX3dyaXRlKHRzZl9zdHJl
YW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBQcm9ncmFtRWxlbWVudF90ICpkYXRhKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworUHJvZ3JhbUVsZW1lbnRfdCAqUHJvZ3JhbUVsZW1lbnRfX3JlYWQodHNm
X3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9i
b29sX3QgUHJvZ3JhbUVsZW1lbnRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAq
aW5wLCBQcm9ncmFtRWxlbWVudF90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX1Byb2dyYW0KKyNkZWZpbmUgVFNGX0RF
RklORV9GVU5DU19Qcm9ncmFtCit0c2ZfdHlwZV90ICpQcm9ncmFtX19nZXRfdHlwZSh2b2lkKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBQcm9ncmFtX19kZXN0cnVjdChQcm9ncmFtX3Qg
KmRhdGEpOwordHNmX2dlbnJ0cl90ICpQcm9ncmFtX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKlByb2dyYW1fX2dldF9wYXJzZXIodm9p
ZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3Qg
aW5zdGFuY2VvZl9fUHJvZ3JhbSh0c2ZfdHlwZV90ICp0eXBlKSB7IHJldHVybiB0c2ZfdHlwZV9p
bnN0YW5jZW9mKHR5cGUsIFByb2dyYW1fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19Qcm9ncmFtKHRzZl9idWZmZXJfdCAqYnVmKSB7
IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBQcm9ncmFtX19nZXRfdHlwZSgpKTsg
fQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpQcm9ncmFtX19nZW5lcmF0ZSh2b2lk
ICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKFByb2dyYW1fX2dldF9nZW5l
cmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqUHJvZ3Jh
bV9fZ2VuZXJhdGVfaW4odm9pZCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfZ2Vu
ZXJhdG9yX2dlbmVyYXRlX2luKFByb2dyYW1fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9u
KTsgfQorc3RhdGljIFRTRl9pbmxpbmUgUHJvZ3JhbV90ICpQcm9ncmFtX19wYXJzZSh0c2ZfYnVm
ZmVyX3QgKmJ1ZikgeyByZXR1cm4gKFByb2dyYW1fdCopdHNmX3BhcnNlcl9wYXJzZShQcm9ncmFt
X19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIFByb2dyYW1fdCAqUHJv
Z3JhbV9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4g
KFByb2dyYW1fdCopdHNmX3BhcnNlcl9wYXJzZV9pbihQcm9ncmFtX19nZXRfcGFyc2VyKCksIGJ1
ZiwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBQcm9ncmFtX19wYXJz
ZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBQcm9ncmFtX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikg
eyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKFByb2dyYW1fX2dldF9wYXJzZXIoKSwgYnVm
LCBkYXRhLCByZWdpb24pOyB9Cit0c2ZfYm9vbF90IFByb2dyYW1fX3dyaXRlKHRzZl9zdHJlYW1f
ZmlsZV9vdXRwdXRfdCAqb3V0LCBQcm9ncmFtX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJ
TkU7CitQcm9ncmFtX3QgKlByb2dyYW1fX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlu
cCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgUHJvZ3JhbV9fcmVhZF9pbnRv
KHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIFByb2dyYW1fdCAqcmVzdWx0KSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19JbnN0
cnVjdGlvbl9fbW92CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX21vdgor
dHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX21vdl9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgSW5zdHJ1Y3Rpb25fX21vdl9fZGVz
dHJ1Y3QoSW5zdHJ1Y3Rpb25fX21vdl90ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2FkZAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNT
X0luc3RydWN0aW9uX19hZGQKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19hZGRfX2dldF90eXBl
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIElu
c3RydWN0aW9uX19hZGRfX2Rlc3RydWN0KEluc3RydWN0aW9uX19hZGRfdCAqZGF0YSkgeyB9Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19hbGxvYworI2Rl
ZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19hbGxvYwordHNmX3R5cGVfdCAqSW5z
dHJ1Y3Rpb25fX2FsbG9jX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
dm9pZCBJbnN0cnVjdGlvbl9fYWxsb2NfX2Rlc3RydWN0KEluc3RydWN0aW9uX19hbGxvY190ICpk
YXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX3Jl
dAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19yZXQKK3RzZl90eXBlX3Qg
Kkluc3RydWN0aW9uX19yZXRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7
CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIEluc3RydWN0aW9uX19yZXRfX2Rlc3RydWN0KEluc3Ry
dWN0aW9uX19yZXRfdCAqZGF0YSkgeyB9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZV
TkNTX0luc3RydWN0aW9uX19qdW1wCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rp
b25fX2p1bXAKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19qdW1wX19nZXRfdHlwZSh2b2lkKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCBJbnN0cnVjdGlv
bl9fanVtcF9fZGVzdHJ1Y3QoSW5zdHJ1Y3Rpb25fX2p1bXBfdCAqZGF0YSkgeyB9CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19jYWxsCisjZGVmaW5lIFRT
Rl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2NhbGwKK3RzZl90eXBlX3QgKkluc3RydWN0aW9u
X19jYWxsX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBJbnN0
cnVjdGlvbl9fY2FsbF9fZGVzdHJ1Y3QoSW5zdHJ1Y3Rpb25fX2NhbGxfdCAqZGF0YSk7CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19jYWxsX19hcmdzCisj
ZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3MKK3RzZl90eXBl
X3QgKkluc3RydWN0aW9uX19jYWxsX19hcmdzX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOwordm9pZCBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fZGVzdHJ1Y3QoSW5zdHJ1
Y3Rpb25fX2NhbGxfX2FyZ3NfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X0ZVTkNTX2ludGVnZXJfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfaW50ZWdlcl9f
YXJyYXkKKyNkZWZpbmUgaW50ZWdlcl9fYXJyYXlfX2dldF90eXBlIGludGVnZXJfX2FycmF5TEJQ
MTcweEVpWkltcnV6WjBpUDl0XzJDT1hOallfdXlZckFrMXBmX19nZXRfdHlwZQorI2RlZmluZSBp
bnRlZ2VyX19hcnJheV9fZGVzdHJ1Y3QgaW50ZWdlcl9fYXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQ
OXRfMkNPWE5qWV91eVlyQWsxcGZfX2Rlc3RydWN0Cit0c2ZfdHlwZV90ICppbnRlZ2VyX19hcnJh
eV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgaW50ZWdlcl9f
YXJyYXlfX2Rlc3RydWN0KGludGVnZXJfX2FycmF5X3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9GVU5DU19JbnN0cnVjdGlvbl9fYnJhbmNoWmVybworI2RlZmluZSBUU0Zf
REVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19icmFuY2haZXJvCit0c2ZfdHlwZV90ICpJbnN0cnVj
dGlvbl9fYnJhbmNoWmVyb19fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2Rlc3RydWN0
KEluc3RydWN0aW9uX19icmFuY2haZXJvX3QgKmRhdGEpIHsgfQorI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9GVU5DU19Qcm9jZWR1cmVEZWZuX192YXJpYWJsZXMKKyNkZWZpbmUgVFNGX0RF
RklORV9GVU5DU19Qcm9jZWR1cmVEZWZuX192YXJpYWJsZXMKK3RzZl90eXBlX3QgKlByb2NlZHVy
ZURlZm5fX3ZhcmlhYmxlc19fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3ZvaWQgUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX19kZXN0cnVjdChQcm9jZWR1cmVEZWZuX192
YXJpYWJsZXNfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX1Zh
cmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19WYXJpYWJsZURlY2xf
X2FycmF5CisjZGVmaW5lIFZhcmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlIFZhcmlhYmxlRGVj
bF9fYXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVlyQWsxcGZfX2dldF90eXBl
CisjZGVmaW5lIFZhcmlhYmxlRGVjbF9fYXJyYXlfX2Rlc3RydWN0IFZhcmlhYmxlRGVjbF9fYXJy
YXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVlyQWsxcGZfX2Rlc3RydWN0Cit0c2Zf
dHlwZV90ICpWYXJpYWJsZURlY2xfX2FycmF5X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOwordm9pZCBWYXJpYWJsZURlY2xfX2FycmF5X19kZXN0cnVjdChWYXJpYWJsZURl
Y2xfX2FycmF5X3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19Q
cm9jZWR1cmVEZWZuX19jb2RlCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJlRGVm
bl9fY29kZQordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9fY29kZV9fZ2V0X3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVzdHJ1
Y3QoUHJvY2VkdXJlRGVmbl9fY29kZV90ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9E
RUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1Nf
SW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIEluc3RydWN0aW9uX19hcnJheV9fZ2V0X3R5cGUg
SW5zdHJ1Y3Rpb25fX2FycmF5TEJQMTcweEVpWkltcnV6WjBpUDl0XzJDT1hOallfdXlZckFrMXBm
X19nZXRfdHlwZQorI2RlZmluZSBJbnN0cnVjdGlvbl9fYXJyYXlfX2Rlc3RydWN0IEluc3RydWN0
aW9uX19hcnJheUxCUDE3MHhFaVpJbXJ1elowaVA5dF8yQ09YTmpZX3V5WXJBazFwZl9fZGVzdHJ1
Y3QKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19hcnJheV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKK3ZvaWQgSW5zdHJ1Y3Rpb25fX2FycmF5X19kZXN0cnVjdChJbnN0
cnVjdGlvbl9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZV
TkNTX1Byb2NlZHVyZURlZm5fX2RlYnVnCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2Vk
dXJlRGVmbl9fZGVidWcKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2RlYnVnX19nZXRfdHlw
ZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBQcm9jZWR1cmVEZWZuX19kZWJ1
Z19fZGVzdHJ1Y3QoUHJvY2VkdXJlRGVmbl9fZGVidWdfdCAqZGF0YSk7CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RlYnVnRGF0YV9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklO
RV9GVU5DU19EZWJ1Z0RhdGFfX2FycmF5CisjZGVmaW5lIERlYnVnRGF0YV9fYXJyYXlfX2dldF90
eXBlIERlYnVnRGF0YV9fYXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVlyQWsx
cGZfX2dldF90eXBlCisjZGVmaW5lIERlYnVnRGF0YV9fYXJyYXlfX2Rlc3RydWN0IERlYnVnRGF0
YV9fYXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVlyQWsxcGZfX2Rlc3RydWN0
Cit0c2ZfdHlwZV90ICpEZWJ1Z0RhdGFfX2FycmF5X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOwordm9pZCBEZWJ1Z0RhdGFfX2FycmF5X19kZXN0cnVjdChEZWJ1Z0RhdGFf
X2FycmF5X3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19Qcm9n
cmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvZ3JhbV9fZ2xvYmFscwor
dHNmX3R5cGVfdCAqUHJvZ3JhbV9fZ2xvYmFsc19fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK3ZvaWQgUHJvZ3JhbV9fZ2xvYmFsc19fZGVzdHJ1Y3QoUHJvZ3JhbV9fZ2xv
YmFsc190ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfUHJvZ3Jh
bUVsZW1lbnRfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvZ3JhbUVsZW1lbnRf
X2FycmF5CisjZGVmaW5lIFByb2dyYW1FbGVtZW50X19hcnJheV9fZ2V0X3R5cGUgUHJvZ3JhbUVs
ZW1lbnRfX2FycmF5TEJQMTcweEVpWkltcnV6WjBpUDl0XzJDT1hOallfdXlZckFrMXBmX19nZXRf
dHlwZQorI2RlZmluZSBQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2Rlc3RydWN0IFByb2dyYW1FbGVt
ZW50X19hcnJheUxCUDE3MHhFaVpJbXJ1elowaVA5dF8yQ09YTmpZX3V5WXJBazFwZl9fZGVzdHJ1
Y3QKK3RzZl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19hcnJheV9fZ2V0X3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19kZXN0cnVj
dChQcm9ncmFtRWxlbWVudF9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9OworI2VuZGlmCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfaXJfZGlmZmVyZW50LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pcl9kaWZmZXJlbnQuYwkobm9uZXhpc3RlbnQpCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyX2RpZmZlcmVudC5j
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMyOCBAQAorLyogLi90ZXN0cy9zdWl0ZXMvdG95
aXIvdHNmX2lyX2RpZmZlcmVudC5jIC0tIGdlbmVyYXRlZCBieSB0c2ZfZGVmaW5lIGZyb20gLi90
ZXN0cy9zdWl0ZXMvdG95aXIvdHNmX2lyX2RpZmZlcmVudC50ICovCisKKyNpbmNsdWRlICJ0c2Zf
aXJfZGlmZmVyZW50LmgiCisjaW5jbHVkZSAidHNmX2RlZmluZV9oZWxwZXJzLmgiCisjaW5jbHVk
ZSA8c3RkaW8uaD4KKworc3RhdGljIHRzZl90eXBlX3QgKkRPcGVyYW5kX19idWlsZF90eXBlKHZv
aWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqRFR5cGVfX2J1
aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90
ICpEQ29kZU9mZnNldF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
c3RhdGljIHRzZl90eXBlX3QgKkRWYXJpYWJsZURlY2xfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2J1aWxk
X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpE
UHJvY2VkdXJlX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0
aWMgdHNmX3R5cGVfdCAqRFByb2NlZHVyZURlY2xfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpEUHJvY2VkdXJlRGVmbl9fYnVpbGRf
dHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRQ
cm9ncmFtRWxlbWVudF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
c3RhdGljIHRzZl90eXBlX3QgKkRQcm9ncmFtX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19tb3ZfX2J1aWxk
X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpE
SW5zdHJ1Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIHRzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUodm9p
ZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rp
b25fX3JldF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGlj
IHRzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fanVtcF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fY2FsbF9f
YnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBl
X3QgKkRJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKmludDE2X19hcnJheV9fYnVpbGRfdHlw
ZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRJbnN0
cnVjdGlvbl9fYnJhbmNoWmVyb19fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2J1aWxk
X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpE
VmFyaWFibGVEZWNsX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX19jb2RlX19idWlsZF90eXBl
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqREluc3Ry
dWN0aW9uX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
c3RhdGljIHRzZl90eXBlX3QgKkRQcm9ncmFtX19nbG9iYWxzX19idWlsZF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqRFByb2dyYW1FbGVtZW50
X19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworCit0c2Zf
dHlwZV90ICpET3BlcmFuZF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVz
dWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FvZShUU0ZfVEtfSU5UMTYpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRUeXBlX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2Zf
dHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYW9lKFRTRl9US19TVFJJTkcpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRDb2RlT2Zmc2V0X19idWlsZF90eXBl
KHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYW9lKFRT
Rl9US19JTlQxNik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqRFZhcmlh
YmxlRGVjbF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNm
X3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2FvZShz
aXplb2YoRFZhcmlhYmxlRGVjbF90KSwgKHZvaWQoKikodm9pZCopKURWYXJpYWJsZURlY2xfX2Rl
c3RydWN0KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1
cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJ0eXBlIiwgRFR5cGVfX2dldF90eXBlLCB0
c2Zfb2Zmc2V0b2YoRFZhcmlhYmxlRGVjbF90LCB0eXBlKSk7CisgICAgdHNmX3R5cGVfc2V0X25h
bWVfYW9lKCZyZXN1bHQsICJEVmFyaWFibGVEZWNsIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2Zf
dHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfY2hvaWNlX3dpdGhfbmF0aXZlX21hcF9h
b2UoJnJlc3VsdCwgdHNmX3RydWUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fdCwgdmFsdWUp
LCB0c2Zfb2Zmc2V0b2YoREluc3RydWN0aW9uX3QsIHUpLCBzaXplb2YoREluc3RydWN0aW9uX3Qp
KTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV9hb2UoJnJlc3VsdCwgIm5v
cCIsIFRTRl9US19WT0lEKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJh
Y2tfYW5kX2R1cF9hb2UoJnJlc3VsdCwgIm1vdiIsIERJbnN0cnVjdGlvbl9fbW92X19nZXRfdHlw
ZSk7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfYW9l
KCZyZXN1bHQsICJhZGQiLCBESW5zdHJ1Y3Rpb25fX2FkZF9fZ2V0X3R5cGUpOworICAgIHRzZl9j
aG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0LCAiYWxs
b2MiLCBESW5zdHJ1Y3Rpb25fX2FsbG9jX19nZXRfdHlwZSk7CisgICAgdHNmX2Nob2ljZV90eXBl
X2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfYW9lKCZyZXN1bHQsICJyZXQiLCBESW5zdHJ1
Y3Rpb25fX3JldF9fZ2V0X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9j
YWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0LCAianVtcCIsIERJbnN0cnVjdGlvbl9fanVtcF9f
Z2V0X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRf
ZHVwX2FvZSgmcmVzdWx0LCAiY2FsbCIsIERJbnN0cnVjdGlvbl9fY2FsbF9fZ2V0X3R5cGUpOwor
ICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgmcmVz
dWx0LCAiYnJhbmNoWmVybyIsIERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fZ2V0X3R5cGUpOwor
ICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiREluc3RydWN0aW9uIik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19tb3ZfX2J1aWxk
X3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9z
dHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hb2Uoc2l6ZW9mKERJbnN0cnVjdGlvbl9fbW92X3QpKTsK
KyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25h
dGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJkZXN0IiwgRE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zm
c2V0b2YoREluc3RydWN0aW9uX19tb3ZfdCwgZGVzdCkpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9h
cHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwg
InNyYyIsIERPcGVyYW5kX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJbnN0cnVjdGlvbl9fbW92
X3QsIHNyYykpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiREluc3RydWN0
aW9uX19tb3YiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpESW5zdHJ1
Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0g
dHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplb2YoREluc3Ry
dWN0aW9uX19hZGRfdCkpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFj
a19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRlc3QiLCBET3BlcmFuZF9f
Z2V0X3R5cGUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fX2FkZF90LCBkZXN0KSk7CisgICAg
dHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVf
bWFwX2FvZSgmcmVzdWx0LCAic3JjIiwgRE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2Yo
REluc3RydWN0aW9uX19hZGRfdCwgc3JjKSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZy
ZXN1bHQsICJESW5zdHJ1Y3Rpb25fX2FkZCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rz
Zl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRz
Zl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6
ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKERJbnN0cnVjdGlvbl9fYWxsb2NfdCksICh2b2lk
KCopKHZvaWQqKSlESW5zdHJ1Y3Rpb25fX2FsbG9jX19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVj
dF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgm
cmVzdWx0LCAidHlwZSIsIERUeXBlX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJbnN0cnVjdGlv
bl9fYWxsb2NfdCwgdHlwZSkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAi
REluc3RydWN0aW9uX19hbGxvYyIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBl
X3QgKkRJbnN0cnVjdGlvbl9fcmV0X19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90
ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW9lKHNp
emVvZihESW5zdHJ1Y3Rpb25fX3JldF90KSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9m
cm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAic3JjIiwg
RE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoREluc3RydWN0aW9uX19yZXRfdCwgc3Jj
KSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJESW5zdHJ1Y3Rpb25fX3Jl
dCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9f
anVtcF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5
cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplb2YoREluc3RydWN0aW9u
X19qdW1wX3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5k
X2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJ0YXJnZXQiLCBEQ29kZU9mZnNldF9f
Z2V0X3R5cGUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fX2p1bXBfdCwgdGFyZ2V0KSk7Cisg
ICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJESW5zdHJ1Y3Rpb25fX2p1bXAiKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2NhbGxf
X2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2Ny
ZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKERJ
bnN0cnVjdGlvbl9fY2FsbF90KSwgKHZvaWQoKikodm9pZCopKURJbnN0cnVjdGlvbl9fY2FsbF9f
ZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRf
ZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRlc3QiLCBET3BlcmFuZF9fZ2V0X3R5
cGUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fX2NhbGxfdCwgZGVzdCkpOworICAgIHRzZl9z
dHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9h
b2UoJnJlc3VsdCwgImNhbGxlZSIsIERPcGVyYW5kX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJ
bnN0cnVjdGlvbl9fY2FsbF90LCBjYWxsZWUpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5k
X2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJhcmdz
IiwgREluc3RydWN0aW9uX19jYWxsX19hcmdzX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJbnN0
cnVjdGlvbl9fY2FsbF90LCBhcmdzKSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1
bHQsICJESW5zdHJ1Y3Rpb25fX2NhbGwiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2Zf
dHlwZV90ICppbnQxNl9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3Qg
KnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9hcnJheV9hb2UodHNmX3R5cGVfY3JlYXRlX2FvZShU
U0ZfVEtfSU5UMTYpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpESW5z
dHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3Qg
KnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hb2Uoc2l6
ZW9mKERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb190KSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2Fw
cGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAi
c3JjIiwgRE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoREluc3RydWN0aW9uX19icmFu
Y2haZXJvX3QsIHNyYykpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFj
a19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgInRhcmdldCIsIERDb2RlT2Zm
c2V0X19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb190LCB0
YXJnZXQpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRJbnN0cnVjdGlv
bl9fYnJhbmNoWmVybyIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRQ
cm9jZWR1cmVfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRz
Zl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uo
c2l6ZW9mKERQcm9jZWR1cmVfdCksICh2b2lkKCopKHZvaWQqKSlEUHJvY2VkdXJlX19kZXN0cnVj
dCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFw
X2FvZSgmcmVzdWx0LCAibmFtZSIsIFRTRl9US19TVFJJTkcsIHRzZl9vZmZzZXRvZihEUHJvY2Vk
dXJlX3QsIG5hbWUpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRQcm9j
ZWR1cmUiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpEUHJvY2VkdXJl
RGVjbF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5
cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2FvZShzaXpl
b2YoRFByb2NlZHVyZURlY2xfdCksICh2b2lkKCopKHZvaWQqKSlEUHJvY2VkdXJlRGVjbF9fZGVz
dHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZl
X21hcF9hb2UoJnJlc3VsdCwgIm5hbWUiLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zmc2V0b2YoRFBy
b2NlZHVyZURlY2xfdCwgbmFtZSkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0
LCAiRFByb2NlZHVyZURlY2wiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90
ICpEUHJvY2VkdXJlRGVmbl9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVz
dWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVj
dG9yX2FvZShzaXplb2YoRFByb2NlZHVyZURlZm5fdCksICh2b2lkKCopKHZvaWQqKSlEUHJvY2Vk
dXJlRGVmbl9fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZl
X3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgIm5hbWUiLCBUU0ZfVEtfU1RSSU5HLCB0c2Zf
b2Zmc2V0b2YoRFByb2NlZHVyZURlZm5fdCwgbmFtZSkpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9h
cHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwg
InZhcmlhYmxlcyIsIERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2dldF90eXBlLCB0c2Zfb2Zm
c2V0b2YoRFByb2NlZHVyZURlZm5fdCwgdmFyaWFibGVzKSk7CisgICAgdHNmX3N0cnVjdF90eXBl
X2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0
LCAiY29kZSIsIERQcm9jZWR1cmVEZWZuX19jb2RlX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERQ
cm9jZWR1cmVEZWZuX3QsIGNvZGUpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3Vs
dCwgIkRQcm9jZWR1cmVEZWZuIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVf
dCAqRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBl
X3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9hcnJheV9hb2UodHNmX3R5cGVfZHVwKERWYXJp
YWJsZURlY2xfX2dldF90eXBlKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlw
ZV90ICpESW5zdHJ1Y3Rpb25fX2FycmF5X19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlw
ZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJyYXlfYW9lKHRzZl90eXBlX2R1cChESW5z
dHJ1Y3Rpb25fX2dldF90eXBlKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlw
ZV90ICpEUHJvZ3JhbUVsZW1lbnRfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3Qg
KnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVz
dWx0LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKERQcm9ncmFtRWxlbWVudF90LCB2YWx1ZSksIHRz
Zl9vZmZzZXRvZihEUHJvZ3JhbUVsZW1lbnRfdCwgdSksIHNpemVvZihEUHJvZ3JhbUVsZW1lbnRf
dCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2Fv
ZSgmcmVzdWx0LCAicHJvY2VkdXJlRGVjbCIsIERQcm9jZWR1cmVEZWNsX19nZXRfdHlwZSk7Cisg
ICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfYW9lKCZyZXN1
bHQsICJwcm9jZWR1cmVEZWZuIiwgRFByb2NlZHVyZURlZm5fX2dldF90eXBlKTsKKyAgICB0c2Zf
dHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRQcm9ncmFtRWxlbWVudCIpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRQcm9ncmFtX19idWlsZF90eXBlKHZvaWQpIHsK
KyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0
aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNpemVvZihEUHJvZ3JhbV90KSwgKHZvaWQoKiko
dm9pZCopKURQcm9ncmFtX19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9m
cm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAiZ2xvYmFs
cyIsIERQcm9ncmFtX19nbG9iYWxzX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERQcm9ncmFtX3Qs
IGdsb2JhbHMpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRQcm9ncmFt
Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqRFByb2dyYW1FbGVtZW50
X19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNm
X3R5cGVfY3JlYXRlX2FycmF5X2FvZSh0c2ZfdHlwZV9kdXAoRFByb2dyYW1FbGVtZW50X19nZXRf
dHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqREluc3RydWN0
aW9uX19jYWxsX19hcmdzX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1
bHQgPSB0c2ZfdHlwZV9kdXAoaW50MTZfX2FycmF5X19nZXRfdHlwZSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpEUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX19idWls
ZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9kdXAoRFZh
cmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3RzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX19jb2RlX19idWlsZF90eXBlKHZvaWQpIHsKKyAg
ICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9kdXAoREluc3RydWN0aW9uX19hcnJheV9f
Z2V0X3R5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqRFByb2dy
YW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9
IHRzZl90eXBlX2R1cChEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19nZXRfdHlwZSgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERPcGVyYW5k
X190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGlsZSBET3BlcmFuZF9f
Z2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSBET3BlcmFuZF9f
cGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBw
dGhyZWFkX29uY2VfdCBET3BlcmFuZF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0
YXRpYyB2b2lkIERPcGVyYW5kX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBET3BlcmFuZF9f
dHlwZSA9IERPcGVyYW5kX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRP
cGVyYW5kX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRE9wZXJhbmRfX2J1aWxk
X3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRE9wZXJhbmRfX2dldF90eXBlKHZvaWQp
IHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3Qq
KXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRE9wZXJhbmRfX3R5cGUsIERPcGVyYW5kX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZET3BlcmFuZF9fdHlwZV9fb2Ms
IERPcGVyYW5kX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRE9wZXJhbmRfX3R5cGU7Cisj
ZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBET3BlcmFuZF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGlj
IHZvaWQgRE9wZXJhbmRfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRE9wZXJhbmRfX2dl
bnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKERPcGVyYW5kX19nZXRfdHlwZSgpKTsKK30KKyNl
bHNlCitzdGF0aWMgdm9pZCAqRE9wZXJhbmRfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAg
cmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERPcGVyYW5kX19nZXRfdHlwZSgpKTsKK30KKyNl
bmRpZgordHNmX2dlbnJ0cl90ICpET3BlcmFuZF9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZk
ZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9p
bml0X3BvaW50ZXIoKHZvaWQqKikmRE9wZXJhbmRfX2dlbnJ0ciwgRE9wZXJhbmRfX2dlbnJ0cl9f
YnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRE9wZXJhbmRfX2dlbnJ0cl9fb2Ms
IERPcGVyYW5kX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBET3BlcmFuZF9fZ2VucnRy
OworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgRE9wZXJhbmRfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0
YXRpYyB2b2lkIERPcGVyYW5kX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIERPcGVyYW5k
X19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShET3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9Cisj
ZWxzZQorc3RhdGljIHZvaWQgKkRPcGVyYW5kX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAg
IHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShET3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5k
aWYKK3RzZl9wYXJzZXJfdCAqRE9wZXJhbmRfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJkRPcGVyYW5kX19wYXJzZXIsIERPcGVyYW5kX19wYXJzZXJfX2J1aWxk
ZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRPcGVyYW5kX19wYXJzZXJfX29jLCBET3Bl
cmFuZF9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRE9wZXJhbmRfX3BhcnNlcjsKKyNl
bmRpZgorfQorCit0c2ZfYm9vbF90IERPcGVyYW5kX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0
cHV0X3QgKm91dCwgRE9wZXJhbmRfdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV93cml0ZShvdXQsIERPcGVyYW5kX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitET3Bl
cmFuZF90ICpET3BlcmFuZF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAg
ICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRE9wZXJhbmRfX2dldF9wYXJzZXIoKSk7
Cit9CisKK3RzZl9ib29sX3QgRE9wZXJhbmRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfdCAqaW4sIERPcGVyYW5kX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV9yZWFkX2ludG8oaW4sIERPcGVyYW5kX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0
YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgRFR5cGVfX3R5cGUgPSBOVUxMOworc3RhdGljIHRz
Zl9nZW5ydHJfdCAqIHZvbGF0aWxlIERUeXBlX19nZW5ydHIgPSBOVUxMOworc3RhdGljIHRzZl9w
YXJzZXJfdCAqIHZvbGF0aWxlIERUeXBlX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVmIFRTRl9I
QVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERUeXBlX190eXBlX19vYyA9
IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFR5cGVfX3R5cGVfX2J1aWxkZXIodm9p
ZCkgeworICAgIERUeXBlX190eXBlID0gRFR5cGVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitz
dGF0aWMgdm9pZCAqRFR5cGVfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBEVHlw
ZV9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpEVHlwZV9fZ2V0X3R5cGUo
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5
cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEVHlwZV9fdHlwZSwgRFR5cGVfX3R5cGVf
X2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRUeXBlX190eXBlX19vYywgRFR5
cGVfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBEVHlwZV9fdHlwZTsKKyNlbmRpZgorfQor
CisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERU
eXBlX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEVHlwZV9f
Z2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBEVHlwZV9fZ2VucnRyID0gdHNmX2dlbmVyYXRv
cl9jcmVhdGUoRFR5cGVfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEVHlw
ZV9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2dlbmVyYXRvcl9jcmVh
dGUoRFR5cGVfX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKkRUeXBlX19n
ZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICBy
ZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEVHlwZV9fZ2Vu
cnRyLCBEVHlwZV9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZE
VHlwZV9fZ2VucnRyX19vYywgRFR5cGVfX2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERU
eXBlX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEVHlwZV9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05DRV9J
TklUOworc3RhdGljIHZvaWQgRFR5cGVfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgRFR5
cGVfX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKERUeXBlX19nZXRfdHlwZSgpKTsKK30KKyNl
bHNlCitzdGF0aWMgdm9pZCAqRFR5cGVfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0
dXJuIHRzZl9wYXJzZXJfY3JlYXRlKERUeXBlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNm
X3BhcnNlcl90ICpEVHlwZV9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5J
VF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZv
aWQqKikmRFR5cGVfX3BhcnNlciwgRFR5cGVfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAg
IHB0aHJlYWRfb25jZSgmRFR5cGVfX3BhcnNlcl9fb2MsIERUeXBlX19wYXJzZXJfX2J1aWxkZXIp
OworICAgIHJldHVybiBEVHlwZV9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lkIERUeXBlX19kZXN0
cnVjdChEVHlwZV90ICpkYXRhKSB7CisgICAgZnJlZSgqZGF0YSk7Cit9CisKK3RzZl9ib29sX3Qg
RFR5cGVfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEVHlwZV90ICpkYXRh
KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgRFR5cGVfX2dldF9nZW5l
cmF0b3IoKSwgZGF0YSk7Cit9CisKK0RUeXBlX3QgKkRUeXBlX19yZWFkKHRzZl9zdHJlYW1fZmls
ZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBEVHlw
ZV9fZ2V0X3BhcnNlcigpKTsKK30KKwordHNmX2Jvb2xfdCBEVHlwZV9fcmVhZF9pbnRvKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbiwgRFR5cGVfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRz
Zl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgRFR5cGVfX2dldF9wYXJzZXIoKSwgcmVzdWx0KTsK
K30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEQ29kZU9mZnNldF9fdHlwZSA9IE5V
TEw7CitzdGF0aWMgdHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgRENvZGVPZmZzZXRfX2dlbnJ0ciA9
IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgRENvZGVPZmZzZXRfX3BhcnNl
ciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVh
ZF9vbmNlX3QgRENvZGVPZmZzZXRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0
aWMgdm9pZCBEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRENvZGVPZmZz
ZXRfX3R5cGUgPSBEQ29kZU9mZnNldF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2
b2lkICpEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERDb2Rl
T2Zmc2V0X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRDb2RlT2Zmc2V0
X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0
dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRDb2RlT2Zmc2V0X190
eXBlLCBEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25j
ZSgmRENvZGVPZmZzZXRfX3R5cGVfX29jLCBEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcik7Cisg
ICAgcmV0dXJuIERDb2RlT2Zmc2V0X190eXBlOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRENvZGVPZmZzZXRfX2dlbnJ0
cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERDb2RlT2Zmc2V0X19nZW5y
dHJfX2J1aWxkZXIodm9pZCkgeworICAgIERDb2RlT2Zmc2V0X19nZW5ydHIgPSB0c2ZfZ2VuZXJh
dG9yX2NyZWF0ZShEQ29kZU9mZnNldF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZv
aWQgKkRDb2RlT2Zmc2V0X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2Zf
Z2VuZXJhdG9yX2NyZWF0ZShEQ29kZU9mZnNldF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3Rz
Zl9nZW5ydHJfdCAqRENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3Iodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0cl90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJkRDb2RlT2Zmc2V0X19nZW5ydHIsIERDb2RlT2Zmc2V0X19nZW5ydHJf
X2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRDb2RlT2Zmc2V0X19nZW5ydHJf
X29jLCBEQ29kZU9mZnNldF9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRENvZGVPZmZz
ZXRfX2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IERDb2RlT2Zmc2V0X19wYXJzZXJfX29jID0gUFRIUkVBRF9P
TkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEQ29kZU9mZnNldF9fcGFyc2VyX19idWlsZGVyKHZvaWQp
IHsKKyAgICBEQ29kZU9mZnNldF9fcGFyc2VyID0gdHNmX3BhcnNlcl9jcmVhdGUoRENvZGVPZmZz
ZXRfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEQ29kZU9mZnNldF9fcGFy
c2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoRENvZGVP
ZmZzZXRfX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKkRDb2RlT2Zmc2V0
X19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICBy
ZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEQ29kZU9mZnNl
dF9fcGFyc2VyLCBEQ29kZU9mZnNldF9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRo
cmVhZF9vbmNlKCZEQ29kZU9mZnNldF9fcGFyc2VyX19vYywgRENvZGVPZmZzZXRfX3BhcnNlcl9f
YnVpbGRlcik7CisgICAgcmV0dXJuIERDb2RlT2Zmc2V0X19wYXJzZXI7CisjZW5kaWYKK30KKwor
dHNmX2Jvb2xfdCBEQ29kZU9mZnNldF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpv
dXQsIERDb2RlT2Zmc2V0X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfd3Jp
dGUob3V0LCBEQ29kZU9mZnNldF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworRENvZGVP
ZmZzZXRfdCAqRENvZGVPZmZzZXRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluKSB7
CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIERDb2RlT2Zmc2V0X19nZXRfcGFy
c2VyKCkpOworfQorCit0c2ZfYm9vbF90IERDb2RlT2Zmc2V0X19yZWFkX2ludG8odHNmX3N0cmVh
bV9maWxlX2lucHV0X3QgKmluLCBEQ29kZU9mZnNldF90ICpyZXN1bHQpIHsKKyAgICByZXR1cm4g
dHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBEQ29kZU9mZnNldF9fZ2V0X3BhcnNlcigpLCBy
ZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERWYXJpYWJsZURlY2xf
X3R5cGUgPSBOVUxMOworc3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIERWYXJpYWJsZURl
Y2xfX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgRFZhcmlh
YmxlRGVjbF9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEVmFyaWFibGVEZWNsX190eXBlX19vYyA9IFBUSFJFQURf
T05DRV9JTklUOworc3RhdGljIHZvaWQgRFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcih2b2lk
KSB7CisgICAgRFZhcmlhYmxlRGVjbF9fdHlwZSA9IERWYXJpYWJsZURlY2xfX2J1aWxkX3R5cGUo
KTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIERWYXJpYWJsZURlY2xfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRp
ZgordHNmX3R5cGVfdCAqRFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9p
bnRlcigodm9pZCoqKSZEVmFyaWFibGVEZWNsX190eXBlLCBEVmFyaWFibGVEZWNsX190eXBlX19i
dWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEVmFyaWFibGVEZWNsX190eXBlX19v
YywgRFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIERWYXJpYWJsZURl
Y2xfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0
YXRpYyBwdGhyZWFkX29uY2VfdCBEVmFyaWFibGVEZWNsX19nZW5ydHJfX29jID0gUFRIUkVBRF9P
TkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEVmFyaWFibGVEZWNsX19nZW5ydHJfX2J1aWxkZXIodm9p
ZCkgeworICAgIERWYXJpYWJsZURlY2xfX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKERW
YXJpYWJsZURlY2xfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEVmFyaWFi
bGVEZWNsX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9y
X2NyZWF0ZShEVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0
cl90ICpEVmFyaWFibGVEZWNsX19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRl
cigodm9pZCoqKSZEVmFyaWFibGVEZWNsX19nZW5ydHIsIERWYXJpYWJsZURlY2xfX2dlbnJ0cl9f
YnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRFZhcmlhYmxlRGVjbF9fZ2VucnRy
X19vYywgRFZhcmlhYmxlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFZhcmlh
YmxlRGVjbF9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lO
VEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRFZhcmlhYmxlRGVjbF9fcGFyc2VyX19vYyA9IFBU
SFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFZhcmlhYmxlRGVjbF9fcGFyc2VyX19idWls
ZGVyKHZvaWQpIHsKKyAgICBEVmFyaWFibGVEZWNsX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0
ZShEVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFZh
cmlhYmxlRGVjbF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNl
cl9jcmVhdGUoRFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJz
ZXJfdCAqRFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVf
SU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIo
KHZvaWQqKikmRFZhcmlhYmxlRGVjbF9fcGFyc2VyLCBEVmFyaWFibGVEZWNsX19wYXJzZXJfX2J1
aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRWYXJpYWJsZURlY2xfX3BhcnNlcl9f
b2MsIERWYXJpYWJsZURlY2xfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERWYXJpYWJs
ZURlY2xfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBEVmFyaWFibGVEZWNsX19kZXN0cnVjdChE
VmFyaWFibGVEZWNsX3QgKmRhdGEpIHsKKyAgICBEVHlwZV9fZGVzdHJ1Y3QoJmRhdGEtPnR5cGUp
OworfQorCit0c2ZfYm9vbF90IERWYXJpYWJsZURlY2xfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9v
dXRwdXRfdCAqb3V0LCBEVmFyaWFibGVEZWNsX3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5
cGVkX2RhdGFfd3JpdGUob3V0LCBEVmFyaWFibGVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEp
OworfQorCitEVmFyaWFibGVEZWNsX3QgKkRWYXJpYWJsZURlY2xfX3JlYWQodHNmX3N0cmVhbV9m
aWxlX2lucHV0X3QgKmluKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIERW
YXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgRFZhcmlhYmxlRGVj
bF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwgRFZhcmlhYmxlRGVjbF90
ICpyZXN1bHQpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBEVmFy
aWFibGVEZWNsX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90
ICogdm9sYXRpbGUgREluc3RydWN0aW9uX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRy
X3QgKiB2b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3Bh
cnNlcl90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERJbnN0cnVjdGlv
bl9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERJbnN0cnVjdGlv
bl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgREluc3RydWN0aW9uX190eXBlID0gREluc3Ry
dWN0aW9uX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0cnVjdGlv
bl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fYnVpbGRf
dHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2dldF90eXBlKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBl
X3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX190eXBlLCBESW5zdHJ1
Y3Rpb25fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRJbnN0cnVj
dGlvbl9fdHlwZV9fb2MsIERJbnN0cnVjdGlvbl9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJu
IERJbnN0cnVjdGlvbl9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRf
UE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERJbnN0cnVjdGlvbl9fZ2VucnRyX19vYyA9
IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgREluc3RydWN0aW9uX19nZW5ydHJfX2J1
aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlvbl9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9j
cmVhdGUoREluc3RydWN0aW9uX19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAq
REluc3RydWN0aW9uX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2Vu
ZXJhdG9yX2NyZWF0ZShESW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2Zf
Z2VucnRyX3QgKkRJbnN0cnVjdGlvbl9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3Bv
aW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX19nZW5ydHIsIERJbnN0cnVjdGlvbl9fZ2VucnRy
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1Y3Rpb25fX2dlbnJ0
cl9fb2MsIERJbnN0cnVjdGlvbl9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gREluc3Ry
dWN0aW9uX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rpb25fX3BhcnNlcl9fb2MgPSBQVEhS
RUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERJbnN0cnVjdGlvbl9fcGFyc2VyX19idWlsZGVy
KHZvaWQpIHsKKyAgICBESW5zdHJ1Y3Rpb25fX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKERJ
bnN0cnVjdGlvbl9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0cnVj
dGlvbl9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVh
dGUoREluc3RydWN0aW9uX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpE
SW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9J
TlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiop
JkRJbnN0cnVjdGlvbl9fcGFyc2VyLCBESW5zdHJ1Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcik7Cisj
ZWxzZQorICAgIHB0aHJlYWRfb25jZSgmREluc3RydWN0aW9uX19wYXJzZXJfX29jLCBESW5zdHJ1
Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fcGFyc2Vy
OworI2VuZGlmCit9Cit2b2lkIERJbnN0cnVjdGlvbl9fZGVzdHJ1Y3QoREluc3RydWN0aW9uX3Qg
KmRhdGEpIHsKKyAgICBzd2l0Y2ggKGRhdGEtPnZhbHVlKSB7CisgICAgY2FzZSAzOgorICAgICAg
ICBESW5zdHJ1Y3Rpb25fX2FsbG9jX19kZXN0cnVjdCgmZGF0YS0+dS5hbGxvYyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgNjoKKyAgICAgICAgREluc3RydWN0aW9uX19jYWxsX19kZXN0cnVj
dCgmZGF0YS0+dS5jYWxsKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit0c2ZfYm9vbF90IERJbnN0cnVjdGlvbl9fd3JpdGUodHNmX3N0
cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERJbnN0cnVjdGlvbl90ICpkYXRhKSB7CisgICAgcmV0
dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgREluc3RydWN0aW9uX19nZXRfZ2VuZXJhdG9y
KCksIGRhdGEpOworfQorCitESW5zdHJ1Y3Rpb25fdCAqREluc3RydWN0aW9uX19yZWFkKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFk
KGluLCBESW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgREluc3Ry
dWN0aW9uX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluLCBESW5zdHJ1Y3Rp
b25fdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwg
REluc3RydWN0aW9uX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlw
ZV90ICogdm9sYXRpbGUgRFByb2NlZHVyZV9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNmX2dlbnJ0
cl90ICogdm9sYXRpbGUgRFByb2NlZHVyZV9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFy
c2VyX3QgKiB2b2xhdGlsZSBEUHJvY2VkdXJlX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9jZWR1cmVfX3R5
cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvY2VkdXJlX190eXBl
X19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvY2VkdXJlX190eXBlID0gRFByb2NlZHVyZV9fYnVp
bGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvY2VkdXJlX190eXBlX19idWls
ZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2NlZHVyZV9fYnVpbGRfdHlwZSgpOworfQorI2Vu
ZGlmCit0c2ZfdHlwZV90ICpEUHJvY2VkdXJlX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJkRQcm9jZWR1cmVfX3R5cGUsIERQcm9jZWR1cmVfX3R5cGVfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9jZWR1cmVfX3R5cGVfX29jLCBEUHJvY2Vk
dXJlX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZV9fdHlwZTsKKyNlbmRp
ZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25j
ZV90IERQcm9jZWR1cmVfX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2
b2lkIERQcm9jZWR1cmVfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZV9f
Z2VucnRyID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUoRFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7Cit9
CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1cmVfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVfX2dldF90eXBlKCkp
OworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKkRQcm9jZWR1cmVfX2dldF9nZW5lcmF0b3Iodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0
cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9jZWR1cmVfX2dlbnJ0ciwgRFByb2Nl
ZHVyZV9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJvY2Vk
dXJlX19nZW5ydHJfX29jLCBEUHJvY2VkdXJlX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVy
biBEUHJvY2VkdXJlX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklU
X1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlX19wYXJzZXJfX29jID0g
UFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvY2VkdXJlX19wYXJzZXJfX2J1aWxk
ZXIodm9pZCkgeworICAgIERQcm9jZWR1cmVfX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKERQ
cm9jZWR1cmVfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvY2VkdXJl
X19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShE
UHJvY2VkdXJlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpEUHJvY2Vk
dXJlX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAg
ICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEUHJvY2Vk
dXJlX19wYXJzZXIsIERQcm9jZWR1cmVfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0
aHJlYWRfb25jZSgmRFByb2NlZHVyZV9fcGFyc2VyX19vYywgRFByb2NlZHVyZV9fcGFyc2VyX19i
dWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZV9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lk
IERQcm9jZWR1cmVfX2Rlc3RydWN0KERQcm9jZWR1cmVfdCAqZGF0YSkgeworICAgIGZyZWUoKiZk
YXRhLT5uYW1lKTsKK30KKwordHNmX2Jvb2xfdCBEUHJvY2VkdXJlX193cml0ZSh0c2Zfc3RyZWFt
X2ZpbGVfb3V0cHV0X3QgKm91dCwgRFByb2NlZHVyZV90ICpkYXRhKSB7CisgICAgcmV0dXJuIHRz
Zl90eXBlZF9kYXRhX3dyaXRlKG91dCwgRFByb2NlZHVyZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRh
KTsKK30KKworRFByb2NlZHVyZV90ICpEUHJvY2VkdXJlX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9p
bnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBEUHJvY2Vk
dXJlX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IERQcm9jZWR1cmVfX3JlYWRfaW50
byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIERQcm9jZWR1cmVfdCAqcmVzdWx0KSB7Cisg
ICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgRFByb2NlZHVyZV9fZ2V0X3Bh
cnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERQcm9j
ZWR1cmVEZWNsX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGlsZSBE
UHJvY2VkdXJlRGVjbF9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xh
dGlsZSBEUHJvY2VkdXJlRGVjbF9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9J
TklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlRGVjbF9fdHlwZV9f
b2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQcm9jZWR1cmVEZWNsX190eXBl
X19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvY2VkdXJlRGVjbF9fdHlwZSA9IERQcm9jZWR1cmVE
ZWNsX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1cmVEZWNs
X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2NlZHVyZURlY2xfX2J1aWxk
X3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRFByb2NlZHVyZURlY2xfX2dldF90eXBl
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90
eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2NlZHVyZURlY2xfX3R5cGUsIERQ
cm9jZWR1cmVEZWNsX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZE
UHJvY2VkdXJlRGVjbF9fdHlwZV9fb2MsIERQcm9jZWR1cmVEZWNsX190eXBlX19idWlsZGVyKTsK
KyAgICByZXR1cm4gRFByb2NlZHVyZURlY2xfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlRGVj
bF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFByb2NlZHVy
ZURlY2xfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZURlY2xfX2dlbnJ0
ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVEZWNsX19nZXRfdHlwZSgpKTsKK30K
KyNlbHNlCitzdGF0aWMgdm9pZCAqRFByb2NlZHVyZURlY2xfX2dlbnJ0cl9fYnVpbGRlcih2b2lk
KSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVEZWNsX19nZXRf
dHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpEUHJvY2VkdXJlRGVjbF9fZ2V0X2dl
bmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJu
ICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2NlZHVyZURlY2xf
X2dlbnJ0ciwgRFByb2NlZHVyZURlY2xfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0
aHJlYWRfb25jZSgmRFByb2NlZHVyZURlY2xfX2dlbnJ0cl9fb2MsIERQcm9jZWR1cmVEZWNsX19n
ZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBEUHJvY2VkdXJlRGVjbF9fZ2VucnRyOworI2Vu
ZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9v
bmNlX3QgRFByb2NlZHVyZURlY2xfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0
YXRpYyB2b2lkIERQcm9jZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIERQ
cm9jZWR1cmVEZWNsX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShEUHJvY2VkdXJlRGVjbF9f
Z2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1cmVEZWNsX19wYXJz
ZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShEUHJvY2Vk
dXJlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqRFByb2NlZHVy
ZURlY2xfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
ICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9j
ZWR1cmVEZWNsX19wYXJzZXIsIERQcm9jZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIpOworI2Vs
c2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9jZWR1cmVEZWNsX19wYXJzZXJfX29jLCBEUHJvY2Vk
dXJlRGVjbF9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZURlY2xfX3Bh
cnNlcjsKKyNlbmRpZgorfQordm9pZCBEUHJvY2VkdXJlRGVjbF9fZGVzdHJ1Y3QoRFByb2NlZHVy
ZURlY2xfdCAqZGF0YSkgeworICAgIGZyZWUoKiZkYXRhLT5uYW1lKTsKK30KKwordHNmX2Jvb2xf
dCBEUHJvY2VkdXJlRGVjbF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERQ
cm9jZWR1cmVEZWNsX3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfd3JpdGUo
b3V0LCBEUHJvY2VkdXJlRGVjbF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworRFByb2Nl
ZHVyZURlY2xfdCAqRFByb2NlZHVyZURlY2xfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmluKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIERQcm9jZWR1cmVEZWNs
X19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IERQcm9jZWR1cmVEZWNsX19yZWFkX2lu
dG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluLCBEUHJvY2VkdXJlRGVjbF90ICpyZXN1bHQp
IHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBEUHJvY2VkdXJlRGVj
bF9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0
aWxlIERQcm9jZWR1cmVEZWZuX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2
b2xhdGlsZSBEUHJvY2VkdXJlRGVmbl9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2Vy
X3QgKiB2b2xhdGlsZSBEUHJvY2VkdXJlRGVmbl9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlRGVm
bl9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQcm9jZWR1cmVE
ZWZuX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvY2VkdXJlRGVmbl9fdHlwZSA9IERQ
cm9jZWR1cmVEZWZuX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9j
ZWR1cmVEZWZuX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2NlZHVyZURl
Zm5fX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRFByb2NlZHVyZURlZm5f
X2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1
cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2NlZHVyZURlZm5f
X3R5cGUsIERQcm9jZWR1cmVEZWZuX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVh
ZF9vbmNlKCZEUHJvY2VkdXJlRGVmbl9fdHlwZV9fb2MsIERQcm9jZWR1cmVEZWZuX190eXBlX19i
dWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZURlZm5fX3R5cGU7CisjZW5kaWYKK30KKwor
I2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJv
Y2VkdXJlRGVmbl9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQg
RFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZURl
Zm5fX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVEZWZuX19nZXRfdHlw
ZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fYnVp
bGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVE
ZWZuX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpEUHJvY2VkdXJlRGVm
bl9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisg
ICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2Nl
ZHVyZURlZm5fX2dlbnJ0ciwgRFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxz
ZQorICAgIHB0aHJlYWRfb25jZSgmRFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fb2MsIERQcm9jZWR1
cmVEZWZuX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBEUHJvY2VkdXJlRGVmbl9fZ2Vu
cnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMg
cHRocmVhZF9vbmNlX3QgRFByb2NlZHVyZURlZm5fX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0Vf
SU5JVDsKK3N0YXRpYyB2b2lkIERQcm9jZWR1cmVEZWZuX19wYXJzZXJfX2J1aWxkZXIodm9pZCkg
eworICAgIERQcm9jZWR1cmVEZWZuX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShEUHJvY2Vk
dXJlRGVmbl9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1cmVE
ZWZuX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0
ZShEUHJvY2VkdXJlRGVmbl9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAq
RFByb2NlZHVyZURlZm5fX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRf
UE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lk
KiopJkRQcm9jZWR1cmVEZWZuX19wYXJzZXIsIERQcm9jZWR1cmVEZWZuX19wYXJzZXJfX2J1aWxk
ZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9jZWR1cmVEZWZuX19wYXJzZXJfX29j
LCBEUHJvY2VkdXJlRGVmbl9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVy
ZURlZm5fX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBEUHJvY2VkdXJlRGVmbl9fZGVzdHJ1Y3Qo
RFByb2NlZHVyZURlZm5fdCAqZGF0YSkgeworICAgIGZyZWUoKiZkYXRhLT5uYW1lKTsKKyAgICBE
UHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX19kZXN0cnVjdCgmZGF0YS0+dmFyaWFibGVzKTsKKyAg
ICBEUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVzdHJ1Y3QoJmRhdGEtPmNvZGUpOworfQorCit0c2Zf
Ym9vbF90IERQcm9jZWR1cmVEZWZuX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91
dCwgRFByb2NlZHVyZURlZm5fdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV93
cml0ZShvdXQsIERQcm9jZWR1cmVEZWZuX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitE
UHJvY2VkdXJlRGVmbl90ICpEUHJvY2VkdXJlRGVmbl9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRFByb2NlZHVy
ZURlZm5fX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgRFByb2NlZHVyZURlZm5fX3Jl
YWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIERQcm9jZWR1cmVEZWZuX3QgKnJl
c3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkX2ludG8oaW4sIERQcm9jZWR1
cmVEZWZuX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICog
dm9sYXRpbGUgRFByb2dyYW1FbGVtZW50X190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRy
X3QgKiB2b2xhdGlsZSBEUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNm
X3BhcnNlcl90ICogdm9sYXRpbGUgRFByb2dyYW1FbGVtZW50X19wYXJzZXIgPSBOVUxMOworCisj
aWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9n
cmFtRWxlbWVudF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQ
cm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2dyYW1FbGVtZW50
X190eXBlID0gRFByb2dyYW1FbGVtZW50X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKkRQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJu
IERQcm9ncmFtRWxlbWVudF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpE
UHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BP
SU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikm
RFByb2dyYW1FbGVtZW50X190eXBlLCBEUHJvZ3JhbUVsZW1lbnRfX3R5cGVfX2J1aWxkZXIpOwor
I2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtRWxlbWVudF9fdHlwZV9fb2MsIERQcm9n
cmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFtRWxlbWVudF9f
dHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGlj
IHB0aHJlYWRfb25jZV90IERQcm9ncmFtRWxlbWVudF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05D
RV9JTklUOworc3RhdGljIHZvaWQgRFByb2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxkZXIodm9p
ZCkgeworICAgIERQcm9ncmFtRWxlbWVudF9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUo
RFByb2dyYW1FbGVtZW50X19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFBy
b2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2Vu
ZXJhdG9yX2NyZWF0ZShEUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0
c2ZfZ2VucnRyX3QgKkRQcm9ncmFtRWxlbWVudF9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZk
ZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9p
bml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2dyYW1FbGVtZW50X19nZW5ydHIsIERQcm9ncmFtRWxl
bWVudF9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJvZ3Jh
bUVsZW1lbnRfX2dlbnJ0cl9fb2MsIERQcm9ncmFtRWxlbWVudF9fZ2VucnRyX19idWlsZGVyKTsK
KyAgICByZXR1cm4gRFByb2dyYW1FbGVtZW50X19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvZ3JhbUVs
ZW1lbnRfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQcm9n
cmFtRWxlbWVudF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvZ3JhbUVsZW1lbnRf
X3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKERQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUoKSk7
Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9ncmFtRWxlbWVudF9fcGFyc2VyX19idWlsZGVy
KHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoRFByb2dyYW1FbGVtZW50X19n
ZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpEUHJvZ3JhbUVsZW1lbnRfX2dl
dF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVy
biAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtRWxlbWVu
dF9fcGFyc2VyLCBEUHJvZ3JhbUVsZW1lbnRfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAg
IHB0aHJlYWRfb25jZSgmRFByb2dyYW1FbGVtZW50X19wYXJzZXJfX29jLCBEUHJvZ3JhbUVsZW1l
bnRfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFtRWxlbWVudF9fcGFyc2Vy
OworI2VuZGlmCit9Cit2b2lkIERQcm9ncmFtRWxlbWVudF9fZGVzdHJ1Y3QoRFByb2dyYW1FbGVt
ZW50X3QgKmRhdGEpIHsKKyAgICBzd2l0Y2ggKGRhdGEtPnZhbHVlKSB7CisgICAgY2FzZSAwOgor
ICAgICAgICBEUHJvY2VkdXJlRGVjbF9fZGVzdHJ1Y3QoJmRhdGEtPnUucHJvY2VkdXJlRGVjbCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgRFByb2NlZHVyZURlZm5fX2Rl
c3RydWN0KCZkYXRhLT51LnByb2NlZHVyZURlZm4pOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RzZl9ib29sX3QgRFByb2dyYW1FbGVt
ZW50X193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgRFByb2dyYW1FbGVtZW50
X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfd3JpdGUob3V0LCBEUHJvZ3Jh
bUVsZW1lbnRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK0RQcm9ncmFtRWxlbWVudF90
ICpEUHJvZ3JhbUVsZW1lbnRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluKSB7Cisg
ICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIERQcm9ncmFtRWxlbWVudF9fZ2V0X3Bh
cnNlcigpKTsKK30KKwordHNmX2Jvb2xfdCBEUHJvZ3JhbUVsZW1lbnRfX3JlYWRfaW50byh0c2Zf
c3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIERQcm9ncmFtRWxlbWVudF90ICpyZXN1bHQpIHsKKyAg
ICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBEUHJvZ3JhbUVsZW1lbnRfX2dl
dF9wYXJzZXIoKSwgcmVzdWx0KTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBE
UHJvZ3JhbV9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgRFBy
b2dyYW1fX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgRFBy
b2dyYW1fX3BhcnNlciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitz
dGF0aWMgcHRocmVhZF9vbmNlX3QgRFByb2dyYW1fX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lO
SVQ7CitzdGF0aWMgdm9pZCBEUHJvZ3JhbV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRFBy
b2dyYW1fX3R5cGUgPSBEUHJvZ3JhbV9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2
b2lkICpEUHJvZ3JhbV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERQcm9ncmFt
X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRQcm9ncmFtX19nZXRfdHlw
ZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2Zf
dHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtX190eXBlLCBEUHJvZ3Jh
bV9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRFByb2dyYW1fX3R5
cGVfX29jLCBEUHJvZ3JhbV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFtX190
eXBlOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMg
cHRocmVhZF9vbmNlX3QgRFByb2dyYW1fX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsK
K3N0YXRpYyB2b2lkIERQcm9ncmFtX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIERQcm9n
cmFtX19nZW5ydHIgPSB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShEUHJvZ3JhbV9fZ2V0X3R5cGUoKSk7
Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9ncmFtX19nZW5ydHJfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShEUHJvZ3JhbV9fZ2V0X3R5cGUoKSk7
Cit9CisjZW5kaWYKK3RzZl9nZW5ydHJfdCAqRFByb2dyYW1fX2dldF9nZW5lcmF0b3Iodm9pZCkg
eworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0cl90
Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtX19nZW5ydHIsIERQcm9ncmFtX19n
ZW5ydHJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtX19nZW5y
dHJfX29jLCBEUHJvZ3JhbV9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2dyYW1f
X2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3Rh
dGljIHB0aHJlYWRfb25jZV90IERQcm9ncmFtX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lO
SVQ7CitzdGF0aWMgdm9pZCBEUHJvZ3JhbV9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBE
UHJvZ3JhbV9fcGFyc2VyID0gdHNmX3BhcnNlcl9jcmVhdGUoRFByb2dyYW1fX2dldF90eXBlKCkp
OworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvZ3JhbV9fcGFyc2VyX19idWlsZGVyKHZvaWQp
IHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoRFByb2dyYW1fX2dldF90eXBlKCkpOwor
fQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKkRQcm9ncmFtX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNp
ZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNm
X2luaXRfcG9pbnRlcigodm9pZCoqKSZEUHJvZ3JhbV9fcGFyc2VyLCBEUHJvZ3JhbV9fcGFyc2Vy
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJvZ3JhbV9fcGFyc2VyX19v
YywgRFByb2dyYW1fX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFtX19wYXJz
ZXI7CisjZW5kaWYKK30KK3ZvaWQgRFByb2dyYW1fX2Rlc3RydWN0KERQcm9ncmFtX3QgKmRhdGEp
IHsKKyAgICBEUHJvZ3JhbV9fZ2xvYmFsc19fZGVzdHJ1Y3QoJmRhdGEtPmdsb2JhbHMpOworfQor
Cit0c2ZfYm9vbF90IERQcm9ncmFtX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91
dCwgRFByb2dyYW1fdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV93cml0ZShv
dXQsIERQcm9ncmFtX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitEUHJvZ3JhbV90ICpE
UHJvZ3JhbV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4g
dHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRFByb2dyYW1fX2dldF9wYXJzZXIoKSk7Cit9CisKK3Rz
Zl9ib29sX3QgRFByb2dyYW1fX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4s
IERQcm9ncmFtX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkX2lu
dG8oaW4sIERQcm9ncmFtX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2Zf
dHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19tb3ZfX3R5cGUgPSBOVUxMOworCisjaWZu
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERJbnN0cnVj
dGlvbl9fbW92X190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRElu
c3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlvbl9f
bW92X190eXBlID0gREluc3RydWN0aW9uX19tb3ZfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitz
dGF0aWMgdm9pZCAqREluc3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAg
IHJldHVybiBESW5zdHJ1Y3Rpb25fX21vdl9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2Zf
dHlwZV90ICpESW5zdHJ1Y3Rpb25fX21vdl9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9I
QVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRl
cigodm9pZCoqKSZESW5zdHJ1Y3Rpb25fX21vdl9fdHlwZSwgREluc3RydWN0aW9uX19tb3ZfX3R5
cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRJbnN0cnVjdGlvbl9fbW92
X190eXBlX19vYywgREluc3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVy
biBESW5zdHJ1Y3Rpb25fX21vdl9fdHlwZTsKKyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5cGVf
dCAqIHZvbGF0aWxlIERJbnN0cnVjdGlvbl9fYWRkX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rpb25f
X2FkZF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERJbnN0cnVj
dGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBESW5zdHJ1Y3Rpb25fX2FkZF9f
dHlwZSA9IERJbnN0cnVjdGlvbl9fYWRkX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKkRJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1
cm4gREluc3RydWN0aW9uX19hZGRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVf
dCAqREluc3RydWN0aW9uX19hZGRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9J
TklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZv
aWQqKikmREluc3RydWN0aW9uX19hZGRfX3R5cGUsIERJbnN0cnVjdGlvbl9fYWRkX190eXBlX19i
dWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1Y3Rpb25fX2FkZF9fdHlw
ZV9fb2MsIERJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRElu
c3RydWN0aW9uX19hZGRfX3R5cGU7CisjZW5kaWYKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2
b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rpb25fX2Fs
bG9jX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgREluc3RydWN0
aW9uX19hbGxvY19fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgREluc3RydWN0aW9uX19hbGxv
Y19fdHlwZSA9IERJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitz
dGF0aWMgdm9pZCAqREluc3RydWN0aW9uX19hbGxvY19fdHlwZV9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgor
dHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19hbGxvY19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRf
cG9pbnRlcigodm9pZCoqKSZESW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlLCBESW5zdHJ1Y3Rpb25f
X2FsbG9jX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1
Y3Rpb25fX2FsbG9jX190eXBlX19vYywgREluc3RydWN0aW9uX19hbGxvY19fdHlwZV9fYnVpbGRl
cik7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fYWxsb2NfX3R5cGU7CisjZW5kaWYKK30KK3Zv
aWQgREluc3RydWN0aW9uX19hbGxvY19fZGVzdHJ1Y3QoREluc3RydWN0aW9uX19hbGxvY190ICpk
YXRhKSB7CisgICAgRFR5cGVfX2Rlc3RydWN0KCZkYXRhLT50eXBlKTsKK30KKworc3RhdGljIHRz
Zl90eXBlX3QgKiB2b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX3JldF9fdHlwZSA9IE5VTEw7CisKKyNp
Zm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgREluc3Ry
dWN0aW9uX19yZXRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBE
SW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgREluc3RydWN0aW9u
X19yZXRfX3R5cGUgPSBESW5zdHJ1Y3Rpb25fX3JldF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UK
K3N0YXRpYyB2b2lkICpESW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fcmV0X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3Rz
Zl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fcmV0X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fcmV0X190eXBlLCBESW5zdHJ1Y3Rpb25fX3JldF9f
dHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmREluc3RydWN0aW9uX19y
ZXRfX3R5cGVfX29jLCBESW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0
dXJuIERJbnN0cnVjdGlvbl9fcmV0X190eXBlOworI2VuZGlmCit9CisKK3N0YXRpYyB0c2ZfdHlw
ZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19qdW1wX190eXBlID0gTlVMTDsKKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rp
b25fX2p1bXBfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBESW5z
dHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlvbl9f
anVtcF9fdHlwZSA9IERJbnN0cnVjdGlvbl9fanVtcF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UK
K3N0YXRpYyB2b2lkICpESW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2p1bXBfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgor
dHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19qdW1wX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fanVtcF9fdHlwZSwgREluc3RydWN0aW9uX19q
dW1wX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1Y3Rp
b25fX2p1bXBfX3R5cGVfX29jLCBESW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIpOwor
ICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGU7CisjZW5kaWYKK30KKworc3RhdGlj
IHRzZl90eXBlX3QgKiB2b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX2NhbGxfX3R5cGUgPSBOVUxMOwor
CisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERJ
bnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2
b2lkIERJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgREluc3Ry
dWN0aW9uX19jYWxsX190eXBlID0gREluc3RydWN0aW9uX19jYWxsX19idWlsZF90eXBlKCk7Cit9
CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fY2FsbF9fYnVpbGRfdHlwZSgpOworfQor
I2VuZGlmCit0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2NhbGxfX2dldF90eXBlKHZvaWQpIHsK
KyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRz
Zl9pbml0X3BvaW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX19jYWxsX190eXBlLCBESW5zdHJ1
Y3Rpb25fX2NhbGxfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRJ
bnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MsIERJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fYnVp
bGRlcik7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZTsKKyNlbmRpZgorfQor
dm9pZCBESW5zdHJ1Y3Rpb25fX2NhbGxfX2Rlc3RydWN0KERJbnN0cnVjdGlvbl9fY2FsbF90ICpk
YXRhKSB7CisgICAgREluc3RydWN0aW9uX19jYWxsX19hcmdzX19kZXN0cnVjdCgmZGF0YS0+YXJn
cyk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19jYWxs
X19hcmdzX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0
YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX29jID0g
UFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3Nf
X3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fdHlw
ZSA9IERJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0
YXRpYyB2b2lkICpESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX2J1aWxkX3R5cGUoKTsKK30K
KyNlbmRpZgordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19jYWxsX19hcmdzX19nZXRfdHlwZSh2
b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlw
ZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19f
dHlwZSwgREluc3RydWN0aW9uX19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisg
ICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX29jLCBESW5z
dHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBESW5zdHJ1
Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgREluc3RydWN0aW9uX19j
YWxsX19hcmdzX19kZXN0cnVjdChESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCAqZGF0YSkgewor
ICAgIGludDE2X19hcnJheV9fZGVzdHJ1Y3QoZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90
ICogdm9sYXRpbGUgaW50MTZfX2FycmF5X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBpbnQxNl9fYXJyYXlfX3R5cGVf
X29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBpbnQxNl9fYXJyYXlfX3R5cGVf
X2J1aWxkZXIodm9pZCkgeworICAgIGludDE2X19hcnJheV9fdHlwZSA9IGludDE2X19hcnJheV9f
YnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICppbnQxNl9fYXJyYXlfX3R5cGVf
X2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBpbnQxNl9fYXJyYXlfX2J1aWxkX3R5cGUoKTsK
K30KKyNlbmRpZgordHNmX3R5cGVfdCAqaW50MTZfX2FycmF5X19nZXRfdHlwZSh2b2lkKSB7Cisj
aWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2Zf
aW5pdF9wb2ludGVyKCh2b2lkKiopJmludDE2X19hcnJheV9fdHlwZSwgaW50MTZfX2FycmF5X190
eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZpbnQxNl9fYXJyYXlfX3R5
cGVfX29jLCBpbnQxNl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBpbnQxNl9f
YXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgaW50MTZfX2FycmF5X19kZXN0cnVjdChpbnQx
Nl9fYXJyYXlfdCAqZGF0YSkgeworICAgIGZyZWUoZGF0YS0+ZGF0YSk7Cit9CisKK3N0YXRpYyB0
c2ZfdHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19icmFuY2haZXJvX190eXBlID0gTlVM
TDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2Vf
dCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7
CitzdGF0aWMgdm9pZCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIodm9p
ZCkgeworICAgIERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fdHlwZSA9IERJbnN0cnVjdGlvbl9f
YnJhbmNoWmVyb19fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpESW5zdHJ1
Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBESW5z
dHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVf
dCAqREluc3RydWN0aW9uX19icmFuY2haZXJvX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fdHlwZSwgREluc3RydWN0aW9u
X19icmFuY2haZXJvX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZE
SW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX29jLCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFpl
cm9fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9f
X3R5cGU7CisjZW5kaWYKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEUHJvY2Vk
dXJlRGVmbl9fdmFyaWFibGVzX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklU
X1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVz
X190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFByb2NlZHVyZURl
Zm5fX3ZhcmlhYmxlc19fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZURlZm5f
X3ZhcmlhYmxlc19fdHlwZSA9IERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2J1aWxkX3R5cGUo
KTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fdHlw
ZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNf
X2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRFByb2NlZHVyZURlZm5fX3Zh
cmlhYmxlc19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
ICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEUHJvY2Vk
dXJlRGVmbl9fdmFyaWFibGVzX190eXBlLCBEUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJvY2VkdXJlRGVmbl9fdmFy
aWFibGVzX190eXBlX19vYywgRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fdHlwZV9fYnVpbGRl
cik7CisgICAgcmV0dXJuIERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX3R5cGU7CisjZW5kaWYK
K30KK3ZvaWQgRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fZGVzdHJ1Y3QoRFByb2NlZHVyZURl
Zm5fX3ZhcmlhYmxlc190ICpkYXRhKSB7CisgICAgRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2Rlc3Ry
dWN0KGRhdGEpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERWYXJpYWJsZURl
Y2xfX2FycmF5X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZV9fb2MgPSBQ
VEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERWYXJpYWJsZURlY2xfX2FycmF5X190eXBl
X19idWlsZGVyKHZvaWQpIHsKKyAgICBEVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZSA9IERWYXJp
YWJsZURlY2xfX2FycmF5X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRW
YXJpYWJsZURlY2xfX2FycmF5X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFZh
cmlhYmxlRGVjbF9fYXJyYXlfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAq
RFZhcmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9J
TklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZv
aWQqKikmRFZhcmlhYmxlRGVjbF9fYXJyYXlfX3R5cGUsIERWYXJpYWJsZURlY2xfX2FycmF5X190
eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEVmFyaWFibGVEZWNsX19h
cnJheV9fdHlwZV9fb2MsIERWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19idWlsZGVyKTsKKyAg
ICByZXR1cm4gRFZhcmlhYmxlRGVjbF9fYXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgRFZh
cmlhYmxlRGVjbF9fYXJyYXlfX2Rlc3RydWN0KERWYXJpYWJsZURlY2xfX2FycmF5X3QgKmRhdGEp
IHsKKyAgICB1aW50MzJfdCBpOworICAgIGZvciAoaSA9IGRhdGEtPmxlbjsgaS0tOykKKyAgICAg
ICAgRFZhcmlhYmxlRGVjbF9fZGVzdHJ1Y3QoKGRhdGEtPmRhdGEgKyBpKSk7CisgICAgZnJlZShk
YXRhLT5kYXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEUHJvY2VkdXJl
RGVmbl9fY29kZV9fdHlwZSA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRFByb2NlZHVyZURlZm5fX2NvZGVfX3R5cGVfX29jID0g
UFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlw
ZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZURlZm5fX2NvZGVfX3R5cGUgPSBEUHJv
Y2VkdXJlRGVmbl9fY29kZV9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpE
UHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERQ
cm9jZWR1cmVEZWZuX19jb2RlX19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3Qg
KkRQcm9jZWR1cmVEZWZuX19jb2RlX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVf
SU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2
b2lkKiopJkRQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlLCBEUHJvY2VkdXJlRGVmbl9fY29kZV9f
dHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRFByb2NlZHVyZURlZm5f
X2NvZGVfX3R5cGVfX29jLCBEUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9fYnVpbGRlcik7Cisg
ICAgcmV0dXJuIERQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlOworI2VuZGlmCit9Cit2b2lkIERQ
cm9jZWR1cmVEZWZuX19jb2RlX19kZXN0cnVjdChEUHJvY2VkdXJlRGVmbl9fY29kZV90ICpkYXRh
KSB7CisgICAgREluc3RydWN0aW9uX19hcnJheV9fZGVzdHJ1Y3QoZGF0YSk7Cit9CisKK3N0YXRp
YyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19hcnJheV9fdHlwZSA9IE5VTEw7
CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3Qg
REluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRp
YyB2b2lkIERJbnN0cnVjdGlvbl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERJ
bnN0cnVjdGlvbl9fYXJyYXlfX3R5cGUgPSBESW5zdHJ1Y3Rpb25fX2FycmF5X19idWlsZF90eXBl
KCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0cnVjdGlvbl9fYXJyYXlfX3R5cGVfX2J1
aWxkZXIodm9pZCkgeworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2FycmF5X19idWlsZF90eXBl
KCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90eXBl
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90
eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX19hcnJheV9fdHlw
ZSwgREluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJl
YWRfb25jZSgmREluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MsIERJbnN0cnVjdGlvbl9fYXJy
YXlfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2FycmF5X190eXBl
OworI2VuZGlmCit9Cit2b2lkIERJbnN0cnVjdGlvbl9fYXJyYXlfX2Rlc3RydWN0KERJbnN0cnVj
dGlvbl9fYXJyYXlfdCAqZGF0YSkgeworICAgIHVpbnQzMl90IGk7CisgICAgZm9yIChpID0gZGF0
YS0+bGVuOyBpLS07KQorICAgICAgICBESW5zdHJ1Y3Rpb25fX2Rlc3RydWN0KChkYXRhLT5kYXRh
ICsgaSkpOworICAgIGZyZWUoZGF0YS0+ZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICog
dm9sYXRpbGUgRFByb2dyYW1fX2dsb2JhbHNfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9I
QVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9ncmFtX19nbG9iYWxz
X190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFByb2dyYW1fX2ds
b2JhbHNfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERQcm9ncmFtX19nbG9iYWxzX190eXBl
ID0gRFByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9p
ZCAqRFByb2dyYW1fX2dsb2JhbHNfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBE
UHJvZ3JhbV9fZ2xvYmFsc19fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpE
UHJvZ3JhbV9fZ2xvYmFsc19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRf
UE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoq
KSZEUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZSwgRFByb2dyYW1fX2dsb2JhbHNfX3R5cGVfX2J1aWxk
ZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtX19nbG9iYWxzX190eXBlX19v
YywgRFByb2dyYW1fX2dsb2JhbHNfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBEUHJvZ3Jh
bV9fZ2xvYmFsc19fdHlwZTsKKyNlbmRpZgorfQordm9pZCBEUHJvZ3JhbV9fZ2xvYmFsc19fZGVz
dHJ1Y3QoRFByb2dyYW1fX2dsb2JhbHNfdCAqZGF0YSkgeworICAgIERQcm9ncmFtRWxlbWVudF9f
YXJyYXlfX2Rlc3RydWN0KGRhdGEpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxl
IERQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZF
X0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9ncmFtRWxlbWVudF9fYXJy
YXlfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvZ3JhbUVs
ZW1lbnRfX2FycmF5X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvZ3JhbUVsZW1lbnRf
X2FycmF5X190eXBlID0gRFByb2dyYW1FbGVtZW50X19hcnJheV9fYnVpbGRfdHlwZSgpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X190eXBlX19idWlsZGVy
KHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2dyYW1FbGVtZW50X19hcnJheV9fYnVpbGRfdHlwZSgp
OworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19nZXRfdHlw
ZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2Zf
dHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtRWxlbWVudF9fYXJyYXlf
X3R5cGUsIERQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAg
ICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGVfX29jLCBEUHJvZ3Jh
bUVsZW1lbnRfX2FycmF5X190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2dyYW1FbGVt
ZW50X19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCBEUHJvZ3JhbUVsZW1lbnRfX2FycmF5
X19kZXN0cnVjdChEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3QgKmRhdGEpIHsKKyAgICB1aW50MzJf
dCBpOworICAgIGZvciAoaSA9IGRhdGEtPmxlbjsgaS0tOykKKyAgICAgICAgRFByb2dyYW1FbGVt
ZW50X19kZXN0cnVjdCgoZGF0YS0+ZGF0YSArIGkpKTsKKyAgICBmcmVlKGRhdGEtPmRhdGEpOwor
fQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyX2Rp
ZmZlcmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L3RzZi90c2ZfaXJfZGlmZmVyZW50LmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pcl9kaWZmZXJlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDY5NSBAQAorLyogLi90ZXN0cy9zdWl0ZXMvdG95aXIvdHNmX2lyX2RpZmZlcmVu
dC5oIC0tIGdlbmVyYXRlZCBieSB0c2ZfZGVmaW5lIGZyb20gLi90ZXN0cy9zdWl0ZXMvdG95aXIv
dHNmX2lyX2RpZmZlcmVudC50ICovCisKKyNpbmNsdWRlICJ0c2YuaCIKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNU
X0RFQ0xfRFZhcmlhYmxlRGVjbAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RWYXJp
YWJsZURlY2wKK3N0cnVjdCBEVmFyaWFibGVEZWNsX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlvbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX0RJbnN0cnVjdGlvbgorc3RydWN0IERJbnN0cnVjdGlvbl9zOworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9EUHJvY2VkdXJlCisjZGVmaW5lIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFQ0xfRFByb2NlZHVyZQorc3RydWN0IERQcm9jZWR1cmVfczsKKyNlbmRpZgor
CisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2NlZHVyZURlY2wKKyNkZWZpbmUg
VFNGX0RFRklORV9TVFJVQ1RfREVDTF9EUHJvY2VkdXJlRGVjbAorc3RydWN0IERQcm9jZWR1cmVE
ZWNsX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RQcm9jZWR1
cmVEZWZuCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2NlZHVyZURlZm4KK3N0
cnVjdCBEUHJvY2VkdXJlRGVmbl9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJV
Q1RfREVDTF9EUHJvZ3JhbUVsZW1lbnQKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9E
UHJvZ3JhbUVsZW1lbnQKK3N0cnVjdCBEUHJvZ3JhbUVsZW1lbnRfczsKKyNlbmRpZgorCisjaWZu
ZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2dyYW0KKyNkZWZpbmUgVFNGX0RFRklORV9T
VFJVQ1RfREVDTF9EUHJvZ3JhbQorc3RydWN0IERQcm9ncmFtX3M7CisjZW5kaWYKKworI2lmbmRl
ZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlvbl9fbW92CisjZGVmaW5lIFRTRl9E
RUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9uX19tb3YKK3N0cnVjdCBESW5zdHJ1Y3Rpb25f
X21vdl9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1
Y3Rpb25fX2FkZAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlvbl9f
YWRkCitzdHJ1Y3QgREluc3RydWN0aW9uX19hZGRfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9E
RUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9uX19hbGxvYworI2RlZmluZSBUU0ZfREVGSU5F
X1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlvbl9fYWxsb2MKK3N0cnVjdCBESW5zdHJ1Y3Rpb25fX2Fs
bG9jX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVj
dGlvbl9fcmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9uX19y
ZXQKK3N0cnVjdCBESW5zdHJ1Y3Rpb25fX3JldF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RF
RklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2p1bXAKKyNkZWZpbmUgVFNGX0RFRklORV9T
VFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2p1bXAKK3N0cnVjdCBESW5zdHJ1Y3Rpb25fX2p1bXBf
czsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9u
X19jYWxsCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9uX19jYWxs
CitzdHJ1Y3QgREluc3RydWN0aW9uX19jYWxsX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX1NUUlVDVF9ERUNMX2ludDE2X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9E
RUNMX2ludDE2X19hcnJheQorc3RydWN0IGludDE2X19hcnJheV9zOworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm8KKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm8KK3N0cnVj
dCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFQ0xfRFZhcmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9T
VFJVQ1RfREVDTF9EVmFyaWFibGVEZWNsX19hcnJheQorc3RydWN0IERWYXJpYWJsZURlY2xfX2Fy
cmF5X3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVj
dGlvbl9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25f
X2FycmF5CitzdHJ1Y3QgREluc3RydWN0aW9uX19hcnJheV9zOworI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9TVFJVQ1RfREVDTF9EUHJvZ3JhbUVsZW1lbnRfX2FycmF5CisjZGVmaW5lIFRT
Rl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2dyYW1FbGVtZW50X19hcnJheQorc3RydWN0IERQcm9n
cmFtRWxlbWVudF9fYXJyYXlfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURF
Rl9EVmFyaWFibGVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EVmFyaWFibGVEZWNs
Cit0eXBlZGVmIHN0cnVjdCBEVmFyaWFibGVEZWNsX3MgRFZhcmlhYmxlRGVjbF90OworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbgorI2RlZmluZSBUU0Zf
REVGSU5FX1RZUEVERUZfREluc3RydWN0aW9uCit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rpb25f
cyBESW5zdHJ1Y3Rpb25fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9E
UHJvY2VkdXJlCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EUHJvY2VkdXJlCit0eXBlZGVm
IHN0cnVjdCBEUHJvY2VkdXJlX3MgRFByb2NlZHVyZV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNG
X0RFRklORV9UWVBFREVGX0RQcm9jZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURF
Rl9EUHJvY2VkdXJlRGVjbAordHlwZWRlZiBzdHJ1Y3QgRFByb2NlZHVyZURlY2xfcyBEUHJvY2Vk
dXJlRGVjbF90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQcm9jZWR1
cmVEZWZuCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EUHJvY2VkdXJlRGVmbgordHlwZWRl
ZiBzdHJ1Y3QgRFByb2NlZHVyZURlZm5fcyBEUHJvY2VkdXJlRGVmbl90OworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQcm9ncmFtRWxlbWVudAorI2RlZmluZSBUU0ZfREVG
SU5FX1RZUEVERUZfRFByb2dyYW1FbGVtZW50Cit0eXBlZGVmIHN0cnVjdCBEUHJvZ3JhbUVsZW1l
bnRfcyBEUHJvZ3JhbUVsZW1lbnRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQ
RURFRl9EUHJvZ3JhbQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRFByb2dyYW0KK3R5cGVk
ZWYgc3RydWN0IERQcm9ncmFtX3MgRFByb2dyYW1fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9E
RUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX21vdgorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVE
RUZfREluc3RydWN0aW9uX19tb3YKK3R5cGVkZWYgc3RydWN0IERJbnN0cnVjdGlvbl9fbW92X3Mg
REluc3RydWN0aW9uX19tb3ZfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURF
Rl9ESW5zdHJ1Y3Rpb25fX2FkZAorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfREluc3RydWN0
aW9uX19hZGQKK3R5cGVkZWYgc3RydWN0IERJbnN0cnVjdGlvbl9fYWRkX3MgREluc3RydWN0aW9u
X19hZGRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rp
b25fX2FsbG9jCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX2FsbG9j
Cit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rpb25fX2FsbG9jX3MgREluc3RydWN0aW9uX19hbGxv
Y190OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbl9f
cmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX3JldAordHlwZWRl
ZiBzdHJ1Y3QgREluc3RydWN0aW9uX19yZXRfcyBESW5zdHJ1Y3Rpb25fX3JldF90OworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbl9fanVtcAorI2RlZmlu
ZSBUU0ZfREVGSU5FX1RZUEVERUZfREluc3RydWN0aW9uX19qdW1wCit0eXBlZGVmIHN0cnVjdCBE
SW5zdHJ1Y3Rpb25fX2p1bXBfcyBESW5zdHJ1Y3Rpb25fX2p1bXBfdDsKKyNlbmRpZgorCisjaWZu
ZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX2NhbGwKKyNkZWZpbmUgVFNGX0RF
RklORV9UWVBFREVGX0RJbnN0cnVjdGlvbl9fY2FsbAordHlwZWRlZiBzdHJ1Y3QgREluc3RydWN0
aW9uX19jYWxsX3MgREluc3RydWN0aW9uX19jYWxsX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1RZUEVERUZfaW50MTZfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9p
bnQxNl9fYXJyYXkKK3R5cGVkZWYgc3RydWN0IGludDE2X19hcnJheV9zIGludDE2X19hcnJheV90
OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbl9fYnJh
bmNoWmVybworI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfREluc3RydWN0aW9uX19icmFuY2ha
ZXJvCit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fcyBESW5zdHJ1Y3Rp
b25fX2JyYW5jaFplcm9fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9E
VmFyaWFibGVEZWNsX19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRFZhcmlhYmxl
RGVjbF9fYXJyYXkKK3R5cGVkZWYgc3RydWN0IERWYXJpYWJsZURlY2xfX2FycmF5X3MgRFZhcmlh
YmxlRGVjbF9fYXJyYXlfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9E
SW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rp
b25fX2FycmF5Cit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rpb25fX2FycmF5X3MgREluc3RydWN0
aW9uX19hcnJheV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQcm9n
cmFtRWxlbWVudF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RQcm9ncmFtRWxl
bWVudF9fYXJyYXkKK3R5cGVkZWYgc3RydWN0IERQcm9ncmFtRWxlbWVudF9fYXJyYXlfcyBEUHJv
Z3JhbUVsZW1lbnRfX2FycmF5X3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVE
RUZfRE9wZXJhbmQKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RPcGVyYW5kCit0eXBlZGVm
IGludDE2X3QgRE9wZXJhbmRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURF
Rl9EVHlwZQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRFR5cGUKK3R5cGVkZWYgY2hhciog
RFR5cGVfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9EQ29kZU9mZnNl
dAorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRENvZGVPZmZzZXQKK3R5cGVkZWYgaW50MTZf
dCBEQ29kZU9mZnNldF90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJ
bnN0cnVjdGlvbl9fY2FsbF9fYXJncworI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfREluc3Ry
dWN0aW9uX19jYWxsX19hcmdzCit0eXBlZGVmIGludDE2X19hcnJheV90IERJbnN0cnVjdGlvbl9f
Y2FsbF9fYXJnc190OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQcm9j
ZWR1cmVEZWZuX192YXJpYWJsZXMKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RQcm9jZWR1
cmVEZWZuX192YXJpYWJsZXMKK3R5cGVkZWYgRFZhcmlhYmxlRGVjbF9fYXJyYXlfdCBEUHJvY2Vk
dXJlRGVmbl9fdmFyaWFibGVzX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVE
RUZfRFByb2NlZHVyZURlZm5fX2NvZGUKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RQcm9j
ZWR1cmVEZWZuX19jb2RlCit0eXBlZGVmIERJbnN0cnVjdGlvbl9fYXJyYXlfdCBEUHJvY2VkdXJl
RGVmbl9fY29kZV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQcm9n
cmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EUHJvZ3JhbV9fZ2xvYmFs
cwordHlwZWRlZiBEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3QgRFByb2dyYW1fX2dsb2JhbHNfdDsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EVmFyaWFibGVEZWNsCisj
ZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EVmFyaWFibGVEZWNsCitzdHJ1Y3QgRFZhcmlh
YmxlRGVjbF9zIHsKKyAgICBEVHlwZV90IHR5cGU7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNG
X0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fbW92CisjZGVmaW5lIFRTRl9ERUZJTkVf
U1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX21vdgorc3RydWN0IERJbnN0cnVjdGlvbl9fbW92X3Mg
eworICAgIERPcGVyYW5kX3QgZGVzdDsKKyAgICBET3BlcmFuZF90IHNyYzsKK307CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19hZGQKKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fYWRkCitzdHJ1Y3QgREluc3Ry
dWN0aW9uX19hZGRfcyB7CisgICAgRE9wZXJhbmRfdCBkZXN0OworICAgIERPcGVyYW5kX3Qgc3Jj
OworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rp
b25fX2FsbG9jCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX2Fs
bG9jCitzdHJ1Y3QgREluc3RydWN0aW9uX19hbGxvY19zIHsKKyAgICBEVHlwZV90IHR5cGU7Cit9
OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9f
cmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX3JldAorc3Ry
dWN0IERJbnN0cnVjdGlvbl9fcmV0X3MgeworICAgIERPcGVyYW5kX3Qgc3JjOworfTsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX2p1bXAKKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fanVtcAorc3RydWN0IERJ
bnN0cnVjdGlvbl9fanVtcF9zIHsKKyAgICBEQ29kZU9mZnNldF90IHRhcmdldDsKK307CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfaW50MTZfX2FycmF5CisjZGVmaW5l
IFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9pbnQxNl9fYXJyYXkKK3N0cnVjdCBpbnQxNl9fYXJyYXlf
cyB7CisgICAgaW50MTZfdCAqZGF0YTsKKyAgICB1aW50MzJfdCBsZW47Cit9OworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fY2FsbAorI2RlZmlu
ZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19jYWxsCitzdHJ1Y3QgREluc3Ry
dWN0aW9uX19jYWxsX3MgeworICAgIERPcGVyYW5kX3QgZGVzdDsKKyAgICBET3BlcmFuZF90IGNh
bGxlZTsKKyAgICBESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCBhcmdzOworfTsKKyNlbmRpZgor
CisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm8K
KyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fYnJhbmNoWmVybwor
c3RydWN0IERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zIHsKKyAgICBET3BlcmFuZF90IHNyYzsK
KyAgICBEQ29kZU9mZnNldF90IHRhcmdldDsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RF
Rl9ESW5zdHJ1Y3Rpb24KK3N0cnVjdCBESW5zdHJ1Y3Rpb25fcyB7CisgICAgdHNmX2Nob2ljZV90
IHZhbHVlOworICAgIHVuaW9uIHsKKyAgICAgICAgREluc3RydWN0aW9uX19tb3ZfdCBtb3Y7Cisg
ICAgICAgIERJbnN0cnVjdGlvbl9fYWRkX3QgYWRkOworICAgICAgICBESW5zdHJ1Y3Rpb25fX2Fs
bG9jX3QgYWxsb2M7CisgICAgICAgIERJbnN0cnVjdGlvbl9fcmV0X3QgcmV0OworICAgICAgICBE
SW5zdHJ1Y3Rpb25fX2p1bXBfdCBqdW1wOworICAgICAgICBESW5zdHJ1Y3Rpb25fX2NhbGxfdCBj
YWxsOworICAgICAgICBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCBicmFuY2haZXJvOworICAg
IH0gdTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRFByb2Nl
ZHVyZQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRFByb2NlZHVyZQorc3RydWN0IERQ
cm9jZWR1cmVfcyB7CisgICAgY2hhciogbmFtZTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1NUUlVDVF9ERUZfRFByb2NlZHVyZURlY2wKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJV
Q1RfREVGX0RQcm9jZWR1cmVEZWNsCitzdHJ1Y3QgRFByb2NlZHVyZURlY2xfcyB7CisgICAgY2hh
ciogbmFtZTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRFZh
cmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RWYXJpYWJs
ZURlY2xfX2FycmF5CitzdHJ1Y3QgRFZhcmlhYmxlRGVjbF9fYXJyYXlfcyB7CisgICAgRFZhcmlh
YmxlRGVjbF90ICpkYXRhOworICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lmbmRl
ZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19hcnJheQorI2RlZmluZSBUU0Zf
REVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19hcnJheQorc3RydWN0IERJbnN0cnVjdGlv
bl9fYXJyYXlfcyB7CisgICAgREluc3RydWN0aW9uX3QgKmRhdGE7CisgICAgdWludDMyX3QgbGVu
OworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EUHJvY2VkdXJl
RGVmbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRFByb2NlZHVyZURlZm4KK3N0cnVj
dCBEUHJvY2VkdXJlRGVmbl9zIHsKKyAgICBjaGFyKiBuYW1lOworICAgIERQcm9jZWR1cmVEZWZu
X192YXJpYWJsZXNfdCB2YXJpYWJsZXM7CisgICAgRFByb2NlZHVyZURlZm5fX2NvZGVfdCBjb2Rl
OworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EUHJvZ3JhbUVs
ZW1lbnQKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFtRWxlbWVudAorc3Ry
dWN0IERQcm9ncmFtRWxlbWVudF9zIHsKKyAgICB0c2ZfY2hvaWNlX3QgdmFsdWU7CisgICAgdW5p
b24geworICAgICAgICBEUHJvY2VkdXJlRGVjbF90IHByb2NlZHVyZURlY2w7CisgICAgICAgIERQ
cm9jZWR1cmVEZWZuX3QgcHJvY2VkdXJlRGVmbjsKKyAgICB9IHU7Cit9OworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFtRWxlbWVudF9fYXJyYXkKK3N0cnVjdCBE
UHJvZ3JhbUVsZW1lbnRfX2FycmF5X3MgeworICAgIERQcm9ncmFtRWxlbWVudF90ICpkYXRhOwor
ICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVD
VF9ERUZfRFByb2dyYW0KKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFtCitz
dHJ1Y3QgRFByb2dyYW1fcyB7CisgICAgRFByb2dyYW1fX2dsb2JhbHNfdCBnbG9iYWxzOworfTsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfREluc3RydWN0aW9uCisj
ZGVmaW5lIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfREluc3RydWN0aW9uCisjZGVmaW5lIERJbnN0
cnVjdGlvbl9fbm9wIDAKKyNkZWZpbmUgREluc3RydWN0aW9uX19tb3YgMQorI2RlZmluZSBESW5z
dHJ1Y3Rpb25fX2FkZCAyCisjZGVmaW5lIERJbnN0cnVjdGlvbl9fYWxsb2MgMworI2RlZmluZSBE
SW5zdHJ1Y3Rpb25fX3JldCA0CisjZGVmaW5lIERJbnN0cnVjdGlvbl9fanVtcCA1CisjZGVmaW5l
IERJbnN0cnVjdGlvbl9fY2FsbCA2CisjZGVmaW5lIERJbnN0cnVjdGlvbl9fYnJhbmNoWmVybyA3
CitzdGF0aWMgVFNGX2lubGluZSBjb25zdCBjaGFyICpESW5zdHJ1Y3Rpb25fX3RvX3N0cih0c2Zf
Y2hvaWNlX3QgdmFsdWUpIHsKKyAgICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSAwOiByZXR1
cm4gIm5vcCI7CisgICAgY2FzZSAxOiByZXR1cm4gIm1vdiI7CisgICAgY2FzZSAyOiByZXR1cm4g
ImFkZCI7CisgICAgY2FzZSAzOiByZXR1cm4gImFsbG9jIjsKKyAgICBjYXNlIDQ6IHJldHVybiAi
cmV0IjsKKyAgICBjYXNlIDU6IHJldHVybiAianVtcCI7CisgICAgY2FzZSA2OiByZXR1cm4gImNh
bGwiOworICAgIGNhc2UgNzogcmV0dXJuICJicmFuY2haZXJvIjsKKyAgICBjYXNlIFVJTlQzMl9N
QVg6IHJldHVybiAiPHVua25vd24+IjsKKyAgICBkZWZhdWx0OiBhYm9ydCgpOworICAgIH0KK30K
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfRFByb2dyYW1FbGVtZW50
CisjZGVmaW5lIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfRFByb2dyYW1FbGVtZW50CisjZGVmaW5l
IERQcm9ncmFtRWxlbWVudF9fcHJvY2VkdXJlRGVjbCAwCisjZGVmaW5lIERQcm9ncmFtRWxlbWVu
dF9fcHJvY2VkdXJlRGVmbiAxCitzdGF0aWMgVFNGX2lubGluZSBjb25zdCBjaGFyICpEUHJvZ3Jh
bUVsZW1lbnRfX3RvX3N0cih0c2ZfY2hvaWNlX3QgdmFsdWUpIHsKKyAgICBzd2l0Y2ggKHZhbHVl
KSB7CisgICAgY2FzZSAwOiByZXR1cm4gInByb2NlZHVyZURlY2wiOworICAgIGNhc2UgMTogcmV0
dXJuICJwcm9jZWR1cmVEZWZuIjsKKyAgICBjYXNlIFVJTlQzMl9NQVg6IHJldHVybiAiPHVua25v
d24+IjsKKyAgICBkZWZhdWx0OiBhYm9ydCgpOworICAgIH0KK30KKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfRlVOQ1NfRE9wZXJhbmQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19ET3Bl
cmFuZAordHNmX3R5cGVfdCAqRE9wZXJhbmRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVf
Tk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIERPcGVyYW5kX19kZXN0cnVjdChET3Bl
cmFuZF90ICpkYXRhKSB7IH0KK3RzZl9nZW5ydHJfdCAqRE9wZXJhbmRfX2dldF9nZW5lcmF0b3Io
dm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRE9wZXJhbmRfX2dl
dF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5l
IHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fRE9wZXJhbmQodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1
cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBET3BlcmFuZF9fZ2V0X3R5cGUoKSk7IH0KK3N0
YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX0RPcGVyYW5kKHRzZl9i
dWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBET3BlcmFu
ZF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRE9wZXJh
bmRfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUo
RE9wZXJhbmRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRz
Zl9idWZmZXJfdCAqRE9wZXJhbmRfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lv
bikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihET3BlcmFuZF9fZ2V0X2dlbmVy
YXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSBET3BlcmFuZF90ICpE
T3BlcmFuZF9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChET3BlcmFuZF90Kil0
c2ZfcGFyc2VyX3BhcnNlKERPcGVyYW5kX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIERPcGVyYW5kX3QgKkRPcGVyYW5kX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1
Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoRE9wZXJhbmRfdCopdHNmX3BhcnNlcl9wYXJzZV9p
bihET3BlcmFuZF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5s
aW5lIHRzZl9ib29sX3QgRE9wZXJhbmRfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIERP
cGVyYW5kX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9p
bnRvKERPcGVyYW5kX19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jv
b2xfdCBET3BlcmFuZF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERPcGVy
YW5kX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitET3BlcmFuZF90ICpET3BlcmFu
ZF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOwordHNmX2Jvb2xfdCBET3BlcmFuZF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1
dF90ICppbnAsIERPcGVyYW5kX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRFR5cGUKKyNkZWZpbmUgVFNGX0RFRklO
RV9GVU5DU19EVHlwZQordHNmX3R5cGVfdCAqRFR5cGVfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7Cit2b2lkIERUeXBlX19kZXN0cnVjdChEVHlwZV90ICpkYXRhKTsKK3Rz
Zl9nZW5ydHJfdCAqRFR5cGVfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3RzZl9wYXJzZXJfdCAqRFR5cGVfX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fRFR5
cGUodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBE
VHlwZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2lu
c3RhbmNlb2ZfX0RUeXBlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2lu
c3RhbmNlb2YoYnVmLCBEVHlwZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRz
Zl9idWZmZXJfdCAqRFR5cGVfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5l
cmF0b3JfZ2VuZXJhdGUoRFR5cGVfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRFR5cGVfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZv
aWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihEVHlwZV9fZ2V0
X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSBEVHlwZV90
ICpEVHlwZV9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChEVHlwZV90Kil0c2Zf
cGFyc2VyX3BhcnNlKERUeXBlX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5s
aW5lIERUeXBlX3QgKkRUeXBlX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVn
aW9uKSB7IHJldHVybiAoRFR5cGVfdCopdHNmX3BhcnNlcl9wYXJzZV9pbihEVHlwZV9fZ2V0X3Bh
cnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgRFR5
cGVfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIERUeXBlX3QgKmRhdGEsIHZvaWQgKnJl
Z2lvbikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKERUeXBlX19nZXRfcGFyc2VyKCks
IGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEVHlwZV9fd3JpdGUodHNmX3N0cmVh
bV9maWxlX291dHB1dF90ICpvdXQsIERUeXBlX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJ
TkU7CitEVHlwZV90ICpEVHlwZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBEVHlwZV9fcmVhZF9pbnRvKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIERUeXBlX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRENvZGVPZmZzZXQK
KyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19EQ29kZU9mZnNldAordHNmX3R5cGVfdCAqRENvZGVP
ZmZzZXRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNG
X2lubGluZSB2b2lkIERDb2RlT2Zmc2V0X19kZXN0cnVjdChEQ29kZU9mZnNldF90ICpkYXRhKSB7
IH0KK3RzZl9nZW5ydHJfdCAqRENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRENvZGVPZmZzZXRfX2dldF9wYXJzZXIo
dm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29s
X3QgaW5zdGFuY2VvZl9fRENvZGVPZmZzZXQodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNm
X3R5cGVfaW5zdGFuY2VvZih0eXBlLCBEQ29kZU9mZnNldF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX0RDb2RlT2Zmc2V0KHRzZl9i
dWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBEQ29kZU9m
ZnNldF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRENv
ZGVPZmZzZXRfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2Vu
ZXJhdGUoRENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0Zf
aW5saW5lIHRzZl9idWZmZXJfdCAqRENvZGVPZmZzZXRfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEs
IHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihEQ29kZU9m
ZnNldF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSBEQ29kZU9mZnNldF90ICpEQ29kZU9mZnNldF9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsg
cmV0dXJuIChEQ29kZU9mZnNldF90Kil0c2ZfcGFyc2VyX3BhcnNlKERDb2RlT2Zmc2V0X19nZXRf
cGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIERDb2RlT2Zmc2V0X3QgKkRDb2Rl
T2Zmc2V0X19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVy
biAoRENvZGVPZmZzZXRfdCopdHNmX3BhcnNlcl9wYXJzZV9pbihEQ29kZU9mZnNldF9fZ2V0X3Bh
cnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgRENv
ZGVPZmZzZXRfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIERDb2RlT2Zmc2V0X3QgKmRh
dGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKERDb2RlT2Zm
c2V0X19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEQ29k
ZU9mZnNldF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERDb2RlT2Zmc2V0
X3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitEQ29kZU9mZnNldF90ICpEQ29kZU9m
ZnNldF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05P
SU5MSU5FOwordHNmX2Jvb2xfdCBEQ29kZU9mZnNldF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmls
ZV9pbnB1dF90ICppbnAsIERDb2RlT2Zmc2V0X3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRFZhcmlhYmxlRGVjbAor
I2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RWYXJpYWJsZURlY2wKK3RzZl90eXBlX3QgKkRWYXJp
YWJsZURlY2xfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERW
YXJpYWJsZURlY2xfX2Rlc3RydWN0KERWYXJpYWJsZURlY2xfdCAqZGF0YSk7Cit0c2ZfZ2VucnRy
X3QgKkRWYXJpYWJsZURlY2xfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3RzZl9wYXJzZXJfdCAqRFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcih2b2lkKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5j
ZW9mX19EVmFyaWFibGVEZWNsKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2lu
c3RhbmNlb2YodHlwZSwgRFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0Zf
aW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX0RWYXJpYWJsZURlY2wodHNmX2J1ZmZl
cl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIERWYXJpYWJsZURl
Y2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkRWYXJp
YWJsZURlY2xfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2Vu
ZXJhdGUoRFZhcmlhYmxlRGVjbF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRT
Rl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpEVmFyaWFibGVEZWNsX19nZW5lcmF0ZV9pbih2b2lkICpk
YXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4oRFZh
cmlhYmxlRGVjbF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNG
X2lubGluZSBEVmFyaWFibGVEZWNsX3QgKkRWYXJpYWJsZURlY2xfX3BhcnNlKHRzZl9idWZmZXJf
dCAqYnVmKSB7IHJldHVybiAoRFZhcmlhYmxlRGVjbF90Kil0c2ZfcGFyc2VyX3BhcnNlKERWYXJp
YWJsZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRFZhcmlh
YmxlRGVjbF90ICpEVmFyaWFibGVEZWNsX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9p
ZCAqcmVnaW9uKSB7IHJldHVybiAoRFZhcmlhYmxlRGVjbF90Kil0c2ZfcGFyc2VyX3BhcnNlX2lu
KERWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNG
X2lubGluZSB0c2ZfYm9vbF90IERWYXJpYWJsZURlY2xfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90
ICpidWYsIERWYXJpYWJsZURlY2xfdCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2Zf
cGFyc2VyX3BhcnNlX2ludG8oRFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEs
IHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgRFZhcmlhYmxlRGVjbF9fd3JpdGUodHNmX3N0cmVhbV9m
aWxlX291dHB1dF90ICpvdXQsIERWYXJpYWJsZURlY2xfdCAqZGF0YSkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKK0RWYXJpYWJsZURlY2xfdCAqRFZhcmlhYmxlRGVjbF9fcmVhZCh0c2Zfc3RyZWFt
X2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBE
VmFyaWFibGVEZWNsX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgRFZh
cmlhYmxlRGVjbF90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlvbgorI2RlZmluZSBUU0ZfREVGSU5F
X0ZVTkNTX0RJbnN0cnVjdGlvbgordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19nZXRfdHlwZSh2
b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBESW5zdHJ1Y3Rpb25fX2Rlc3RydWN0
KERJbnN0cnVjdGlvbl90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqREluc3RydWN0aW9uX19nZXRf
Z2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkRJ
bnN0cnVjdGlvbl9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3Rh
dGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19ESW5zdHJ1Y3Rpb24odHNmX3R5
cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBESW5zdHJ1Y3Rp
b25fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0
YW5jZW9mX19ESW5zdHJ1Y3Rpb24odHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZm
ZXJfaW5zdGFuY2VvZihidWYsIERJbnN0cnVjdGlvbl9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqREluc3RydWN0aW9uX19nZW5lcmF0ZSh2b2lkICpkYXRh
KSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERJbnN0cnVjdGlvbl9fZ2V0X2dlbmVy
YXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpESW5zdHJ1
Y3Rpb25fX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNm
X2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihESW5zdHJ1Y3Rpb25fX2dldF9nZW5lcmF0b3IoKSwgZGF0
YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgREluc3RydWN0aW9uX3QgKkRJbnN0cnVj
dGlvbl9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChESW5zdHJ1Y3Rpb25fdCop
dHNmX3BhcnNlcl9wYXJzZShESW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3Rh
dGljIFRTRl9pbmxpbmUgREluc3RydWN0aW9uX3QgKkRJbnN0cnVjdGlvbl9fcGFyc2VfaW4odHNm
X2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERJbnN0cnVjdGlvbl90Kil0
c2ZfcGFyc2VyX3BhcnNlX2luKERJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lv
bik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgREluc3RydWN0aW9uX19wYXJzZV9p
bnRvKHRzZl9idWZmZXJfdCAqYnVmLCBESW5zdHJ1Y3Rpb25fdCAqZGF0YSwgdm9pZCAqcmVnaW9u
KSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oREluc3RydWN0aW9uX19nZXRfcGFyc2Vy
KCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBESW5zdHJ1Y3Rpb25fX3dyaXRl
KHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBESW5zdHJ1Y3Rpb25fdCAqZGF0YSkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK0RJbnN0cnVjdGlvbl90ICpESW5zdHJ1Y3Rpb25fX3JlYWQo
dHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3Rz
Zl9ib29sX3QgREluc3RydWN0aW9uX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmlucCwgREluc3RydWN0aW9uX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZQorI2RlZmluZSBUU0Zf
REVGSU5FX0ZVTkNTX0RQcm9jZWR1cmUKK3RzZl90eXBlX3QgKkRQcm9jZWR1cmVfX2dldF90eXBl
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQcm9jZWR1cmVfX2Rlc3RydWN0
KERQcm9jZWR1cmVfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKkRQcm9jZWR1cmVfX2dldF9nZW5l
cmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRFByb2Nl
ZHVyZV9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRT
Rl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19EUHJvY2VkdXJlKHRzZl90eXBlX3QgKnR5
cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgRFByb2NlZHVyZV9fZ2V0X3R5
cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX0RQ
cm9jZWR1cmUodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2Vv
ZihidWYsIERQcm9jZWR1cmVfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2Zf
YnVmZmVyX3QgKkRQcm9jZWR1cmVfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9n
ZW5lcmF0b3JfZ2VuZXJhdGUoRFByb2NlZHVyZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQor
c3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpEUHJvY2VkdXJlX19nZW5lcmF0ZV9pbih2
b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVf
aW4oRFByb2NlZHVyZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMg
VFNGX2lubGluZSBEUHJvY2VkdXJlX3QgKkRQcm9jZWR1cmVfX3BhcnNlKHRzZl9idWZmZXJfdCAq
YnVmKSB7IHJldHVybiAoRFByb2NlZHVyZV90Kil0c2ZfcGFyc2VyX3BhcnNlKERQcm9jZWR1cmVf
X2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRFByb2NlZHVyZV90ICpE
UHJvY2VkdXJlX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJl
dHVybiAoRFByb2NlZHVyZV90Kil0c2ZfcGFyc2VyX3BhcnNlX2luKERQcm9jZWR1cmVfX2dldF9w
YXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IERQ
cm9jZWR1cmVfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIERQcm9jZWR1cmVfdCAqZGF0
YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oRFByb2NlZHVy
ZV9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgRFByb2Nl
ZHVyZV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERQcm9jZWR1cmVfdCAq
ZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK0RQcm9jZWR1cmVfdCAqRFByb2NlZHVyZV9f
cmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
OwordHNmX2Jvb2xfdCBEUHJvY2VkdXJlX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0
X3QgKmlucCwgRFByb2NlZHVyZV90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9jZWR1cmVEZWNsCisjZGVmaW5l
IFRTRl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZURlY2wKK3RzZl90eXBlX3QgKkRQcm9jZWR1cmVE
ZWNsX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEUHJvY2Vk
dXJlRGVjbF9fZGVzdHJ1Y3QoRFByb2NlZHVyZURlY2xfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3Qg
KkRQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJ
TkU7Cit0c2ZfcGFyc2VyX3QgKkRQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2VyKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNl
b2ZfX0RQcm9jZWR1cmVEZWNsKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2lu
c3RhbmNlb2YodHlwZSwgRFByb2NlZHVyZURlY2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNG
X2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19EUHJvY2VkdXJlRGVjbCh0c2ZfYnVm
ZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgRFByb2NlZHVy
ZURlY2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkRQ
cm9jZWR1cmVEZWNsX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9y
X2dlbmVyYXRlKERQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9CitzdGF0
aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkRQcm9jZWR1cmVEZWNsX19nZW5lcmF0ZV9pbih2
b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVf
aW4oRFByb2NlZHVyZURlY2xfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3Rh
dGljIFRTRl9pbmxpbmUgRFByb2NlZHVyZURlY2xfdCAqRFByb2NlZHVyZURlY2xfX3BhcnNlKHRz
Zl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAoRFByb2NlZHVyZURlY2xfdCopdHNmX3BhcnNlcl9w
YXJzZShEUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNGX2lu
bGluZSBEUHJvY2VkdXJlRGVjbF90ICpEUHJvY2VkdXJlRGVjbF9fcGFyc2VfaW4odHNmX2J1ZmZl
cl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERQcm9jZWR1cmVEZWNsX3QqKXRzZl9w
YXJzZXJfcGFyc2VfaW4oRFByb2NlZHVyZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24p
OyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IERQcm9jZWR1cmVEZWNsX19wYXJzZV9p
bnRvKHRzZl9idWZmZXJfdCAqYnVmLCBEUHJvY2VkdXJlRGVjbF90ICpkYXRhLCB2b2lkICpyZWdp
b24pIHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhEUHJvY2VkdXJlRGVjbF9fZ2V0X3Bh
cnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgRFByb2NlZHVyZURlY2xf
X3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEUHJvY2VkdXJlRGVjbF90ICpk
YXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworRFByb2NlZHVyZURlY2xfdCAqRFByb2NlZHVy
ZURlY2xfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKK3RzZl9ib29sX3QgRFByb2NlZHVyZURlY2xfX3JlYWRfaW50byh0c2Zfc3RyZWFt
X2ZpbGVfaW5wdXRfdCAqaW5wLCBEUHJvY2VkdXJlRGVjbF90ICpyZXN1bHQpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9jZWR1
cmVEZWZuCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZURlZm4KK3RzZl90eXBl
X3QgKkRQcm9jZWR1cmVEZWZuX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Owordm9pZCBEUHJvY2VkdXJlRGVmbl9fZGVzdHJ1Y3QoRFByb2NlZHVyZURlZm5fdCAqZGF0YSk7
Cit0c2ZfZ2VucnRyX3QgKkRQcm9jZWR1cmVEZWZuX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkRQcm9jZWR1cmVEZWZuX19nZXRfcGFy
c2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2Zf
Ym9vbF90IGluc3RhbmNlb2ZfX0RQcm9jZWR1cmVEZWZuKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0
dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgRFByb2NlZHVyZURlZm5fX2dldF90eXBlKCkp
OyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19EUHJvY2Vk
dXJlRGVmbih0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9m
KGJ1ZiwgRFByb2NlZHVyZURlZm5fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYnVmZmVyX3QgKkRQcm9jZWR1cmVEZWZuX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVy
biB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERQcm9jZWR1cmVEZWZuX19nZXRfZ2VuZXJhdG9yKCks
IGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkRQcm9jZWR1cmVEZWZu
X19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5l
cmF0b3JfZ2VuZXJhdGVfaW4oRFByb2NlZHVyZURlZm5fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwg
cmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRFByb2NlZHVyZURlZm5fdCAqRFByb2NlZHVy
ZURlZm5fX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAoRFByb2NlZHVyZURlZm5f
dCopdHNmX3BhcnNlcl9wYXJzZShEUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcigpLCBidWYpOyB9
CitzdGF0aWMgVFNGX2lubGluZSBEUHJvY2VkdXJlRGVmbl90ICpEUHJvY2VkdXJlRGVmbl9fcGFy
c2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERQcm9jZWR1
cmVEZWZuX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4oRFByb2NlZHVyZURlZm5fX2dldF9wYXJzZXIo
KSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IERQcm9jZWR1
cmVEZWZuX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBEUHJvY2VkdXJlRGVmbl90ICpk
YXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhEUHJvY2Vk
dXJlRGVmbl9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3Qg
RFByb2NlZHVyZURlZm5fX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEUHJv
Y2VkdXJlRGVmbl90ICpkYXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworRFByb2NlZHVyZURl
Zm5fdCAqRFByb2NlZHVyZURlZm5fX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgRFByb2NlZHVyZURlZm5fX3JlYWRf
aW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBEUHJvY2VkdXJlRGVmbl90ICpyZXN1
bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X0ZVTkNTX0RQcm9ncmFtRWxlbWVudAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9ncmFt
RWxlbWVudAordHNmX3R5cGVfdCAqRFByb2dyYW1FbGVtZW50X19nZXRfdHlwZSh2b2lkKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEUHJvZ3JhbUVsZW1lbnRfX2Rlc3RydWN0KERQcm9n
cmFtRWxlbWVudF90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqRFByb2dyYW1FbGVtZW50X19nZXRf
Z2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkRQ
cm9ncmFtRWxlbWVudF9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
c3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19EUHJvZ3JhbUVsZW1lbnQo
dHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBEUHJv
Z3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90
IGJ1Zl9pbnN0YW5jZW9mX19EUHJvZ3JhbUVsZW1lbnQodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0
dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIERQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUo
KSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRFByb2dyYW1FbGVtZW50X19n
ZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERQcm9n
cmFtRWxlbWVudF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUg
dHNmX2J1ZmZlcl90ICpEUHJvZ3JhbUVsZW1lbnRfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZv
aWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihEUHJvZ3JhbUVs
ZW1lbnRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxp
bmUgRFByb2dyYW1FbGVtZW50X3QgKkRQcm9ncmFtRWxlbWVudF9fcGFyc2UodHNmX2J1ZmZlcl90
ICpidWYpIHsgcmV0dXJuIChEUHJvZ3JhbUVsZW1lbnRfdCopdHNmX3BhcnNlcl9wYXJzZShEUHJv
Z3JhbUVsZW1lbnRfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRFBy
b2dyYW1FbGVtZW50X3QgKkRQcm9ncmFtRWxlbWVudF9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpi
dWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERQcm9ncmFtRWxlbWVudF90Kil0c2ZfcGFyc2Vy
X3BhcnNlX2luKERQcm9ncmFtRWxlbWVudF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0K
K3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgRFByb2dyYW1FbGVtZW50X19wYXJzZV9pbnRv
KHRzZl9idWZmZXJfdCAqYnVmLCBEUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YSwgdm9pZCAqcmVnaW9u
KSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oRFByb2dyYW1FbGVtZW50X19nZXRfcGFy
c2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEUHJvZ3JhbUVsZW1lbnRf
X3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEUHJvZ3JhbUVsZW1lbnRfdCAq
ZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK0RQcm9ncmFtRWxlbWVudF90ICpEUHJvZ3Jh
bUVsZW1lbnRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK3RzZl9ib29sX3QgRFByb2dyYW1FbGVtZW50X19yZWFkX2ludG8odHNmX3N0
cmVhbV9maWxlX2lucHV0X3QgKmlucCwgRFByb2dyYW1FbGVtZW50X3QgKnJlc3VsdCkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRFBy
b2dyYW0KKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19EUHJvZ3JhbQordHNmX3R5cGVfdCAqRFBy
b2dyYW1fX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQcm9n
cmFtX19kZXN0cnVjdChEUHJvZ3JhbV90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqRFByb2dyYW1f
X2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJf
dCAqRFByb2dyYW1fX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0
YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fRFByb2dyYW0odHNmX3R5cGVf
dCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBEUHJvZ3JhbV9fZ2V0
X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2Zf
X0RQcm9ncmFtKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNl
b2YoYnVmLCBEUHJvZ3JhbV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9i
dWZmZXJfdCAqRFByb2dyYW1fX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5l
cmF0b3JfZ2VuZXJhdGUoRFByb2dyYW1fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRFByb2dyYW1fX2dlbmVyYXRlX2luKHZvaWQgKmRh
dGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihEUHJv
Z3JhbV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSBEUHJvZ3JhbV90ICpEUHJvZ3JhbV9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJu
IChEUHJvZ3JhbV90Kil0c2ZfcGFyc2VyX3BhcnNlKERQcm9ncmFtX19nZXRfcGFyc2VyKCksIGJ1
Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIERQcm9ncmFtX3QgKkRQcm9ncmFtX19wYXJzZV9pbih0
c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoRFByb2dyYW1fdCopdHNm
X3BhcnNlcl9wYXJzZV9pbihEUHJvZ3JhbV9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0K
K3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgRFByb2dyYW1fX3BhcnNlX2ludG8odHNmX2J1
ZmZlcl90ICpidWYsIERQcm9ncmFtX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNm
X3BhcnNlcl9wYXJzZV9pbnRvKERQcm9ncmFtX19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVn
aW9uKTsgfQordHNmX2Jvb2xfdCBEUHJvZ3JhbV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1
dF90ICpvdXQsIERQcm9ncmFtX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitEUHJv
Z3JhbV90ICpEUHJvZ3JhbV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBEUHJvZ3JhbV9fcmVhZF9pbnRvKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIERQcm9ncmFtX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0
aW9uX19tb3YKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19ESW5zdHJ1Y3Rpb25fX21vdgordHNm
X3R5cGVfdCAqREluc3RydWN0aW9uX19tb3ZfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVf
Tk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIERJbnN0cnVjdGlvbl9fbW92X19kZXN0
cnVjdChESW5zdHJ1Y3Rpb25fX21vdl90ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19hZGQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5D
U19ESW5zdHJ1Y3Rpb25fX2FkZAordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19hZGRfX2dldF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lk
IERJbnN0cnVjdGlvbl9fYWRkX19kZXN0cnVjdChESW5zdHJ1Y3Rpb25fX2FkZF90ICpkYXRhKSB7
IH0KKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19hbGxv
YworI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlvbl9fYWxsb2MKK3RzZl90eXBl
X3QgKkRJbnN0cnVjdGlvbl9fYWxsb2NfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7Cit2b2lkIERJbnN0cnVjdGlvbl9fYWxsb2NfX2Rlc3RydWN0KERJbnN0cnVjdGlvbl9f
YWxsb2NfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0
cnVjdGlvbl9fcmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19yZXQK
K3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fcmV0X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCBESW5zdHJ1Y3Rpb25fX3JldF9f
ZGVzdHJ1Y3QoREluc3RydWN0aW9uX19yZXRfdCAqZGF0YSkgeyB9CisjZW5kaWYKKworI2lmbmRl
ZiBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlvbl9fanVtcAorI2RlZmluZSBUU0ZfREVGSU5F
X0ZVTkNTX0RJbnN0cnVjdGlvbl9fanVtcAordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19qdW1w
X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxp
bmUgdm9pZCBESW5zdHJ1Y3Rpb25fX2p1bXBfX2Rlc3RydWN0KERJbnN0cnVjdGlvbl9fanVtcF90
ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0
aW9uX19jYWxsCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19jYWxsCit0
c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2NhbGxfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7Cit2b2lkIERJbnN0cnVjdGlvbl9fY2FsbF9fZGVzdHJ1Y3QoREluc3RydWN0
aW9uX19jYWxsX3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19E
SW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3MKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19ESW5zdHJ1
Y3Rpb25fX2NhbGxfX2FyZ3MKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19f
Z2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgREluc3RydWN0aW9u
X19jYWxsX19hcmdzX19kZXN0cnVjdChESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCAqZGF0YSk7
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX2ludDE2X19hcnJheQorI2RlZmlu
ZSBUU0ZfREVGSU5FX0ZVTkNTX2ludDE2X19hcnJheQorI2RlZmluZSBpbnQxNl9fYXJyYXlfX2dl
dF90eXBlIGludDE2X19hcnJheVc3Qk9BZ3dMZXBKa09wZUNjQl9vS0tfcmJTQ2ZGcV9BdXRYdEpF
cUhOUEltZlhCTnFjWHpfX2dldF90eXBlCisjZGVmaW5lIGludDE2X19hcnJheV9fZGVzdHJ1Y3Qg
aW50MTZfX2FycmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1m
WEJOcWNYel9fZGVzdHJ1Y3QKK3RzZl90eXBlX3QgKmludDE2X19hcnJheV9fZ2V0X3R5cGUodm9p
ZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgaW50MTZfX2FycmF5X19kZXN0cnVjdChp
bnQxNl9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNT
X0RJbnN0cnVjdGlvbl9fYnJhbmNoWmVybworI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0
cnVjdGlvbl9fYnJhbmNoWmVybwordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19icmFuY2haZXJv
X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxp
bmUgdm9pZCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2Rlc3RydWN0KERJbnN0cnVjdGlvbl9f
YnJhbmNoWmVyb190ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVO
Q1NfRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlcworI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RQ
cm9jZWR1cmVEZWZuX192YXJpYWJsZXMKK3RzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX192YXJp
YWJsZXNfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQcm9j
ZWR1cmVEZWZuX192YXJpYWJsZXNfX2Rlc3RydWN0KERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNf
dCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RWYXJpYWJsZURl
Y2xfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfRFZhcmlhYmxlRGVjbF9fYXJyYXkK
KyNkZWZpbmUgRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlIERWYXJpYWJsZURlY2xfX2Fy
cmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1mWEJOcWNYel9f
Z2V0X3R5cGUKKyNkZWZpbmUgRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2Rlc3RydWN0IERWYXJpYWJs
ZURlY2xfX2FycmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1m
WEJOcWNYel9fZGVzdHJ1Y3QKK3RzZl90eXBlX3QgKkRWYXJpYWJsZURlY2xfX2FycmF5X19nZXRf
dHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEVmFyaWFibGVEZWNsX19h
cnJheV9fZGVzdHJ1Y3QoRFZhcmlhYmxlRGVjbF9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9jZWR1cmVEZWZuX19jb2RlCisjZGVmaW5lIFRT
Rl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZURlZm5fX2NvZGUKK3RzZl90eXBlX3QgKkRQcm9jZWR1
cmVEZWZuX19jb2RlX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9p
ZCBEUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVzdHJ1Y3QoRFByb2NlZHVyZURlZm5fX2NvZGVfdCAq
ZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlvbl9f
YXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19ESW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVm
aW5lIERJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90eXBlIERJbnN0cnVjdGlvbl9fYXJyYXlXN0JP
QWd3TGVwSmtPcGVDY0Jfb0tLX3JiU0NmRnFfQXV0WHRKRXFITlBJbWZYQk5xY1h6X19nZXRfdHlw
ZQorI2RlZmluZSBESW5zdHJ1Y3Rpb25fX2FycmF5X19kZXN0cnVjdCBESW5zdHJ1Y3Rpb25fX2Fy
cmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1mWEJOcWNYel9f
ZGVzdHJ1Y3QKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90eXBlKHZvaWQp
IFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERJbnN0cnVjdGlvbl9fYXJyYXlfX2Rlc3Ry
dWN0KERJbnN0cnVjdGlvbl9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX0ZVTkNTX0RQcm9ncmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1Nf
RFByb2dyYW1fX2dsb2JhbHMKK3RzZl90eXBlX3QgKkRQcm9ncmFtX19nbG9iYWxzX19nZXRfdHlw
ZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEUHJvZ3JhbV9fZ2xvYmFsc19f
ZGVzdHJ1Y3QoRFByb2dyYW1fX2dsb2JhbHNfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX0ZVTkNTX0RQcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklO
RV9GVU5DU19EUHJvZ3JhbUVsZW1lbnRfX2FycmF5CisjZGVmaW5lIERQcm9ncmFtRWxlbWVudF9f
YXJyYXlfX2dldF90eXBlIERQcm9ncmFtRWxlbWVudF9fYXJyYXlXN0JPQWd3TGVwSmtPcGVDY0Jf
b0tLX3JiU0NmRnFfQXV0WHRKRXFITlBJbWZYQk5xY1h6X19nZXRfdHlwZQorI2RlZmluZSBEUHJv
Z3JhbUVsZW1lbnRfX2FycmF5X19kZXN0cnVjdCBEUHJvZ3JhbUVsZW1lbnRfX2FycmF5VzdCT0Fn
d0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1mWEJOcWNYel9fZGVzdHJ1Y3QK
K3RzZl90eXBlX3QgKkRQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2dldF90eXBlKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2Rlc3RydWN0
KERQcm9ncmFtRWxlbWVudF9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9OworI2VuZGlmCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfaXJfc3BlZWQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyX3NwZWVkLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pcl9zcGVlZC5jCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzY3IEBACisjaW5jbHVkZSAidHNmX2lyLmgiCisjaW5jbHVkZSAidHNm
X2lyX2RpZmZlcmVudC5oIgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8aW50dHlwZXMu
aD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaWZkZWYgVFNG
X0JVSUxEX1NZU1RFTQorI2luY2x1ZGUgInRzZi5oIgorI2Vsc2UKKyNpbmNsdWRlIDx0c2YvdHNm
Lmg+CisjZW5kaWYKKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkgeworICAgIGZwcmludGYoc3Rk
ZXJyLCAiVXNhZ2U6IHRzZl9pcl9zcGVlZCBbPGNvdW50Pl1cbiIpOworICAgIGV4aXQoMSk7Cit9
CisKK3N0YXRpYyBkb3VibGUgbWlsbGlUaW1lKHZvaWQpIHsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0
djsKKyAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKyAgICByZXR1cm4gdHYudHZfc2VjICog
MTAwMC4gKyB0di50dl91c2VjIC8gMTAwMC47Cit9CisKKyNkZWZpbmUgVElNRUlUKHN0YXRlbWVu
dCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgZG91YmxlIF9fdGlfYmVmb3JlID0gbWlsbGlUaW1lKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgc3RhdGVtZW50OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG91YmxlIF9fdGlfYWZ0ZXIg
PSBtaWxsaVRpbWUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cHJpbnRmKCIlczogJS4zbGYgbXNcbiIsICNzdGF0ZW1lbnQsIF9fdGlfYWZ0ZXIgLSBfX3RpX2Jl
Zm9yZSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBJZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0
ZXMgZmFsc2UgdGhlbiBpdCBhc3N1bWVzIGFuIGVycm9yIGFuZCBleGl0cy4gKi8KKyNkZWZpbmUg
Q1QoZXhwKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaWYgKCEoZXhwKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
JXM6JWQ6ICVzOiAlc1xuIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwLCB0c2ZfZ2V0X2Vycm9yKCkpOyAgICAg
ICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgw
KQorI2RlZmluZSBDUyhleHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIShleHApKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50IG15
RXJybm8gPSBlcnJubzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczolZDogJXM6ICVzXG4iLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18s
ICNleHAsIHN0cmVycm9yKG15RXJybm8pKTsgICAgICAgXAorICAgICAgICAgICAgZXhpdCgxKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyB2b2lkIHdyaXRlVGVzdChj
b25zdCBjaGFyICpmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwcm9n
cmFtU2l6ZSwgdW5zaWduZWQgbnVtUHJvZ3JhbXMsCisgICAgICAgICAgICAgICAgICAgICAgdHNm
X3ppcF9tb2RlX3QgemlwTW9kZSkgeworICAgIHRzZl96aXBfd3RyX2F0dHJfdCB6aXBBdHRyaWJ1
dGVzOworICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0OworICAgIHVuc2lnbmVkIHBy
b2dyYW1JbmRleDsKKyAgICBjaGFyIGJ1ZlsyNTZdOworICAgIAorICAgIENUKHRzZl96aXBfd3Ry
X2F0dHJfZ2V0X2Zvcl9tb2RlKCZ6aXBBdHRyaWJ1dGVzLCB6aXBNb2RlKSk7CisgICAgQ1Qob3V0
ID0gdHNmX3N0cmVhbV9maWxlX291dHB1dF9vcGVuKGZpbGVuYW1lLCB0c2ZfZmFsc2UsICZ6aXBB
dHRyaWJ1dGVzKSk7CisgICAgCisgICAgZm9yIChwcm9ncmFtSW5kZXggPSAwOyBwcm9ncmFtSW5k
ZXggPCBudW1Qcm9ncmFtczsgKytwcm9ncmFtSW5kZXgpIHsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgbnVtRGVjbHMgPSAyNTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgbnVtRGVmbnMgPSAyNTsK
KyAgICAgICAgCisgICAgICAgIFByb2dyYW1fdCAqcHJvZ3JhbTsKKyAgICAgICAgdW5zaWduZWQg
ZWxlbWVudEluZGV4OworCisgICAgICAgIENTKHByb2dyYW0gPSB0c2ZfcmVnaW9uX2NyZWF0ZShz
aXplb2YoUHJvZ3JhbV90KSkpOworICAgICAgICAKKyAgICAgICAgcHJvZ3JhbS0+Z2xvYmFscy5s
ZW4gPSBudW1EZWNscyArIG51bURlZm5zOworICAgICAgICBDUyhwcm9ncmFtLT5nbG9iYWxzLmRh
dGEgPSB0c2ZfcmVnaW9uX2FsbG9jKAorICAgICAgICAgICAgICAgcHJvZ3JhbSwgc2l6ZW9mKFBy
b2dyYW1FbGVtZW50X3QpICogcHJvZ3JhbS0+Z2xvYmFscy5sZW4pKTsKKyAgICAgICAgICAgIAor
ICAgICAgICBmb3IgKGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8IG51bURlY2xzOyAr
K2VsZW1lbnRJbmRleCkgeworICAgICAgICAgICAgUHJvZ3JhbUVsZW1lbnRfdCAqZWxlbWVudDsK
KyAgICAgICAgICAgIFByb2NlZHVyZURlY2xfdCAqcHJvY2VkdXJlOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgZWxlbWVudCA9IHByb2dyYW0tPmdsb2JhbHMuZGF0YSArIGVsZW1lbnRJ
bmRleDsKKyAgICAgICAgICAgIGVsZW1lbnQtPnZhbHVlID0gUHJvZ3JhbUVsZW1lbnRfX3Byb2Nl
ZHVyZURlY2w7CisgICAgICAgICAgICBwcm9jZWR1cmUgPSAmZWxlbWVudC0+dS5wcm9jZWR1cmVE
ZWNsOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2Yo
YnVmKSwgImZvbyV1IiwgZWxlbWVudEluZGV4KTsKKyAgICAgICAgICAgIHByb2NlZHVyZS0+bmFt
ZSA9IHRzZl9yZWdpb25fc3RyZHVwKHByb2dyYW0sIGJ1Zik7CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBmb3IgKGVsZW1lbnRJbmRleCA9IG51bURlY2xzOworICAgICAgICAgICAg
IGVsZW1lbnRJbmRleCA8IG51bURlY2xzICsgbnVtRGVmbnM7CisgICAgICAgICAgICAgKytlbGVt
ZW50SW5kZXgpIHsKKyAgICAgICAgICAgIFByb2dyYW1FbGVtZW50X3QgKmVsZW1lbnQ7CisgICAg
ICAgICAgICBQcm9jZWR1cmVEZWZuX3QgKnByb2NlZHVyZTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcyA9IChwcm9ncmFtSW5kZXggJSBwcm9ncmFt
U2l6ZSkgKyAxOworICAgICAgICAgICAgdW5zaWduZWQgbnVtSW5zdHJ1Y3Rpb25zID0gKHByb2dy
YW1JbmRleCAlIHByb2dyYW1TaXplKSAqIDIgKyAxOworICAgICAgICAgICAgdW5zaWduZWQgbnVt
RGVidWdEYXRhcyA9IChudW1JbnN0cnVjdGlvbnMgKyA1KSAvIDY7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHZhcmlhYmxlSW5kZXg7CisgICAgICAgICAgICB1bnNpZ25lZCBp
bnN0cnVjdGlvbkluZGV4OworICAgICAgICAgICAgdW5zaWduZWQgZGVidWdEYXRhSW5kZXg7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBlbGVtZW50ID0gcHJvZ3JhbS0+Z2xvYmFscy5k
YXRhICsgZWxlbWVudEluZGV4OworICAgICAgICAgICAgZWxlbWVudC0+dmFsdWUgPSBQcm9ncmFt
RWxlbWVudF9fcHJvY2VkdXJlRGVmbjsKKyAgICAgICAgICAgIHByb2NlZHVyZSA9ICZlbGVtZW50
LT51LnByb2NlZHVyZURlZm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBzbnByaW50
ZihidWYsIHNpemVvZihidWYpLCAiYmFyJXUiLCBlbGVtZW50SW5kZXgpOworICAgICAgICAgICAg
cHJvY2VkdXJlLT5uYW1lID0gdHNmX3JlZ2lvbl9zdHJkdXAocHJvZ3JhbSwgYnVmKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHByb2NlZHVyZS0+dmFyaWFibGVzLmxlbiA9IG51bVZh
cmlhYmxlczsKKyAgICAgICAgICAgIENTKHByb2NlZHVyZS0+dmFyaWFibGVzLmRhdGEgPSB0c2Zf
cmVnaW9uX2FsbG9jKAorICAgICAgICAgICAgICAgICAgIHByb2dyYW0sIHNpemVvZihWYXJpYWJs
ZURlY2xfdCkgKiBudW1WYXJpYWJsZXMpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZvciAodmFyaWFibGVJbmRleCA9IDA7IHZhcmlhYmxlSW5kZXggPCBudW1WYXJpYWJsZXM7ICsr
dmFyaWFibGVJbmRleCkgeworICAgICAgICAgICAgICAgIFZhcmlhYmxlRGVjbF90ICp2YXJpYWJs
ZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBwcm9j
ZWR1cmUtPnZhcmlhYmxlcy5kYXRhICsgdmFyaWFibGVJbmRleDsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKCh2YXJpYWJsZUluZGV4ICsgcHJvZ3JhbUluZGV4KSAl
IDMpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT50eXBlID0gImZvbyI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnR5cGUgPSAiYmFy
IjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+dHlwZSA9ICJiYXoiOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBhYm9ydCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc25wcmludGYoYnVmLCBzaXpl
b2YoYnVmKSwgIngldSIsIHZhcmlhYmxlSW5kZXgpOworICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5uYW1lID0gdHNmX3JlZ2lvbl9zdHJkdXAocHJvZ3JhbSwgYnVmKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHByb2NlZHVyZS0+Y29kZS5sZW4gPSBudW1J
bnN0cnVjdGlvbnM7CisgICAgICAgICAgICBDUyhwcm9jZWR1cmUtPmNvZGUuZGF0YSA9IHRzZl9y
ZWdpb25fYWxsb2MoCisgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSwgc2l6ZW9mKEluc3RydWN0
aW9uX3QpICogbnVtSW5zdHJ1Y3Rpb25zKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICBmb3IgKGluc3RydWN0aW9uSW5kZXggPSAwOworICAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bkluZGV4IDwgbnVtSW5zdHJ1Y3Rpb25zOworICAgICAgICAgICAgICAgICArK2luc3RydWN0aW9u
SW5kZXgpIHsKKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbl90ICppbnN0cnVjdGlvbjsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gPSBwcm9jZWR1
cmUtPmNvZGUuZGF0YSArIGluc3RydWN0aW9uSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIHN3aXRjaCAoKGluc3RydWN0aW9uSW5kZXggKyBwcm9ncmFtSW5kZXgp
ICUgOCkgeworICAgICAgICAgICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25fX25vcDogeworICAgICAg
ICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dmFsdWUgPSBJbnN0cnVjdGlvbl9fbm9wOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEluc3RydWN0aW9uX19tb3Y6IHsKKyAg
ICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24tPnZhbHVlID0gSW5zdHJ1Y3Rpb25fX21vdjsK
KyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24tPnUubW92LmRlc3QgPQorICAgICAgICAg
ICAgICAgICAgICAgICAgKGluc3RydWN0aW9uSW5kZXggKyBwcm9ncmFtSW5kZXgpICUgbnVtVmFy
aWFibGVzOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dS5tb3Yuc3JjID0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIChpbnN0cnVjdGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4ICsg
MSkgJSBudW1WYXJpYWJsZXM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2Ug
SW5zdHJ1Y3Rpb25fX2FkZDogeworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dmFs
dWUgPSBJbnN0cnVjdGlvbl9fYWRkOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+
dS5hZGQuZGVzdCA9CisgICAgICAgICAgICAgICAgICAgICAgICAoaW5zdHJ1Y3Rpb25JbmRleCAr
IHByb2dyYW1JbmRleCArIDIpICUgbnVtVmFyaWFibGVzOworICAgICAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbi0+dS5hZGQuc3JjID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0cnVj
dGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4ICsgMykgJSBudW1WYXJpYWJsZXM7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25fX2FsbG9jOiB7CisgICAgICAg
ICAgICAgICAgICAgIGluc3RydWN0aW9uLT52YWx1ZSA9IEluc3RydWN0aW9uX19hbGxvYzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzbnByaW50ZihidWYs
IHNpemVvZihidWYpLCAidCV1IiwgaW5zdHJ1Y3Rpb25JbmRleCArIHByb2dyYW1JbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLT51LmFsbG9jLnR5cGUgPSB0c2ZfcmVnaW9u
X3N0cmR1cChwcm9ncmFtLCBidWYpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBj
YXNlIEluc3RydWN0aW9uX19yZXQ6IHsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24t
PnZhbHVlID0gSW5zdHJ1Y3Rpb25fX3JldDsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b24tPnUucmV0LnNyYyA9CisgICAgICAgICAgICAgICAgICAgICAgICAoaW5zdHJ1Y3Rpb25JbmRl
eCArIHByb2dyYW1JbmRleCArIDQpICUgbnVtVmFyaWFibGVzOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBjYXNlIEluc3RydWN0aW9uX19qdW1wOiB7CisgICAgICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9uLT52YWx1ZSA9IEluc3RydWN0aW9uX19qdW1wOworICAgICAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbi0+dS5qdW1wLnRhcmdldCA9CisgICAgICAgICAgICAgICAgICAg
ICAgICAoaW5zdHJ1Y3Rpb25JbmRleCArIHByb2dyYW1JbmRleCkgJSBudW1JbnN0cnVjdGlvbnM7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25fX2NhbGw6
IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXJncyA9IChpbnN0cnVjdGlvbklu
ZGV4ICsgcHJvZ3JhbUluZGV4KSAlIDEwOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4OworICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLT52YWx1ZSA9IEluc3RydWN0aW9u
X19jYWxsOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dS5jYWxsLmRlc3QgPQor
ICAgICAgICAgICAgICAgICAgICAgICAgKGluc3RydWN0aW9uSW5kZXggKyBwcm9ncmFtSW5kZXgg
KyA3KSAlIG51bVZhcmlhYmxlczsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24tPnUu
Y2FsbC5jYWxsZWUgPQorICAgICAgICAgICAgICAgICAgICAgICAgKChpbnN0cnVjdGlvbkluZGV4
ICsgcHJvZ3JhbUluZGV4KSAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKG51bVZhcmlhYmxl
cyArIG51bURlY2xzICsgbnVtRGVmbnMpKSAtCisgICAgICAgICAgICAgICAgICAgICAgICBudW1E
ZWNscyAtIG51bURlZm5zOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9uLT51LmNhbGwuYXJncy5sZW4gPSBudW1BcmdzOworICAgICAgICAg
ICAgICAgICAgICBDUyhpbnN0cnVjdGlvbi0+dS5jYWxsLmFyZ3MuZGF0YSA9IHRzZl9yZWdpb25f
YWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLCBzaXplb2YoT3BlcmFu
ZF90KSAqIG51bUFyZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBmb3IgKGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBudW1BcmdzOyArK2FyZ0luZGV4
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dS5jYWxsLmFyZ3MuZGF0
YVthcmdJbmRleF0gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0cnVjdGlvbklu
ZGV4ICsgcHJvZ3JhbUluZGV4ICsgYXJnSW5kZXgpICUgbnVtVmFyaWFibGVzOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgSW5zdHJ1
Y3Rpb25fX2JyYW5jaFplcm86IHsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24tPnZh
bHVlID0gSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm87CisgICAgICAgICAgICAgICAgICAgIGluc3Ry
dWN0aW9uLT51LmJyYW5jaFplcm8uc3JjID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0
cnVjdGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4ICsgNSkgJSBudW1WYXJpYWJsZXM7CisgICAgICAg
ICAgICAgICAgICAgIGluc3RydWN0aW9uLT51LmJyYW5jaFplcm8udGFyZ2V0ID0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIChpbnN0cnVjdGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4ICsgNikgJSBu
dW1JbnN0cnVjdGlvbnM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGFib3J0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgcHJvY2VkdXJlLT5kZWJ1Zy5sZW4gPSBudW1EZWJ1Z0RhdGFzOworICAgICAgICAgICAg
Q1MocHJvY2VkdXJlLT5kZWJ1Zy5kYXRhID0gdHNmX3JlZ2lvbl9hbGxvYygKKyAgICAgICAgICAg
ICAgICAgICBwcm9ncmFtLCBzaXplb2YoRGVidWdEYXRhX3QpICogbnVtRGVidWdEYXRhcykpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGRlYnVnRGF0YUluZGV4ID0gMDsgZGVidWdE
YXRhSW5kZXggPCBudW1EZWJ1Z0RhdGFzOyArK2RlYnVnRGF0YUluZGV4KSB7CisgICAgICAgICAg
ICAgICAgRGVidWdEYXRhX3QgKmRlYnVnRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgZGVidWdEYXRhID0gcHJvY2VkdXJlLT5kZWJ1Zy5kYXRhICsgZGVidWdEYXRh
SW5kZXg7CisgICAgICAgICAgICAgICAgZGVidWdEYXRhLT5zdGFydE9mZnNldCA9IGRlYnVnRGF0
YUluZGV4OworICAgICAgICAgICAgICAgIGRlYnVnRGF0YS0+c3BhblNpemUgPSAxOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJk
ZWJ1ZyV1IiwgZGVidWdEYXRhSW5kZXgpOworICAgICAgICAgICAgICAgIGRlYnVnRGF0YS0+ZGF0
YSA9IHRzZl9yZWdpb25fc3RyZHVwKHByb2dyYW0sIGJ1Zik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBQcm9ncmFtX193cml0ZShvdXQsIHByb2dyYW0p
OworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocHJvZ3JhbSk7CisgICAgfQorICAgIAorICAgIENU
KHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfY2xvc2Uob3V0KSk7Cit9CisKK3N0YXRpYyB2b2lkIHJl
YWRUZXN0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1bnNpZ25lZCBudW1Qcm9ncmFtcykgeworICAg
IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbjsKKyAgICB1bnNpZ25lZCBjb3VudDsKKyAgICAK
KyAgICBDVChpbiA9IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9vcGVuKGZpbGVuYW1lLCBOVUxMLCBO
VUxMKSk7CisgICAgCisgICAgY291bnQgPSAwOworICAgIGZvciAoOzspIHsKKyAgICAgICAgUHJv
Z3JhbV90ICpwcm9ncmFtID0gUHJvZ3JhbV9fcmVhZChpbik7CisgICAgICAgIGlmICghcHJvZ3Jh
bSkgeworICAgICAgICAgICAgQ1QodHNmX2dldF9lcnJvcl9jb2RlKCkgPT0gVFNGX0VfRU9GKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb3VudCsr
OworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocHJvZ3JhbSk7CisgICAgfQorICAgIAorICAgIGlm
IChjb3VudCAhPSBudW1Qcm9ncmFtcykKKyAgICAgICAgYWJvcnQoKTsKKyAgICAKKyAgICB0c2Zf
c3RyZWFtX2ZpbGVfaW5wdXRfY2xvc2UoaW4pOworfQorCitzdGF0aWMgdm9pZCByZWFkTWFsbG9j
VGVzdChjb25zdCBjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQgbnVtUHJvZ3JhbXMpIHsKKyAgICB0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW47CisgICAgdW5zaWduZWQgY291bnQ7CisgICAgCisg
ICAgQ1QoaW4gPSB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfb3BlbihmaWxlbmFtZSwgTlVMTCwgTlVM
TCkpOworICAgIAorICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIFByb2dy
YW1fdCBwcm9ncmFtOworICAgICAgICBpZiAoIVByb2dyYW1fX3JlYWRfaW50byhpbiwgJnByb2dy
YW0pKSB7CisgICAgICAgICAgICBDVCh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSA9PSBUU0ZfRV9FT0Yp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvdW50
Kys7CisgICAgICAgIFByb2dyYW1fX2Rlc3RydWN0KCZwcm9ncmFtKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKGNvdW50ICE9IG51bVByb2dyYW1zKQorICAgICAgICBhYm9ydCgpOworICAgIAorICAg
IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9jbG9zZShpbik7Cit9CisKK3N0YXRpYyB2b2lkIHJlYWRD
b252ZXJ0VGVzdChjb25zdCBjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQgbnVtUHJvZ3JhbXMpIHsK
KyAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW47CisgICAgdW5zaWduZWQgY291bnQ7Cisg
ICAgCisgICAgQ1QoaW4gPSB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfb3BlbihmaWxlbmFtZSwgTlVM
TCwgTlVMTCkpOworICAgIAorICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAg
IERQcm9ncmFtX3QgKnByb2dyYW0gPSBEUHJvZ3JhbV9fcmVhZChpbik7CisgICAgICAgIGlmICgh
cHJvZ3JhbSkgeworICAgICAgICAgICAgQ1QodHNmX2dldF9lcnJvcl9jb2RlKCkgPT0gVFNGX0Vf
RU9GKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBj
b3VudCsrOworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocHJvZ3JhbSk7CisgICAgfQorICAgIAor
ICAgIGlmIChjb3VudCAhPSBudW1Qcm9ncmFtcykKKyAgICAgICAgYWJvcnQoKTsKKyAgICAKKyAg
ICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfY2xvc2UoaW4pOworfQorCitpbnQgbWFpbihpbnQgYywg
Y2hhciAqKnYpIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqZmlsZW5hbWUgPSAidHNmX2lyX3Nw
ZWVkX3Rlc3RfZmlsZS50c2YiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICp6aXBGaWxlbmFtZSA9
ICJ0c2ZfaXJfc3BlZWRfdGVzdF96aXBfZmlsZS50c2YiOworICAgIAorICAgIHVuc2lnbmVkIGNv
dW50OworICAgIAorICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgMToKKyAgICAgICAgLyogVXNl
IGEgc21hbGwgcHJvYmxlbSBzaXplIHN1aXRhYmxlIGZvciByZWdyZXNzaW9uIHRlc3RpbmcuICov
CisgICAgICAgIGNvdW50ID0gMTAwMDsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNh
c2UgMjoKKyAgICAgICAgaWYgKHNzY2FuZih2WzFdLCAiJXUiLCAmY291bnQpICE9IDEpIHsKKyAg
ICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAgIAor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHVzYWdlKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0K
KyAgICAKKyAgICBwcmludGYoIldyaXRpbmcgJXUgcHJvZ3JhbXMuXG4iLCBjb3VudCk7CisgICAg
aWYgKGNvdW50ICE9IDEwMDAwKQorICAgICAgICBwcmludGYoIldBUk5JTkc6IElmIHlvdSBhcmUg
YmVuY2htYXJraW5nLCBwbGVhc2UgdXNlIGNvdW50ID0gMTAwMDAuXG4iKTsKKyAgICAKKyAgICBU
SU1FSVQod3JpdGVUZXN0KGZpbGVuYW1lLCAxMDAsIGNvdW50LCBUU0ZfWklQX05PTkUpKTsKKyAg
ICBUSU1FSVQocmVhZFRlc3QoZmlsZW5hbWUsIGNvdW50KSk7CisgICAgVElNRUlUKHJlYWRNYWxs
b2NUZXN0KGZpbGVuYW1lLCBjb3VudCkpOworICAgIFRJTUVJVChyZWFkQ29udmVydFRlc3QoZmls
ZW5hbWUsIGNvdW50KSk7CisgICAgCisgICAgaWYgKHRzZl96bGliX3N1cHBvcnRlZCgpKSB7Cisg
ICAgICAgIFRJTUVJVCh3cml0ZVRlc3QoemlwRmlsZW5hbWUsIDEwMCwgY291bnQsIFRTRl9aSVBf
WkxJQikpOworICAgICAgICBUSU1FSVQocmVhZFRlc3QoemlwRmlsZW5hbWUsIGNvdW50KSk7Cisg
ICAgICAgIFRJTUVJVChyZWFkTWFsbG9jVGVzdChmaWxlbmFtZSwgY291bnQpKTsKKyAgICAgICAg
VElNRUlUKHJlYWRDb252ZXJ0VGVzdCh6aXBGaWxlbmFtZSwgY291bnQpKTsKKyAgICB9CisgICAg
CisgICAgLyogV2UgZG9uJ3QgYmVuY2htYXJrIGJ6aXAyIGJlY2F1c2UgaXQncyBqdXN0IHRvbyBz
bG93IHRvIGJlIGludGVyZXN0aW5nLiAqLworICAgIAorICAgIHJldHVybiAwOworfQorCkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2xpbWl0cy5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbGltaXRz
LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9saW1pdHMuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNm
X2ludGVybmFsLmgiCisKK3RzZl9saW1pdHNfdCAqdHNmX2xpbWl0c19jcmVhdGUoKSB7CisgICAg
dHNmX2xpbWl0c190ICpyZXN1bHQ9bWFsbG9jKHNpemVvZih0c2ZfbGltaXRzX3QpKTsKKyAgICBp
ZiAocmVzdWx0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxs
b2MgdHNmX2xpbWl0c190Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAg
ICByZXN1bHQtPm1heF90eXBlcyAgICAgICAgICAgPSBVSU5UMzJfTUFYOworICAgIHJlc3VsdC0+
bWF4X3R5cGVfc2l6ZSAgICAgICA9IFVJTlQzMl9NQVg7CisgICAgcmVzdWx0LT5tYXhfdG90YWxf
dHlwZV9zaXplID0gVUlOVDMyX01BWDsKKyAgICByZXN1bHQtPm1heF9idWZfc2l6ZSAgICAgICAg
PSBVSU5UMzJfTUFYOworICAgIHJlc3VsdC0+ZGVwdGhfbGltaXQgICAgICAgICA9IFVJTlQzMl9N
QVg7CisgICAgbWVtc2V0KCYocmVzdWx0LT5hbGxvd190eXBlX2tpbmQpLDI1NSwzMik7CisgICAg
cmVzdWx0LT5tYXhfYXJyYXlfbGVuZ3RoICAgID0gVUlOVDMyX01BWDsKKyAgICByZXN1bHQtPm1h
eF9zdHJ1Y3Rfc2l6ZSAgICAgPSBVSU5UMzJfTUFYOworICAgIHJlc3VsdC0+bWF4X2Nob2ljZV9z
aXplICAgICA9IFVJTlQzMl9NQVg7CisgICAgcmVzdWx0LT5tYXhfc3RyaW5nX3NpemUgICAgID0g
VUlOVDMyX01BWDsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHRzZl9saW1p
dHNfZGVzdHJveSh0c2ZfbGltaXRzX3QgKmxpbWl0cykgeworICAgIGlmIChsaW1pdHM9PU5VTEwp
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmcmVlKGxpbWl0cyk7Cit9CisKK3RzZl9s
aW1pdHNfdCAqdHNmX2xpbWl0c19jbG9uZSh0c2ZfbGltaXRzX3QgKmxpbWl0cykgeworICAgIHRz
Zl9saW1pdHNfdCAqcmVzdWx0PW1hbGxvYyhzaXplb2YodHNmX2xpbWl0c190KSk7CisgICAgaWYg
KHJlc3VsdD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9j
IHRzZl9saW1pdHNfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAg
bWVtY3B5KHJlc3VsdCxsaW1pdHMsc2l6ZW9mKHRzZl9saW1pdHNfdCkpOworICAgIAorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKworCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfbmFtZWRfdHlwZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbmFtZWRfdHlwZS5jCShub25leGlzdGVudCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbmFtZWRfdHlwZS5jCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFs
LmgiCisKK3RzZl9uYW1lZF90eXBlX3QgKnRzZl9uYW1lZF90eXBlX2NyZWF0ZShjb25zdCBjaGFy
ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBl
X3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgaW5kZXgpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpub2RlPW1hbGxvYyhzaXplb2YodHNm
X25hbWVkX3R5cGVfdCkpOworICAgIGlmIChub2RlPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX25hbWVkX3R5cGVfdCIpOworICAgICAgICBnb3Rv
IGZhaWx1cmVfMTsKKyAgICB9CisgICAgCisgICAgaWYgKHN0cmxlbihuYW1lKSsxPlRTRl9TVFJf
U0laRSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1NUUl9PVkVSRkxPVywKKyAgICAg
ICAgICAgICAgICAgICAgICAiU3RyaW5nICclcycgaXMgdG9vIGxvbmcgdG8gYmUgdXNlZCBhcyBh
biBlbGVtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsbmFtZSk7CisgICAgICAg
IGdvdG8gZmFpbHVyZV8yOworICAgIH0KKyAgICAKKyAgICBub2RlLT5uYW1lPXN0cmR1cChuYW1l
KTsKKyAgICBpZiAobm9kZS0+bmFtZT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJD
b3VsZCBub3QgYWxsb2NhdGUgbmFtZSIpOworICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAgICB9
CisgICAgCisgICAgbm9kZS0+dHlwZT10eXBlOworICAgIG5vZGUtPm9wdGlvbmFsPXRzZl9mYWxz
ZTsKKyAgICBub2RlLT5oYXNfb2Zmc2V0PXRzZl9mYWxzZTsKKyAgICBub2RlLT5vZmZzZXQ9MDsK
KyAgICBub2RlLT5pbmRleD1pbmRleDsKKyAgICBub2RlLT5jb21tZW50PU5VTEw7CisgICAgCisg
ICAgcmV0dXJuIG5vZGU7CisgICAgCitmYWlsdXJlXzI6CisgICAgZnJlZShub2RlKTsKK2ZhaWx1
cmVfMToKKyAgICB0c2ZfdHlwZV9kZXN0cm95KHR5cGUpOworICAgIHJldHVybiBOVUxMOworfQor
Cit2b2lkIHRzZl9uYW1lZF90eXBlX2Rlc3Ryb3kodHNmX25hbWVkX3R5cGVfdCAqbm9kZSkgewor
ICAgIHRzZl90eXBlX2Rlc3Ryb3kobm9kZS0+dHlwZSk7CisgICAgZnJlZShub2RlLT5uYW1lKTsK
KyAgICBpZiAobm9kZS0+Y29tbWVudCE9TlVMTCkgeworICAgICAgICBmcmVlKG5vZGUtPmNvbW1l
bnQpOworICAgIH0KKyAgICBmcmVlKG5vZGUpOworfQorCitjb25zdCBjaGFyICp0c2ZfbmFtZWRf
dHlwZV9nZXRfbmFtZSh0c2ZfbmFtZWRfdHlwZV90ICpub2RlKSB7CisgICAgcmV0dXJuIG5vZGUt
Pm5hbWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9uYW1lZF90eXBlX2dldF90eXBlKHRzZl9uYW1l
ZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gbm9kZS0+dHlwZTsKK30KKwordWludDMyX3Qg
dHNmX25hbWVkX3R5cGVfZ2V0X2luZGV4KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICBy
ZXR1cm4gbm9kZS0+aW5kZXg7Cit9CisKK3RzZl9ib29sX3QgdHNmX25hbWVkX3R5cGVfZ2V0X29w
dGlvbmFsKHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gbm9kZS0+b3B0aW9u
YWw7Cit9CisKK3ZvaWQgdHNmX25hbWVkX3R5cGVfc2V0X29wdGlvbmFsKHRzZl9uYW1lZF90eXBl
X3QgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYm9vbF90IG9w
dGlvbmFsKSB7CisgICAgbm9kZS0+b3B0aW9uYWwgPSBvcHRpb25hbDsKK30KKworY29uc3QgY2hh
ciAqdHNmX25hbWVkX3R5cGVfZ2V0X2NvbW1lbnQodHNmX25hbWVkX3R5cGVfdCAqbm9kZSkgewor
ICAgIHJldHVybiBub2RlLT5jb21tZW50OworfQorCit0c2ZfYm9vbF90IHRzZl9uYW1lZF90eXBl
X2hhc19jb21tZW50KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gbm9kZS0+
Y29tbWVudCAhPSBOVUxMOworfQorCit0c2ZfYm9vbF90IHRzZl9uYW1lZF90eXBlX3NldF9jb21t
ZW50KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICBjaGFyICpjb21tZW50X2NvcHk7
CisgICAgCisgICAgaWYgKHN0cmxlbihjb21tZW50KSsxPlRTRl9NQVhfQ09NTUVOVF9TSVpFKSB7
CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfU1RSX09WRVJGTE9XLAorICAgICAgICAgICAg
ICAgICAgICAgICJDb21tZW50IHN0cmluZyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgY29tbWVudF9jb3B5PXN0cmR1cChjb21tZW50KTsK
KyAgICBpZiAoY29tbWVudF9jb3B5PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNv
dWxkIG5vdCBzdHJjcHkgY29tbWVudCIpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
IH0KKyAgICBmcmVlKG5vZGUtPmNvbW1lbnQpOworICAgIG5vZGUtPmNvbW1lbnQ9Y29tbWVudF9j
b3B5OworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworaW50IHRzZl9uYW1lZF90eXBl
X2dldF9oYXNoKHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gdHNmX3N0X3N0
cmhhc2gobm9kZS0+bmFtZSl8CisgICAgICAgICAgICh0c2ZfdHlwZV9nZXRfaGFzaChub2RlLT50
eXBlKTw8OCl8CisJICAgbm9kZS0+b3B0aW9uYWw8PDE2OworfQorCisKKwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9uYXRpdmUuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX25hdGl2ZS5jCShub25l
eGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbmF0
aXZlLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJ
UCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisjaW5jbHVk
ZSA8c3RyaW5nLmg+CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV90eXBlX2hhc19zdHJ1Y3RfbWFw
cGluZyh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgLyogcHJpbnRmKCJpbiBoYXMgc3RydWN0IG1h
cHBpbmc6IHR5cGUgPSAlcFxuIix0eXBlKTsgKi8KKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29k
ZSkgeworICAgIGNhc2UgVFNGX1RLX0FSUkFZOiB7CisgICAgICAgIC8qIGFuIGFycmF5IGhhcyBh
IHN0cnVjdCBtYXBwaW5nIGlmIGl0cyBlbGVtZW50cyBoYXZlCisgICAgICAgICAqIHN0cnVjdCBt
YXBwaW5ncyAqLworICAgICAgICByZXR1cm4gdHNmX25hdGl2ZV90eXBlX2hhc19zdHJ1Y3RfbWFw
cGluZygKKyAgICAgICAgICAgIHR5cGUtPnUuYS5lbGVtZW50X3R5cGUpOworICAgIH0KKyAgICBj
YXNlIFRTRl9US19TVFJVQ1Q6IHsKKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgaWYgKCF0
eXBlLT51LnMuaGFzX3NpemUpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2Vs
ZW1lbnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghdHNmX3N0cnVjdF90eXBlX2dl
dF9lbGVtZW50KHR5cGUsIGkpLT5oYXNfb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdHNmX25hdGl2ZV90
eXBlX2hhc19zdHJ1Y3RfbWFwcGluZygKKyAgICAgICAgICAgICAgICAgICAgdHNmX3N0cnVjdF90
eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpLT50eXBlKSkgeworICAgICAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgVFNGX1RLX0NIT0lDRTogeworICAgICAgICB1aW50MzJfdCBpOworICAg
ICAgICBpZiAoIXR5cGUtPnUuaC5oYXNfbWFwcGluZykgeworICAgICAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90
eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgaWYgKCF0c2Zf
bmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9tYXBwaW5nKAorICAgICAgICAgICAgICAgICAgICB0c2Zf
Y2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQodHlwZSwgaSktPnR5cGUpKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogcHJpbWl0aXZlcywgYml0cywg
YW5kIHZvaWRzIGhhdmUgc3RydWN0IG1hcHBpbmdzICovCisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3NpemVfdCB0c2ZfbmF0aXZlX3R5cGVf
Z2V0X3NpemUodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIC8qIHByaW50ZigiaW4gZ2V0IHNpemU6
IHR5cGUgPSAlcFxuIix0eXBlKTsgKi8KKyAgICB0c2ZfYXNzZXJ0KHRzZl9uYXRpdmVfdHlwZV9o
YXNfc3RydWN0X21hcHBpbmcodHlwZSkpOworICAgIAorICAgIHN3aXRjaCAodHlwZS0+a2luZF9j
b2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQVJSQVk6CisgICAgICAgIGlmICh0eXBlLT51LmEuZWxl
bWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgcmV0dXJu
IHNpemVvZih0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lEKSB7CisgICAg
ICAgICAgICByZXR1cm4gc2l6ZW9mKHRzZl9uYXRpdmVfdm9pZF9hcnJheV90KTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gc2l6ZW9mKHRzZl9uYXRpdmVfYXJyYXlfdCk7CisgICAgY2FzZSBU
U0ZfVEtfU1RSVUNUOgorICAgICAgICByZXR1cm4gdHlwZS0+dS5zLnNpemU7CisgICAgY2FzZSBU
U0ZfVEtfQklUOgorICAgICAgICByZXR1cm4gc2l6ZW9mKHRzZl9ib29sX3QpOworICAgIGNhc2Ug
VFNGX1RLX1ZPSUQ6CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgVFNGX1RLX0NIT0lDRToK
KyAgICAgICAgcmV0dXJuIHR5cGUtPnUuaC5zaXplOworICAgIGNhc2UgVFNGX1RLX1NUUklORzoK
KyAgICAgICAgcmV0dXJuIHNpemVvZihjaGFyKik7CisgICAgY2FzZSBUU0ZfVEtfQU5ZOgorICAg
ICAgICByZXR1cm4gc2l6ZW9mKHRzZl9idWZmZXJfdCopOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9zaXplX29mKHR5cGUtPmtpbmRfY29kZSk7
CisgICAgfQorfQorCitzdGF0aWMgc2l6ZV90IHNhdHVyYXRlZF9wbHVzKHNpemVfdCBhLCBzaXpl
X3QgYikgeworICAgIHNpemVfdCByZXN1bHQgPSBhICsgYjsKKyAgICBpZiAocmVzdWx0IDwgYSB8
fCByZXN1bHQgPCBiKSB7CisgICAgICAgIHJlc3VsdCA9IFVJTlRQVFJfTUFYOworICAgIH0KKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBleHRyYV9zaXplX29mX2luZGlyZWN0
KHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAqbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm1h
eCkgeworICAgIHN3aXRjaCAodHlwZS0+a2luZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQVJS
QVk6CisgICAgY2FzZSBUU0ZfVEtfQU5ZOiB7CisgICAgICAgICptYXggPSBVSU5UUFRSX01BWDsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6
IHsKKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1
Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAgICAgIGV4dHJh
X3NpemVfb2ZfaW5kaXJlY3QodHNmX3N0cnVjdF90eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpLT50
eXBlLCBtaW4sIG1heCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6IHsKKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAg
ICAgc2l6ZV90IG15X21pbiA9IDAsIG15X21heCA9IDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkg
PCB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAgICAg
ICAgICB0c2ZfdHlwZV90ICplbGVfdHlwZTsKKyAgICAgICAgICAgIHNpemVfdCB0aGlzX21pbiwg
dGhpc19tYXg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGVsZV90eXBlID0gdHNmX2Nob2lj
ZV90eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpLT50eXBlOworICAgICAgICAgICAgdGhpc19taW4g
PSAwOworICAgICAgICAgICAgdGhpc19tYXggPSAwOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAodHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9wbGFjZSh0eXBlKSkgeworICAgICAg
ICAgICAgICAgIGV4dHJhX3NpemVfb2ZfaW5kaXJlY3QoZWxlX3R5cGUsICZ0aGlzX21pbiwgJnRo
aXNfbWF4KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHNmX25hdGl2
ZV90eXBlX2dldF90b3RhbF9zaXplX2JvdW5kcyhlbGVfdHlwZSwgJnRoaXNfbWluLCAmdGhpc19t
YXgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBteV9taW4gPSB0
c2ZfbWF4KG15X21pbiwgdGhpc19taW4pOworICAgICAgICAgICAgbXlfbWF4ID0gdHNmX21heCht
eV9tYXgsIHRoaXNfbWF4KTsKKyAgICAgICAgfQorICAgICAgICAqbWluID0gc2F0dXJhdGVkX3Bs
dXMoKm1pbiwgbXlfbWluKTsKKyAgICAgICAgKm1heCA9IHNhdHVyYXRlZF9wbHVzKCptYXgsIG15
X21heCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIHRzZl9uYXRpdmVfdHlwZV9nZXRfdG90YWxf
c2l6ZV9ib3VuZHModHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgKm1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgKm1heCkgeworICAgIHNpemVfdCBiYXNlX3NpemUsIG15
X21pbiwgbXlfbWF4OworICAgIAorICAgIGJhc2Vfc2l6ZSA9IHRzZl9uYXRpdmVfdHlwZV9nZXRf
c2l6ZSh0eXBlKTsKKyAgICAKKyAgICBteV9taW4gPSAwOworICAgIG15X21heCA9IDA7CisgICAg
ZXh0cmFfc2l6ZV9vZl9pbmRpcmVjdCh0eXBlLCAmbXlfbWluLCAmbXlfbWF4KTsKKyAgICAKKyAg
ICAqbWluID0gc2F0dXJhdGVkX3BsdXMoYmFzZV9zaXplLCBteV9taW4pOworICAgICptYXggPSBz
YXR1cmF0ZWRfcGx1cyhiYXNlX3NpemUsIG15X21heCk7Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90
IG5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UodHNmX3R5cGVfdCAqZGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqc3JjLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVz
dF9zaXplKSB7CisgICAgdWludDMyX3QgaTsKKyAgICBzaXplX3Qgc3ViX2Rlc3Rfc2l6ZTsKKyAg
ICBpZiAoZGVzdC0+a2luZF9jb2RlIT1zcmMtPmtpbmRfY29kZSkgeworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICBpZiAoZGVzdF9zaXplPT0wKSB7CisgICAgICAgIGRlc3Rf
c2l6ZT10c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoZGVzdCk7CisgICAgfQorICAgIGlmICh0c2Zf
bmF0aXZlX3R5cGVfZ2V0X3NpemUoc3JjKSA+IGRlc3Rfc2l6ZSkgeworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICBzd2l0Y2ggKGRlc3QtPmtpbmRfY29kZSkgeworICAgICAg
ICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgY2FzZSBUU0ZfVEtfU1RSSU5HOgorICAgICAg
ICBjYXNlIFRTRl9US19BTlk6CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAg
ICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgICAgICBpZiAodHNmX2Nob2ljZV90eXBlX2dl
dF9udW1fZWxlbWVudHMoc3JjKSA+CisgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dl
dF9udW1fZWxlbWVudHMoZGVzdCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCh0c2ZfY2hvaWNlX3R5cGVfaGFzX25v
bl92b2lkKHNyYykgJiYKKyAgICAgICAgICAgICAgICAgc3JjLT51LmguZGF0YV9vZmZzZXQgIT0g
ZGVzdC0+dS5oLmRhdGFfb2Zmc2V0KSB8fAorICAgICAgICAgICAgICAgIHNyYy0+dS5oLnZhbHVl
X29mZnNldCAhPSBkZXN0LT51LmgudmFsdWVfb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZXN0LT51Lmgu
dmFsdWVfb2Zmc2V0ID4gZGVzdC0+dS5oLmRhdGFfb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAg
c3ViX2Rlc3Rfc2l6ZT1kZXN0LT51LmgudmFsdWVfb2Zmc2V0LWRlc3QtPnUuaC5kYXRhX29mZnNl
dDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3ViX2Rlc3Rfc2l6ZT1k
ZXN0LT51Lmguc2l6ZS1kZXN0LT51LmguZGF0YV9vZmZzZXQ7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBmb3IgKGk9MDtpPHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHNyYyk7
KytpKSB7CisgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqc249dHNmX2Nob2ljZV90
eXBlX2dldF9lbGVtZW50KHNyYyxpKTsKKyAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90
ICpkbj10c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoZGVzdCxpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RyY21wKHNuLT5uYW1lLGRuLT5uYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
IW5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UoZG4tPnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuLT50eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJfZGVzdF9zaXplKSkgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0K
KwkJaWYgKGRuLT50eXBlLT5raW5kX2NvZGUhPVRTRl9US19WT0lEICYmCisJCSAgICAoIXRzZl9u
YXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxhY2UoZGVzdCkgfHwKKwkJICAgICAhdHNmX25hdGl2
ZV9jaG9pY2VfdHlwZV9pc19pbl9wbGFjZShzcmMpKSkgeworCQkgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKwkJfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VFNGX1RLX1NUUlVDVDoKKyAgICAgICAgICAgIGlmIChkZXN0LT51LnMuY29uc3RydWN0b3IgIT0g
TlVMTCB8fAorICAgICAgICAgICAgICAgIGRlc3QtPnUucy5wcmVfZGVzdHJ1Y3RvciAhPSBOVUxM
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChpPTA7aTx0c2Zfc3RydWN0X3R5cGVfZ2V0X251
bV9lbGVtZW50cyhkZXN0KTsrK2kpIHsKKyAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90
ICpkbj10c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQoZGVzdCxpKTsKKyAgICAgICAgICAgICAg
ICB0c2ZfbmFtZWRfdHlwZV90ICpzbjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBpZiAodHNmX3R5cGVfZ2V0X3N0YXRpY19zaXplKGRuLT50eXBlKT09MCkgeworICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgc249dHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShzcmMsZG4tPm5h
bWUpOworICAgICAgICAgICAgICAgIGlmIChzbj09TlVMTCkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UoZG4tPnR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNu
LT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZG4tPm9mZnNl
dCAhPSBzbi0+b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9uYXRpdmVfdHlwZV9jYW5fYmxpdCh0
c2ZfdHlwZV90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X3R5cGVfdCAqc3JjKSB7CisgICAgaWYgKCF0c2ZfbmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9tYXBw
aW5nKGRlc3QpIHx8CisgICAgICAgICF0c2ZfbmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9tYXBwaW5n
KHNyYykpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIG5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UoZGVzdCxzcmMsMCk7Cit9CisKK3NpemVf
dCB0c2ZfbmF0aXZlX25hbWVkX3R5cGVfZ2V0X29mZnNldCh0c2ZfbmFtZWRfdHlwZV90ICpub2Rl
KSB7CisgICAgcmV0dXJuIG5vZGUtPm9mZnNldDsKK30KKwordHNmX2Jvb2xfdCB0c2ZfbmF0aXZl
X3N0cnVjdF90eXBlX21hcCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkgeworICAgIHRzZl90eXBlX3QgKnJldDsK
KyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgIC8qIHVpbnQzMl90IGk7ICovCisgICAgCisg
ICAgcmV0ID0gdHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAgICBpZiAocmV0ID09IE5VTEwp
IHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbiA9IHRzZl9z
dHJ1Y3RfdHlwZV9maW5kX25vZGUocmV0LG5hbWUpOworICAgIAorICAgIGlmIChuID09IE5VTEwp
IHsKKyAgICAgICAgdHNmX3R5cGVfb3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKworICAgIC8qIEFnZXMgYWdvLCB3ZSB1c2VkIHRvIHZlcmlm
eSB0aGUgc3RydWN0IG1hcHBpbmcgaGVyZSBieSBleGFtaW5pbmcgYWxsIG9mZnNldHMKKyAgICAg
KiBhbmQgdGhlIHNpemUuIFRoaXMgd2FzIHNsb3cgYW5kIGl0IHdhcyBhbHNvIG5vdCBwYXJ0aWN1
bGFybHkgZWZmZWN0aXZlIGF0CisgICAgICogY2F0Y2hpbmcgYnVncy4gU28sIHdlIGRvbid0IGRv
IHRoYXQgYW55bW9yZS4gKi8KKyAgICAKKyAgICBuLT5oYXNfb2Zmc2V0ID0gdHNmX3RydWU7Cisg
ICAgbi0+b2Zmc2V0ID0gb2Zmc2V0OworICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlw
ZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX25hdGl2
ZV9zdHJ1Y3RfdHlwZV9zZXRfY29uc3RydWN0b3IodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpjb25zKSh2
b2lkKikpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ9dHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsK
KyAgICBpZiAocmV0PT1OVUxMKSB7CisJcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICBy
ZXQtPnUucy5jb25zdHJ1Y3RvciA9IGNvbnM7CisKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5
cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9uYXRp
dmVfc3RydWN0X3R5cGVfc2V0X3ByZV9kZXN0cnVjdG9yKHRzZl90eXBlX3QgKip0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgq
cHJlX2Rlc3QpKHZvaWQqKSkgeworICAgIHRzZl90eXBlX3QgKnJldD10c2ZfdHlwZV9vd25fYmVn
aW4oKnR5cGUpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKwlyZXR1cm4gdHNmX2ZhbHNlOworICAg
IH0KKworICAgIHJldC0+dS5zLnByZV9kZXN0cnVjdG9yID0gcHJlX2Rlc3Q7CisKKyAgICB0c2Zf
dHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0
c2ZfYm9vbF90IHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X2Rlc3RydWN0b3IodHNmX3R5cGVf
dCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAoKmRlc3QpKHZvaWQqKSkgeworICAgIHRzZl90eXBlX3QgKnJldD10c2ZfdHlwZV9v
d25fYmVnaW4oKnR5cGUpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKwlyZXR1cm4gdHNmX2ZhbHNl
OworICAgIH0KKworICAgIHJldC0+dS5zLmRlc3RydWN0b3IgPSBkZXN0OworCisgICAgdHNmX3R5
cGVfb3duX2NvbW1pdCh0eXBlLCByZXQpOworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordm9p
ZCAoKnRzZl9uYXRpdmVfc3RydWN0X3R5cGVfZ2V0X2NvbnN0cnVjdG9yKHRzZl90eXBlX3QgKnR5
cGUpKSh2b2lkKikgeworICAgIHJldHVybiB0eXBlLT51LnMuY29uc3RydWN0b3I7Cit9CisKK3Zv
aWQgKCp0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX2dldF9wcmVfZGVzdHJ1Y3Rvcih0c2ZfdHlwZV90
ICp0eXBlKSkodm9pZCopIHsKKyAgICByZXR1cm4gdHlwZS0+dS5zLnByZV9kZXN0cnVjdG9yOwor
fQorCit2b2lkICgqdHNmX25hdGl2ZV9zdHJ1Y3RfdHlwZV9nZXRfZGVzdHJ1Y3Rvcih0c2ZfdHlw
ZV90ICp0eXBlKSkodm9pZCopIHsKKyAgICByZXR1cm4gdHlwZS0+dS5zLmRlc3RydWN0b3I7Cit9
CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV9zdHJ1Y3RfdHlwZV9zZXRfc2l6ZSh0c2ZfdHlwZV90
ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSkgeworICAgIHRzZl90eXBlX3QgKnJldD10c2ZfdHlwZV9vd25fYmVnaW4oKnR5cGUp
OworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
IH0KKyAgICAKKyAgICByZXQtPnUucy5oYXNfc2l6ZT10c2ZfdHJ1ZTsKKyAgICByZXQtPnUucy5z
aXplPXNpemU7CisKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAgcmV0
dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfbWFw
KHRzZl90eXBlX3QgKip0eXBlLAorCQkJCSAgICAgIHRzZl9ib29sX3QgaW5fcGxhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZV9vZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX29mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpIHsKKyAg
ICB0c2ZfdHlwZV90ICpyZXQ9dHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAgICBpZiAocmV0
ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
cmV0LT51LmguaGFzX21hcHBpbmcgPSB0c2ZfdHJ1ZTsKKyAgICByZXQtPnUuaC5pbl9wbGFjZSA9
IGluX3BsYWNlOworICAgIHJldC0+dS5oLnZhbHVlX29mZnNldCA9IHZhbHVlX29mZnNldDsKKyAg
ICByZXQtPnUuaC5kYXRhX29mZnNldCA9IGRhdGFfb2Zmc2V0OworICAgIHJldC0+dS5oLnNpemUg
PSBzaXplOworICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAgICBy
ZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV90eXBlX3Byb2R1Y2Vf
c29tZV9tYXBwaW5nKHRzZl90eXBlX3QgKip0eXBlLAorCQkJCQkJdHNmX2Jvb2xfdCBkb19hbGln
bikgeworICAgIHRzZl90eXBlX3QgKnJldCA9IHRzZl90eXBlX293bl9iZWdpbigqdHlwZSk7Cisg
ICAgdWludDMyX3QgaTsKKyAgICBzaXplX3QgdG90YWxfc2l6ZTsKKyAgICAKKyAgICBpZiAocmV0
ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
c3dpdGNoICgoKnR5cGUpLT5raW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19BUlJBWToKKyAg
ICAgICAgaWYgKCF0c2ZfbmF0aXZlX3R5cGVfcHJvZHVjZV9zb21lX21hcHBpbmcoJnJldC0+dS5h
LmVsZW1lbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9fYWxpZ24pKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9vd25fYWJvcnQoKnR5
cGUsIHJldCk7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICAgICAgdG90YWxfc2l6ZSA9
IDA7CisgICAgICAgICAgICAKKyAgICAgICAgZm9yIChpID0gMDsKKyAgICAgICAgICAgICBpIDwg
dHNmX3R5cGVfdGFibGVfZ2V0X251bV9lbGVtZW50cyhyZXQtPnUucy50dCk7CisgICAgICAgICAg
ICAgKytpKSB7CisgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0KKyAgICAgICAgICAg
ICAgICB0c2ZfdHlwZV90YWJsZV9maW5kX2J5X2luZGV4KHJldC0+dS5zLnR0LCBpKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdHNmX25hdGl2ZV90eXBlX3Byb2R1Y2Vfc29t
ZV9tYXBwaW5nKCZuLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9fYWxpZ24pKSB7CisgICAgICAgICAgICAgICAgdHNmX3R5cGVf
b3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZG9fYWxp
Z24pIHsKKyAgICAgICAgICAgICAgICBuLT5vZmZzZXQgPSBUU0ZfQUxJR04odG90YWxfc2l6ZSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG4tPm9mZnNldCA9IHRvdGFs
X3NpemU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuLT5oYXNfb2Zmc2V0ID0gdHNmX3Ry
dWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0b3RhbF9zaXplID0gbi0+b2Zmc2V0
ICsgdHNmX25hdGl2ZV90eXBlX2dldF9zaXplKG4tPnR5cGUpOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgcmV0LT51LnMuc2l6ZSA9IHRvdGFsX3NpemU7CisgICAgICAgIHJldC0+
dS5zLmhhc19zaXplID0gdHNmX3RydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RL
X0NIT0lDRToKKyAgICAgICAgcmV0LT51LmguaW5fcGxhY2UgPSB0c2ZfdHJ1ZTsKKwkgICAgCisg
ICAgICAgIHRvdGFsX3NpemUgPSAwOworICAgICAgICAgICAgCisgICAgICAgIGZvciAoaSA9IDA7
CisgICAgICAgICAgICAgaSA8IHRzZl90eXBlX3RhYmxlX2dldF9udW1fZWxlbWVudHMocmV0LT51
LmgudHQpOworICAgICAgICAgICAgICsraSkgeworICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVf
dCAqbiA9CisgICAgICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRleChyZXQt
PnUuaC50dCxpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemVfdCBzaXplOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c2ZfbmF0aXZlX3R5cGVfcHJvZHVj
ZV9zb21lX21hcHBpbmcoJm4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb19hbGlnbikpIHsKKyAgICAgICAgICAgICAgICB0c2Zf
dHlwZV9vd25fYWJvcnQoKnR5cGUsIHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemUg
PSB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUobi0+dHlwZSk7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAoc2l6ZSA+IHRvdGFsX3NpemUpIHsKKyAgICAgICAgICAgICAgICB0b3Rh
bF9zaXplID0gc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldC0+
dS5oLnZhbHVlX29mZnNldCA9IDA7CisKKyAgICAgICAgaWYgKGRvX2FsaWduKSB7CisgICAgICAg
ICAgICByZXQtPnUuaC5kYXRhX29mZnNldCA9IFRTRl9BTElHTihzaXplb2YodHNmX2Nob2ljZV90
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXQtPnUuaC5kYXRhX29mZnNldCA9
IHNpemVvZih0c2ZfY2hvaWNlX3QpOworICAgICAgICB9CisKKyAgICAgICAgcmV0LT51Lmguc2l6
ZSA9IHJldC0+dS5oLmRhdGFfb2Zmc2V0ICsgdG90YWxfc2l6ZTsKKyAgICAgICAgcmV0LT51Lmgu
aGFzX21hcHBpbmcgPSB0c2ZfdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwg
cmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9uYXRpdmVf
c3RydWN0X3R5cGVfY3JlYXRlKHNpemVfdCBzaXplKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0
ID0gdHNmX3R5cGVfY3JlYXRlKFRTRl9US19TVFJVQ1QpOworICAgIGlmIChyZXN1bHQgPT0gTlVM
TCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2ZfbmF0
aXZlX3N0cnVjdF90eXBlX3NldF9zaXplKCZyZXN1bHQsIHNpemUpKSB7CisgICAgICAgIHRzZl90
eXBlX2Rlc3Ryb3kocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV9zdHJ1Y3RfdHlw
ZV9hcHBlbmQodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKmVsZV90eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0KSB7CisgICAgaWYgKCF0c2Zfc3Ry
dWN0X3R5cGVfYXBwZW5kKHR5cGUsIG5hbWUsIGVsZV90eXBlKSkgeworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoIXRzZl9uYXRpdmVfc3RydWN0X3R5cGVf
bWFwKHR5cGUsIG5hbWUsIG9mZnNldCkpIHsKKyAgICAgICAgdHNmX3N0cnVjdF90eXBlX3JlbW92
ZSh0eXBlLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9uYXRpdmVfY2hvaWNlX3R5cGVf
Y3JlYXRlKHRzZl9ib29sX3QgaW5fcGxhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgdmFsdWVfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfb2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpIHsKKyAgICB0c2ZfdHlwZV90
ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX0NIT0lDRSk7CisgICAgaWYgKHJlc3Vs
dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAo
IXRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfbWFwKCZyZXN1bHQsIGluX3BsYWNlLCB2YWx1ZV9vZmZz
ZXQsIGRhdGFfb2Zmc2V0LCBzaXplKSkgeworICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0c2ZfYm9vbF90IHRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxhY2UodHNm
X3R5cGVfdCAqdHlwZSkgeworICAgIHJldHVybiB0eXBlLT51LmguaW5fcGxhY2U7Cit9CisKK3Np
emVfdCB0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2dldF9kYXRhX29mZnNldCh0c2ZfdHlwZV90ICp0
eXBlKSB7CisgICAgcmV0dXJuIHR5cGUtPnUuaC5kYXRhX29mZnNldDsKK30KKworc2l6ZV90IHRz
Zl9uYXRpdmVfY2hvaWNlX3R5cGVfZ2V0X3ZhbHVlX29mZnNldCh0c2ZfdHlwZV90ICp0eXBlKSB7
CisgICAgcmV0dXJuIHR5cGUtPnUuaC52YWx1ZV9vZmZzZXQ7Cit9CisKK3NpemVfdCB0c2ZfbmF0
aXZlX2Nob2ljZV90eXBlX2dldF9zaXplKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4g
dHlwZS0+dS5oLnNpemU7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX3BhcnNlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2ZfcGFyc2VyLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9wYXJzZXIuYwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAx
NCwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgor
I2luY2x1ZGUgInRzZl9yZWdpb24uaCIKKyNpbmNsdWRlICJncGMuaCIKKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWZkZWYg
SEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKK3N0YXRpYyBpbnQg
dGFibGVfZGVzdHJveV9wYWlyKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfcHJvZ3JhbV90ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmFyZykgeworICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgICAgZ3Bj
X3Byb2dyYW1fZGVzdHJveSh2YWx1ZSk7CisgICAgcmV0dXJuIFRTRl9TVF9DT05USU5VRTsKK30K
KwordHNmX3BhcnNlcl90ICp0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfdHlwZV90ICp0eXBlKSB7Cisg
ICAgdHNmX3BhcnNlcl90ICpyZXN1bHQ7CisgICAgCisgICAgaWYgKCF0c2ZfbmF0aXZlX3R5cGVf
aGFzX3N0cnVjdF9tYXBwaW5nKHR5cGUpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0Vf
Tk9fU1RSVUNUX01BUCwgTlVMTCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAK
KyAgICByZXN1bHQgPSBtYWxsb2Moc2l6ZW9mKHRzZl9wYXJzZXJfdCkpOworICAgIGlmIChyZXN1
bHQgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRz
Zl9wYXJzZXJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVz
dWx0LT5wYXJzZXJzID0gdHNmX3N0X2luaXRfcHRydGFibGUoKTsKKyAgICBpZiAocmVzdWx0LT5w
YXJzZXJzID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2luaXRfdHlwZXRhYmxlKCkiKTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+ZXhwZWN0ZWRfdHlwZSA9IHRzZl90
eXBlX2R1cCh0eXBlKTsKKyAgICByZXN1bHQtPmV4cGVjdGVkX3R5cGVfc2l6ZSA9IHRzZl9uYXRp
dmVfdHlwZV9nZXRfc2l6ZShyZXN1bHQtPmV4cGVjdGVkX3R5cGUpOworICAgIAorICAgIHJlc3Vs
dC0+Y2FjaGVkX3Byb2dyYW0gPSBOVUxMOworICAgIHJlc3VsdC0+Y2FjaGVkX3R5cGUgPSBOVUxM
OworCisgICAgdHNmX211dGV4X2luaXQoJnJlc3VsdC0+bG9jayk7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordm9pZCB0c2ZfcGFyc2VyX2Rlc3Ryb3kodHNmX3BhcnNlcl90ICpwYXJz
ZXIpIHsKKyAgICB0c2ZfbXV0ZXhfZGVzdHJveSgmcGFyc2VyLT5sb2NrKTsKKyAgICB0c2Zfc3Rf
Zm9yZWFjaChwYXJzZXItPnBhcnNlcnMsCisgICAgICAgICAgICAgICAgICAgKHRzZl9zdF9mdW5j
X3QpdGFibGVfZGVzdHJveV9wYWlyLAorICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHRz
Zl9zdF9mcmVlX3RhYmxlKHBhcnNlci0+cGFyc2Vycyk7CisgICAgdHNmX3R5cGVfZGVzdHJveShw
YXJzZXItPmV4cGVjdGVkX3R5cGUpOworICAgIGZyZWUocGFyc2VyKTsKK30KKwordWludDMyX3Qg
dHNmX3BhcnNlcl9udW1fY29kZXModHNmX3BhcnNlcl90ICpwYXJzZXIpIHsKKyAgICByZXR1cm4g
cGFyc2VyLT5wYXJzZXJzLT5udW1fZW50cmllczsKK30KKworc3RhdGljIGlubGluZSBncGNfcHJv
Z3JhbV90ICpjYWNoZWRfcHJvZ3JhbV9sb29rdXAodHNmX3BhcnNlcl90ICpwYXJzZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90
ICp0eXBlKSB7CisgICAgaWYgKHBhcnNlci0+Y2FjaGVkX3R5cGUgPT0gdHlwZSAmJiBwYXJzZXIt
PmNhY2hlZF9wcm9ncmFtKSB7CisgICAgICAgIHJldHVybiBwYXJzZXItPmNhY2hlZF9wcm9ncmFt
OworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3RhdGlj
IGdwY19wcm9ncmFtX3QgKm5vcm1hbF9wcm9ncmFtX2xvb2t1cCh0c2ZfcGFyc2VyX3QgKnBhcnNl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
dCAqdHlwZSkgeworICAgIGdwY19wcm9ncmFtX3QgKnByb2dyYW07CisgICAgCisgICAgaWYgKCF0
c2Zfc3RfbG9va3VwX3B0cnRhYmxlKHBhcnNlci0+cGFyc2VycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZv
aWQqKSZwcm9ncmFtKSkgeworICAgICAgICAvKiBub3QgZm91bmQsIG11c3QgY3JlYXRlISAqLwor
ICAgICAgICAKKyAgICAgICAgZ3BjX3Byb3RvX3QgKnByb3RvID0KKyAgICAgICAgICAgIHRzZl9n
cGNfY29kZV9nZW5fZ2VuZXJhdGVfcGFyc2VyKHBhcnNlci0+ZXhwZWN0ZWRfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOworICAgICAgICAK
KyAgICAgICAgaWYgKHByb3RvID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBncGNfY29kZV9nZW5fZGVidWcoInBhcnNlciIs
IHByb3RvKTsKKyAgICAgICAgCisgICAgICAgIHByb2dyYW0gPSBncGNfcHJvZ3JhbV9mcm9tX3By
b3RvKHByb3RvKTsKKyAgICAgICAgCisgICAgICAgIGdwY19wcm90b19kZXN0cm95KHByb3RvKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChwcm9ncmFtID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJl
dHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0eXBlID0gdHNmX3R5cGVf
ZHVwKHR5cGUpOworICAgICAgICAKKyAgICAgICAgaWYgKHRzZl9zdF9pbnNlcnQocGFyc2VyLT5w
YXJzZXJzLCAoY2hhciopdHlwZSwgcHJvZ3JhbSkgPCAwKSB7CisgICAgICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2luc2VydCgpIGluICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRzZl9wYXJzZXJfcGFyc2UoKSIpOworICAgICAgICAgICAgdHNmX3R5cGVfZGVz
dHJveSh0eXBlKTsKKyAgICAgICAgICAgIGdwY19wcm9ncmFtX2Rlc3Ryb3kocHJvZ3JhbSk7Cisg
ICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IHRzZl9hc3NlcnQoISFwYXJzZXItPmNhY2hlZF90eXBlID09ICEhcGFyc2VyLT5jYWNoZWRfcHJv
Z3JhbSk7CisgICAgICAgIGlmICghcGFyc2VyLT5jYWNoZWRfdHlwZSkgeworICAgICAgICAgICAg
cGFyc2VyLT5jYWNoZWRfdHlwZSA9IHR5cGU7CisgICAgICAgICAgICBwYXJzZXItPmNhY2hlZF9w
cm9ncmFtID0gcHJvZ3JhbTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcHJv
Z3JhbTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfcGFyc2VyX3BhcnNlX2ludG8odHNmX3BhcnNlcl90
ICpwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3Qg
KmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlc3VsdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbikgeworICAgIHRz
Zl90eXBlX3QgKnR5cGU7CisgICAgZ3BjX3Byb2dyYW1fdCAqcHJvZ3JhbTsKKyAgICBncGNfY2Vs
bF90IGFyZ3NbMl07CisKKyAgICB0eXBlID0gYnVmZmVyLT50eXBlOworCisgICAgdHlwZSA9IHRz
Zl90eXBlX21lbW8odHlwZSk7CisgICAgaWYgKCF0eXBlKSB7CisgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorICAgIAorI2lmZGVmIFRTRl9IQVZFX0ZFTkNFUworICAgIHByb2dyYW0g
PSBjYWNoZWRfcHJvZ3JhbV9sb29rdXAocGFyc2VyLCB0eXBlKTsKKyAgICBpZiAocHJvZ3JhbSAh
PSBOVUxMKSB7CisgICAgICAgIHRzZl9iYXNpY19mZW5jZSgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRzZl9tdXRleF9sb2NrKCZwYXJzZXItPmxvY2spOworICAgICAgICBwcm9ncmFtID0gbm9y
bWFsX3Byb2dyYW1fbG9va3VwKHBhcnNlciwgdHlwZSk7CisgICAgICAgIHRzZl9tdXRleF91bmxv
Y2soJnBhcnNlci0+bG9jayk7CisgICAgICAgIGlmIChwcm9ncmFtID09IE5VTEwpIHsKKyAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIHRz
Zl9tdXRleF9sb2NrKCZwYXJzZXItPmxvY2spOworICAgIHByb2dyYW0gPSBjYWNoZWRfcHJvZ3Jh
bV9sb29rdXAocGFyc2VyLCB0eXBlKTsKKyAgICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7CisgICAg
ICAgIHByb2dyYW0gPSBub3JtYWxfcHJvZ3JhbV9sb29rdXAocGFyc2VyLCB0eXBlKTsKKyAgICB9
CisgICAgdHNmX211dGV4X3VubG9jaygmcGFyc2VyLT5sb2NrKTsKKyAgICBpZiAocHJvZ3JhbSA9
PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorI2VuZGlmCisgICAg
CisgICAgYXJnc1swXSA9IChncGNfY2VsbF90KXJlc3VsdDsKKyAgICBhcmdzWzFdID0gKGdwY19j
ZWxsX3QpYnVmZmVyOworICAgIAorICAgIHJldHVybiAodHNmX2Jvb2xfdClncGNfcHJvZ3JhbV9y
dW4ocHJvZ3JhbSwgcmVnaW9uLCBhcmdzKTsKK30KKwordm9pZCAqdHNmX3BhcnNlcl9wYXJzZSh0
c2ZfcGFyc2VyX3QgKnBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90
ICpidWZmZXIpIHsKKyAgICB2b2lkICpyZXN1bHQgPSB0c2ZfcmVnaW9uX2NyZWF0ZShwYXJzZXIt
PmV4cGVjdGVkX3R5cGVfc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IHRzZl9yZWdpb25fY3JlYXRlKCkiKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIGlmICghdHNmX3BhcnNlcl9wYXJzZV9pbnRvKHBhcnNlciwgYnVm
ZmVyLCByZXN1bHQsIHJlc3VsdCkpIHsKKyAgICAgICAgdHNmX3JlZ2lvbl9mcmVlKHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkICp0c2ZfcGFyc2VyX3BhcnNlX2luKHRzZl9wYXJzZXJfdCAqcGFyc2VyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgdm9pZCAqcmVzdWx0OworICAgIGlmIChyZWdp
b24pIHsKKyAgICAgICAgcmVzdWx0ID0gdHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sIHBhcnNlci0+
ZXhwZWN0ZWRfdHlwZV9zaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZWdpb24gPSByZXN1
bHQgPSB0c2ZfcmVnaW9uX2NyZWF0ZShwYXJzZXItPmV4cGVjdGVkX3R5cGVfc2l6ZSk7CisgICAg
fQorICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0
c2ZfcmVnaW9uX2FsbG9jKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlm
ICghdHNmX3BhcnNlcl9wYXJzZV9pbnRvKHBhcnNlciwgYnVmZmVyLCByZXN1bHQsIHJlZ2lvbikp
IHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSByZWdpb24pIHsKKyAgICAgICAgICAgIHRzZl9yZWdp
b25fZnJlZShyZWdpb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvdHNmX3ByaW1pdGl2ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcHJpbWl0aXZlLmMJKG5vbmV4aXN0ZW50KQorKysg
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9wcmltaXRpdmUuYwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgi
CisKKy8qIEZJWE1FOiBwcmltaXRpdmUgdHlwZSBzaG91bGQgcmVhbGx5IGp1c3QgYWxsIGJlIGlu
c3RhbmNlcyBvZiBlYWNoIG90aGVyLiAqLwordHNmX2Jvb2xfdCB0c2ZfcHJpbWl0aXZlX3R5cGVf
a2luZF9pbnN0YW5jZW9mKHRzZl90eXBlX2tpbmRfdCBvbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfa2luZF90IHR3bykgeworICAgIHJl
dHVybiAodHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfbG93ZXJfYm91bmQob25lKQorICAgICAgICAg
ICAgPj0gdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfbG93ZXJfYm91bmQodHdvKSkKKwkmJiAodHNm
X3ByaW1pdGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQob25lKQorICAgICAgICAgICAgPD0gdHNm
X3ByaW1pdGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQodHdvKSkKKwkmJiAodHNmX3ByaW1pdGl2
ZV90eXBlX2tpbmRfcHJlY2lzaW9uKG9uZSkKKyAgICAgICAgICAgIDw9IHRzZl9wcmltaXRpdmVf
dHlwZV9raW5kX3ByZWNpc2lvbih0d28pKTsKK30KKworI2RlZmluZSB0ZXN0X3R5cGVfa2luZChr
aW5kX2NvZGUpIFwKKyAgICBpZiAobG93ZXJfYm91bmQgPj0gdHNmX3ByaW1pdGl2ZV90eXBlX2tp
bmRfbG93ZXJfYm91bmQoa2luZF9jb2RlKSAmJiBcCisJdXBwZXJfYm91bmQgPD0gdHNmX3ByaW1p
dGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQoa2luZF9jb2RlKSAmJiBcCisJcHJlY2lzaW9uIDw9
IHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX3ByZWNpc2lvbihraW5kX2NvZGUpKSB7IFwKKwlyZXR1
cm4ga2luZF9jb2RlOyBcCisgICAgfQorCit0c2ZfdHlwZV9raW5kX3QgdHNmX3ByaW1pdGl2ZV90
eXBlX2tpbmRfZm9yX3NwZWMoaW50MzJfdCBsb3dlcl9ib3VuZCwKKwkJCQkJCSBpbnQzMl90IHVw
cGVyX2JvdW5kLAorCQkJCQkJIGludDMyX3QgcHJlY2lzaW9uKSB7CisgICAgdGVzdF90eXBlX2tp
bmQoVFNGX1RLX0lOVDgpOworICAgIHRlc3RfdHlwZV9raW5kKFRTRl9US19VSU5UOCk7CisgICAg
dGVzdF90eXBlX2tpbmQoVFNGX1RLX0lOVDE2KTsKKyAgICB0ZXN0X3R5cGVfa2luZChUU0ZfVEtf
VUlOVDE2KTsKKyAgICB0ZXN0X3R5cGVfa2luZChUU0ZfVEtfSU5UMzIpOworICAgIHRlc3RfdHlw
ZV9raW5kKFRTRl9US19VSU5UMzIpOworICAgIHRlc3RfdHlwZV9raW5kKFRTRl9US19JTlQ2NCk7
CisgICAgdGVzdF90eXBlX2tpbmQoVFNGX1RLX1VJTlQ2NCk7CisgICAgdGVzdF90eXBlX2tpbmQo
VFNGX1RLX0ZMT0FUKTsKKyAgICByZXR1cm4gVFNGX1RLX0RPVUJMRTsKK30KKwordHNmX3R5cGVf
a2luZF90IHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX21peCh0c2ZfdHlwZV9raW5kX3Qgb25lLAor
CQkJCQkgICAgdHNmX3R5cGVfa2luZF90IHR3bykgeworICAgIHJldHVybiB0c2ZfcHJpbWl0aXZl
X3R5cGVfa2luZF9mb3Jfc3BlYworCSh0c2ZfbWluKHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX2xv
d2VyX2JvdW5kKG9uZSksCisJCSB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9sb3dlcl9ib3VuZCh0
d28pKSwKKwkgdHNmX21heCh0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF91cHBlcl9ib3VuZChvbmUp
LAorCQkgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQodHdvKSksCisJIHRzZl9t
YXgodHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfcHJlY2lzaW9uKG9uZSksCisJCSB0c2ZfcHJpbWl0
aXZlX3R5cGVfa2luZF9wcmVjaXNpb24odHdvKSkpOworfQorCisKKworCisKSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmFfdHlwZV9tYW4uYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JhX3R5cGVf
bWFuLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9yYV90eXBlX21hbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAg
UElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAidHNmX2ludGVybmFsLmgiCisKK3RzZl9yYV90eXBlX21hbl90ICp0c2ZfcmFfdHlwZV9t
YW5fY3JlYXRlKHZvaWQpIHsKKyAgICB0c2ZfcmFfdHlwZV9tYW5fdCAqcmVzdWx0PW1hbGxvYyhz
aXplb2YodHNmX3JhX3R5cGVfbWFuX3QpKTsKKyAgICByZXN1bHQtPm91dF9tYXA9dHNmX3N0X2lu
aXRfdHlwZXRhYmxlKCk7CisgICAgaWYgKHJlc3VsdC0+b3V0X21hcD09TlVMTCkgeworCXJldHVy
biBOVUxMOworICAgIH0KKyAgICByZXN1bHQtPmluX21hcD10c2Zfc3RfaW5pdF9udW10YWJsZSgp
OworICAgIGlmIChyZXN1bHQtPmluX21hcD09TlVMTCkgeworCXRzZl9zdF9mcmVlX3RhYmxlKHJl
c3VsdC0+b3V0X21hcCk7CisJcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdC0+dHlwZV9j
b2Rlcz1OVUxMOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgdHNmX3JhX3R5cGVfbWFu
X2Rlc3Ryb3kodHNmX3JhX3R5cGVfbWFuX3QgKm1hbikgeworICAgIHRzZl9yYV90Y19ub2RlX3Qg
Km47CisgICAgdHNmX3N0X2l0ZXJhdG9yIGl0ZXI7CisKKyAgICBuPW1hbi0+dHlwZV9jb2RlczsK
KyAgICB3aGlsZSAobiE9TlVMTCkgeworCXRzZl9yYV90Y19ub2RlX3QgKnZpY3RpbT1uOworCW49
bi0+bmV4dDsKKwlmcmVlKHZpY3RpbSk7CisgICAgfQorICAgIAorICAgIGZvciAodHNmX3N0X2l0
ZXJhdG9yX2luaXQobWFuLT5vdXRfbWFwLCZpdGVyKTsKKwkgdHNmX3N0X2l0ZXJhdG9yX3ZhbGlk
KCZpdGVyKTsKKwkgdHNmX3N0X2l0ZXJhdG9yX25leHQoJml0ZXIpKSB7CisJdHNmX3R5cGVfdCAq
dHlwZTsKKwl0c2ZfcmFfdHlwZV9pbmZvX3QgKmluZm87CisJdHNmX3N0X2l0ZXJhdG9yX2dldCgm
aXRlciwoY2hhcioqKSZ0eXBlLCh2b2lkKikmaW5mbyk7CisJdHNmX3R5cGVfZGVzdHJveSh0eXBl
KTsKKwlmcmVlKGluZm8pOworICAgIH0KKworICAgIHRzZl9zdF9mcmVlX3RhYmxlKG1hbi0+aW5f
bWFwKTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShtYW4tPm91dF9tYXApOworfQorCit0c2ZfYm9v
bF90IHRzZl9yYV90eXBlX21hbl9pbnNlcnQodHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkg
IHRzZl90eXBlX3QgKnR5cGUsCisJCQkJICB1aW50MzJfdCB0eXBlX2NvZGUsCisJCQkJICB1aW50
NjRfdCByZWZfY291bnQpIHsKKyAgICB0c2ZfcmFfdHlwZV9pbmZvX3QgKmluZm87CisgICAgCisg
ICAgaW5mbz1tYWxsb2Moc2l6ZW9mKHRzZl9yYV90eXBlX2luZm9fdCkpOworICAgIGlmIChpbmZv
PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX3Jh
X3R5cGVfaW5mb190Iik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIGluZm8tPnR5cGVfY29kZT10eXBlX2NvZGU7CisgICAgaW5mby0+cmVmX2NvdW50PXJlZl9j
b3VudDsKKyAgICAKKyAgICB0eXBlPXRzZl90eXBlX2R1cCh0eXBlKTsKKyAgICAKKyAgICBpZiAo
dHNmX3N0X2FkZF9kaXJlY3QobWFuLT5vdXRfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY2hhciopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyk8MCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2FkZF9kaXJlY3QoKSIpOworICAg
ICAgICB0c2ZfdHlwZV9kZXN0cm95KHR5cGUpOworICAgICAgICBmcmVlKGluZm8pOworICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodHNmX3N0X2FkZF9kaXJl
Y3QobWFuLT5pbl9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikodWludHB0
cl90KXR5cGVfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpIHsKKyAgICAg
ICAgdHNmX3R5cGVfdCAqdG9fZGVsZXRlOworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgdHNmX3N0X2FkZF9kaXJlY3QoKSIpOworICAgICAgICB0b19kZWxldGUgPSB0eXBlOworICAg
ICAgICB0c2Zfc3RfZGVsZXRlKG1hbi0+b3V0X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAo
Y2hhcioqKSZ0b19kZWxldGUsCisgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAg
IHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgICAgICAgIGZyZWUoaW5mbyk7CisgICAgICAgIHJl
dHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwor
dm9pZCB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkg
ICAgdHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHRzZl9yYV90eXBlX2luZm9fdCAqaW5mbzsKKyAg
ICB1aW50cHRyX3QgdHlwZV9jb2RlOworICAgIHRzZl9yYV90Y19ub2RlX3QgKm47CisgICAgdHNm
X3R5cGVfdCAqdHlwZV90b19kZWxldGU7CisgICAgCisgICAgdHlwZV90b19kZWxldGUgPSB0eXBl
OworICAgIHRzZl9hc3NlcnQodHNmX3N0X2RlbGV0ZShtYW4tPm91dF9tYXAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjaGFyKiopJnR5cGVfdG9fZGVsZXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodm9pZCoqKSZpbmZvKSk7CisgICAgCisgICAgdHlwZV9jb2RlID0g
aW5mby0+dHlwZV9jb2RlOworICAgIAorICAgIHRzZl9hc3NlcnQodHNmX3N0X2RlbGV0ZShtYW4t
PmluX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKikmdHlwZV9jb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CisgICAgCisgICAgbj1tYWxs
b2Moc2l6ZW9mKHRzZl9yYV90Y19ub2RlX3QpKTsKKyAgICBpZiAobiE9TlVMTCkgeworICAgICAg
ICBuLT5uZXh0PW1hbi0+dHlwZV9jb2RlczsKKyAgICAgICAgbi0+dHlwZV9jb2RlPXR5cGVfY29k
ZTsKKyAgICAgICAgbWFuLT50eXBlX2NvZGVzPW47CisgICAgfSAvKiBlbHNlIHdlIHdvdWxkIHNp
Z25hbCBhbiBlcnJvciBidXQgdGhhdCB3b3VsZCBiZSBiYWQgc28gd2UgaW5zdGVhZAorICAgICAg
ICoganVzdCBsZWFrIHRoaXMgdHlwZSBjb2RlLiAqLworICAgIAorICAgIHRzZl90eXBlX2Rlc3Ry
b3kodHlwZSk7CisgICAgZnJlZShpbmZvKTsKK30KKworLyogbWF5YmUgdGhpcyBzaG91bGRuJ3Qg
YmUgc2V0dGluZyB0aGUgZXJyb3Igd2hlbiB0aGUgdHlwZSBpc24ndAorICAgZm91bmQ/ICBhZnRl
cmFsbCwgYWxsIHVzZXMgb2YgdGhpcyBmdW5jdGlvbiBjdXJyZW50bHkgc2V0CisgICB0aGVpciBv
d24gZXJyb3IgY29kZS4gKi8KK3RzZl90eXBlX3QgKnRzZl9yYV90eXBlX21hbl9maW5kKHRzZl9y
YV90eXBlX21hbl90ICptYW4sCisJCQkJIHVpbnQzMl90IHR5cGVfY29kZSkgeworICAgIHRzZl90
eXBlX3QgKnR5cGU7CisKKyAgICBpZiAoIXRzZl9zdF9sb29rdXAobWFuLT5pbl9tYXAsCisgICAg
ICAgICAgICAgICAgICAgICAgIChjaGFyKikodWludHB0cl90KXR5cGVfY29kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgKHZvaWQqKikmdHlwZSkpIHsKKwl0c2Zfc2V0X2Vycm9yKFRTRl9FX0VM
RV9OT1RfRk9VTkQsCisJCSAgICAgICJFbGVtZW50IG5vdCBmb3VuZCBpbiB0c2ZfcmFfdHlwZV9t
YW5fZmluZCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gdHlwZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfcmFfdHlwZV9tYW5faGFzX3R5cGUodHNmX3Jh
X3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkgICAgdHNmX3R5cGVfdCAqdHlwZSkgeworICAgIGlmICh0
c2Zfc3RfbG9va3VwKG1hbi0+b3V0X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAoY2hhciop
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkgeworICAgICAgICByZXR1cm4gdHNm
X3RydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKKy8qIGNhbGwg
dGhpcyBvbmx5IG9uY2UgeW91IGtub3cgdGhhdCB5b3Uga25vdyBhYm91dCB0aGUgdHlwZS4gKi8K
K3VpbnQzMl90IHRzZl9yYV90eXBlX21hbl9nZXRfdHlwZV9jb2RlKHRzZl9yYV90eXBlX21hbl90
ICptYW4sCisJCQkJICAgICAgIHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICB0c2ZfcmFfdHlwZV9p
bmZvX3QgKmluZm87CisgICAgCisgICAgdHNmX2Fzc2VydCh0c2Zfc3RfbG9va3VwKG1hbi0+b3V0
X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiopJmluZm8pKTsKKyAgICAKKyAgICByZXR1cm4g
aW5mby0+dHlwZV9jb2RlOworfQorCit0c2ZfYm9vbF90IHRzZl9yYV90eXBlX21hbl9nZXRfcmVm
ZXJlbmNlKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSB0c2ZfdHlwZV90ICp0eXBlKSB7
CisgICAgdHNmX3JhX3R5cGVfaW5mb190ICppbmZvOworICAgIAorICAgIGlmICghdHNmX3N0X2xv
b2t1cChtYW4tPm91dF9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKil0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZpbmZvKSkgeworICAgICAgICB1aW50MzJf
dCB0eXBlX2NvZGU7CisgICAgICAgIHRzZl9yYV90Y19ub2RlX3QgKm49bWFuLT50eXBlX2NvZGVz
OworICAgICAgICAKKyAgICAgICAgaWYgKG49PU5VTEwpIHsKKyAgICAgICAgICAgIC8qIGlmIHRo
ZXJlIGFyZSBub25lIGluIHRoZSBmcmVlIGxpc3QsIHRoZW4gdGhhdCBtZWFucworICAgICAgICAg
ICAgICogdGhhdCBhbGwgY29udGlndW91cyB0eXBlIGNvZGVzIGFyZSB1c2VkIHVwIHRvIHRoZQor
ICAgICAgICAgICAgICogbnVtYmVyIG9mIGxpdmUgdHlwZSBjb2Rlcy4gIGhlbmNlIHdlIGNhbiB1
c2UgdGhlCisgICAgICAgICAgICAgKiBudW1fZW50cmllcyBmaWVsZCBvbiBlaXRoZXIgaGFzaCB0
YWJsZSBhcyB0aGUgbmV4dAorICAgICAgICAgICAgICogdHlwZSBjb2RlLiAqLworICAgICAgICAg
ICAgdHlwZV9jb2RlPW1hbi0+b3V0X21hcC0+bnVtX2VudHJpZXM7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0eXBlX2NvZGU9bi0+dHlwZV9jb2RlOworICAgICAgICAgICAgbWFuLT50
eXBlX2NvZGVzPW4tPm5leHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghdHNm
X3JhX3R5cGVfbWFuX2luc2VydChtYW4sCisJCQkJICAgIHR5cGUsCisJCQkJICAgIHR5cGVfY29k
ZSwKKwkJCQkgICAgMSkpIHsKKyAgICAgICAgICAgIG1hbi0+dHlwZV9jb2Rlcz1uOworICAgICAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KG4hPU5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUobik7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaW5mby0+cmVmX2NvdW50
Kys7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit2b2lkIHRzZl9yYV90eXBlX21h
bl9yZW1vdmVfcmVmZXJlbmNlKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJICAgICAgdHNm
X3R5cGVfdCAqdHlwZSkgeworICAgIHRzZl9yYV90eXBlX2luZm9fdCAqaW5mbzsKKyAgICAKKyAg
ICB0c2ZfYXNzZXJ0KHRzZl9zdF9sb29rdXAobWFuLT5vdXRfbWFwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY2hhciopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHZvaWQqKikmaW5mbykpOworICAgIAorICAgIGlmICgtLWluZm8tPnJlZl9jb3VudD09MCkgewor
ICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlKG1hbix0eXBlKTsKKyAgICB9Cit9CisKK3Vp
bnQzMl90IHRzZl9yYV90eXBlX21hbl9udW1fdHlwZXModHNmX3JhX3R5cGVfbWFuX3QgKm1hbikg
eworICAgIHJldHVybiBtYW4tPm91dF9tYXAtPm51bV9lbnRyaWVzOworfQorCit0c2ZfYm9vbF90
IHRzZl9yYV90eXBlX21hbl9oYXNfYnVmX3R5cGVzKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJ
CQkJCSB0c2ZfYnVmZmVyX3QgKmJ1ZikgeworICAgIHVpbnQzMl90IGk7CisgICAgCisgICAgaWYg
KCF0c2ZfcmFfdHlwZV9tYW5faGFzX3R5cGUobWFuLGJ1Zi0+dHlwZSkpIHsKKyAgICAgICAgcmV0
dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgZm9yIChpPTA7CisgICAgICAgICBpPHRz
Zl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVzKGJ1Zi0+dHlwZXMpOworICAgICAgICAgKytpKSB7
CisgICAgICAgIGlmICghdHNmX3JhX3R5cGVfbWFuX2hhc190eXBlKG1hbiwKKyAgICAgICAgICAg
ICAgICAgdHNmX3R5cGVfaW5fbWFwX2dldF90eXBlKGJ1Zi0+dHlwZXMsaSkpKSB7CisgICAgICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVy
biB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfcmFfdHlwZV9tYW5fZ2V0X2J1Zl9yZWZl
cmVuY2VzKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSAgICAgIHRzZl9idWZmZXJfdCAq
YnVmKSB7CisgICAgdWludDMyX3QgaTsKKworICAgIGlmICghdHNmX3JhX3R5cGVfbWFuX2dldF9y
ZWZlcmVuY2UobWFuLGJ1Zi0+dHlwZSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICB9CisgICAgCisgICAgZm9yIChpPTA7CisgICAgICAgICBpPHRzZl90eXBlX2luX21hcF9nZXRf
bnVtX3R5cGVzKGJ1Zi0+dHlwZXMpOworICAgICAgICAgKytpKSB7CisgICAgICAgIGlmICghdHNm
X3JhX3R5cGVfbWFuX2dldF9yZWZlcmVuY2UobWFuLAorICAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV9pbl9tYXBfZ2V0X3R5cGUoYnVmLT50eXBlcyxpKSkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90
IGo7CisgICAgICAgICAgICBmb3IgKGo9MDtqPGk7KytqKSB7CisgICAgICAgICAgICAgICAgdHNm
X3JhX3R5cGVfbWFuX3JlbW92ZV9yZWZlcmVuY2UobWFuLAorICAgICAgICAgICAgICAgICAgICB0
c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoYnVmLT50eXBlcyxqKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlX3JlZmVyZW5jZShtYW4sYnVmLT50eXBl
KTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit2b2lkIHRzZl9yYV90eXBlX21hbl9yZW1vdmVf
YnVmX3JlZmVyZW5jZXModHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkJICAgdHNmX2J1ZmZl
cl90ICpidWYpIHsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIHRzZl9yYV90eXBlX21hbl9y
ZW1vdmVfcmVmZXJlbmNlKG1hbixidWYtPnR5cGUpOworICAgIAorICAgIGZvciAoaT0wOworICAg
ICAgICAgaTx0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhidWYtPnR5cGVzKTsKKyAgICAg
ICAgICsraSkgeworICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlX3JlZmVyZW5jZShtYW4s
CisgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoYnVmLT50eXBlcyxpKSk7Cisg
ICAgfQorfQorCit0c2ZfcmFfdHlwZV9tYW5fdCAqdHNmX3JhX3R5cGVfbWFuX3JlYWQodHNmX3Jl
YWRlcl90IHJlYWRlciwKKwkJCQkJdm9pZCAqYXJnKSB7CisgICAgdHNmX3JhX3R5cGVfbWFuX3Qg
KnJlc3VsdDsKKyAgICB1aW50MzJfdCBudW1fdHlwZXM7CisgICAgdWludDMyX3QgdHlwZV9jb2Rl
OworICAgIHVpbnQzMl90ICp0eXBlX2NvZGVzOworICAgIHVpbnQ2NF90IHJlZl9jb3VudDsKKyAg
ICB1aW50MzJfdCBuLGk7CisgICAgdHNmX2Jvb2xfdCB0cmVzOworCisgICAgaWYgKCFyZWFkZXIo
YXJnLCZudW1fdHlwZXMsc2l6ZW9mKG51bV90eXBlcykpKSB7CisJcmV0dXJuIE5VTEw7CisgICAg
fQorCisgICAgbnVtX3R5cGVzPW50b2hsKG51bV90eXBlcyk7CisKKyAgICByZXN1bHQ9dHNmX3Jh
X3R5cGVfbWFuX2NyZWF0ZSgpOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKwlyZXR1cm4gTlVM
TDsKKyAgICB9CisKKyAgICB0eXBlX2NvZGVzPW1hbGxvYyhzaXplb2YodWludDMyX3QpKm51bV90
eXBlcyk7CisgICAgaWYgKHR5cGVfY29kZXM9PU5VTEwpIHsKKwl0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgbWFwIHR5cGUgY29kZSBhcnJheSIpOworCXRzZl9yYV90eXBlX21hbl9kZXN0cm95KHJl
c3VsdCk7CisJcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChuPW51bV90eXBlcztuLS0+
MDspIHsKKwl0c2ZfdHlwZV90ICp0eXBlOworCQorCWlmICghcmVhZGVyKGFyZywmdHlwZV9jb2Rl
LHNpemVvZih0eXBlX2NvZGUpKSkgeworCSAgICBmcmVlKHR5cGVfY29kZXMpOworCSAgICB0c2Zf
cmFfdHlwZV9tYW5fZGVzdHJveShyZXN1bHQpOworCSAgICByZXR1cm4gTlVMTDsKKwl9CisKKyAg
ICAgICAgdHlwZV9jb2RlPW50b2hsKHR5cGVfY29kZSk7CisJdHlwZV9jb2Rlc1tuXT10eXBlX2Nv
ZGU7CisKKwlpZiAoIXJlYWRlcihhcmcsJnJlZl9jb3VudCxzaXplb2YocmVmX2NvdW50KSkpIHsK
KwkgICAgZnJlZSh0eXBlX2NvZGVzKTsKKwkgICAgdHNmX3JhX3R5cGVfbWFuX2Rlc3Ryb3kocmVz
dWx0KTsKKwkgICAgcmV0dXJuIE5VTEw7CisJfQorCisJcmVmX2NvdW50PW50b2hsbChyZWZfY291
bnQpOworCisJdHlwZT10c2ZfdHlwZV9yZWFkKHJlYWRlcixhcmcsTlVMTCk7CisJaWYgKHR5cGU9
PU5VTEwpIHsKKwkgICAgZnJlZSh0eXBlX2NvZGVzKTsKKwkgICAgdHNmX3JhX3R5cGVfbWFuX2Rl
c3Ryb3kocmVzdWx0KTsKKwkgICAgcmV0dXJuIE5VTEw7CisJfQorCisJdHJlcz10c2ZfcmFfdHlw
ZV9tYW5faW5zZXJ0KHJlc3VsdCwKKwkJCQkgICAgdHlwZSwKKwkJCQkgICAgdHlwZV9jb2RlLAor
CQkJCSAgICByZWZfY291bnQpOworCisJdHNmX3R5cGVfZGVzdHJveSh0eXBlKTsKKworCWlmICgh
dHJlcykgeworCSAgICBmcmVlKHR5cGVfY29kZXMpOworCSAgICB0c2ZfcmFfdHlwZV9tYW5fZGVz
dHJveShyZXN1bHQpOworCSAgICByZXR1cm4gTlVMTDsKKwl9CisgICAgfQorCisgICAgdHNmX3Vp
MzJfc29ydCh0eXBlX2NvZGVzLG51bV90eXBlcyk7CisKKyAgICBpZiAobnVtX3R5cGVzPjApIHsK
Kwlmb3IgKGk9MDtpPG51bV90eXBlcy0xOysraSkgeworCSAgICB0c2ZfYXNzZXJ0KHR5cGVfY29k
ZXNbaV08dHlwZV9jb2Rlc1tpKzFdKTsKKyAgICAgICAgICAgIAorCSAgICBmb3IgKHR5cGVfY29k
ZT10eXBlX2NvZGVzW2ldKzE7CisJCSB0eXBlX2NvZGU8dHlwZV9jb2Rlc1tpKzFdOworCQkgKyt0
eXBlX2NvZGUpIHsKKwkJdHNmX3JhX3RjX25vZGVfdCAqbj1tYWxsb2Moc2l6ZW9mKHRzZl9yYV90
Y19ub2RlX3QpKTsKKwkJaWYgKG49PU5VTEwpIHsKKwkJICAgIGZyZWUodHlwZV9jb2Rlcyk7CisJ
CSAgICB0c2ZfcmFfdHlwZV9tYW5fZGVzdHJveShyZXN1bHQpOworCQkgICAgcmV0dXJuIE5VTEw7
CisJCX0KKyAgICAgICAgICAgICAgICAKKwkJbi0+bmV4dD1yZXN1bHQtPnR5cGVfY29kZXM7CisJ
CW4tPnR5cGVfY29kZT10eXBlX2NvZGU7CisJCXJlc3VsdC0+dHlwZV9jb2Rlcz1uOworCSAgICB9
CisJfQorICAgIH0KKworICAgIGZyZWUodHlwZV9jb2Rlcyk7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0c2ZfYm9vbF90IHRzZl9yYV90eXBlX21hbl93cml0ZSh0c2ZfcmFfdHlwZV9tYW5f
dCAqbWFuLAorCQkJCSB0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorCQkJCSB2b2lkICphcmcpIHsKKyAg
ICB1aW50MzJfdCBudW1fdHlwZXM7CisgICAgdHNmX3N0X2l0ZXJhdG9yIGl0ZXI7CisgICAgCisg
ICAgbnVtX3R5cGVzPWh0b25sKG1hbi0+b3V0X21hcC0+bnVtX2VudHJpZXMpOworICAgIGlmICgh
d3JpdGVyKGFyZywmbnVtX3R5cGVzLHNpemVvZihudW1fdHlwZXMpKSkgeworCXJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorCisgICAgZm9yICh0c2Zfc3RfaXRlcmF0b3JfaW5pdChtYW4tPm91dF9t
YXAsJml0ZXIpOworCSB0c2Zfc3RfaXRlcmF0b3JfdmFsaWQoJml0ZXIpOworCSB0c2Zfc3RfaXRl
cmF0b3JfbmV4dCgmaXRlcikpIHsKKwl0c2ZfdHlwZV90ICp0eXBlOworCXRzZl9yYV90eXBlX2lu
Zm9fdCAqaW5mbzsKKwl1aW50MzJfdCB0eXBlX2NvZGU7CisJdWludDY0X3QgcmVmX2NvdW50Owor
CXRzZl9zdF9pdGVyYXRvcl9nZXQoJml0ZXIsKGNoYXIqKikmdHlwZSwodm9pZCopJmluZm8pOwor
CXR5cGVfY29kZT1odG9ubChpbmZvLT50eXBlX2NvZGUpOworCXJlZl9jb3VudD1odG9ubGwoaW5m
by0+cmVmX2NvdW50KTsKKwlpZiAoIXdyaXRlcihhcmcsJnR5cGVfY29kZSxzaXplb2YodHlwZV9j
b2RlKSkpIHsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKwl9CisJaWYgKCF3cml0ZXIoYXJnLCZy
ZWZfY291bnQsc2l6ZW9mKHJlZl9jb3VudCkpKSB7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJ
fQorCWlmICghdHNmX3R5cGVfd3JpdGUodHlwZSx3cml0ZXIsYXJnKSkgeworCSAgICByZXR1cm4g
dHNmX2ZhbHNlOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3VpbnQz
Ml90IHRzZl9yYV90eXBlX21hbl9nZXRfdHlwZV9jb2RlX2ZyZWVfbGlzdF9zaXplKHRzZl9yYV90
eXBlX21hbl90ICptYW4pIHsKKyAgICB1aW50MzJfdCByZXQ9MDsKKyAgICB0c2ZfcmFfdGNfbm9k
ZV90ICpjdXI7CisgICAgCisgICAgZm9yIChjdXI9bWFuLT50eXBlX2NvZGVzOworICAgICAgICAg
Y3VyIT1OVUxMOworICAgICAgICAgY3VyPWN1ci0+bmV4dCkgeworICAgICAgICArK3JldDsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZmxlY3QuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZmxlY3QuYwkobm9uZXhpc3RlbnQp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZmxlY3QuYwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDQsIDIwMDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpM
TyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisKKyNpbmNsdWRlIDx1
bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmZGVmIEhBVkVfU1RSSU5HU19ICisj
aW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BUSFJFQUQKKyNpbmNs
dWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKworI2lmZGVmIERFQlVHX1JFRkxFQ1RfQUxMT0MKK3N0
YXRpYyBpbnQ2NF90IHJlZmxlY3RfYmFsYW5jZSA9IDA7CisKK2ludDY0X3QgdHNmX3JlZmxlY3Rf
Z2V0X2JhbGFuY2UoKSB7CisgICAgcmV0dXJuIHJlZmxlY3RfYmFsYW5jZTsKK30KKworI2RlZmlu
ZSBpbmNyZW1lbnRfcmVmbGVjdF9iYWxhbmNlKCkgZG8ge1wKKyAgICByZWZsZWN0X2JhbGFuY2Ur
KztcCit9IHdoaWxlKDApCisKKyNkZWZpbmUgZGVjcmVtZW50X3JlZmxlY3RfYmFsYW5jZSgpIGRv
IHtcCisgICAgcmVmbGVjdF9iYWxhbmNlLS07XAorfSB3aGlsZSgwKQorCisjZWxzZQorCisjZGVm
aW5lIGluY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKSBkbyB7XAorfSB3aGlsZSgwKQorCisjZGVm
aW5lIGRlY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKSBkbyB7XAorfSB3aGlsZSgwKQorCisjZW5k
aWYKKworI2RlZmluZSBpc19zdHJ1Y3Rfb3JfYXJyYXkodHlwZSkgXAorICAgICh0eXBlLT5raW5k
X2NvZGUgPT0gVFNGX1RLX1NUUlVDVCB8fCBcCisgICAgIHR5cGUtPmtpbmRfY29kZSA9PSBUU0Zf
VEtfQVJSQVkpCisKK3RzZl9yZWZsZWN0X3QgKnRzZl9yZWZsZWN0X2NyZWF0ZSh0c2ZfdHlwZV90
ICp0eXBlKSB7CisgICAgdHNmX3JlZmxlY3RfdCAqcmV0OworICAgIAorICAgIGlmICh0eXBlID09
IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldCA9IG1h
bGxvYyhzaXplb2YodHNmX3JlZmxlY3RfdCkpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgdHNmX3JlZmxlY3RfdCBzdHJ1
Y3R1cmUuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5
cGUgPSB0c2ZfdHlwZV9kdXAodHlwZSk7CisgICAgCisgICAgc3dpdGNoICh0eXBlLT5raW5kX2Nv
ZGUpIHsKKyAgICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgcmV0LT51LmMuYXJyYXkgPSBO
VUxMOworICAgICAgICByZXQtPnUuYy5zaXplID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICByZXQtPnUuYy5zaXplID0gdHNmX3N0cnVjdF90eXBl
X2dldF9udW1fZWxlbWVudHModHlwZSk7CisgICAgICAgIHJldC0+dS5jLmFycmF5ID0gbWFsbG9j
KHNpemVvZih0c2ZfcmVmbGVjdF90KikgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXQtPnUuYy5zaXplKTsKKyAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5ID09IE5VTEwpIHsK
KyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0
LT50eXBlKTsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBh
cnJheSBvZiBwb2ludGVycyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfcmVm
bGVjdF9jcmVhdGUoKSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAg
ICAgICAgYnplcm8ocmV0LT51LmMuYXJyYXksIHNpemVvZih0c2ZfcmVmbGVjdF90KikgKiByZXQt
PnUuYy5zaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAg
ICAgICByZXQtPnUuaC5jaG9pY2UgPSBVSU5UMzJfTUFYOworICAgICAgICByZXQtPnUuaC5kYXRh
ID0gTlVMTDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKyAgICBjYXNl
IFRTRl9US19VSU5UODoKKyAgICBjYXNlIFRTRl9US19JTlQxNjoKKyAgICBjYXNlIFRTRl9US19V
SU5UMTY6CisgICAgY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOgor
ICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgIGNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICBjYXNl
IFRTRl9US19JTlRFR0VSOgorICAgIGNhc2UgVFNGX1RLX0xPTkc6CisgICAgY2FzZSBUU0ZfVEtf
RkxPQVQ6CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOgorICAgIGNhc2UgVFNGX1RLX0JJVDoKKyAg
ICBjYXNlIFRTRl9US19WT0lEOgorICAgIGNhc2UgVFNGX1RLX1NUUklORzoKKyAgICBjYXNlIFRT
Rl9US19BTlk6CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEVfS0lORCwKKyAg
ICAgICAgICAgICAgICAgICAgICAiVG8gY3JlYXRlIHRzZl9yZWZsZWN0X3Qgb2JqZWN0cyBvZiB0
eXBlICIKKyAgICAgICAgICAgICAgICAgICAgICAiJXMsIHVzZSB0c2ZfcmVmbGVjdF9jcmVhdGVf
JXMoKSIsCisgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfa2luZF90c2ZfbmFtZSh0eXBl
LT5raW5kX2NvZGUpLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2tpbmRfbGNfbmFt
ZSh0eXBlLT5raW5kX2NvZGUpKTsKKyAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUp
OworICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldCA9IE5VTEw7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAg
ICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAgICAgICAgICAg
ICAgICAgICInIiBmdWk4ICInIGlzIG5vdCBhIHZhbGlkIGtpbmQgdHlwZSBmb3IgIgorICAgICAg
ICAgICAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9jcmVhdGUoKSIsCisgICAgICAgICAgICAgICAg
ICAgICAgdHlwZS0+a2luZF9jb2RlKTsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICByZXQg
PSBOVUxMOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpbmNyZW1lbnRfcmVmbGVjdF9i
YWxhbmNlKCk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKworI2RlZmluZSBERUZJTkVfUkVG
TEVDVF9DUkVBVEVfR0VUKHR5cGVfbGNfbmFtZSwgdHlwZV9sYywgdHlwZV91YykgICAgICAgXAor
ICAgIHRzZl9yZWZsZWN0X3QgKnRzZl9yZWZsZWN0X2NyZWF0ZV8jI3R5cGVfbGNfbmFtZSh0eXBl
X2xjIHZhbHVlKSB7ICAgXAorICAgICAgICB0c2ZfcmVmbGVjdF90ICpyZXQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICByZXQgPSBtYWxsb2Moc2l6ZW9mKHRzZl9yZWZsZWN0X3QpKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAocmV0ID09IE5VTEwpIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdHNmX3NldF9lcnJu
bygiQ291bGQgbm90IGFsbG9jYXRlIHRzZl9yZWZsZWN0X3Qgc3RydWN0dXJlLiIpOyBcCisgICAg
ICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IHJldC0+dHlwZSA9IHRzZl90eXBlX2NyZWF0ZSh0eXBlX3VjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHJldC0+dS5wXyMjdHlwZV9sY19uYW1lID0gdmFsdWU7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlu
Y3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiByZXQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZV9sYyB0c2ZfIyN0eXBlX2xjX25hbWUjI19y
ZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7ICAgICBcCisgICAgICAgIHJldHVybiBk
YXRhLT51LnBfIyN0eXBlX2xjX25hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfQorCitERUZJTkVfUkVGTEVDVF9DUkVBVEVfR0VUKGludDE2X3QsIGludDE2X3QsIFRT
Rl9US19JTlQxNikKK0RFRklORV9SRUZMRUNUX0NSRUFURV9HRVQodWludDE2X3QsIHVpbnQxNl90
LCBUU0ZfVEtfVUlOVDE2KQorREVGSU5FX1JFRkxFQ1RfQ1JFQVRFX0dFVChpbnQzMl90LCBpbnQz
Ml90LCBUU0ZfVEtfSU5UMzIpCitERUZJTkVfUkVGTEVDVF9DUkVBVEVfR0VUKHVpbnQzMl90LCB1
aW50MzJfdCwgVFNGX1RLX1VJTlQzMikKK0RFRklORV9SRUZMRUNUX0NSRUFURV9HRVQoaW50NjRf
dCwgaW50NjRfdCwgVFNGX1RLX0lOVDY0KQorREVGSU5FX1JFRkxFQ1RfQ1JFQVRFX0dFVCh1aW50
NjRfdCwgdWludDY0X3QsIFRTRl9US19VSU5UNjQpCitERUZJTkVfUkVGTEVDVF9DUkVBVEVfR0VU
KGludGVnZXIsIGludDMyX3QsIFRTRl9US19JTlRFR0VSKQorREVGSU5FX1JFRkxFQ1RfQ1JFQVRF
X0dFVChsb25nLCBpbnQ2NF90LCBUU0ZfVEtfTE9ORykKK0RFRklORV9SRUZMRUNUX0NSRUFURV9H
RVQoZmxvYXQsIGZsb2F0LCBUU0ZfVEtfRkxPQVQpCitERUZJTkVfUkVGTEVDVF9DUkVBVEVfR0VU
KGRvdWJsZSwgZG91YmxlLCBUU0ZfVEtfRE9VQkxFKQorCitzdGF0aWMgdHNmX3JlZmxlY3RfdCBp
bnQ4X2RhdGFbMjU2XTsKK3N0YXRpYyB0c2ZfcmVmbGVjdF90IHVpbnQ4X2RhdGFbMjU2XTsKK3N0
YXRpYyB0c2ZfcmVmbGVjdF90IGJpdF9kYXRhX3RydWUsCisgICAgICAgICAgICAgICAgICAgICBi
aXRfZGF0YV9mYWxzZTsKK3N0YXRpYyB0c2ZfcmVmbGVjdF90IHZvaWRfZGF0YTsKKworc3RhdGlj
IHZvaWQgaW5pdF9yZWZsZWN0KHZvaWQpIHsKKyAgICB1bnNpZ25lZCBpOworICAgIAorICAgIGZv
ciAoaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAgICBpbnQ4X2RhdGFbaV0udHlwZSA9IHRz
Zl90eXBlX2NyZWF0ZShUU0ZfVEtfSU5UOCk7CisgICAgICAgIGludDhfZGF0YVtpXS51LnBfaW50
OF90ID0gaSAtIDEyODsKKyAgICAgICAgCisgICAgICAgIHVpbnQ4X2RhdGFbaV0udHlwZSA9IHRz
Zl90eXBlX2NyZWF0ZShUU0ZfVEtfVUlOVDgpOworICAgICAgICB1aW50OF9kYXRhW2ldLnUucF91
aW50OF90ID0gaTsKKyAgICB9CisgICAgCisgICAgYml0X2RhdGFfdHJ1ZS50eXBlID0gdHNmX3R5
cGVfY3JlYXRlKFRTRl9US19CSVQpOworICAgIGJpdF9kYXRhX3RydWUudS5iaXQgPSB0c2ZfdHJ1
ZTsKKyAgICAKKyAgICBiaXRfZGF0YV9mYWxzZS50eXBlID0gdHNmX3R5cGVfY3JlYXRlKFRTRl9U
S19CSVQpOworICAgIGJpdF9kYXRhX2ZhbHNlLnUuYml0ID0gdHNmX2ZhbHNlOworICAgIAorICAg
IHZvaWRfZGF0YS50eXBlID0gdHNmX3R5cGVfY3JlYXRlKFRTRl9US19WT0lEKTsKK30KKworc3Rh
dGljIHRzZl9vbmNlX3Qgb25jZV9jb250cm9sID0gVFNGX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lk
IGNoZWNrX2luaXRfcmVmbGVjdCh2b2lkKSB7CisgICAgdHNmX29uY2UoJm9uY2VfY29udHJvbCwg
aW5pdF9yZWZsZWN0KTsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY3JlYXRlX2lu
dDhfdChpbnQ4X3QgdmFsdWUpIHsKKyAgICBjaGVja19pbml0X3JlZmxlY3QoKTsKKyAgICByZXR1
cm4gaW50OF9kYXRhICsgdmFsdWUgKyAxMjg7Cit9CisKK3RzZl9yZWZsZWN0X3QgKnRzZl9yZWZs
ZWN0X2NyZWF0ZV91aW50OF90KHVpbnQ4X3QgdmFsdWUpIHsKKyAgICBjaGVja19pbml0X3JlZmxl
Y3QoKTsKKyAgICByZXR1cm4gdWludDhfZGF0YSArIHZhbHVlOworfQorCitpbnQ4X3QgdHNmX2lu
dDhfdF9yZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGEt
PnUucF9pbnQ4X3Q7Cit9CisKK3VpbnQ4X3QgdHNmX3VpbnQ4X3RfcmVmbGVjdF9nZXQodHNmX3Jl
ZmxlY3RfdCAqZGF0YSkgeworICAgIHJldHVybiBkYXRhLT51LnBfdWludDhfdDsKK30KKwordHNm
X3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY3JlYXRlX2JpdCh0c2ZfYm9vbF90IHZhbHVlKSB7Cisg
ICAgY2hlY2tfaW5pdF9yZWZsZWN0KCk7CisgICAgcmV0dXJuIHZhbHVlID8gJmJpdF9kYXRhX3Ry
dWUgOiAmYml0X2RhdGFfZmFsc2U7Cit9CisKK3RzZl9yZWZsZWN0X3QgKnRzZl9yZWZsZWN0X2Ny
ZWF0ZV92b2lkKHZvaWQpIHsKKyAgICBjaGVja19pbml0X3JlZmxlY3QoKTsKKyAgICByZXR1cm4g
JnZvaWRfZGF0YTsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY3JlYXRlX3N0cmlu
Zyhjb25zdCBjaGFyICpzdHIpIHsKKyAgICB0c2ZfcmVmbGVjdF90ICpyZXQgPSBtYWxsb2Moc2l6
ZW9mKHRzZl9yZWZsZWN0X3QpKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2ZfcmVmbGVjdF90Iik7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGUgPSB0c2ZfdHlwZV9jcmVhdGUo
VFNGX1RLX1NUUklORyk7CisgICAgcmV0LT51LnN0ciA9IHN0cmR1cChzdHIpOworICAgIAorICAg
IGlmIChyZXQtPnUuc3RyID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICB0
c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qgc3RyZHVwKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorICAgIAorICAgIGluY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKTsKKyAgICAKKyAg
ICByZXR1cm4gcmV0OworfQorCit0c2ZfcmVmbGVjdF90ICp0c2ZfcmVmbGVjdF9jcmVhdGVfYW55
KHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdHNmX3JlZmxlY3RfdCAqcmV0PW1hbGxvYyhzaXpl
b2YodHNmX3JlZmxlY3RfdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2ZfcmVmbGVjdF90Iik7CisgICAgICAgIHRzZl9i
dWZmZXJfZGVzdHJveShidWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisg
ICAgcmV0LT50eXBlPXRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfQU5ZKTsKKyAgICByZXQtPnUuYW55
PWJ1ZjsKKyAgICAKKyAgICBpbmNyZW1lbnRfcmVmbGVjdF9iYWxhbmNlKCk7CisgICAgCisgICAg
cmV0dXJuIHJldDsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY2xvbmUodHNmX3Jl
ZmxlY3RfdCAqZGF0YSkgeworICAgIHVpbnQzMl90IGk7CisgICAgdHNmX3JlZmxlY3RfdCAqcmV0
OworICAgIAorICAgIHN3aXRjaCAoZGF0YS0+dHlwZS0+a2luZF9jb2RlKSB7CisgICAgY2FzZSBU
U0ZfVEtfVUlOVDg6CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKyAgICBjYXNlIFRTRl9US19CSVQ6
CisgICAgY2FzZSBUU0ZfVEtfVk9JRDoKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldCA9IG1hbGxvYyhzaXplb2Yo
dHNmX3JlZmxlY3RfdCkpOworICAgIAorICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICB0
c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgdHNmX3JlZmxlY3RfdCBzdHJ1Y3R1cmUu
Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGUgPSB0
c2ZfdHlwZV9kdXAoZGF0YS0+dHlwZSk7CisgICAgCisgICAgaWYgKGlzX3N0cnVjdF9vcl9hcnJh
eShkYXRhLT50eXBlKSkgeworICAgICAgICByZXQtPnUuYy5zaXplID0gZGF0YS0+dS5jLnNpemU7
CisgICAgICAgIHJldC0+dS5jLmFycmF5ID0gbWFsbG9jKHNpemVvZih0c2ZfcmVmbGVjdF90Kikg
KiByZXQtPnUuYy5zaXplKTsKKyAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5ID09IE5VTEwpIHsK
KyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBhcnJheSBvZiBw
b2ludGVycyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9jbG9u
ZSgpIik7CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAg
ICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgLyogc2V0IHRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXkgdG8gTlVMTCBz
byB0aGF0IGRlc3Ryb3kKKyAgICAgICAgICogd29ya3MuICovCisgICAgICAgIGJ6ZXJvKHJldC0+
dS5jLmFycmF5LAorICAgICAgICAgICAgICBzaXplb2YodHNmX3JlZmxlY3RfdCopICogcmV0LT51
LmMuc2l6ZSk7CisgICAgICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmV0LT51LmMuc2l6
ZTsgKytpKSB7CisgICAgICAgICAgICBpZiAoZGF0YS0+dS5jLmFycmF5W2ldID09IE5VTEwpIHsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgcmV0LT51LmMuYXJyYXlbaV0gPSB0c2ZfcmVmbGVjdF9jbG9uZShkYXRhLT51
LmMuYXJyYXlbaV0pOworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5VTEwp
IHsKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAg
ICAgICAgICAgdHNmX3JlZmxlY3RfZGVzdHJveShyZXQpOworICAgICAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkYXRhLT50
eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0NIT0lDRSkgeworICAgICAgICByZXQtPnUuaC5jaG9p
Y2UgPSBkYXRhLT51LmguY2hvaWNlOworICAgICAgICByZXQtPnUuaC5kYXRhID0gdHNmX3JlZmxl
Y3RfY2xvbmUoZGF0YS0+dS5oLmRhdGEpOworICAgICAgICBpZiAocmV0LT51LmguZGF0YSA9PSBO
VUxMKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAg
ICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAg
IH0gZWxzZSBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19TVFJJTkcpIHsKKyAg
ICAgICAgcmV0LT51LnN0ciA9IHN0cmR1cChkYXRhLT51LnN0cik7CisgICAgICAgIGlmIChyZXQt
PnUuc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBz
dHJkdXAoKSIpOworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOworICAg
ICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQU5ZKSB7Cisg
ICAgICAgIHJldC0+dS5hbnkgPSB0c2ZfYnVmZmVyX2R1cChkYXRhLT51LmFueSk7CisgICAgICAg
IGlmIChyZXQtPnUuYW55ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3ko
cmV0LT50eXBlKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyoganVzdCBjb3B5IHRoZSBi
aXRzICovCisgICAgICAgIHJldC0+dSA9IGRhdGEtPnU7CisgICAgfQorICAgIAorICAgIGluY3Jl
bWVudF9yZWZsZWN0X2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lk
IHRzZl9yZWZsZWN0X2Rlc3Ryb3kodHNmX3JlZmxlY3RfdCAqZGF0YSkgeworICAgIHVpbnQzMl90
IGk7CisgICAgCisgICAgc3dpdGNoIChkYXRhLT50eXBlLT5raW5kX2NvZGUpIHsKKyAgICBjYXNl
IFRTRl9US19VSU5UODoKKyAgICBjYXNlIFRTRl9US19JTlQ4OgorICAgIGNhc2UgVFNGX1RLX0JJ
VDoKKyAgICBjYXNlIFRTRl9US19WT0lEOgorICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGRlY3JlbWVudF9yZWZsZWN0X2JhbGFu
Y2UoKTsKKyAgICAKKyAgICBpZiAoaXNfc3RydWN0X29yX2FycmF5KGRhdGEtPnR5cGUpKSB7Cisg
ICAgICAgIGZvciAoaSA9IDA7IGkgPCBkYXRhLT51LmMuc2l6ZTsgKytpKSB7CisgICAgICAgICAg
ICBpZiAoZGF0YS0+dS5jLmFycmF5W2ldID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHNmX3JlZmxl
Y3RfZGVzdHJveShkYXRhLT51LmMuYXJyYXlbaV0pOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoZGF0YS0+dS5jLmFycmF5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUoZGF0
YS0+dS5jLmFycmF5KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGF0YS0+dHlwZS0+a2lu
ZF9jb2RlID09IFRTRl9US19DSE9JQ0UpIHsKKyAgICAgICAgaWYgKGRhdGEtPnUuaC5kYXRhICE9
IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZGF0YS0+dS5oLmRhdGEp
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkYXRhLT50eXBlLT5raW5kX2NvZGUgPT0gVFNG
X1RLX1NUUklORykgeworICAgICAgICBmcmVlKGRhdGEtPnUuc3RyKTsKKyAgICB9IGVsc2UgaWYg
KGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQU5ZKSB7CisgICAgICAgIHRzZl9idWZm
ZXJfZGVzdHJveShkYXRhLT51LmFueSk7CisgICAgfQorICAgIAorICAgIHRzZl90eXBlX2Rlc3Ry
b3koZGF0YS0+dHlwZSk7CisKKyAgICBmcmVlKGRhdGEpOworfQorCit0c2ZfYm9vbF90IHRzZl9y
ZWZsZWN0X3ZlcmlmeSh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaTsKKyAg
ICAKKyAgICBpZiAoIWlzX3N0cnVjdF9vcl9hcnJheShkYXRhLT50eXBlKSkgeworICAgICAgICBy
ZXR1cm4gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCBkYXRhLT51
LmMuc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChkYXRhLT51LmMuYXJyYXlbaV0gPT0gTlVMTCkg
eworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9FTEVNRU5UX05VTEwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJJbiAlcyBhdCBpbmRleCA9ICIgZnVpMzIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQVJSQVkgPwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gYXJyYXkiIDogImEgc3RydWN0IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworLyogZG9l
cyBhIHByZXBhc3MgZm9yIHByb2R1Y2luZyBhIGJ1ZmZlciAqLworc3RhdGljIHVpbnQzMl90IHdy
aXRlX2NhbGNfc2l6ZSh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaSwgbnVt
X2JpdHMgPSAwLCByZXQgPSAwOworICAgIAorICAgIHN3aXRjaCAoZGF0YS0+dHlwZS0+a2luZF9j
b2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKyAgICAgICAgcmV0dXJuIHNpemVfb2Zf
dHNmX2ludGVnZXIoZGF0YS0+dS5wX2ludGVnZXIpOworICAgIGNhc2UgVFNGX1RLX0xPTkc6Cisg
ICAgICAgIHJldHVybiBzaXplX29mX3RzZl9sb25nKGRhdGEtPnUucF9sb25nKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2tpbmRf
aXNfcHJpbWl0aXZlKGRhdGEtPnR5cGUtPmtpbmRfY29kZSkpIHsKKyAgICAgICAgcmV0dXJuIHRz
Zl9wcmltaXRpdmVfdHlwZV9raW5kX3NpemVfb2YoZGF0YS0+dHlwZS0+a2luZF9jb2RlKTsKKyAg
ICB9CisgICAgCisgICAgaWYgKGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQklUKSB7
CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAKKyAgICBpZiAoZGF0YS0+dHlwZS0+a2lu
ZF9jb2RlID09IFRTRl9US19WT0lEKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAK
KyAgICBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19TVFJJTkcpIHsKKyAgICAg
ICAgcmV0dXJuIHN0cmxlbihkYXRhLT51LnN0cikgKyAxOworICAgIH0KKyAgICAKKyAgICBpZiAo
ZGF0YS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19BTlkpIHsKKyAgICAgICAgcmV0dXJuIHRz
Zl9idWZmZXJfY2FsY19zaXplKGRhdGEtPnUuYW55KTsKKyAgICB9CisgICAgCisgICAgaWYgKGRh
dGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQ0hPSUNFKSB7CisgICAgICAgIGlmICh0c2Zf
Y2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyhkYXRhLT50eXBlKSA+PSAyNTYpIHsKKyAgICAg
ICAgICAgIGlmIChkYXRhLT50eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29yZCkgeworICAgICAg
ICAgICAgICAgIHJldCArPSA0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICByZXQgKz0gc2l6ZV9vZl90c2ZfdW5zaWduZWQoZGF0YS0+dS5oLmNob2ljZSArIDEpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0ICs9IDE7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGRhdGEtPnUuaC5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgICAg
IHJldCArPSB3cml0ZV9jYWxjX3NpemUoZGF0YS0+dS5oLmRhdGEpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIAorICAgIGlmIChkYXRhLT50eXBlLT5raW5kX2Nv
ZGUgPT0gVFNGX1RLX0FSUkFZKSB7CisgICAgICAgIGlmIChkYXRhLT51LmMuc2l6ZSA+PSAyNTUp
IHsKKyAgICAgICAgICAgIHJldCArPSA1OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cmV0ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZm9yIChpID0gMDsgaSA8IGRh
dGEtPnUuYy5zaXplOyArK2kpIHsKKyAgICAgICAgaWYgKGRhdGEtPnUuYy5hcnJheVtpXS0+dHlw
ZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICsrbnVtX2JpdHM7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXQgKz0gd3JpdGVfY2FsY19zaXplKGRhdGEt
PnUuYy5hcnJheVtpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0ICs9ICgobnVt
X2JpdHMgKyA3KSA+PiAzKTsKKyAgICAKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdHNm
X2Jvb2xfdCB3cml0ZV9tYWlucGFzcyh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfb3V0X21hcF90ICp0eXBlX21hcCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKipidWYpIHsKKyAgICBzd2l0Y2gg
KGRhdGEtPnR5cGUtPmtpbmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RLX0lOVDg6CisgICAgY2Fz
ZSBUU0ZfVEtfVUlOVDg6CisgICAgY2FzZSBUU0ZfVEtfQklUOgorICAgICAgICBjb3B5X2h0b25j
X2luY2RzdCgqYnVmLCAmZGF0YS0+dS5wX3VpbnQ4X3QpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFRTRl9US19JTlQxNjoKKyAgICBjYXNlIFRTRl9US19VSU5UMTY6CisgICAgICAgIGNvcHlf
aHRvbnNfaW5jZHN0KCpidWYsICh1aW50OF90KikmZGF0YS0+dS5wX3VpbnQxNl90KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMy
OgorICAgICAgICBjb3B5X2h0b25sX2luY2RzdCgqYnVmLCAodWludDhfdCopJmRhdGEtPnUucF91
aW50MzJfdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgIGNh
c2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAgICAgY29weV9odG9ubGxfaW5jZHN0KCpidWYsICh1aW50
OF90KikmZGF0YS0+dS5wX3VpbnQ2NF90KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfSU5URUdFUjoKKyAgICAgICAgKmJ1ZiArPSB3cml0ZV90c2ZfaW50ZWdlcigqYnVmLCBkYXRh
LT51LnBfaW50ZWdlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0xPTkc6Cisg
ICAgICAgICpidWYgKz0gd3JpdGVfdHNmX2xvbmcoKmJ1ZiwgZGF0YS0+dS5wX2xvbmcpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19GTE9BVDoKKyAgICAgICAgY29weV9odG9uZl9p
bmNkc3QoKmJ1ZiwgKHVpbnQ4X3QqKSZkYXRhLT51LnBfZmxvYXQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRTRl9US19ET1VCTEU6CisgICAgICAgIGNvcHlfaHRvbmRfaW5jZHN0KCpidWYs
ICh1aW50OF90KikmZGF0YS0+dS5wX2RvdWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VFNGX1RLX0FSUkFZOiB7CisgICAgICAgIHVpbnQ4X3QgdG1wOworICAgICAgICBpZiAoZGF0YS0+
dS5jLnNpemUgPj0gMjU1KSB7CisgICAgICAgICAgICB0bXAgPSAodWludDhfdCkyNTU7CisgICAg
ICAgICAgICBjb3B5X2h0b25jX2luY2RzdCgqYnVmLCAmdG1wKTsKKyAgICAgICAgICAgIGNvcHlf
aHRvbmxfaW5jZHN0KCpidWYsICh1aW50OF90KikmZGF0YS0+dS5jLnNpemUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdG1wID0gKHVpbnQ4X3QpZGF0YS0+dS5jLnNpemU7CisgICAg
ICAgICAgICBjb3B5X2h0b25jX2luY2RzdCgqYnVmLCAmdG1wKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodHNmX3R5cGVfZ2V0X2tpbmRfY29kZSgKKyAgICAgICAgICAgICAgICB0c2ZfYXJyYXlf
dHlwZV9nZXRfZWxlbWVudF90eXBlKGRhdGEtPnR5cGUpKQorICAgICAgICAgICAgPT0gVFNGX1RL
X0JJVCkgeworICAgICAgICAgICAgdWludDMyX3QgaSwgajsKKyAgICAgICAgICAgIHVpbnQ4X3Qg
dmFsdWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgKyA3IDwgZGF0
YS0+dS5jLnNpemU7IGkgKz0gOCkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAg
ICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgODsgKytqKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChkYXRhLT51LmMuYXJyYXlbaSArIGpdLT51LmJpdCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgfD0gKDEgPDwgaik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoKmJ1ZiwgJnZhbHVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkYXRhLT51LmMuc2l6ZSA+IGkpIHsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChqID0gMDsg
aiA8IGRhdGEtPnUuYy5zaXplIC0gaTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChk
YXRhLT51LmMuYXJyYXlbaSArIGpdLT51LmJpdCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUgfD0gKDEgPDwgaik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoKmJ1ZiwgJnZhbHVlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGk7Cisg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGF0YS0+dS5jLnNpemU7ICsraSkgeworICAgICAg
ICAgICAgICAgIGlmICghd3JpdGVfbWFpbnBhc3MoZGF0YS0+dS5jLmFycmF5W2ldLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9tYXAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBidWYpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6IHsKKyAgICAgICAg
dWludDMyX3QgaTsKKyAgICAgICAgdWludDhfdCB2YWx1ZSwgYml0OworICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgZGF0YS0+dS5jLnNpemU7ICsraSkgeworICAgICAgICAgICAgaWYgKGRhdGEtPnUu
Yy5hcnJheVtpXS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghd3JpdGVfbWFp
bnBhc3MoZGF0YS0+dS5jLmFycmF5W2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmKSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgdmFsdWUgPSAwOworICAgICAgICBiaXQgPSAwOworICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgZGF0YS0+dS5jLnNpemU7ICsraSkgeworICAgICAgICAgICAgaWYgKGRhdGEtPnUuYy5h
cnJheVtpXS0+dHlwZS0+a2luZF9jb2RlICE9IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkYXRhLT51LmMuYXJy
YXlbaV0tPnUuYml0KSB7CisgICAgICAgICAgICAgICAgdmFsdWUgfD0gKDEgPDwgYml0KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICsrYml0OworICAgICAgICAgICAgaWYgKGJpdCA9PSA4
KSB7CisgICAgICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoKmJ1ZiwgJnZhbHVlKTsKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgYml0ID0gMDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoYml0KSB7CisgICAgICAgICAgICBjb3B5
X2h0b25jX2luY2RzdCgqYnVmLCAmdmFsdWUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgIGlmICh0c2ZfY2hvaWNlX3R5
cGVfZ2V0X251bV9lbGVtZW50cyhkYXRhLT50eXBlKSA+PSAyNTYpIHsKKyAgICAgICAgICAgIGlm
IChkYXRhLT50eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29yZCkgeworICAgICAgICAgICAgICAg
IGNvcHlfaHRvbmxfaW5jZHN0KCpidWYsICh1aW50OF90KikmZGF0YS0+dS5oLmNob2ljZSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpidWYgKz0gd3JpdGVfdHNmX3Vu
c2lnbmVkKCpidWYsIGRhdGEtPnUuaC5jaG9pY2UgKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgY2hvaWNlXzhiaXQ7CisgICAgICAgICAg
ICBpZiAoZGF0YS0+dS5oLmNob2ljZSA9PSBVSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAgICAg
Y2hvaWNlXzhiaXQgPSAyNTU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGNob2ljZV84Yml0ID0gZGF0YS0+dS5oLmNob2ljZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNvcHlfaHRvbmNfaW5jZHN0KCpidWYsICZjaG9pY2VfOGJpdCk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGRhdGEtPnUuaC5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghd3Jp
dGVfbWFpbnBhc3MoZGF0YS0+dS5oLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYpKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19WT0lEOgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRTRl9US19TVFJJTkc6CisjaWZkZWYgSEFWRV9TVFBDUFkKKyAgICAgICAgKmJ1
ZiA9ICh1aW50OF90KilzdHBjcHkoKGNoYXIqKSpidWYsIGRhdGEtPnUuc3RyKSArIDE7CisjZWxz
ZQorICAgICAgICBzdHJjcHkoKGNoYXIqKSpidWYsIGRhdGEtPnUuc3RyKTsKKyAgICAgICAgKmJ1
ZiArPSBzdHJsZW4oZGF0YS0+dS5zdHIpICsgMTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFRTRl9US19BTlk6CisgICAgICAgIGlmICghdHNmX2J1ZmZlcl93cml0ZV90b19idWYo
ZGF0YS0+dS5hbnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9t
YXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmKSkgeworICAgICAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0JBRF9UWVBFX0tJTkQsCisgICAg
ICAgICAgICAgICAgICAgICAgZnVpOCAiIGlzIG5vdCBhIHJlY29nbml6ZWQga2luZCBjb2RlLiIs
CisgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+dHlwZS0+a2luZF9jb2RlKTsKKyAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQor
Cit0c2ZfYnVmZmVyX3QgKnRzZl9yZWZsZWN0X21ha2VfYnVmZmVyKHRzZl9yZWZsZWN0X3QgKmRh
dGEpIHsKKyAgICB1aW50MzJfdCBzaXplOworICAgIHVpbnQ4X3QgKmJ1ZiwqY3VyOworICAgIHRz
Zl90eXBlX291dF9tYXBfdCAqdHlwZV9tYXA7CisgICAgdHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVz
OworICAgIAorICAgIGlmICghdHNmX3JlZmxlY3RfdmVyaWZ5KGRhdGEpKSB7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBzaXplPXdyaXRlX2NhbGNfc2l6ZShkYXRhKTsK
KworICAgIGJ1Zj1tYWxsb2Moc2l6ZSk7CisgICAgY3VyPWJ1ZjsKKyAgICAKKyAgICBpZiAoYnVm
PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBkYXRh
IGZvciBidWZmZXIgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9tYWtl
X2J1ZmZlcigpLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYg
KHRzZl90eXBlX2lzX2R5bmFtaWMoZGF0YS0+dHlwZSkpIHsKKyAgICAgICAgdHlwZV9tYXA9dHNm
X3R5cGVfb3V0X21hcF9jcmVhdGUoKTsKKyAgICAgICAgaWYgKHR5cGVfbWFwPT1OVUxMKSB7Cisg
ICAgICAgICAgICBmcmVlKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIHR5cGVfbWFwPU5VTEw7CisgICAgfQorICAgIAorICAg
IGlmICghd3JpdGVfbWFpbnBhc3MoZGF0YSx0eXBlX21hcCwmY3VyKSkgeworICAgICAgICBpZiAo
dHlwZV9tYXAhPU5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX291dF9tYXBfZGVzdHJveSh0
eXBlX21hcCk7CisgICAgICAgIH0KKyAgICAgICAgZnJlZShidWYpOworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKGN1ciE9YnVmK3NpemUpIHsKKyAgICAgICAgdHNm
X3NldF9lcnJvcihUU0ZfRV9JTlRFUk5BTCwKKyAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9tYWtl
X2J1ZmZlcigpIHdhcyBleHBlY3RlZCB0byB3cml0ZSAiCisgICAgICAgICAgICBmdWkzMiAiIGJ5
dGVzLCBidXQgIiBmc3ogIiBieXRlcyB3ZXJlIHdyaXR0ZW4gaW5zdGVhZC4iLAorICAgICAgICAg
ICAgc2l6ZSxjdXItYnVmKTsKKyAgICAgICAgaWYgKHR5cGVfbWFwIT1OVUxMKSB7CisgICAgICAg
ICAgICB0c2ZfdHlwZV9vdXRfbWFwX2Rlc3Ryb3kodHlwZV9tYXApOworICAgICAgICB9CisgICAg
ICAgIGZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlm
ICh0eXBlX21hcD09TlVMTCkgeworICAgICAgICB0eXBlcz10c2ZfdHlwZV9pbl9tYXBfZ2V0X2Vt
cHR5X3NpbmdsZXRvbigpOworICAgIH0gZWxzZSB7CisgICAgICAgIHR5cGVzPXRzZl90eXBlX2lu
X21hcF9mcm9tX3R5cGVfb3V0X21hcCh0eXBlX21hcCk7CisgICAgICAgIGlmICh0eXBlcz09TlVM
TCkgeworICAgICAgICAgICAgZnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl9idWZmZXJfY3JlYXRlKGRhdGEt
PnR5cGUsdHlwZXMsYnVmLHNpemUsdHNmX3RydWUpOworfQorCit0c2ZfcmVmbGVjdF90ICpyZWFk
X21haW5wYXNzKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl90eXBlX2luX21hcF90ICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZW5k
KSB7CisgICAgdHNmX3JlZmxlY3RfdCAqcmV0ID0gTlVMTDsgICAgLyogbWFrZSBHQ0MgaGFwcHkg
Ki8KKyAgICB1aW50OF90IHVpOF90bXA7CisgICAgaW50OF90IGk4X3RtcDsKKyAgICAKKyAgICAv
KiBtdXN0IHNwZWNpYWwtY2FzZSBzaW5nbGV0b25zISEgKi8KKyAgICBzd2l0Y2ggKHR5cGUtPmtp
bmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RLX0lOVDg6CisgICAgICAgIGNvcHlfbnRvaGNfaW5j
c3JjX2JjKCh1aW50OF90KikmaThfdG1wLCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmQsc2luZ2xldG9uX2JvdW5kc19lcnJvcik7CisgICAgICAgIHJldHVybiBpbnQ4X2Rh
dGEgKyBpOF90bXAgKyAxMjg7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisgICAgICAgIGNvcHlf
bnRvaGNfaW5jc3JjX2JjKCZ1aThfdG1wLCAqYnVmLCBlbmQsIHNpbmdsZXRvbl9ib3VuZHNfZXJy
b3IpOworICAgICAgICByZXR1cm4gdWludDhfZGF0YSArIHVpOF90bXA7CisgICAgY2FzZSBUU0Zf
VEtfQklUOgorICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCwgKmJ1ZiwgZW5k
LCBzaW5nbGV0b25fYm91bmRzX2Vycm9yKTsKKyAgICAgICAgaWYgKHVpOF90bXAgIT0gMCkgewor
ICAgICAgICAgICAgcmV0dXJuICZiaXRfZGF0YV90cnVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiAmYml0X2RhdGFfZmFsc2U7CisgICAgY2FzZSBUU0ZfVEtfVk9JRDoKKyAgICAgICAgcmV0
dXJuICZ2b2lkX2RhdGE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IAorICAgIHJldD1tYWxsb2Moc2l6ZW9mKHRzZl9yZWZsZWN0X3QpKTsKKyAgICBpZiAocmV0PT1O
VUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSB0c2ZfcmVm
bGVjdF90Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5
cGU9dHNmX3R5cGVfZHVwKHR5cGUpOworICAgIAorICAgIHN3aXRjaCAodHlwZS0+a2luZF9jb2Rl
KSB7CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKyAgICBjYXNlIFRTRl9US19VSU5UODoKKyAgICAg
ICAgdHNmX2Fib3J0KCJTaG91bGQgaGF2ZSBiZWVuIGhhbmRsZWQgYWJvdmUuIik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDE2OgorICAgIGNhc2UgVFNGX1RLX1VJTlQxNjoK
KyAgICAgICAgY29weV9udG9oc19pbmNzcmNfYmMoKHVpbnQ4X3QqKSZyZXQtPnUucF91aW50MTZf
dCwgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBib3VuZHNfZXJyb3Ip
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAgICBjYXNlIFRTRl9U
S19VSU5UMzI6CisgICAgICAgIGNvcHlfbnRvaGxfaW5jc3JjX2JjKCh1aW50OF90KikmcmV0LT51
LnBfdWludDMyX3QsICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCwgYm91
bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAg
Y2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICBjb3B5X250b2hsbF9pbmNzcmNfYmMoKHVpbnQ4
X3QqKSZyZXQtPnUucF91aW50NjRfdCwgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtf
SU5URUdFUjoKKyAgICAgICAgcmVhZF90c2ZfaW50ZWdlcl9pbmNzcmMoJnJldC0+dS5wX2ludGVn
ZXIsICpidWYsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfTE9ORzoKKyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJnJldC0+dS5wX2xvbmcs
ICpidWYsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfRkxPQVQ6CisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjX2JjKCh1aW50OF90KikmcmV0LT51
LnBfZmxvYXQsICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCwgYm91bmRz
X2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOgorICAgICAg
ICBjb3B5X250b2hkX2luY3NyY19iYygodWludDhfdCopJnJldC0+dS5wX2RvdWJsZSwgKmJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFRTRl9US19CSVQ6CisgICAgICAgIHRzZl9hYm9ydCgiU2hvdWxk
IGhhdmUgYmVlbiBoYW5kbGVkIGFib3ZlLiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRT
Rl9US19BUlJBWTogeworICAgICAgICB1aW50MzJfdCBpOworICAgICAgICB0c2ZfdHlwZV90ICpl
bGVfdHlwZSA9IHRzZl9hcnJheV90eXBlX2dldF9lbGVtZW50X3R5cGUodHlwZSk7CisgICAgICAg
IHVpbnQ4X3QgdG1wOworCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjX2JjKCZ0bXAsICpidWYs
IGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgaWYgKHRtcCA9PSAyNTUpIHsKKyAgICAgICAg
ICAgIGNvcHlfbnRvaGxfaW5jc3JjX2JjKCh1aW50OF90KikmcmV0LT51LmMuc2l6ZSwgKmJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldC0+dS5jLnNpemUgPSB0bXA7CisgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgcmV0LT51LmMuYXJyYXkgPSBtYWxsb2Moc2l6
ZW9mKHRzZl9yZWZsZWN0X3QqKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dC0+dS5jLnNpemUpOworICAgICAgICBpZiAocmV0LT51LmMuYXJyYXkgPT0gTlVMTCkgeworICAg
ICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFsbG9jYXRlIGFycnJheSBvZiBwb2lu
dGVycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0c2ZfcmVmbGVjdF9mcm9tX2J1
ZmZlcl9pbXBsKCkiKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsK
KyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIGlmICh0c2ZfdHlwZV9nZXRfa2luZF9jb2Rl
KGVsZV90eXBlKSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICB1aW50MzJfdCBpLGosazsK
KyAgICAgICAgICAgIHVpbnQ4X3QgdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgZm9yIChpID0gMDsgaSArIDcgPCByZXQtPnUuYy5zaXplOyBpICs9IDgpIHsKKyAgICAg
ICAgICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdmFsdWUsICpidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBiaXRzX2JvdW5kc19lcnJvcik7CisgICAg
ICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDg7ICsraikgeworICAgICAgICAgICAgICAgICAg
ICByZXQtPnUuYy5hcnJheVtpICsgal0gPQorICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3Jl
ZmxlY3RfY3JlYXRlX2JpdCgodmFsdWUgJiAoMSA8PCBqKSkgIT0gMCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXQtPnUuYy5hcnJheVtpICsgal0gPT0gTlVMTCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGkgKyBqOyArK2spIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95KHJldC0+dS5jLmFycmF5W2tdKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBl
X2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUocmV0LT51
LmMuYXJyYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmV0LT51LmMuc2l6
ZSA+IGkpIHsKKyAgICAgICAgICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdmFsdWUsICpi
dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBiaXRzX2JvdW5k
c19lcnJvcik7CisgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHJldC0+dS5jLnNpemUg
LSBpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0LT51LmMuYXJyYXlbaSArIGpdID0K
KyAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWZsZWN0X2NyZWF0ZV9iaXQoKHZhbHVlICYg
KDEgPDwgaikpICE9IDApOworICAgICAgICAgICAgICAgICAgICBpZiAocmV0LT51LmMuYXJyYXlb
aSArIGpdID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsg
PCBpICsgajsgKytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3Rf
ZGVzdHJveShyZXQtPnUuYy5hcnJheVtrXSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmVlKHJldC0+dS5jLmFycmF5KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBiaXRz
X2JvdW5kc19lcnJvcjoKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyArK2opIHsKKyAg
ICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95KHJldC0+dS5jLmFycmF5W2pdKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyZWUocmV0LT51LmMuYXJyYXkpOworICAgICAgICAg
ICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgZm9yIChpID0gMDsgaSA8IHJldC0+dS5jLnNpemU7ICsraSkgeworICAgICAgICAgICAgcmV0
LT51LmMuYXJyYXlbaV0gPSByZWFkX21haW5wYXNzKGVsZV90eXBlLCB0eXBlcywgYnVmLCBlbmQp
OworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5VTEwpIHsKKyAgICAgICAg
ICAgICAgICB1aW50MzJfdCBqOworICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyAr
K2opIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfZGVzdHJveShyZXQtPnUuYy5h
cnJheVtqXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZyZWUocmV0LT51
LmMuYXJyYXkpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsK
KyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgVFNGX1RLX1NUUlVDVDogeworICAgICAgICB1aW50MzJfdCBpOworICAgICAgICB1aW50OF90
IGJpdDsKKyAgICAgICAgdWludDhfdCB2YWx1ZSA9IDA7IC8qIGFzc2lnbm1lbnQgb25seSB0byBt
YWtlIGdjYyBoYXBweSAqLworICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgICAgICAg
ICAgICAgIAorICAgICAgICByZXQtPnUuYy5zaXplID0gdHNmX3N0cnVjdF90eXBlX2dldF9udW1f
ZWxlbWVudHModHlwZSk7CisgICAgICAgIHJldC0+dS5jLmFycmF5ID0gbWFsbG9jKHNpemVvZih0
c2ZfcmVmbGVjdF90KikgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zfc3Ry
dWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgIGlmIChyZXQtPnUuYy5hcnJheSA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vy
cm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgYXJycmF5IG9mIHBvaW50ZXJzICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgImluIHRzZl9yZWZsZWN0X2Zyb21fYnVmZmVyX2ltcGwoKSIpOworICAg
ICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOworICAgICAgICAgICAgZnJlZShy
ZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1l
bnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAgICAgIG4gPSB0c2Zfc3RydWN0X3R5cGVfZ2V0X2Vs
ZW1lbnQodHlwZSwgaSk7CisgICAgICAgICAgICBpZiAobi0+dHlwZS0+a2luZF9jb2RlID09IFRT
Rl9US19CSVQpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldC0+dS5jLmFycmF5W2ldID0gcmVhZF9tYWlucGFzcyhuLT50eXBlLCB0eXBl
cywgYnVmLCBlbmQpOworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5VTEwp
IHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBqOworICAgICAgICAgICAgICAgIGZvciAoaiA9
IDA7IGogPCBpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgbiA9IHRzZl9zdHJ1Y3RfdHlw
ZV9nZXRfZWxlbWVudCh0eXBlLGopOworICAgICAgICAgICAgICAgICAgICBpZiAobi0+dHlwZS0+
a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRzZl9yZWZs
ZWN0X2Rlc3Ryb3kocmV0LT51LmMuYXJyYXlbal0pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBmcmVlKHJldC0+dS5jLmFycmF5KTsKKyAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGJpdCA9IDg7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVfZ2V0X251
bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAgICAgICAgICBuID0gdHNmX3N0cnVjdF90eXBl
X2dldF9lbGVtZW50KHR5cGUsIGkpOworICAgICAgICAgICAgaWYgKG4tPnR5cGUtPmtpbmRfY29k
ZSAhPSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoYml0ID09IDgpIHsKKyAgICAgICAgICAgICAgICBjb3B5X250
b2hjX2luY3NyY19iYygmdmFsdWUsICpidWYsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAg
ICAgICAgICBiaXQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0LT51LmMuYXJy
YXlbaV0gPQorICAgICAgICAgICAgICAgIHRzZl9yZWZsZWN0X2NyZWF0ZV9iaXQoKHZhbHVlICYg
KDEgPDwgYml0KSkpOworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5VTEwp
IHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBqOworICAgICAgICAgICAgICAgIGZvciAoaiA9
IDA7IGogPCBpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfZGVzdHJv
eShyZXQtPnUuYy5hcnJheVtpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGZyZWUocmV0LT51LmMuYXJyYXkpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3ko
cmV0LT50eXBlKTsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2JpdDsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAgICAg
ICBpZiAodHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSkgPj0gMjU2KSB7Cisg
ICAgICAgICAgICBpZiAodHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpIHsKKyAgICAgICAg
ICAgICAgICBjb3B5X2h0b25sX2luY3NyY19iYygodWludDhfdCopJnJldC0+dS5oLmNob2ljZSwg
KmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQsIGJvdW5kc19l
cnJvcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRzZl91bnNpZ25l
ZF90IGNob2ljZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZWFkX3RzZl91bnNpZ25lZF9pbmNz
cmMoJmNob2ljZV92YWx1ZSwgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAgICAgICAgIHJldC0+dS5oLmNo
b2ljZSA9IGNob2ljZV92YWx1ZSAtIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB1aW50OF90IGNob2ljZV84Yml0OworICAgICAgICAgICAgY29weV9odG9u
Y19pbmNzcmNfYmMoJmNob2ljZV84Yml0LCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAgICAgcmV0LT51LmguY2hvaWNl
ID0KKyAgICAgICAgICAgICAgICBjaG9pY2VfOGJpdCA9PSAyNTUgPyBVSU5UMzJfTUFYIDogY2hv
aWNlXzhiaXQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldC0+dS5oLmNob2ljZSAhPSBVSU5U
MzJfTUFYKSB7CisgICAgICAgICAgICBpZiAocmV0LT51LmguY2hvaWNlID49IHRzZl9jaG9pY2Vf
dHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJD
aG9pY2UgaXMgb3V0IG9mIGJvdW5kcyBvZiB3aGF0IHdlIGtub3c6ICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ0aGUgdmFsdWUgd2Ugc2VlIGlzICIgZnVpMzIgIiBidXQgdGhlICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhl
IGNob2ljZSB0eXBlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1aTMyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LT51LmguY2hvaWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlw
ZSkpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAg
ICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXQtPnUuaC5kYXRhID0gcmVhZF9tYWlucGFzcygKKyAg
ICAgICAgICAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQodHlwZSwgcmV0LT51Lmgu
Y2hvaWNlKS0+dHlwZSwKKyAgICAgICAgICAgICAgICB0eXBlcywgYnVmLCBlbmQpOworICAgICAg
ICAgICAgaWYgKHJldC0+dS5oLmRhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl90
eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICByZXQtPnUuaC5kYXRhID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFRTRl9US19WT0lEOgorICAgICAgICB0c2ZfYWJvcnQoIlNob3VsZCBo
YXZlIGJlZW4gaGFuZGxlZCBhYm92ZS4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfU1RSSU5HOgorICAgIHsKKyAgICAgICAgY29uc3Qgc2l6ZV90IHN0ZXAgPSAxMjg7CisgICAg
ICAgIHNpemVfdCBzaXplID0gc3RlcDsKKyAgICAgICAgdWludDMyX3QgaSA9IDA7CisgICAgICAg
IHJldC0+dS5zdHIgPSBtYWxsb2Moc2l6ZSk7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
ICAgIHVpbnQzMl90IG47CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJl
dC0+dS5zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxk
IG5vdCAobXxyZSlhbGxvYyBzdHJpbmciKTsKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0
cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZvciAobiA9IHN0ZXA7IG4tLT4wOykgeworICAgICAgICAgICAgICAgIHVpbnQ4
X3QgYzsKKyAgICAgICAgICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmYywgKmJ1ZiwgZW5k
LCBib3VuZHNfZXJyb3IpOworICAgICAgICAgICAgICAgIHJldC0+dS5zdHJbaSsrXSA9IGM7Cisg
ICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmV0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICBzaXplICs9IHN0ZXA7CisgICAgICAgICAgICByZXQtPnUuc3RyID0g
cmVhbGxvYyhyZXQtPnUuc3RyLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICB0c2ZfYXNzZXJ0
KCEidW5yZWFjaGFibGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVFNGX1RL
X0FOWTogeworICAgICAgICByZXQtPnUuYW55ID0gdHNmX2J1ZmZlcl9yZWFkX2Zyb21fYnVmKHR5
cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAg
IGlmIChyZXQtPnUuYW55ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3ko
cmV0LT50eXBlKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAg
ICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVEVSTkFMLAorICAgICAgICAgICAgICAgICAgICAg
IGZ1aTMyICIgaXMgbm90IGEgcmVjb2duaXplZCBraW5kIGNvZGUuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICB0eXBlLT5raW5kX2NvZGUpOworICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+
dHlwZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIGluY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1cm4g
cmV0OworCitib3VuZHNfZXJyb3I6CisgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOwor
ICAgIGZyZWUocmV0KTsKK3NpbmdsZXRvbl9ib3VuZHNfZXJyb3I6CisgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICJCb3VuZHMgZXJyb3IgaW4g
cmVmbGVjdGluZyBwYXJzZXIiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwordHNmX3JlZmxlY3Rf
dCAqdHNmX3JlZmxlY3RfZnJvbV9idWZmZXIodHNmX2J1ZmZlcl90ICpidWYpIHsKKyAgICB1aW50
OF90ICpkYXRhOworICAgIHRzZl9yZWZsZWN0X3QgKnJldDsKKworICAgIGNoZWNrX2luaXRfcmVm
bGVjdCgpOworCisgICAgZGF0YT1idWYtPmRhdGE7CisgICAgCisgICAgcmV0PXJlYWRfbWFpbnBh
c3MoYnVmLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgIGJ1Zi0+dHlwZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90Kili
dWYtPmRhdGEpK2J1Zi0+c2l6ZSk7CisgICAgaWYgKHJldD09TlVMTCkgeworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKGRhdGEhPSgodWludDhfdCopYnVmLT5kYXRh
KStidWYtPnNpemUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwK
KyAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9mcm9tX2J1ZmZlcl9pbXBsKCkgd2FzIGV4cGVjdGVk
IHRvIHJlYWQgIgorICAgICAgICAgICAgZnVpMzIgIiBieXRlcywgYnV0ICIgZnN6ICIgYnl0ZXMg
d2VyZSByZWFkIGluc3RlYWQuIiwKKyAgICAgICAgICAgIGJ1Zi0+c2l6ZSwoKHVpbnQ4X3QqKWRh
dGEpLSgodWludDhfdCopYnVmLT5kYXRhKSk7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3ko
cmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXQ7
Cit9CisKK3RzZl90eXBlX3QgKnRzZl9yZWZsZWN0X2dldF90eXBlKHRzZl9yZWZsZWN0X3QgKmRh
dGEpIHsKKyAgICByZXR1cm4gZGF0YS0+dHlwZTsKK30KKwordHNmX3R5cGVfa2luZF90IHRzZl9y
ZWZsZWN0X2dldF9raW5kX2NvZGUodHNmX3JlZmxlY3RfdCAqZGF0YSkgeworICAgIHJldHVybiB0
c2ZfdHlwZV9nZXRfa2luZF9jb2RlKHRzZl9yZWZsZWN0X2dldF90eXBlKGRhdGEpKTsKK30KKwor
c3RhdGljIHRzZl9ib29sX3Qgc3RydWN0X3NldF9lbGVtZW50X2ltcGwodHNmX25hbWVkX3R5cGVf
dCAqbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWZs
ZWN0X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfcmVmbGVjdF90ICplbGVfZGF0YSkgeworICAgIHVpbnQzMl90IGluZGV4OworCisgICAgaWYg
KCF0c2ZfdHlwZV9jb21wYXJlKG4tPnR5cGUsZWxlX2RhdGEtPnR5cGUpKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAgICAgICAiVGhpcmQgYXJndW1lbnQg
dG8gdHNmX3N0cnVjdF9zZXRfZWxlbWVudCgpIGRvZXMgIgorICAgICAgICAgICAgIm5vdCBoYXZl
IHRoZSByaWdodCB0eXBlLiIpOworICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95KGVsZV9kYXRh
KTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaW5kZXg9dHNm
X25hbWVkX3R5cGVfZ2V0X2luZGV4KG4pOworICAgIAorICAgIGlmIChkYXRhLT51LmMuYXJyYXlb
aW5kZXhdIT1OVUxMKSB7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZGF0YS0+dS5jLmFy
cmF5W2luZGV4XSk7CisgICAgfQorICAgIGRhdGEtPnUuYy5hcnJheVtpbmRleF09ZWxlX2RhdGE7
CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJ1Y3RfcmVmbGVj
dF9zZXRfZWxlbWVudCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWZsZWN0X3QgKmVsZV9kYXRhKSB7CisgICAg
dHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICBpZiAoZWxlX2RhdGE9PU5VTEwpIHsKKyAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKGRhdGEtPnR5cGUt
PmtpbmRfY29kZSE9VFNGX1RLX1NUUlVDVCkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9F
X0JBRF9UWVBFLAorICAgICAgICAgICAgIkZpcnN0IGFyZ3VtZW50IHRvIHRzZl9zdHJ1Y3RfcmVm
bGVjdF9zZXRfZWxlbWVudCgpIGlzICIKKyAgICAgICAgICAgICJub3QgYSBzdHJ1Y3QuIik7Cisg
ICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZWxlX2RhdGEpOworICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBuPXRzZl9zdHJ1Y3RfdHlwZV9maW5kX25vZGUoZGF0
YS0+dHlwZSxuYW1lKTsKKyAgICBpZiAobj09TlVMTCkgeworICAgICAgICB0c2ZfcmVmbGVjdF9k
ZXN0cm95KGVsZV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RydWN0X3NldF9lbGVtZW50X2ltcGwobixkYXRhLGVsZV9kYXRhKTsKK30KKwor
dHNmX2Jvb2xfdCB0c2Zfc3RydWN0X3JlZmxlY3Rfc2V0X2VsZW1lbnRfYnlfaW5kZXgodHNmX3Jl
ZmxlY3RfdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlX2RhdGEpIHsKKyAgICBpZiAo
ZWxlX2RhdGE9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlIT1UU0ZfVEtfU1RSVUNUKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAgICAgICAgICAgICAgICAgIkZpcnN0
IGFyZ3VtZW50IHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3N0cnVjdF9yZWZsZWN0
X3NldF9lbGVtZW50X2J5X2luZGV4KCkgaXMgbm90IGEgIgorICAgICAgICAgICAgICAgICAgICAg
ICJzdHJ1Y3QuIik7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZWxlX2RhdGEpOworICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoaW5kZXg+PXRzZl9z
dHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRhdGEtPnR5cGUpKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfSU5WQUxJRF9BUkcsCisgICAgICAgICAgICAgICAgICAgICAgIkluZGV4
ICIgZnVpMzIgIiBpcyBvdXQgb2YgYm91bmRzIG9mIHZhbGlkIGVsZW1lbnQgIgorICAgICAgICAg
ICAgICAgICAgICAgICJpbmRpY2VzICh1cHBlciBib3VuZCBpcyAiIGZ1aTMyICIpIGluICIKKyAg
ICAgICAgICAgICAgICAgICAgICAidHNmX3N0cnVjdF9yZWZsZWN0X3NldF9lbGVtZW50X2J5X2lu
ZGV4KCkiLAorICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgIHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRhdGEtPnR5cGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RydWN0X3NldF9lbGVt
ZW50X2ltcGwodHNmX3N0cnVjdF90eXBlX2dldF9lbGVtZW50KGRhdGEtPnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZV9kYXRhKTsKK30KKwordHNmX3JlZmxlY3Rf
dCAqdHNmX3N0cnVjdF9yZWZsZWN0X2dldF9lbGVtZW50KHRzZl9yZWZsZWN0X3QgKmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
bmFtZSkgeworICAgIHRzZl9uYW1lZF90eXBlX3QgKm47CisKKyAgICBpZiAoZGF0YS0+dHlwZS0+
a2luZF9jb2RlIT1UU0ZfVEtfU1RSVUNUKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0Vf
QkFEX1RZUEUsCisgICAgICAgICAgICAiRmlyc3QgYXJndW1lbnQgdG8gdHNmX3N0cnVjdF9yZWZs
ZWN0X2dldF9lbGVtZW50KCkgaXMgIgorICAgICAgICAgICAgIm5vdCBhIHN0cnVjdC4iKTsKKyAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbj10c2Zfc3RydWN0X3R5
cGVfZmluZF9ub2RlKGRhdGEtPnR5cGUsbmFtZSk7CisgICAgaWYgKG49PU5VTEwpIHsKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldHVybiBkYXRhLT51LmMuYXJyYXlb
dHNmX25hbWVkX3R5cGVfZ2V0X2luZGV4KG4pXTsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNmX3N0
cnVjdF9yZWZsZWN0X2dldF9lbGVtZW50X2J5X2luZGV4KHRzZl9yZWZsZWN0X3QgKmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgaW5kZXgpIHsKKyAgICBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlIT1UU0ZfVEtfU1RS
VUNUKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAgICAg
ICAiRmlyc3QgYXJndW1lbnQgdG8gdHNmX3N0cnVjdF9yZWZsZWN0X2dldF9lbGVtZW50KCkgaXMg
IgorICAgICAgICAgICAgIm5vdCBhIHN0cnVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgaWYgKGluZGV4Pj10c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9l
bGVtZW50cyhkYXRhLT50eXBlKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVkFM
SURfQVJHLAorICAgICAgICAgICAgICAgICAgICAgICJJbmRleCAiIGZ1aTMyICIgaXMgb3V0IG9m
IGJvdW5kcyBvZiB2YWxpZCBlbGVtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAiaW5kaWNl
cyAodXBwZXIgYm91bmQgaXMgIiBmdWkzMiAiKSBpbiAiCisgICAgICAgICAgICAgICAgICAgICAg
InRzZl9zdHJ1Y3RfcmVmbGVjdF9nZXRfZWxlbWVudF9ieV9pbmRleCgpIiwKKyAgICAgICAgICAg
ICAgICAgICAgICBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICB0c2Zfc3RydWN0X3R5cGVf
Z2V0X251bV9lbGVtZW50cyhkYXRhLT50eXBlKSk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgfQorICAgIAorICAgIHJldHVybiBkYXRhLT51LmMuYXJyYXlbaW5kZXhdOworfQorCit1
aW50MzJfdCB0c2Zfc3RydWN0X2VmbGVjdF9nZXRfbnVtX2VsZW1lbnRzKHRzZl9yZWZsZWN0X3Qg
KmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHModHNm
X3JlZmxlY3RfZ2V0X3R5cGUoZGF0YSkpOworfQorCit0c2ZfYm9vbF90IHRzZl9hcnJheV9yZWZs
ZWN0X2FwcGVuZCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlX2RhdGEpIHsKKyAgICBpZiAoZWxlX2RhdGE9
PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYg
KGRhdGEtPnR5cGUtPmtpbmRfY29kZSE9VFNGX1RLX0FSUkFZKSB7CisgICAgICAgIHRzZl9zZXRf
ZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAgICAgICAiRmlyc3QgYXJndW1lbnQgdG8gdHNm
X2FycmF5X3JlZmxlY3RfYXBwZW5kKCkgaXMgIgorICAgICAgICAgICAgIm5vdCBhbiBhcnJheS4i
KTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2Zf
dHlwZV9jb21wYXJlKGVsZV9kYXRhLT50eXBlLAorICAgICAgICAgICAgdHNmX2FycmF5X3R5cGVf
Z2V0X2VsZW1lbnRfdHlwZShkYXRhLT50eXBlKSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihU
U0ZfRV9CQURfVFlQRSwKKyAgICAgICAgICAgICJTZWNvbmQgYXJndW1lbnQgdG8gdHNmX2FycmF5
X3JlZmxlY3RfYXBwZW5kKCkgZG9lcyAiCisgICAgICAgICAgICAibWF0Y2ggdGhlIGVsZW1lbnQg
dHlwZSBvZiB0aGUgYXJyYXkuIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGlmIChkYXRhLT51LmMuYXJyYXk9PU5VTEwpIHsKKyAgICAgICAgZGF0YS0+dS5j
LmFycmF5PW1hbGxvYyhzaXplb2YodHNmX3JlZmxlY3RfdCopKTsKKyAgICAgICAgaWYgKGRhdGEt
PnUuYy5hcnJheT09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90
IGFsbG9jYXRlIGFycmF5IG9mIHRzZl9yZWZsZWN0X3QqIik7CisgICAgICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHNmX3JlZmxlY3Rf
dCAqKm5ld19hcnJheT1yZWFsbG9jKGRhdGEtPnUuYy5hcnJheSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0c2ZfcmVmbGVjdF90KikqCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YS0+dS5jLnNpemUrMSkpOwor
ICAgICAgICBpZiAobmV3X2FycmF5PT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5v
KCJDb3VsZCBub3QgYWxsb2NhdGUgYXJyYXkgb2YgdHNmX3JlZmxlY3RfdCoiKTsKKyAgICAgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS0+dS5jLmFycmF5
PW5ld19hcnJheTsKKyAgICB9CisgICAgCisgICAgZGF0YS0+dS5jLmFycmF5W2RhdGEtPnUuYy5z
aXplKytdPWVsZV9kYXRhOworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGlj
IHRzZl9ib29sX3QgY2hvaWNlX3NldF9pbXBsKHRzZl9uYW1lZF90eXBlX3QgKm4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICplbGVfZGF0YSkgeworICAg
IGlmICghdHNmX3R5cGVfY29tcGFyZShuLT50eXBlLGVsZV9kYXRhLT50eXBlKSkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0JBRF9UWVBFLAorICAgICAgICAgICAgIlRoaXJkIGFyZ3Vt
ZW50IHRvIHRzZl9jaG9pY2VfcmVmbGVjdF9zZXQoKSBkb2VzICIKKyAgICAgICAgICAgICJub3Qg
aGF2ZSB0aGUgY29ycmVjdCB0eXBlLiIpOworICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95KGVs
ZV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZGF0
YS0+dS5oLmRhdGEhPU5VTEwpIHsKKyAgICAgICAgdHNmX3JlZmxlY3RfZGVzdHJveShkYXRhLT51
LmguZGF0YSk7CisgICAgfQorICAgIAorICAgIGRhdGEtPnUuaC5jaG9pY2U9bi0+aW5kZXg7Cisg
ICAgZGF0YS0+dS5oLmRhdGE9ZWxlX2RhdGE7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOwor
fQorCit0c2ZfYm9vbF90IHRzZl9jaG9pY2VfcmVmbGVjdF9zZXQodHNmX3JlZmxlY3RfdCAqZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaG9pY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlX2Rh
dGEpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgIAorICAgIGlmIChjaG9pY2U9PU5V
TEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9jaG9pY2VfcmVmbGVjdF9zZXRfdW5rbm93bihkYXRh
KTsKKyAgICB9CisKKyAgICBpZiAoZWxlX2RhdGE9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbj10c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2RlKGRh
dGEtPnR5cGUsY2hvaWNlKTsKKyAgICBpZiAobj09TlVMTCkgeworICAgICAgICB0c2ZfcmVmbGVj
dF9kZXN0cm95KGVsZV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIGNob2ljZV9zZXRfaW1wbChuLGRhdGEsZWxlX2RhdGEpOworfQorCit0
c2ZfYm9vbF90IHRzZl9jaG9pY2VfcmVmbGVjdF9zZXRfYnlfaW5kZXgodHNmX3JlZmxlY3RfdCAq
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
cmVmbGVjdF90ICplbGVfZGF0YSkgeworICAgIGlmIChpbmRleD09VUlOVDMyX01BWCkgeworICAg
ICAgICByZXR1cm4gdHNmX2Nob2ljZV9yZWZsZWN0X3NldF91bmtub3duKGRhdGEpOworICAgIH0K
KworICAgIGlmIChlbGVfZGF0YT09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKworICAgIGlmIChpbmRleD49dHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMo
ZGF0YS0+dHlwZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9JTlZBTElEX0FSRywK
KyAgICAgICAgICAgICAgICAgICAgICAiSW5kZXggIiBmdWkzMiAiIGlzIG91dCBvZiBib3VuZHMg
b2YgdmFsaWQgZWxlbWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgImluZGljZXMgKHVwcGVy
IGJvdW5kIGlzICIgZnVpMzIgIikgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfY2hv
aWNlX3JlZmxlY3Rfc2V0X2J5X2luZGV4KCkiLAorICAgICAgICAgICAgICAgICAgICAgIGluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgIHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRz
KGRhdGEtPnR5cGUpKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGNob2ljZV9zZXRfaW1wbCh0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoZGF0
YS0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlX2RhdGEpOworfQorCit0c2ZfYm9vbF90IHRzZl9jaG9p
Y2VfcmVmbGVjdF9zZXRfdW5rbm93bih0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgaWYgKGRh
dGEtPnUuaC5kYXRhIT1OVUxMKSB7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZGF0YS0+
dS5oLmRhdGEpOworICAgIH0KKyAgICAKKyAgICBkYXRhLT51LmguY2hvaWNlPVVJTlQzMl9NQVg7
CisgICAgZGF0YS0+dS5oLmRhdGE9TlVMTDsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9
CisKK3VpbnQzMl90IHRzZl9jaG9pY2VfcmVmbGVjdF9nZXRfaW5kZXgodHNmX3JlZmxlY3RfdCAq
ZGF0YSkgeworICAgIHJldHVybiBkYXRhLT51LmguY2hvaWNlOworfQorCit0c2ZfYm9vbF90IHRz
Zl9jaG9pY2VfcmVmbGVjdF9pc19rbm93bih0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0
dXJuIHRzZl9jaG9pY2VfcmVmbGVjdF9nZXRfaW5kZXgoZGF0YSkgIT0gVFNGX1VJTlQzMl9NQVg7
Cit9CisKK2NvbnN0IGNoYXIgKnRzZl9jaG9pY2VfcmVmbGVjdF9nZXRfY2hvaWNlKHRzZl9yZWZs
ZWN0X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX2Nob2ljZV9yZWZsZWN0X2lzX2tub3duKGRh
dGEpID8KKyAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9lbGVtZW50KGRhdGEtPnR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT51LmguY2hvaWNlKS0+bmFt
ZSA6CisgICAgICAgIE5VTEw7Cit9CisKK3RzZl9yZWZsZWN0X3QgKnRzZl9jaG9pY2VfcmVmbGVj
dF9nZXRfZGF0YSh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGEtPnUuaC5k
YXRhOworfQorCit0c2ZfcmVmbGVjdF90ICp0c2ZfYXJyYXlfcmVmbGVjdF9nZXRfZWxlbWVudCh0
c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgaW5kZXgpIHsKKyAgICByZXR1cm4gZGF0YS0+dS5jLmFycmF5W2lu
ZGV4XTsKK30KKwordWludDMyX3QgdHNmX2FycmF5X3JlZmxlY3RfZ2V0X251bV9lbGVtZW50cyh0
c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGEtPnUuYy5zaXplOworfQorCit0
c2ZfYm9vbF90IHRzZl9iaXRfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSkgeworICAg
IHJldHVybiBkYXRhLT51LmJpdDsKK30KKworY29uc3QgY2hhciogdHNmX3N0cmluZ19yZWZsZWN0
X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGEtPnUuc3RyOworfQor
Cit0c2ZfYnVmZmVyX3QgKnRzZl9hbnlfcmVmbGVjdF9nZXRfYnVmZmVyKHRzZl9yZWZsZWN0X3Qg
KmRhdGEpIHsKKyAgICByZXR1cm4gZGF0YS0+dS5hbnk7Cit9CisKKwpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9yZWdpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZ2lvbi5oCShub25leGlz
dGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmVnaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQ
SVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8qCisg
KiBSZWdpb24gbWVtb3J5IG1hbmFnZW1lbnQgQVBJIHNwZWNpZmljYWxseSBmb3IgY29tcGxleCBv
YmplY3RzIHRoYXQgY29uc2lzdCBvZiBsb3RzIG9mCisgKiBzbWFsbCBjaHVua3Mgb2YgbWVtb3J5
LiBUaGlzIGNvZGUgd2lsbCBjb21waWxlIGFzIGJvdGggQyBhbmQgQysrLgorICovCisKKyNpZm5k
ZWYgRlBfVFNGX1JFR0lPTl9ICisjZGVmaW5lIEZQX1RTRl9SRUdJT05fSAorCisjaW5jbHVkZSAi
dHNmX2NvbmZpZy5oIgorI2luY2x1ZGUgInRzZl90eXBlcy5oIgorCisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKy8qIHByaXZhdGUgc3R1ZmYgKi8KKyNkZWZpbmUg
VFNGX0FMSUdOKHNpemUpIFwKKyAgICAoKHNpemUgKyBUU0ZfTkFUSVZFX0FMSUdOTUVOVCAtIDEp
ICYgKH4oVFNGX05BVElWRV9BTElHTk1FTlQgLSAxKSkpCisKKy8qIHRoZSBmb2xsb3dpbmcgaW52
YXJpYW50IG11c3QgaG9sZDogVFNGX1JFR0lPTl9TSVpFX0JJVFMgPCAxNiAqLworI2RlZmluZSBU
U0ZfUkVHSU9OX1NJWkVfQklUUyAxMAorI2RlZmluZSBUU0ZfUkVHSU9OX1NJWkVfVU5JVCAoMSA8
PCBUU0ZfUkVHSU9OX1NJWkVfQklUUykKKworLyogb25seSBwYXNzIGFuIGFsaWduZWQgc2l6ZSAq
LworI2RlZmluZSBUU0ZfU0laRV9GT1JfUkVHSU9OKHNpemVfbmVlZGVkKSBcCisgICAgKChzaXpl
X25lZWRlZCArIFRTRl9SRUdJT05fU0laRV9VTklUIC0gMSkgJiB+KFRTRl9SRUdJT05fU0laRV9V
TklUIC0gMSkpCisjZGVmaW5lIFRTRl9JTklUSUFMX1NJWkVfRk9SX1JFR0lPTihzaXplX25lZWRl
ZCkgXAorICAgIFRTRl9TSVpFX0ZPUl9SRUdJT04oc2l6ZV9uZWVkZWQpCisKK3N0cnVjdCB0c2Zf
cmVnaW9uOworc3RydWN0IHRzZl9yZWdpb25fY2JhY2tfbm9kZTsKK3R5cGVkZWYgc3RydWN0IHRz
Zl9yZWdpb24gdHNmX3JlZ2lvbl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX3JlZ2lvbl9jYmFja19u
b2RlIHRzZl9yZWdpb25fY2JhY2tfbm9kZV90OworCit0eXBlZGVmIHZvaWQgKCp0c2ZfcmVnaW9u
X2NiYWNrX3QpKHZvaWQgKmFyZyk7CisKK3N0cnVjdCB0c2ZfcmVnaW9uX2NiYWNrX25vZGUgewor
ICAgIHRzZl9yZWdpb25fY2JhY2tfdCBjYmFjazsKKyAgICB2b2lkICphcmc7CisgICAgdHNmX3Jl
Z2lvbl9jYmFja19ub2RlX3QgKm5leHQ7Cit9OworCitzdHJ1Y3QgdHNmX3JlZ2lvbiB7CisgICAg
dHNmX3JlZ2lvbl90ICpuZXh0OworICAgIHVpbnQ4X3QgKmFsbG9jOworICAgIHNpemVfdCBzaXpl
OworCisgICAgdHNmX3JlZ2lvbl9jYmFja19ub2RlX3QgKmNiYWNrX2hlYWQ7CisKKyAgICAvKiB3
YW5uYSBtYWtlIHRoaXMgc3RydWN0dXJlIG5hdGl2ZSBhbGlnbmVkLiAqLworI2lmICgoKE5BVElW
RV9BTElHTk1FTlQgLSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIChTSVpFT0ZfVk9J
RF9QICogMyArIFNJWkVPRl9TSVpFX1QpKSAmICAgXAorICAgICAgKE5BVElWRV9BTElHTk1FTlQg
LSAxKSkgIT0gMCkKKyAgICBjaGFyIHBhZGRpbmdbKFRTRl9OQVRJVkVfQUxJR05NRU5UIC0KKyAg
ICAgICAgICAgICAgICAgIChUU0ZfU0laRU9GX1ZPSURfUCAqIDMgKyBUU0ZfU0laRU9GX1NJWkVf
VCkpCisgICAgICAgICAgICAgICAgICYgKFRTRl9OQVRJVkVfQUxJR05NRU5UIC0gMSldOworI2Vu
ZGlmCit9OworCitzdGF0aWMgVFNGX2lubGluZSB2b2lkICp0c2ZfcmVnaW9uX2NyZWF0ZShzaXpl
X3Qgc2l6ZSkgeworICAgIHNpemVfdCByZWdpb25fc2l6ZTsKKyAgICB0c2ZfcmVnaW9uX3QgKnJl
Z2lvbjsKKyAgICAKKyAgICBzaXplID0gVFNGX0FMSUdOKHNpemUpOworICAgIHJlZ2lvbl9zaXpl
ID0gVFNGX0lOSVRJQUxfU0laRV9GT1JfUkVHSU9OKHNpemUpOworICAgIAorICAgIC8qIHN0YXJ0
IGEgbmV3IHJlZ2lvbiBhbmQgYWxsb2NhdGUgdGhlIHJvb3Qgb2JqZWN0ICovCisgICAgCisgICAg
cmVnaW9uID0gKHRzZl9yZWdpb25fdCopCisgICAgICAgIG1hbGxvYyhzaXplb2YodHNmX3JlZ2lv
bl90KSArIHJlZ2lvbl9zaXplKTsKKyAgICBpZiAocmVnaW9uID09IE5VTEwpIHsKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlZ2lvbi0+bmV4dCA9IHJlZ2lvbjsKKyAg
ICByZWdpb24tPmFsbG9jID0gKCh1aW50OF90KikocmVnaW9uICsgMSkpICsgc2l6ZTsKKyAgICBy
ZWdpb24tPnNpemUgPSByZWdpb25fc2l6ZTsKKyAgICByZWdpb24tPmNiYWNrX2hlYWQgPSBOVUxM
OworICAgIAorICAgIHJldHVybiByZWdpb24gKyAxOworfQorCitzdGF0aWMgVFNGX2lubGluZSB2
b2lkICp0c2ZfcmVnaW9uX2FsbG9jKHZvaWQgKnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7CisgICAgdHNmX3JlZ2lvbl90ICpyZWdp
b247CisgICAgdHNmX3JlZ2lvbl90ICpuZXh0OworICAgIHZvaWQgKnJlc3VsdDsKKworICAgIHNp
emUgPSBUU0ZfQUxJR04oc2l6ZSk7CisgICAgCisgICAgcmVnaW9uID0gKCh0c2ZfcmVnaW9uX3Qq
KXJvb3QpIC0gMTsKKyAgICBuZXh0ID0gcmVnaW9uLT5uZXh0OworICAgIAorICAgIC8qIGFsbG9j
YXRlIG5ldyBvYmplY3QgKi8KKyAgICAKKyAgICAvKiB3ZSBkbyB0aGUgY29tcGFyaXNvbiB0aGlz
IHdheSB0byBhdm9pZCBvdmVyZmxvdyEgKi8KKyAgICBpZiAobmV4dC0+YWxsb2MgLSAoKHVpbnQ4
X3QqKW5leHQpIC0gc2l6ZW9mKHRzZl9yZWdpb25fdCkgKyBzaXplID4gbmV4dC0+c2l6ZSkgewor
ICAgICAgICAvKiBhbGxvYyBuZXcgY2h1bmsgKi8KKyAgICAgICAgCisgICAgICAgIHRzZl9yZWdp
b25fdCAqbmV3X2NodW5rID0gKHRzZl9yZWdpb25fdCopCisgICAgICAgICAgICBtYWxsb2Moc2l6
ZW9mKHRzZl9yZWdpb25fdCkgKyBUU0ZfU0laRV9GT1JfUkVHSU9OKHNpemUpKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChuZXdfY2h1bmsgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5ld19jaHVuay0+bmV4dCA9IG5leHQ7
CisgICAgICAgIG5ld19jaHVuay0+YWxsb2MgPSAodWludDhfdCopKG5ld19jaHVuayArIDEpOwor
ICAgICAgICBuZXdfY2h1bmstPnNpemUgPSBUU0ZfU0laRV9GT1JfUkVHSU9OKHNpemUpOworICAg
ICAgICBuZXh0PXJlZ2lvbi0+bmV4dCA9IG5ld19jaHVuazsKKyAgICB9CisgICAgCisgICAgcmVz
dWx0ID0gbmV4dC0+YWxsb2M7CisgICAgbmV4dC0+YWxsb2MgKz0gc2l6ZTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgVFNGX2lubGluZSBjaGFyICp0c2ZfcmVnaW9uX3N0cmR1cCh2
b2lkICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqc3RyKSB7CisgICAgc2l6ZV90IHNpemU7CisgICAgY2hhciAqcmVzdWx0OworICAg
IAorICAgIHNpemUgPSBzdHJsZW4oc3RyKSArIDE7CisgICAgcmVzdWx0ID0gKGNoYXIqKXRzZl9y
ZWdpb25fYWxsb2Mocm9vdCwgc2l6ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBtZW1jcHkocmVzdWx0LCBzdHIsIHNp
emUpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBUU0ZfaW5saW5lIHZv
aWQgKnRzZl9yZWdpb25fcmVhbGxvYyh2b2lkICpyb290LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkgeworICAgIHRzZl9yZWdpb25fdCAqcmVn
aW9uOworICAgIHRzZl9yZWdpb25fdCAqbmV4dDsKKworICAgIHNpemUgPSBUU0ZfQUxJR04oc2l6
ZSk7CisgICAgCisgICAgcmVnaW9uID0gKCh0c2ZfcmVnaW9uX3QqKXJvb3QpIC0gMTsKKyAgICBu
ZXh0ID0gcmVnaW9uLT5uZXh0OworICAgIAorICAgIC8qIHJlc2l6ZSBhbiBleGlzdGluZyBvYmpl
Y3QgKi8KKyAgICAKKyAgICAvKiB3ZSBkbyB0aGUgY29tcGFyaXNvbiB0aGlzIHdheSB0byBhdm9p
ZCBvdmVyZmxvdyEgKi8KKyAgICBpZiAoKCh1aW50OF90KilvYmopIC0gKCh1aW50OF90KiluZXh0
KSAtIHNpemVvZih0c2ZfcmVnaW9uX3QpICsgc2l6ZSA+CisgICAgICAgIG5leHQtPnNpemUpIHsK
KyAgICAgICAgCisgICAgICAgIC8qIGNoZWNrIGlmIHRoaXMgaXMgdGhlIG9ubHkgb2JqZWN0IGlu
IHRoZSBjaHVuay4gKi8KKyAgICAgICAgaWYgKG5leHQgKyAxID09IG9iaikgeworICAgICAgICAg
ICAgLyogaWYgc28sIHNpbXBseSByZWFsbG9jIHRoZSBjaHVuay4gIHdlIGRvIHRoaXMgdG8gcHJl
dmVudAorICAgICAgICAgICAgICogTyhuXjIpIG1lbW9yeSB1c2FnZSBpbiB0aGUgY2FzZSBvZiBy
ZXBlYXRlZCByZWFsbG9jcy4gKi8KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV4dCA9ICh0
c2ZfcmVnaW9uX3QqKQorICAgICAgICAgICAgICAgIHJlYWxsb2MobmV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVvZih0c2ZfcmVnaW9uX3QpICsgVFNGX1NJWkVfRk9SX1JFR0lPTihz
aXplKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChuZXh0ID09IE5VTEwpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8qIGFsbG9jIG5ldyBjaHVuayAqLworICAgICAgICAgICAgCisgICAg
ICAgICAgICB0c2ZfcmVnaW9uX3QgKm5ld19jaHVuayA9ICh0c2ZfcmVnaW9uX3QqKQorICAgICAg
ICAgICAgICAgIG1hbGxvYyhzaXplb2YodHNmX3JlZ2lvbl90KSArIFRTRl9TSVpFX0ZPUl9SRUdJ
T04oc2l6ZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobmV3X2NodW5rID09IE5V
TEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgbmV3X2NodW5rLT5uZXh0ID0gbmV4dDsKKyAgICAgICAgICAg
IG5ld19jaHVuay0+c2l6ZSA9IFRTRl9TSVpFX0ZPUl9SRUdJT04oc2l6ZSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIG1lbWNweShuZXdfY2h1bmsgKyAxLCBvYmosIG5leHQtPmFsbG9jIC0g
KCh1aW50OF90KilvYmopKTsKKyAgICAgICAgCisgICAgICAgICAgICBuZXh0ID0gbmV3X2NodW5r
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZWdpb24tPm5leHQgPSBuZXh0OworICAg
ICAgICBvYmogPSBuZXh0ICsgMTsKKyAgICB9CisgICAgCisgICAgbmV4dC0+YWxsb2MgPSAoKHVp
bnQ4X3QqKW9iaikgKyBzaXplOworICAgIHJldHVybiBvYmo7Cit9CisKKy8qIGFsbG9jYXRlIGVp
dGhlciBpbiBhIHJlZ2lvbiBvciB1c2luZyBzdHJhaWdodCBtYWxsb2MuICB3aWxsIHVzZQorICog
bWFsbG9jIGlmIHJlZ2lvbiBpcyBOVUxMLCBvdGhlcndpc2Ugd2lsbCBjYWxsIHRzZl9yZWdpb25f
YWxsb2MuKCkKKyAqIHRoaXMgY2Fubm90IGNyZWF0ZSBhIG5ldyByZWdpb24uICB0aGlzIGlzIHVz
ZWZ1bCBhcyBhIGNvbnZlbmllbmNlCisgKiBmdW5jdGlvbiBmb3IgaW1wbGVtZW50aW5nIGRhdGEg
c3RydWN0dXJlcyB0aGF0IG5lZWQgdG8gYmUgdXNlZCBib3RoCisgKiBpbiBhIHJlZ2lvbiBhbmQg
d2l0aCBtYWxsb2MgJiBmcmVlLiAqLworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCAqdHNmX2NvbmRf
YWxsb2Modm9pZCAqcm9vdCwgc2l6ZV90IHNpemUpIHsKKyAgICBpZiAocm9vdCA9PSBOVUxMKSB7
CisgICAgICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7CisgICAgfQorICAgIHJldHVybiB0c2ZfcmVn
aW9uX2FsbG9jKHJvb3QsIHNpemUpOworfQorCisvKiByZWFsbG9jYXRlIGVpdGhlciBpbiBhIHJl
Z2lvbiBvciB1c2luZyBzdHJhaWdodCBtYWxsb2MuICovCitzdGF0aWMgVFNGX2lubGluZSB2b2lk
ICp0c2ZfY29uZF9yZWFsbG9jKHZvaWQgKnJvb3QsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpIHsK
KyAgICBpZiAocm9vdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiByZWFsbG9jKHB0ciwgc2l6
ZSk7CisgICAgfQorICAgIHJldHVybiB0c2ZfcmVnaW9uX3JlYWxsb2Mocm9vdCwgcHRyLCBzaXpl
KTsKK30KKworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCB0c2ZfcmVnaW9uX2FkZF9jYmFj
ayh2b2lkICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfcmVnaW9uX2NiYWNrX3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIHRzZl9yZWdpb25f
dCAqcmVnaW9uID0gKCh0c2ZfcmVnaW9uX3QqKXJvb3QpIC0gMTsKKworICAgIHRzZl9yZWdpb25f
Y2JhY2tfbm9kZV90ICpub2RlID0gKHRzZl9yZWdpb25fY2JhY2tfbm9kZV90KikKKyAgICAgICAg
dHNmX3JlZ2lvbl9hbGxvYyhyb290LCBzaXplb2YodHNmX3JlZ2lvbl9jYmFja19ub2RlX3QpKTsK
KyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
fQorICAgIAorICAgIG5vZGUtPm5leHQgPSByZWdpb24tPmNiYWNrX2hlYWQ7CisgICAgbm9kZS0+
Y2JhY2sgPSBjYmFjazsKKyAgICBub2RlLT5hcmcgPSBhcmc7CisgICAgCisgICAgcmVnaW9uLT5j
YmFja19oZWFkID0gbm9kZTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKKy8qIGRl
bGV0ZSBhIHJlZ2lvbiByb290ZWQgYXQgdGhlIGdpdmVuIG9iamVjdC4gKi8KK3N0YXRpYyBUU0Zf
aW5saW5lIHZvaWQgdHNmX3JlZ2lvbl9mcmVlKHZvaWQgKnJvb3QpIHsKKyAgICB0c2ZfcmVnaW9u
X3QgKmN1ciA9ICgodHNmX3JlZ2lvbl90Kilyb290KSAtIDE7CisgICAgdHNmX3JlZ2lvbl9jYmFj
a19ub2RlX3QgKmNiYWNrX25vZGUgPSBjdXItPmNiYWNrX2hlYWQ7CisgICAgd2hpbGUgKGNiYWNr
X25vZGUgIT0gTlVMTCkgeworICAgICAgICBjYmFja19ub2RlLT5jYmFjayhjYmFja19ub2RlLT5h
cmcpOworICAgICAgICBjYmFja19ub2RlID0gY2JhY2tfbm9kZS0+bmV4dDsKKyAgICB9CisgICAg
ZG8geworICAgICAgICB0c2ZfcmVnaW9uX3QgKnRvX2ZyZWUgPSBjdXI7CisgICAgICAgIGN1ciA9
IGN1ci0+bmV4dDsKKyAgICAgICAgZnJlZSh0b19mcmVlKTsKKyAgICB9IHdoaWxlIChjdXIrMSAh
PSByb290KTsKK30KKworLyogZ2V0IHRoZSB0b3RhbCBhbGxvY2F0YWJsZSBzcGFjZSBvY2N1cGll
ZCBieSB0aGlzIHJlZ2lvbiAqLworc3RhdGljIFRTRl9pbmxpbmUgc2l6ZV90IHRzZl9yZWdpb25f
c2l6ZSh2b2lkICpyb290KSB7CisgICAgdHNmX3JlZ2lvbl90ICpjdXIgPSAoKHRzZl9yZWdpb25f
dCopcm9vdCkgLSAxOworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGRvIHsKKyAgICAgICAg
cmVzdWx0ICs9IGN1ci0+c2l6ZTsKKyAgICAgICAgY3VyID0gY3VyLT5uZXh0OworICAgIH0gd2hp
bGUgKGN1ciArIDEgIT0gcm9vdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisK
KwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxf
aW5fbWFuLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9zZXJpYWxfaW5fbWFuLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfaW5fbWFuLmMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwu
aCIKKyNpbmNsdWRlICJ0c2Zfc2VyaWFsX3Byb3RvY29sLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1h
dC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRl
IDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwordHNmX3NlcmlhbF9pbl9tYW5f
dCAqdHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKHRzZl9yZWFkZXJfdCByZWFkZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGlt
aXRzKSB7CisgICAgdHNmX3NlcmlhbF9pbl9tYW5fdCAqcmV0PW1hbGxvYyhzaXplb2YodHNmX3Nl
cmlhbF9pbl9tYW5fdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9l
cnJubygiQ291bGQgbm90IG1hbGxvYyB0c2Zfc2VyaWFsX2luX21hbl90Iik7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGVzPXRzZl90eXBlX2luX21hcF9j
cmVhdGUoKTsKKyAgICBpZiAocmV0LT50eXBlcz09TlVMTCkgeworICAgICAgICBmcmVlKHJldCk7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAobGltaXRzPT1OVUxM
KSB7CisgICAgICAgIHJldC0+bGltaXRzPU5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0
LT5saW1pdHM9dHNmX2xpbWl0c19jbG9uZShsaW1pdHMpOworICAgICAgICBpZiAocmV0LT5saW1p
dHM9PU5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95KHJldC0+dHlw
ZXMpOworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0LT5zdGF0ZT0wOworICAgIAorICAgIHJldC0+
dHlwZXNfYnl0ZV9zaXplPTA7CisgICAgCisgICAgcmV0LT5jYmFja3M9TlVMTDsKKyAgICByZXQt
Pm51bV9jYmFja3M9MDsKKyAgICAKKyAgICByZXQtPnJlYWRlcj1yZWFkZXI7CisgICAgcmV0LT5h
cmc9YXJnOworCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCB0c2Zfc2VyaWFsX2luX21hbl9k
ZXN0cm95KHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbikgeworICAgIHRzZl90eXBlX2luX21h
cF9kZXN0cm95KGluX21hbi0+dHlwZXMpOworICAgIGlmIChpbl9tYW4tPmNiYWNrcyE9TlVMTCkg
eworICAgICAgICBmcmVlKGluX21hbi0+Y2JhY2tzKTsKKyAgICB9CisgICAgCisgICAgdHNmX2xp
bWl0c19kZXN0cm95KGluX21hbi0+bGltaXRzKTsKKyAgICAKKyAgICBmcmVlKGluX21hbik7Cit9
CisKK3RzZl9ib29sX3QgdHNmX3NlcmlhbF9pbl9tYW5fcmVhZF9yZXNldF90eXBlcyh0c2Zfc2Vy
aWFsX2luX21hbl90ICppbl9tYW4pIHsKKyAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqbmV3X3R5cGVz
OworICAgIGNoYXIgYnVmW1RTRl9TUF9NQUdJQ19MRU5dOworICAgIHRzZl9ib29sX3QgcmVzdWx0
PXRzZl90cnVlOworICAgIAorICAgIG5ld190eXBlcz10c2ZfdHlwZV9pbl9tYXBfY3JlYXRlKCk7
CisgICAgaWYgKG5ld190eXBlcz09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoIWluX21hbi0+cmVhZGVyKGluX21hbi0+YXJnLGJ1ZixUU0Zf
U1BfTUFHSUNfTEVOKSkgeworICAgICAgICByZXN1bHQ9dHNmX2ZhbHNlOworICAgICAgICBnb3Rv
IGRvbmU7CisgICAgfQorICAgIAorICAgIGlmIChtZW1jbXAoYnVmLFRTRl9TUF9NQUdJQ19DT0RF
LFRTRl9TUF9NQUdJQ19MRU4pKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0Vf
RVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIlRoZSBpbnB1dCBzdHJlYW0gZGlkIG5vdCBj
b250YWluIGEgdmFsaWQgcmVzZXQgIgorICAgICAgICAgICAgICAgICAgICAgICJ0eXBlcyBjb21t
YW5kIik7CisgICAgICAgIHJlc3VsdD10c2ZfZmFsc2U7CisgICAgICAgIGdvdG8gZG9uZTsKKyAg
ICB9CisgICAgCisgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3koaW5fbWFuLT50eXBlcyk7CisK
KyAgICBpbl9tYW4tPnR5cGVzPW5ld190eXBlczsKKyAgICBpbl9tYW4tPnN0YXRlPTA7CisgICAg
aW5fbWFuLT50eXBlc19ieXRlX3NpemU9MDsKKworZG9uZToKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfaW5fbWFuX3JlYWRfcmVzZXRfdHlwZXNfZnJvbV9m
ZChpbnQgZmQpIHsKKyAgICB0c2Zfc2VyaWFsX2luX21hbl90ICppbl9tYW47CisgICAgdHNmX2Jv
b2xfdCByZXM7CisgICAgCisgICAgaW5fbWFuPXRzZl9zZXJpYWxfaW5fbWFuX2NyZWF0ZSh0c2Zf
ZmRfcmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKGluX21hbj09
TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXM9
dHNmX3NlcmlhbF9pbl9tYW5fcmVhZF9yZXNldF90eXBlcyhpbl9tYW4pOworICAgIAorICAgIHRz
Zl9zZXJpYWxfaW5fbWFuX2Rlc3Ryb3koaW5fbWFuKTsKKyAgICAKKyAgICByZXR1cm4gcmVzOwor
fQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfaW5fbWFuX3JlYWRfcmVzZXRfdHlwZXNfZnJvbV9m
aWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lKSB7CisgICAgaW50IGZkOworICAgIHRzZl9ib29sX3Qg
cmVzOworICAgIAorICAgIGZkPW9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZKTsKKyAgICBpZiAoZmQ8
MCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJUcnlpbmcgdG8gb3BlbiAlcyB0byBjaGVjayBy
ZXNldCB0eXBlcyBjb21tYW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJlcz10c2Zfc2VyaWFs
X2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzX2Zyb21fZmQoZmQpOworICAgIAorICAgIGNsb3NlKGZk
KTsKKyAgICAKKyAgICByZXR1cm4gcmVzOworfQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfaW5f
bWFuX3JlZ2lzdGVyX3R5cGVfY2JhY2sodHNmX3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2Ni
YWNrX3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqYXJnKSB7CisgICAgaWYgKGluX21hbi0+Y2JhY2tzPT1OVUxMKSB7CisgICAg
ICAgIGluX21hbi0+Y2JhY2tzPW1hbGxvYyhzaXplb2YodHNmX3NlcmlhbF9pbl9tYW5fY2JhY2tf
dCkpOworICAgICAgICBpZiAoaW5fbWFuLT5jYmFja3M9PU5VTEwpIHsKKyAgICAgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX3NlcmlhbF9pbl9tYW5fY2JhY2tfdCIp
OworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIHRzZl9zZXJpYWxfaW5fbWFuX2NiYWNrX3QgKm5ld19hcnJheT0KKyAgICAgICAgICAgIHJl
YWxsb2MoaW5fbWFuLT5jYmFja3MsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZih0c2Zfc2Vy
aWFsX2luX21hbl9jYmFja190KSooaW5fbWFuLT5udW1fY2JhY2tzKzEpKTsKKyAgICAgICAgaWYg
KG5ld19hcnJheT09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90
IHJlYWxsb2MgYXJyYXkgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAidHNmX3Nlcmlh
bF9pbl9tYW5fY2JhY2tfdCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQor
ICAgICAgICBpbl9tYW4tPmNiYWNrcz1uZXdfYXJyYXk7CisgICAgfQorICAgIAorICAgIGluX21h
bi0+Y2JhY2tzW2luX21hbi0+bnVtX2NiYWNrc10uY2JhY2s9Y2JhY2s7CisgICAgaW5fbWFuLT5j
YmFja3NbaW5fbWFuLT5udW1fY2JhY2tzXS5hcmc9YXJnOworICAgIAorICAgIGluX21hbi0+bnVt
X2NiYWNrcysrOworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKKworZXJyb3I6CisgICAgcmV0
dXJuIHRzZl9mYWxzZTsKK30KKwordWludDMyX3QgdHNmX3NlcmlhbF9pbl9tYW5fdW5yZWdpc3Rl
cl90eXBlX2NiYWNrKHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9jYmFja190IGNiYWNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KmFyZykgeworICAgIHVpbnQzMl90IGkscmV0PTA7CisKKyAgICBmb3IgKGk9MDtpPGluX21hbi0+
bnVtX2NiYWNrczsrK2kpIHsKKyAgICAgICAgaWYgKGluX21hbi0+Y2JhY2tzW2ldLmNiYWNrPT1j
YmFjayAmJgorICAgICAgICAgICAgaW5fbWFuLT5jYmFja3NbaV0uYXJnPT1hcmcpIHsKKyAgICAg
ICAgICAgIG1lbWNweShpbl9tYW4tPmNiYWNrcystLWluX21hbi0+bnVtX2NiYWNrcywKKyAgICAg
ICAgICAgICAgICAgICBpbl9tYW4tPmNiYWNrcytpLS0sCisgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKHRzZl9zZXJpYWxfaW5fbWFuX2NiYWNrX3QpKTsKKyAgICAgICAgICAgIHJldCsrOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKwordHNmX2Jvb2xfdCB0c2Zfc2Vy
aWFsX2luX21hbl9yZWFkX2V4aXN0aW5nX2J1ZmZlcih0c2Zfc2VyaWFsX2luX21hbl90ICppbl9t
YW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl9idWZmZXJfdCAqcmVzdWx0KSB7CisgICAgdHNmX3R5cGVfdCAqdHlwZTsKKyAgICB0c2ZfYm9v
bF90IHJlczsKKyAgICB1aW50OF90IGNvbW1hbmQ7CisgICAgY2hhciBidWZbMjU2XTsKKyAgICB0
c2ZfdHlwZV9pbl9tYXBfdCAqbmV3X3R5cGVzOworICAgIHVpbnQzMl90IG47CisgICAgCisgICAg
Zm9yICg7OykgeworICAgICAgICBpZiAoIWluX21hbi0+cmVhZGVyKGluX21hbi0+YXJnLCAmY29t
bWFuZCwgc2l6ZW9mKGNvbW1hbmQpKSkgeworICAgICAgICAgICAgLyogaWYgdGhlIEVPRiBoYXBw
ZW5zIGhlcmUgYW5kIG9ubHkgaGVyZSwgdGhlbiB0aGUgRU9GCisgICAgICAgICAgICAgKiBjYW4g
YmUgc2FpZCB0byBoYXZlIGJlZW4gZXhwZWN0ZWQuICovCisgICAgICAgICAgICBpZiAodHNmX2dl
dF9lcnJvcl9jb2RlKCkgPT0gVFNGX0VfVU5FWFBFQ1RFRF9FT0YpIHsKKyAgICAgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0VPRiwgTlVMTCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN3
aXRjaCAoY29tbWFuZCkgeworICAgICAgICBjYXNlIFRTRl9TUF9DX1JFU0VUX1RZUEVTOgorICAg
ICAgICAgICAgLyogZmlyc3QgcmVhZCB0aGUgbWFnaWMgc3RyaW5nICovCisgICAgICAgICAgICBp
ZiAoIWluX21hbi0+cmVhZGVyKGluX21hbi0+YXJnLCBidWYsIFRTRl9TUF9NQUdJQ19TVUZGSVhf
TEVOKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobWVtY21wKGJ1ZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgVFNGX1NQX01BR0lDX1NVRkZJWCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgVFNGX1NQX01BR0lDX1NVRkZJWF9MRU4pKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJC
YWQgbWFnaWMgaGVhZGVyIGZvciBUU0ZfU1BfQ19SRVNFVF9UWVBFUyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiY29tbWFuZCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBuZXdf
dHlwZXMgPSB0c2ZfdHlwZV9pbl9tYXBfY3JlYXRlKCk7CisgICAgICAgICAgICBpZiAobmV3X3R5
cGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3koaW5fbWFuLT50eXBl
cyk7CisgICAgICAgICAgICBpbl9tYW4tPnR5cGVzID0gbmV3X3R5cGVzOworICAgICAgICAgICAg
aW5fbWFuLT5zdGF0ZSA9IDA7CisgICAgICAgICAgICBpbl9tYW4tPnR5cGVzX2J5dGVfc2l6ZSA9
IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUU0ZfU1BfQ19ORVdfVFlQRToK
KyAgICAgICAgICAgIGlmICh0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhpbl9tYW4tPnR5
cGVzKQorICAgICAgICAgICAgICAgID09IHRzZl9saW1pdHNfbWF4X3R5cGVzKGluX21hbi0+bGlt
aXRzKSkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgdHlwZXMgaW4gb25lIHN0
cmVhbSIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0eXBlID0gdHNmX3R5cGVfcmVhZChpbl9t
YW4tPnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX21hbi0+YXJn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fbWFuLT5saW1pdHMpOworICAg
ICAgICAgICAgaWYgKHR5cGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
dHNmX3R5cGVfaW5fbWFwX2dldF9udW1fdHlwZXMoaW5fbWFuLT50eXBlcykKKyAgICAgICAgICAg
ICAgICA+IGluX21hbi0+c3RhdGUpIHsKKyAgICAgICAgICAgICAgICAvKiB0aGlzIHNob3VsZCBi
ZSBhIHR5cGUgdGhhdCB3ZSd2ZSBzZWVuIGFscmVhZHksIHNvCisgICAgICAgICAgICAgICAgICog
anVzdCB2ZXJpZnkgdGhhdCBpdCBpcyB0aGUgcmlnaHQgb25lLiAqLworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXRzZl90eXBlX2NvbXBhcmUoCisgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoaW5fbWFuLT50eXBlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4tPnN0
YXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfVU5FWFBFQ1RFRF9UWVBFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJXaGlsZSBpbiBhIHNlZWstYmFjayBzdGF0ZSB3aXRoICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdGUgPSAiIGZ1aTMyICIgYW5kIG51
bV90eXBlcyA9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWkzMiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4tPnN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVzKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4tPnR5cGVzKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBhIG5ldyB0eXBlLCBzbyBhcHBlbmQgaXQgdG8g
dGhlIG1hcC4gKi8KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlu
X21hbi0+dHlwZXNfYnl0ZV9zaXplICsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfZ2V0
X2J5dGVfc2l6ZSh0eXBlKQorICAgICAgICAgICAgICAgICAgICA+IHRzZl9saW1pdHNfbWF4X3Rv
dGFsX3R5cGVfc2l6ZShpbl9tYW4tPmxpbWl0cykpIHsKKyAgICAgICAgICAgICAgICAgICAgdHNm
X3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVG90YWwgc2l6ZSBvZiB0eXBlcyBpbiBzdHJlYW0gdG9vIGJpZyIpOworICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHR5cGUpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaW5fbWFuLT50eXBlc19ieXRlX3NpemUgKz0gdHNmX3R5cGVf
Z2V0X2J5dGVfc2l6ZSh0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgZm9yIChuID0gaW5fbWFuLT5udW1fY2JhY2tzOyBuIC0tPiAwOykgeworICAgICAgICAgICAg
ICAgICAgICBpbl9tYW4tPmNiYWNrc1tuXS5jYmFjayhpbl9tYW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluX21hbi0+Y2JhY2tzW25dLmFyZyk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXMgPSB0c2Zf
dHlwZV9pbl9tYXBfYXBwZW5kKGluX21hbi0+dHlwZXMsIHR5cGUpOworICAgICAgICAgICAgICAg
IGlmICghcmVzKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdHNmX3R5cGVf
ZGVzdHJveSh0eXBlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGluX21hbi0+c3Rh
dGUrKzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFNG
X1NQX0NfREFUQToKKyAgICAgICAgICAgIHJldHVybiB0c2ZfYnVmZmVyX3JlYWRfc2ltcGxlKHJl
c3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX21hbi0+
dHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4t
PnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX21h
bi0+YXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fbWFu
LT5saW1pdHMpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKGNvbW1hbmQgJiBU
U0ZfU1BfQ19DRl9EQVRBX0JJVCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfYnVmZmVy
X3JlYWRfc21hbGxfd2l0aF90eXBlX2NvZGUocmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCAmIH5UU0ZfU1Bf
Q19DRl9EQVRBX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluX21hbi0+dHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4tPnJlYWRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluX21hbi0+YXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5fbWFuLT5saW1pdHMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCBjb21tYW5kIHJlYWQgZnJvbSBzZXJp
YWwgc3RyZWFtOiAldSIsICh1bnNpZ25lZCljb21tYW5kKTsKKyAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdHNmX2Fib3J0KCJTaG91bGQg
bmV2ZXIgZ2V0IGhlcmUiKTsKKyAgICByZXR1cm4gdHNmX2ZhbHNlOworfQorCit0c2ZfYnVmZmVy
X3QgKnRzZl9zZXJpYWxfaW5fbWFuX3JlYWQodHNmX3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFuKSB7
CisgICAgdHNmX2J1ZmZlcl90ICpyZXN1bHQ7CisgICAgCisgICAgcmVzdWx0ID0gdHNmX2J1ZmZl
cl9jcmVhdGVfYmFyZSgpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICAKKyAgICBpZiAoIXRzZl9zZXJpYWxfaW5fbWFuX3JlYWRfZXhpc3Rpbmdf
YnVmZmVyKGluX21hbiwgcmVzdWx0KSkgeworICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3lfYmFy
ZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordHNmX3NlcmlhbF9pbl9tYW5fc3RhdGVfdCB0c2Zfc2VyaWFsX2luX21h
bl9nZXRfc3RhdGUodHNmX3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFuKSB7CisgICAgcmV0dXJuIGlu
X21hbi0+c3RhdGU7Cit9CisKK3ZvaWQgdHNmX3NlcmlhbF9pbl9tYW5fc2V0X3N0YXRlKHRzZl9z
ZXJpYWxfaW5fbWFuX3QgKmluX21hbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl9zZXJpYWxfaW5fbWFuX3N0YXRlX3Qgc3RhdGUpIHsKKyAgICBpbl9tYW4tPnN0YXRlID0g
c3RhdGU7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2Zfc2VyaWFsX291dF9tYW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3NlcmlhbF9vdXRfbWFuLmMJKG5vbmV4aXN0ZW50KQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfb3V0X21hbi5jCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2lu
dGVybmFsLmgiCisjaW5jbHVkZSAidHNmX3NlcmlhbF9wcm90b2NvbC5oIgorCisjaWZkZWYgSEFW
RV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKy8qIEZJWE1FOiBhZGQg
YW4gcmVjb3ZlcnkgaGVscGVyIG1vZGUsIHdoZXJlIGFmdGVyIHNvbWUgbnVtYmVyIG9mIGJ5dGVz
IFgKKyAqIHN1Y2ggdGhhdCBYL1QgPiBDLCB3aGVyZSBUIGlzIHRoZSBieXRlIHNpemUgb2Ygb3Vy
IGN1cnJlbnQgdHlwZSBtYXAsCisgKiB3ZSByZXNldCB0eXBlcy4gIEFsc28gYWRkIGFuIGV4dGVu
ZGVkIHJlc2V0IHR5cGVzIGNvbW1hbmQsIHdoaWNoCisgKiBpbmNsdWRlcyBhIGxvbmdlciBtYWdp
YyBzdHJpbmcuICovCisKK3N0YXRpYyB0c2ZfYm9vbF90IHdyaXRlX2NvbW1hbmQodHNmX3dyaXRl
cl90IHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGNvbW1hbmQpIHsKKyAgICBy
ZXR1cm4gd3JpdGVyKGFyZywgJmNvbW1hbmQsIHNpemVvZihjb21tYW5kKSk7Cit9CisKK3N0YXRp
YyB0c2ZfYm9vbF90IHdyaXRlX3Jlc2V0KHRzZl93cml0ZXJfdCB3cml0ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAgICByZXR1cm4gd3JpdGVyKGFyZywg
VFNGX1NQX01BR0lDX0NPREUsIFRTRl9TUF9NQUdJQ19MRU4pOworfQorCit0c2Zfc2VyaWFsX291
dF9tYW5fdCAqdHNmX3NlcmlhbF9vdXRfbWFuX2NyZWF0ZSh0c2Zfd3JpdGVyX3Qgd3JpdGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
KSB7CisgICAgdHNmX3NlcmlhbF9vdXRfbWFuX3QgKnJldD1tYWxsb2Moc2l6ZW9mKHRzZl9zZXJp
YWxfb3V0X21hbl90KSk7CisgICAgaWYgKHJldD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vy
cm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9zZXJpYWxfb3V0X21hbl90IHN0cnVjdHVyZS4iKTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+dHlwZXM9dHNmX3R5
cGVfb3V0X21hcF9jcmVhdGUoKTsKKyAgICBpZiAocmV0LT50eXBlcz09TlVMTCkgeworICAgICAg
ICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQt
PndyaXRlcj13cml0ZXI7CisgICAgcmV0LT5hcmc9YXJnOworICAgIAorICAgIGlmICghd3JpdGVf
cmVzZXQod3JpdGVyLGFyZykpIHsKKyAgICAgICAgdHNmX3R5cGVfb3V0X21hcF9kZXN0cm95KHJl
dC0+dHlwZXMpOworICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIHRzZl9zZXJpYWxfb3V0X21hbl9k
ZXN0cm95KHRzZl9zZXJpYWxfb3V0X21hbl90ICpvdXRfbWFuKSB7CisgICAgdHNmX3R5cGVfb3V0
X21hcF9kZXN0cm95KG91dF9tYW4tPnR5cGVzKTsKKyAgICBmcmVlKG91dF9tYW4pOworfQorCit0
c2ZfYm9vbF90IHRzZl9zZXJpYWxfb3V0X21hbl9yZXNldF90eXBlcyh0c2Zfc2VyaWFsX291dF9t
YW5fdCAqb3V0X21hbikgeworICAgIHRzZl90eXBlX291dF9tYXBfdCAqbmV3X3R5cGVzOworICAg
IAorICAgIG5ld190eXBlcz10c2ZfdHlwZV9vdXRfbWFwX2NyZWF0ZSgpOworICAgIGlmIChuZXdf
dHlwZXM9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisg
ICAgaWYgKCF3cml0ZV9yZXNldChvdXRfbWFuLT53cml0ZXIsCisgICAgICAgICAgICAgICAgICAg
ICBvdXRfbWFuLT5hcmcpKSB7CisgICAgICAgIHRzZl90eXBlX291dF9tYXBfZGVzdHJveShuZXdf
dHlwZXMpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICB0c2Zf
dHlwZV9vdXRfbWFwX2Rlc3Ryb3kob3V0X21hbi0+dHlwZXMpOworICAgIG91dF9tYW4tPnR5cGVz
PW5ld190eXBlczsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3Qg
dHNmX3NlcmlhbF9vdXRfbWFuX3dyaXRlX3R5cGUodHNmX3dyaXRlcl90IHdyaXRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAg
aWYgKCF3cml0ZV9jb21tYW5kKHdyaXRlcixhcmcsVFNGX1NQX0NfTkVXX1RZUEUpKSB7CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHlwZV93cml0ZSh0
eXBlLHdyaXRlcixhcmcpOworfQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfb3V0X21hbl93cml0
ZSh0c2Zfc2VyaWFsX291dF9tYW5fdCAqb3V0X21hbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdWludDMyX3QgaTsKKyAgICB0
c2ZfYm9vbF90IGNyZWF0ZWQ7CisgICAgdWludDMyX3QgdHlwZV9jb2RlOworICAgIAorICAgIGlm
ICghdHNmX3R5cGVfb3V0X21hcF9nZXRfdHlwZV9jb2RlKG91dF9tYW4tPnR5cGVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi0+dHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZjcmVhdGVkKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAg
IH0KKyAgICAKKyAgICBpZiAoY3JlYXRlZCkgeworICAgICAgICBpZiAoIXRzZl9zZXJpYWxfb3V0
X21hbl93cml0ZV90eXBlKG91dF9tYW4tPndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRfbWFuLT5hcmcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnVmLT50eXBlKSkgeworICAgICAgICAgICAgZ290byBlcnJv
cjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX3R5cGVf
aW5fbWFwX2dldF9udW1fdHlwZXMoYnVmLT50eXBlcyk7ICsraSkgeworICAgICAgICBpZiAoIXRz
Zl90eXBlX291dF9tYXBfZ2V0X3R5cGVfY29kZSgKKwkJb3V0X21hbi0+dHlwZXMsCisJCXRzZl90
eXBlX2luX21hcF9nZXRfdHlwZShidWYtPnR5cGVzLCBpKSwKKwkJTlVMTCwKKwkJJmNyZWF0ZWQp
KSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoY3JlYXRlZCkgeworICAgICAgICAgICAgaWYgKCF0c2Zfc2VyaWFsX291dF9tYW5fd3Jp
dGVfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIG91dF9tYW4tPndyaXRlciwKKyAgICAgICAg
ICAgICAgICAgICAgIG91dF9tYW4tPmFyZywKKyAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBl
X2luX21hcF9nZXRfdHlwZShidWYtPnR5cGVzLCBpKSkpIHsKKyAgICAgICAgICAgICAgICBnb3Rv
IGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmICgh
dHNmX3R5cGVfb3V0X21hcF9nZXRfdHlwZV9jb2RlKG91dF9tYW4tPnR5cGVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi0+dHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZV9jb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAg
fQorICAgIAorICAgIGlmICh0eXBlX2NvZGUgPCBUU0ZfU1BfQ19DRl9EQVRBX0JJVCAmJiBidWYt
PnNpemUgPCAyNTYpIHsKKyAgICAgICAgaWYgKCF3cml0ZV9jb21tYW5kKG91dF9tYW4tPndyaXRl
ciwgb3V0X21hbi0+YXJnLCBUU0ZfU1BfQ19DRl9EQVRBX0JJVCB8IHR5cGVfY29kZSkpIHsKKyAg
ICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICgh
dHNmX2J1ZmZlcl93cml0ZV9zbWFsbF93aXRoX3R5cGVfY29kZShidWYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfbWFuLT50eXBlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9tYW4t
PndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dF9tYW4tPmFyZykpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXdyaXRlX2NvbW1hbmQob3V0X21hbi0+d3JpdGVy
LCBvdXRfbWFuLT5hcmcsIFRTRl9TUF9DX0RBVEEpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9y
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXRzZl9idWZmZXJfd3JpdGVfc2lt
cGxlKGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX2NvZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X21hbi0+dHlwZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X21hbi0+d3JpdGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9tYW4tPmFyZykpIHsKKyAgICAg
ICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHNmX3Ry
dWU7CisKK2Vycm9yOgorICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKKwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfcHJvdG9jb2wuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3Nlcmlh
bF9wcm90b2NvbC5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2Zfc2VyaWFsX3Byb3RvY29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQaXps
by4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
RklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworLyogVGhpcyBmaWxlIGhvbGRzIGNvbnN0YW50cyByZXF1aXJlZCBieSB0aGUg
c2VyaWFsIHByb3RvY29sLiAqLworCisjaWZuZGVmIEZQX1RTRl9TRVJJQUxfUFJPVE9DT0xfSAor
I2RlZmluZSBGUF9UU0ZfU0VSSUFMX1BST1RPQ09MX0gKKworI2luY2x1ZGUgInRzZl90eXBlcy5o
IgorCisvKiB0aGUgbGVuZ3RoIG9mIGFsbCBtYWdpYyBjb2RlcyAqLworI2RlZmluZSBUU0ZfU1Bf
TUFHSUNfTEVOICAgICAgICAgICAgNAorCisvKiBXaGF0IGZvbGxvd3MgYXJlIHRoZSBzZXJpYWwg
cHJvdG9jb2wgY29tbWFuZCBjb2Rlcy4gKi8KKworLyogSW5kaWNhdGVzIHRoYXQgdGhlIHR5cGUg
bWFwIHNob3VsZCBiZSByZXNldC4gIEV2ZXJ5IHZhbGlkIFRTRiBzdHJlYW0KKyAqIG11c3QgYmVn
aW4gd2l0aCBhIFRTRl9TUF9SRVNFVF9UWVBFUyBjb21tYW5kLiAgQSBUU0ZfU1BfUkVTRVRfVFlQ
RVMKKyAqIGNvbW1hbmQgbXVzdCBiZSBmb2xsb3dlZCBieSB0aGUgVFNGIG1hZ2ljIGNvZGUsIGRl
ZmluZWQgaW4gdGhlIGNvbnN0YW50cworICogVFNGX1NQX01BR0lDX1NVRkZJWCBhbmQgVFNGX1NQ
X01BR0lDX1NVRkZJWF9MRU4uICovCisjZGVmaW5lIFRTRl9TUF9DX1JFU0VUX1RZUEVTICAgICAg
ICAgICAgICAgICgodWludDhfdCkwKQorCisvKiBJbmRpY2F0ZXMgdGhhdCBhIG5ldyB0eXBlIGRl
ZmluaXRpb24gZm9sbG93cy4gIFRoZSBuZXcgdHlwZSBpcyBkZWZpbmVkCisgKiB0byBoYXZlIHdo
YXRldmVyIGNvZGUgY29tZXMgbmV4dC4gIEF0IGxlYXN0IG9uZSBvZiB0aGVzZQorICogbXVzdCBw
cmVjZWRlIHRoZSBmaXJzdCBUU0ZfU1BfQ19EQVRBIGNvbW1hbmQgaW4gYSBzdHJlYW0uICovCisj
ZGVmaW5lIFRTRl9TUF9DX05FV19UWVBFICAgICAgICAgICAgICAgICAgICgodWludDhfdCkxKQor
CisvKiBJbmRpY2F0ZXMgdGhhdCBkYXRhIGZvbGxvd3MuICBUaGUgZm9ybWF0IG9mIHNhaWQgZGF0
YSBpcyBkZXRlcm1pbmVkCisgKiBieSB0aGUgdHNmX2J1ZmZlciBvYmplY3QuICovCisjZGVmaW5l
IFRTRl9TUF9DX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkyKQorCisvKiBJ
bmRpY2F0ZXMgdGhhdCB3ZSdyZSBnb2luZyB0byBjaGFuZ2UgZm9ybWF0cy4gIE5vdGUgdGhhdCB0
aGUKKyAqIHNlcmlhbF9pbl9tYW4gZG9lc24ndCBjYXRjaCB0aGlzOyBpZiB5b3Ugd2FudCB0byBh
bGxvdyBmb3IgemlwIGZvcm1hdHMKKyAqIHRvIGJlIGNoYW5nZWQgb24gdGhlIGZseSwgeW91IGhh
dmUgdG8gY2F0Y2ggdGhpcyB5b3Vyc2VsZi4gIFRoZQorICogdHNmX2FkYXB0aXZlX3JlYWRlciBk
b2VzIHRoaXMuICovCisjZGVmaW5lIFRTRl9TUF9DX1NXSVRDSF9GT1JNQVQgICAgICAgICAgICAg
ICgodWludDhfdCknVCcpCisKKy8qIElmIHRoaXMgYml0IGluIHRoZSBjb21tYW5kIGNvZGUgaXMg
c2V0LCBpdCBpbmRpY2F0ZXMgdGhhdCBkYXRhIGZvbGxvd3MsCisgKiB3aXRoICJjb21wYWN0IGZy
YW1pbmciIChDRikuIFRoZSBsb3cgYml0cyBhcmUgdGhlbiB1c2VkIGFzIHRoZSB0eXBlCisgKiBj
b2RlLiAqLworI2RlZmluZSBUU0ZfU1BfQ19DRl9EQVRBX0JJVCAgICAgICAgICAgICAgICAoKHVp
bnQ4X3QpMTI4KQorCisvKiBJdCBpcyBhIHJlcXVpcmVtZW50IHRoYXQgYW55IGFkZGl0aW9uYWwg
c2VyaWFsIHByb3RvY29sIGNvbW1hbmQgY29kZXMgbXVzdAorICogYmUgaW1tZWRpYXRlbHkgZm9s
bG93ZWQgYnkgYSAzMi1iaXQgbGVuZ3RoIHNwZWNpZmllci4gIEl0IGlzIHRoZW4KKyAqIGFjY2Vw
dGFibGUgZm9yIGlucHV0IG1hbmFnZXIgaW1wbGVtZW50YXRpb25zIHRvIHNraXAgb3ZlciB0aGUg
bnVtYmVyIG9mCisgKiBieXRlcyBzcGVjaWZpZWQgYnkgdGhlIGxlbmd0aCBzcGVjaWZpZXIuICov
CisgCisvKiBUaGUgY29kZSB0aGF0IHNpZ25pZmllcyBhIHN0YW5kYXJkIFRTRiBzdHJlYW0uICAo
VGhpcyBpcyBqdXN0IGEKKyAqIFRTRl9TUF9DX1JFU0VUX1RZUEVTIGZvbGxvd2VkIGJ5IGEgVFNG
X1NQX01BR0lDX1NVRkZJWC4pKi8KKyNkZWZpbmUgVFNGX1NQX01BR0lDX0NPREUgICAgICAgICAg
ICAgICAgICAgIlwwMDBUU0YiCisKKy8qIFRoZSAnc3VmZml4JyBvZiB0aGUgYWJvdmUgY29kZTsg
dGhpcyBpcyB0aGUgcGFydCB0aGF0IHdpbGwgZm9sbG93IGEKKyAqIFRTRl9TUF9DX1JFU0VUX1RZ
UEVTIGNvbW1hbmQuICovCisjZGVmaW5lIFRTRl9TUF9NQUdJQ19TVUZGSVggICAgICAgICAgICAg
ICAgICJUU0YiCisjZGVmaW5lIFRTRl9TUF9NQUdJQ19TVUZGSVhfTEVOICAgICAgICAgICAgIDMK
KworLyogTWFnaWMgY29kZXMgZm9yIFpMaWIgYW5kIGxpYmJ6aXAyIGZpbGVzLiAgTm90ZSB0aGF0
IGl0IGlzIG5vIGFjY2lkZW50IHRoYXQKKyAqIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlc2Ug
Y29kZXMgaGFzIGEgJ1QnIC0gc2VlIFRTRl9TUF9DX1NXSVRDSF9GT1JNQVQKKyAqIGFib3ZlLiAq
LworCisjZGVmaW5lIFRTRl9TUF9aTElCX01BR0lDX0NPREUgICAgICAgICAgICAgICJUU0Z6Igor
CisjZGVmaW5lIFRTRl9TUF9CWklQMl9NQUdJQ19DT0RFICAgICAgICAgICAgICJUU0ZiIgorCisj
ZW5kaWYKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3NoYTEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvdHNmX3NoYTEuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvdHNmX3NoYTEuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4NSBAQAor
LyoKKyAqICB0c2Zfc2hhMS5jCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OCwgMjAwOQorICog
IFBhdWwgRS4gSm9uZXMgPHBhdWxlakBwYWNrZXRpemVyLmNvbT4KKyAqICBBbGwgUmlnaHRzIFJl
c2VydmVkCisgKiAKKyAqICBGcmVld2FyZSBQdWJsaWMgTGljZW5zZSAoRlBMKQorICogIAorICog
IFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgImZyZWV3YXJlLiIgIFBlcm1pc3Npb24gdG8g
ZGlzdHJpYnV0ZQorICogIHRoaXMgc29mdHdhcmUgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IGluY2x1ZGluZyBpbmNvcnBvcmF0aW9uIAorICogIGludG8gb3RoZXIgcHJvZHVjdHMsIGlzIGhl
cmVieSBncmFudGVkIHdpdGhvdXQgYSBmZWUuICBUSElTIFNPRlRXQVJFIAorICogIElTIFBST1ZJ
REVEICdBUyBJUycgQU5EIFdJVEhPVVQgQU5ZIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIAorICogIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSAKKyAqICBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBUSEUgQVVUSE9SIFNIQUxMIE5PVCBCRSBIRUxEIAorICogIExJQUJMRSBG
T1IgQU5ZIERBTUFHRVMgUkVTVUxUSU5HIEZST00gVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
SVRIRVIgCisgKiAgRElSRUNUTFkgT1IgSU5ESVJFQ1RMWSwgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIExPU1MgT0YgREFUQSAKKyAqICBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUND
VVJBVEUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgJElkOiBzaGExLmMgMTIgMjAw
OS0wNi0yMiAxOTozNDoyNVogcGF1bGVqICQKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAq
ICBEZXNjcmlwdGlvbjoKKyAqICAgICAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIFNlY3VyZSBI
YXNoaW5nIFN0YW5kYXJkIGFzIGRlZmluZWQKKyAqICAgICAgaW4gRklQUyBQVUIgMTgwLTEgcHVi
bGlzaGVkIEFwcmlsIDE3LCAxOTk1LgorICoKKyAqICAgICAgVGhlIFNlY3VyZSBIYXNoaW5nIFN0
YW5kYXJkLCB3aGljaCB1c2VzIHRoZSBTZWN1cmUgSGFzaGluZworICogICAgICBBbGdvcml0aG0g
KFNIQSksIHByb2R1Y2VzIGEgMTYwLWJpdCBtZXNzYWdlIGRpZ2VzdCBmb3IgYQorICogICAgICBn
aXZlbiBkYXRhIHN0cmVhbS4gIEluIHRoZW9yeSwgaXQgaXMgaGlnaGx5IGltcHJvYmFibGUgdGhh
dAorICogICAgICB0d28gbWVzc2FnZXMgd2lsbCBwcm9kdWNlIHRoZSBzYW1lIG1lc3NhZ2UgZGln
ZXN0LiAgVGhlcmVmb3JlLAorICogICAgICB0aGlzIGFsZ29yaXRobSBjYW4gc2VydmUgYXMgYSBt
ZWFucyBvZiBwcm92aWRpbmcgYSAiZmluZ2VycHJpbnQiCisgKiAgICAgIGZvciBhIG1lc3NhZ2Uu
CisgKgorICogIFBvcnRhYmlsaXR5IElzc3VlczoKKyAqICAgICAgU0hBLTEgaXMgZGVmaW5lZCBp
biB0ZXJtcyBvZiAzMi1iaXQgIndvcmRzIi4gIFRoaXMgY29kZSB3YXMKKyAqICAgICAgd3JpdHRl
biB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZSBwcm9jZXNzb3IgaGFzIGF0IGxlYXN0Cisg
KiAgICAgIGEgMzItYml0IG1hY2hpbmUgd29yZCBzaXplLiAgSWYgdGhlIG1hY2hpbmUgd29yZCBz
aXplIGlzIGxhcmdlciwKKyAqICAgICAgdGhlIGNvZGUgc2hvdWxkIHN0aWxsIGZ1bmN0aW9uIHBy
b3Blcmx5LiAgT25lIGNhdmVhdCB0byB0aGF0CisgKiAgICAgIGlzIHRoYXQgdGhlIGlucHV0IGZ1
bmN0aW9ucyB0YWtpbmcgY2hhcmFjdGVycyBhbmQgY2hhcmFjdGVyCisgKiAgICAgIGFycmF5cyBh
c3N1bWUgdGhhdCBvbmx5IDggYml0cyBvZiBpbmZvcm1hdGlvbiBhcmUgc3RvcmVkIGluIGVhY2gK
KyAqICAgICAgY2hhcmFjdGVyLgorICoKKyAqICBDYXZlYXRzOgorICogICAgICBTSEEtMSBpcyBk
ZXNpZ25lZCB0byB3b3JrIHdpdGggbWVzc2FnZXMgbGVzcyB0aGFuIDJeNjQgYml0cworICogICAg
ICBsb25nLiBBbHRob3VnaCBTSEEtMSBhbGxvd3MgYSBtZXNzYWdlIGRpZ2VzdCB0byBiZSBnZW5l
cmF0ZWQgZm9yCisgKiAgICAgIG1lc3NhZ2VzIG9mIGFueSBudW1iZXIgb2YgYml0cyBsZXNzIHRo
YW4gMl42NCwgdGhpcworICogICAgICBpbXBsZW1lbnRhdGlvbiBvbmx5IHdvcmtzIHdpdGggbWVz
c2FnZXMgd2l0aCBhIGxlbmd0aCB0aGF0IGlzIGEKKyAqICAgICAgbXVsdGlwbGUgb2YgdGhlIHNp
emUgb2YgYW4gOC1iaXQgY2hhcmFjdGVyLgorICoKKyAqLworCisjaW5jbHVkZSAidHNmX3NoYTEu
aCIKKworLyoKKyAqICBEZWZpbmUgdGhlIGNpcmN1bGFyIHNoaWZ0IG1hY3JvCisgKi8KK3N0YXRp
YyBUU0ZfaW5saW5lIHVpbnQzMl90IFNIQTFDaXJjdWxhclNoaWZ0KHVpbnQzMl90IGJpdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3b3Jk
KSB7CisgICAgcmV0dXJuICgoKCh3b3JkKSA8PCAoYml0cykpICYgMHhGRkZGRkZGRikgfAorICAg
ICAgICAgICAgKCh3b3JkKSA+PiAoMzItKGJpdHMpKSkpOworfQorCisvKiBGdW5jdGlvbiBwcm90
b3R5cGVzICovCitzdGF0aWMgdm9pZCBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayh0c2ZfU0hBMUNv
bnRleHQgKik7CitzdGF0aWMgdm9pZCBTSEExUGFkTWVzc2FnZSh0c2ZfU0hBMUNvbnRleHQgKik7
CisKKy8qICAKKyAqICBTSEExUmVzZXQKKyAqCisgKiAgRGVzY3JpcHRpb246CisgKiAgICAgIFRo
aXMgZnVuY3Rpb24gd2lsbCBpbml0aWFsaXplIHRoZSBTSEExQ29udGV4dCBpbiBwcmVwYXJhdGlv
bgorICogICAgICBmb3IgY29tcHV0aW5nIGEgbmV3IG1lc3NhZ2UgZGlnZXN0LgorICoKKyAqICBQ
YXJhbWV0ZXJzOgorICogICAgICBjb250ZXh0OiBbaW4vb3V0XQorICogICAgICAgICAgVGhlIGNv
bnRleHQgdG8gcmVzZXQuCisgKgorICogIFJldHVybnM6CisgKiAgICAgIE5vdGhpbmcuCisgKgor
ICogIENvbW1lbnRzOgorICoKKyAqLwordm9pZCB0c2ZfU0hBMVJlc2V0KHRzZl9TSEExQ29udGV4
dCAqY29udGV4dCkKK3sKKyAgICBjb250ZXh0LT5MZW5ndGhfTG93ICAgICAgICAgICAgID0gMDsK
KyAgICBjb250ZXh0LT5MZW5ndGhfSGlnaCAgICAgICAgICAgID0gMDsKKyAgICBjb250ZXh0LT5N
ZXNzYWdlX0Jsb2NrX0luZGV4ICAgID0gMDsKKworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0
WzBdICAgICAgPSAweDY3NDUyMzAxOworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzFdICAg
ICAgPSAweEVGQ0RBQjg5OworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzJdICAgICAgPSAw
eDk4QkFEQ0ZFOworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzNdICAgICAgPSAweDEwMzI1
NDc2OworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzRdICAgICAgPSAweEMzRDJFMUYwOwor
CisgICAgY29udGV4dC0+Q29tcHV0ZWQgICA9IDA7CisgICAgY29udGV4dC0+Q29ycnVwdGVkICA9
IDA7Cit9CisKKy8qICAKKyAqICBTSEExUmVzdWx0CisgKgorICogIERlc2NyaXB0aW9uOgorICog
ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSAxNjAtYml0IG1lc3NhZ2UgZGlnZXN0
IGludG8gdGhlCisgKiAgICAgIE1lc3NhZ2VfRGlnZXN0IGFycmF5IHdpdGhpbiB0aGUgU0hBMUNv
bnRleHQgcHJvdmlkZWQKKyAqCisgKiAgUGFyYW1ldGVyczoKKyAqICAgICAgY29udGV4dDogW2lu
L291dF0KKyAqICAgICAgICAgIFRoZSBjb250ZXh0IHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIFNI
QS0xIGhhc2guCisgKgorICogIFJldHVybnM6CisgKiAgICAgIDEgaWYgc3VjY2Vzc2Z1bCwgMCBp
ZiBpdCBmYWlsZWQuCisgKgorICogIENvbW1lbnRzOgorICoKKyAqLworaW50MzJfdCB0c2ZfU0hB
MVJlc3VsdCh0c2ZfU0hBMUNvbnRleHQgKmNvbnRleHQpCit7CisKKyAgICBpZiAoY29udGV4dC0+
Q29ycnVwdGVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFj
b250ZXh0LT5Db21wdXRlZCkKKyAgICB7CisgICAgICAgIFNIQTFQYWRNZXNzYWdlKGNvbnRleHQp
OworICAgICAgICBjb250ZXh0LT5Db21wdXRlZCA9IDE7CisgICAgfQorCisgICAgcmV0dXJuIDE7
Cit9CisKKy8qICAKKyAqICBTSEExSW5wdXQKKyAqCisgKiAgRGVzY3JpcHRpb246CisgKiAgICAg
IFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbiBhcnJheSBvZiBvY3RldHMgYXMgdGhlIG5leHQgcG9y
dGlvbiBvZgorICogICAgICB0aGUgbWVzc2FnZS4KKyAqCisgKiAgUGFyYW1ldGVyczoKKyAqICAg
ICAgY29udGV4dDogW2luL291dF0KKyAqICAgICAgICAgIFRoZSBTSEEtMSBjb250ZXh0IHRvIHVw
ZGF0ZQorICogICAgICBtZXNzYWdlX2FycmF5OiBbaW5dCisgKiAgICAgICAgICBBbiBhcnJheSBv
ZiBjaGFyYWN0ZXJzIHJlcHJlc2VudGluZyB0aGUgbmV4dCBwb3J0aW9uIG9mIHRoZQorICogICAg
ICAgICAgbWVzc2FnZS4KKyAqICAgICAgbGVuZ3RoOiBbaW5dCisgKiAgICAgICAgICBUaGUgbGVu
Z3RoIG9mIHRoZSBtZXNzYWdlIGluIG1lc3NhZ2VfYXJyYXkKKyAqCisgKiAgUmV0dXJuczoKKyAq
ICAgICAgTm90aGluZy4KKyAqCisgKiAgQ29tbWVudHM6CisgKgorICovCit2b2lkIHRzZl9TSEEx
SW5wdXQoICAgICB0c2ZfU0hBMUNvbnRleHQgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKm1lc3NhZ2VfYXJyYXksCisgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIGxlbmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0
aCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Q29t
cHV0ZWQgfHwgY29udGV4dC0+Q29ycnVwdGVkKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+Q29y
cnVwdGVkID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlKGxlbmd0aC0t
ICYmICFjb250ZXh0LT5Db3JydXB0ZWQpCisgICAgeworICAgICAgICBjb250ZXh0LT5NZXNzYWdl
X0Jsb2NrW2NvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCptZXNzYWdlX2FycmF5ICYgMHhGRik7
CisKKyAgICAgICAgY29udGV4dC0+TGVuZ3RoX0xvdyArPSA4OworICAgICAgICAvKiBGb3JjZSBp
dCB0byAzMiBiaXRzICovCisgICAgICAgIGNvbnRleHQtPkxlbmd0aF9Mb3cgJj0gMHhGRkZGRkZG
RjsKKyAgICAgICAgaWYgKGNvbnRleHQtPkxlbmd0aF9Mb3cgPT0gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29udGV4dC0+TGVuZ3RoX0hpZ2grKzsKKyAgICAgICAgICAgIC8qIEZvcmNlIGl0
IHRvIDMyIGJpdHMgKi8KKyAgICAgICAgICAgIGNvbnRleHQtPkxlbmd0aF9IaWdoICY9IDB4RkZG
RkZGRkY7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+TGVuZ3RoX0hpZ2ggPT0gMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBNZXNzYWdlIGlzIHRvbyBsb25nICovCisgICAg
ICAgICAgICAgICAgY29udGV4dC0+Q29ycnVwdGVkID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4ID09IDY0KQor
ICAgICAgICB7CisgICAgICAgICAgICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayhjb250ZXh0KTsK
KyAgICAgICAgfQorCisgICAgICAgIG1lc3NhZ2VfYXJyYXkrKzsKKyAgICB9Cit9CisKKy8qICAK
KyAqICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jaworICoKKyAqICBEZXNjcmlwdGlvbjoKKyAqICAg
ICAgVGhpcyBmdW5jdGlvbiB3aWxsIHByb2Nlc3MgdGhlIG5leHQgNTEyIGJpdHMgb2YgdGhlIG1l
c3NhZ2UKKyAqICAgICAgc3RvcmVkIGluIHRoZSBNZXNzYWdlX0Jsb2NrIGFycmF5LgorICoKKyAq
ICBQYXJhbWV0ZXJzOgorICogICAgICBOb25lLgorICoKKyAqICBSZXR1cm5zOgorICogICAgICBO
b3RoaW5nLgorICoKKyAqICBDb21tZW50czoKKyAqICAgICAgTWFueSBvZiB0aGUgdmFyaWFibGUg
bmFtZXMgaW4gdGhlIFNIQUNvbnRleHQsIGVzcGVjaWFsbHkgdGhlCisgKiAgICAgIHNpbmdsZSBj
aGFyYWN0ZXIgbmFtZXMsIHdlcmUgdXNlZCBiZWNhdXNlIHRob3NlIHdlcmUgdGhlIG5hbWVzCisg
KiAgICAgIHVzZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgorICogICAgICAgICAKKyAqCisgKi8KK3N0
YXRpYyB2b2lkIFNIQTFQcm9jZXNzTWVzc2FnZUJsb2NrKHRzZl9TSEExQ29udGV4dCAqY29udGV4
dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBLW10gPSAgICAgICAgICAgIC8qIENvbnN0YW50cyBk
ZWZpbmVkIGluIFNIQS0xICAgKi8gICAgICAKKyAgICB7CisgICAgICAgIDB4NUE4Mjc5OTksCisg
ICAgICAgIDB4NkVEOUVCQTEsCisgICAgICAgIDB4OEYxQkJDREMsCisgICAgICAgIDB4Q0E2MkMx
RDYKKyAgICB9OworICAgIGludDMyX3QgICAgICAgICB0OyAgICAgICAgICAgICAgICAgIC8qIExv
b3AgY291bnRlciAgICAgICAgICAgICAgICAgKi8KKyAgICB1aW50MzJfdCAgICB0ZW1wOyAgICAg
ICAgICAgICAgIC8qIFRlbXBvcmFyeSB3b3JkIHZhbHVlICAgICAgICAgKi8KKyAgICB1aW50MzJf
dCAgICBXWzgwXTsgICAgICAgICAgICAgIC8qIFdvcmQgc2VxdWVuY2UgICAgICAgICAgICAgICAg
Ki8KKyAgICB1aW50MzJfdCAgICBBLCBCLCBDLCBELCBFOyAgICAgIC8qIFdvcmQgYnVmZmVycyAg
ICAgICAgICAgICAgICAgKi8KKworICAgIC8qCisgICAgICogIEluaXRpYWxpemUgdGhlIGZpcnN0
IDE2IHdvcmRzIGluIHRoZSBhcnJheSBXCisgICAgICovCisgICAgZm9yKHQgPSAwOyB0IDwgMTY7
IHQrKykKKyAgICB7CisgICAgICAgIFdbdF0gPSAoKHVuc2lnbmVkKSBjb250ZXh0LT5NZXNzYWdl
X0Jsb2NrW3QgKiA0XSkgPDwgMjQ7CisgICAgICAgIFdbdF0gfD0gKCh1bnNpZ25lZCkgY29udGV4
dC0+TWVzc2FnZV9CbG9ja1t0ICogNCArIDFdKSA8PCAxNjsKKyAgICAgICAgV1t0XSB8PSAoKHVu
c2lnbmVkKSBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW3QgKiA0ICsgMl0pIDw8IDg7CisgICAgICAg
IFdbdF0gfD0gKCh1bnNpZ25lZCkgY29udGV4dC0+TWVzc2FnZV9CbG9ja1t0ICogNCArIDNdKTsK
KyAgICB9CisKKyAgICBmb3IodCA9IDE2OyB0IDwgODA7IHQrKykKKyAgICB7CisgICAgICAgV1t0
XSA9IFNIQTFDaXJjdWxhclNoaWZ0KDEsV1t0LTNdIF4gV1t0LThdIF4gV1t0LTE0XSBeIFdbdC0x
Nl0pOworICAgIH0KKworICAgIEEgPSBjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFswXTsKKyAgICBC
ID0gY29udGV4dC0+TWVzc2FnZV9EaWdlc3RbMV07CisgICAgQyA9IGNvbnRleHQtPk1lc3NhZ2Vf
RGlnZXN0WzJdOworICAgIEQgPSBjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFszXTsKKyAgICBFID0g
Y29udGV4dC0+TWVzc2FnZV9EaWdlc3RbNF07CisKKyAgICBmb3IodCA9IDA7IHQgPCAyMDsgdCsr
KQorICAgIHsKKyAgICAgICAgdGVtcCA9ICBTSEExQ2lyY3VsYXJTaGlmdCg1LEEpICsKKyAgICAg
ICAgICAgICAgICAoKEIgJiBDKSB8ICgofkIpICYgRCkpICsgRSArIFdbdF0gKyBLWzBdOworICAg
ICAgICB0ZW1wICY9IDB4RkZGRkZGRkY7CisgICAgICAgIEUgPSBEOworICAgICAgICBEID0gQzsK
KyAgICAgICAgQyA9IFNIQTFDaXJjdWxhclNoaWZ0KDMwLEIpOworICAgICAgICBCID0gQTsKKyAg
ICAgICAgQSA9IHRlbXA7CisgICAgfQorCisgICAgZm9yKHQgPSAyMDsgdCA8IDQwOyB0KyspCisg
ICAgeworICAgICAgICB0ZW1wID0gU0hBMUNpcmN1bGFyU2hpZnQoNSxBKSArIChCIF4gQyBeIEQp
ICsgRSArIFdbdF0gKyBLWzFdOworICAgICAgICB0ZW1wICY9IDB4RkZGRkZGRkY7CisgICAgICAg
IEUgPSBEOworICAgICAgICBEID0gQzsKKyAgICAgICAgQyA9IFNIQTFDaXJjdWxhclNoaWZ0KDMw
LEIpOworICAgICAgICBCID0gQTsKKyAgICAgICAgQSA9IHRlbXA7CisgICAgfQorCisgICAgZm9y
KHQgPSA0MDsgdCA8IDYwOyB0KyspCisgICAgeworICAgICAgICB0ZW1wID0gU0hBMUNpcmN1bGFy
U2hpZnQoNSxBKSArCisgICAgICAgICAgICAgICAoKEIgJiBDKSB8IChCICYgRCkgfCAoQyAmIEQp
KSArIEUgKyBXW3RdICsgS1syXTsKKyAgICAgICAgdGVtcCAmPSAweEZGRkZGRkZGOworICAgICAg
ICBFID0gRDsKKyAgICAgICAgRCA9IEM7CisgICAgICAgIEMgPSBTSEExQ2lyY3VsYXJTaGlmdCgz
MCxCKTsKKyAgICAgICAgQiA9IEE7CisgICAgICAgIEEgPSB0ZW1wOworICAgIH0KKworICAgIGZv
cih0ID0gNjA7IHQgPCA4MDsgdCsrKQorICAgIHsKKyAgICAgICAgdGVtcCA9IFNIQTFDaXJjdWxh
clNoaWZ0KDUsQSkgKyAoQiBeIEMgXiBEKSArIEUgKyBXW3RdICsgS1szXTsKKyAgICAgICAgdGVt
cCAmPSAweEZGRkZGRkZGOworICAgICAgICBFID0gRDsKKyAgICAgICAgRCA9IEM7CisgICAgICAg
IEMgPSBTSEExQ2lyY3VsYXJTaGlmdCgzMCxCKTsKKyAgICAgICAgQiA9IEE7CisgICAgICAgIEEg
PSB0ZW1wOworICAgIH0KKworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzBdID0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIChjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFswXSArIEEpICYgMHhG
RkZGRkZGRjsKKyAgICBjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFsxXSA9CisgICAgICAgICAgICAg
ICAgICAgICAgICAoY29udGV4dC0+TWVzc2FnZV9EaWdlc3RbMV0gKyBCKSAmIDB4RkZGRkZGRkY7
CisgICAgY29udGV4dC0+TWVzc2FnZV9EaWdlc3RbMl0gPQorICAgICAgICAgICAgICAgICAgICAg
ICAgKGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzJdICsgQykgJiAweEZGRkZGRkZGOworICAgIGNv
bnRleHQtPk1lc3NhZ2VfRGlnZXN0WzNdID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChjb250
ZXh0LT5NZXNzYWdlX0RpZ2VzdFszXSArIEQpICYgMHhGRkZGRkZGRjsKKyAgICBjb250ZXh0LT5N
ZXNzYWdlX0RpZ2VzdFs0XSA9CisgICAgICAgICAgICAgICAgICAgICAgICAoY29udGV4dC0+TWVz
c2FnZV9EaWdlc3RbNF0gKyBFKSAmIDB4RkZGRkZGRkY7CisKKyAgICBjb250ZXh0LT5NZXNzYWdl
X0Jsb2NrX0luZGV4ID0gMDsKK30KKworLyogIAorICogIFNIQTFQYWRNZXNzYWdlCisgKgorICog
IERlc2NyaXB0aW9uOgorICogICAgICBBY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLCB0aGUgbWVz
c2FnZSBtdXN0IGJlIHBhZGRlZCB0byBhbiBldmVuCisgKiAgICAgIDUxMiBiaXRzLiAgVGhlIGZp
cnN0IHBhZGRpbmcgYml0IG11c3QgYmUgYSAnMScuICBUaGUgbGFzdCA2NAorICogICAgICBiaXRz
IHJlcHJlc2VudCB0aGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdlLiAgQWxsIGJpdHMg
aW4KKyAqICAgICAgYmV0d2VlbiBzaG91bGQgYmUgMC4gIFRoaXMgZnVuY3Rpb24gd2lsbCBwYWQg
dGhlIG1lc3NhZ2UKKyAqICAgICAgYWNjb3JkaW5nIHRvIHRob3NlIHJ1bGVzIGJ5IGZpbGxpbmcg
dGhlIE1lc3NhZ2VfQmxvY2sgYXJyYXkKKyAqICAgICAgYWNjb3JkaW5nbHkuICBJdCB3aWxsIGFs
c28gY2FsbCBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jaygpCisgKiAgICAgIGFwcHJvcHJpYXRlbHku
ICBXaGVuIGl0IHJldHVybnMsIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgdGhlCisgKiAgICAgIG1l
c3NhZ2UgZGlnZXN0IGhhcyBiZWVuIGNvbXB1dGVkLgorICoKKyAqICBQYXJhbWV0ZXJzOgorICog
ICAgICBjb250ZXh0OiBbaW4vb3V0XQorICogICAgICAgICAgVGhlIGNvbnRleHQgdG8gcGFkCisg
KgorICogIFJldHVybnM6CisgKiAgICAgIE5vdGhpbmcuCisgKgorICogIENvbW1lbnRzOgorICoK
KyAqLworc3RhdGljIHZvaWQgU0hBMVBhZE1lc3NhZ2UodHNmX1NIQTFDb250ZXh0ICpjb250ZXh0
KQoreworICAgIC8qCisgICAgICogIENoZWNrIHRvIHNlZSBpZiB0aGUgY3VycmVudCBtZXNzYWdl
IGJsb2NrIGlzIHRvbyBzbWFsbCB0byBob2xkCisgICAgICogIHRoZSBpbml0aWFsIHBhZGRpbmcg
Yml0cyBhbmQgbGVuZ3RoLiAgSWYgc28sIHdlIHdpbGwgcGFkIHRoZQorICAgICAqICBibG9jaywg
cHJvY2VzcyBpdCwgYW5kIHRoZW4gY29udGludWUgcGFkZGluZyBpbnRvIGEgc2Vjb25kCisgICAg
ICogIGJsb2NrLgorICAgICAqLworICAgIGlmIChjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4
ID4gNTUpCisgICAgeworICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQtPk1l
c3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAweDgwOworICAgICAgICB3aGlsZShjb250ZXh0LT5NZXNz
YWdlX0Jsb2NrX0luZGV4IDwgNjQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPk1l
c3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCsrXSA9IDA7CisgICAgICAg
IH0KKworICAgICAgICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayhjb250ZXh0KTsKKworICAgICAg
ICB3aGlsZShjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4IDwgNTYpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19J
bmRleCsrXSA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+TWVzc2FnZV9CbG9ja1tjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4KytdID0g
MHg4MDsKKyAgICAgICAgd2hpbGUoY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA8IDU2KQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQtPk1l
c3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAg
ICAgKiAgU3RvcmUgdGhlIG1lc3NhZ2UgbGVuZ3RoIGFzIHRoZSBsYXN0IDggb2N0ZXRzCisgICAg
ICovCisgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s1Nl0gPSAoY29udGV4dC0+TGVuZ3RoX0hp
Z2ggPj4gMjQpICYgMHhGRjsKKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzU3XSA9IChjb250
ZXh0LT5MZW5ndGhfSGlnaCA+PiAxNikgJiAweEZGOworICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxv
Y2tbNThdID0gKGNvbnRleHQtPkxlbmd0aF9IaWdoID4+IDgpICYgMHhGRjsKKyAgICBjb250ZXh0
LT5NZXNzYWdlX0Jsb2NrWzU5XSA9IChjb250ZXh0LT5MZW5ndGhfSGlnaCkgJiAweEZGOworICAg
IGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNjBdID0gKGNvbnRleHQtPkxlbmd0aF9Mb3cgPj4gMjQp
ICYgMHhGRjsKKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzYxXSA9IChjb250ZXh0LT5MZW5n
dGhfTG93ID4+IDE2KSAmIDB4RkY7CisgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s2Ml0gPSAo
Y29udGV4dC0+TGVuZ3RoX0xvdyA+PiA4KSAmIDB4RkY7CisgICAgY29udGV4dC0+TWVzc2FnZV9C
bG9ja1s2M10gPSAoY29udGV4dC0+TGVuZ3RoX0xvdykgJiAweEZGOworCisgICAgU0hBMVByb2Nl
c3NNZXNzYWdlQmxvY2soY29udGV4dCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3NoYTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTEuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTEuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU2IEBACisvKgorICogIHRzZl9zaGExLmgKKyAqCisgKiAgQ29weXJpZ2h0IChD
KSAxOTk4LCAyMDA5CisgKiAgUGF1bCBFLiBKb25lcyA8cGF1bGVqQHBhY2tldGl6ZXIuY29tPgor
ICogIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAk
SWQ6IHNoYTEuaCAxMiAyMDA5LTA2LTIyIDE5OjM0OjI1WiBwYXVsZWogJAorICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisgKgorICogIERlc2NyaXB0aW9uOgorICogICAgICBUaGlzIGNsYXNzIGltcGxl
bWVudHMgdGhlIFNlY3VyZSBIYXNoaW5nIFN0YW5kYXJkIGFzIGRlZmluZWQKKyAqICAgICAgaW4g
RklQUyBQVUIgMTgwLTEgcHVibGlzaGVkIEFwcmlsIDE3LCAxOTk1LgorICoKKyAqICAgICAgTWFu
eSBvZiB0aGUgdmFyaWFibGUgbmFtZXMgaW4gdGhlIFNIQTFDb250ZXh0LCBlc3BlY2lhbGx5IHRo
ZQorICogICAgICBzaW5nbGUgY2hhcmFjdGVyIG5hbWVzLCB3ZXJlIHVzZWQgYmVjYXVzZSB0aG9z
ZSB3ZXJlIHRoZSBuYW1lcworICogICAgICB1c2VkIGluIHRoZSBwdWJsaWNhdGlvbi4KKyAqCisg
KiAgICAgIFBsZWFzZSByZWFkIHRoZSBmaWxlIHNoYTEuYyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K
KyAqCisgKi8KKworI2lmbmRlZiBUU0ZfU0hBMV9IXworI2RlZmluZSBUU0ZfU0hBMV9IXworCisj
aW5jbHVkZSAidHNmX3R5cGVzLmgiCisKKy8qIAorICogIFRoaXMgc3RydWN0dXJlIHdpbGwgaG9s
ZCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciB0aGUgaGFzaGluZworICogIG9wZXJhdGlvbgorICov
Cit0eXBlZGVmIHN0cnVjdCB0c2ZfU0hBMUNvbnRleHQKK3sKKyAgICB1aW50MzJfdCBNZXNzYWdl
X0RpZ2VzdFs1XTsgLyogTWVzc2FnZSBEaWdlc3QgKG91dHB1dCkgICAgICAgICAgKi8KKworICAg
IHVpbnQzMl90IExlbmd0aF9Mb3c7ICAgICAgICAvKiBNZXNzYWdlIGxlbmd0aCBpbiBiaXRzICAg
ICAgICAgICAqLworICAgIHVpbnQzMl90IExlbmd0aF9IaWdoOyAgICAgICAvKiBNZXNzYWdlIGxl
bmd0aCBpbiBiaXRzICAgICAgICAgICAqLworCisgICAgdWludDhfdCBNZXNzYWdlX0Jsb2NrWzY0
XTsgLyogNTEyLWJpdCBtZXNzYWdlIGJsb2NrcyAgICAgICovCisgICAgaW50MzJfdCBNZXNzYWdl
X0Jsb2NrX0luZGV4OyAgICAvKiBJbmRleCBpbnRvIG1lc3NhZ2UgYmxvY2sgYXJyYXkgICAqLwor
CisgICAgaW50MzJfdCBDb21wdXRlZDsgICAgICAgICAgICAgICAvKiBJcyB0aGUgZGlnZXN0IGNv
bXB1dGVkPyAgICAgICAgICAqLworICAgIGludDMyX3QgQ29ycnVwdGVkOyAgICAgICAgICAgICAg
LyogSXMgdGhlIG1lc3NhZ2UgZGlnZXN0IGNvcnJ1cGVkPyAgKi8KK30gdHNmX1NIQTFDb250ZXh0
OworCisvKgorICogIEZ1bmN0aW9uIFByb3RvdHlwZXMKKyAqLwordm9pZCB0c2ZfU0hBMVJlc2V0
KHRzZl9TSEExQ29udGV4dCAqKTsKK2ludDMyX3QgdHNmX1NIQTFSZXN1bHQodHNmX1NIQTFDb250
ZXh0ICopOwordm9pZCB0c2ZfU0hBMUlucHV0KCB0c2ZfU0hBMUNvbnRleHQgKiwKKyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqLAorICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCk7CisKKyNlbmRpZgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9zaGExX3dyaXRlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2Zfc2hhMV93cml0ZXIuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTFfd3JpdGVyLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUg
RmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKwordHNmX3No
YTFfd3RyX3QgKnRzZl9zaGExX3dyaXRlcl9jcmVhdGUodm9pZCkgeworICAgIHRzZl9zaGExX3d0
cl90ICpyZXN1bHQ9bWFsbG9jKHNpemVvZih0c2Zfc2hhMV93dHJfdCkpOworICAgIGlmIChyZXN1
bHQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2Zf
c2hhMV93dHJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgdHNm
X1NIQTFSZXNldCgmcmVzdWx0LT5jdHgpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgdHNmX3NoYTFfd3JpdGVyX2Rlc3Ryb3kodHNmX3NoYTFfd3RyX3QgKnNoYTEpIHsKKyAg
ICBmcmVlKHNoYTEpOworfQorCit0c2ZfYm9vbF90IHRzZl9zaGExX3dyaXRlcl93cml0ZSh2b2lk
ICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB0
c2Zfc2hhMV93dHJfdCAqc2hhMT0odHNmX3NoYTFfd3RyX3QqKWFyZzsKKyAgICAKKyAgICBpZiAo
c2hhMS0+Y3R4LkNvbXB1dGVkKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFEX1NU
QVRFLAorICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgd3JpdGUgdXNpbmcgYSBTSEExIHdy
aXRlciBhZnRlciAiCisgICAgICAgICAgICAgICAgICAgICAgInRzZl9zaGExX3dyaXRlcl9maW5p
c2goKSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9
CisgICAgCisgICAgdHNmX1NIQTFJbnB1dCgmc2hhMS0+Y3R4LCAoY29uc3QgdWludDhfdCopYnVm
LCBsZW4pOworICAgIAorICAgIGlmIChzaGExLT5jdHguQ29ycnVwdGVkKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfSU5URVJOQUwsCisgICAgICAgICAgICAgICAgICAgICAgIlNIQTEg
d3JpdGVyIGhhcyBiZWVuIGNvcnJ1cHRlZC4iKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit1aW50MzJfdCAqdHNmX3No
YTFfd3JpdGVyX2ZpbmlzaCh0c2Zfc2hhMV93dHJfdCAqc2hhMSkgeworICAgIGludDMyX3QgcmVz
dWx0PXRzZl9TSEExUmVzdWx0KCZzaGExLT5jdHgpOworICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfSU5URVJOQUwsCisgICAgICAgICAgICAgICAgICAgICAg
IlNIQTEgd3JpdGVyIGhhcyBiZWVuIGNvcnJ1cHRlZCBhbmQgdGhlIHJlc3VsdCBjYW5ub3QgIgor
ICAgICAgICAgICAgICAgICAgICAgICJiZSBjb21wdXRlZC4iKTsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2Zfc2hhMV93cml0ZXJfcmVzdWx0KHNoYTEp
OworfQorCit1aW50MzJfdCAqdHNmX3NoYTFfd3JpdGVyX3Jlc3VsdCh0c2Zfc2hhMV93dHJfdCAq
c2hhMSkgeworICAgIHJldHVybiBzaGExLT5jdHguTWVzc2FnZV9EaWdlc3Q7Cit9CisKK2NoYXIg
KnRzZl9zaGExX3N1bV90b19zdHIodWludDMyX3QgKnN1bSkgeworICAgIGNvbnN0IGNoYXIgKmhl
eD0iMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgdW5zaWduZWQgaTsKKyAgICBjaGFyICpyZXN1bHQ7
CisgICAgY2hhciAqY3VyOworICAgIAorICAgIGlmIChzdW09PU5VTEwpIHsKKyAgICAgICAgLyog
cHJvcGFnYXRlIHRoZSBlcnJvci4gKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IAorICAgIHJlc3VsdD1tYWxsb2MoNDEpOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAgICAg
ICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyByZXN1bHQgaW4gdHNmX3NoYTFfc3Vt
X3RvX3N0cigpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBjdXI9
cmVzdWx0OworICAgIAorICAgIGZvciAoaT0wO2k8NTsrK2kpIHsKKyAgICAgICAgdWludDMyX3Qg
d29yZDsKKyAgICAgICAgdW5zaWduZWQgajsKKyAgICAgICAgCisgICAgICAgIHdvcmQ9c3VtW2ld
OworCisgICAgICAgIGZvciAoaj0wO2o8NDsrK2opIHsKKyAgICAgICAgICAgICpjdXIrKyA9IGhl
eFsod29yZD4+MjgpJjB4Rl07CisgICAgICAgICAgICAqY3VyKysgPSBoZXhbKHdvcmQ+PjI0KSYw
eEZdOworICAgICAgICAgICAgCisgICAgICAgICAgICB3b3JkPDw9ODsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICAqY3VyPTA7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zb3J0LmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zb3J0LmMJ
KG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl9zb3J0LmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwMyBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5o
IgorCisjaWZkZWYgSEFWRV9RU09SVAorCit2b2lkIHRzZl9zb3J0KHZvaWQgKmJhc2Usc2l6ZV90
IG5tZW1iLHNpemVfdCBzaXplLAorICAgICAgICAgICAgICBpbnQgKCpjb21wYXIpKGNvbnN0IHZv
aWQgKmEsY29uc3Qgdm9pZCAqYikpIHsKKyAgICBxc29ydChiYXNlLG5tZW1iLHNpemUsY29tcGFy
KTsKK30KKworI2Vsc2UKKworI2Vycm9yICJJIGhhdmVuJ3Qgd3JpdHRlbiBteSBvd24gc29ydGlu
ZyBhbGdvcml0aG0geWV0LiAgQnVtbWVyLiIKKworI2VuZGlmCisKK3N0YXRpYyBpbnQgdWkzMl9j
b21wYXJlKGNvbnN0IHZvaWQgKnBhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqcGIpIHsKKyAgICB1aW50MzJfdCBhID0gKigodWludDMyX3QqKXBhKSwKKyAgICAgICAgICAg
ICBiID0gKigodWludDMyX3QqKXBiKTsKKyAgICAKKyAgICBpZiAoYTxiKSB7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9IGVsc2UgaWYgKGE9PWIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCit2b2lkIHRzZl91aTMyX3Nv
cnQodWludDMyX3QgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5tZW1iKSB7Cisg
ICAgdHNmX3NvcnQoYmFzZSxubWVtYixzaXplb2YodWludDMyX3QpLHVpMzJfY29tcGFyZSk7Cit9
CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc3QuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3N0
LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9zdC5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjA0IEBACisvKiB0aGlzIGZpbGUg
aGFzIGJlZW4gbW9kaWZpZWQgYWdhaW4gYnkgRmlsaXAgUGl6bG8sIDIwMDMsIDIwMDQsIDIwMDUs
IHRvIGJlCisgKiBpbmNvcnBvcmF0ZWQgaW50byB0c2YuICovCisvKiB0aGlzIGZpbGUgaGFzIGJl
ZW4gbW9kaWZpZWQgYnkgRmlsaXAgUGl6bG8sIDIwMDIsIHRvIHN1cHBvcnQgQysrICovCisvKiBU
aGlzIGlzIGEgcHVibGljIGRvbWFpbiBnZW5lcmFsIHB1cnBvc2UgaGFzaCB0YWJsZSBwYWNrYWdl
IHdyaXR0ZW4gYnkgUGV0ZXIgTW9vcmUgQCBVQ0IuICovCisKKy8qIEZJWE1FOiBtYWtlIHRoaXMg
Y29kZSBjaGVjayBmb3Igb3V0LW9mLW1lbW9yeSBlcnJvcnMgYW5kIGRvIHRoZQorICogcmlnaHQg
dGhpbmcsIHdoaWNoIHNob3VsZCBpbmNsdWRlIHVzaW5nIHRzZl9zZXRfZXJyb3IoKSBhbmQgZnJp
ZW5kcy4gKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisKKyNpZmRlZiBOVAorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2VuZGlmCisKKyNkZWZpbmUgVFNG
X1NUX0RFRkFVTFRfTUFYX0RFTlNJVFkgNQorI2RlZmluZSBUU0ZfU1RfREVGQVVMVF9JTklUX1RB
QkxFX1NJWkUgMTEKKworICAgIC8qCisgICAgICogREVGQVVMVF9NQVhfREVOU0lUWSBpcyB0aGUg
ZGVmYXVsdCBmb3IgdGhlIGxhcmdlc3Qgd2UgYWxsb3cgdGhlCisgICAgICogYXZlcmFnZSBudW1i
ZXIgb2YgaXRlbXMgcGVyIGJpbiBiZWZvcmUgaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mCisgICAg
ICogYmlucworICAgICAqCisgICAgICogREVGQVVMVF9JTklUX1RBQkxFX1NJWkUgaXMgdGhlIGRl
ZmF1bHQgZm9yIHRoZSBudW1iZXIgb2YgYmlucworICAgICAqIGFsbG9jYXRlZCBpbml0aWFsbHkK
KyAgICAgKgorICAgICAqLworCitzdGF0aWMgaW50IG51bWNtcCgpOworc3RhdGljIGludCBudW1o
YXNoKCk7CitzdGF0aWMgc3RydWN0IHRzZl9zdF9oYXNoX3R5cGUgdHlwZV9udW1oYXNoID0gewor
ICAgIG51bWNtcCwKKyAgICBudW1oYXNoLAorfTsKKworc3RhdGljIGludCBwdHJjbXAoKTsKK3N0
YXRpYyBzdHJ1Y3QgdHNmX3N0X2hhc2hfdHlwZSB0eXBlX3B0cmhhc2ggPSB7CisgICAgcHRyY21w
LAorICAgIHRzZl9zdF9wdHJoYXNoLAorfTsKKworI3VuZGVmIHN0cmNtcAorZXh0ZXJuIGludCBz
dHJjbXAoKTsKK2ludCB0c2Zfc3Rfc3RyaGFzaCgpOworc3RhdGljIHN0cnVjdCB0c2Zfc3RfaGFz
aF90eXBlIHR5cGVfc3RyaGFzaCA9IHsKKyAgICBzdHJjbXAsCisgICAgdHNmX3N0X3N0cmhhc2gs
Cit9OworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZGVmaW5lIHhtYWxsb2MgbWFsbG9jCisjZGVm
aW5lIHhjYWxsb2MgY2FsbG9jCisjZGVmaW5lIHhyZWFsbG9jIHJlYWxsb2MKKyNkZWZpbmUgeGZy
ZWUgZnJlZQorCitzdGF0aWMgaW50IHJlaGFzaCgpOworCisjZGVmaW5lIGFsbG9jKHR5cGUpICh0
eXBlKil4bWFsbG9jKCh1bnNpZ25lZClzaXplb2YodHlwZSkpCisjZGVmaW5lIENhbGxvYyhuLHMp
IChjaGFyKil4Y2FsbG9jKChuKSwocykpCisKKyNkZWZpbmUgRVFVQUwodGFibGUseCx5KSAoKHgp
PT0oeSkgfHwgKCp0YWJsZS0+dHlwZS0+Y29tcGFyZSkoKHgpLCh5KSkgPT0gMCkKKworI2RlZmlu
ZSBkb19oYXNoKGtleSx0YWJsZSkgKHVuc2lnbmVkIGludCkoKih0YWJsZSktPnR5cGUtPmhhc2gp
KChrZXkpKQorI2RlZmluZSBkb19oYXNoX2JpbihrZXksdGFibGUpIChkb19oYXNoKGtleSwgdGFi
bGUpJih0YWJsZSktPm51bV9iaW5zKQorCisvKgorICogTUlOU0laRSBpcyB0aGUgbWluaW11bSBz
aXplIG9mIGEgZGljdGlvbmFyeS4KKyAqLworCisjZGVmaW5lIE1JTlNJWkUgOAorCitzdGF0aWMg
aW50CituZXdfc2l6ZShzaXplKQorICAgIGludCBzaXplOworeworICAgIGludCBpOworCisgICAg
Zm9yIChpPTM7IGk8MzE7IGkrKykgeworICAgICAgICBpZiAoKDE8PGkpID4gc2l6ZSkgcmV0dXJu
IDE8PGk7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKworI2lmZGVmIEhBU0hfTE9HCitzdGF0
aWMgaW50IGNvbGxpc2lvbiA9IDA7CitzdGF0aWMgaW50IGluaXRfc3QgPSAwOworCitzdGF0aWMg
dm9pZAorc3RhdF9jb2woKQoreworICAgIEZJTEUgKmYgPSBmb3BlbigiL3RtcC9jb2wiLCAidyIp
OworICAgIGZwcmludGYoZiwgImNvbGxpc2lvbjogJWRcbiIsIGNvbGxpc2lvbik7CisgICAgZmNs
b3NlKGYpOworfQorI2VuZGlmCisKK3RzZl9zdF90YWJsZSoKK3RzZl9zdF9pbml0X3RhYmxlX3dp
dGhfc2l6ZSh0eXBlLCBzaXplKQorICAgIHN0cnVjdCB0c2Zfc3RfaGFzaF90eXBlICp0eXBlOwor
ICAgIGludCBzaXplOworeworICAgIHRzZl9zdF90YWJsZSAqdGJsOworCisjaWZkZWYgSEFTSF9M
T0cKKyAgICBpZiAoaW5pdF9zdCA9PSAwKSB7CisgICAgICAgIGluaXRfc3QgPSAxOworICAgICAg
ICBhdGV4aXQoc3RhdF9jb2wpOworICAgIH0KKyNlbmRpZgorCisgICAgc2l6ZSA9IG5ld19zaXpl
KHNpemUpOyAgICAgIC8qIHJvdW5kIHVwIHRvIHByaW1lIG51bWJlciAqLworCisgICAgdGJsID0g
YWxsb2ModHNmX3N0X3RhYmxlKTsKKyAgICBpZiAodGJsPT1OVUxMKSB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKyAgICB0YmwtPnR5cGUgPSB0eXBlOworICAgIHRibC0+bnVtX2VudHJp
ZXMgPSAwOworICAgIHRibC0+bnVtX2JpbnMgPSBzaXplLTE7CisgICAgdGJsLT5iaW5zID0gKHRz
Zl9zdF90YWJsZV9lbnRyeSAqKilDYWxsb2Moc2l6ZSwgc2l6ZW9mKHRzZl9zdF90YWJsZV9lbnRy
eSopKTsKKyAgICBpZiAodGJsLT5iaW5zPT1OVUxMKSB7CisgICAgICAgIGZyZWUodGJsKTsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHRibDsKK30KKwordHNmX3N0
X3RhYmxlKgordHNmX3N0X2luaXRfdGFibGUodHlwZSkKKyAgICBzdHJ1Y3QgdHNmX3N0X2hhc2hf
dHlwZSAqdHlwZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXplKHR5
cGUsIDApOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9udW10YWJsZSgpCit7Cisg
ICAgcmV0dXJuIHRzZl9zdF9pbml0X3RhYmxlKCZ0eXBlX251bWhhc2gpOworfQorCit0c2Zfc3Rf
dGFibGUqCit0c2Zfc3RfaW5pdF9udW10YWJsZV93aXRoX3NpemUoc2l6ZSkKKyAgICBpbnQgc2l6
ZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXplKCZ0eXBlX251bWhh
c2gsIHNpemUpOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9wdHJ0YWJsZSgpCit7
CisgICAgcmV0dXJuIHRzZl9zdF9pbml0X3RhYmxlKCZ0eXBlX3B0cmhhc2gpOworfQorCit0c2Zf
c3RfdGFibGUqCit0c2Zfc3RfaW5pdF9wdHJ0YWJsZV93aXRoX3NpemUoc2l6ZSkKKyAgICBpbnQg
c2l6ZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXplKCZ0eXBlX3B0
cmhhc2gsIHNpemUpOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9zdHJ0YWJsZSgp
Cit7CisgICAgcmV0dXJuIHRzZl9zdF9pbml0X3RhYmxlKCZ0eXBlX3N0cmhhc2gpOworfQorCit0
c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9zdHJ0YWJsZV93aXRoX3NpemUoc2l6ZSkKKyAgICBp
bnQgc2l6ZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXplKCZ0eXBl
X3N0cmhhc2gsIHNpemUpOworfQorCit2b2lkCit0c2Zfc3RfZnJlZV90YWJsZSh0YWJsZSkKKyAg
ICB0c2Zfc3RfdGFibGUgKnRhYmxlOworeworICAgIHJlZ2lzdGVyIHRzZl9zdF90YWJsZV9lbnRy
eSAqcHRyLCAqbmV4dDsKKyAgICBpbnQgaTsKKworICAgIGZvcihpID0gMDsgaSA8PSB0YWJsZS0+
bnVtX2JpbnM7IGkrKykgeworICAgICAgICBwdHIgPSB0YWJsZS0+Ymluc1tpXTsKKyAgICAgICAg
d2hpbGUgKHB0ciAhPSAwKSB7CisgICAgICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OworICAgICAg
ICAgICAgZnJlZShwdHIpOworICAgICAgICAgICAgcHRyID0gbmV4dDsKKyAgICAgICAgfQorICAg
IH0KKyAgICBmcmVlKHRhYmxlLT5iaW5zKTsKKyAgICBmcmVlKHRhYmxlKTsKK30KKworI2RlZmlu
ZSBQVFJfTk9UX0VRVUFMKHRhYmxlLCBwdHIsIGhhc2hfdmFsLCBrZXkpIFwKKygocHRyKSAhPSAw
ICYmIChwdHItPmhhc2ggIT0gKGhhc2hfdmFsKSB8fCAhRVFVQUwoKHRhYmxlKSwgKGtleSksIChw
dHIpLT5rZXkpKSkKKworI2lmZGVmIEhBU0hfTE9HCisjZGVmaW5lIENPTExJU0lPTiBjb2xsaXNp
b24rKworI2Vsc2UKKyNkZWZpbmUgQ09MTElTSU9OCisjZW5kaWYKKworI2RlZmluZSBGSU5EX0VO
VFJZKHRhYmxlLCBwdHIsIGhhc2hfdmFsLCBiaW5fcG9zKSBcCitiaW5fcG9zID0gaGFzaF92YWwm
KHRhYmxlKS0+bnVtX2JpbnM7XAorcHRyID0gKHRhYmxlKS0+Ymluc1tiaW5fcG9zXTtcCitpZiAo
UFRSX05PVF9FUVVBTCh0YWJsZSwgcHRyLCBoYXNoX3ZhbCwga2V5KSkge1wKKyAgICBDT0xMSVNJ
T047XAorICAgIHdoaWxlIChQVFJfTk9UX0VRVUFMKHRhYmxlLCBwdHItPm5leHQsIGhhc2hfdmFs
LCBrZXkpKSB7XAorICAgICAgICBwdHIgPSBwdHItPm5leHQ7XAorICAgIH1cCisgICAgcHRyID0g
cHRyLT5uZXh0O1wKK30KKworaW50Cit0c2Zfc3RfbG9va3VwKHRhYmxlLCBrZXksIHZhbHVlKQor
ICAgIHRzZl9zdF90YWJsZSAqdGFibGU7CisgICAgcmVnaXN0ZXIgY2hhciAqa2V5OworICAgIHZv
aWQgKip2YWx1ZTsKK3sKKyAgICB1bnNpZ25lZCBpbnQgaGFzaF92YWwsIGJpbl9wb3M7CisgICAg
cmVnaXN0ZXIgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHI7CisKKyAgICBoYXNoX3ZhbCA9IGRvX2hh
c2goa2V5LCB0YWJsZSk7CisgICAgRklORF9FTlRSWSh0YWJsZSwgcHRyLCBoYXNoX3ZhbCwgYmlu
X3Bvcyk7CisKKyAgICBpZiAocHRyID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICE9IDApICAqdmFsdWUgPSBwdHItPnJlY29yZDsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisjZGVmaW5lIEFERF9ESVJFQ1QodGFibGUsIGtl
eSwgdmFsdWUsIGhhc2hfdmFsLCBiaW5fcG9zKVwKK3tcCisgICAgdHNmX3N0X3RhYmxlX2VudHJ5
ICplbnRyeTtcCisgICAgaWYgKHRhYmxlLT5udW1fZW50cmllcy8odGFibGUtPm51bV9iaW5zKzEp
ID4gVFNGX1NUX0RFRkFVTFRfTUFYX0RFTlNJVFkpIHtcCisgICAgICAgIGlmIChyZWhhc2godGFi
bGUpPDApIHtcCisgICAgICAgICAgICByZXR1cm4gLTE7XAorICAgICAgICB9XAorICAgICAgICBi
aW5fcG9zID0gaGFzaF92YWwgJiB0YWJsZS0+bnVtX2JpbnM7XAorICAgIH1cCisgICAgXAorICAg
IGVudHJ5ID0gYWxsb2ModHNmX3N0X3RhYmxlX2VudHJ5KTtcCisgICAgaWYgKGVudHJ5PT1OVUxM
KSB7XAorICAgICAgICByZXR1cm4gLTE7XAorICAgIH1cCisgICAgXAorICAgIGVudHJ5LT5oYXNo
ID0gaGFzaF92YWw7XAorICAgIGVudHJ5LT5rZXkgPSBrZXk7XAorICAgIGVudHJ5LT5yZWNvcmQg
PSB2YWx1ZTtcCisgICAgZW50cnktPm5leHQgPSB0YWJsZS0+Ymluc1tiaW5fcG9zXTtcCisgICAg
dGFibGUtPmJpbnNbYmluX3Bvc10gPSBlbnRyeTtcCisgICAgdGFibGUtPm51bV9lbnRyaWVzKys7
XAorfQorCisvKiBtYWtlIHRoaXMgZnVuY3Rpb24gcmV0dXJuIC0xIG9uIGVycm9yISAqLworaW50
Cit0c2Zfc3RfaW5zZXJ0KHRhYmxlLCBrZXksIHZhbHVlKQorICAgIHJlZ2lzdGVyIHRzZl9zdF90
YWJsZSAqdGFibGU7CisgICAgcmVnaXN0ZXIgY2hhciAqa2V5OworICAgIHZvaWQgKnZhbHVlOwor
eworICAgIHVuc2lnbmVkIGludCBoYXNoX3ZhbCwgYmluX3BvczsKKyAgICByZWdpc3RlciB0c2Zf
c3RfdGFibGVfZW50cnkgKnB0cjsKKworICAgIGhhc2hfdmFsID0gZG9faGFzaChrZXksIHRhYmxl
KTsKKyAgICBGSU5EX0VOVFJZKHRhYmxlLCBwdHIsIGhhc2hfdmFsLCBiaW5fcG9zKTsKKworICAg
IGlmIChwdHIgPT0gMCkgeworICAgICAgICBBRERfRElSRUNUKHRhYmxlLCBrZXksIHZhbHVlLCBo
YXNoX3ZhbCwgYmluX3Bvcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHB0ci0+cmVjb3JkID0gdmFsdWU7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKwor
LyogbWFrZSB0aGlzIGZ1bmN0aW9uIHJldHVybiAtMSBvbiBlcnJvciEgKi8KK2ludAordHNmX3N0
X2luc2VydF9ub3JlcGxhY2UodGFibGUsIGtleSwgdmFsdWUpCisgICAgcmVnaXN0ZXIgdHNmX3N0
X3RhYmxlICp0YWJsZTsKKyAgICByZWdpc3RlciBjaGFyICprZXk7CisgICAgdm9pZCAqdmFsdWU7
Cit7CisgICAgdW5zaWduZWQgaW50IGhhc2hfdmFsLCBiaW5fcG9zOworICAgIHJlZ2lzdGVyIHRz
Zl9zdF90YWJsZV9lbnRyeSAqcHRyOworCisgICAgaGFzaF92YWwgPSBkb19oYXNoKGtleSwgdGFi
bGUpOworICAgIEZJTkRfRU5UUlkodGFibGUsIHB0ciwgaGFzaF92YWwsIGJpbl9wb3MpOworCisg
ICAgaWYgKHB0ciA9PSAwKSB7CisgICAgICAgIEFERF9ESVJFQ1QodGFibGUsIGtleSwgdmFsdWUs
IGhhc2hfdmFsLCBiaW5fcG9zKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisvKiBtYWtlIHRoaXMgZnVuY3Rpb24gcmV0dXJu
IC0xIG9uIGVycm9yISAqLworaW50Cit0c2Zfc3RfYWRkX2RpcmVjdCh0YWJsZSwga2V5LCB2YWx1
ZSkKKyAgICB0c2Zfc3RfdGFibGUgKnRhYmxlOworICAgIGNoYXIgKmtleTsKKyAgICB2b2lkICp2
YWx1ZTsKK3sKKyAgICB1bnNpZ25lZCBpbnQgaGFzaF92YWwsIGJpbl9wb3M7CisKKyAgICBoYXNo
X3ZhbCA9IGRvX2hhc2goa2V5LCB0YWJsZSk7CisgICAgYmluX3BvcyA9IGhhc2hfdmFsICYgdGFi
bGUtPm51bV9iaW5zOworICAgIEFERF9ESVJFQ1QodGFibGUsIGtleSwgdmFsdWUsIGhhc2hfdmFs
LCBiaW5fcG9zKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorcmVoYXNo
KHRhYmxlKQorICAgIHJlZ2lzdGVyIHRzZl9zdF90YWJsZSAqdGFibGU7Cit7CisgICAgcmVnaXN0
ZXIgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHIsICpuZXh0LCAqKm5ld19iaW5zOworICAgIGludCBp
LCBvbGRfbnVtX2JpbnMgPSB0YWJsZS0+bnVtX2JpbnMsIG5ld19udW1fYmluczsKKyAgICB1bnNp
Z25lZCBpbnQgaGFzaF92YWw7CisKKyAgICBuZXdfbnVtX2JpbnMgPSBuZXdfc2l6ZShvbGRfbnVt
X2JpbnMrMSk7CisgICAgbmV3X2JpbnMgPSAodHNmX3N0X3RhYmxlX2VudHJ5KiopQ2FsbG9jKG5l
d19udW1fYmlucywgc2l6ZW9mKHRzZl9zdF90YWJsZV9lbnRyeSopKTsKKyAgICBpZiAobmV3X2Jp
bnM9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG5ld19udW1fYmlu
cy0tOworICAgIGZvcihpID0gMDsgaSA8PSBvbGRfbnVtX2JpbnM7IGkrKykgeworICAgICAgICBw
dHIgPSB0YWJsZS0+Ymluc1tpXTsKKyAgICAgICAgd2hpbGUgKHB0ciAhPSAwKSB7CisgICAgICAg
ICAgICBuZXh0ID0gcHRyLT5uZXh0OworICAgICAgICAgICAgaGFzaF92YWwgPSBwdHItPmhhc2gg
JiBuZXdfbnVtX2JpbnM7CisgICAgICAgICAgICBwdHItPm5leHQgPSBuZXdfYmluc1toYXNoX3Zh
bF07CisgICAgICAgICAgICBuZXdfYmluc1toYXNoX3ZhbF0gPSBwdHI7CisgICAgICAgICAgICBw
dHIgPSBuZXh0OworICAgICAgICB9CisgICAgfQorICAgIGZyZWUodGFibGUtPmJpbnMpOworICAg
IHRhYmxlLT5udW1fYmlucyA9IG5ld19udW1fYmluczsKKyAgICB0YWJsZS0+YmlucyA9IG5ld19i
aW5zOworICAgIAorICAgIHJldHVybiAwOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfY29w
eShvbGRfdGFibGUpCisgICAgdHNmX3N0X3RhYmxlICpvbGRfdGFibGU7Cit7CisgICAgdHNmX3N0
X3RhYmxlICpuZXdfdGFibGU7CisgICAgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHIsICplbnRyeTsK
KyAgICBpbnQgaSwgbnVtX2JpbnMgPSBvbGRfdGFibGUtPm51bV9iaW5zKzE7CisKKyAgICBuZXdf
dGFibGUgPSBhbGxvYyh0c2Zfc3RfdGFibGUpOworICAgIGlmIChuZXdfdGFibGUgPT0gTlVMTCkg
eworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAqbmV3X3RhYmxlID0gKm9sZF90
YWJsZTsKKyAgICBuZXdfdGFibGUtPmJpbnMgPSAodHNmX3N0X3RhYmxlX2VudHJ5KiopCisgICAg
ICAgIENhbGxvYygodW5zaWduZWQpbnVtX2JpbnMsIHNpemVvZih0c2Zfc3RfdGFibGVfZW50cnkq
KSk7CisKKyAgICBpZiAobmV3X3RhYmxlLT5iaW5zID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShu
ZXdfdGFibGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IoaSA9IDA7
IGkgPCBudW1fYmluczsgaSsrKSB7CisgICAgICAgIG5ld190YWJsZS0+Ymluc1tpXSA9IDA7Cisg
ICAgICAgIHB0ciA9IG9sZF90YWJsZS0+Ymluc1tpXTsKKyAgICAgICAgd2hpbGUgKHB0ciAhPSAw
KSB7CisgICAgICAgICAgICBlbnRyeSA9IGFsbG9jKHRzZl9zdF90YWJsZV9lbnRyeSk7CisgICAg
ICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWUobmV3X3Rh
YmxlLT5iaW5zKTsKKyAgICAgICAgICAgICAgICBmcmVlKG5ld190YWJsZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqZW50cnkgPSAq
cHRyOworICAgICAgICAgICAgZW50cnktPm5leHQgPSBuZXdfdGFibGUtPmJpbnNbaV07CisgICAg
ICAgICAgICBuZXdfdGFibGUtPmJpbnNbaV0gPSBlbnRyeTsKKyAgICAgICAgICAgIHB0ciA9IHB0
ci0+bmV4dDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbmV3X3RhYmxlOworfQorCitp
bnQKK3RzZl9zdF9kZWxldGUodGFibGUsIGtleSwgdmFsdWUpCisgICAgcmVnaXN0ZXIgdHNmX3N0
X3RhYmxlICp0YWJsZTsKKyAgICByZWdpc3RlciBjaGFyICoqa2V5OworICAgIHZvaWQgKip2YWx1
ZTsKK3sKKyAgICB1bnNpZ25lZCBpbnQgaGFzaF92YWw7CisgICAgdHNmX3N0X3RhYmxlX2VudHJ5
ICp0bXA7CisgICAgcmVnaXN0ZXIgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHI7CisKKyAgICBoYXNo
X3ZhbCA9IGRvX2hhc2hfYmluKCprZXksIHRhYmxlKTsKKyAgICBwdHIgPSB0YWJsZS0+Ymluc1to
YXNoX3ZhbF07CisKKyAgICBpZiAocHRyID09IDApIHsKKyAgICAgICAgaWYgKHZhbHVlICE9IDAp
ICp2YWx1ZSA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChFUVVBTCh0
YWJsZSwgKmtleSwgcHRyLT5rZXkpKSB7CisgICAgICAgIHRhYmxlLT5iaW5zW2hhc2hfdmFsXSA9
IHB0ci0+bmV4dDsKKyAgICAgICAgdGFibGUtPm51bV9lbnRyaWVzLS07CisgICAgICAgIGlmICh2
YWx1ZSAhPSAwKSAqdmFsdWUgPSBwdHItPnJlY29yZDsKKyAgICAgICAgKmtleSA9IHB0ci0+a2V5
OworICAgICAgICBmcmVlKHB0cik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGZv
cig7IHB0ci0+bmV4dCAhPSAwOyBwdHIgPSBwdHItPm5leHQpIHsKKyAgICAgICAgaWYgKEVRVUFM
KHRhYmxlLCBwdHItPm5leHQtPmtleSwgKmtleSkpIHsKKyAgICAgICAgICAgIHRtcCA9IHB0ci0+
bmV4dDsKKyAgICAgICAgICAgIHB0ci0+bmV4dCA9IHB0ci0+bmV4dC0+bmV4dDsKKyAgICAgICAg
ICAgIHRhYmxlLT5udW1fZW50cmllcy0tOworICAgICAgICAgICAgaWYgKHZhbHVlICE9IDApICp2
YWx1ZSA9IHRtcC0+cmVjb3JkOworICAgICAgICAgICAgKmtleSA9IHRtcC0+a2V5OworICAgICAg
ICAgICAgZnJlZSh0bXApOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKworaW50Cit0c2Zfc3RfZGVsZXRlX3NhZmUodGFibGUsIGtl
eSwgdmFsdWUsIG5ldmVyKQorICAgIHJlZ2lzdGVyIHRzZl9zdF90YWJsZSAqdGFibGU7CisgICAg
cmVnaXN0ZXIgY2hhciAqKmtleTsKKyAgICB2b2lkICoqdmFsdWU7CisgICAgY2hhciAqbmV2ZXI7
Cit7CisgICAgdW5zaWduZWQgaW50IGhhc2hfdmFsOworICAgIHJlZ2lzdGVyIHRzZl9zdF90YWJs
ZV9lbnRyeSAqcHRyOworCisgICAgaGFzaF92YWwgPSBkb19oYXNoX2Jpbigqa2V5LCB0YWJsZSk7
CisgICAgcHRyID0gdGFibGUtPmJpbnNbaGFzaF92YWxdOworCisgICAgaWYgKHB0ciA9PSAwKSB7
CisgICAgICAgIGlmICh2YWx1ZSAhPSAwKSAqdmFsdWUgPSAwOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBmb3IoOyBwdHIgIT0gMDsgcHRyID0gcHRyLT5uZXh0KSB7CisgICAgICAg
IGlmICgocHRyLT5rZXkgIT0gbmV2ZXIpICYmIEVRVUFMKHRhYmxlLCBwdHItPmtleSwgKmtleSkp
IHsKKyAgICAgICAgICAgIHRhYmxlLT5udW1fZW50cmllcy0tOworICAgICAgICAgICAgKmtleSA9
IHB0ci0+a2V5OworICAgICAgICAgICAgaWYgKHZhbHVlICE9IDApICp2YWx1ZSA9IHB0ci0+cmVj
b3JkOworICAgICAgICAgICAgcHRyLT5rZXkgPSBwdHItPnJlY29yZCA9IG5ldmVyOworICAgICAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIGludAorZGVsZXRlX25ldmVyKGtleSwgdmFsdWUsIG5ldmVyKQorICAgIGNoYXIgKmtl
eSwgKm5ldmVyOworICAgIHZvaWQgKnZhbHVlOworeworICAgIGlmICh2YWx1ZSA9PSBuZXZlcikg
cmV0dXJuIFRTRl9TVF9ERUxFVEU7CisgICAgcmV0dXJuIFRTRl9TVF9DT05USU5VRTsKK30KKwor
dm9pZAordHNmX3N0X2NsZWFudXBfc2FmZSh0YWJsZSwgbmV2ZXIpCisgICAgdHNmX3N0X3RhYmxl
ICp0YWJsZTsKKyAgICBjaGFyICpuZXZlcjsKK3sKKyAgICBpbnQgbnVtX2VudHJpZXMgPSB0YWJs
ZS0+bnVtX2VudHJpZXM7CisKKyAgICB0c2Zfc3RfZm9yZWFjaCh0YWJsZSwgKHRzZl9zdF9mdW5j
X3QpZGVsZXRlX25ldmVyLCBuZXZlcik7CisgICAgdGFibGUtPm51bV9lbnRyaWVzID0gbnVtX2Vu
dHJpZXM7Cit9CisKK3ZvaWQKK3RzZl9zdF9mb3JlYWNoKHRhYmxlLCBmdW5jLCBhcmcpCisgICAg
dHNmX3N0X3RhYmxlICp0YWJsZTsKKyAgICB0c2Zfc3RfZnVuY190IGZ1bmM7CisgICAgdm9pZCAq
YXJnOworeworICAgIHRzZl9zdF90YWJsZV9lbnRyeSAqcHRyLCAqbGFzdCwgKnRtcDsKKyAgICBl
bnVtIHRzZl9zdF9yZXR2YWwgcmV0dmFsOworICAgIGludCBpOworCisgICAgZm9yKGkgPSAwOyBp
IDw9IHRhYmxlLT5udW1fYmluczsgaSsrKSB7CisgICAgICAgIGxhc3QgPSAwOworICAgICAgICBm
b3IocHRyID0gdGFibGUtPmJpbnNbaV07IHB0ciAhPSAwOykgeworICAgICAgICAgICAgcmV0dmFs
ID0gKCpmdW5jKShwdHItPmtleSwgcHRyLT5yZWNvcmQsIGFyZyk7CisgICAgICAgICAgICBzd2l0
Y2ggKHJldHZhbCkgeworICAgICAgICAgICAgY2FzZSBUU0ZfU1RfQ09OVElOVUU6CisgICAgICAg
ICAgICAgICAgbGFzdCA9IHB0cjsKKyAgICAgICAgICAgICAgICBwdHIgPSBwdHItPm5leHQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRTRl9TVF9TVE9QOgorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgVFNGX1NUX0RFTEVURToKKyAg
ICAgICAgICAgICAgICB0bXAgPSBwdHI7CisgICAgICAgICAgICAgICAgaWYgKGxhc3QgPT0gMCkg
eworICAgICAgICAgICAgICAgICAgICB0YWJsZS0+Ymluc1tpXSA9IHB0ci0+bmV4dDsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsYXN0LT5uZXh0ID0gcHRy
LT5uZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdHIgPSBwdHItPm5l
eHQ7CisgICAgICAgICAgICAgICAgZnJlZSh0bXApOworICAgICAgICAgICAgICAgIHRhYmxlLT5u
dW1fZW50cmllcy0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IHRzZl9zdF9pdGVyYXRvcl9pbml0KHRzZl9zdF90YWJsZSAqdGFibGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9zdF9pdGVyYXRvciAqaXRlcikgeworICAgIGl0ZXItPnRhYmxlPXRh
YmxlOworICAgIGl0ZXItPmk9MDsKKyAgICBpdGVyLT5wdHI9TlVMTDsKKyAgICB0c2Zfc3RfaXRl
cmF0b3JfbmV4dChpdGVyKTsKK30KKwordm9pZCB0c2Zfc3RfaXRlcmF0b3JfZ2V0KHRzZl9zdF9p
dGVyYXRvciAqaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqa2V5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSkgeworICAgIGlmIChrZXkhPU5VTEwp
IHsKKyAgICAgICAgKmtleT1pdGVyLT5wdHItPmtleTsKKyAgICB9CisgICAgaWYgKHZhbHVlIT1O
VUxMKSB7CisgICAgICAgICp2YWx1ZT1pdGVyLT5wdHItPnJlY29yZDsKKyAgICB9Cit9CisKK3Zv
aWQgdHNmX3N0X2l0ZXJhdG9yX25leHQodHNmX3N0X2l0ZXJhdG9yICppdGVyKSB7CisgICAgaWYg
KGl0ZXItPnB0ciE9TlVMTCkgeworICAgICAgICBpdGVyLT5wdHI9aXRlci0+cHRyLT5uZXh0Owor
ICAgIH0KKyAgICBpZiAoaXRlci0+cHRyPT1OVUxMKSB7CisgICAgICAgIGZvciAoO2l0ZXItPnB0
cj09TlVMTCAmJiBpdGVyLT5pPD1pdGVyLT50YWJsZS0+bnVtX2JpbnM7CisgICAgICAgICAgICAg
KytpdGVyLT5pKSB7CisgICAgICAgICAgICBpdGVyLT5wdHI9aXRlci0+dGFibGUtPmJpbnNbaXRl
ci0+aV07CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ludCB0c2Zfc3RfaXRlcmF0b3JfdmFsaWQo
dHNmX3N0X2l0ZXJhdG9yICppdGVyKSB7CisgICAgcmV0dXJuIGl0ZXItPnB0ciE9TlVMTDsKK30K
KworaW50IHRzZl9zdF9zdHJoYXNoKHN0cmluZykKKyAgICByZWdpc3RlciBjaGFyICpzdHJpbmc7
Cit7CisgICAgcmVnaXN0ZXIgaW50IGM7CisKKyNpZmRlZiBIQVNIX0VMRkhBU0gKKyAgICByZWdp
c3RlciB1bnNpZ25lZCBpbnQgaCA9IDAsIGc7CisKKyAgICB3aGlsZSAoKGMgPSAqc3RyaW5nKysp
ICE9ICdcMCcpIHsKKyAgICAgICAgaCA9ICggaCA8PCA0ICkgKyBjOworICAgICAgICBpZiAoIGcg
PSBoICYgMHhGMDAwMDAwMCApCisgICAgICAgICAgICBoIF49IGcgPj4gMjQ7CisgICAgICAgIGgg
Jj0gfmc7CisgICAgfQorICAgIHJldHVybiBoOworI2VsaWYgSEFTSF9QRVJMCisgICAgcmVnaXN0
ZXIgaW50IHZhbCA9IDA7CisKKyAgICB3aGlsZSAoKGMgPSAqc3RyaW5nKyspICE9ICdcMCcpIHsK
KyAgICAgICAgdmFsID0gdmFsKjMzICsgYzsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsICsgKHZh
bD4+NSk7CisjZWxzZQorICAgIHJlZ2lzdGVyIGludCB2YWwgPSAwOworCisgICAgd2hpbGUgKChj
ID0gKnN0cmluZysrKSAhPSAnXDAnKSB7CisgICAgICAgIHZhbCA9IHZhbCo5OTcgKyBjOworICAg
IH0KKworICAgIHJldHVybiB2YWwgKyAodmFsPj41KTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50
CitudW1jbXAoeCwgeSkKKyAgICBsb25nIHgsIHk7Cit7CisgICAgcmV0dXJuIHggIT0geTsKK30K
Kworc3RhdGljIGludAorbnVtaGFzaChuKQorICAgIGxvbmcgbjsKK3sKKyAgICByZXR1cm4gbjsK
K30KKworc3RhdGljIGludCBwdHJjbXAodm9pZCAqeCwgdm9pZCAqeSkgeworICAgIHJldHVybiB4
ICE9IHk7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2Zfc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvdHNmX3N0LmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0y
L3dhc20vdHNmL3RzZl9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKiB0
aGlzIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgYWdhaW4gYnkgRmlsaXAgUGl6bG8sIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMTUsIHRvIGJlCisgKiBpbmNvcnBvcmF0ZWQgaW50byB0c2YuICovCisvKiB0
aGlzIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgYnkgRmlsaXAgUGl6bG8sIDIwMDIsIHRvIHN1cHBv
cnQgQysrICovCisvKiBUaGlzIGlzIGEgcHVibGljIGRvbWFpbiBnZW5lcmFsIHB1cnBvc2UgaGFz
aCB0YWJsZSBwYWNrYWdlIHdyaXR0ZW4gYnkgUGV0ZXIgTW9vcmUgQCBVQ0IuICovCisKKy8qIEAo
Iykgc3QuaCA1LjEgODkvMTIvMTQgKi8KKworI2lmbmRlZiBUU0ZfU1RfSU5DTFVERUQKKworI2Rl
ZmluZSBUU0ZfU1RfSU5DTFVERUQKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsK
KyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB0c2Zfc3RfdGFibGUgdHNmX3N0X3RhYmxlOwordHlw
ZWRlZiBzdHJ1Y3QgdHNmX3N0X2l0ZXJhdG9yIHRzZl9zdF9pdGVyYXRvcjsKKworc3RydWN0IHRz
Zl9zdF9oYXNoX3R5cGUgeworICAgIGludCAoKmNvbXBhcmUpKCk7CisgICAgaW50ICgqaGFzaCko
KTsKK307CisKK3R5cGVkZWYgc3RydWN0IHRzZl9zdF90YWJsZV9lbnRyeSB0c2Zfc3RfdGFibGVf
ZW50cnk7CisKK3N0cnVjdCB0c2Zfc3RfdGFibGVfZW50cnkgeworICAgIHVuc2lnbmVkIGludCBo
YXNoOworICAgIGNoYXIgKmtleTsKKyAgICB2b2lkICpyZWNvcmQ7CisgICAgdHNmX3N0X3RhYmxl
X2VudHJ5ICpuZXh0OworfTsKKworc3RydWN0IHRzZl9zdF90YWJsZSB7CisgICAgc3RydWN0IHRz
Zl9zdF9oYXNoX3R5cGUgKnR5cGU7CisgICAgaW50IG51bV9iaW5zOworICAgIGludCBudW1fZW50
cmllczsKKyAgICB0c2Zfc3RfdGFibGVfZW50cnkgKipiaW5zOworfTsKKworc3RydWN0IHRzZl9z
dF9pdGVyYXRvciB7CisgICAgdHNmX3N0X3RhYmxlICp0YWJsZTsKKyAgICBpbnQgaTsKKyAgICBz
dHJ1Y3QgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHI7Cit9OworCisjZGVmaW5lIHRzZl9zdF9pc19t
ZW1iZXIodGFibGUsa2V5KSB0c2Zfc3RfbG9va3VwKHRhYmxlLGtleSwoY2hhciAqKikwKQorCitl
bnVtIHRzZl9zdF9yZXR2YWwge1RTRl9TVF9DT05USU5VRSwgVFNGX1NUX1NUT1AsIFRTRl9TVF9E
RUxFVEV9OworCit0eXBlZGVmIGVudW0gdHNmX3N0X3JldHZhbCAoKnRzZl9zdF9mdW5jX3QpKHZv
aWQqLHZvaWQqLHZvaWQqKTsKKwordHNmX3N0X3RhYmxlICp0c2Zfc3RfaW5pdF90YWJsZShzdHJ1
Y3QgdHNmX3N0X2hhc2hfdHlwZSAqdHlwZSk7Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3Rh
YmxlX3dpdGhfc2l6ZShzdHJ1Y3QgdHNmX3N0X2hhc2hfdHlwZSAqdHlwZSxpbnQgc2l6ZSk7Cit0
c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X251bXRhYmxlKCk7Cit0c2Zfc3RfdGFibGUgKnRzZl9z
dF9pbml0X251bXRhYmxlX3dpdGhfc2l6ZShpbnQgc2l6ZSk7Cit0c2Zfc3RfdGFibGUgKnRzZl9z
dF9pbml0X3B0cnRhYmxlKCk7Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3B0cnRhYmxlX3dp
dGhfc2l6ZShpbnQgc2l6ZSk7Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3N0cnRhYmxlKCk7
Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3N0cnRhYmxlX3dpdGhfc2l6ZShpbnQgc2l6ZSk7
CitpbnQgICAgIHRzZl9zdF9kZWxldGUodHNmX3N0X3RhYmxlICp0YWJsZSxjaGFyICoqa2V5LHZv
aWQgKip2YWx1ZSksCisgICAgdHNmX3N0X2RlbGV0ZV9zYWZlKHRzZl9zdF90YWJsZSAqdGFibGUs
Y2hhciAqKmtleSwKKyAgICAgICAgdm9pZCAqKnZhbHVlLGNoYXIgKm5ldmVyKTsKK2ludCAgICAg
dHNmX3N0X2luc2VydCh0c2Zfc3RfdGFibGUgKnRhYmxlLGNoYXIgKmtleSx2b2lkICp2YWx1ZSks
CisgICAgdHNmX3N0X2luc2VydF9ub3JlcGxhY2UodHNmX3N0X3RhYmxlICp0YWJsZSxjaGFyICpr
ZXksdm9pZCAqdmFsdWUpLAorICAgIHRzZl9zdF9hZGRfZGlyZWN0KHRzZl9zdF90YWJsZSAqdGFi
bGUsY2hhciAqa2V5LHZvaWQgKnZhbHVlKSwKKyAgICB0c2Zfc3RfbG9va3VwKHRzZl9zdF90YWJs
ZSAqdGFibGUsY2hhciAqa2V5LHZvaWQgKip2YWx1ZSk7Cit2b2lkICAgIHRzZl9zdF9mb3JlYWNo
KHRzZl9zdF90YWJsZSAqdGFibGUsdHNmX3N0X2Z1bmNfdCBmdW5jLHZvaWQgKmFyZyksCisgICAg
dHNmX3N0X2ZyZWVfdGFibGUodHNmX3N0X3RhYmxlICp0YWJsZSksCisgICAgdHNmX3N0X2NsZWFu
dXBfc2FmZSh0c2Zfc3RfdGFibGUgKnRhYmxlLGNoYXIgKm5ldmVyKTsKK3RzZl9zdF90YWJsZSAq
dHNmX3N0X2NvcHkodHNmX3N0X3RhYmxlICpvbGRfdGFibGUpOwordm9pZCAgICB0c2Zfc3RfaXRl
cmF0b3JfaW5pdCh0c2Zfc3RfdGFibGUgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2Zfc3RfaXRlcmF0b3IgKml0ZXIpLAorICAgICAgICB0c2Zfc3RfaXRlcmF0b3JfZ2V0
KHRzZl9zdF9pdGVyYXRvciAqaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSksCisgICAg
ICAgIHRzZl9zdF9pdGVyYXRvcl9uZXh0KHRzZl9zdF9pdGVyYXRvciAqaXRlcik7CitpbnQgICAg
IHRzZl9zdF9pdGVyYXRvcl92YWxpZCh0c2Zfc3RfaXRlcmF0b3IgKml0ZXIpOworCitpbnQgdHNm
X3N0X3N0cmhhc2goKTsKKworc3RhdGljIFRTRl9pbmxpbmUgaW50IHRzZl9zdF9wdHJoYXNoKHZv
aWQqIHgpIHsKKyAgICBpbnRwdHJfdCB2YWx1ZSA9IChpbnRwdHJfdCl4OworICAgIHZhbHVlID4+
PSBzaXplb2Yodm9pZCopOworICAgIHZhbHVlICs9IHZhbHVlID4+IDEzOworICAgIGlmIChzaXpl
b2Yodm9pZCopID4gNCkKKyAgICAgICAgdmFsdWUgKz0gKHZhbHVlID4+IDMyKSAqIDc7CisgICAg
cmV0dXJuIChpbnQpdmFsdWU7Cit9CisKKy8qIGZhc3QgbG9va3VwIGZvciBwb2ludGVycy4gKi8K
K3N0YXRpYyBUU0ZfaW5saW5lCitpbnQgdHNmX3N0X2xvb2t1cF9wdHJ0YWJsZSh0c2Zfc3RfdGFi
bGUgKnRhYmxlLCB2b2lkICprZXksIHZvaWQgKip2YWx1ZSkgeworICAgIHVuc2lnbmVkIGludCBo
YXNoX3ZhbCwgYmluX3BvczsKKyAgICB0c2Zfc3RfdGFibGVfZW50cnkgKnB0cjsKKworICAgIGhh
c2hfdmFsID0gdHNmX3N0X3B0cmhhc2goa2V5KTsKKyAgICBiaW5fcG9zID0gaGFzaF92YWwmKHRh
YmxlKS0+bnVtX2JpbnM7CisgICAgcHRyID0gKHRhYmxlKS0+Ymluc1tiaW5fcG9zXTsKKyAgICBp
ZiAocHRyICYmIGtleSAhPSBwdHItPmtleSkgeworICAgICAgICB3aGlsZSAocHRyLT5uZXh0ICYm
IGtleSAhPSBwdHItPm5leHQtPmtleSkgeworICAgICAgICAgICAgcHRyID0gcHRyLT5uZXh0Owor
ICAgICAgICB9CisgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKKyAgICB9CisKKyAgICBpZiAocHRy
ID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHZh
bHVlICE9IDApICAqdmFsdWUgPSBwdHItPnJlY29yZDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
fQorfQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogVFNGX1NU
X0lOQ0xVREVEICovCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX3N0X3R5cGV0YWJsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2Zfc3RfdHlwZXRhYmxlLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zdF90eXBldGFibGUuYwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIEZpbGlw
IFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisKK3N0YXRpYyBpbnQg
dHNmX3R5cGVfY29tcGFyZV9hZGFwdG9yKHRzZl90eXBlX3QgKmEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICpiKSB7CisgICAgcmV0dXJuICF0c2ZfdHlw
ZV9jb21wYXJlKGEsYik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdHNmX3N0X2hhc2hfdHlwZSBoYXNo
X3R5cGUgPSB7CisgICAgdHNmX3R5cGVfY29tcGFyZV9hZGFwdG9yLAorICAgIHRzZl90eXBlX2dl
dF9oYXNoCit9OworCit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3R5cGV0YWJsZSgpIHsKKyAg
ICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGUoJmhhc2hfdHlwZSk7Cit9CisKSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc3RyZWFtX2ZpbGVfaW5wdXQuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3N0
cmVhbV9maWxlX2lucHV0LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3dhc20vdHNmL3RzZl9zdHJlYW1fZmlsZV9pbnB1dC5jCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisjaW5j
bHVkZSAidHNmX2Zvcm1hdC5oIgorI2luY2x1ZGUgInRzZl9zZXJpYWxfcHJvdG9jb2wuaCIKKwor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGli
Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworLyogdGhlIGdldCBtb2RlIGZ1bmN0aW9ucyBhcmUg
aGVyZSBmb3IgaGlzdG9yaWNhbCByZWFzb25zLiAgcmlnaHQgbm93IGFsbCBvZgorICogdGhlIGFj
dHVhbCBkZXRlY3Rpb24gd29yayBoYXBwZW5zIGluIHRoZSBhZGFwdGl2ZSByZWFkZXIuICovCisK
K3RzZl96aXBfbW9kZV90IHRzZl9zdHJlYW1fZmlsZV9nZXRfbW9kZV9mcm9tX2ZkKGludCBmZCkg
eworICAgIHVpbnQ4X3QgbWFnaWNbVFNGX1NQX01BR0lDX0xFTl07CisgICAgdWludDhfdCAqY3Vy
PW1hZ2ljOworICAgIAorICAgIHdoaWxlIChjdXI8bWFnaWMrVFNGX1NQX01BR0lDX0xFTikgewor
ICAgICAgICBpbnQgcmVzPXJlYWQoZmQsY3VyLG1hZ2ljK1RTRl9TUF9NQUdJQ19MRU4tY3VyKTsK
KyAgICAgICAgaWYgKHJlczwwKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJFcnJvciBy
ZWFkaW5nIG1hZ2ljIGNvZGUiKTsKKyAgICAgICAgICAgIHJldHVybiBUU0ZfWklQX1VOS05PV047
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcz09MCkgeworCSAgICBpZiAoY3VyPT1tYWdpYykg
eworCQl0c2Zfc2V0X2Vycm9yKFRTRl9FX0VPRiwKKwkJCSAgICAgICJFbmQgb2YgZmlsZSBiZWZv
cmUgbWFnaWMgY29kZSAoZmlsZSBlbXB0eSBvciBjb25uZWN0aW9uIGNsb3NlZCBwcmlvciB0byB0
aGUgdHJhbnNtaXNzaW9uIG9mIGFueSBUU0YgZGF0YSkiKTsKKwkgICAgfSBlbHNlIHsKKwkJdHNm
X3NldF9lcnJvcihUU0ZfRV9VTkVYUEVDVEVEX0VPRiwKKwkJCSAgICAgICJFbmQgb2YgZmlsZSBi
ZWZvcmUgZW5kIG9mIG1hZ2ljIGNvZGUiKTsKKwkgICAgfQorICAgICAgICAgICAgcmV0dXJuIFRT
Rl9aSVBfVU5LTk9XTjsKKyAgICAgICAgfQorICAgICAgICBjdXIrPXJlczsKKyAgICB9CisgICAg
CisgICAgaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX01BR0lDX0NPREUsVFNGX1NQX01BR0lDX0xF
TikpIHsKKyAgICAgICAgcmV0dXJuIFRTRl9aSVBfTk9ORTsKKyAgICB9IGVsc2UgaWYgKCFtZW1j
bXAobWFnaWMsVFNGX1NQX1pMSUJfTUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkgeworICAg
ICAgICByZXR1cm4gVFNGX1pJUF9aTElCOworICAgIH0gZWxzZSBpZiAoIW1lbWNtcChtYWdpYyxU
U0ZfU1BfQlpJUDJfTUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkgeworICAgICAgICByZXR1
cm4gVFNGX1pJUF9CWklQMjsKKyAgICB9CisgICAgCisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9Q
QVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICJOb3QgYSB2YWxpZCBtYWdpYyBjb2RlIGZv
ciBhbnkgVFNGIHN0cmVhbSBmaWxlIGZvcm1hdCIpOworICAgIHJldHVybiBUU0ZfWklQX1VOS05P
V047Cit9CisKK3RzZl96aXBfbW9kZV90IHRzZl9zdHJlYW1fZmlsZV9nZXRfbW9kZShjb25zdCBj
aGFyICpmaWxlbmFtZSkgeworICAgIGludCBmZD1vcGVuKGZpbGVuYW1lLE9fUkRPTkxZKTsKKyAg
ICB0c2ZfemlwX21vZGVfdCByZXN1bHQ7CisgICAgCisgICAgaWYgKGZkPDApIHsKKyAgICAgICAg
dHNmX3NldF9lcnJubygiQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRpbmciLAorICAgICAgICAg
ICAgICAgICAgICAgIGZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuIFRTRl9aSVBfVU5LTk9XTjsK
KyAgICB9CisgICAgCisgICAgcmVzdWx0PXRzZl9zdHJlYW1fZmlsZV9nZXRfbW9kZV9mcm9tX2Zk
KGZkKTsKKyAgICAKKyAgICBjbG9zZShmZCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKnRzZl9zdHJlYW1fZmlsZV9pbnB1dF9vcGVuKGNv
bnN0IGNoYXIgKmZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0
cikgeworICAgIGludCBmZDsKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqcmVzdWx0Owor
ICAgIAorICAgIGZkPW9wZW4oZmlsZW5hbWUsT19SRE9OTFkpOworICAgIGlmIChmZDwwKSB7Cisg
ICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkaW5nIiwKKyAg
ICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICByZXN1bHQ9dHNmX3N0cmVhbV9maWxlX2lucHV0X2ZkX29wZW4oZmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3RydWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDApOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAgICAgICAg
Y2xvc2UoZmQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKnRzZl9zdHJlYW1fZmlsZV9p
bnB1dF9mZF9vcGVuKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3Jkcl9hdHRy
X3QgKl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRzZl9ib29sX3Qga2VlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBidWZfc2l6ZSkgeworICAgIHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICpyZXQ7CisgICAgdHNmX3ppcF9yZHJfYXR0cl90IGF0dHI7Cisg
ICAgdHNmX3JlYWRlcl90IHJlYWRlcjsKKyAgICAKKyAgICBpZiAoX2F0dHI9PU5VTEwpIHsKKwl0
c2ZfemlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KCZhdHRyKTsKKyAgICB9IGVsc2UgeworCWF0dHI9
Kl9hdHRyOworICAgIH0KKyAgICAKKyAgICBpZiAoYnVmX3NpemU9PTApIHsKKyAgICAgICAgYnVm
X3NpemU9VFNGX0RFRl9CVUZfU0laRTsKKyAgICB9CisKKyAgICByZXQ9bWFsbG9jKHNpemVvZih0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAgICAg
dHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCIp
OworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT5mZD1mZDsKKyAg
ICByZXQtPmtlZXBfZmQ9a2VlcDsKKyAgICAKKyAgICBpZiAodHNmX3ppcF9yZHJfYXR0cl9pc19u
b3ppcCgmYXR0cikpIHsKKyAgICAgICAgcmV0LT51c2VfYWRwdD10c2ZfZmFsc2U7CisgICAgICAg
IHJldC0+cmVhZGVyLmJ1Zj10c2ZfYnVmX3JlYWRlcl9jcmVhdGUocmV0LT5mZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfZmFsc2UpOworICAgICAg
ICByZWFkZXI9dHNmX2J1Zl9yZWFkZXJfcmVhZDsKKyAgICB9IGVsc2UgeworCXJldC0+dXNlX2Fk
cHQ9dHNmX3RydWU7CisJcmV0LT5yZWFkZXIuYWRwdD10c2ZfYWRhcHRpdmVfcmVhZGVyX2NyZWF0
ZSh0c2ZfZmRfcGFydGlhbF9yZWFkZXIsCisJCQkJCQkgICAgJihyZXQtPmZkKSwKKwkJCQkJCSAg
ICBidWZfc2l6ZSwKKwkJCQkJCSAgICAmYXR0cik7CisJcmVhZGVyPXRzZl9hZGFwdGl2ZV9yZWFk
ZXJfcmVhZDsKKyAgICB9CisKKyAgICBpZiAocmV0LT5yZWFkZXIucHRyPT1OVUxMKSB7CisgICAg
ICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJl
dC0+aW5fbWFuPXRzZl9zZXJpYWxfaW5fbWFuX2NyZWF0ZShyZWFkZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC0+cmVhZGVyLnB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzKTsKKyAgICBpZiAocmV0LT5pbl9t
YW49PU5VTEwpIHsKKyAgICAgICAgaWYgKHJldC0+dXNlX2FkcHQpIHsKKyAgICAgICAgICAgIHRz
Zl9hZGFwdGl2ZV9yZWFkZXJfZGVzdHJveShyZXQtPnJlYWRlci5hZHB0KTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRzZl9idWZfcmVhZGVyX2Rlc3Ryb3kocmV0LT5yZWFkZXIuYnVm
KTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICAKKyAgICAvKiBpZiB3ZSBldmVyIGhhdmUgYQorICAgICAqIHRzZl9zZXJpYWxf
aW5fbWFuX3ByZXRlbmRfdGhhdF95b3V2ZV9yZWFkX3Jlc2V0X3R5cGVzKCkgCisgICAgICogZnVu
Y3Rpb24sIHdlIHNob3VsZCBjYWxsIGl0IGhlcmUuICovCisgICAgCisgICAgcmV0dXJuIHJldDsK
K30KKwordm9pZCB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfY2xvc2UodHNmX3N0cmVhbV9maWxlX2lu
cHV0X3QgKmZpbGUpIHsKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9kZXN0cm95KGZpbGUtPmluX21h
bik7CisgICAgaWYgKGZpbGUtPmtlZXBfZmQpIHsKKyAgICAgICAgY2xvc2UoZmlsZS0+ZmQpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8qIHRyeSB0byBzZWVrIHRoZSBmaWxlIGRlc2NyaXB0b3Ig
YmFjayB0byB3aGVyZSBpdCBzaG91bGQgaGF2ZSBiZWVuLAorICAgICAgICAgICBpZiB3ZSBoYWRu
J3QgYmVlbiByZWFkaW5nIHdpdGggYnVmZmVyaW5nLiAqLworICAgICAgICAKKyAgICAgICAgdWlu
dDMyX3QgbnVtX3JlbWFpbmluZzsKKyAgICAgICAgCisgICAgICAgIGlmIChmaWxlLT51c2VfYWRw
dCkgeworICAgICAgICAgICAgbnVtX3JlbWFpbmluZz10c2ZfYWRhcHRpdmVfcmVhZGVyX2dldF9y
ZW1haW5pbmcoZmlsZS0+cmVhZGVyLmFkcHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbnVtX3JlbWFpbmluZz10c2ZfYnVmX3JlYWRlcl9nZXRfcmVtYWluaW5nKGZpbGUtPnJlYWRl
ci5idWYpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsc2VlayhmaWxlLT5mZCwtKChv
ZmZfdCludW1fcmVtYWluaW5nKSxTRUVLX0NVUik7CisgICAgICAgIAorICAgICAgICAvKiBpZ25v
cmUgZXJyb3IsIHNpbmNlIHRoaXMgaXMgYmVzdCBlZmZvcnQgYW55d2F5LiAqLworICAgIH0KKyAg
ICBpZiAoZmlsZS0+dXNlX2FkcHQpIHsKKyAgICAgICAgdHNmX2FkYXB0aXZlX3JlYWRlcl9kZXN0
cm95KGZpbGUtPnJlYWRlci5hZHB0KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0c2ZfYnVmX3Jl
YWRlcl9kZXN0cm95KGZpbGUtPnJlYWRlci5idWYpOworICAgIH0KKyAgICBmcmVlKGZpbGUpOwor
fQorCit0c2ZfYm9vbF90IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9hbGxvd3NfY29tcHJlc3Npb24o
dHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUpIHsKKyAgICByZXR1cm4gZmlsZS0+dXNlX2Fk
cHQ7Cit9CisKK3RzZl9ib29sX3QgdHNmX3N0cmVhbV9maWxlX2lucHV0X3JlZ2lzdGVyX3R5cGVf
Y2JhY2sodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2NiYWNrX3QgY2JhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmFyZykgeworICAgIHJldHVybiB0c2Zfc2VyaWFsX2luX21hbl9yZWdpc3Rlcl90eXBlX2Ni
YWNrKGZpbGUtPmluX21hbiwgY2JhY2ssIGFyZyk7Cit9CisKK3RzZl9ib29sX3QgdHNmX3N0cmVh
bV9maWxlX2lucHV0X3VucmVnaXN0ZXJfdHlwZV9jYmFjayh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
dCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfdHlwZV9jYmFja190IGNiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIHJldHVybiB0
c2Zfc2VyaWFsX2luX21hbl91bnJlZ2lzdGVyX3R5cGVfY2JhY2soZmlsZS0+aW5fbWFuLCBjYmFj
aywgYXJnKTsKK30KKwordHNmX2J1ZmZlcl90ICp0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfcmVhZCh0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSkgeworICAgIGlmIChmaWxlLT51c2VfYWRwdCkg
eworCXRzZl9hZGFwdGl2ZV9yZWFkZXJfaGludF9zd2l0Y2goZmlsZS0+cmVhZGVyLmFkcHQpOwor
ICAgIH0KKyAgICByZXR1cm4gdHNmX3NlcmlhbF9pbl9tYW5fcmVhZChmaWxlLT5pbl9tYW4pOwor
fQorCit0c2ZfYm9vbF90IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9yZWFkX2V4aXN0aW5nX2J1ZmZl
cih0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAg
aWYgKGZpbGUtPnVzZV9hZHB0KSB7CisJdHNmX2FkYXB0aXZlX3JlYWRlcl9oaW50X3N3aXRjaChm
aWxlLT5yZWFkZXIuYWRwdCk7CisgICAgfQorICAgIHJldHVybiB0c2Zfc2VyaWFsX2luX21hbl9y
ZWFkX2V4aXN0aW5nX2J1ZmZlcihmaWxlLT5pbl9tYW4sIGJ1Zik7Cit9CisKK3RzZl9ib29sX3Qg
dHNmX3N0cmVhbV9maWxlX2lucHV0X2dldF9tYXJrKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICpm
aWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3N0cmVh
bV9maWxlX21hcmtfdCAqbWFyaykgeworICAgIGlmIChmaWxlLT51c2VfYWRwdCkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAg
ICAgInRzZl9zdHJlYW1fZmlsZV9pbnB1dF9nZXRfbWFyaygpIGlzIG5vdCBzdXBwb3J0ZWQgaWYg
IgorCQkgICAgICAiY29tcHJlc3Npb24gaXMgYWxsb3dlZCIpOworICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgIH0KKworICAgIG1hcmstPm9mZnNldCA9IGxzZWVrKGZpbGUtPmZkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIChvZmZfdCkgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBTRUVLX0NVUik7CisgICAgaWYgKG1hcmstPm9mZnNldDwwKSB7CisgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCBsc2VlaygpIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNm
X3N0cmVhbV9maWxlX2lucHV0X2dldF9tYXJrX29mX25leHQoKSIpOworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBtYXJrLT5vZmZzZXQgLT0gdHNmX2J1Zl9yZWFk
ZXJfZ2V0X3JlbWFpbmluZyhmaWxlLT5yZWFkZXIuYnVmKTsKKyAgICAKKyAgICBtYXJrLT5zdGF0
ZSA9IHRzZl9zZXJpYWxfaW5fbWFuX2dldF9zdGF0ZShmaWxlLT5pbl9tYW4pOworICAgIAorICAg
IHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
c2Vlayh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdHNmX3N0cmVhbV9maWxlX21hcmtfdCAqbWFyaykgewor
ICAgIC8qIGlmIHRoZSBmaWxlIGlzIGNvbXByZXNzZWQgdGhlbiB0aGUgdXNlciBzaG91bGQgbm90
IGhhdmUgYmVlbiBhYmxlCisgICAgICogdG8gZ2V0IGEgbWFyay4gKi8KKyAgICB0c2ZfYXNzZXJ0
KCFmaWxlLT51c2VfYWRwdCk7CisKKyAgICBpZiAobHNlZWsoZmlsZS0+ZmQsCisgICAgICAgICAg
ICAgIG1hcmstPm9mZnNldCwKKyAgICAgICAgICAgICAgU0VFS19TRVQpIDwgMCkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbHNlZWsoKSBpbiAiCisgICAgICAgICAgICAgICAg
ICAgICAgInRzZl9zdHJlYW1fZmlsZV9pbnB1dF9zZWVrX3RvX21hcmsoKSIpOworICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICB0c2ZfYnVmX3JlYWRlcl9yZXNldChm
aWxlLT5yZWFkZXIuYnVmKTsKKyAgICAKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9zZXRfc3RhdGUo
ZmlsZS0+aW5fbWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrLT5zdGF0
ZSk7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCisKKworCkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3N0cmVhbV9maWxlX291dHB1dC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc3Ry
ZWFtX2ZpbGVfb3V0cHV0LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3dhc20vdHNmL3RzZl9zdHJlYW1fZmlsZV9vdXRwdXQuYwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBG
aWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUg
InRzZl9zZXJpYWxfcHJvdG9jb2wuaCIKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxlcnJuby5oPgorCit0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKnRzZl9zdHJlYW1fZmls
ZV9vdXRwdXRfb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgYXBwZW5kLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3pp
cF93dHJfYXR0cl90ICphdHRyKSB7CisgICAgaW50IGZkOworICAgIHRzZl9zdHJlYW1fZmlsZV9v
dXRwdXRfdCAqcmVzdWx0OworICAgIGludCBmbGFncz1PX1dST05MWXwoYXBwZW5kP09fQVBQRU5E
Ok9fVFJVTkMpOworICAgIHRzZl9ib29sX3QgY3JlYXRlZD10c2ZfZmFsc2U7CisgICAgdHNmX3pp
cF93dHJfYXR0cl90IGRlZmF1bHRzOworCisgICAgaWYgKGF0dHI9PU5VTEwpIHsKKyAgICAgICAg
YXR0cj0mZGVmYXVsdHM7CisgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQoYXR0
cik7CisgICAgfQorICAgIAorICAgIC8qIHRoaXMgaXMgd3JpdHRlbiBpbiBhIHRvdGFsbHkgY3Jh
enkgZnJpa2tpbicgd2F5IHNvIHRoYXQgaXQgY2xlYW5zCisgICAgICogdXAgYWZ0ZXIgaXRzZWxm
IGNvcnJlY3RseSBpbiBjYXNlIG9mIGVycm9yLiAqLworICAgIAorICAgIGZvciAoOzspIHsKKyAg
ICAgICAgLyogZmlyc3QgdHJ5IHRvIG9wZW4gYW4gZXhpc3RpbmcgZmlsZSAqLworICAgICAgICBm
ZD1vcGVuKGZpbGVuYW1lLGZsYWdzKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmZD49MCkgewor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChlcnJu
byE9RU5PRU5UKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qgb3BlbiAl
cyBmb3Igd3JpdGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKTsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiB0
aGUgZmlsZSBkaWRuJ3QgZXhpc3QsIHNvIHRyeSBjcmVhdGluZyBpdC4gKi8KKyAgICAgICAgZmQ9
b3BlbihmaWxlbmFtZSxPX0NSRUFUfE9fRVhDTHxmbGFncywwNjY2KTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChmZD49MCkgeworICAgICAgICAgICAgY3JlYXRlZD10c2ZfdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZXJybm8hPUVFWElT
VCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG9wZW4gJXMgZm9yIHdy
aXRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CisgICAgICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXN1bHQ9dHNmX3N0
cmVhbV9maWxlX291dHB1dF9mZF9vcGVuKGZkLGF0dHIsdHNmX3RydWUsMCk7CisgICAgaWYgKHJl
c3VsdD09TlVMTCkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIAorICAgICAgICAvKiB0
aGlzIGlzIHdoZXJlIHRoZSBjcmF6aW5lc3MgYWJvdmUgZ2V0cyB1c2VkLiAgdGhlIGxvb3AgYWJv
dmUKKyAgICAgICAgICogZW5zdXJlcyB0aGF0IHdlIGFsd2F5cyBrbm93IGlmIHdlIHdlcmUgdGhl
IG9uZXMgd2hvIGNyZWF0ZWQKKyAgICAgICAgICogdGhlIGZpbGUuICBpZiB3ZSB3ZXJlIHRoZSBv
bmVzIHdobyBjcmVhdGVkLCB3ZSBkZWxldGUgaXQKKyAgICAgICAgICogbm93LiAgYnV0IGlmIHdl
IHdlcmUgbm90IHRoZSBvbmVzIHdobyBjcmVhdGVkLCB3ZSBsZWF2ZSBpdAorICAgICAgICAgKiBh
bG9uZS4gKi8KKwkvKiBGSVhNRTogbm90IHN1cmUgaWYgdGhpcyBpcyBjb3JyZWN0LiAgZXZlbiBp
ZiB3ZSBkaWRuJ3QgY3JlYXRlCisJICAgdGhlIGZpbGUsIHdlIHN0aWxsIGVuZCB1cCB3cml0aW5n
IGEgYnVuY2ggb2YgZ2FyYmFnZSBpbnRvIGl0LgorCSAgIHNvIG1heWJlIHRoZSBjb3JyZWN0IHRo
aW5nIHRvIGRvIGlzIHRvIGVpdGhlciBhbHdheXMgZGVsZXRlIGl0LAorCSAgIG5ldmVyIGRlbGV0
ZSBpdCwgb3Igc29tZWhvdyBwcmVzZXJ2ZSB0aGUgb2xkIGNvbnRlbnRzIG9mIHRoZSBmaWxlCisJ
ICAgdG8gYmUgYWJsZSB0byByZXN0b3JlIHNhaWQgY29udGVudHMgaGVyZS4gKi8KKyAgICAgICAg
aWYgKGNyZWF0ZWQpIHsKKyAgICAgICAgICAgIHVubGluayhmaWxlbmFtZSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3RzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqdHNmX3N0cmVhbV9maWxlX291dHB1dF9mZF9v
cGVuKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3Qga2VlcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGJ1Zl9zaXplKSB7CisgICAgdHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpyZXQ7
CisgICAgdHNmX3ppcF93dHJfYXR0cl90IGRlZmF1bHRzOworICAgIHRzZl93cml0ZXJfdCB3cml0
ZXI7CisgICAgCisgICAgaWYgKGF0dHI9PU5VTEwpIHsKKyAgICAgICAgYXR0cj0mZGVmYXVsdHM7
CisgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQoYXR0cik7CisgICAgfQorICAg
IAorICAgIGlmIChidWZfc2l6ZT09MCkgeworICAgICAgICBidWZfc2l6ZT1UU0ZfREVGX0JVRl9T
SVpFOworICAgIH0KKyAgICAKKyAgICByZXQ9bWFsbG9jKHNpemVvZih0c2Zfc3RyZWFtX2ZpbGVf
b3V0cHV0X3QpKTsKKyAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8o
IkNvdWxkIG5vdCBtYWxsb2MgdHNmX3N0cmVhbV9maWxlX291dHB1dF90Iik7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPmFsbF9nb29kPXRzZl90cnVlOworICAg
IHJldC0+ZmQ9ZmQ7CisgICAgcmV0LT5rZWVwX2ZkPWtlZXA7CisgICAgCisgICAgc3dpdGNoIChh
dHRyLT5tb2RlKSB7CisgICAgICAgIGNhc2UgVFNGX1pJUF9OT05FOgorICAgICAgICAgICAgcmV0
LT51c2VfemlwPXRzZl9mYWxzZTsKKyAgICAgICAgICAgIHJldC0+d3JpdGVyLmJ1Zj10c2ZfYnVm
X3dyaXRlcl9jcmVhdGUocmV0LT5mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnVmX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl9mYWxzZSk7CisgICAgICAgICAgICB3cml0ZXI9dHNm
X2J1Zl93cml0ZXJfd3JpdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUU0Zf
WklQX1pMSUI6CisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAgICAgICAgICAgIGlmICgh
dHNmX2ZkX3dyaXRlcigmZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+
bW9kZT09VFNGX1pJUF9aTElCPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTRl9T
UF9aTElCX01BR0lDX0NPREU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNGX1NQ
X0JaSVAyX01BR0lDX0NPREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNGX1NQ
X01BR0lDX0xFTikpIHsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICByZXQtPnVz
ZV96aXA9dHNmX3RydWU7CisgICAgICAgICAgICByZXQtPndyaXRlci56aXA9dHNmX3ppcF93cml0
ZXJfY3JlYXRlKHRzZl9mZF93cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYocmV0LT5mZCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIpOworICAgICAgICAgICAgd3JpdGVyPXRzZl96
aXBfd3JpdGVyX3dyaXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVkFMSURfQVJHLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJWQgaXMgbm90IGEgdmFsaWQgemlwIG1vZGUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdHRyLT5tb2RlKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChyZXQtPndyaXRlci5wdHI9PU5V
TEwpIHsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cisg
ICAgCisgICAgcmV0LT5vdXRfbWFuPXRzZl9zZXJpYWxfb3V0X21hbl9jcmVhdGUod3JpdGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC0+d3JpdGVyLnB0
cik7CisgICAgaWYgKHJldC0+b3V0X21hbj09TlVMTCkgeworICAgICAgICBpZiAocmV0LT51c2Vf
emlwKSB7CisgICAgICAgICAgICB0c2ZfemlwX3dyaXRlcl9kZXN0cm95KHJldC0+d3JpdGVyLnpp
cCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0c2ZfYnVmX3dyaXRlcl9kZXN0cm95
KHJldC0+d3JpdGVyLmJ1Zik7CisgICAgICAgIH0KKyAgICAgICAgZnJlZShyZXQpOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordHNmX2Jv
b2xfdCB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2Nsb3NlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRf
dCAqZmlsZSkgeworICAgIHRzZl9ib29sX3QgcmVzdWx0PXRzZl90cnVlOworICAgIAorICAgIGlm
IChmaWxlLT5hbGxfZ29vZCkgeworICAgICAgICBpZiAoZmlsZS0+dXNlX3ppcCkgeworICAgICAg
ICAgICAgcmVzdWx0PXRzZl96aXBfd3JpdGVyX2ZpbmlzaChmaWxlLT53cml0ZXIuemlwKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdD10c2ZfYnVmX3dyaXRlcl9mbHVzaChm
aWxlLT53cml0ZXIuYnVmKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB0c2Zfc2VyaWFs
X291dF9tYW5fZGVzdHJveShmaWxlLT5vdXRfbWFuKTsKKyAgICBpZiAoZmlsZS0+dXNlX3ppcCkg
eworICAgICAgICB0c2ZfemlwX3dyaXRlcl9kZXN0cm95KGZpbGUtPndyaXRlci56aXApOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRzZl9idWZfd3JpdGVyX2Rlc3Ryb3koZmlsZS0+d3JpdGVyLmJ1
Zik7CisgICAgfQorICAgIGlmIChmaWxlLT5rZWVwX2ZkKSB7CisgICAgICAgIGNsb3NlKGZpbGUt
PmZkKTsKKyAgICB9CisgICAgZnJlZShmaWxlKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3RzZl9ib29sX3QgdHNmX3N0cmVhbV9maWxlX291dHB1dF9mbHVzaCh0c2Zfc3RyZWFtX2ZpbGVf
b3V0cHV0X3QgKmZpbGUpIHsKKyAgICB0c2ZfYm9vbF90IHJlc3VsdDsKKyAgICBpZiAoZmlsZS0+
dXNlX3ppcCkgeworICAgICAgICByZXN1bHQ9dHNmX3ppcF93cml0ZXJfZmx1c2goZmlsZS0+d3Jp
dGVyLnppcCx0c2ZfZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdD10c2ZfYnVm
X3dyaXRlcl9mbHVzaChmaWxlLT53cml0ZXIuYnVmKTsKKyAgICB9CisgICAgaWYgKCFyZXN1bHQp
IHsKKyAgICAgICAgZmlsZS0+YWxsX2dvb2Q9dHNmX2ZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfd3JpdGUodHNm
X3N0cmVhbV9maWxlX291dHB1dF90ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmZmVyKSB7CisgICAgdHNmX2Jvb2xfdCByZXN1
bHQ9dHNmX3NlcmlhbF9vdXRfbWFuX3dyaXRlKGZpbGUtPm91dF9tYW4sYnVmZmVyKTsKKyAgICBp
ZiAoIXJlc3VsdCkgeworICAgICAgICBmaWxlLT5hbGxfZ29vZD10c2ZfZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3R5cGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGUuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGUuYwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwu
aCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk
ZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwor
I2lmZGVmIEhBVkVfUFRIUkVBRAorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCisjaWZk
ZWYgREVCVUdfVFlQRV9BTExPQworc3RhdGljIGludDY0X3QgdHlwZV9iYWxhbmNlID0gMDsKKwor
aW50NjRfdCB0c2ZfdHlwZV9nZXRfYmFsYW5jZSgpIHsKKyAgICByZXR1cm4gdHlwZV9iYWxhbmNl
OworfQorCisjZGVmaW5lIGluY3JlbWVudF90eXBlX2JhbGFuY2UoKSBkbyB7XAorICAgIHR5cGVf
YmFsYW5jZSsrO1wKK30gd2hpbGUoMCkKKworI2RlZmluZSBkZWNyZW1lbnRfdHlwZV9iYWxhbmNl
KCkgZG8ge1wKKyAgICB0eXBlX2JhbGFuY2UtLTtcCit9IHdoaWxlKDApCisKKyNlbHNlCisKKyNk
ZWZpbmUgaW5jcmVtZW50X3R5cGVfYmFsYW5jZSgpIGRvIHtcCit9IHdoaWxlKDApCisKKyNkZWZp
bmUgZGVjcmVtZW50X3R5cGVfYmFsYW5jZSgpIGRvIHtcCit9IHdoaWxlKDApCisKKyNlbmRpZgor
CitzdGF0aWMgdHNmX3R5cGVfdCB2b2lkX3R5cGUsCisgICAgICAgICAgICAgICAgICBpbnQ4X3R5
cGUsCisgICAgICAgICAgICAgICAgICB1aW50OF90eXBlLAorICAgICAgICAgICAgICAgICAgaW50
MTZfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHVpbnQxNl90eXBlLAorICAgICAgICAgICAgICAg
ICAgaW50MzJfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHVpbnQzMl90eXBlLAorICAgICAgICAg
ICAgICAgICAgaW50NjRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHVpbnQ2NF90eXBlLAorICAg
ICAgICAgICAgICAgICAgaW50ZWdlcl90eXBlLAorICAgICAgICAgICAgICAgICAgbG9uZ190eXBl
LAorICAgICAgICAgICAgICAgICAgZmxvYXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGRvdWJs
ZV90eXBlLAorICAgICAgICAgICAgICAgICAgYml0X3R5cGUsCisgICAgICAgICAgICAgICAgICBz
dHJpbmdfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGFueV90eXBlOworCitzdGF0aWMgdHNmX3N0
X3RhYmxlICptZW1vX3RhYmxlOworc3RhdGljIHRzZl9tdXRleF90IG1lbW9fbG9jazsKKworc3Rh
dGljIHZvaWQgaW5pdF9iYXNpY190eXBlKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICB0eXBlLT5p
c19keW5hbWljID0gdHNmX2ZhbHNlOworICAgIHR5cGUtPmNvbW1lbnQgPSBOVUxMOworICAgIHRz
Zl9hdG9taWNfY291bnRfaW5pdCgmdHlwZS0+cmVmX2NvdW50LCAxKTsKKyAgICB0eXBlLT5ieXRl
X3NpemUgPSAxOworICAgIHR5cGUtPm5hbWUgPSBOVUxMOworICAgIHR5cGUtPnZlcnNpb24gPSAw
OworICAgIHR5cGUtPm1lbW9fbWFzdGVyID0gdHlwZTsKK30KKworc3RhdGljIHZvaWQgaW5pdF90
eXBlcyh2b2lkKSB7CisgICAgdHNmX2Fzc2VydChtZW1vX3RhYmxlID0gdHNmX3N0X2luaXRfdHlw
ZXRhYmxlKCkpOworICAgIHRzZl9tdXRleF9pbml0KCZtZW1vX2xvY2spOworICAgIAorICAgIHZv
aWRfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfVk9JRDsKKyAgICB2b2lkX3R5cGUuaGFzaF9jb2Rl
ID0gVFNGX1RLX1ZPSUQ7CisgICAgaW5pdF9iYXNpY190eXBlKCZ2b2lkX3R5cGUpOworICAgIAor
ICAgIGludDhfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5UODsKKyAgICBpbnQ4X3R5cGUuaGFz
aF9jb2RlID0gVFNGX1RLX0lOVDg7CisgICAgaW5pdF9iYXNpY190eXBlKCZpbnQ4X3R5cGUpOwor
ICAgIAorICAgIHVpbnQ4X3R5cGUua2luZF9jb2RlID0gVFNGX1RLX1VJTlQ4OworICAgIHVpbnQ4
X3R5cGUuaGFzaF9jb2RlID0gVFNGX1RLX1VJTlQ4OworICAgIGluaXRfYmFzaWNfdHlwZSgmdWlu
dDhfdHlwZSk7CisgICAgCisgICAgaW50MTZfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5UMTY7
CisgICAgaW50MTZfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfSU5UMTY7CisgICAgaW5pdF9iYXNp
Y190eXBlKCZpbnQxNl90eXBlKTsKKyAgICAKKyAgICB1aW50MTZfdHlwZS5raW5kX2NvZGUgPSBU
U0ZfVEtfVUlOVDE2OworICAgIHVpbnQxNl90eXBlLmhhc2hfY29kZSA9IFRTRl9US19VSU5UMTY7
CisgICAgaW5pdF9iYXNpY190eXBlKCZ1aW50MTZfdHlwZSk7CisgICAgCisgICAgaW50MzJfdHlw
ZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5UMzI7CisgICAgaW50MzJfdHlwZS5oYXNoX2NvZGUgPSBU
U0ZfVEtfSU5UMzI7CisgICAgaW5pdF9iYXNpY190eXBlKCZpbnQzMl90eXBlKTsKKyAgICAKKyAg
ICB1aW50MzJfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfVUlOVDMyOworICAgIHVpbnQzMl90eXBl
Lmhhc2hfY29kZSA9IFRTRl9US19VSU5UMzI7CisgICAgaW5pdF9iYXNpY190eXBlKCZ1aW50MzJf
dHlwZSk7CisgICAgCisgICAgaW50NjRfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5UNjQ7Cisg
ICAgaW50NjRfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfSU5UNjQ7CisgICAgaW5pdF9iYXNpY190
eXBlKCZpbnQ2NF90eXBlKTsKKyAgICAKKyAgICB1aW50NjRfdHlwZS5raW5kX2NvZGUgPSBUU0Zf
VEtfVUlOVDY0OworICAgIHVpbnQ2NF90eXBlLmhhc2hfY29kZSA9IFRTRl9US19VSU5UNjQ7Cisg
ICAgaW5pdF9iYXNpY190eXBlKCZ1aW50NjRfdHlwZSk7CisgICAgCisgICAgaW50ZWdlcl90eXBl
LmtpbmRfY29kZSA9IFRTRl9US19JTlRFR0VSOworICAgIGludGVnZXJfdHlwZS5oYXNoX2NvZGUg
PSBUU0ZfVEtfSU5URUdFUjsKKyAgICBpbml0X2Jhc2ljX3R5cGUoJmludGVnZXJfdHlwZSk7Cisg
ICAgCisgICAgbG9uZ190eXBlLmtpbmRfY29kZSA9IFRTRl9US19MT05HOworICAgIGxvbmdfdHlw
ZS5oYXNoX2NvZGUgPSBUU0ZfVEtfTE9ORzsKKyAgICBpbml0X2Jhc2ljX3R5cGUoJmxvbmdfdHlw
ZSk7CisgICAgCisgICAgZmxvYXRfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfRkxPQVQ7CisgICAg
ZmxvYXRfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfRkxPQVQ7CisgICAgaW5pdF9iYXNpY190eXBl
KCZmbG9hdF90eXBlKTsKKyAgICAKKyAgICBkb3VibGVfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtf
RE9VQkxFOworICAgIGRvdWJsZV90eXBlLmhhc2hfY29kZSA9IFRTRl9US19ET1VCTEU7CisgICAg
aW5pdF9iYXNpY190eXBlKCZkb3VibGVfdHlwZSk7CisgICAgCisgICAgYml0X3R5cGUua2luZF9j
b2RlID0gVFNGX1RLX0JJVDsKKyAgICBiaXRfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfQklUOwor
ICAgIGluaXRfYmFzaWNfdHlwZSgmYml0X3R5cGUpOworICAgIAorICAgIHN0cmluZ190eXBlLmtp
bmRfY29kZSA9IFRTRl9US19TVFJJTkc7CisgICAgc3RyaW5nX3R5cGUuaGFzaF9jb2RlID0gVFNG
X1RLX1NUUklORzsKKyAgICBpbml0X2Jhc2ljX3R5cGUoJnN0cmluZ190eXBlKTsKKyAgICAKKyAg
ICBhbnlfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfQU5ZOworICAgIGFueV90eXBlLmhhc2hfY29k
ZSA9IFRTRl9US19BTlk7CisgICAgaW5pdF9iYXNpY190eXBlKCZhbnlfdHlwZSk7CisgICAgYW55
X3R5cGUuaXNfZHluYW1pYyA9IHRzZl90cnVlOworfQorCitzdGF0aWMgdHNmX29uY2VfdCBvbmNl
X2NvbnRyb2wgPSBUU0ZfT05DRV9JTklUOworCitzdGF0aWMgdm9pZCBjaGVja19pbml0X3R5cGVz
KHZvaWQpIHsKKyAgICB0c2Zfb25jZSgmb25jZV9jb250cm9sLCBpbml0X3R5cGVzKTsKK30KKwor
I2RlZmluZSBCSUdfTUVUQV9DT0RFX1NXSVRDSChraW5kX2NvZGUpIFwKKyAgICBzd2l0Y2ggKGtp
bmRfY29kZSkgeyAgICAgICAgICAgICAgICBcCisgICAgY2FzZSBUU0ZfVEtfVk9JRDogICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gJnZvaWRfdHlwZTsgICAgICAgICAgICAgIFwK
KyAgICBjYXNlIFRTRl9US19JTlQ4OiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biAmaW50OF90eXBlOyAgICAgICAgICAgICAgXAorICAgIGNhc2UgVFNGX1RLX1VJTlQ4OiAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICZ1aW50OF90eXBlOyAgICAgICAgICAgICBc
CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1
cm4gJmludDE2X3R5cGU7ICAgICAgICAgICAgIFwKKyAgICBjYXNlIFRTRl9US19VSU5UMTY6ICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAmdWludDE2X3R5cGU7ICAgICAgICAgICAg
XAorICAgIGNhc2UgVFNGX1RLX0lOVDMyOiAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0
dXJuICZpbnQzMl90eXBlOyAgICAgICAgICAgICBcCisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOiAg
ICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gJnVpbnQzMl90eXBlOyAgICAgICAgICAg
IFwKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiAmaW50NjRfdHlwZTsgICAgICAgICAgICAgXAorICAgIGNhc2UgVFNGX1RLX1VJTlQ2NDog
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICZ1aW50NjRfdHlwZTsgICAgICAgICAg
ICBcCisgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjogICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gJmludGVnZXJfdHlwZTsgICAgICAgICAgIFwKKyAgICBjYXNlIFRTRl9US19MT05HOiAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAmbG9uZ190eXBlOyAgICAgICAgICAg
ICAgXAorICAgIGNhc2UgVFNGX1RLX0ZMT0FUOiAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuICZmbG9hdF90eXBlOyAgICAgICAgICAgICBcCisgICAgY2FzZSBUU0ZfVEtfRE9VQkxF
OiAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gJmRvdWJsZV90eXBlOyAgICAgICAg
ICAgIFwKKyAgICBjYXNlIFRTRl9US19CSVQ6ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IHJldHVybiAmYml0X3R5cGU7ICAgICAgICAgICAgICAgXAorICAgIGNhc2UgVFNGX1RLX1NUUklO
RzogICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICZzdHJpbmdfdHlwZTsgICAgICAg
ICAgICBcCisgICAgY2FzZSBUU0ZfVEtfQU5ZOiAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gJmFueV90eXBlOyAgICAgICAgICAgICAgIFwKKyAgICBkZWZhdWx0OiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0KKworc3RhdGljIGlubGluZSB0c2ZfYm9vbF90IGlzX3NpbmdsZXRvbih0
c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAg
ICBjYXNlIFRTRl9US19JTlQ4OgorICAgIGNhc2UgVFNGX1RLX1VJTlQ4OgorICAgIGNhc2UgVFNG
X1RLX0lOVDE2OgorICAgIGNhc2UgVFNGX1RLX1VJTlQxNjoKKyAgICBjYXNlIFRTRl9US19JTlQz
MjoKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAg
Y2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisgICAgY2FzZSBU
U0ZfVEtfTE9ORzoKKyAgICBjYXNlIFRTRl9US19GTE9BVDoKKyAgICBjYXNlIFRTRl9US19ET1VC
TEU6CisgICAgY2FzZSBUU0ZfVEtfQklUOgorICAgIGNhc2UgVFNGX1RLX1ZPSUQ6CisgICAgY2Fz
ZSBUU0ZfVEtfU1RSSU5HOgorICAgIGNhc2UgVFNGX1RLX0FOWToKKyAgICAgICAgcmV0dXJuIHRz
Zl90cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQor
fQorCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9jcmVhdGUodHNmX3R5cGVfa2luZF90IGtpbmRfY29k
ZSkgeworICAgIHRzZl90eXBlX3QgKnJldDsKKyAgICAKKyAgICBjaGVja19pbml0X3R5cGVzKCk7
CisgICAgCisgICAgaWYgKGtpbmRfY29kZSA9PSBUU0ZfVEtfQVJSQVkpIHsKKyAgICAgICAgdHNm
X3NldF9lcnJvcihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICJZ
b3UgY2Fubm90IHVzZSBUU0ZfVEtfQVJSQVkgd2l0aCB0c2ZfdHlwZV9jcmVhdGUoKTsgIgorICAg
ICAgICAgICAgICAgICAgICAgICJ0byBjcmVhdGUgYW4gYXJyYXkgdHlwZSwgdXNlIHRzZl90eXBl
X2NyZWF0ZV9hcnJheSgpICIKKyAgICAgICAgICAgICAgICAgICAgICAiaW5zdGVhZCIpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgQklHX01FVEFfQ09ERV9TV0lUQ0go
a2luZF9jb2RlKQorICAgIAorICAgIHJldCA9IG1hbGxvYyhzaXplb2YodHNmX3R5cGVfdCkpOwor
ICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
bWFsbG9jIHRzZl90eXBlX3Qgb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJnJldC0+cmVmX2NvdW50LCAxKTsKKyAgICAK
KyAgICByZXQtPmNvbW1lbnQgPSBOVUxMOworICAgIHJldC0+bmFtZSA9IE5VTEw7CisgICAgcmV0
LT52ZXJzaW9uID0gMDsKKyAgICByZXQtPmtpbmRfY29kZSA9IGtpbmRfY29kZTsKKyAgICByZXQt
PmlzX2R5bmFtaWMgPSB0c2ZfZmFsc2U7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAgICBj
YXNlIFRTRl9US19TVFJVQ1Q6CisgICAgICAgIHJldC0+dS5zLnR0ID0gdHNmX3R5cGVfdGFibGVf
Y3JlYXRlKCk7CisgICAgICAgIGlmIChyZXQtPnUucy50dCA9PSBOVUxMKSB7CisgICAgICAgICAg
ICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAg
ICByZXQtPnUucy5oYXNfc2l6ZSA9IHRzZl9mYWxzZTsKKyAgICAgICAgcmV0LT51LnMuY29uc3Ry
dWN0b3IgPSBOVUxMOworICAgICAgICByZXQtPnUucy5wcmVfZGVzdHJ1Y3RvciA9IE5VTEw7Cisg
ICAgICAgIHJldC0+dS5zLmRlc3RydWN0b3IgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgIHJldC0+dS5oLnR0ID0gdHNmX3R5cGVfdGFibGVf
Y3JlYXRlKCk7CisgICAgICAgIGlmIChyZXQtPnUuaC50dCA9PSBOVUxMKSB7CisgICAgICAgICAg
ICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAg
ICByZXQtPnUuaC5oYXNfbWFwcGluZyA9IHRzZl9mYWxzZTsKKyAgICAgICAgcmV0LT51LmguY2hv
aWNlX2FzX2Z1bGxfd29yZCA9IHRzZl9mYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAgICAg
ICAgICAgICAgICAgICInIiBmdWk4ICInIGlzIG5vdCBhIHZhbGlkIGtpbmQgdHlwZSBmb3IgIgor
ICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfdHlwZV9jcmVhdGUoKSIsCisgICAgICAgICAgICAg
ICAgICAgICAga2luZF9jb2RlKTsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgdHNmX3R5cGVfcmVjb21wdXRlX2hhc2gocmV0KTsKKyAg
ICAKKyAgICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisgICAgcmV0LT5tZW1vX21hc3RlciA9IE5VTEw7
CisgICAgCisgICAgaW5jcmVtZW50X3R5cGVfYmFsYW5jZSgpOworCisgICAgLyogcHJpbnRmKCJj
cmVhdGVkIGEgdHlwZSBhdCAlcFxuIixyZXQpOyAqLworICAgIAorICAgIHJldHVybiByZXQ7Cit9
CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2NyZWF0ZV9hcnJheSh0c2ZfdHlwZV90ICplbGVfdHlw
ZSkgeworICAgIHRzZl90eXBlX3QgKnJldDsKKyAgICAKKyAgICBpZiAoZWxlX3R5cGUgPT0gTlVM
TCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0ID0gbWFsbG9j
KHNpemVvZih0c2ZfdHlwZV90KSk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX3R5cGVfdCIpOworICAgICAgICB0c2Zf
dHlwZV9kZXN0cm95KGVsZV90eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisg
ICAgdHNmX2F0b21pY19jb3VudF9pbml0KCZyZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAg
cmV0LT5jb21tZW50ID0gTlVMTDsKKyAgICByZXQtPm5hbWUgPSBOVUxMOworICAgIHJldC0+dmVy
c2lvbiA9IDA7CisgICAgcmV0LT5raW5kX2NvZGUgPSBUU0ZfVEtfQVJSQVk7CisgICAgcmV0LT5p
c19keW5hbWljID0gZWxlX3R5cGUtPmlzX2R5bmFtaWM7CisgICAgcmV0LT51LmEuZWxlbWVudF90
eXBlID0gZWxlX3R5cGU7CisgICAgCisgICAgdHNmX3R5cGVfcmVjb21wdXRlX2hhc2gocmV0KTsK
KyAgICAKKyAgICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisgICAgcmV0LT5tZW1vX21hc3RlciA9IE5V
TEw7CisgICAgCisgICAgaW5jcmVtZW50X3R5cGVfYmFsYW5jZSgpOworCisgICAgLyogcHJpbnRm
KCJjcmVhdGVkIGFuIGFycmF5IHR5cGUgYXQgJXBcbiIscmV0KTsgKi8KKyAgICAKKyAgICByZXR1
cm4gcmV0OworfQorCit0eXBlZGVmIHRzZl9ib29sX3QgKCphcHBlbmRfZnVuY190KSh0c2ZfdHlw
ZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90
ICplbGVfdHlwZSk7CisKK3N0YXRpYyB0c2ZfdHlwZV90ICpjcmVhdGVfc29tZXRoaW5ndih0c2Zf
dHlwZV9raW5kX3Qga2luZF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZF9mdW5jX3QgYXBwZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKmZpcnN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFfbGlzdCBsc3QpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQ7CisgICAg
Y29uc3QgY2hhciAqbmFtZTsKKyAgICB0c2ZfdHlwZV90ICp0eXBlOworICAgIAorICAgIHJlc3Vs
dD10c2ZfdHlwZV9jcmVhdGUoa2luZF9jb2RlKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7Cisg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBuYW1lPWZpcnN0X25hbWU7Cisg
ICAgCisgICAgd2hpbGUgKG5hbWUhPU5VTEwpIHsKKyAgICAgICAgdHlwZT12YV9hcmcobHN0LHRz
Zl90eXBlX3QqKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYXBwZW5kKCZyZXN1bHQsCisgICAg
ICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgIHR5cGUpKSB7CisgICAg
ICAgICAgICB3aGlsZSAodmFfYXJnKGxzdCxjb25zdCBjaGFyKikhPU5VTEwpIHsKKyAgICAgICAg
ICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHZhX2FyZyhsc3QsdHNmX3R5cGVfdCopKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmVzdWx0KTsKKyAgICAgICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuYW1lPXZhX2Fy
Zyhsc3QsY29uc3QgY2hhciopOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9jcmVhdGVfc3RydWN0dihjb25zdCBjaGFyICpmaXJzdF9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBsc3QpIHsK
KyAgICByZXR1cm4gY3JlYXRlX3NvbWV0aGluZ3YoVFNGX1RLX1NUUlVDVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmlyc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bHN0KTsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX3N0cnVjdChjb25zdCBjaGFy
ICpmaXJzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pIHsK
KyAgICB2YV9saXN0IGxzdDsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQ7CisgICAgCisgICAgdmFf
c3RhcnQobHN0LGZpcnN0X25hbWUpOworICAgIAorICAgIHJlc3VsdD10c2ZfdHlwZV9jcmVhdGVf
c3RydWN0dihmaXJzdF9uYW1lLGxzdCk7CisgICAgCisgICAgdmFfZW5kKGxzdCk7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX2Nob2lj
ZXYoY29uc3QgY2hhciAqZmlyc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhX2xpc3QgbHN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZV9zb21ldGhpbmd2KFRTRl9U
S19DSE9JQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9jaG9pY2VfdHlwZV9h
cHBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxzdCk7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2Ny
ZWF0ZV9jaG9pY2UoY29uc3QgY2hhciAqZmlyc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLi4uKSB7CisgICAgdmFfbGlzdCBsc3Q7CisgICAgdHNmX3R5cGVfdCAq
cmVzdWx0OworICAgIAorICAgIHZhX3N0YXJ0KGxzdCxmaXJzdF9uYW1lKTsKKyAgICAKKyAgICBy
ZXN1bHQ9dHNmX3R5cGVfY3JlYXRlX2Nob2ljZXYoZmlyc3RfbmFtZSxsc3QpOworICAgIAorICAg
IHZhX2VuZChsc3QpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB0c2Zf
Ym9vbF90IHR5cGVfa2luZF92ZXJpZnkodHNmX3R5cGVfa2luZF90IGNvZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfZXJyb3JfdCBlcnJvcikgeworICAgIGlmICh0
c2ZfbGltaXRzX2lzX3R5cGVfa2luZF9hbGxvd2VkKGxpbWl0cyxjb2RlKSkgeworICAgICAgICBy
ZXR1cm4gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIHRzZl9zZXRfZXJyb3IoZXJyb3IsCisg
ICAgICAgICAgICAgICAgICAiJXMgdHlwZSBpcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAg
ICAgICB0c2ZfdHlwZV9raW5kX3RzZl9uYW1lKGNvZGUpKTsKKyAgICByZXR1cm4gdHNmX2ZhbHNl
OworfQorCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9yZWFkX3JlYyh0c2ZfcmVhZGVyX3QgcmVhZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1pdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBkZXB0aCkgeworICAgIHRzZl90eXBlX3QgKnJldDsKKyAg
ICB1aW50OF90IGtpbmRfY29kZTsKKyAgICB1aW50OF90IGNvbW1lbnRfbWFzazsKKyAgICAKKyAg
ICBpZiAoZGVwdGg9PXRzZl9saW1pdHNfZGVwdGhfbGltaXQobGltaXRzKSkgeworICAgICAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJU
eXBlIGRlcHRoIGxpbWl0IGV4Y2VlZGVkIHdoaWxlIHBhcnNpbmciKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghcmVhZGVyKGFyZywma2luZF9jb2RlLDEpKSB7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAoIXR5cGVfa2luZF92
ZXJpZnkoa2luZF9jb2RlLGxpbWl0cyxUU0ZfRV9QQVJTRV9FUlJPUikpIHsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIEJJR19NRVRBX0NPREVfU1dJVENIKGtpbmRfY29k
ZSkKKworICAgIHJldCA9IG1hbGxvYyhzaXplb2YodHNmX3R5cGVfdCkpOworICAgIGlmIChyZXQ9
PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2ZfdHlw
ZV90IG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHNmX2F0
b21pY19jb3VudF9pbml0KCZyZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgcmV0LT5jb21t
ZW50ID0gTlVMTDsKKyAgICByZXQtPm5hbWUgPSBOVUxMOworICAgIHJldC0+dmVyc2lvbiA9IDA7
CisgICAgcmV0LT5raW5kX2NvZGUgPSBraW5kX2NvZGU7CisgICAgcmV0LT5tZW1vX21hc3RlciA9
IE5VTEw7CisKKyAgICBzd2l0Y2ggKHJldC0+a2luZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtf
QVJSQVk6CisgICAgICAgIHJldC0+dS5hLmVsZW1lbnRfdHlwZSA9CisgICAgICAgICAgICB0c2Zf
dHlwZV9yZWFkX3JlYyhyZWFkZXIsIGFyZywgbGltaXRzLCBkZXB0aCArIDEpOworICAgICAgICBp
ZiAocmV0LT51LmEuZWxlbWVudF90eXBlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUocmV0
KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldC0+aXNf
ZHluYW1pYyA9IHJldC0+dS5hLmVsZW1lbnRfdHlwZS0+aXNfZHluYW1pYzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICByZXQtPnUucy50dCA9IHRzZl90
eXBlX3RhYmxlX3JlYWQoIlN0cnVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1p
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRz
X21heF9zdHJ1Y3Rfc2l6ZShsaW1pdHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVwdGggKyAxKTsKKyAgICAgICAgaWYgKHJldC0+dS5zLnR0ID09IE5VTEwp
IHsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICB9CisgICAgICAgIHJldC0+aXNfZHluYW1pYyA9IHRzZl90eXBlX3RhYmxlX2NvbnRhaW5z
X2R5bmFtaWMocmV0LT51LnMudHQpOworICAgICAgICByZXQtPnUucy5oYXNfc2l6ZSA9IHRzZl9m
YWxzZTsKKyAgICAgICAgcmV0LT51LnMuY29uc3RydWN0b3IgPSBOVUxMOworICAgICAgICByZXQt
PnUucy5wcmVfZGVzdHJ1Y3RvciA9IE5VTEw7CisgICAgICAgIHJldC0+dS5zLmRlc3RydWN0b3Ig
PSBOVUxMOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAg
IHJldC0+dS5oLnR0ID0gdHNmX3R5cGVfdGFibGVfcmVhZCgiQ2hvaWNlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRzZl9saW1pdHNfbWF4X2Nob2ljZV9zaXplKGxpbWl0cyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCArIDEpOworICAgICAgICBpZiAo
cmV0LT51LmgudHQgPT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0LT5pc19keW5hbWljID0gdHNm
X3R5cGVfdGFibGVfY29udGFpbnNfZHluYW1pYyhyZXQtPnUuaC50dCk7CisgICAgICAgIHJldC0+
dS5oLmhhc19tYXBwaW5nID0gdHNmX2ZhbHNlOworICAgICAgICBpZiAodHNmX2Nob2ljZV90eXBl
X2dldF9udW1fZWxlbWVudHMocmV0KSA+PSAyNTYpCisgICAgICAgICAgICByZXQtPnUuaC5jaG9p
Y2VfYXNfZnVsbF93b3JkID0gdHNmX3RydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
dC0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQgPSB0c2ZfZmFsc2U7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisg
ICAgICAgICAgICAgICAgICAgICAgIiciIGZ1aTggIicgaXMgbm90IGEgdmFsaWQga2luZCB0eXBl
IGluICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfcmVhZCgpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICByZXQtPmtpbmRfY29kZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGluY3JlbWVudF90eXBlX2JhbGFuY2Uo
KTsKKyAgICAKKyAgICBpZiAoIXJlYWRlcihhcmcsICZjb21tZW50X21hc2ssIDEpKSB7CisgICAg
ICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIGlmICgoY29tbWVudF9tYXNrICYgMSkmJgorICAgICAgICAhdHNmX2xpbWl0c19h
bGxvd19jb21tZW50cyhsaW1pdHMpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFS
U0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIkVuY291bnRlcmVkIGEgY29tbWVudGVk
IHR5cGUgd2hpbGUgcGFyc2luZywgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAiY29tbWVu
dHMgYXJlIG5vdCBhbGxvd2VkIik7CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICgoY29tbWVudF9tYXNrICYg
MSkpIHsKKyAgICAgICAgcmV0LT5jb21tZW50ID0gdHNmX3JlYWRfc3RyaW5nKHJlYWRlciwgYXJn
LCBUU0ZfTUFYX0NPTU1FTlRfU0laRSk7CisgICAgICAgIGlmIChyZXQtPmNvbW1lbnQgPT0gTlVM
TCkgeworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQpOworICAgICAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKChjb21tZW50X21hc2sg
JiAyKSkgeworICAgICAgICByZXQtPm5hbWUgPSB0c2ZfcmVhZF9zdHJpbmcocmVhZGVyLCBhcmcs
IFRTRl9NQVhfTkFNRV9TSVpFKTsKKyAgICAgICAgaWYgKHJldC0+bmFtZSA9PSBOVUxMKSB7Cisg
ICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoKGNvbW1lbnRfbWFzayAmIDQpKSB7
CisgICAgICAgIGlmICghcmVhZGVyKGFyZywgJnJldC0+dmVyc2lvbiwgc2l6ZW9mKHJldC0+dmVy
c2lvbikpKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldCk7CisgICAgICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXQtPnZlcnNpb24gPSBudG9obChy
ZXQtPnZlcnNpb24pOworICAgIH0KKyAgICAKKyAgICBpZiAoKGNvbW1lbnRfbWFzayAmIDgpKSB7
CisgICAgICAgIGlmIChyZXQtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQ0hPSUNFKSB7CisgICAgICAg
ICAgICByZXQtPnUuaC5jaG9pY2VfYXNfZnVsbF93b3JkID0gdHNmX2ZhbHNlOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHRzZl90eXBlX3JlY29tcHV0ZV9oYXNoKHJldCk7CisgICAgCisg
ICAgcmV0LT5ieXRlX3NpemUgPSAwOworCisgICAgLyogcHJpbnRmKCJyZWFkIGEgdHlwZSBhdCAl
cFxuIixyZXQpOyAqLworCisgICAgcmV0dXJuIHJldDsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5
cGVfcmVhZCh0c2ZfcmVhZGVyX3QgcmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRz
KSB7CisgICAgdHNmX3NpemVfYXdhcmVfcmRyX3Qgc2l6ZV9hd2FyZTsKKyAgICB0c2ZfdHlwZV90
ICpyZXN1bHQ7CisgICAgCisgICAgY2hlY2tfaW5pdF90eXBlcygpOworICAgIAorICAgIHNpemVf
YXdhcmUucmVhZGVyPXJlYWRlcjsKKyAgICBzaXplX2F3YXJlLmFyZz1hcmc7CisgICAgc2l6ZV9h
d2FyZS5saW1pdD10c2ZfbGltaXRzX21heF90eXBlX3NpemUobGltaXRzKTsKKyAgICBzaXplX2F3
YXJlLm5hbWU9InR5cGUiOworICAgIAorICAgIHJlc3VsdD10c2ZfdHlwZV9yZWFkX3JlYyh0c2Zf
c2l6ZV9hd2FyZV9yZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplX2F3
YXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDApOworICAgIAorICAgIGlmIChyZXN1bHQhPU5VTEwpIHsKKyAgICAg
ICAgcmVzdWx0LT5ieXRlX3NpemU9CisgICAgICAgICAgICB0c2ZfbGltaXRzX21heF90eXBlX3Np
emUobGltaXRzKQorICAgICAgICAgICAgLXNpemVfYXdhcmUubGltaXQ7CisgICAgfQorICAgIAor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfd3JpdGUodHNmX3R5
cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRlcl90IHdyaXRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7CisgICAgdWludDhfdCBj
b21tZW50X21hc2s7CisKKyAgICB0c2ZfYXNzZXJ0KHRzZl9hdG9taWNfY291bnRfdmFsdWUoJnR5
cGUtPnJlZl9jb3VudCkgPiAwKTsKKworICAgIGlmICghd3JpdGVyKGFyZywmdHlwZS0+a2luZF9j
b2RlLDEpKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHN3
aXRjaCAodHlwZS0+a2luZF9jb2RlKSB7CisgICAgICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAg
ICAgICAgICAgaWYgKCF0c2ZfdHlwZV93cml0ZSh0eXBlLT51LmEuZWxlbWVudF90eXBlLHdyaXRl
cixhcmcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRTRl9US19TVFJVQ1Q6CisgICAg
ICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX3dyaXRlKHR5cGUtPnUucy50dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRT
Rl9US19DSE9JQ0U6CisgICAgICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX3dyaXRlKHR5cGUt
PnUuaC50dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAg
IGlmICh0c2ZfdHlwZV9raW5kX2lzX2NvbW1lbnRhYmxlKHR5cGUtPmtpbmRfY29kZSkpIHsKKyAg
ICAgICAgY29tbWVudF9tYXNrID0gMDsKKyAgICAgICAgaWYgKHR5cGUtPmNvbW1lbnQgIT0gTlVM
TCkgeworICAgICAgICAgICAgY29tbWVudF9tYXNrIHw9IDE7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHR5cGUtPm5hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgY29tbWVudF9tYXNrIHw9IDI7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUtPnZlcnNpb24gIT0gMCkgeworICAgICAgICAg
ICAgY29tbWVudF9tYXNrIHw9IDQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUtPmtpbmRf
Y29kZSA9PSBUU0ZfVEtfQ0hPSUNFCisgICAgICAgICAgICAmJiB0c2ZfY2hvaWNlX3R5cGVfZ2V0
X251bV9lbGVtZW50cyh0eXBlKSA+PSAyNTYpIHsKKyAgICAgICAgICAgIGNvbW1lbnRfbWFzayB8
PSA4OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXdyaXRlcihhcmcsICZjb21t
ZW50X21hc2ssIDEpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAodHlwZS0+Y29tbWVudCAhPSBOVUxMKSB7CisgICAgICAg
ICAgICBpZiAoIXRzZl93cml0ZV9zdHJpbmcod3JpdGVyLCBhcmcsIHR5cGUtPmNvbW1lbnQpKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHR5cGUtPm5hbWUgIT0gTlVMTCkgeworICAgICAg
ICAgICAgaWYgKCF0c2Zfd3JpdGVfc3RyaW5nKHdyaXRlciwgYXJnLCB0eXBlLT5uYW1lKSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlLT52ZXJzaW9uICE9IDApIHsKKyAgICAgICAg
ICAgIHVpbnQzMl90IHZlcnNpb24gPSBodG9ubCh0eXBlLT52ZXJzaW9uKTsKKyAgICAgICAgICAg
IGlmICghd3JpdGVyKGFyZywgJnZlcnNpb24sIHNpemVvZih2ZXJzaW9uKSkpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVf
ZHVwKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSBOVUxMKSB7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBCSUdfTUVUQV9DT0RFX1NXSVRDSCh0eXBl
LT5raW5kX2NvZGUpCisgICAgICAgIAorICAgIHRzZl9hdG9taWNfY291bnRfeGFkZCgmdHlwZS0+
cmVmX2NvdW50LCAxKTsKKyAgICAKKyAgICBpbmNyZW1lbnRfdHlwZV9iYWxhbmNlKCk7CisKKyAg
ICAvKiBwcmludGYoImR1cHBlZCBhIHR5cGUgYXQgJXBcbiIsdHlwZSk7ICovCisgICAgCisgICAg
cmV0dXJuIHR5cGU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2Nsb25lKHRzZl90eXBlX3Qg
KnR5cGUpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKHR5cGU9PU5VTEwp
IHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIEJJR19NRVRBX0NPREVf
U1dJVENIKHR5cGUtPmtpbmRfY29kZSkKKworICAgIGlmICh0eXBlLT5raW5kX2NvZGU9PVRTRl9U
S19BUlJBWSkgeworICAgICAgICByZXQ9dHNmX3R5cGVfY3JlYXRlX2FycmF5KHRzZl90eXBlX2Ns
b25lKHR5cGUtPnUuYS5lbGVtZW50X3R5cGUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXQ9
dHNmX3R5cGVfY3JlYXRlKHR5cGUtPmtpbmRfY29kZSk7CisgICAgfQorICAgIAorICAgIGlmIChy
ZXQ9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICh0
c2ZfdHlwZV9nZXRfY29tbWVudCh0eXBlKSE9TlVMTCkgeworICAgICAgICByZXQtPmNvbW1lbnQ9
c3RyZHVwKHRzZl90eXBlX2dldF9jb21tZW50KHR5cGUpKTsKKyAgICAgICAgaWYgKHJldC0+Y29t
bWVudD09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFsbG9j
YXRlIGNvbW1lbnQiKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmICh0c2Zf
dHlwZV9nZXRfbmFtZSh0eXBlKSE9TlVMTCkgeworICAgICAgICByZXQtPm5hbWU9c3RyZHVwKHRz
Zl90eXBlX2dldF9uYW1lKHR5cGUpKTsKKyAgICAgICAgaWYgKHJldC0+bmFtZT09TlVMTCkgewor
ICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFsbG9jYXRlIG5hbWUiKTsKKyAg
ICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldC0+dmVyc2lvbj10eXBlLT52ZXJzaW9u
OworICAgIAorICAgIGlmICh0eXBlLT5raW5kX2NvZGU9PVRTRl9US19TVFJVQ1QpIHsKKyAgICAg
ICAgaWYgKCF0c2ZfdHlwZV90YWJsZV9jb3B5KHJldC0+dS5zLnR0LHR5cGUtPnUucy50dCkpIHsK
KyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICB9CisgICAgICAgIHJldC0+dS5zLmhhc19zaXplPXR5cGUtPnUucy5oYXNf
c2l6ZTsKKyAgICAgICAgcmV0LT51LnMuc2l6ZT10eXBlLT51LnMuc2l6ZTsKKyAgICB9IGVsc2Ug
aWYgKHR5cGUtPmtpbmRfY29kZT09VFNGX1RLX0NIT0lDRSkgeworICAgICAgICBpZiAoIXRzZl90
eXBlX3RhYmxlX2NvcHkocmV0LT51LmgudHQsdHlwZS0+dS5oLnR0KSkgeworICAgICAgICAgICAg
dHNmX3R5cGVfZGVzdHJveShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAg
IH0KKyAgICAgICAgcmV0LT51LmguaGFzX21hcHBpbmc9dHlwZS0+dS5oLmhhc19tYXBwaW5nOwor
ICAgICAgICByZXQtPnUuaC5pbl9wbGFjZT10eXBlLT51LmguaW5fcGxhY2U7CisgICAgICAgIHJl
dC0+dS5oLmRhdGFfb2Zmc2V0PXR5cGUtPnUuaC5kYXRhX29mZnNldDsKKyAgICAgICAgcmV0LT51
LmgudmFsdWVfb2Zmc2V0PXR5cGUtPnUuaC52YWx1ZV9vZmZzZXQ7CisgICAgICAgIHJldC0+dS5o
LnNpemU9dHlwZS0+dS5oLnNpemU7CisgICAgfQorICAgIAorICAgIHJldC0+aXNfZHluYW1pYz10
eXBlLT5pc19keW5hbWljOworICAgIHRzZl90eXBlX3JlY29tcHV0ZV9oYXNoKHJldCk7CisgICAg
cmV0LT5ieXRlX3NpemU9dHlwZS0+Ynl0ZV9zaXplOworICAgIAorICAgIHJldHVybiByZXQ7Cit9
CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX293bl9iZWdpbih0c2ZfdHlwZV90ICp0eXBlKSB7Cisg
ICAgaWYgKHRzZl9hdG9taWNfY291bnRfdmFsdWUoJnR5cGUtPnJlZl9jb3VudCkgPT0gMSkgewor
ICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90eXBlX2Ns
b25lKHR5cGUpOworfQorCit2b2lkIHRzZl90eXBlX293bl9jb21taXQodHNmX3R5cGVfdCAqKmRz
dCwgdHNmX3R5cGVfdCAqcmV0KSB7CisgICAgaWYgKCpkc3QgPT0gcmV0KSB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgdHNmX3R5cGVfZGVzdHJveSgqZHN0KTsKKyAgICAqZHN0
ID0gcmV0OworfQorCit2b2lkIHRzZl90eXBlX293bl9hYm9ydCh0c2ZfdHlwZV90ICpkc3QsIHRz
Zl90eXBlX3QgKnJldCkgeworICAgIGlmIChkc3QgPT0gcmV0KSB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgdHNmX3R5cGVfZGVzdHJveShyZXQpOworfQorCit2b2lkIHRzZl90
eXBlX2Rlc3Ryb3kodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIC8qIHByaW50ZigidHNmX3R5cGU6
IGRlc3Ryb3k6ICVwXG4iLCB0eXBlKTsgKi8KKyAgICAKKyAgICBpZiAoaXNfc2luZ2xldG9uKHR5
cGUtPmtpbmRfY29kZSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAodHNmX2F0b21p
Y19jb3VudF94c3ViKCZ0eXBlLT5yZWZfY291bnQsIDEpID4gMSkgeworICAgICAgICAvKiBwcmlu
dGYoImRpZG4ndCBkZXN0cm95IGEgdHlwZSBhdCAlcFxuIix0eXBlKTsgKi8KKyAgICAgICAgcmV0
dXJuOyAgICAgCisgICAgfQorICAgIAorICAgIC8qIHByaW50ZigidHNmX3R5cGU6IHJlYWxseSBk
ZXN0cm95OiAlcFxuIiwgdHlwZSk7ICovCisgICAgCisgICAgaWYgKHR5cGUtPm1lbW9fbWFzdGVy
ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHR5cGUtPm1lbW9fbWFzdGVyID09IHR5cGUpIHsKKyAg
ICAgICAgICAgIC8qIG5lZWQgdG8gcmVtb3ZlIG15c2VsZiBmcm9tIHRoZSBtZW1vIHRhYmxlLiAq
LworICAgICAgICAgICAgdHNmX3R5cGVfdCAqdG9fZGVsZXRlID0gdHlwZTsKKyAgICAgICAgICAg
IHRzZl9tdXRleF9sb2NrKCZtZW1vX2xvY2spOworICAgICAgICAgICAgdHNmX3N0X2RlbGV0ZSht
ZW1vX3RhYmxlLCAoY2hhcioqKSZ0b19kZWxldGUsIE5VTEwpOworICAgICAgICAgICAgdHNmX211
dGV4X3VubG9jaygmbWVtb19sb2NrKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8q
IHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIHRoZSBtZW1vIG1hc3Rlci4gKi8KKyAgICAgICAgICAg
IC8qIHByaW50ZigiRGVzdHJveWluZyBtZW1vIG1hc3RlcjogJXBcbiIsIHR5cGUtPm1lbW9fbWFz
dGVyKTsgKi8KKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZS0+bWVtb19tYXN0ZXIp
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN3aXRjaCAodHlwZS0+a2luZF9jb2RlKSB7
CisgICAgICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJv
eSh0eXBlLT51LmEuZWxlbWVudF90eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFRTRl9US19TVFJVQ1Q6CisgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV9kZXN0cm95KHR5
cGUtPnUucy50dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUU0ZfVEtfQ0hP
SUNFOgorICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfZGVzdHJveSh0eXBlLT51LmgudHQpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdHNmX2F0
b21pY19jb3VudF9kZXN0cm95KCZ0eXBlLT5yZWZfY291bnQpOworICAgIAorICAgIGlmICh0eXBl
LT5jb21tZW50IT1OVUxMKSB7CisgICAgICAgIGZyZWUodHlwZS0+Y29tbWVudCk7CisgICAgfQor
ICAgIAorICAgIGlmICh0eXBlLT5uYW1lIT1OVUxMKSB7CisgICAgICAgIGZyZWUodHlwZS0+bmFt
ZSk7CisgICAgfQorICAgIAorICAgIGZyZWUodHlwZSk7CisgICAgCisgICAgZGVjcmVtZW50X3R5
cGVfYmFsYW5jZSgpOworCisgICAgLyogcHJpbnRmKCJkZXN0cm95ZWQgYSB0eXBlIGF0ICVwXG4i
LHR5cGUpOyAqLworfQorCitzdGF0aWMgdHNmX2Jvb2xfdCB0eXBlX3ZlcmlmeV9yZWModHNmX3R5
cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRz
X3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBk
ZXB0aCkgeworICAgIHVpbnQzMl90IGk7CisKKyAgICBpZiAoZGVwdGg9PXRzZl9saW1pdHNfZGVw
dGhfbGltaXQobGltaXRzKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9BTExP
V0VELAorICAgICAgICAgICAgICAgICAgICAgICJUeXBlIGV4Y2VlZHMgZGVwdGggbGltaXQiKTsK
KyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKCF0eXBlX2tp
bmRfdmVyaWZ5KHR5cGUtPmtpbmRfY29kZSxsaW1pdHMsVFNGX0VfTk9UX0FMTE9XRUQpKSB7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICh0eXBlLT5jb21t
ZW50IT1OVUxMICYmCisgICAgICAgICF0c2ZfbGltaXRzX2FsbG93X2NvbW1lbnRzKGxpbWl0cykp
IHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfQUxMT1dFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAiRW5jb3VudGVyZWQgY29tbWVudHMsIGJ1dCBjb21tZW50ZWQgYXJlIG5vdCBh
bGxvd2VkIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHN3
aXRjaCAodHlwZS0+a2luZF9jb2RlKSB7CisgICAgICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAg
ICAgICAgICAgaWYgKCF0eXBlX3ZlcmlmeV9yZWModHlwZS0+dS5hLmVsZW1lbnRfdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoKzEpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRT
Rl9US19TVFJVQ1Q6CisgICAgICAgICAgICBpZiAodHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxl
bWVudHModHlwZSk+CisgICAgICAgICAgICAgICAgdHNmX2xpbWl0c19tYXhfc3RydWN0X3NpemUo
bGltaXRzKSkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfTk9UX0FMTE9X
RUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RydWN0dXJlIHR5cGUgc2l6ZSBs
aW1pdCBleGNlZWRlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGk9MDsKKyAgICAgICAgICAgICAgICAgaTx0c2Zf
c3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsKKyAgICAgICAgICAgICAgICAgKytp
KSB7CisgICAgICAgICAgICAgICAgaWYgKHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudCh0eXBl
LGkpLT5jb21tZW50IT1OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICF0c2ZfbGltaXRzX2Fs
bG93X2NvbW1lbnRzKGxpbWl0cykpIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9OT1RfQUxMT1dFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RW5jb3VudGVyZWQgY29tbWVudHMsIGJ1dCBjb21tZW50ZWQgYXJlICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAibm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgaWYgKCF0eXBlX3ZlcmlmeV9yZWModHNmX3N0cnVjdF90eXBlX2dldF9l
bGVtZW50KHR5cGUsaSktPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoKzEp
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFNG
X1RLX0NIT0lDRToKKyAgICAgICAgICAgIGlmICh0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVt
ZW50cyh0eXBlKT4KKyAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX21heF9jaG9pY2Vfc2l6ZShs
aW1pdHMpKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfQUxMT1dF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgdHlwZSBzaXplIGxpbWl0
IGV4Y2VlZGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGZvciAoaT0wOworICAgICAgICAgICAgICAgICBpPHRzZl9jaG9p
Y2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpOworICAgICAgICAgICAgICAgICArK2kpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXR5cGVfdmVyaWZ5X3JlYyh0c2ZfY2hvaWNlX3R5cGVfZ2V0
X2VsZW1lbnQodHlwZSxpKS0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW1pdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgr
MSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7
Cit9CisKK3VpbnQzMl90IHRzZl90eXBlX2dldF9ieXRlX3NpemUodHNmX3R5cGVfdCAqdHlwZSkg
eworICAgIHVpbnQzMl90IHNpemU9dHlwZS0+Ynl0ZV9zaXplOworICAgIGlmIChzaXplPT0wKSB7
CisgICAgICAgIHRzZl9ib29sX3QgcmVzdWx0PXRzZl90eXBlX3dyaXRlKHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9zaXplX2NhbGNfd3JpdGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZSk7CisgICAgICAg
IHRzZl9hc3NlcnQocmVzdWx0KTsKKyAgICAgICAgdHlwZS0+Ynl0ZV9zaXplPXNpemU7CisgICAg
fQorICAgIHJldHVybiBzaXplOworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX3ZlcmlmeSh0c2Zf
dHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICps
aW1pdHMpIHsKKyAgICBpZiAobGltaXRzPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfdHJ1
ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2dldF9ieXRlX3NpemUodHlwZSk+Cisg
ICAgICAgIHRzZl9saW1pdHNfbWF4X3R5cGVfc2l6ZShsaW1pdHMpKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfTk9UX0FMTE9XRUQsCisgICAgICAgICAgICAgICAgICAgICAgIlR5cGUg
aXMgbGFyZ2VyIHRoYW4gdHlwZSBzaXplIGxpbWl0Iik7CisgICAgICAgIHJldHVybiB0c2ZfZmFs
c2U7CisgICAgfQorICAgIAorICAgIC8qIHZlcmlmeSBhbGwgZWxzZSAqLworICAgIHJldHVybiB0
eXBlX3ZlcmlmeV9yZWModHlwZSxsaW1pdHMsMCk7Cit9CisKK2ludCB0c2ZfdHlwZV9nZXRfaGFz
aCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuIHR5cGUtPmhhc2hfY29kZTsKK30KKwor
dm9pZCB0c2ZfdHlwZV9yZWNvbXB1dGVfaGFzaCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgdHlw
ZS0+aGFzaF9jb2RlID0gdHlwZS0+a2luZF9jb2RlOworICAgIHN3aXRjaCAodHlwZS0+a2luZF9j
b2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQVJSQVk6CisgICAgICAgIHR5cGUtPmhhc2hfY29kZSAr
PSB0c2ZfdHlwZV9nZXRfaGFzaCh0eXBlLT51LmEuZWxlbWVudF90eXBlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICB0eXBlLT5oYXNoX2NvZGUgKz0g
dHNmX3R5cGVfdGFibGVfZ2V0X2hhc2godHlwZS0+dS5zLnR0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAgICAgICB0eXBlLT5oYXNoX2NvZGUgKz0KKyAgICAg
ICAgICAgIHRzZl90eXBlX3RhYmxlX2dldF9oYXNoKHR5cGUtPnUuaC50dCkgKworICAgICAgICAg
ICAgdHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQ7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9j
b21wYXJlKHRzZl90eXBlX3QgKmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfdCAqYikgeworICAgIGlmIChhID09IGIpIHsKKyAgICAgICAgcmV0dXJuIHRzZl90cnVlOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoYS0+a2luZF9jb2RlICE9IGItPmtpbmRfY29kZSkgeworICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKGEtPmtpbmRf
Y29kZSkgeworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgICAgICBpZiAoIXRzZl90eXBlX2Nv
bXBhcmUoYS0+dS5hLmVsZW1lbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGItPnUuYS5lbGVtZW50X3R5cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICAg
ICAgaWYgKCF0c2ZfdHlwZV90YWJsZV9jb21wYXJlKGEtPnUucy50dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGItPnUucy50dCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hP
SUNFOgorICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX2NvbXBhcmUoYS0+dS5oLnR0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi0+dS5oLnR0KSkgeworICAgICAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYS0+dS5oLmNob2lj
ZV9hc19mdWxsX3dvcmQgIT0gYi0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpIHsKKyAgICAgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsK
K30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfbWVtbyh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAg
dHNmX3R5cGVfdCAqcmVzdWx0OworICAgIAorICAgIHJlc3VsdCA9IHR5cGUtPm1lbW9fbWFzdGVy
OworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
CisgICAgdHNmX211dGV4X2xvY2soJm1lbW9fbG9jayk7CisgICAgaWYgKHRzZl9zdF9sb29rdXAo
bWVtb190YWJsZSwgKGNoYXIqKXR5cGUsICh2b2lkKiopJnJlc3VsdCkpIHsKKyAgICAgICAgdHlw
ZS0+bWVtb19tYXN0ZXIgPSB0c2ZfdHlwZV9kdXAocmVzdWx0KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAodHNmX3N0X2FkZF9kaXJlY3QobWVtb190YWJsZSwgKGNoYXIqKXR5cGUsICh2b2lk
Kil0eXBlKSA8IDApIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtZW1v
aXplIHR5cGUiKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0eXBlLT5tZW1vX21hc3RlciA9IHR5cGU7CisgICAgICAgICAgICByZXN1
bHQgPSB0eXBlOworICAgICAgICB9CisgICAgfQorICAgIHRzZl9tdXRleF91bmxvY2soJm1lbW9f
bG9jayk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlw
ZV9pc19keW5hbWljKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+aXNfZHlu
YW1pYzsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9pbnN0YW5jZW9mKHRzZl90eXBlX3QgKm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0d28pIHsKKyAg
ICBpZiAodHdvLT5raW5kX2NvZGU9PVRTRl9US19WT0lEKSB7CisgICAgICAgIHJldHVybiB0c2Zf
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAodHNmX3R5cGVfa2luZF9pc19wcmltaXRpdmUob25lLT5r
aW5kX2NvZGUpIHx8CisJb25lLT5raW5kX2NvZGU9PVRTRl9US19CSVQpIHsKKyAgICAgICAgcmV0
dXJuIHRzZl90eXBlX2tpbmRfaXNfcHJpbWl0aXZlKHR3by0+a2luZF9jb2RlKQorCSAgICB8fCB0
d28tPmtpbmRfY29kZT09VFNGX1RLX0JJVDsKKyAgICB9CisgICAgCisgICAgaWYgKG9uZS0+a2lu
ZF9jb2RlIT10d28tPmtpbmRfY29kZSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
IH0KKworICAgIHN3aXRjaCAob25lLT5raW5kX2NvZGUpIHsKKyAgICAgICAgY2FzZSBUU0ZfVEtf
QVJSQVk6CisgICAgICAgICAgICByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZihvbmUtPnUuYS5l
bGVtZW50X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28t
PnUuYS5lbGVtZW50X3R5cGUpOworICAgICAgICBjYXNlIFRTRl9US19TVFJVQ1Q6CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgICAgICAgICBmb3Ig
KGk9MDtpPHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR3byk7KytpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm49dHNmX3N0cnVjdF90eXBlX2dldF9l
bGVtZW50KHR3byxpKTsKKyAgICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbjI9
CisgICAgICAgICAgICAgICAgICAgICAgICB0c2Zfc3RydWN0X3R5cGVfZmluZF9ub2RlKG9uZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfbmFtZShuKSk7
CisJCSAgICBpZiAobi0+b3B0aW9uYWwpIHsKKwkJCWNvbnRpbnVlOworCQkgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAobjI9PU5VTEwgfHwgbjItPm9wdGlvbmFsKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghdHNmX3R5cGVfaW5zdGFuY2VvZigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0X3R5cGUobjIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfdHlwZShuKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGk7CisgICAgICAgICAgICAgICAgZm9yIChpPTA7aTx0c2ZfY2hvaWNlX3R5
cGVfZ2V0X251bV9lbGVtZW50cyhvbmUpOysraSkgeworICAgICAgICAgICAgICAgICAgICB0c2Zf
bmFtZWRfdHlwZV90ICpuPXRzZl9jaG9pY2VfdHlwZV9nZXRfZWxlbWVudChvbmUsaSk7CisgICAg
ICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4yPQorICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX2Nob2ljZV90eXBlX2ZpbmRfbm9kZSh0d28sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0X25hbWUobikpOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4yPT1OVUxMKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0c2ZfdHlwZV9pbnN0YW5jZW9mKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfdHlwZShuKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0X3R5cGUobjIpKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3Ry
dWU7Cit9CisKK3RzZl90eXBlX2tpbmRfdCB0c2ZfdHlwZV9nZXRfa2luZF9jb2RlKHRzZl90eXBl
X3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+a2luZF9jb2RlOworfQorCit1aW50MzJfdCB0
c2ZfdHlwZV9nZXRfc3RhdGljX3NpemUodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHN3aXRjaCAo
dHlwZS0+a2luZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQVJSQVk6CisgICAgICAgIHJldHVy
biBVSU5UMzJfTUFYOworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDogeworICAgICAgICB1aW50MzJf
dCBpLCBudW1fYml0cyA9IDAsIHJldCA9IDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zf
c3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAgICAgICAgICB1
aW50MzJfdCB0bXA7CisgICAgICAgICAgICBpZiAodHNmX3N0cnVjdF90eXBlX2dldF9lbGVtZW50
KHR5cGUsaSktPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICAg
ICAgKytudW1fYml0czsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHRtcCA9IHRzZl90eXBlX2dldF9zdGF0aWNfc2l6ZSgKKyAgICAgICAgICAg
ICAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQodHlwZSwgaSktPnR5cGUpOworICAgICAg
ICAgICAgaWYgKHRtcCA9PSBVSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVJ
TlQzMl9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXQgKz0gdG1wOworICAgICAg
ICB9CisgICAgICAgIHJldCArPSAoKG51bV9iaXRzICsgNykgPj4gMyk7CisgICAgICAgIHJldHVy
biByZXQ7CisgICAgfQorICAgIGNhc2UgVFNGX1RLX0NIT0lDRToKKyAgICAgICAgaWYgKHRzZl9j
aG9pY2VfdHlwZV9oYXNfbm9uX3ZvaWQodHlwZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBVSU5U
MzJfTUFYOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRzZl9jaG9pY2VfdHlw
ZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpID49IDI1NikgeworICAgICAgICAgICAgICAgIGlmICh0
eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29yZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gNDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVUlOVDMyX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0JJVDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
Y2FzZSBUU0ZfVEtfVk9JRDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBUU0ZfVEtfU1RS
SU5HOgorICAgICAgICByZXR1cm4gVUlOVDMyX01BWDsKKyAgICBjYXNlIFRTRl9US19BTlk6Cisg
ICAgICAgIHJldHVybiBVSU5UMzJfTUFYOworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisgICAg
Y2FzZSBUU0ZfVEtfTE9ORzoKKyAgICAgICAgcmV0dXJuIFVJTlQzMl9NQVg7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX3NpemVfb2YodHlwZS0+
a2luZF9jb2RlKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKnRzZl90eXBlX2dldF9jb21tZW50
KHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+Y29tbWVudDsKK30KKwordHNm
X2Jvb2xfdCB0c2ZfdHlwZV9oYXNfY29tbWVudCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0
dXJuIHR5cGUtPmNvbW1lbnQgIT0gTlVMTDsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9zZXRf
Y29tbWVudCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqY29tbWVudCkgeworICAgIGNoYXIgKmNvbW1lbnRfY29weTsKKyAgICB0
c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKCF0c2ZfdHlwZV9raW5kX2lzX2NvbW1lbnRh
YmxlKCgqdHlwZSktPmtpbmRfY29kZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9C
QURfVFlQRV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gdHlwZSBpcyBu
b3QgY29tbWVudGFibGUiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAg
CisgICAgaWYgKHN0cmxlbihjb21tZW50KSArIDEgPiBUU0ZfTUFYX0NPTU1FTlRfU0laRSkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1NUUl9PVkVSRkxPVywKKyAgICAgICAgICAgICAg
ICAgICAgICAiU3RyaW5nICclcycgaXMgdG9vIGxvbmcgdG8gYmUgdXNlZCBhcyBhIHR5cGUgY29t
bWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCk7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGNvbW1lbnRfY29weSA9IHN0cmR1cChjb21tZW50
KTsKKyAgICBpZiAoY29tbWVudF9jb3B5ID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJu
bygiQ291bGQgbm90IHN0ZHVwIGNvbW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgcmV0ID0gdHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAgICBp
ZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShjb21tZW50X2NvcHkpOworICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAocmV0LT5jb21tZW50ICE9IE5V
TEwpIHsKKyAgICAgICAgZnJlZShyZXQtPmNvbW1lbnQpOworICAgIH0KKyAgICByZXQtPmNvbW1l
bnQgPSBjb21tZW50X2NvcHk7CisgICAgcmV0LT5ieXRlX3NpemUgPSAwOworICAgIAorICAgIHRz
Zl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisK
K2NvbnN0IGNoYXIgKnRzZl90eXBlX2dldF9uYW1lKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICBy
ZXR1cm4gdHlwZS0+bmFtZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9oYXNfbmFtZSh0c2Zf
dHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuIHR5cGUtPm5hbWUgIT0gTlVMTDsKK30KKwordHNm
X2Jvb2xfdCB0c2ZfdHlwZV9zZXRfbmFtZSh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgeworICAgIGNoYXIgKm5hbWVfY29w
eTsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKCF0c2ZfdHlwZV9raW5kX2lz
X2NvbW1lbnRhYmxlKCgqdHlwZSktPmtpbmRfY29kZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4g
dHlwZSBpcyBub3QgY29tbWVudGFibGUiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICB9CisgICAgCisgICAgaWYgKHN0cmxlbihuYW1lKSArIDEgPiBUU0ZfTUFYX05BTUVfU0laRSkg
eworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1NUUl9PVkVSRkxPVywKKyAgICAgICAgICAg
ICAgICAgICAgICAiU3RyaW5nICclcycgaXMgdG9vIGxvbmcgdG8gYmUgdXNlZCBhcyBhIHR5cGUg
bmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorICAgIAorICAgIG5hbWVfY29weSA9IHN0cmR1cChuYW1lKTsKKyAgICBp
ZiAobmFtZV9jb3B5ID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90
IHN0cmR1cCBuYW1lIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIHJldCA9IHRzZl90eXBlX293bl9iZWdpbigqdHlwZSk7CisgICAgaWYgKHJldCA9PSBOVUxM
KSB7CisgICAgICAgIGZyZWUobmFtZV9jb3B5KTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgaWYgKHJldC0+bmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGZyZWUo
cmV0LT5uYW1lKTsKKyAgICB9CisgICAgcmV0LT5uYW1lID0gbmFtZV9jb3B5OworICAgIHJldC0+
Ynl0ZV9zaXplID0gMDsKKyAgICAKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7
CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX2hhc192ZXJz
aW9uKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+dmVyc2lvbiAhPSAwOwor
fQorCit1aW50MzJfdCB0c2ZfdHlwZV9nZXRfcmF3X3ZlcnNpb24odHNmX3R5cGVfdCAqdHlwZSkg
eworICAgIHJldHVybiB0eXBlLT52ZXJzaW9uOworfQorCit1aW50MTZfdCB0c2ZfdHlwZV9nZXRf
bWFqb3JfdmVyc2lvbih0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlLT52ZXJz
aW9uID4+IDE2KSAmIDB4ZmZmZjsKK30KKwordWludDhfdCB0c2ZfdHlwZV9nZXRfbWlub3JfdmVy
c2lvbih0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlLT52ZXJzaW9uID4+IDgp
ICYgMHhmZjsKK30KKwordWludDhfdCB0c2ZfdHlwZV9nZXRfcGF0Y2hfdmVyc2lvbih0c2ZfdHlw
ZV90ICp0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlLT52ZXJzaW9uID4+IDApICYgMHhmZjsKK30K
KwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9zZXRfcmF3X3ZlcnNpb24odHNmX3R5cGVfdCAqKnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2ZXJzaW9uKSB7
CisgICAgdHNmX3R5cGVfdCAqcmV0OworICAgIAorICAgIGlmICghdHNmX3R5cGVfa2luZF9pc19j
b21tZW50YWJsZSgoKnR5cGUpLT5raW5kX2NvZGUpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3Io
VFNGX0VfQkFEX1RZUEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIHR5
cGUgaXMgbm90IGNvbW1lbnRhYmxlIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
fQorICAgIAorICAgIHJldCA9IHRzZl90eXBlX293bl9iZWdpbigqdHlwZSk7CisgICAgaWYgKHJl
dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAg
IHJldC0+dmVyc2lvbiA9IHZlcnNpb247CisgICAgcmV0LT5ieXRlX3NpemUgPSAwOworICAgIAor
ICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7
Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfc2V0X3ZlcnNpb24odHNmX3R5cGVfdCAqKnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1ham9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IG1pbm9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90IHBhdGNoKSB7CisgICAgcmV0dXJuIHRzZl90eXBlX3Nl
dF9yYXdfdmVyc2lvbih0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCgoKHVpbnQzMl90KW1ham9yKSAmIDB4ZmZmZikgPDwgMTYpIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgoKCh1aW50MzJfdCltaW5vcikgJiAweGZmKSA8PCA4KSB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgodWludDMyX3QpcGF0Y2gpICYg
MHhmZikgPDwgMCkpOworfQorCit0c2ZfdHlwZV90ICp0c2ZfYXJyYXlfdHlwZV9nZXRfZWxlbWVu
dF90eXBlKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+dS5hLmVsZW1lbnRf
dHlwZTsKK30KKwordHNmX2Jvb2xfdCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kKHRzZl90eXBlX3Qg
Kip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqZWxlX3R5
cGUpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQgPSB0c2ZfdHlwZV9vd25fYmVnaW4oKnR5cGUpOwor
ICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICBpZiAoZWxlX3R5cGUhPU5VTEwpIHsKKyAg
ICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3koZWxlX3R5cGUpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3R5cGVfdGFibGVf
YXBwZW5kKHJldC0+dS5zLnR0LG5hbWUsZWxlX3R5cGUpKSB7CisgICAgICAgIHRzZl90eXBlX293
bl9hYm9ydCgqdHlwZSwgcmV0KTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKGVsZV90eXBlLT5pc19keW5hbWljKSB7CisgICAgICAgIHJldC0+aXNfZHlu
YW1pYz10c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLyogZGVwZW5kaW5nIG9uIHRoZSBpbnZh
cmlhbnQgdGhhdCB0aGUgaGFzaCBjb2RlIG9mIHRoZSB0eXBlIHRhYmxlIGlzCisgICAgICoganVz
dCB0aGUgc3VtIG9mIHRoZSBoYXNoIGNvZGVzIG9mIHRoZSBuYW1lZCB0eXBlcy4gKi8KKyAgICBy
ZXQtPmhhc2hfY29kZSArPQorICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfaGFzaCgKKyAgICAg
ICAgICAgIHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfaW5kZXgocmV0LT51LnMudHQsCisgICAgICAg
ICAgICAgICAgdHNmX3R5cGVfdGFibGVfZ2V0X251bV9lbGVtZW50cyhyZXQtPnUucy50dCktMSkp
OworCisgICAgcmV0LT5ieXRlX3NpemU9MDsKKyAgICAKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0
KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9z
dHJ1Y3RfdHlwZV9yZW1vdmUodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgeworICAgIHRzZl90eXBlX3QgKnJldDsK
KyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuYW1lZF90eXBlOworICAgIGludCBoYXNoX2NvZGU7Cisg
ICAgCisgICAgcmV0ID0gdHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAgICBpZiAocmV0ID09
IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbmFt
ZWRfdHlwZSA9IHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfbmFtZShyZXQtPnUucy50dCwgbmFtZSk7
CisgICAgaWYgKG5hbWVkX3R5cGUgPT0gTlVMTCkgeworICAgICAgICB0c2ZfdHlwZV9vd25fYWJv
cnQoKnR5cGUsIHJldCk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIC8qIGRlcGVuZGluZyBvbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGhhc2ggY29kZSBvZiB0
aGUgdHlwZSB0YWJsZQorICAgICAqIGlzIGp1c3QgdGhlIHN1bSBvZiB0aGUgaGFzaCBjb2RlcyBv
ZiB0aGUgbmFtZWQgdHlwZXMuICovCisgICAgaGFzaF9jb2RlID0gdHNmX25hbWVkX3R5cGVfZ2V0
X2hhc2gobmFtZWRfdHlwZSk7CisKKyAgICBpZiAoIXRzZl90eXBlX3RhYmxlX3JlbW92ZShyZXQt
PnUucy50dCwgbmFtZSkpIHsKKyAgICAgICAgdHNmX3R5cGVfb3duX2Fib3J0KCp0eXBlLCByZXQp
OworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXQtPmhhc2hf
Y29kZSAtPSBoYXNoX2NvZGU7CisgICAgcmV0LT5ieXRlX3NpemUgPSAwOworICAgIAorICAgIHRz
Zl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisK
K3RzZl9ib29sX3QgdHNmX3N0cnVjdF90eXBlX3NldF9jb21tZW50KHRzZl90eXBlX3QgKip0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNv
bW1lbnQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgdHNmX25hbWVkX3R5cGVfdCAqbjsK
KyAgICAKKyAgICByZXQgPSB0c2ZfdHlwZV9vd25fYmVnaW4oKnR5cGUpOworICAgIGlmIChyZXQg
PT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBu
ID0gdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShyZXQsbmFtZSk7CisgICAgCisgICAgaWYgKG4g
PT0gTlVMTCkgeworICAgICAgICB0c2ZfdHlwZV9vd25fYWJvcnQoKnR5cGUsIHJldCk7CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX25hbWVkX3R5
cGVfc2V0X2NvbW1lbnQobiwgY29tbWVudCkpIHsKKyAgICAgICAgdHNmX3R5cGVfb3duX2Fib3J0
KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAg
ICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJl
dCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJ1Y3RfdHlw
ZV9zZXRfb3B0aW9uYWwodHNmX3R5cGVfdCAqKnR5cGUsCisJCQkJCWNvbnN0IGNoYXIgKm5hbWUs
CisJCQkJCXRzZl9ib29sX3Qgb3B0aW9uYWwpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAg
dHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICByZXQgPSB0c2ZfdHlwZV9vd25fYmVnaW4o
KnR5cGUpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgIH0KKyAgICAKKyAgICBuID0gdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShyZXQsIG5h
bWUpOworICAgIAorICAgIGlmIChuID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3R5cGVfb3duX2Fi
b3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAK
KyAgICB0c2ZfbmFtZWRfdHlwZV9zZXRfb3B0aW9uYWwobiwgb3B0aW9uYWwpOworICAgIAorICAg
IHJldC0+Ynl0ZV9zaXplID0gMDsKKworICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0
KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9zdHJ1Y3RfdHlw
ZV9maW5kKHRzZl90eXBlX3QgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgICB0c2ZfbmFt
ZWRfdHlwZV90ICpuID0gdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZSh0eXBlLCBuYW1lKTsKKyAg
ICBpZiAobiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gbi0+dHlwZTsKK30KKwordHNmX25hbWVkX3R5cGVfdCAqdHNmX3N0cnVjdF90eXBl
X2ZpbmRfbm9kZSh0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7CisgICAgcmV0dXJuIHRzZl90eXBl
X3RhYmxlX2ZpbmRfYnlfbmFtZSh0eXBlLT51LnMudHQsIG5hbWUpOworfQorCit1aW50MzJfdCB0
c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAg
cmV0dXJuIHRzZl90eXBlX3RhYmxlX2dldF9udW1fZWxlbWVudHModHlwZS0+dS5zLnR0KTsKK30K
KwordHNmX25hbWVkX3R5cGVfdCAqdHNmX3N0cnVjdF90eXBlX2dldF9lbGVtZW50KHRzZl90eXBl
X3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgaW5kZXgpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRl
eCh0eXBlLT51LnMudHQsIGluZGV4KTsKK30KKworY29uc3QgY2hhciAqdHNmX3N0cnVjdF90eXBl
X2dldF9lbGVtZW50X25hbWUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJuIHRz
Zl9uYW1lZF90eXBlX2dldF9uYW1lKAorICAgICAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1l
bnQodHlwZSwgaW5kZXgpKTsKK30KKwordHNmX3R5cGVfdCAqdHNmX3N0cnVjdF90eXBlX2dldF9l
bGVtZW50X3R5cGUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJuIHRzZl9uYW1l
ZF90eXBlX2dldF90eXBlKAorICAgICAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQodHlw
ZSwgaW5kZXgpKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kKHRzZl90
eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAq
ZWxlX3R5cGUpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKCFzdHJjbXAo
bmFtZSwgInVua25vd24iKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05BTUVfQ09M
TElTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICJUaGUgbmFtZSAndW5rbm93bicgaXMgcmVz
ZXJ2ZWQgaW4gY2hvaWNlIHR5cGVzIik7CisgICAgICAgIGlmIChlbGVfdHlwZSAhPSBOVUxMKSB7
CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KGVsZV90eXBlKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXQgPSB0c2ZfdHlwZV9v
d25fYmVnaW4oKnR5cGUpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICBpZiAoZWxl
X3R5cGUgIT0gTlVMTCkgeworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShlbGVfdHlwZSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
IXRzZl90eXBlX3RhYmxlX2FwcGVuZChyZXQtPnUuaC50dCwgbmFtZSwgZWxlX3R5cGUpKSB7Cisg
ICAgICAgIHRzZl90eXBlX293bl9hYm9ydCgqdHlwZSwgcmV0KTsKKyAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKGVsZV90eXBlLT5pc19keW5hbWljKSB7Cisg
ICAgICAgIHJldC0+aXNfZHluYW1pYyA9IHRzZl90cnVlOworICAgIH0KKyAgICAKKyAgICAvKiBk
ZXBlbmRpbmcgb24gdGhlIGludmFyaWFudCB0aGF0IHRoZSBoYXNoIGNvZGUgb2YgdGhlIHR5cGUg
dGFibGUgaXMKKyAgICAgKiBqdXN0IHRoZSBzdW0gb2YgdGhlIGhhc2ggY29kZXMgb2YgdGhlIG5h
bWVkIHR5cGVzLiAqLworICAgIHJldC0+aGFzaF9jb2RlICs9CisgICAgICAgIHRzZl9uYW1lZF90
eXBlX2dldF9oYXNoKAorICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRleChy
ZXQtPnUuaC50dCwKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV9nZXRfbnVtX2VsZW1l
bnRzKHJldC0+dS5oLnR0KSAtIDEpKTsKKworICAgIHJldC0+Ynl0ZV9zaXplID0gMDsKKyAgICAK
KyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVl
OworfQorCit0c2ZfYm9vbF90IHRzZl9jaG9pY2VfdHlwZV9yZW1vdmUodHNmX3R5cGVfdCAqKnR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkg
eworICAgIHRzZl90eXBlX3QgKnJldDsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuYW1lZF90eXBl
OworICAgIGludCBoYXNoX2NvZGU7CisgICAgCisgICAgcmV0ID0gdHNmX3R5cGVfb3duX2JlZ2lu
KCp0eXBlKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgbmFtZWRfdHlwZSA9IHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlf
bmFtZShyZXQtPnUuaC50dCwgbmFtZSk7CisgICAgaWYgKG5hbWVkX3R5cGUgPT0gTlVMTCkgewor
ICAgICAgICB0c2ZfdHlwZV9vd25fYWJvcnQoKnR5cGUsIHJldCk7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIC8qIGRlcGVuZGluZyBvbiB0aGUgaW52YXJpYW50
IHRoYXQgdGhlIGhhc2ggY29kZSBvZiB0aGUgdHlwZSB0YWJsZQorICAgICAqIGlzIGp1c3QgdGhl
IHN1bSBvZiB0aGUgaGFzaCBjb2RlcyBvZiB0aGUgbmFtZWQgdHlwZXMuICovCisgICAgaGFzaF9j
b2RlID0gdHNmX25hbWVkX3R5cGVfZ2V0X2hhc2gobmFtZWRfdHlwZSk7CisKKyAgICBpZiAoIXRz
Zl90eXBlX3RhYmxlX3JlbW92ZShyZXQtPnUuaC50dCwgbmFtZSkpIHsKKyAgICAgICAgdHNmX3R5
cGVfb3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
IH0KKyAgICAKKyAgICByZXQtPmhhc2hfY29kZSAtPSBoYXNoX2NvZGU7CisgICAgcmV0LT5ieXRl
X3NpemUgPSAwOworICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAg
ICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX2Nob2ljZV90eXBlX3NldF9j
b21tZW50KHRzZl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7Cisg
ICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICByZXQgPSB0c2ZfdHlwZV9vd25fYmVn
aW4oKnR5cGUpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgIH0KKyAgICAKKyAgICBuID0gdHNmX2Nob2ljZV90eXBlX2ZpbmRfbm9kZShyZXQs
bmFtZSk7CisgICAgCisgICAgaWYgKG4gPT0gTlVMTCkgeworICAgICAgICB0c2ZfdHlwZV9vd25f
YWJvcnQoKnR5cGUsIHJldCk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIGlmICghdHNmX25hbWVkX3R5cGVfc2V0X2NvbW1lbnQobiwgY29tbWVudCkpIHsKKyAg
ICAgICAgdHNmX3R5cGVfb3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisKKyAgICB0c2Zf
dHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0
c2ZfdHlwZV90ICp0c2ZfY2hvaWNlX3R5cGVfZmluZCh0c2ZfdHlwZV90ICp0eXBlLGNvbnN0IGNo
YXIgKm5hbWUpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuPXRzZl9jaG9pY2VfdHlwZV9maW5k
X25vZGUodHlwZSxuYW1lKTsKKyAgICBpZiAobj09TlVMTCkgeworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG4tPnR5cGU7Cit9CisKK3RzZl9uYW1lZF90eXBl
X3QgKnRzZl9jaG9pY2VfdHlwZV9maW5kX25vZGUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgewor
ICAgIHJldHVybiB0c2ZfdHlwZV90YWJsZV9maW5kX2J5X25hbWUodHlwZS0+dS5oLnR0LCBuYW1l
KTsKK30KKwordWludDMyX3QgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHNmX3R5
cGVfdCAqdHlwZSkgeworICAgIHJldHVybiB0c2ZfdHlwZV90YWJsZV9nZXRfbnVtX2VsZW1lbnRz
KHR5cGUtPnUuaC50dCk7Cit9CisKK3RzZl9uYW1lZF90eXBlX3QgKnRzZl9jaG9pY2VfdHlwZV9n
ZXRfZWxlbWVudCh0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJuIHRzZl90eXBl
X3RhYmxlX2ZpbmRfYnlfaW5kZXgodHlwZS0+dS5oLnR0LCBpbmRleCk7Cit9CisKK2NvbnN0IGNo
YXIgKnRzZl9jaG9pY2VfdHlwZV9nZXRfZWxlbWVudF9uYW1lKHRzZl90eXBlX3QgKnR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRl
eCkgeworICAgIHJldHVybiB0c2ZfbmFtZWRfdHlwZV9nZXRfbmFtZSgKKyAgICAgICAgdHNmX2No
b2ljZV90eXBlX2dldF9lbGVtZW50KHR5cGUsIGluZGV4KSk7Cit9CisKK3RzZl90eXBlX3QgKnRz
Zl9jaG9pY2VfdHlwZV9nZXRfZWxlbWVudF90eXBlKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCkgewor
ICAgIHJldHVybiB0c2ZfbmFtZWRfdHlwZV9nZXRfdHlwZSgKKyAgICAgICAgdHNmX2Nob2ljZV90
eXBlX2dldF9lbGVtZW50KHR5cGUsIGluZGV4KSk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2Nob2lj
ZV90eXBlX2hhc19ub25fdm9pZCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgdWludDMyX3QgaTsK
KyAgICBmb3IgKGk9MDtpPHRzZl90eXBlX3RhYmxlX2dldF9udW1fZWxlbWVudHModHlwZS0+dS5o
LnR0KTsrK2kpIHsKKyAgICAgICAgaWYgKHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfaW5kZXgodHlw
ZS0+dS5oLnR0LGkpLT4KKyAgICAgICAgICAgICAgICB0eXBlLT5raW5kX2NvZGUhPVRTRl9US19W
T0lEKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX3RydWU7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfY2hvaWNlX3R5cGVfdXNl
c19zYW1lX2luZGljZXModHNmX3R5cGVfdCAqYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKmIpIHsKKyAgICB1aW50MzJfdCBpOworICAg
IGlmICh0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyhhKT4KKyAgICAgICAgdHNmX2No
b2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoYikpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgZm9yIChpPTA7aTx0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50
cyhhKTsrK2kpIHsKKyAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbj10c2ZfY2hvaWNlX3R5cGVf
Z2V0X2VsZW1lbnQoYSxpKTsKKyAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbjI9dHNmX2Nob2lj
ZV90eXBlX2dldF9lbGVtZW50KGIsaSk7CisgICAgICAgIGlmIChzdHJjbXAodHNmX25hbWVkX3R5
cGVfZ2V0X25hbWUobiksCisgICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0X25h
bWUobjIpKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKKworCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfdHlwZV9pbl9tYXAuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGVfaW5fbWFwLmMJKG5v
bmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl90
eXBlX2luX21hcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzE1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUEla
TE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisjaWZkZWYgSEFW
RV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKK3N0YXRpYyB0c2ZfdHlw
ZV9pbl9tYXBfdCBlbXB0eV9zaW5nbGV0b247CitzdGF0aWMgdHNmX29uY2VfdCBlbXB0eV9zaW5n
bGV0b25fb25jZV9jb250cm9sID0gVFNGX09OQ0VfSU5JVDsKKwordHNmX3R5cGVfaW5fbWFwX3Qg
KnRzZl90eXBlX2luX21hcF9jcmVhdGUoKSB7CisgICAgcmV0dXJuIHRzZl90eXBlX2luX21hcF9j
cmVhdGVfaW4oTlVMTCk7Cit9CisKK3RzZl90eXBlX2luX21hcF90ICp0c2ZfdHlwZV9pbl9tYXBf
Y3JlYXRlX2luKHZvaWQgKnJlZ2lvbikgeworICAgIHRzZl90eXBlX2luX21hcF90ICpyZXQ9dHNm
X2NvbmRfYWxsb2MocmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKHRzZl90eXBlX2luX21hcF90KSk7CisgICAgaWYgKHJldD09TlVMTCkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2NvbmRfYWxsb2MgdHNmX3R5cGVf
aW5fbWFwX3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+
cmVnaW9uPXJlZ2lvbjsKKyAgICByZXQtPmVsZW1lbnRzPU5VTEw7CisgICAgcmV0LT5udW1fZWxl
bWVudHM9MDsKKyAgICByZXQtPmNhcGFjaXR5PTA7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30K
KwordHNmX3R5cGVfaW5fbWFwX3QgKnRzZl90eXBlX2luX21hcF9mcm9tX3R5cGVfb3V0X21hcCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBl
X291dF9tYXBfdCAqdHlwZV9tYXApIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfaW5fbWFwX2Zyb21f
dHlwZV9vdXRfbWFwX2luKHR5cGVfbWFwLE5VTEwpOworfQorCitzdGF0aWMgaW50IHRhYmxlX3Nu
YXRjaF9wYWlyKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
KSB7CisgICAgdHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzPWFyZzsKKyAgICBpZiAodHlwZXMtPnJl
Z2lvbiE9TlVMTCkgeworICAgICAgICBpZiAodHlwZXMtPmVsZW1lbnRzPT1OVUxMKSB7CisgICAg
ICAgICAgICBmcmVlKHZhbHVlKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7
CisgICAgICAgICAgICByZXR1cm4gVFNGX1NUX0NPTlRJTlVFOworICAgICAgICB9CisgICAgICAg
IGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2sodHlwZXMtPnJlZ2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodHNmX3JlZ2lvbl9jYmFja190KXRzZl90eXBlX2Rlc3Ryb3ks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpIHsKKyAgICAgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FkZF9jYmFjayBmb3IgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfZGVzdHJveSIpOworICAgICAgICAgICAg
dHNmX3R5cGVfZGVzdHJveSh0eXBlKTsKKyAgICAgICAgICAgIHR5cGVzLT5lbGVtZW50cz1OVUxM
OyAgIC8qIGhhY2tpc2ggc2lnbmFsIHRoYXQgc29tZXRoaW5nIGlzIHdyb25nLiAqLworICAgICAg
ICAgICAgcmV0dXJuIFRTRl9TVF9DT05USU5VRTsKKyAgICAgICAgfQorICAgIH0KKyAgICB0eXBl
cy0+ZWxlbWVudHNbKnZhbHVlXT10eXBlOworICAgIGZyZWUodmFsdWUpOworICAgIHJldHVybiBU
U0ZfU1RfQ09OVElOVUU7Cit9CisKK3RzZl90eXBlX2luX21hcF90ICp0c2ZfdHlwZV9pbl9tYXBf
ZnJvbV90eXBlX291dF9tYXBfaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAg
dHNmX3R5cGVfaW5fbWFwX3QgKnJldD10c2ZfY29uZF9hbGxvYyhyZWdpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHNmX3R5cGVfaW5fbWFwX3Qp
KTsKKyAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCB0c2ZfY29uZF9hbGxvYyB0c2ZfdHlwZV9pbl9tYXBfdCIpOworICAgICAgICBpZiAocmVnaW9u
PT1OVUxMKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX2Rlc3Ryb3kodHlwZV9tYXAp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQt
PnJlZ2lvbj1yZWdpb247CisgICAgCisgICAgcmV0LT5udW1fZWxlbWVudHM9dHlwZV9tYXAtPm51
bV9lbnRyaWVzOworICAgIAorICAgIHJldC0+ZWxlbWVudHM9dHNmX2NvbmRfYWxsb2MocmVnaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRzZl90eXBlX3QqKSpy
ZXQtPm51bV9lbGVtZW50cyk7CisgICAgaWYgKHJldC0+ZWxlbWVudHM9PU5VTEwpIHsKKyAgICAg
ICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHRzZl9jb25kX2FsbG9jIGFycmF5IG9mIHRzZl90
eXBlX3QqIik7CisgICAgICAgIGlmIChyZWdpb249PU5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90
eXBlX291dF9tYXBfZGVzdHJveSh0eXBlX21hcCk7CisgICAgICAgICAgICBmcmVlKHJldCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHRzZl9zdF9m
b3JlYWNoKHR5cGVfbWFwLCh0c2Zfc3RfZnVuY190KXRhYmxlX3NuYXRjaF9wYWlyLHJldCk7Cisg
ICAgdHNmX3N0X2ZyZWVfdGFibGUodHlwZV9tYXApOworICAgIAorICAgIGlmIChyZXQtPmVsZW1l
bnRzPT1OVUxMKSB7CisgICAgICAgIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nOyB0aGlzIG9ubHkg
aGFwcGVucyBpbiByZWdpb24gYWxsb2NhdGlvbgorICAgICAgICAgKiBjYXNlLiAqLworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgICAgIAorICAgIHJldHVybiByZXQ7Cit9CisKK3N0
YXRpYyB2b2lkIGluaXRfZW1wdHlfc2luZ2xldG9uKCkgeworICAgIGVtcHR5X3NpbmdsZXRvbi5y
ZWdpb249TlVMTDsKKyAgICBlbXB0eV9zaW5nbGV0b24uZWxlbWVudHM9TlVMTDsKKyAgICBlbXB0
eV9zaW5nbGV0b24ubnVtX2VsZW1lbnRzPTA7CisgICAgZW1wdHlfc2luZ2xldG9uLmNhcGFjaXR5
PTA7Cit9CisKK3RzZl90eXBlX2luX21hcF90ICp0c2ZfdHlwZV9pbl9tYXBfZ2V0X2VtcHR5X3Np
bmdsZXRvbigpIHsKKyAgICB0c2Zfb25jZSgmZW1wdHlfc2luZ2xldG9uX29uY2VfY29udHJvbCwK
KyAgICAgICAgICAgICBpbml0X2VtcHR5X3NpbmdsZXRvbik7CisKKyAgICByZXR1cm4gJmVtcHR5
X3NpbmdsZXRvbjsKK30KKwordHNmX3R5cGVfaW5fbWFwX3QgKnRzZl90eXBlX2luX21hcF9jbG9u
ZSh0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfaW5fbWFw
X2Nsb25lX2luKHR5cGVzLE5VTEwpOworfQorCit0c2ZfdHlwZV9pbl9tYXBfdCAqdHNmX3R5cGVf
aW5fbWFwX2Nsb25lX2luKHRzZl90eXBlX2luX21hcF90ICp0eXBlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgdHNmX3R5
cGVfaW5fbWFwX3QgKnJldDsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGlmICh0eXBlcz09
JmVtcHR5X3NpbmdsZXRvbikgeworICAgICAgICByZXR1cm4gdHlwZXM7CisgICAgfQorICAgIAor
ICAgIHJldD10c2ZfY29uZF9hbGxvYyhyZWdpb24sc2l6ZW9mKHRzZl90eXBlX2luX21hcF90KSk7
CisgICAgaWYgKHJldD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
dHNmX2NvbmRfYWxsb2MgdHNmX3R5cGVfaW5fbWFwX3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorICAgIAorICAgIHJldC0+cmVnaW9uPXJlZ2lvbjsKKyAgICAKKyAgICByZXQtPm51
bV9lbGVtZW50cz10eXBlcy0+bnVtX2VsZW1lbnRzOworICAgIHJldC0+ZWxlbWVudHM9dHNmX2Nv
bmRfYWxsb2MocmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m
KHRzZl90eXBlX3QqKSpyZXQtPm51bV9lbGVtZW50cyk7CisgICAgaWYgKHJldC0+ZWxlbWVudHM9
PU5VTEwpIHsKKyAgICAgICAgaWYgKHJlZ2lvbiE9TlVMTCkgeworICAgICAgICAgICAgZnJlZShy
ZXQpOworICAgICAgICB9CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29u
ZF9hbGxvYyBhcnJheSBvZiB0c2ZfdHlwZV90KiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgCisgICAgZm9yIChpPTA7aTxyZXQtPm51bV9lbGVtZW50czsrK2kpIHsKKyAgICAg
ICAgaWYgKHJlZ2lvbiE9TlVMTCkgeworICAgICAgICAgICAgaWYgKCF0c2ZfcmVnaW9uX2FkZF9j
YmFjayhyZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0c2Zf
cmVnaW9uX2NiYWNrX3QpdHNmX3R5cGVfZGVzdHJveSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZXMtPmVsZW1lbnRzW2ldKSkgeworICAgICAgICAgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FkZF9jYmFjayBmb3IgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRzZl90eXBlX2Rlc3Ryb3kiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldC0+ZWxlbWVudHNbaV09dHNmX3R5cGVfZHVwKHR5cGVzLT5lbGVtZW50c1tpXSk7CisgICAg
fQorCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCB0c2ZfdHlwZV9pbl9tYXBfZGVzdHJveSh0
c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMpIHsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIHRz
Zl9hc3NlcnQodHlwZXMtPnJlZ2lvbj09TlVMTCk7CisgICAgCisgICAgaWYgKHR5cGVzPT0mZW1w
dHlfc2luZ2xldG9uKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgZm9yIChp
PTA7aTx0eXBlcy0+bnVtX2VsZW1lbnRzOysraSkgeworICAgICAgICB0c2ZfdHlwZV9kZXN0cm95
KHR5cGVzLT5lbGVtZW50c1tpXSk7CisgICAgfQorICAgIGlmICh0eXBlcy0+ZWxlbWVudHMhPU5V
TEwpIHsKKyAgICAgICAgZnJlZSh0eXBlcy0+ZWxlbWVudHMpOworICAgIH0KKyAgICBmcmVlKHR5
cGVzKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9pbl9tYXBfcHJlcGFyZSh0c2ZfdHlwZV9p
bl9tYXBfdCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IG51bSkgeworICAgIGlmICh0eXBlcy0+bnVtX2VsZW1lbnRzK251bSA8PSB0eXBlcy0+Y2Fw
YWNpdHkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl90cnVlOworICAgIH0KKworICAgIG51bSA9IHR5
cGVzLT5udW1fZWxlbWVudHMrbnVtIC0gdHlwZXMtPmNhcGFjaXR5OworCisgICAgaWYgKHR5cGVz
LT5yZWdpb249PU5VTEwpIHsKKyAgICAgICAgaWYgKHR5cGVzLT5lbGVtZW50cz09TlVMTCkgewor
ICAgICAgICAgICAgdHlwZXMtPmVsZW1lbnRzPW1hbGxvYyhzaXplb2YodHNmX3R5cGVfdCopKm51
bSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0eXBlcy0+ZWxlbWVudHM9PU5VTEwp
IHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl90
eXBlX3QqIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRzZl90eXBlX3QgKipuZXdfYXJyYXk9
CisgICAgICAgICAgICAgICAgcmVhbGxvYyh0eXBlcy0+ZWxlbWVudHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2YodHNmX3R5cGVfdCopKih0eXBlcy0+Y2FwYWNpdHkrbnVtKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChuZXdfYXJyYXk9PU5VTEwpIHsKKyAgICAgICAg
ICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgcmVhbGxvYyBhcnJheSBvZiB0c2ZfdHlw
ZV90KiIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHR5cGVzLT5lbGVtZW50cz1uZXdfYXJyYXk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0c2ZfdHlwZV90ICoqbmV3X2FycmF5PQor
ICAgICAgICAgICAgdHNmX3JlZ2lvbl9hbGxvYyh0eXBlcy0+cmVnaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplb2YodHNmX3R5cGVfdCopKih0eXBlcy0+Y2FwYWNpdHkrbnVt
KSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3X2FycmF5PT1OVUxMKSB7CisgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3JlZ2lvbl9hbGxvYygpIGFycmF5IG9mICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgInRzZl90eXBlX3QqIik7CisgICAgICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtZW1jcHkobmV3
X2FycmF5LAorICAgICAgICAgICAgICAgdHlwZXMtPmVsZW1lbnRzLAorICAgICAgICAgICAgICAg
c2l6ZW9mKHRzZl90eXBlX3QqKSoodHlwZXMtPm51bV9lbGVtZW50cykpOworICAgICAgICAKKyAg
ICAgICAgdHlwZXMtPmVsZW1lbnRzPW5ld19hcnJheTsKKyAgICB9CisgICAgCisgICAgdHlwZXMt
PmNhcGFjaXR5Kz1udW07CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9v
bF90IHRzZl90eXBlX2luX21hcF9hcHBlbmQodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICBp
ZiAodHlwZT09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAK
KyAgICBpZiAoIXRzZl90eXBlX2luX21hcF9wcmVwYXJlKHR5cGVzLDEpKSB7CisgICAgICAgIHJl
dHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICh0eXBlcy0+cmVnaW9uIT1OVUxM
KSB7CisgICAgICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2sodHlwZXMtPnJlZ2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHNmX3JlZ2lvbl9jYmFja190KXRzZl90
eXBlX2Rlc3Ryb3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpIHsK
KyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FkZF9jYmFj
ayBmb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfZGVzdHJveSIpOwor
ICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICB0eXBlcy0+ZWxlbWVudHNbdHlwZXMtPm51bV9lbGVtZW50cysrXT10c2ZfdHlwZV9kdXAodHlw
ZSk7CisKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3VpbnQzMl90IHRzZl90eXBlX2luX21h
cF9nZXRfbnVtX3R5cGVzKHRzZl90eXBlX2luX21hcF90ICp0eXBlcykgeworICAgIHJldHVybiB0
eXBlcy0+bnVtX2VsZW1lbnRzOworfQorCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9pbl9tYXBfZ2V0
X3R5cGUodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJuIHR5cGVzLT5lbGVtZW50
c1tpbmRleF07Cit9CisKK3ZvaWQgdHNmX3R5cGVfaW5fbWFwX3RydW5jYXRlKHRzZl90eXBlX2lu
X21hcF90ICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5l
d19zaXplKSB7CisgICAgdHlwZXMtPm51bV9lbGVtZW50cyA9IG5ld19zaXplOworfQorCit0c2Zf
Ym9vbF90IHRzZl90eXBlX2luX21hcF9jb21wYXJlKHRzZl90eXBlX2luX21hcF90ICphLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqYikgewor
ICAgIHVpbnQzMl90IGk7CisgICAgCisgICAgaWYgKGE9PWIpIHsKKyAgICAgICAgcmV0dXJuIHRz
Zl90cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoYS0+bnVtX2VsZW1lbnRzIT1iLT5udW1fZWxl
bWVudHMpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgZm9y
IChpPTA7aTxhLT5udW1fZWxlbWVudHM7KytpKSB7CisgICAgICAgIGlmICghdHNmX3R5cGVfY29t
cGFyZShhLT5lbGVtZW50c1tpXSxiLT5lbGVtZW50c1tpXSkpIHsKKyAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVl
OworfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5
cGVfb3V0X21hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfdHlwZV9vdXRfbWFwLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl90eXBlX291dF9tYXAuYwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgor
Cit0c2ZfdHlwZV9vdXRfbWFwX3QgKnRzZl90eXBlX291dF9tYXBfY3JlYXRlKCkgeworICAgIHRz
Zl90eXBlX291dF9tYXBfdCAqcmV0ID0gdHNmX3N0X2luaXRfcHRydGFibGUoKTsKKyAgICBpZiAo
cmV0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2Zfc3RfaW5p
dF9wdHJ0YWJsZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHRhYmxlX2Rlc3Ryb3lfcGFpcih0c2ZfdHlwZV90
ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7CisgICAgLyogcHJpbnRm
KCJEZXN0cm95aW5nIHR5cGUgPSAlcFxuIiwgdHlwZSk7ICovCisgICAgdHNmX3R5cGVfZGVzdHJv
eSh0eXBlKTsKKyAgICBmcmVlKHZhbHVlKTsKKyAgICByZXR1cm4gVFNGX1NUX0NPTlRJTlVFOwor
fQorCit2b2lkIHRzZl90eXBlX291dF9tYXBfZGVzdHJveSh0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5
cGVfbWFwKSB7CisgICAgdHNmX3N0X2ZvcmVhY2godHlwZV9tYXAsICh0c2Zfc3RfZnVuY190KXRh
YmxlX2Rlc3Ryb3lfcGFpciwgTlVMTCk7CisgICAgdHNmX3N0X2ZyZWVfdGFibGUodHlwZV9tYXAp
OworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX291dF9tYXBfZmluZF90eXBlX2NvZGUodHNmX3R5
cGVfb3V0X21hcF90ICp0eXBlX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90ICp0eXBlX2NvZGUpIHsKKyAgICB1aW50MzJfdCAqdGNf
cHRyOworICAgIHR5cGUgPSB0c2ZfdHlwZV9tZW1vKHR5cGUpOworICAgIGlmICh0eXBlID09IE5V
TEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgaWYgKCF0c2Zfc3Rf
bG9va3VwKHR5cGVfbWFwLCAoY2hhciopdHlwZSwgKHZvaWQqKikmdGNfcHRyKSkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVEVSTkFMLAorICAgICAgICAgICAgICAgICAgICAgICJH
aXZlbiB0eXBlIHdhcyBub3QgZm91bmQgaW4gdHlwZSBtYXAgZXZlbiB0aG91Z2ggIgorICAgICAg
ICAgICAgICAgICAgICAgICJpdCB3YXMgYXNzZXJ0ZWQgdGhhdCB0aGUgdHlwZSB3b3VsZCBiZSBm
b3VuZCIpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICBpZiAodHlwZV9j
b2RlIT1OVUxMKSB7CisgICAgICAgICp0eXBlX2NvZGU9KnRjX3B0cjsKKyAgICB9CisgICAgcmV0
dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX291dF9tYXBfZ2V0X3R5cGVf
Y29kZSh0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICp0eXBlX2NvZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYm9vbF90ICpjcmVhdGVkKSB7Cisg
ICAgdWludDMyX3QgKnRjX3B0cjsKKyAgICAKKyAgICB0eXBlID0gdHNmX3R5cGVfbWVtbyh0eXBl
KTsKKyAgICBpZiAodHlwZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIGlmICh0c2Zfc3RfbG9va3VwX3B0cnRhYmxlKHR5cGVfbWFwLCB0eXBl
LCAodm9pZCoqKSZ0Y19wdHIpKSB7CisgICAgICAgIGlmICh0eXBlX2NvZGUgIT0gTlVMTCkgewor
ICAgICAgICAgICAgKnR5cGVfY29kZSA9ICp0Y19wdHI7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGNyZWF0ZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgKmNyZWF0ZWQgPSB0c2ZfZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0Y19wdHIgPSBtYWxsb2Moc2l6ZW9mKHVp
bnQzMl90KSk7CisgICAgICAgIGlmICh0Y19wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0eXBlIGNvZGUiKTsKKyAgICAgICAgICAgIHJl
dHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgKnRjX3B0ciA9IHR5cGVfbWFwLT5u
dW1fZW50cmllczsKKyAgICAgICAgLyogcHJpbnRmKCJBZGRpbmcgdHlwZSA9ICVwXG4iLCB0eXBl
KTsgKi8KKyAgICAgICAgaWYgKHRzZl9zdF9hZGRfZGlyZWN0KHR5cGVfbWFwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXRzZl90eXBlX2R1cCh0eXBlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRjX3B0cikgPCAwKSB7CisgICAgICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2FkZF9kaXJlY3QoKSIpOworICAgICAgICAgICAgZnJl
ZSh0Y19wdHIpOworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodHlwZV9jb2RlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICp0eXBlX2NvZGUgPSAq
dGNfcHRyOworICAgICAgICB9CisgICAgICAgIGlmIChjcmVhdGVkICE9IE5VTEwpIHsKKyAgICAg
ICAgICAgICpjcmVhdGVkID0gdHNmX3RydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHRzZl90cnVlOworfQorCisKKworCisKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGVfdGFibGUuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGVfdGFibGUuYwkobm9uZXhp
c3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGVf
dGFibGUuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJ
WkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInRzZl9mb3JtYXQuaCIKKworI2luY2x1ZGUg
PHN0cmluZy5oPgorCit0c2ZfdHlwZV90YWJsZV90ICp0c2ZfdHlwZV90YWJsZV9jcmVhdGUoKSB7
CisgICAgdHNmX3R5cGVfdGFibGVfdCAqcmV0ID0gbWFsbG9jKHNpemVvZih0c2ZfdHlwZV90YWJs
ZV90KSk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNv
dWxkIG5vdCBtYWxsb2MgdHNmX3R5cGVfdGFibGVfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICB9CisgICAgCisgICAgcmV0LT5lbGVtZW50cyA9IE5VTEw7CisgICAgcmV0LT5udW1fZWxl
bWVudHMgPSAwOworICAgIHJldC0+ZWxlX3RhYmxlID0gdHNmX3N0X2luaXRfc3RydGFibGUoKTsK
KyAgICBpZiAocmV0LT5lbGVfdGFibGUgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5v
KCJDb3VsZCBub3QgdHNmX3N0X2luaXRfc3RydGFibGUoKSIpOworICAgICAgICBmcmVlKHJldCk7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmV0OworfQor
Cit0c2ZfYm9vbF90IHRzZl90eXBlX3RhYmxlX2NvcHkodHNmX3R5cGVfdGFibGVfdCAqZGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV90ICpzcmMpIHsK
KyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfdHlwZV90YWJs
ZV9nZXRfbnVtX2VsZW1lbnRzKHNyYyk7ICsraSkgeworICAgICAgICB0c2ZfbmFtZWRfdHlwZV90
ICpuID0gdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRleChzcmMsIGkpLCAqbjI7CisgICAgICAg
IHRzZl90eXBlX3QgKm5ld190eXBlID0gdHNmX3R5cGVfZHVwKG4tPnR5cGUpOworICAgICAgICBp
ZiAobmV3X3R5cGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX2FwcGVuZChkZXN0LCBuLT5uYW1l
LCBuZXdfdHlwZSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8qIGNvcHkgdGhlIG9wdGlvbmFsIGF0dHJpYnV0ZSwgb2Zmc2V0
IGluZm8gbWFudWFsbHkgKi8KKyAgICAgICAgbjIgPSB0c2ZfdHlwZV90YWJsZV9maW5kX2J5X2lu
ZGV4KGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
dHlwZV90YWJsZV9nZXRfbnVtX2VsZW1lbnRzKGRlc3QpIC0gMSk7CisJbjItPm9wdGlvbmFsID0g
bi0+b3B0aW9uYWw7CisgICAgICAgIGlmIChuLT5oYXNfb2Zmc2V0KSB7CisgICAgICAgICAgICBu
Mi0+aGFzX29mZnNldCA9IHRzZl90cnVlOworICAgICAgICAgICAgbjItPm9mZnNldCA9IG4tPm9m
ZnNldDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogY29weSB0aGUgY29tbWVudCBt
YW51YWxseSAqLworICAgICAgICBpZiAobi0+Y29tbWVudCAhPSBOVUxMKSB7CisgICAgICAgICAg
ICBuMi0+Y29tbWVudCA9IHN0cmR1cChuLT5jb21tZW50KTsKKyAgICAgICAgICAgIGlmIChuMi0+
Y29tbWVudCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IGFsbG9jYXRlIGNvbW1lbnQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2Zf
dHJ1ZTsKK30KKwordm9pZCB0c2ZfdHlwZV90YWJsZV9kZXN0cm95KHRzZl90eXBlX3RhYmxlX3Qg
KnR0KSB7CisgICAgdWludDMyX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHQtPm51bV9lbGVt
ZW50czsgKytpKSB7CisgICAgICAgIHRzZl9uYW1lZF90eXBlX2Rlc3Ryb3kodHQtPmVsZW1lbnRz
W2ldKTsKKyAgICB9CisgICAgaWYgKHR0LT5lbGVtZW50cyAhPSBOVUxMKSB7CisgICAgICAgIGZy
ZWUodHQtPmVsZW1lbnRzKTsKKyAgICB9CisgICAgdHNmX3N0X2ZyZWVfdGFibGUodHQtPmVsZV90
YWJsZSk7CisgICAgZnJlZSh0dCk7Cit9CisKK3RzZl90eXBlX3RhYmxlX3QgKnRzZl90eXBlX3Rh
YmxlX3JlYWQoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX3JlYWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3Qgc2l6ZV9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgZGVwdGgpIHsKKyAgICB0c2ZfdHlwZV90YWJsZV90ICpyZXQg
PSB0c2ZfdHlwZV90YWJsZV9jcmVhdGUoKTsKKyAgICB1aW50MzJfdCBpLCBudW07CisgICAgCisg
ICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAK
KyAgICBpZiAoIXJlYWRlcihhcmcsICZudW0sIHNpemVvZihudW0pKSkgeworICAgICAgICB0c2Zf
dHlwZV90YWJsZV9kZXN0cm95KHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg
ICAKKyAgICBudW0gPSBudG9obChudW0pOworICAgIAorICAgIGlmIChudW0gPiBzaXplX2xpbWl0
KSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAgICAg
ICAgICAgICAgICAgIiVzIHNpemUgZXhjZWVkcyBsaW1pdCB3aGlsZSBwYXJzaW5nIiwgbmFtZSk7
CisgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgeworICAgICAg
ICB1aW50OF90IHVpOF90bXA7CisgICAgICAgIGNoYXIgKnN0cjsKKyAgICAgICAgCisgICAgICAg
IC8qIHBhcnNlIHRoZSBzdHJpbmcgKi8KKyAgICAgICAgc3RyID0gdHNmX3JlYWRfc3RyaW5nKHJl
YWRlciwgYXJnLCBUU0ZfU1RSX1NJWkUpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiBub3cgZG8gb3RoZXIgdGhp
bmdzICovCisgICAgICAgIGlmICghdHNmX3R5cGVfdGFibGVfYXBwZW5kKHJldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfdHlwZV9yZWFkX3JlYyhyZWFkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCkpKSB7CisgICAg
ICAgICAgICB0c2ZfdHlwZV90YWJsZV9kZXN0cm95KHJldCk7CisgICAgICAgICAgICBmcmVlKHN0
cik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgZnJlZShzdHIpOworICAgICAgICAKKyAgICAgICAgaWYgKCFyZWFkZXIoYXJnLCAmdWk4X3Rt
cCwgMSkpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisJCisJaWYgKHVpOF90bXAgJiB+Mykgewor
CSAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorCQkJICAiRmxhZ3MgZmllbGQg
Y29udGFpbnMgYml0cyBJIGRvbid0IHJlY29nbml6ZTogIiBmdWk4LAorCQkJICB1aThfdG1wKTsK
KwkgICAgdHNmX3R5cGVfdGFibGVfZGVzdHJveShyZXQpOworCSAgICByZXR1cm4gTlVMTDsKKwl9
CisJCisJcmV0LT5lbGVtZW50c1tyZXQtPm51bV9lbGVtZW50cyAtIDFdLT5vcHRpb25hbCA9CisJ
ICAgICh1aThfdG1wICYgMiA/IHRzZl90cnVlIDogdHNmX2ZhbHNlKTsKKyAgICAgICAgCisgICAg
ICAgIGlmICh1aThfdG1wICYgMSkgeworICAgICAgICAgICAgLyogcGFyc2UgYSBjb21tZW50IHN0
cmluZy4gIGl0IGNhbiBiZSBhcmJpdHJhcmlseSBsb25nLCBzbworICAgICAgICAgICAgICAgdGhp
cyBwYXJzaW5nIGNvZGUgaXMgc29tZXdoYXQgb2YgYSBwYWluIGluIHRoZSBhc3MgdG8KKyAgICAg
ICAgICAgICAgIHdyaXRlLiAqLworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRzZl9s
aW1pdHNfYWxsb3dfY29tbWVudHMobGltaXRzKSkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRf
ZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RW5jb3VudGVyZWQgYSBjb21tZW50ZWQgdHlwZSB3aGlsZSBwYXJzaW5nLCAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYnV0IGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCIpOworICAg
ICAgICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c3RyID0gdHNmX3JlYWRfc3RyaW5nKHJlYWRlciwgYXJnLCBUU0ZfTUFYX0NPTU1FTlRfU0laRSk7
CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV90YWJsZV9kZXN0cm95KHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldC0+ZWxlbWVudHNbcmV0LT5u
dW1fZWxlbWVudHMgLSAxXS0+Y29tbWVudCA9IHN0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICByZXR1cm4gcmV0OworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX3RhYmxlX3dyaXRlKHRz
Zl90eXBlX3RhYmxlX3QgKnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
d3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICph
cmcpIHsKKyAgICB1aW50MzJfdCB1aTMyX3RtcCA9IGh0b25sKHR0LT5udW1fZWxlbWVudHMpOwor
ICAgIHVpbnQ4X3QgdWk4X3RtcDsKKyAgICB1aW50MzJfdCBpOworICAgIGlmICghd3JpdGVyKGFy
ZywgJnVpMzJfdG1wLCBzaXplb2YodWkzMl90bXApKSkgeworICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgIH0KKyAgICAKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHQtPm51bV9lbGVtZW50czsg
KytpKSB7CisgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0dC0+ZWxlbWVudHNbaV07Cisg
ICAgICAgIAorICAgICAgICBpZiAoIXRzZl93cml0ZV9zdHJpbmcod3JpdGVyLCBhcmcsIHRzZl9u
YW1lZF90eXBlX2dldF9uYW1lKG4pKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCF0c2ZfdHlwZV93cml0ZSh0c2ZfbmFt
ZWRfdHlwZV9nZXRfdHlwZShuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIs
IGFyZykpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKwkKKwl1
aThfdG1wID0gMDsKKwlpZiAobi0+Y29tbWVudCAhPSBOVUxMKSB7CisJICAgIHVpOF90bXAgfD0g
MTsKKwl9CisJaWYgKG4tPm9wdGlvbmFsKSB7CisJICAgIHVpOF90bXAgfD0gMjsKKwl9CisJaWYg
KCF3cml0ZXIoYXJnLCAmdWk4X3RtcCwgMSkpIHsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKwl9
CisJCisgICAgICAgIGlmIChuLT5jb21tZW50ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICgh
dHNmX3dyaXRlX3N0cmluZyh3cml0ZXIsIGFyZywgbi0+Y29tbWVudCkpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworaW50IHRzZl90eXBlX3RhYmxlX2dldF9o
YXNoKHRzZl90eXBlX3RhYmxlX3QgKnR0KSB7CisgICAgaW50IHJldCA9IDA7CisgICAgdWludDMy
X3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHQtPm51bV9lbGVtZW50czsgKytpKSB7CisgICAg
ICAgIHJldCArPSB0c2ZfbmFtZWRfdHlwZV9nZXRfaGFzaCh0dC0+ZWxlbWVudHNbaV0pOworICAg
IH0KKyAgICByZXR1cm4gcmV0OworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX3RhYmxlX2NvbnRh
aW5zX2R5bmFtaWModHNmX3R5cGVfdGFibGVfdCAqdHQpIHsKKyAgICB1aW50MzJfdCBpOworICAg
IGZvciAoaSA9IDA7IGkgPCB0dC0+bnVtX2VsZW1lbnRzOyArK2kpIHsKKyAgICAgICAgaWYgKHRz
Zl90eXBlX2lzX2R5bmFtaWModHQtPmVsZW1lbnRzW2ldLT50eXBlKSkgeworICAgICAgICAgICAg
cmV0dXJuIHRzZl90cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0c2ZfZmFsc2U7
Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfdGFibGVfY29tcGFyZSh0c2ZfdHlwZV90YWJsZV90
ICphLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3RhYmxlX3Qg
KmIpIHsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGlmIChhLT5udW1fZWxlbWVudHMgIT0g
Yi0+bnVtX2VsZW1lbnRzKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIGZvciAoaSA9IDA7IGkgPCBhLT5udW1fZWxlbWVudHM7ICsraSkgeworICAgICAgICBp
ZiAoc3RyY21wKGEtPmVsZW1lbnRzW2ldLT5uYW1lLAorICAgICAgICAgICAgICAgICAgIGItPmVs
ZW1lbnRzW2ldLT5uYW1lKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAg
ICAgfQorCQorCWlmIChhLT5lbGVtZW50c1tpXS0+b3B0aW9uYWwKKwkgICAgIT0gYi0+ZWxlbWVu
dHNbaV0tPm9wdGlvbmFsKSB7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJfQorICAgICAgICAK
KyAgICAgICAgaWYgKCF0c2ZfdHlwZV9jb21wYXJlKGEtPmVsZW1lbnRzW2ldLT50eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYi0+ZWxlbWVudHNbaV0tPnR5cGUpKSB7CisgICAg
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJl
dHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV90YWJsZV9hcHBlbmQodHNm
X3R5cGVfdGFibGVfdCAqdHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
dCAqZWxlX3R5cGUpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgIAorICAgIGlmIChl
bGVfdHlwZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIGlmICh0c2Zfc3RfbG9va3VwKHR0LT5lbGVfdGFibGUsIChjaGFyKiluYW1lLCBOVUxM
KSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05BTUVfQ09MTElTSU9OLAorICAgICAg
ICAgICAgICAgICAgICAgICJOYW1lICclcycgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgZWxl
bWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIHRzZl90eXBlX2Rl
c3Ryb3koZWxlX3R5cGUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAK
KyAgICBpZiAodHQtPmVsZW1lbnRzID09IE5VTEwpIHsKKyAgICAgICAgdHQtPmVsZW1lbnRzID0g
bWFsbG9jKHNpemVvZih0c2ZfbmFtZWRfdHlwZV90KikpOworICAgICAgICBpZiAodHQtPmVsZW1l
bnRzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxs
b2MgdHNmX25hbWVkX3R5cGVfdCoiKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3koZWxl
X3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKipuZXdfYXJyYXkgPSByZWFsbG9jKHR0
LT5lbGVtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKHRzZl9uYW1lZF90eXBlX3QqKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh0dC0+bnVtX2VsZW1lbnRzICsgMSkpOworICAgICAgICBp
ZiAobmV3X2FycmF5PT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgcmVhbGx5IGFycmF5IG9mIHRzZl9uYW1lZF90eXBlX3QqIik7CisgICAgICAgICAgICB0c2Zf
dHlwZV9kZXN0cm95KGVsZV90eXBlKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgdHQtPmVsZW1lbnRzID0gbmV3X2FycmF5OworICAgIH0KKyAgICAK
KyAgICBuID0gdHNmX25hbWVkX3R5cGVfY3JlYXRlKG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0LT5u
dW1fZWxlbWVudHMpOworICAgIGlmIChuID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl9zdF9pbnNlcnQodHQtPmVsZV90YWJsZSwg
bi0+bmFtZSwgbikgPCAwKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkZhaWxlZCB0byB0c2Zf
c3RfaW5zZXJ0KCkiKTsKKyAgICAgICAgdHNmX3R5cGVfZGVzdHJveShlbGVfdHlwZSk7CisgICAg
ICAgIGZyZWUobik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAg
IHR0LT5lbGVtZW50c1t0dC0+bnVtX2VsZW1lbnRzKytdID0gbjsKKyAgICAKKyAgICByZXR1cm4g
dHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfdGFibGVfcmVtb3ZlKHRzZl90eXBl
X3RhYmxlX3QgKnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqbmFtZSkgeworICAgIGNoYXIgKnRvX2RlbGV0ZTsKKyAgICB2b2lkICpvbGRfdmFsdWU7Cisg
ICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICB0b19kZWxldGUgPSAoY2hhciopbmFt
ZTsKKyAgICBvbGRfdmFsdWUgPSBOVUxMOworICAgIHRzZl9zdF9kZWxldGUodHQtPmVsZV90YWJs
ZSwgJnRvX2RlbGV0ZSwgJm9sZF92YWx1ZSk7CisgICAgaWYgKG9sZF92YWx1ZSA9PSBOVUxMKSB7
CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfRUxFX05PVF9GT1VORCwgIkNvdWxkIG5vdCBm
aW5kIFwnJXNcJyIsIG5hbWUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICBuID0gKHRzZl9uYW1lZF90eXBlX3QqKW9sZF92YWx1ZTsKKyAgICB0dC0+ZWxlbWVu
dHNbbi0+aW5kZXhdID0gdHQtPmVsZW1lbnRzWy0tdHQtPm51bV9lbGVtZW50c107CisgICAgdHNm
X25hbWVkX3R5cGVfZGVzdHJveShuKTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9u
YW1lZF90eXBlX3QgKnRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfbmFtZSh0c2ZfdHlwZV90YWJsZV90
ICp0dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpuYW1lKSB7CisgICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICBpZiAoIXRzZl9z
dF9sb29rdXAodHQtPmVsZV90YWJsZSwgKGNoYXIqKW5hbWUsICh2b2lkKiopJm4pKSB7CisgICAg
ICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfRUxFX05PVF9GT1VORCwgIkNvdWxkIG5vdCBmaW5kIFwn
JXNcJyIsIG5hbWUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gbjsKK30KKwordHNmX25hbWVkX3R5cGVfdCAqdHNmX3R5cGVfdGFibGVfZmluZF9i
eV9pbmRleCh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgpIHsKKyAgICByZXR1cm4gdHQtPmVs
ZW1lbnRzW2luZGV4XTsKK30KKwordWludDMyX3QgdHNmX3R5cGVfdGFibGVfZ2V0X251bV9lbGVt
ZW50cyh0c2ZfdHlwZV90YWJsZV90ICp0dCkgeworICAgIHJldHVybiB0dC0+bnVtX2VsZW1lbnRz
OworfQorCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
dHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvdHNmX3R5cGVzLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL3RzZl90eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQ
SVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEZQX1RTRl9UWVBFU19ICisjZGVmaW5lIEZQX1RTRl9UWVBFU19ICisKKyNp
bmNsdWRlICJ0c2ZfY29uZmlnLmgiCisKKy8qIG5lZWQgdG8gdXNlIHRoaXMgaGFjayBiZWNhdXNl
IE5ldEJTRCBzdWNrcy4gKi8KKyNpbmNsdWRlICJ0c2ZfaW50dHlwZXMuaCIKKworLyogb3VyIG93
biBkZWZpbml0aW9uIG9mIFVJTlQzMl9NQVgsIHdoaWNoIHdlIG5lZWQgdG8gdXNlIGluIGFsbCBl
eHRlcm5hbAorICogaGVhZGVyIGZpbGVzIGJlY2F1c2UgQysrIGlzIGR1bWIuICovCisjZGVmaW5l
IFRTRl9VSU5UMzJfTUFYICgoKCh1aW50MzJfdCkxKTw8MzEpK1wKKyAgICAgICAgICAgICAgICAg
ICAgICAgICgoKCh1aW50MzJfdCkxKTw8MzEpLTEpKQorCisvKiBzb21ldGhpbmcgdGhhdCBpbnR0
eXBlcyBkb2Vzbid0IHNlZW0gdG8gZGVmaW5lICovCisjaWYgVFNGX1NJWkVPRl9WT0lEX1AgPT0g
MgorI2RlZmluZSBUU0ZfVUlOVFBUUl9DKGFyZykgVUlOVDE2X0MoYXJnKQorI2Vsc2UKKyNpZiBU
U0ZfU0laRU9GX1ZPSURfUCA9PSA0CisjZGVmaW5lIFRTRl9VSU5UUFRSX0MoYXJnKSBVSU5UMzJf
QyhhcmcpCisjZWxzZQorI2lmIFRTRl9TSVpFT0ZfVk9JRF9QID09IDgKKyNkZWZpbmUgVFNGX1VJ
TlRQVFJfQyhhcmcpIFVJTlQ2NF9DKGFyZykKKyNlbHNlCisjZXJyb3IgIkRvbid0IGtub3cgaG93
IHRvIGV4cHJlc3Mgdm9pZCAqIGxpdGVyYWxzIgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisv
KiBldmVyeSBzeXN0ZW0gaGFja2VyIG5lZWRzIHN5cy90eXBlcyEgKi8KKyNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKworLyogb3VyIG93biBvZmZzZXQgdHlwZS4gIG1lYW50IHRvIGJlIGVudGlyZWx5
IGNvbXBhdGlibGUgd2l0aCB0aGUKKyAqIHN5c3RlbSdzIG9mZnNldCB0eXBlLiAqLworI2lmIFRT
Rl9TSVpFT0ZfT0ZGX1QgPT0gMiAgIC8qIHdobyBrbm93cz8gKi8KK3R5cGVkZWYgaW50MTZfdCB0
c2Zfb2ZmX3Q7CisjZWxzZQorI2lmIFRTRl9TSVpFT0ZfT0ZGX1QgPT0gNAordHlwZWRlZiBpbnQz
Ml90IHRzZl9vZmZfdDsKKyNlbHNlCisjaWYgVFNGX1NJWkVPRl9PRkZfVCA9PSA4Cit0eXBlZGVm
IGludDY0X3QgdHNmX29mZl90OworI2Vsc2UKKyNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gcmVw
cmVzZW50IGZpbGUgb2Zmc2V0cyIKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworLyogd2h5IG5v
dCB1c2Ugc3RkX2Jvb2wuaD8gIGJlY3Vhc2UgaXQgd2lsbCBmdWNrIHVzIGlmIHRoaXMgaGVhZGVy
IGlzCisgKiB1c2VkIGZyb20gQysrISAgdGhlcmUgc2VlbXMgdG8gYmUgbm8gZ29vZCB3YXkgb2Yg
bWFraW5nIHN1cmUgdGhhdAorICogdGhlIEM5OSBfQm9vbCB0eXBlIGFuZCB0aGUgQysrIGJvb2wg
dHlwZSBhcmUgdGhlIHNhbWUgc2l6ZSwgYW5kLAorICogd2hhdCBpcyBtb3JlIHVubmVydmluZyBp
cyB0aGF0IHRoZXJlIGlzIG5vIGdvb2Qgd2F5LCBpZiBvbmUgaXMKKyAqIHdyaXRpbmcgQU5TSSBD
IHRvIGNvbmp1cmUgdXAgYSB0eXBlIHRoYXQgaXMgbWFnaWNhbGx5IHRoZSBzYW1lIHNpemUKKyAq
IGFzIHRoZSBDKysgYm9vbCB0eXBlLiAgU28sIHRoZSBvbmx5IHNvbHV0aW9uIGlzIHRvIG5vdCB1
c2UgX0Jvb2wKKyAqIG9yIGJvb2wsIGFuZCBqdXN0IHJvbGwgb3VyIG93biB0aGluZy4gIHRoYXQg
d2F5LCB5b3Uga25vdyB3aGF0IHNpemUKKyAqIGl0IGlzIGZyb20gZWl0aGVyIEMgb3IgQysrLiAq
LwordHlwZWRlZiB1aW50OF90IHRzZl9ib29sX3Q7CisKKy8qIHVzZSB0aGlzIGZvciB2YV9hcmcg
Ki8KK3R5cGVkZWYgdW5zaWduZWQgdHNmX2FyZ19ib29sX3Q7CisKKy8qIHlvdSBkb24ndCBhY3R1
YWxseSBoYXZlIHRvIHVzZSB0aGVzZSBtYWNyb3MuICB5b3UgY2FuIHVzZSAxCisgKiBhbmQgMCBk
aXJlY3RseS4gIG9yIGlmIHlvdSdyZSBpbiBDKyssIHlvdSBzaG91bGQganVzdCBiZSBhYmxlCisg
KiB0byB1c2UgQysrJ3MgdHJ1ZSBhbmQgZmFsc2Uga2V5d29yZHMuICovCisjZGVmaW5lIHRzZl90
cnVlIDEKKyNkZWZpbmUgdHNmX2ZhbHNlIDAKKworLyogYSB0cmlzdGF0ZSB0eXBlLCB3aGljaCBt
aWdodCBjb21lIGluIGhhbmR5ICovCit0eXBlZGVmIGVudW0geworICAgIHRzZl9ubywKKyAgICB0
c2ZfbWF5YmUsCisgICAgdHNmX3llcworfSB0c2ZfdHJpc3RhdGVfdDsKKworLyogVFNGIGhhcyBh
IG5vdGlvbiBvZiBpbnRlZ2VycyB0aGF0IHdvcmsganVzdCBsaWtlIDMyLWJpdCBvciA2NC1iaXQK
KyAqIGludGVnZXJzLCBidXQgYXJlIGVuY29kZWQgd2l0aCBzb21lIHZlcnkgYmFzaWMgY29tcGFj
dGlvbi4gSXQncworICogYWNjZXB0YWJsZSB0byB1c2UgaW50MzJfdCBvciBpbnQ2NF90IGRpcmVj
dGx5IGZvciB0aGVzZSwgdGhvdWdoCisgKiBpdCdzIHNsaWdodGx5IGJldHRlciB0byB1c2UgdGhl
IHR5cGVkZWZzLiAqLwordHlwZWRlZiBpbnQzMl90IHRzZl9pbnRlZ2VyX3Q7Cit0eXBlZGVmIHVp
bnQzMl90IHRzZl91bnNpZ25lZF90OyAvKiBUaGlzIHR5cGUgaXMgbm90IGV4cG9zZWQgdG8gdGhl
IHVzZXIgYnV0IGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vk
IGludGVybmFsbHkgZm9yIHZhcmlvdXMgdGhpbmdzLCBsaWtlIGNob2ljZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBmb3JtYXR0aW5nLiAqLwordHlwZWRlZiBpbnQ2
NF90IHRzZl9sb25nX3Q7CisKKy8qIENvbnN0YW50cyBmb3IgdGhlIFRTRl9US19JTlRFR0VSIGFu
ZCBUU0ZfVEtfTE9ORyBjb21wYWN0aW9uIHByb3RvY29scy4gKi8KKyNkZWZpbmUgVFNGX0lOVEVH
RVJfU01BTExfTElNICAgNjQKKyNkZWZpbmUgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSAgMTYxOTIK
KyNkZWZpbmUgVFNGX0lOVEVHRVJfTEFSR0VfTElNICAgODQwNDgwMAorI2RlZmluZSBUU0ZfSU5U
RUdFUl9NRURJVU1fQklUICAxMjgKKyNkZWZpbmUgVFNGX0lOVEVHRVJfTUVESVVNX0RJRkYgMQor
I2RlZmluZSBUU0ZfSU5URUdFUl9MQVJHRV9UQUcgICAoKGludDhfdCkoNjIgfCBUU0ZfSU5URUdF
Ul9NRURJVU1fQklUKSkKKyNkZWZpbmUgVFNGX0lOVEVHRVJfSFVHRV9UQUcgICAgKChpbnQ4X3Qp
KDYzIHwgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpCisjZGVmaW5lIFRTRl9JTlRFR0VSX01BWF9T
SVpFICAgIDUKKyNkZWZpbmUgVFNGX0tPTkdfTUFYX1NJWkUgICAgICAgOQorCisvKiBzb21lIGNv
bnN0YW50cyBmb3IgVFNGIHVuc2lnbmVkIGludGVnZXJzLiAqLworI2RlZmluZSBUU0ZfVU5TSUdO
RURfU01BTExfTElNICAgMTI4CisjZGVmaW5lIFRTRl9VTlNJR05FRF9NRURJVU1fTElNICAzMjM4
NAorI2RlZmluZSBUU0ZfVU5TSUdORURfTEFSR0VfTElNICAgMTY4MDk2MDAKKyNkZWZpbmUgVFNG
X1VOU0lHTkVEX01FRElVTV9CSVQgIDEyOAorI2RlZmluZSBUU0ZfVU5TSUdORURfTEFSR0VfVEFH
ICAgMjU0CisjZGVmaW5lIFRTRl9VTlNJR05FRF9IVUdFX1RBRyAgICAyNTUKKyNkZWZpbmUgVFNG
X1VOU0lHTkVEX01BWF9TSVpFICAgIDUKKworLyogd2hhdCBmb2xsb3dzIGFyZSBzb21lIHR5cGVz
IHRoYXQgbXVzdCBiZSBwcmUtZGVjbGFyZWQuICovCisKK3N0cnVjdCBncGNfcHJvdG87Cit0eXBl
ZGVmIHN0cnVjdCBncGNfcHJvdG8gZ3BjX3Byb3RvX3Q7CisKK3N0cnVjdCBncGNfcHJvZ3JhbTsK
K3R5cGVkZWYgc3RydWN0IGdwY19wcm9ncmFtIGdwY19wcm9ncmFtX3Q7CisKK2VudW0gdHNmX3pp
cF9tb2RlIHsKKyAgICBUU0ZfWklQX05PTkUsCisgICAgVFNGX1pJUF9aTElCLAorICAgIFRTRl9a
SVBfQlpJUDIsCisgICAgVFNGX1pJUF9VTktOT1dOCit9OworCit0eXBlZGVmIGVudW0gdHNmX3pp
cF9tb2RlIHRzZl96aXBfbW9kZV90OworCisjZW5kaWYKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl91dGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl91dGlsLmgJKG5vbmV4aXN0ZW50KQorKysg
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl91dGlsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg
MjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGUF9UU0ZfVVRJTF9ICisjZGVmaW5l
IEZQX1RTRl9VVElMX0gKKworI2luY2x1ZGUgInRzZi5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8u
aD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2RlZmluZSBDSEVDS1RTRihleHApIGRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCEoZXhw
KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwiVFNGIEVycm9yIGF0ICVzOiVkOiAlc1xuIiwgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXyxfX0xJTkVfXyx0c2ZfZ2V0X2Vycm9yKCkp
OyAgICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZp
bmUgQ0hFQ0tTWVMoZXhwKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKChleHApPDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJTeXN0ZW0gRXJyb3IgYXQgJXM6JWQ6
ICVzXG4iLCAgIFwKKyAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sX19MSU5FX18sc3RyZXJy
b3IoZXJybm8pKTsgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5l
IENIRUNLU1lTWihleHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmICghKGV4cCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiU3lzdGVtIEVycm9yIGF0ICVzOiVkOiAl
c1xuIiwgICBcCisgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLF9fTElORV9fLHN0cmVycm9y
KGVycm5vKSk7ICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZW5kaWYKKwpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl92ZXJzaW9uLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl92
ZXJzaW9uLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dh
c20vdHNmL3RzZl92ZXJzaW9uLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJ
WkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgInRzZl9pbnRlcm5hbC5oIgorCitjb25zdCBjaGFyICp0c2ZfdmVyc2lvbigpIHsKKyAgICBy
ZXR1cm4gVkVSU0lPTjsKK30KKworaW50IHRzZl92ZXJzaW9uX21ham9yKCkgeworICAgIHJldHVy
biBWRVJTSU9OX01BSk9SOworfQorCitpbnQgdHNmX3ZlcnNpb25fbWlub3IoKSB7CisgICAgcmV0
dXJuIFZFUlNJT05fTUlOT1I7Cit9CisKK2ludCB0c2ZfdmVyc2lvbl9wYXRjaCgpIHsKKyAgICBy
ZXR1cm4gVkVSU0lPTl9QQVRDSDsKK30KKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9hYnN0cmFjdC5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2Fic3RyYWN0LmMJKG5vbmV4aXN0
ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfYWJz
dHJhY3QuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRl
cm5hbC5oIgorI2luY2x1ZGUgInRzZl96aXBfYWJzdHJhY3QuaCIKKyNpbmNsdWRlICJ0c2ZfZm9y
bWF0LmgiCisKKyNpZmRlZiBIQVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYKKwor
I2lmZGVmIEhBVkVfQlpJUDIKKyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKK3RzZl96aXBf
cmVzdWx0X3QgdHNmX3ppcF9hYnN0cmFjdF9kZWZsYXRlKHRzZl96aXBfbW9kZV90IG1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX2Fic3RyYWN0
X3QgKmFic3RyYWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHNmX3ppcF9hY3Rpb25fdCBhY3Rpb24pIHsKKyAgICBpbnQgcmVzLHphY3Q7CisjaWZkZWYgSEFW
RV9aTElCCisgICAgel9zdHJlYW0gKnpzdHJlYW07CisjZW5kaWYKKyNpZmRlZiBIQVZFX0JaSVAy
CisgICAgYnpfc3RyZWFtICpienN0cmVhbTsKKyNlbmRpZgorCisgICAgc3dpdGNoIChtb2RlKSB7
CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAgIGNhc2UgVFNGX1pJUF9aTElCOgorICAgICAgICAg
ICAgenN0cmVhbT1zdHJlYW07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHpzdHJlYW0tPm5l
eHRfaW49KEJ5dGVmKilhYnN0cmFjdC0+bmV4dF9pbjsKKyAgICAgICAgICAgIHpzdHJlYW0tPmF2
YWlsX2luPSh1SW50KWFic3RyYWN0LT5hdmFpbF9pbjsKKyAgICAgICAgICAgIHpzdHJlYW0tPm5l
eHRfb3V0PShCeXRlZiopYWJzdHJhY3QtPm5leHRfb3V0OworICAgICAgICAgICAgenN0cmVhbS0+
YXZhaWxfb3V0PSh1SW50KWFic3RyYWN0LT5hdmFpbF9vdXQ7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY2FzZSBUU0ZfWklQX0FD
VF9SVU46ICAgICAgICB6YWN0PVpfTk9fRkxVU0g7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgVFNGX1pJUF9BQ1RfU1lOQ19GTFVTSDogemFjdD1aX1NZTkNfRkxVU0g7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgVFNGX1pJUF9BQ1RfRlVMTF9GTFVTSDogemFjdD1aX0ZVTExfRkxV
U0g7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFNGX1pJUF9BQ1RfRklOSVNIOiAgICAg
emFjdD1aX0ZJTklTSDsgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDogdHNmX2Fib3J0
KCJiYWQgYWN0aW9uIHZhbHVlIik7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICByZXM9ZGVmbGF0ZSh6c3RyZWFtLHphY3QpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9pbj0odWludDhfdCopenN0cmVhbS0+bmV4dF9pbjsK
KyAgICAgICAgICAgIGFic3RyYWN0LT5hdmFpbF9pbj0odWludDMyX3QpenN0cmVhbS0+YXZhaWxf
aW47CisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9vdXQ9KHVpbnQ4X3QqKXpzdHJlYW0tPm5l
eHRfb3V0OworICAgICAgICAgICAgYWJzdHJhY3QtPmF2YWlsX291dD0odWludDMyX3QpenN0cmVh
bS0+YXZhaWxfb3V0OworICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHJlcykgewor
ICAgICAgICAgICAgICAgIGNhc2UgWl9PSzogcmV0dXJuIFRTRl9aSVBfUkVTX09LOworICAgICAg
ICAgICAgICAgIGNhc2UgWl9TVFJFQU1fRU5EOiByZXR1cm4gVFNGX1pJUF9SRVNfRU5EOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHRzZl9zZXRfemxpYl9l
cnJvcihyZXMsenN0cmVhbS0+bXNnLE5VTEwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VFNGX1pJUF9SRVNfRVJST1I7CisgICAgICAgICAgICB9CisjZW5kaWYKKyNpZmRlZiBIQVZFX0Ja
SVAyCisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAgICAgICAgICAgIGJ6c3RyZWFtPXN0
cmVhbTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnpzdHJlYW0tPm5leHRfaW49KGNoYXIq
KWFic3RyYWN0LT5uZXh0X2luOworICAgICAgICAgICAgYnpzdHJlYW0tPmF2YWlsX2luPSh1bnNp
Z25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX2luOworICAgICAgICAgICAgYnpzdHJlYW0tPm5leHRf
b3V0PShjaGFyKilhYnN0cmFjdC0+bmV4dF9vdXQ7CisgICAgICAgICAgICBienN0cmVhbS0+YXZh
aWxfb3V0PSh1bnNpZ25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX291dDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFRTRl9a
SVBfQUNUX1JVTjogICAgICAgIHphY3Q9QlpfUlVOOyBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFRTRl9aSVBfQUNUX1NZTkNfRkxVU0g6CisgICAgICAgICAgICAgICAgY2FzZSBUU0ZfWklQ
X0FDVF9GVUxMX0ZMVVNIOiB6YWN0PUJaX0ZMVVNIOyBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFRTRl9aSVBfQUNUX0ZJTklTSDogICAgIHphY3Q9QlpfRklOSVNIOyBicmVhazsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OiB0c2ZfYWJvcnQoImJhZCBhY3Rpb24gdmFsdWUiKTsgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlcz1CWjJfYnpDb21w
cmVzcyhienN0cmVhbSx6YWN0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWJzdHJhY3Qt
Pm5leHRfaW49KHVpbnQ4X3QqKWJ6c3RyZWFtLT5uZXh0X2luOworICAgICAgICAgICAgYWJzdHJh
Y3QtPmF2YWlsX2luPSh1aW50MzJfdClienN0cmVhbS0+YXZhaWxfaW47CisgICAgICAgICAgICBh
YnN0cmFjdC0+bmV4dF9vdXQ9KHVpbnQ4X3QqKWJ6c3RyZWFtLT5uZXh0X291dDsKKyAgICAgICAg
ICAgIGFic3RyYWN0LT5hdmFpbF9vdXQ9KHVpbnQzMl90KWJ6c3RyZWFtLT5hdmFpbF9vdXQ7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAocmVzKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBCWl9PSzoKKyAgICAgICAgICAgICAgICBjYXNlIEJaX1JVTl9PSzoKKyAgICAgICAgICAg
ICAgICBjYXNlIEJaX0ZMVVNIX09LOgorICAgICAgICAgICAgICAgIGNhc2UgQlpfRklOSVNIX09L
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFNGX1pJUF9SRVNfT0s7CisgICAgICAgICAg
ICAgICAgY2FzZSBCWl9TVFJFQU1fRU5EOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFNG
X1pJUF9SRVNfRU5EOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIHRzZl9zZXRfbGliYnppcDJfZXJyb3IocmVzLE5VTEwpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gVFNGX1pJUF9SRVNfRVJST1I7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAg
ICAgZGVmYXVsdDogYnJlYWs7CisgICAgfQorICAgIAorICAgIHRzZl9zZXRfZXJyb3IoVFNGX0Vf
SU5URVJOQUwsCisgICAgICAgICAgICAgICAgICAiQmFkIG1vZGUgdmFsdWUgaW4gdHNmX3ppcF9h
YnN0cmFjdF9kZWZsYXRlKCkiKTsKKyAgICAKKyAgICByZXR1cm4gVFNGX1pJUF9SRVNfRVJST1I7
Cit9CisKK3RzZl96aXBfcmVzdWx0X3QgdHNmX3ppcF9hYnN0cmFjdF9pbmZsYXRlKHRzZl96aXBf
bW9kZV90IG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfemlwX2Fic3RyYWN0X3QgKmFic3RyYWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX3ppcF9hY3Rpb25fdCBhY3Rpb24pIHsKKyAgICBpbnQgcmVzLHph
Y3Q7CisjaWZkZWYgSEFWRV9aTElCCisgICAgel9zdHJlYW0gKnpzdHJlYW07CisjZW5kaWYKKyNp
ZmRlZiBIQVZFX0JaSVAyCisgICAgYnpfc3RyZWFtICpienN0cmVhbTsKKyNlbmRpZgorCisgICAg
c3dpdGNoIChtb2RlKSB7CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAgIGNhc2UgVFNGX1pJUF9a
TElCOgorICAgICAgICAgICAgenN0cmVhbT1zdHJlYW07CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHpzdHJlYW0tPm5leHRfaW49KEJ5dGVmKilhYnN0cmFjdC0+bmV4dF9pbjsKKyAgICAgICAg
ICAgIHpzdHJlYW0tPmF2YWlsX2luPSh1SW50KWFic3RyYWN0LT5hdmFpbF9pbjsKKyAgICAgICAg
ICAgIHpzdHJlYW0tPm5leHRfb3V0PShCeXRlZiopYWJzdHJhY3QtPm5leHRfb3V0OworICAgICAg
ICAgICAgenN0cmVhbS0+YXZhaWxfb3V0PSh1SW50KWFic3RyYWN0LT5hdmFpbF9vdXQ7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBUU0ZfWklQX0FDVF9SVU46CisgICAgICAgICAgICAgICAgY2FzZSBUU0ZfWklQX0FDVF9T
WU5DX0ZMVVNIOgorICAgICAgICAgICAgICAgIGNhc2UgVFNGX1pJUF9BQ1RfRlVMTF9GTFVTSDog
emFjdD1aX1NZTkNfRkxVU0g7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFNGX1pJUF9B
Q1RfRklOSVNIOiAgICAgemFjdD1aX0ZJTklTSDsgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDogdHNmX2Fib3J0KCJiYWQgYWN0aW9uIHZhbHVlIik7IGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXM9aW5mbGF0ZSh6c3RyZWFtLHphY3QpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9pbj0odWludDhfdCopenN0
cmVhbS0+bmV4dF9pbjsKKyAgICAgICAgICAgIGFic3RyYWN0LT5hdmFpbF9pbj0odWludDMyX3Qp
enN0cmVhbS0+YXZhaWxfaW47CisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9vdXQ9KHVpbnQ4
X3QqKXpzdHJlYW0tPm5leHRfb3V0OworICAgICAgICAgICAgYWJzdHJhY3QtPmF2YWlsX291dD0o
dWludDMyX3QpenN0cmVhbS0+YXZhaWxfb3V0OworICAgICAgICAgICAgCisgICAgICAgICAgICBz
d2l0Y2ggKHJlcykgeworICAgICAgICAgICAgICAgIGNhc2UgWl9PSzogcmV0dXJuIFRTRl9aSVBf
UkVTX09LOworICAgICAgICAgICAgICAgIGNhc2UgWl9TVFJFQU1fRU5EOiByZXR1cm4gVFNGX1pJ
UF9SRVNfRU5EOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IHRzZl9zZXRfemxpYl9lcnJvcihyZXMsenN0cmVhbS0+bXNnLE5VTEwpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVFNGX1pJUF9SRVNfRVJST1I7CisgICAgICAgICAgICB9CisjZW5kaWYK
KyNpZmRlZiBIQVZFX0JaSVAyCisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAgICAgICAg
ICAgIGJ6c3RyZWFtPXN0cmVhbTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnpzdHJlYW0t
Pm5leHRfaW49KGNoYXIqKWFic3RyYWN0LT5uZXh0X2luOworICAgICAgICAgICAgYnpzdHJlYW0t
PmF2YWlsX2luPSh1bnNpZ25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX2luOworICAgICAgICAgICAg
YnpzdHJlYW0tPm5leHRfb3V0PShjaGFyKilhYnN0cmFjdC0+bmV4dF9vdXQ7CisgICAgICAgICAg
ICBienN0cmVhbS0+YXZhaWxfb3V0PSh1bnNpZ25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX291dDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzPUJaMl9iekRlY29tcHJlc3MoYnpzdHJlYW0p
OworICAgICAgICAgICAgCisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9pbj0odWludDhfdCop
YnpzdHJlYW0tPm5leHRfaW47CisgICAgICAgICAgICBhYnN0cmFjdC0+YXZhaWxfaW49KHVpbnQz
Ml90KWJ6c3RyZWFtLT5hdmFpbF9pbjsKKyAgICAgICAgICAgIGFic3RyYWN0LT5uZXh0X291dD0o
dWludDhfdCopYnpzdHJlYW0tPm5leHRfb3V0OworICAgICAgICAgICAgYWJzdHJhY3QtPmF2YWls
X291dD0odWludDMyX3QpYnpzdHJlYW0tPmF2YWlsX291dDsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgc3dpdGNoIChyZXMpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEJaX09LOgorICAgICAg
ICAgICAgICAgIGNhc2UgQlpfUlVOX09LOgorICAgICAgICAgICAgICAgIGNhc2UgQlpfRkxVU0hf
T0s6CisgICAgICAgICAgICAgICAgY2FzZSBCWl9GSU5JU0hfT0s6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBUU0ZfWklQX1JFU19PSzsKKyAgICAgICAgICAgICAgICBjYXNlIEJaX1NUUkVB
TV9FTkQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUU0ZfWklQX1JFU19FTkQ7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9saWJiemlw
Ml9lcnJvcihyZXMsTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUU0ZfWklQX1JF
U19FUlJPUjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OiBicmVhazsK
KyAgICB9CisgICAgCisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9JTlRFUk5BTCwKKyAgICAgICAg
ICAgICAgICAgICJCYWQgbW9kZSB2YWx1ZSBpbiB0c2ZfemlwX2Fic3RyYWN0X2luZmxhdGUoKSIp
OworICAgIAorICAgIHJldHVybiBUU0ZfWklQX1JFU19FUlJPUjsKK30KKworCisKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2Fic3RyYWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBf
YWJzdHJhY3QuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
d2FzbS90c2YvdHNmX3ppcF9hYnN0cmFjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBG
SUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxP
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgRlBfVFNGX1pJUF9BQlNUUkFDVF9ICisjZGVmaW5lIEZQX1RTRl9aSVBfQUJTVFJB
Q1RfSAorCisjaW5jbHVkZSAidHNmX3R5cGVzLmgiCisKK3N0cnVjdCB0c2ZfemlwX2Fic3RyYWN0
IHsKKyAgICB1aW50OF90ICpuZXh0X2luOworICAgIHVpbnQzMl90IGF2YWlsX2luOworICAgIAor
ICAgIHVpbnQ4X3QgKm5leHRfb3V0OworICAgIHVpbnQzMl90IGF2YWlsX291dDsKK307CisKK3R5
cGVkZWYgc3RydWN0IHRzZl96aXBfYWJzdHJhY3QgdHNmX3ppcF9hYnN0cmFjdF90OworCitlbnVt
IHRzZl96aXBfYWN0aW9uIHsKKyAgICBUU0ZfWklQX0FDVF9SVU4sCisgICAgVFNGX1pJUF9BQ1Rf
U1lOQ19GTFVTSCwKKyAgICBUU0ZfWklQX0FDVF9GVUxMX0ZMVVNILAorICAgIFRTRl9aSVBfQUNU
X0ZJTklTSAorfTsKKwordHlwZWRlZiBlbnVtIHRzZl96aXBfYWN0aW9uIHRzZl96aXBfYWN0aW9u
X3Q7CisKK2VudW0gdHNmX3ppcF9yZXN1bHQgeworICAgIFRTRl9aSVBfUkVTX09LLAorICAgIFRT
Rl9aSVBfUkVTX0VORCwKKyAgICBUU0ZfWklQX1JFU19FUlJPUiAgIC8qIGlmIHRoaXMgaXMgcmV0
dXJuZWQsIHRoZSBlcnJvciB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZXQu
ICovCit9OworCit0eXBlZGVmIGVudW0gdHNmX3ppcF9yZXN1bHQgdHNmX3ppcF9yZXN1bHRfdDsK
KwordHNmX3ppcF9yZXN1bHRfdCB0c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUodHNmX3ppcF9tb2Rl
X3QgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl96
aXBfYWJzdHJhY3RfdCAqYWJzdHJhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfemlwX2FjdGlvbl90IGFjdGlvbik7CisKK3RzZl96aXBfcmVzdWx0X3Qg
dHNmX3ppcF9hYnN0cmFjdF9pbmZsYXRlKHRzZl96aXBfbW9kZV90IG1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX2Fic3RyYWN0X3QgKmFic3Ry
YWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3ppcF9h
Y3Rpb25fdCBhY3Rpb24pOworCisjZW5kaWYKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9hdHRyLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfYXR0ci5jCShub25leGlzdGVudCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2F0dHIuYwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgor
CisjaWZkZWYgSEFWRV9aTElCCisjaW5jbHVkZSA8emxpYi5oPgorI2VuZGlmCisKKyNpZmRlZiBI
QVZFX0JaSVAyCisjaW5jbHVkZSA8YnpsaWIuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisKKyNpZmRlZiBIQVZFX1NUUklOR1NfSAorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRp
ZgorCit2b2lkIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQodHNmX3ppcF93dHJfYXR0cl90
ICphdHRyKSB7CisgICAgbWVtc2V0KGF0dHIsMCxzaXplb2YodHNmX3ppcF93dHJfYXR0cl90KSk7
CisgICAgYXR0ci0+bW9kZT1UU0ZfWklQX05PTkU7Cit9CisKK3RzZl9ib29sX3QgdHNmX3ppcF93
dHJfYXR0cl9nZXRfemxpYl9kZWZhdWx0KHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0cikgeworICAg
IGlmIChhdHRyIT1OVUxMKSB7CisgICAgICAgIG1lbXNldChhdHRyLDAsc2l6ZW9mKHRzZl96aXBf
d3RyX2F0dHJfdCkpOworICAgIH0KKyNpZmRlZiBIQVZFX1pMSUIKKyAgICBpZiAoYXR0ciE9TlVM
TCkgeworICAgICAgICBhdHRyLT5tb2RlPVRTRl9aSVBfWkxJQjsKKyAgICAgICAgYXR0ci0+YnVm
X3NpemU9NjU1MzY7CisgICAgICAgIGF0dHItPnUuei5hZHZhbmNlZF9pbml0PXRzZl9mYWxzZTsK
KyAgICAgICAgYXR0ci0+dS56LmxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTjsKKyAgICAgICAg
YXR0ci0+dS56Lm1ldGhvZD1aX0RFRkxBVEVEOworICAgICAgICBhdHRyLT51Lnoud2luZG93Qml0
cz0xNTsKKyAgICAgICAgYXR0ci0+dS56Lm1lbUxldmVsPTg7CisgICAgICAgIGF0dHItPnUuei5z
dHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1k7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsK
KyNlbHNlCisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfU1VQUE9SVEVELAorICAgICAgICAg
ICAgICAgICAgInpsaWIgc3VwcG9ydCBpcyBub3QgY29uZmlndXJlZC4iKTsKKyAgICByZXR1cm4g
dHNmX2ZhbHNlOworI2VuZGlmCit9CisKK3RzZl9ib29sX3QgdHNmX3ppcF93dHJfYXR0cl9nZXRf
YnppcDJfZGVmYXVsdCh0c2ZfemlwX3d0cl9hdHRyX3QgKmF0dHIpIHsKKyAgICBpZiAoYXR0ciE9
TlVMTCkgeworICAgICAgICBtZW1zZXQoYXR0ciwwLHNpemVvZih0c2ZfemlwX3d0cl9hdHRyX3Qp
KTsKKyAgICB9CisjaWZkZWYgSEFWRV9CWklQMgorICAgIGlmIChhdHRyIT1OVUxMKSB7CisgICAg
ICAgIGF0dHItPm1vZGU9VFNGX1pJUF9CWklQMjsKKyAgICAgICAgYXR0ci0+YnVmX3NpemU9NjU1
MzY7CisgICAgICAgIGF0dHItPnUuYi5ibG9ja1NpemUxMDBrPTk7CisgICAgICAgIGF0dHItPnUu
Yi52ZXJib3NpdHk9MDsKKyAgICAgICAgYXR0ci0+dS5iLndvcmtGYWN0b3I9MDsKKyAgICB9Cisg
ICAgcmV0dXJuIHRzZl90cnVlOworI2Vsc2UKKyAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9T
VVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAibGliYnppcDIgc3VwcG9ydCBpcyBub3QgY29u
ZmlndXJlZC4iKTsKKyAgICByZXR1cm4gdHNmX2ZhbHNlOworI2VuZGlmCit9CisKK3RzZl9ib29s
X3QgdHNmX3ppcF93dHJfYXR0cl9nZXRfZm9yX21vZGUodHNmX3ppcF93dHJfYXR0cl90ICphdHRy
LAorCQkJCQkgdHNmX3ppcF9tb2RlX3QgbW9kZSkgeworICAgIHN3aXRjaCAobW9kZSkgeworICAg
IGNhc2UgVFNGX1pJUF9OT05FOgorCXRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQoYXR0cik7
CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfWklQX1pMSUI6CisJdHNmX3ppcF93dHJfYXR0cl9nZXRf
emxpYl9kZWZhdWx0KGF0dHIpOworCWJyZWFrOworICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKwl0
c2ZfemlwX3d0cl9hdHRyX2dldF9iemlwMl9kZWZhdWx0KGF0dHIpOworCWJyZWFrOworICAgIGRl
ZmF1bHQ6CisJdHNmX3NldF9lcnJvcihUU0ZfRV9JTlZBTElEX0FSRywKKwkJICAgICAgIkludmFs
aWQgbW9kZSBpbiB0c2ZfenBpX3d0cl9hdHRyX2dldF9mb3JfbW9kZSgpOiAlZCIsCisJCSAgICAg
IG1vZGUpOworCXJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsK
K30KKwordm9pZCB0c2ZfemlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KHRzZl96aXBfcmRyX2F0dHJf
dCAqYXR0cikgeworI2lmZGVmIEhBVkVfWkxJQgorICAgIGF0dHItPnouYWxsb3c9dHNmX3RydWU7
CisjZWxzZQorICAgIGF0dHItPnouYWxsb3c9dHNmX2ZhbHNlOworI2VuZGlmCisgICAgYXR0ci0+
ei5idWZfc2l6ZT02NTUzNjsKKyAgICBhdHRyLT56LmFkdmFuY2VkX2luaXQ9dHNmX2ZhbHNlOwor
ICAgIGF0dHItPnoud2luZG93Qml0cz0xNTsKKworI2lmZGVmIEhBVkVfQlpJUDIKKyAgICBhdHRy
LT5iLmFsbG93PXRzZl90cnVlOworI2Vsc2UKKyAgICBhdHRyLT5iLmFsbG93PXRzZl9mYWxzZTsK
KyNlbmRpZgorICAgIGF0dHItPmIuYnVmX3NpemU9NjU1MzY7CisgICAgYXR0ci0+Yi52ZXJib3Np
dHk9MDsKKyAgICBhdHRyLT5iLnNtYWxsPTA7Cit9CisKK3ZvaWQgdHNmX3ppcF9yZHJfYXR0cl9n
ZXRfbm96aXAodHNmX3ppcF9yZHJfYXR0cl90ICphdHRyKSB7CisgICAgdHNmX3ppcF9yZHJfYXR0
cl9nZXRfZGVmYXVsdChhdHRyKTsKKyAgICBhdHRyLT56LmFsbG93PXRzZl9mYWxzZTsKKyAgICBh
dHRyLT5iLmFsbG93PXRzZl9mYWxzZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfemlwX3Jkcl9hdHRy
X2lzX25vemlwKHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0cikgeworICAgIHJldHVybiAhYXR0ci0+
ei5hbGxvdyAmJiAhYXR0ci0+Yi5hbGxvdzsKK30KKworCisKKwpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfcmVhZGVyLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfcmVhZGVyLmMJKG5v
bmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96
aXBfcmVhZGVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpM
TyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisKKyNpZmRlZiBIQVZF
X1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfQlpJUDIKKyNp
bmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKKyNkZWZpbmUgQ3oocmVhZGVyKSAoKHpfc3RyZWFt
KikoKHJlYWRlciktPnN0cmVhbSkpCisjZGVmaW5lIENieihyZWFkZXIpICgoYnpfc3RyZWFtKiko
KHJlYWRlciktPnN0cmVhbSkpCisKK3RzZl96aXBfcmRyX3QgKnRzZl96aXBfcmVhZGVyX2NyZWF0
ZSh0c2ZfcGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqcmVhZGVyX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfemlwX21vZGVfdCBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0cikgeworICAgIGludCBy
ZXM7CisgICAgdHNmX3ppcF9yZHJfdCAqcmVzdWx0PW1hbGxvYyhzaXplb2YodHNmX3ppcF9yZHJf
dCkpOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IG1hbGxvYyB0c2ZfemlwX3Jkcl90Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICByZXN1bHQtPmRlY29tcF9lb2Y9dHNmX2ZhbHNlOworICAgIAorICAgIHJl
c3VsdC0+cmVhZGVyPXJlYWRlcjsKKyAgICByZXN1bHQtPnJlYWRlcl9hcmc9cmVhZGVyX2FyZzsK
KyAgICAKKyAgICByZXN1bHQtPm1vZGU9bW9kZTsKKyAgICAKKyAgICBzd2l0Y2ggKG1vZGUpIHsK
KyAgICAgICAgY2FzZSBUU0ZfWklQX1pMSUI6CisgICAgICAgICAgICByZXN1bHQtPmJ1Zl9zaXpl
PWF0dHItPnouYnVmX3NpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUU0Zf
WklQX0JaSVAyOgorICAgICAgICAgICAgcmVzdWx0LT5idWZfc2l6ZT1hdHRyLT5iLmJ1Zl9zaXpl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFNGX1pJUF9OT05FOgorICAgICAg
ICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9JTlZBTElEX0FSRywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRTRl9aSVBfTk9ORSBpcyBub3QgYSB2YWxpZCBtb2RlIGZvciAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0c2ZfemlwX3JlYWRlcl9jcmVhdGUoKSIpOworICAgICAgICAg
ICAgZ290byBmYWlsdXJlXzE7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2Zfc2V0
X2Vycm9yKFRTRl9FX0lOVkFMSURfQVJHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQg
aXMgbm90IGEgdmFsaWQgbW9kZSBudW1iZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRzZl96aXBfcmVhZGVyX2NyZWF0ZSgpIixtb2RlKTsKKyAgICAgICAgICAgIGdvdG8gZmFp
bHVyZV8xOworICAgIH0KKyAgICAKKyAgICByZXN1bHQtPmJ1Zj1tYWxsb2MocmVzdWx0LT5idWZf
c2l6ZSk7CisgICAgaWYgKHJlc3VsdC0+YnVmPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCBtYWxsb2MgYnVmZmVyIik7CisgICAgICAgIGdvdG8gZmFpbHVyZV8xOwor
ICAgIH0KKyAgICAKKyAgICByZXN1bHQtPmFic3RyYWN0Lm5leHRfaW49cmVzdWx0LT5idWY7Cisg
ICAgcmVzdWx0LT5hYnN0cmFjdC5hdmFpbF9pbj0wOworICAgIAorICAgIHN3aXRjaCAobW9kZSkg
eworICAgICAgICBjYXNlIFRTRl9aSVBfWkxJQjoKKyNpZmRlZiBIQVZFX1pMSUIKKyAgICAgICAg
ICAgIHJlc3VsdC0+c3RyZWFtPW1hbGxvYyhzaXplb2Yoel9zdHJlYW0pKTsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQtPnN0cmVhbT09TlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCBtYWxsb2Mgel9zdHJlYW0iKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZh
aWx1cmVfMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ3oocmVz
dWx0KS0+emFsbG9jPU5VTEw7CisgICAgICAgICAgICBDeihyZXN1bHQpLT56ZnJlZT1OVUxMOwor
ICAgICAgICAgICAgQ3oocmVzdWx0KS0+b3BhcXVlPU5VTEw7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChhdHRyLT56LmFkdmFuY2VkX2luaXQpIHsKKyAgICAgICAgICAgICAgICByZXM9
aW5mbGF0ZUluaXQyKEN6KHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRyLT56LndpbmRvd0JpdHMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICByZXM9aW5mbGF0ZUluaXQoQ3oocmVzdWx0KSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAocmVzIT1aX09LKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF96bGliX2Vycm9y
KHJlcyxDeihyZXN1bHQpLT5tc2csCisgICAgICAgICAgICAgICAgICAgICJUcnlpbmcgdG8gaW5p
dGlhbGl6ZSBpbmZsYXRpb24gaW4gWkxpYiIpOworICAgICAgICAgICAgICAgIGZyZWUoQ3oocmVz
dWx0KSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlXzI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9F
X05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJUU0ZfWklQX1pMSUIg
aXMgbm90IHN1cHBvcnRlZCBieSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2Zfemlw
X3JlYWRlcl9jcmVhdGUoKSBiZWNhdXNlIFpMaWIgc3VwcG9ydCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ3YXMgbm90IGNvbmZpZ3VyZWQgaW50byB0aGUgVFNGIGxpYnJhcnkiKTsKKyAg
ICAgICAgICAgIGdvdG8gZmFpbHVyZV8yOworI2VuZGlmCisgICAgICAgIGNhc2UgVFNGX1pJUF9C
WklQMjoKKyNpZmRlZiBIQVZFX0JaSVAyCisgICAgICAgICAgICByZXN1bHQtPnN0cmVhbT1tYWxs
b2Moc2l6ZW9mKGJ6X3N0cmVhbSkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC0+c3RyZWFtPT1O
VUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBi
el9zdHJlYW0iKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ2J6KHJlc3VsdCktPmJ6YWxsb2M9TlVMTDsK
KyAgICAgICAgICAgIENieihyZXN1bHQpLT5iemZyZWU9TlVMTDsKKyAgICAgICAgICAgIENieihy
ZXN1bHQpLT5vcGFxdWU9TlVMTDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzPUJaMl9i
ekRlY29tcHJlc3NJbml0KENieihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dHItPmIudmVyYm9zaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dHItPmIuc21hbGwpOworICAgICAgICAgICAgaWYgKHJlcyE9QlpfT0spIHsK
KyAgICAgICAgICAgICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKHJlcywKKyAgICAgICAgICAg
ICAgICAgICAgIlRyeWluZyB0byBpbml0aWFsaXplIGRlY29tcHJlc3Npb24gaW4gbGliYnppcDIi
KTsKKyAgICAgICAgICAgICAgICBmcmVlKENieihyZXN1bHQpKTsKKyAgICAgICAgICAgICAgICBn
b3RvIGZhaWx1cmVfMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
YnJlYWs7CisjZWxzZQorICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfU1VQUE9S
VEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVFNGX1pJUF9CWklQMiBpcyBub3Qgc3Vw
cG9ydGVkIGJ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInRzZl96aXBfcmVhZGVyX2Ny
ZWF0ZSgpIGJlY2F1c2UgbGliYnppcDIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vw
cG9ydCB3YXMgbm90IGNvbmZpZ3VyZWQgaW50byB0aGUgVFNGICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgImxpYnJhcnkiKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbHVyZV8yOworI2VuZGlm
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2ZfYWJvcnQoInNob3VsZCd2ZSBhbHJl
YWR5IGNhdWdodCB0aGlzIGNhc2UiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gcmVzdWx0OworICAgIAorZmFpbHVyZV8yOgorICAgIGZyZWUocmVzdWx0LT5i
dWYpOworZmFpbHVyZV8xOgorICAgIGZyZWUocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30K
Kwordm9pZCB0c2ZfemlwX3JlYWRlcl9kZXN0cm95KHRzZl96aXBfcmRyX3QgKnJlYWRlcikgewor
ICAgIHN3aXRjaCAocmVhZGVyLT5tb2RlKSB7CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAgIGNh
c2UgVFNGX1pJUF9aTElCOgorICAgICAgICAgICAgaW5mbGF0ZUVuZChDeihyZWFkZXIpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworI2VuZGlmCisjaWZkZWYgSEFWRV9CWklQMgorICAgICAgICBjYXNl
IFRTRl9aSVBfQlpJUDI6CisgICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKENieihyZWFk
ZXIpKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICB0c2ZfYWJvcnQoInVua25vd24gemlwIHJlYWRlciBtb2RlIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgZnJlZShyZWFkZXItPnN0cmVhbSk7CisgICAgZnJlZShyZWFk
ZXItPmJ1Zik7CisgICAgZnJlZShyZWFkZXIpOworfQorCit0c2ZfYm9vbF90IHRzZl96aXBfcmVh
ZGVyX3JlYWQodm9pZCAqX3JlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbikg
eworICAgIHRzZl96aXBfcmRyX3QgKnJlYWRlciA9IF9yZWFkZXI7CisgICAgaW50MzJfdCByZWFk
ZXJfcmVzOworICAgIHRzZl96aXBfcmVzdWx0X3QgemlwX3JlczsKKyAgICAKKyAgICBpZiAobGVu
ID09IDApIHsKKyAgICAgICAgcmV0dXJuIHRzZl90cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAo
cmVhZGVyLT5kZWNvbXBfZW9mKSB7CisgICAgICAgIHJlYWRlcl9yZXMgPSByZWFkZXItPnJlYWRl
cihyZWFkZXItPnJlYWRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWFkZXItPmJ1ZiwgMSk7CisgICAgICAgIHRzZl9hc3NlcnQocmVhZGVyX3JlcyA9PSAtMSB8
fCByZWFkZXJfcmVzID09IDEpOworICAgICAgICBpZiAocmVhZGVyX3JlcyA9PSAxKSB7CisgICAg
ICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PX0VPRiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIEVPRiAoYmVjYXVzZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVjb21wcmVzc29yIHJlYWNoZWQgaXRzIGVuZCAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJvZiBzdHJlYW0pLCBidXQgZGlkIG5vdCBnZXQgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAib25lIChJIHdhcyBzdGlsbCBhYmxlIHRvIHJlYWQgYSBieXRlKSIpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJlYWRlci0+
YWJzdHJhY3QubmV4dF9vdXQgPSBkYXRhOworICAgIHJlYWRlci0+YWJzdHJhY3QuYXZhaWxfb3V0
ID0gbGVuOworICAgIAorICAgIGZvciAoOzspIHsKKwkvKiBpcyB0aGVyZSBldmVyIGEgY2FzZSB3
aGVyZSB3ZSB3b3VsZCB3YW50IHRvIGNhbGwgaW5mbGF0ZSBldmVuIHRob3VnaAorCSAgIHRoZSBp
bnB1dCBidWZmZXIgaXMgZW1wdHk/ICovCisgICAgICAgIGlmIChyZWFkZXItPmFic3RyYWN0LmF2
YWlsX2luICE9IDApIHsKKyAgICAgICAgICAgIHppcF9yZXMgPSB0c2ZfemlwX2Fic3RyYWN0X2lu
ZmxhdGUocmVhZGVyLT5tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFkZXItPnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJihyZWFkZXItPmFic3RyYWN0KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNGX1pJUF9BQ1RfUlVOKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKHppcF9yZXMgPT0gVFNGX1pJUF9SRVNfRVJST1IpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmICh6
aXBfcmVzID09IFRTRl9aSVBfUkVTX0VORCkgeworICAgICAgICAgICAgICAgIGlmIChyZWFkZXIt
PmFic3RyYWN0LmF2YWlsX2luICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9OT19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4
cGVjdGVkIEVPRiAoYmVjYXVzZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZWNvbXByZXNzb3IgcmVhY2hlZCBpdHMgZW5kICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAib2Ygc3RyZWFtKSwgYnV0IGRpZCBub3QgZ2V0ICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAib25lICh0aGVyZSB3YXMgc3RpbGwgZGF0YSBsZWZ0ICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIGJ1ZmZlcikiKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmVhZGVyLT5kZWNvbXBfZW9mID0gdHNmX3RydWU7CisgICAgICAgICAg
ICAgICAgaWYgKHJlYWRlci0+YWJzdHJhY3QuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRzZl9z
ZXRfZXJyb3IoKHZvaWQqKXJlYWRlci0+YWJzdHJhY3QubmV4dF9vdXQgPT0gZGF0YSA/CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUU0ZfRV9VTkVYUEVDVEVEX0VPRiA6IFRTRl9FX0VS
Uk9ORU9VU19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAocmVhZGVyLT5hYnN0cmFjdC5hdmFpbF9vdXQgPT0gMCkgeworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICB0c2ZfYXNzZXJ0KHJlYWRlci0+YWJzdHJhY3QuYXZhaWxfaW4gPT0gMCk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJlYWRlcl9yZXMgPSByZWFkZXItPnJlYWRlcihyZWFkZXIt
PnJlYWRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIt
PmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci0+YnVmX3Np
emUpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlYWRlcl9yZXMgPT0gLTEpIHsKKyAgICAgICAg
ICAgIGlmICh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSA9PSBUU0ZfRV9VTkVYUEVDVEVEX0VPRikgewor
ICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfRVJST05FT1VTX0VPRiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJHb3QgYW4gRU9GIGZyb20gdGhlIHJlYWRlciBiZWZv
cmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzb3IgaGFk
IHJlYWNoZWQgZW5kIG9mIHN0cmVhbSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVhZGVyLT5hYnN0
cmFjdC5uZXh0X2luID0gcmVhZGVyLT5idWY7CisgICAgICAgIHJlYWRlci0+YWJzdHJhY3QuYXZh
aWxfaW4gPSByZWFkZXJfcmVzOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9
CisKKworCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
emlwX3dyaXRlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfemlwX3dyaXRlci5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX3dyaXRlci5jCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDE1IEZp
bGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisKKyNpZmRlZiBI
QVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfQlpJUDIK
KyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKKyNkZWZpbmUgQ3ood3JpdGVyKSAoKHpfc3Ry
ZWFtKikoKHdyaXRlciktPnN0cmVhbSkpCisjZGVmaW5lIENieih3cml0ZXIpICgoYnpfc3RyZWFt
KikoKHdyaXRlciktPnN0cmVhbSkpCisKK3RzZl96aXBfd3RyX3QgKnRzZl96aXBfd3JpdGVyX2Ny
ZWF0ZSh0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKndyaXRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdHNmX3ppcF93dHJfYXR0cl90ICphdHRyKSB7CisgICAgaW50IHJlczsKKyAg
ICB0c2ZfemlwX3d0cl90ICpyZXN1bHQ9bWFsbG9jKHNpemVvZih0c2ZfemlwX3d0cl90KSk7Cisg
ICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
bWFsbG9jIHRzZl96aXBfd3RyX3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IAorICAgIHJlc3VsdC0+d3JpdGVyPXdyaXRlcjsKKyAgICByZXN1bHQtPndyaXRlcl9hcmc9d3Jp
dGVyX2FyZzsKKyAgICByZXN1bHQtPm1vZGU9YXR0ci0+bW9kZTsKKyAgICAKKyAgICByZXN1bHQt
PmJ1Zl9zaXplPWF0dHItPmJ1Zl9zaXplOworICAgIHJlc3VsdC0+YnVmPW1hbGxvYyhyZXN1bHQt
PmJ1Zl9zaXplKTsKKyAgICBpZiAocmVzdWx0LT5idWY9PU5VTEwpIHsKKyAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBidWZmZXIiKTsKKyAgICAgICAgZ290byBmYWlsdXJl
XzE7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+YWJzdHJhY3QubmV4dF9vdXQ9cmVzdWx0LT5i
dWY7CisgICAgcmVzdWx0LT5hYnN0cmFjdC5hdmFpbF9vdXQ9cmVzdWx0LT5idWZfc2l6ZTsKKyAg
ICAKKyAgICBzd2l0Y2ggKGF0dHItPm1vZGUpIHsKKyAgICAgICAgY2FzZSBUU0ZfWklQX1pMSUI6
CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAgICAgICByZXN1bHQtPnN0cmVhbT1tYWxsb2Moc2l6
ZW9mKHpfc3RyZWFtKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LT5zdHJlYW09PU5VTEwpIHsK
KyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHpfc3RyZWFt
Iik7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlXzI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIEN6KHJlc3VsdCktPnphbGxvYz1OVUxMOworICAgICAgICAg
ICAgQ3oocmVzdWx0KS0+emZyZWU9TlVMTDsKKyAgICAgICAgICAgIEN6KHJlc3VsdCktPm9wYXF1
ZT1OVUxMOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYXR0ci0+dS56LmFkdmFuY2Vk
X2luaXQpIHsKKyAgICAgICAgICAgICAgICByZXM9ZGVmbGF0ZUluaXQyKEN6KHJlc3VsdCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT51LnoubGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT51LnoubWV0aG9kLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dS56LndpbmRvd0JpdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdHRyLT51LnoubWVtTGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdHRyLT51Lnouc3RyYXRlZ3kpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICByZXM9ZGVmbGF0ZUluaXQoQ3oocmVzdWx0KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dS56LmxldmVsKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChyZXMhPVpfT0spIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X3ps
aWJfZXJyb3IocmVzLEN6KHJlc3VsdCktPm1zZywKKyAgICAgICAgICAgICAgICAgICAgIlRyeWlu
ZyB0byBpbml0aWFsaXplIGRlZmxhdGlvbiBpbiBaTGliIik7CisgICAgICAgICAgICAgICAgZnJl
ZShDeihyZXN1bHQpKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworI2Vsc2UKKyAgICAgICAgICAgIHRzZl9zZXRfZXJy
b3IoVFNGX0VfTk9UX1NVUFBPUlRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRTRl9a
SVBfWkxJQiBpcyBub3Qgc3VwcG9ydGVkIGJ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
InRzZl96aXBfd3JpdGVyX2NyZWF0ZSgpIGJlY2F1c2UgWkxpYiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzdXBwb3J0IHdhcyBub3QgY29uZmlndXJlZCBpbnRvIHRoZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJUU0YgbGlicmFyeSIpOworICAgICAgICAgICAgZ290byBmYWls
dXJlXzI7CisjZW5kaWYKKyAgICAgICAgY2FzZSBUU0ZfWklQX0JaSVAyOgorI2lmZGVmIEhBVkVf
QlpJUDIKKyAgICAgICAgICAgIHJlc3VsdC0+c3RyZWFtPW1hbGxvYyhzaXplb2YoYnpfc3RyZWFt
KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LT5zdHJlYW09PU5VTEwpIHsKKyAgICAgICAgICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGJ6X3N0cmVhbSIpOworICAgICAg
ICAgICAgICAgIGdvdG8gZmFpbHVyZV8yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBDYnoocmVzdWx0KS0+YnphbGxvYz1OVUxMOworICAgICAgICAgICAgQ2J6KHJl
c3VsdCktPmJ6ZnJlZT1OVUxMOworICAgICAgICAgICAgQ2J6KHJlc3VsdCktPm9wYXF1ZT1OVUxM
OworICAgICAgICAgICAgCisgICAgICAgICAgICByZXM9QloyX2J6Q29tcHJlc3NJbml0KENieihy
ZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT51LmIuYmxv
Y2tTaXplMTAwaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dS5i
LnZlcmJvc2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dS5i
LndvcmtGYWN0b3IpOworICAgICAgICAgICAgaWYgKHJlcyE9QlpfT0spIHsKKyAgICAgICAgICAg
ICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKHJlcywKKyAgICAgICAgICAgICAgICAgICAgIlRy
eWluZyB0byBpbml0aWFsaXplIGNvbXByZXNzaW9uIGluIGxpYmJ6aXAyIik7CisgICAgICAgICAg
ICAgICAgZnJlZShDYnoocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlXzI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJUU0ZfWklQX0JaSVAyIGlzIG5vdCBzdXBwb3J0ZWQgYnkgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAidHNmX3ppcF93cml0ZXJfY3JlYXRlKCkgYmVjYXVzZSBsaWJiemlwMiAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHdhcyBub3QgY29uZmlndXJlZCBpbnRv
IHRoZSBUU0YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIpOworICAgICAg
ICAgICAgZ290byBmYWlsdXJlXzI7CisjZW5kaWYKKyAgICAgICAgY2FzZSBUU0ZfWklQX05PTkU6
CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVkFMSURfQVJHLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiVFNGX1pJUF9OT05FIGlzIG5vdCBhIHZhbGlkIG1vZGUgZm9yICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgInRzZl96aXBfd3JpdGVyX2NyZWF0ZSgpIik7Cisg
ICAgICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHRzZl9zZXRfZXJyb3IoVFNGX0VfSU5WQUxJRF9BUkcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIlZCBpcyBub3QgYSB2YWxpZCBtb2RlIG51bWJlciBmb3IgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAidHNmX3ppcF93cml0ZXJfY3JlYXRlKCkiLGF0dHItPm1vZGUpOworICAgICAg
ICAgICAgZ290byBmYWlsdXJlXzI7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgCitmYWlsdXJlXzI6CisgICAgZnJlZShyZXN1bHQtPmJ1Zik7CitmYWlsdXJlXzE6CisgICAg
ZnJlZShyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCit2b2lkIHRzZl96aXBfd3JpdGVy
X2Rlc3Ryb3kodHNmX3ppcF93dHJfdCAqd3JpdGVyKSB7CisgICAgc3dpdGNoICh3cml0ZXItPm1v
ZGUpIHsKKyNpZmRlZiBIQVZFX1pMSUIKKyAgICAgICAgY2FzZSBUU0ZfWklQX1pMSUI6CisgICAg
ICAgICAgICBkZWZsYXRlRW5kKEN6KHdyaXRlcikpOworICAgICAgICAgICAgYnJlYWs7CisjZW5k
aWYKKyNpZmRlZiBIQVZFX0JaSVAyCisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAgICAg
ICAgICAgIEJaMl9iekNvbXByZXNzRW5kKENieih3cml0ZXIpKTsKKyAgICAgICAgICAgIGJyZWFr
OworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2ZfYWJvcnQoInVua25v
d24gemlwIHdyaXRlciBtb2RlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgZnJl
ZSh3cml0ZXItPnN0cmVhbSk7CisgICAgZnJlZSh3cml0ZXItPmJ1Zik7CisgICAgZnJlZSh3cml0
ZXIpOworfQorCit0c2ZfYm9vbF90IHRzZl96aXBfd3JpdGVyX3dyaXRlKHZvaWQgKl93cml0ZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbikgeworICAgIHRzZl96aXBf
d3RyX3QgKndyaXRlciA9IF93cml0ZXI7CisgICAgdHNmX3ppcF9yZXN1bHRfdCByZXM7CisgICAg
CisgICAgd3JpdGVyLT5hYnN0cmFjdC5uZXh0X2luID0gKHZvaWQqKWRhdGE7CisgICAgd3JpdGVy
LT5hYnN0cmFjdC5hdmFpbF9pbiA9IGxlbjsKKyAgICAKKyAgICB3aGlsZSAod3JpdGVyLT5hYnN0
cmFjdC5hdmFpbF9pbiA+IDApIHsKKyAgICAgICAgcmVzPXRzZl96aXBfYWJzdHJhY3RfZGVmbGF0
ZSh3cml0ZXItPm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLT5zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih3cml0
ZXItPmFic3RyYWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU0Zf
WklQX0FDVF9SVU4pOworICAgICAgICBpZiAocmVzID09IFRTRl9aSVBfUkVTX0VSUk9SKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBU
U0ZfWklQX1JFU19PSykgeworICAgICAgICAgICAgLyogcGFycnJ0YXkhISAqLworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdHNmX2Fib3J0KCJnb3Qgc29tZSB3ZWlyZCByZXR1cm4gY29k
ZSBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3ppcF9hYnN0cmFjdF9kZWZsYXRl
KCkiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHdyaXRlci0+YWJzdHJhY3Qu
YXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmICghd3JpdGVyLT53cml0ZXIod3JpdGVy
LT53cml0ZXJfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5idWZfc2l6ZSkpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgd3JpdGVyLT5hYnN0cmFjdC5uZXh0X291dCA9IHdyaXRlci0+YnVmOworICAgICAgICAg
ICAgd3JpdGVyLT5hYnN0cmFjdC5hdmFpbF9vdXQgPSB3cml0ZXItPmJ1Zl9zaXplOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0
c2ZfemlwX3dyaXRlcl9mbHVzaCh0c2ZfemlwX3d0cl90ICp3cml0ZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgZnVsbF9mbHVzaCkgeworICAgIHRzZl96aXBf
cmVzdWx0X3QgcmVzOworICAgIAorICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9pbj1OVUxMOwor
ICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfaW49MDsKKyAgICAKKyAgICBmb3IgKDs7KSB7Cisg
ICAgICAgIHJlcz10c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUod3JpdGVyLT5tb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYod3JpdGVyLT5hYnN0cmFjdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9mbHVzaD8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUU0ZfWklQX0FDVF9GVUxMX0ZMVVNIOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTRl9aSVBfQUNUX1NZTkNfRkxVU0gpOworICAg
ICAgICBpZiAocmVzPT1UU0ZfWklQX1JFU19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXM9PVRTRl9aSVBfUkVTX09LKSB7CisgICAg
ICAgICAgICAvKiBwYXJycnRheSEhICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0
c2ZfYWJvcnQoImdvdCBzb21lIHdlaXJkIHJldHVybiBjb2RlIGZyb20gIgorICAgICAgICAgICAg
ICAgICAgICAgICJ0c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUoKSIpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoIXdyaXRlci0+d3JpdGVyKHdyaXRlci0+d3JpdGVyX2FyZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXItPmFic3RyYWN0Lm5leHRfb3V0LXdyaXRlci0+YnVmKSkgeworICAg
ICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfb3V0IT0wKSB7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9vdXQ9d3JpdGVyLT5i
dWY7CisgICAgICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfb3V0PXdyaXRlci0+YnVmX3NpemU7
CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2Zf
emlwX3dyaXRlcl9maW5pc2godHNmX3ppcF93dHJfdCAqd3JpdGVyKSB7CisgICAgdHNmX3ppcF9y
ZXN1bHRfdCByZXM7CisgICAgICAgIAorICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9pbj1OVUxM
OworICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfaW49MDsKKyAgICAKKyAgICBmb3IgKDs7KSB7
CisgICAgICAgIHJlcz10c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUod3JpdGVyLT5tb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c3RyZWFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYod3JpdGVyLT5hYnN0cmFjdCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNGX1pJUF9BQ1RfRklOSVNIKTsKKyAg
ICAgICAgaWYgKHJlcz09VFNGX1pJUF9SRVNfRVJST1IpIHsKKyAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghd3JpdGVyLT53cml0
ZXIod3JpdGVyLT53cml0ZXJfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci0+YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+YWJzdHJhY3QubmV4
dF9vdXQtd3JpdGVyLT5idWYpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9vdXQ9d3JpdGVyLT5idWY7Cisg
ICAgICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfb3V0PXdyaXRlci0+YnVmX3NpemU7CisgICAg
ICAgIAorICAgICAgICBpZiAocmVzPT1UU0ZfWklQX1JFU19FTkQpIHsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwor
CisKKworCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353132</attachid>
            <date>2018-10-25 17:19:11 -0700</date>
            <delta_ts>2018-10-25 17:19:11 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>1793688</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzc0MzkpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBAQAorMjAxOC0xMC0yNSAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBDaGVjayBpbiBjb3Jy
ZXNwb25kaW5nIEMgY29kZSBpbiBKZXRTdHJlYW0gMgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzMzCisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQg
YnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgKiBKZXRTdHJlYW0yL3NpbXBsZS9mbG9hdC1tbS5j
OiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vSGFzaFNldC5jcHA6IEFkZGVkLgor
ICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS9nY2MtbG9vcHMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBKZXRTdHJlYW0yL3dhc20vcXVpY2tzb3J0LmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVh
bTIvd2FzbS90c2Y6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvYnVpbGQu
c2g6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvY29uZmlnLmg6IEFkZGVk
LgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvZ3BjLmg6IEFkZGVkLgorICAgICAgICAq
IEpldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2NvZGVfZ2VuX3V0aWwuYzogQWRkZWQuCisgICAgICAg
ICogSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb24uYzogQWRkZWQuCisgICAgICAg
ICogSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fZGlzcGF0Y2guZ2VuOiBBZGRl
ZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnN0cnVjdGlvbl9zaXplLmdl
bjogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25f
c3RhY2tfZWZmZWN0cy5nZW46IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2Yv
Z3BjX2luc3RydWN0aW9uX3N0YXRpY19zaXplLmdlbjogQWRkZWQuCisgICAgICAgICogSmV0U3Ry
ZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fdG9fc3RyaW5nLmdlbjogQWRkZWQuCisgICAg
ICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW50X2NvbW1vbi5oOiBBZGRlZC4KKyAgICAg
ICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRhYmxlLmM6IEFkZGVkLgorICAgICAgICAq
IEpldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2ludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvZ3BjX2ludGVycHJldGVyLmdlbjogQWRkZWQuCisgICAgICAgICog
SmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfcHJvZ3JhbS5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRT
dHJlYW0yL3dhc20vdHNmL2dwY19wcm90by5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0y
L3dhc20vdHNmL2dwY19zdGFja19oZWlnaHQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFt
Mi93YXNtL3RzZi9ncGNfdGhyZWFkZWQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93
YXNtL3RzZi9ncGNfd29ya2xpc3QuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNt
L3RzZi90c2YuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYWRh
cHRpdmVfcmVhZGVyLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNm
X2FzcHJpbnRmLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2F0
b21pY3MuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3Jl
YWRlci5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9idWZfd3Jp
dGVyLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1ZmZlci5j
OiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9idWlsZF9kZWZpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2NvbmZpZy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb25maWdfc3R1Yi5oOiBB
ZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb3BpZXIuYzogQWRkZWQu
CisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVmaW5lX2hlbHBlcnMuYzogQWRk
ZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVmaW5lX2hlbHBlcnMuaDog
QWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVzdHJ1Y3Rvci5jOiBB
ZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9lcnJvci5jOiBBZGRlZC4K
KyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mb3JtYXQuaDogQWRkZWQuCisgICAg
ICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZnNkYi5jOiBBZGRlZC4KKyAgICAgICAgKiBK
ZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiX3Byb3RvY29sLmM6IEFkZGVkLgorICAgICAgICAq
IEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ZzZGJfcHJvdG9jb2wuaDogQWRkZWQuCisgICAgICAg
ICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZ2VuZXJhdG9yLmM6IEFkZGVkLgorICAgICAgICAq
IEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2dwY19jb2RlX2dlbi5jOiBBZGRlZC4KKyAgICAgICAg
KiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pbmRlbnQuaDogQWRkZWQuCisgICAgICAgICogSmV0
U3RyZWFtMi93YXNtL3RzZi90c2ZfaW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2ZfaW50ZXJuYWxfY29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsX2NvbmZpZ19zdHViLmg6IEFkZGVkLgorICAg
ICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludHR5cGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lvLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0
cmVhbTIvd2FzbS90c2YvdHNmX2lvX3V0aWxzLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVh
bTIvd2FzbS90c2YvdHNmX2lyLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90
c2YvdHNmX2lyLmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ly
X2RpZmZlcmVudC5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9p
cl9kaWZmZXJlbnQuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
aXJfc3BlZWQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbGlt
aXRzLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX25hbWVkX3R5
cGUuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbmF0aXZlLmM6
IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3BhcnNlci5jOiBBZGRl
ZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9wcmltaXRpdmUuYzogQWRkZWQu
CisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmFfdHlwZV9tYW4uYzogQWRkZWQu
CisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmVmbGVjdC5jOiBBZGRlZC4KKyAg
ICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9yZWdpb24uaDogQWRkZWQuCisgICAgICAg
ICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc2VyaWFsX2luX21hbi5jOiBBZGRlZC4KKyAgICAg
ICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfb3V0X21hbi5jOiBBZGRlZC4KKyAg
ICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfcHJvdG9jb2wuaDogQWRkZWQu
CisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc2hhMS5jOiBBZGRlZC4KKyAgICAg
ICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zaGExLmg6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTFfd3JpdGVyLmM6IEFkZGVkLgorICAgICAgICAqIEpl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX3NvcnQuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2Zfc3QuYzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2Zfc3QuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc3Rf
dHlwZXRhYmxlLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3N0
cmVhbV9maWxlX2lucHV0LmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX3N0cmVhbV9maWxlX291dHB1dC5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dh
c20vdHNmL3RzZl90eXBlLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX3R5cGVfaW5fbWFwLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX3R5cGVfb3V0X21hcC5jOiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl90eXBlX3RhYmxlLmM6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX3R5cGVzLmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3V0
aWwuaDogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfdmVyc2lvbi5j
OiBBZGRlZC4KKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfYWJzdHJhY3Qu
YzogQWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2Fic3RyYWN0
Lmg6IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9hdHRyLmM6
IEFkZGVkLgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9yZWFkZXIuYzog
QWRkZWQuCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX3dyaXRlci5jOiBB
ZGRlZC4KKwogMjAxOC0xMC0xOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIEpldFN0cmVhbSAyCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvc2ltcGxlL2Zsb2F0LW1tLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3NpbXBsZS9mbG9hdC1tbS5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi9zaW1wbGUvZmxvYXQtbW0uYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE2MCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNkZWZp
bmUgIG5pbAkJMAorI2RlZmluZQkgZmFsc2UJCTAKKyNkZWZpbmUgIHRydWUJCTEKKyNkZWZpbmUg
IGJ1YmJsZWJhc2UJMS42MWYKKyNkZWZpbmUgIGRuZmJhc2UgCTMuNWYKKyNkZWZpbmUgIHBlcm1i
YXNlIAkxLjc1ZgorI2RlZmluZSAgcXVlZW5zYmFzZSAxLjgzZgorI2RlZmluZSAgdG93ZXJzYmFz
ZSAyLjM5ZgorI2RlZmluZSAgcXVpY2tiYXNlIAkxLjkyZgorI2RlZmluZSAgaW50bW1iYXNlIAkx
LjQ2ZgorI2RlZmluZSAgdHJlZWJhc2UgCTIuNWYKKyNkZWZpbmUgIG1tYmFzZSAJMC4wZgorI2Rl
ZmluZSAgZnBtbWJhc2UgCTIuOTJmCisjZGVmaW5lICBwdXp6bGViYXNlCTAuNWYKKyNkZWZpbmUg
IGZmdGJhc2UgCTAuMGYKKyNkZWZpbmUgIGZwZmZ0YmFzZSAJNC40NGYKKyAgICAvKiBUb3dlcnMg
Ki8KKyNkZWZpbmUgbWF4Y2VsbHMgCSAxOAorCisgICAgLyogSW50bW0sIE1tICovCisjZGVmaW5l
IHJvd3NpemUgCSA0MAorCisgICAgLyogUHV6emxlICovCisjZGVmaW5lIHNpemUJIAkgNTExCisj
ZGVmaW5lIGNsYXNzbWF4IAkgMworI2RlZmluZSB0eXBlbWF4IAkgMTIKKyNkZWZpbmUgZCAJCSAg
ICAgOAorCisgICAgLyogQnViYmxlLCBRdWljayAqLworI2RlZmluZSBzb3J0ZWxlbWVudHMgNTAw
MAorI2RlZmluZSBzcnRlbGVtZW50cyAgNTAwCisKKyAgICAvKiBmZnQgKi8KKyNkZWZpbmUgZmZ0
c2l6ZSAJIDI1NiAKKyNkZWZpbmUgZmZ0c2l6ZTIgCSAxMjkgIAorLyoKK3R5cGUgKi8KKyAgICAv
KiBQZXJtICovCisjZGVmaW5lIHBlcm1yYW5nZSAgICAgMTAKKworICAgLyogdHJlZSAqLworc3Ry
dWN0IG5vZGUgeworCXN0cnVjdCBub2RlICpsZWZ0LCpyaWdodDsKKwlpbnQgdmFsOworfTsKKwor
ICAgIC8qIFRvd2VycyAqLyAvKgorICAgIGRpc2NzaXpyYW5nZSA9IDEuLm1heGNlbGxzOyAqLwor
I2RlZmluZSAgICBzdGFja3JhbmdlCTMKKy8qICAgIGNlbGxjdXJzb3IgPSAwLi5tYXhjZWxsczsg
Ki8KK3N0cnVjdCAgICBlbGVtZW50IHsKKwlpbnQgZGlzY3NpemU7CisJaW50IG5leHQ7Cit9Owor
LyogICAgZW1zZ3R5cGUgPSBwYWNrZWQgYXJyYXlbMS4uMTVdIG9mIGNoYXI7CisqLworICAgIC8q
IEludG1tLCBNbSAqLyAvKgorICAgIGluZGV4ID0gMSAuLiByb3dzaXplOworICAgIGludG1hdHJp
eCA9IGFycmF5IFtpbmRleCxpbmRleF0gb2YgaW50ZWdlcjsKKyAgICByZWFsbWF0cml4ID0gYXJy
YXkgW2luZGV4LGluZGV4XSBvZiByZWFsOworKi8KKyAgICAvKiBQdXp6bGUgKi8gLyoKKyAgICBw
aWVjZWNsYXNzID0gMC4uY2xhc3NtYXg7CisgICAgcGllY2V0eXBlID0gMC4udHlwZW1heDsKKyAg
ICBwb3NpdGlvbiA9IDAuLnNpemU7CisqLworICAgIC8qIEJ1YmJsZSwgUXVpY2sgKi8gLyoKKyAg
ICBsaXN0c2l6ZSA9IDAuLnNvcnRlbGVtZW50czsKKyAgICBzb3J0YXJyYXkgPSBhcnJheSBbbGlz
dHNpemVdIG9mIGludGVnZXI7CisqLworICAgIC8qIEZGVCAqLworc3RydWN0ICAgIGNvbXBsZXgg
eyBmbG9hdCBycCwgaXA7IH0gOworLyoKKyAgICBjYXJyYXkgPSBhcnJheSBbMS4uZmZ0c2l6ZV0g
b2YgY29tcGxleCA7CisgICAgYzJhcnJheSA9IGFycmF5IFsxLi5mZnRzaXplMl0gb2YgY29tcGxl
eCA7CisqLworCitmbG9hdCB2YWx1ZSwgZml4ZWQsIGZsb2F0ZWQ7CisKKyAgICAvKiBnbG9iYWwg
Ki8KK2xvbmcgICAgc2VlZDsgIC8qIGNvbnZlcnRlZCB0byBsb25nIGZvciAxNiBiaXQgV1IqLwor
CisgICAgLyogUGVybSAqLworaW50ICAgIHBlcm1hcnJheVtwZXJtcmFuZ2UrMV07CisvKiBjb252
ZXJ0ZWQgcGN0ciB0byB1bnNpZ25lZCBpbnQgZm9yIDE2IGJpdCBXUiovCit1bnNpZ25lZCBpbnQg
ICAgcGN0cjsKKworICAgIC8qIHRyZWUgKi8KK3N0cnVjdCBub2RlICp0cmVlOworCisgICAgLyog
VG93ZXJzICovCitpbnQJICAgc3RhY2tbc3RhY2tyYW5nZSsxXTsKK3N0cnVjdCBlbGVtZW50ICAg
IGNlbGxzcGFjZVttYXhjZWxscysxXTsKK2ludCAgICBmcmVlbGlzdCwgIG1vdmVzZG9uZTsKKwor
ICAgIC8qIEludG1tLCBNbSAqLworCitpbnQgICBpbWFbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBp
bWJbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBpbXJbcm93c2l6ZSsxXVtyb3dzaXplKzFdOworZmxv
YXQgcm1hW3Jvd3NpemUrMV1bcm93c2l6ZSsxXSwgcm1iW3Jvd3NpemUrMV1bcm93c2l6ZSsxXSwg
cm1yW3Jvd3NpemUrMV1bcm93c2l6ZSsxXTsKKworICAgIC8qIFB1enpsZSAqLworaW50CXBpZWNl
Y291bnRbY2xhc3NtYXgrMV0sCWNsYXNzW3R5cGVtYXgrMV0sIHBpZWNlbWF4W3R5cGVtYXgrMV07
CitpbnQJcHV6emxbc2l6ZSsxXSwgcFt0eXBlbWF4KzFdW3NpemUrMV0sIG4sIGtvdW50OworCisg
ICAgLyogQnViYmxlLCBRdWljayAqLworaW50IHNvcnRsaXN0W3NvcnRlbGVtZW50cysxXSwgYmln
Z2VzdCwgbGl0dGxlc3QsIHRvcDsKKworICAgIC8qIEZGVCAqLworc3RydWN0IGNvbXBsZXggICAg
eltmZnRzaXplKzFdLCB3W2ZmdHNpemUrMV0sIGVbZmZ0c2l6ZTIrMV07CitmbG9hdCAgICB6ciwg
emk7CisKK3ZvaWQgSW5pdHJhbmQgKCkgeworICAgIHNlZWQgPSA3NDc1NUw7ICAgLyogY29uc3Rh
bnQgdG8gbG9uZyBXUiovCit9CisKK2ludCBSYW5kICgpIHsKKyAgICBzZWVkID0gKHNlZWQgKiAx
MzA5TCArIDEzODQ5TCkgJiA2NTUzNUw7ICAvKiBjb25zdGFudHMgdG8gbG9uZyBXUiovCisgICAg
cmV0dXJuKCAoaW50KXNlZWQgKTsgICAgIC8qIHR5cGVjYXN0IGJhY2sgdG8gaW50IFdSKi8KK30K
KworCisgICAgLyogTXVsdGlwbGllcyB0d28gcmVhbCBtYXRyaWNlcy4gKi8KKwordm9pZCBySW5p
dG1hdHJpeCAoIGZsb2F0IG1bcm93c2l6ZSsxXVtyb3dzaXplKzFdICkgeworCWludCB0ZW1wLCBp
LCBqOworCWZvciAoIGkgPSAxOyBpIDw9IHJvd3NpemU7IGkrKyApCisJICAgIGZvciAoIGogPSAx
OyBqIDw9IHJvd3NpemU7IGorKyApIHsKKwkgICAgCXRlbXAgPSBSYW5kKCk7CisJCQltW2ldW2pd
ID0gKGZsb2F0KSh0ZW1wIC0gKHRlbXAvMTIwKSoxMjAgLSA2MCkvMzsKKyAgICAgICAgfQorfQor
Cit2b2lkIHJJbm5lcnByb2R1Y3QoZmxvYXQgKnJlc3VsdCwgZmxvYXQgYVtyb3dzaXplKzFdW3Jv
d3NpemUrMV0sIGZsb2F0IGJbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBpbnQgcm93LCBpbnQgY29s
dW1uKSB7CisJLyogY29tcHV0ZXMgdGhlIGlubmVyIHByb2R1Y3Qgb2YgQVtyb3csKl0gYW5kIEJb
Kixjb2x1bW5dICovCisJaW50IGk7CisJKnJlc3VsdCA9IDAuMGY7CisJZm9yIChpID0gMTsgaTw9
cm93c2l6ZTsgaSsrKSAqcmVzdWx0ID0gKnJlc3VsdCthW3Jvd11baV0qYltpXVtjb2x1bW5dOwor
fQorCit2b2lkIE1tIChpbnQgcnVuKSAgICB7CisgICAgaW50IGksIGo7CisgICAgSW5pdHJhbmQo
KTsKKyAgICBySW5pdG1hdHJpeCAocm1hKTsKKyAgICBySW5pdG1hdHJpeCAocm1iKTsKKyAgICBm
b3IgKCBpID0gMTsgaSA8PSByb3dzaXplOyBpKysgKQorCQlmb3IgKCBqID0gMTsgaiA8PSByb3dz
aXplOyBqKysgKSAKKwkJCXJJbm5lcnByb2R1Y3QoJnJtcltpXVtqXSxybWEscm1iLGksaik7Cisg
ICAgaWYgKHJ1biA8IHJvd3NpemUpCisgICAgICBwcmludGYoIiVmXG4iLCBybXJbcnVuICsgMV1b
cnVuICsgMV0pOworfQorCitpbnQgbWFpbigpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8
IDUwMDA7IGkrKykgTW0oaSk7CisJcmV0dXJuIDA7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzNDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2RlZmluZSBOREVCVUcgMQorCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKy8vIENvbXBpbGUgd2l0aDog
eGNydW4gY2xhbmcrKyAtbyBIYXNoU2V0IEhhc2hTZXQuY3BwIC1PMiAtVyAtZnJhbWV3b3JrIEZv
dW5kYXRpb24gLWxpY3Vjb3JlIC1zdGQ9YysrMTEgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtRE5ERUJV
Rz0xCisvLyBPciBmb3Igd2FzbTogZW0rKyAtbyBIYXNoU2V0LmpzIC1vIEhhc2hTZXQuaHRtbCBI
YXNoU2V0LmNwcCAtTzIgLVcgLXN0ZD1jKysxMSAtRE5ERUJVRz0xIC1nMSAtcyBXQVNNPTEgLXMg
VE9UQUxfTUVNT1JZPTUyNDI4ODAwCisKKyNkZWZpbmUgQUxXQVlTX0lOTElORSBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQorCisjZGVmaW5lIFdURk1vdmUodmFsdWUp
IHN0ZDo6bW92ZSh2YWx1ZSkKKworI2RlZmluZSBBU1NFUlQoZXhwKSBkbyB7IH0gd2hpbGUoMCkK
KyNkZWZpbmUgQVNTRVJUX1VOVVNFRCh2YXIsIGV4cCkgZG8geyAodm9pZCkodmFyKTsgfSB3aGls
ZSgwKQorI2RlZmluZSBSRUxFQVNFX0FTU0VSVChleHApIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIShleHApKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIlczolZDogYXNzZXJ0aW9uIGZhaWxlZDogJXNcbiIsIF9fRklMRV9fLCBf
X0xJTkVfXywgI2V4cCk7IFwKKyAgICAgICAgICAgIGFib3J0KCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQVNTRVJUX0RJU0FCTEVEIDEKKworI2RlZmluZSBEVU1Q
X0hBU0hUQUJMRV9TVEFUUyAwCisjZGVmaW5lIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJM
RSAwCisKKy8vIFRoaXMgdmVyc2lvbiBvZiBwbGFjZW1lbnQgbmV3IG9taXRzIGEgMCBjaGVjay4K
K2VudW0gTm90TnVsbFRhZyB7IE5vdE51bGwgfTsKK2lubGluZSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikKK3sKKyAgICBBU1NFUlQobG9jYXRp
b24pOworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGlu
ZSB1aW50MzJfdCByb3VuZFVwVG9Qb3dlck9mVHdvKHVpbnQzMl90IHYpCit7CisgICAgdi0tOwor
ICAgIHYgfD0gdiA+PiAxOworICAgIHYgfD0gdiA+PiAyOworICAgIHYgfD0gdiA+PiA0OworICAg
IHYgfD0gdiA+PiA4OworICAgIHYgfD0gdiA+PiAxNjsKKyAgICB2Kys7CisgICAgcmV0dXJuIHY7
Cit9CisKKy8qCisgKiBDKysncyBpZGVhIG9mIGEgcmVpbnRlcnByZXRfY2FzdCBsYWNrcyBzdWZm
aWNpZW50IGNvam9uZXMuCisgKi8KK3RlbXBsYXRlPHR5cGVuYW1lIFRvVHlwZSwgdHlwZW5hbWUg
RnJvbVR5cGU+CitpbmxpbmUgVG9UeXBlIGJpdHdpc2VfY2FzdChGcm9tVHlwZSBmcm9tKQorewor
ICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFRvVHlwZT46OnR5cGUgdG8geyB9OworICAg
IHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOworICAgIHJldHVybiB0bzsKK30K
KworZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVl
IH07CitlbnVtIEhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlIHsgSGFzaFRhYmxlRW1wdHlWYWx1ZSB9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihUKiBwKSB7IHJldHVy
biBwOyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNTbWFydFB0ciB7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBib29sIGlzU21hcnRQdHI+CitzdHJ1Y3QgR2V0UHRySGVscGVyQmFzZTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR2V0UHRySGVscGVyQmFzZTxULCBmYWxzZSAvKiBpc1Nt
YXJ0UHRyICovPiB7CisgICAgdHlwZWRlZiBUKiBQdHJUeXBlOworICAgIHN0YXRpYyBUKiBnZXRQ
dHIoVCYgcCkgeyByZXR1cm4gc3RkOjphZGRyZXNzb2YocCk7IH0KK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEdldFB0ckhlbHBlckJhc2U8VCwgdHJ1ZSAvKiBpc1NtYXJ0UHRy
ICovPiB7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpQdHJUeXBlIFB0clR5cGU7CisgICAgc3Rh
dGljIFB0clR5cGUgZ2V0UHRyKGNvbnN0IFQmIHApIHsgcmV0dXJuIHAuZ2V0KCk7IH0KK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEdldFB0ckhlbHBlciA6IEdldFB0ckhlbHBl
ckJhc2U8VCwgSXNTbWFydFB0cjxUPjo6dmFsdWU+IHsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgoraW5saW5lIHR5cGVuYW1lIEdldFB0ckhlbHBlcjxUPjo6UHRyVHlwZSBnZXRQdHIoVCYg
cCkKK3sKKyAgICByZXR1cm4gR2V0UHRySGVscGVyPFQ+OjpnZXRQdHIocCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHR5cGVuYW1lIEdldFB0ckhlbHBlcjxUPjo6UHRyVHlw
ZSBnZXRQdHIoY29uc3QgVCYgcCkKK3sKKyAgICByZXR1cm4gR2V0UHRySGVscGVyPFQ+OjpnZXRQ
dHIocCk7Cit9CisKKy8vIEV4cGxpY2l0IHNwZWNpYWxpemF0aW9uIGZvciBDKysgc3RhbmRhcmQg
bGlicmFyeSB0eXBlcy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERlbGV0ZXI+
IHN0cnVjdCBJc1NtYXJ0UHRyPHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPj4geworICAgIHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBEZWxldGVyPgorc3RydWN0IEdldFB0ckhlbHBlcjxzdGQ6OnVuaXF1ZV9wdHI8
VCwgRGVsZXRlcj4+IHsKKyAgICB0eXBlZGVmIFQqIFB0clR5cGU7CisgICAgc3RhdGljIFQqIGdl
dFB0cihjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4mIHApIHsgcmV0dXJuIHAuZ2V0
KCk7IH0KK307CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4gc3RydWN0IEludFR5cGVzOwor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDE+IHsgdHlwZWRlZiBpbnQ4X3QgU2lnbmVk
VHlwZTsgdHlwZWRlZiB1aW50OF90IFVuc2lnbmVkVHlwZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBJbnRUeXBlczwyPiB7IHR5cGVkZWYgaW50MTZfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVp
bnQxNl90IFVuc2lnbmVkVHlwZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw0
PiB7IHR5cGVkZWYgaW50MzJfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQzMl90IFVuc2lnbmVk
VHlwZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw4PiB7IHR5cGVkZWYgaW50
NjRfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2lnbmVkVHlwZTsgfTsKKworICAg
IC8vIGludGVnZXIgaGFzaCBmdW5jdGlvbgorCisgICAgLy8gVGhvbWFzIFdhbmcncyAzMiBCaXQg
TWl4IEZ1bmN0aW9uOiBodHRwOi8vd3d3LmNyaXMuY29tL35UdHdhbmcvdGVjaC9pbnRoYXNoLmh0
bQorICAgIGlubGluZSB1bnNpZ25lZCBpbnRIYXNoKHVpbnQ4X3Qga2V5OCkKKyAgICB7CisgICAg
ICAgIHVuc2lnbmVkIGtleSA9IGtleTg7CisgICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7Cisg
ICAgICAgIGtleSBePSAoa2V5ID4+IDEwKTsKKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7Cisg
ICAgICAgIGtleSBePSAoa2V5ID4+IDYpOworICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOwor
ICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7CisgICAgICAgIHJldHVybiBrZXk7CisgICAgfQor
CisgICAgLy8gVGhvbWFzIFdhbmcncyAzMiBCaXQgTWl4IEZ1bmN0aW9uOiBodHRwOi8vd3d3LmNy
aXMuY29tL35UdHdhbmcvdGVjaC9pbnRoYXNoLmh0bQorICAgIGlubGluZSB1bnNpZ25lZCBpbnRI
YXNoKHVpbnQxNl90IGtleTE2KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQga2V5ID0ga2V5MTY7
CisgICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7CisgICAgICAgIGtleSBePSAoa2V5ID4+IDEw
KTsKKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7CisgICAgICAgIGtleSBePSAoa2V5ID4+IDYp
OworICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOworICAgICAgICBrZXkgXj0gKGtleSA+PiAx
Nik7CisgICAgICAgIHJldHVybiBrZXk7CisgICAgfQorCisgICAgLy8gVGhvbWFzIFdhbmcncyAz
MiBCaXQgTWl4IEZ1bmN0aW9uOiBodHRwOi8vd3d3LmNyaXMuY29tL35UdHdhbmcvdGVjaC9pbnRo
YXNoLmh0bQorICAgIGlubGluZSB1bnNpZ25lZCBpbnRIYXNoKHVpbnQzMl90IGtleSkgCisgICAg
eworICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTUpOworICAgICAgICBrZXkgXj0gKGtleSA+PiAx
MCk7CisgICAgICAgIGtleSArPSAoa2V5IDw8IDMpOworICAgICAgICBrZXkgXj0gKGtleSA+PiA2
KTsKKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDExKTsKKyAgICAgICAga2V5IF49IChrZXkgPj4g
MTYpOworICAgICAgICByZXR1cm4ga2V5OworICAgIH0KKyAgICAKKyAgICAvLyBUaG9tYXMgV2Fu
ZydzIDY0IGJpdCBNaXggRnVuY3Rpb246IGh0dHA6Ly93d3cuY3Jpcy5jb20vflR0d2FuZy90ZWNo
L2ludGhhc2guaHRtCisgICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQor
ICAgIHsKKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDMyKTsKKyAgICAgICAga2V5IF49IChrZXkg
Pj4gMjIpOworICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTMpOworICAgICAgICBrZXkgXj0gKGtl
eSA+PiA4KTsKKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7CisgICAgICAgIGtleSBePSAoa2V5
ID4+IDE1KTsKKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDI3KTsKKyAgICAgICAga2V5IF49IChr
ZXkgPj4gMzEpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSk7Cisg
ICAgfQorCisgICAgLy8gQ29tcG91bmQgaW50ZWdlciBoYXNoIG1ldGhvZDogaHR0cDovL29wZW5k
YXRhc3RydWN0dXJlcy5vcmcvdmVyc2lvbnMvZWRpdGlvbi0wLjFkL29kcy1qYXZhL25vZGUzMy5o
dG1sI1NFQ1RJT04wMDgzMjAwMDAwMDAwMDAwMDAwMAorICAgIGlubGluZSB1bnNpZ25lZCBwYWly
SW50SGFzaCh1bnNpZ25lZCBrZXkxLCB1bnNpZ25lZCBrZXkyKQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgc2hvcnRSYW5kb20xID0gMjc3OTUxMjI1OyAvLyBBIHJhbmRvbSAzMi1iaXQgdmFsdWUu
CisgICAgICAgIHVuc2lnbmVkIHNob3J0UmFuZG9tMiA9IDk1MTg3OTY2OyAvLyBBIHJhbmRvbSAz
Mi1iaXQgdmFsdWUuCisgICAgICAgIHVpbnQ2NF90IGxvbmdSYW5kb20gPSAxOTI0ODY1ODE2NTk1
MjYyMkxMOyAvLyBBIHJhbmRvbSA2NC1iaXQgdmFsdWUuCisKKyAgICAgICAgdWludDY0X3QgcHJv
ZHVjdCA9IGxvbmdSYW5kb20gKiAoc2hvcnRSYW5kb20xICoga2V5MSArIHNob3J0UmFuZG9tMiAq
IGtleTIpOworICAgICAgICB1bnNpZ25lZCBoaWdoQml0cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwcm9kdWN0ID4+IChzaXplb2YodWludDY0X3QpIC0gc2l6ZW9mKHVuc2lnbmVkKSkpOworICAg
ICAgICByZXR1cm4gaGlnaEJpdHM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEludEhhc2ggeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChUIGtleSkgeyBy
ZXR1cm4gaW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpV
bnNpZ25lZFR5cGU+KGtleSkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKFQgYSwgVCBi
KSB7IHJldHVybiBhID09IGI7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgRmxvYXRIYXNoIHsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbnRU
eXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGUgQml0czsKKyAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goVCBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbnRIYXNoKGJp
dHdpc2VfY2FzdDxCaXRzPihrZXkpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBl
cXVhbChUIGEsIFQgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxCaXRzPihhKSA9PSBiaXR3aXNlX2Nhc3Q8Qml0cz4oYik7CisgICAgICAgIH0KKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwor
ICAgIH07CisKKyAgICAvLyBwb2ludGVyIGlkZW50aXR5IGhhc2ggZnVuY3Rpb24KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgaXNTbWFydFBvaW50ZXI+IAorICAgIHN0cnVjdCBQdHJI
YXNoQmFzZTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0cnVjdCBQdHJIYXNo
QmFzZTxULCBmYWxzZSAvKiBpc1NtYXJ0UHRyICovPiB7CisgICAgICAgIHR5cGVkZWYgVCBQdHJU
eXBlOyAKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChQdHJUeXBlIGtleSkgeyByZXR1
cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihr
ZXkpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQdHJUeXBlIGEsIFB0clR5cGUgYikg
eyByZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgc3RydWN0IFB0ckhhc2hCYXNlPFQsIHRydWUgLyogaXNTbWFydFB0ciAqLz4g
eworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEdldFB0ckhlbHBlcjxUPjo6UHRyVHlwZSBQdHJU
eXBlOyAKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChQdHJUeXBlIGtleSkgeyByZXR1
cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihr
ZXkpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQdHJUeXBlIGEsIFB0clR5cGUgYikg
eyByZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIGhhc2goZ2V0UHRyKGtleSkpOyB9CisgICAgICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpIHsgcmV0dXJuIGdldFB0cihh
KSA9PSBnZXRQdHIoYik7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoUHRyVHlwZSBhLCBj
b25zdCBUJiBiKSB7IHJldHVybiBhID09IGdldFB0cihiKTsgfQorICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBUJiBhLCBQdHJUeXBlIGIpIHsgcmV0dXJuIGdldFB0cihhKSA9PSBiOyB9
CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQdHJIYXNoIDogUHRy
SGFzaEJhc2U8VCwgSXNTbWFydFB0cjxUPjo6dmFsdWU+IHsKKyAgICB9OworCisgICAgLy8gZGVm
YXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBlYWNoIHR5cGUKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IHN0cnVjdCBQYWlySGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IHN0ZDo6cGFpcjxULCBVPiYgcCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHBh
aXJJbnRIYXNoKERlZmF1bHRIYXNoPFQ+OjpIYXNoOjpoYXNoKHAuZmlyc3QpLCBEZWZhdWx0SGFz
aDxVPjo6SGFzaDo6aGFzaChwLnNlY29uZCkpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjxULCBVPiYgYSwgY29uc3Qgc3RkOjpwYWlyPFQsIFU+
JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8VD46Okhhc2g6
OmVxdWFsKGEuZmlyc3QsIGIuZmlyc3QpICYmIERlZmF1bHRIYXNoPFU+OjpIYXNoOjplcXVhbChh
LnNlY29uZCwgYi5zZWNvbmQpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gRGVmYXVsdEhhc2g8VD46Okhhc2g6OnNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkICYmIERlZmF1bHRIYXNoPFU+OjpIYXNoOjpzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IEludFBhaXJIYXNoIHsKKyAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBwKSB7IHJldHVybiBwYWlySW50SGFz
aChwLmZpcnN0LCBwLnNlY29uZCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
c3RkOjpwYWlyPFQsIFU+JiBhLCBjb25zdCBzdGQ6OnBhaXI8VCwgVT4mIGIpIHsgcmV0dXJuIFBh
aXJIYXNoPFQsIFQ+OjplcXVhbChhLCBiKTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IFBhaXJIYXNoPFQsIFU+OjpzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
VHlwZXM+CisgICAgc3RydWN0IFR1cGxlSGFzaCB7CisgICAgICAgIHRlbXBsYXRlPHNpemVfdCBJ
ID0gMD4KKyAgICAgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPCBzaXplb2Yu
Li4oVHlwZXMpIC0gMSwgdW5zaWduZWQ+Ojp0eXBlIGhhc2goY29uc3Qgc3RkOjp0dXBsZTxUeXBl
cy4uLj4mIHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5
cGUgPSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxU
eXBlcy4uLj4+Ojp0eXBlOworICAgICAgICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKERlZmF1bHRI
YXNoPEl0aFR1cGxlRWxlbWVudFR5cGU+OjpIYXNoOjpoYXNoKHN0ZDo6Z2V0PEk+KHQpKSwgaGFz
aDxJICsgMT4odCkpOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8c2l6ZV90IEkgPSAw
PgorICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA9PSBzaXplb2YuLi4o
VHlwZXMpIC0gMSwgdW5zaWduZWQ+Ojp0eXBlIGhhc2goY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4u
Lj4mIHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5cGUg
PSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBl
cy4uLj4+Ojp0eXBlOworICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRIYXNoPEl0aFR1cGxlRWxl
bWVudFR5cGU+OjpIYXNoOjpoYXNoKHN0ZDo6Z2V0PEk+KHQpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHRlbXBsYXRlPHNpemVfdCBJID0gMD4KKyAgICAgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPEkgPCBzaXplb2YuLi4oVHlwZXMpIC0gMSwgYm9vbD46OnR5cGUgZXF1YWwoY29u
c3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4mIGEsIGNvbnN0IHN0ZDo6dHVwbGU8VHlwZXMuLi4+JiBi
KQorICAgICAgICB7CisgICAgICAgICAgICB1c2luZyBJdGhUdXBsZUVsZW1lbnRUeXBlID0gdHlw
ZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PEksIHR5cGVuYW1lIHN0ZDo6dHVwbGU8VHlwZXMuLi4+
Pjo6dHlwZTsKKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxJdGhUdXBsZUVsZW1lbnRU
eXBlPjo6SGFzaDo6ZXF1YWwoc3RkOjpnZXQ8ST4oYSksIHN0ZDo6Z2V0PEk+KGIpKSAmJiBlcXVh
bDxJICsgMT4oYSwgYik7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxzaXplX3QgSSA9
IDA+CisgICAgICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJID09IHNpemVvZi4u
LihUeXBlcykgLSAxLCBib29sPjo6dHlwZSBlcXVhbChjb25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4u
PiYgYSwgY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4mIGIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1l
bnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBlcy4uLj4+Ojp0eXBlOworICAgICAgICAgICAg
cmV0dXJuIERlZmF1bHRIYXNoPEl0aFR1cGxlRWxlbWVudFR5cGU+OjpIYXNoOjplcXVhbChzdGQ6
OmdldDxJPihhKSwgc3RkOjpnZXQ8ST4oYikpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ug
c2hvdWxkIHVzZSBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1bHRIYXNoPFR5
cGVzPjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgJiYuLi4gd2hlbmV2ZXIK
KyAgICAgICAgLy8gd2Ugc3dpdGNoIHRvIEMrKzE3LiBXZSBjYW4ndCBkbyBhbnl0aGluZyBiZXR0
ZXIgaGVyZSByaWdodCBub3cgYmVjYXVzZSBHQ0MgY2FuJ3QgZG8gQysrLgorICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBCb29sVHlwZT4KKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGFs
bFRydWUoQm9vbFR5cGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CisgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEJvb2xUeXBlLCB0eXBlbmFtZS4uLiBCb29sVHlwZXM+CisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBhbGxUcnVlKEJvb2xUeXBlIHZhbHVlLCBCb29sVHlwZXMuLi4gdmFs
dWVzKSB7IHJldHVybiB2YWx1ZSAmJiBhbGxUcnVlKHZhbHVlcy4uLik7IH0KKyAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBhbGxUcnVlKERl
ZmF1bHRIYXNoPFR5cGVzPjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQuLi4p
OworICAgIH07CisKKyAgICAvLyBtYWtlIEludEhhc2ggdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlv
biBmb3IgbWFueSBpbnRlZ2VyIHR5cGVzCisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxib29sPiB7IHR5cGVkZWYgSW50SGFzaDx1aW50OF90PiBIYXNoOyB9OworICAgIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHNob3J0PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25l
ZD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBz
aG9ydD4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4gSGFz
aDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZD4geyB0eXBl
ZGVmIEludEhhc2g8dW5zaWduZWQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8bG9uZz4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZz4gSGFzaDsgfTsK
KyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBsb25nPiB7IHR5cGVk
ZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0
IERlZmF1bHRIYXNoPGxvbmcgbG9uZz4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZyBs
b25nPiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHVuc2lnbmVk
IGxvbmcgbG9uZz4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiBIYXNoOyB9
OworCisjaWYgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDx3Y2hhcl90PiB7IHR5cGVkZWYgSW50SGFzaDx3Y2hhcl90PiBI
YXNoOyB9OworI2VuZGlmCisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxmbG9h
dD4geyB0eXBlZGVmIEZsb2F0SGFzaDxmbG9hdD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxkb3VibGU+IHsgdHlwZWRlZiBGbG9hdEhhc2g8ZG91YmxlPiBIYXNo
OyB9OworCisgICAgLy8gbWFrZSBQdHJIYXNoIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9y
IHBvaW50ZXIgdHlwZXMgdGhhdCBkb24ndCBzcGVjaWFsaXplCisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UCo+IHsgdHlwZWRlZiBQdHJIYXNoPFAqPiBIYXNo
OyB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUCwgdHlwZW5hbWUgRGVsZXRlcj4gc3RydWN0
IERlZmF1bHRIYXNoPHN0ZDo6dW5pcXVlX3B0cjxQLCBEZWxldGVyPj4geyB0eXBlZGVmIFB0ckhh
c2g8c3RkOjp1bmlxdWVfcHRyPFAsIERlbGV0ZXI+PiBIYXNoOyB9OworCisgICAgLy8gbWFrZSBJ
bnRQYWlySGFzaCB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBwYWlycyBvZiAoYXQgbW9z
dCkgMzItYml0IGludGVnZXJzLgorCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
c3RkOjpwYWlyPHNob3J0LCBzaG9ydD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgc2hv
cnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWly
PHNob3J0LCB1bnNpZ25lZCBzaG9ydD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgdW5z
aWduZWQgc2hvcnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
c3RkOjpwYWlyPHNob3J0LCBpbnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8c2hvcnQsIGludD4g
SGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8c2hv
cnQsIHVuc2lnbmVkPj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHNob3J0LCB1bnNpZ25lZD4gSGFz
aDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWdu
ZWQgc2hvcnQsIHNob3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHVuc2lnbmVkIHNob3J0LCBz
aG9ydD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBh
aXI8dW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNob3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNo
PHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBzaG9ydD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIGludD4+IHsgdHlw
ZWRlZiBJbnRQYWlySGFzaDx1bnNpZ25lZCBzaG9ydCwgaW50PiBIYXNoOyB9OworICAgIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgdW5zaWdu
ZWQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkPiBIYXNo
OyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxpbnQsIHNo
b3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPGludCwgc2hvcnQ+IEhhc2g7IH07CisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPGludCwgdW5zaWduZWQgc2hvcnQ+
PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8aW50LCB1bnNpZ25lZCBzaG9ydD4gSGFzaDsgfTsKKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8aW50LCBpbnQ+PiB7IHR5
cGVkZWYgSW50UGFpckhhc2g8aW50LCBpbnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPGludCwgdW5zaWduZWQ+PiB7IHR5cGVkZWYgSW50UGFp
ckhhc2g8dW5zaWduZWQsIHVuc2lnbmVkPiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0
IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgc2hvcnQ+PiB7IHR5cGVkZWYgSW50UGFp
ckhhc2g8dW5zaWduZWQsIHNob3J0PiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQgc2hvcnQ+PiB7IHR5cGVkZWYg
SW50UGFpckhhc2g8dW5zaWduZWQsIHVuc2lnbmVkIHNob3J0PiBIYXNoOyB9OworICAgIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgaW50Pj4geyB0eXBl
ZGVmIEludFBhaXJIYXNoPHVuc2lnbmVkLCBpbnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+IHsgdHlwZWRl
ZiBJbnRQYWlySGFzaDx1bnNpZ25lZCwgdW5zaWduZWQ+IEhhc2g7IH07CisKKyAgICAvLyBtYWtl
IFBhaXJIYXNoIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIHBhaXJzIG9mIGFyYml0cmFy
eSB2YWx1ZXMuCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8c3RkOjpwYWlyPFQsIFU+PiB7IHR5cGVkZWYgUGFpckhhc2g8VCwgVT4gSGFz
aDsgfTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0IERlZmF1bHRIYXNo
PHN0ZDo6dHVwbGU8VHlwZXMuLi4+PiB7IHR5cGVkZWYgVHVwbGVIYXNoPFR5cGVzLi4uPiBIYXNo
OyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKKwordGVtcGxh
dGU8Ym9vbCBpc0ludGVnZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8
ZmFsc2UsIFQ+IHsKKyAgICAvLyBUaGUgZW1wdHlWYWx1ZUlzWmVybyBmbGFnIGlzIHVzZWQgdG8g
b3B0aW1pemUgYWxsb2NhdGlvbiBvZiBlbXB0eSBoYXNoIHRhYmxlcyB3aXRoIHplcm9lZCBtZW1v
cnkuCisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAg
IAorICAgIC8vIFRoZSBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiBmbGFnIGFsbG93cyB0aGUgaGFz
aCB0YWJsZSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGNvZGUgdG8gY2hlY2sKKyAgICAvLyBm
b3IgdGhlIGVtcHR5IHZhbHVlIHdoZW4gaXQgY2FuIGJlIGRvbmUgd2l0aCB0aGUgZXF1YWxpdHkg
b3BlcmF0b3IsIGJ1dCBhbGxvd3MgY3VzdG9tIGZ1bmN0aW9ucworICAgIC8vIGZvciBjYXNlcyBs
aWtlIFN0cmluZyB0aGF0IG5lZWQgdGhlbS4KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0Vt
cHR5VmFsdWVGdW5jdGlvbiA9IGZhbHNlOworCisgICAgLy8gVGhlIHN0YXJ0aW5nIHRhYmxlIHNp
emUuIENhbiBiZSBvdmVycmlkZGVuIHdoZW4gd2Uga25vdyBiZWZvcmVoYW5kIHRoYXQKKyAgICAv
LyBhIGhhc2ggdGFibGUgd2lsbCBoYXZlIGF0IGxlYXN0IE4gZW50cmllcy4KKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWluaW11bVRhYmxlU2l6ZSA9IDg7Cit9OworCisvLyBEZWZhdWx0IGlu
dGVnZXIgdHJhaXRzIGRpc2FsbG93IGJvdGggMCBhbmQgLTEgYXMga2V5cyAobWF4IHZhbHVlIGlu
c3RlYWQgb2YgLTEgZm9yIHVuc2lnbmVkKS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBH
ZW5lcmljSGFzaFRyYWl0c0Jhc2U8dHJ1ZSwgVD4gOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8ZmFs
c2UsIFQ+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsK
KyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYgc2xvdCkgeyBzbG90ID0g
c3RhdGljX2Nhc3Q8VD4oLTEpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoVCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gc3RhdGljX2Nhc3Q8VD4oLTEpOyB9Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRy
YWl0c0Jhc2U8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+IHsKKyAgICB0eXBlZGVmIFQg
VHJhaXRUeXBlOworICAgIHR5cGVkZWYgVCBFbXB0eVZhbHVlVHlwZTsKKworICAgIHN0YXRpYyBU
IGVtcHR5VmFsdWUoKSB7IHJldHVybiBUKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFY+IAorICAgIHN0YXRpYyB2b2lkIGFzc2lnblRvRW1wdHkoVSYgZW1wdHlWYWx1
ZSwgViYmIHZhbHVlKQorICAgIHsgCisgICAgICAgIGVtcHR5VmFsdWUgPSBzdGQ6OmZvcndhcmQ8
Vj4odmFsdWUpOworICAgIH0KKworICAgIC8vIFR5cGUgZm9yIHJldHVybiB2YWx1ZSBvZiBmdW5j
dGlvbnMgdGhhdCBkbyBub3QgdHJhbnNmZXIgb3duZXJzaGlwLCBzdWNoIGFzIGdldC4KKyAgICB0
eXBlZGVmIFQgUGVla1R5cGU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIFUmJiBw
ZWVrKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQorCisgICAg
dHlwZWRlZiBUIFRha2VUeXBlOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBUYWtl
VHlwZSB0YWtlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHMgOiBHZW5lcmljSGFz
aFRyYWl0czxUPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBGbG9hdEhhc2hU
cmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7CisgICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCk7IH0KKyAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYgc2xvdCkgeyBzbG90ID0gLXN0ZDo6bnVt
ZXJpY19saW1pdHM8VD46OmluZmluaXR5KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
aW5maW5pdHkoKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxmbG9hdD4g
OiBGbG9hdEhhc2hUcmFpdHM8ZmxvYXQ+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8ZG91YmxlPiA6IEZsb2F0SGFzaFRyYWl0czxkb3VibGU+IHsgfTsKKworLy8gRGVmYXVsdCB1
bnNpZ25lZCB0cmFpdHMgZGlzYWxsb3cgYm90aCAwIGFuZCBtYXggYXMga2V5cyAtLSB1c2UgdGhl
c2UgdHJhaXRzIHRvIGFsbG93IHplcm8gYW5kIGRpc2FsbG93IG1heCAtIDEuCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgVW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHMgOiBHZW5lcmlj
SGFzaFRyYWl0czxUPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IGZhbHNlOworICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjptYXgoKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShUJiBzbG90KSB7IHNsb3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAtIDE7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAtIDE7IH0KK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBTaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHMgOiBHZW5lcmljSGFz
aFRyYWl0czxUPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZh
bHNlOworICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPFQ+OjptaW4oKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShU
JiBzbG90KSB7IHNsb3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQorICAgIHN0
YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8VD46Om1heCgpOyB9Cit9OworCisvLyBDYW4gYmUgdXNlZCB3aXRoIHN0
cm9uZyBlbnVtcywgYWxsb3dzIHplcm8gYXMga2V5LgordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IFN0cm9uZ0VudW1IYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4geworICAgIHVz
aW5nIFVuZGVybHlpbmdUeXBlID0gdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5
cGU7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAg
IHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUPihzdGQ6Om51bWVy
aWNfbGltaXRzPFVuZGVybHlpbmdUeXBlPjo6bWF4KCkpOyB9CisgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3QpIHsgc2xvdCA9IHN0YXRpY19jYXN0PFQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8VW5kZXJseWluZ1R5cGU+OjptYXgoKSAtIDEpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gc3RhdGljX2Nh
c3Q8VD4oc3RkOjpudW1lcmljX2xpbWl0czxVbmRlcmx5aW5nVHlwZT46Om1heCgpIC0gMSk7IH0K
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJhaXRzPFAqPiA6IEdlbmVy
aWNIYXNoVHJhaXRzPFAqPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVy
byA9IHRydWU7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFAqJiBzbG90
KSB7IHNsb3QgPSByZWludGVycHJldF9jYXN0PFAqPigtMSk7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c0RlbGV0ZWRWYWx1ZShQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gcmVpbnRlcnByZXRfY2Fz
dDxQKj4oLTEpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQ2xh
c3NIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4geworICAgIHN0YXRpYyBjb25zdCBi
b29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERl
bGV0ZWRWYWx1ZShUJiBzbG90KSB7IG5ldyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2Yoc2xvdCkp
IFQoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVyPiBzdHJ1
Y3QgSGFzaFRyYWl0czxzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPj4geworICAgIHR5cGVkZWYgc3Rk
OjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVt
cHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoc3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+JiBzbG90KSB7IG5ldyAo
Tm90TnVsbCwgc3RkOjphZGRyZXNzb2Yoc2xvdCkpIHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVy
PiB7IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKSB9OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+JiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUuZ2V0KCkgPT0gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9CisKKyAgICB0eXBl
ZGVmIFQqIFBlZWtUeXBlOworICAgIHN0YXRpYyBUKiBwZWVrKGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxULCBEZWxldGVyPiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CisgICAgc3RhdGlj
IFQqIHBlZWsoc3RkOjpudWxscHRyX3QpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHN0YXRp
YyB2b2lkIGN1c3RvbURlbGV0ZUJ1Y2tldChzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4mIHZh
bHVlKQorICAgIHsKKyAgICAgICAgLy8gVGhlIGN1c3RvbSBkZWxldGUgZnVuY3Rpb24gZXhpc3Rz
IHRvIGF2b2lkIGEgZGVhZCBzdG9yZSBiZWZvcmUgdGhlIHZhbHVlIGlzIGRlc3RydWN0ZWQuCisg
ICAgICAgIC8vIFRoZSBub3JtYWwgZGVzdHJ1Y3Rpb24gc2VxdWVuY2Ugb2YgYSBidWNrZXQgd291
bGQgYmU6CisgICAgICAgIC8vIDEpIENhbGwgdGhlIGRlc3RydWN0b3Igb2YgdW5pcXVlX3B0ci4K
KyAgICAgICAgLy8gMikgdW5pcXVlX3B0ciBzdG9yZSBhIHplcm8gZm9yIGl0cyBpbnRlcm5hbCBw
b2ludGVyLgorICAgICAgICAvLyAzKSB1bmlxdWVfcHRyIGRlc3Ryb3lzIGl0cyB2YWx1ZS4KKyAg
ICAgICAgLy8gNCkgQ2FsbCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoKSB0byBzZXQgdGhlIGJ1Y2tl
dCBhcyBkZXN0cnVjdGVkLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgcHJvYmxlbSBpcyB0
aGUgY2FsbCBpbiAoMykgcHJldmVudHMgdGhlIGNvbXBpbGUgZnJvbSBlbGltaW5hdGluZyB0aGUg
ZGVhZCBzdG9yZSBpbiAoMikKKyAgICAgICAgLy8gYmVjYXNlIGEgc2lkZSBlZmZlY3Qgb2YgZnJl
ZSgpIGNvdWxkIGJlIG9ic2VydmluZyB0aGUgdmFsdWUuCisgICAgICAgIC8vCisgICAgICAgIC8v
IFRoaXMgdmVyc2lvbiBvZiBkZWxldGVCdWNrZXQoKSBlbnN1cmVzIHRoZSBkZWFkIDIgc3RvcmVz
IGNoYW5naW5nICJ2YWx1ZSIKKyAgICAgICAgLy8gYXJlIG9uIHRoZSBzYW1lIHNpZGUgb2YgdGhl
IGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIEFTU0VSVCghaXNEZWxldGVkVmFsdWUodmFsdWUpKTsK
KyAgICAgICAgVCogcG9pbnRlciA9IHZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgY29uc3RydWN0
RGVsZXRlZFZhbHVlKHZhbHVlKTsKKworICAgICAgICAvLyBUaGUgbnVsbCBjYXNlIGhhcHBlbnMg
aWYgYSBjYWxsZXIgdXNlcyBzdGQ6Om1vdmUoKSB0byByZW1vdmUgdGhlIHBvaW50ZXIgYmVmb3Jl
IGNhbGxpbmcgcmVtb3ZlKCkKKyAgICAgICAgLy8gd2l0aCBhbiBpdGVyYXRvci4gVGhpcyBpcyB2
ZXJ5IHVuY29tbW9uLgorICAgICAgICBpZiAoTElLRUxZKHBvaW50ZXIpKQorICAgICAgICAgICAg
RGVsZXRlcigpKHBvaW50ZXIpOworICAgIH0KK307CisKKy8vIFRoaXMgc3RydWN0IHRlbXBsYXRl
IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUgaXNIYXNoVHJhaXRzRW1wdHlWYWx1
ZSBmdW5jdGlvbiwKKy8vIHdoaWNoIHNlbGVjdHMgZWl0aGVyIHRoZSBlbXB0eVZhbHVlIGZ1bmN0
aW9uIG9yIHRoZSBpc0VtcHR5VmFsdWUgZnVuY3Rpb24gdG8gY2hlY2sgZm9yIGVtcHR5IHZhbHVl
cy4KK3RlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgYm9vbCBoYXNFbXB0eVZhbHVlRnVuY3Rpb24+
IHN0cnVjdCBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNrZXI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
cmFpdHM+IHN0cnVjdCBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNrZXI8VHJhaXRzLCB0cnVlPiB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0
IFQmIHZhbHVlKSB7IHJldHVybiBUcmFpdHM6OmlzRW1wdHlWYWx1ZSh2YWx1ZSk7IH0KK307Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNr
ZXI8VHJhaXRzLCBmYWxzZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBib29s
IGlzRW1wdHlWYWx1ZShjb25zdCBUJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gVHJhaXRzOjpl
bXB0eVZhbHVlKCk7IH0KK307Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFQ+
IGlubGluZSBib29sIGlzSGFzaFRyYWl0c0VtcHR5VmFsdWUoY29uc3QgVCYgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIEhhc2hUcmFpdHNFbXB0eVZhbHVlQ2hlY2tlcjxUcmFpdHMsIFRyYWl0czo6aGFz
SXNFbXB0eVZhbHVlRnVuY3Rpb24+Ojppc0VtcHR5VmFsdWUodmFsdWUpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzaFRyYWl0SGFzQ3VzdG9t
RGVsZXRlIHsKKyAgICBzdGF0aWMgVCYgYnVja2V0QXJnOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFg+IHN0YXRpYyBzdGQ6OnRydWVfdHlwZSBUZXN0SGFzQ3VzdG9tRGVsZXRlKFgqLCBkZWNsdHlw
ZShYOjpjdXN0b21EZWxldGVCdWNrZXQoYnVja2V0QXJnKSkqID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIHN0ZDo6ZmFsc2VfdHlwZSBUZXN0SGFzQ3VzdG9tRGVsZXRlKC4uLik7CisgICAgdHlwZWRl
ZiBkZWNsdHlwZShUZXN0SGFzQ3VzdG9tRGVsZXRlKHN0YXRpY19jYXN0PFRyYWl0cyo+KG51bGxw
dHIpKSkgUmVzdWx0VHlwZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IFJlc3VsdFR5
cGU6OnZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SGFzaFRyYWl0SGFzQ3VzdG9tRGVsZXRlPFRyYWl0cywg
VD46OnZhbHVlPjo6dHlwZQoraGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldChUJiB2YWx1ZSkKK3sKKyAg
ICBUcmFpdHM6OmN1c3RvbURlbGV0ZUJ1Y2tldCh2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFIYXNoVHJh
aXRIYXNDdXN0b21EZWxldGU8VHJhaXRzLCBUPjo6dmFsdWU+Ojp0eXBlCitoYXNoVHJhaXRzRGVs
ZXRlQnVja2V0KFQmIHZhbHVlKQoreworICAgIHZhbHVlLn5UKCk7CisgICAgVHJhaXRzOjpjb25z
dHJ1Y3REZWxldGVkVmFsdWUodmFsdWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRy
YWl0c0FyZywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzQXJnPgorc3RydWN0IFBhaXJIYXNoVHJhaXRz
IDogR2VuZXJpY0hhc2hUcmFpdHM8c3RkOjpwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpU
cmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPj4geworICAgIHR5
cGVkZWYgRmlyc3RUcmFpdHNBcmcgRmlyc3RUcmFpdHM7CisgICAgdHlwZWRlZiBTZWNvbmRUcmFp
dHNBcmcgU2Vjb25kVHJhaXRzOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPHR5cGVuYW1lIEZpcnN0
VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6VHJhaXRUeXBlPiBUcmFp
dFR5cGU7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dHlwZW5hbWUgRmlyc3RUcmFpdHM6OkVtcHR5
VmFsdWVUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OkVtcHR5VmFsdWVUeXBlPiBFbXB0eVZh
bHVlVHlwZTsKKworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBGaXJz
dFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWVJc1pl
cm87CisgICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6
Om1ha2VfcGFpcihGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5
VmFsdWUoKSk7IH0KKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXpl
ID0gRmlyc3RUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7CisKKyAgICBzdGF0aWMgdm9pZCBjb25z
dHJ1Y3REZWxldGVkVmFsdWUoVHJhaXRUeXBlJiBzbG90KSB7IEZpcnN0VHJhaXRzOjpjb25zdHJ1
Y3REZWxldGVkVmFsdWUoc2xvdC5maXJzdCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShjb25zdCBUcmFpdFR5cGUmIHZhbHVlKSB7IHJldHVybiBGaXJzdFRyYWl0czo6aXNEZWxl
dGVkVmFsdWUodmFsdWUuZmlyc3QpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwg
dHlwZW5hbWUgU2Vjb25kPgorc3RydWN0IEhhc2hUcmFpdHM8c3RkOjpwYWlyPEZpcnN0LCBTZWNv
bmQ+PiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEZpcnN0PiwgSGFzaFRyYWl0
czxTZWNvbmQ+PiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXQsIHR5cGVuYW1l
Li4uIFRyYWl0cz4KK3N0cnVjdCBUdXBsZUhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxz
dGQ6OnR1cGxlPHR5cGVuYW1lIEZpcnN0VHJhaXQ6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVHJhaXRz
OjpUcmFpdFR5cGUuLi4+PiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIEZpcnN0
VHJhaXQ6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5cGUuLi4+IFRyYWl0VHlw
ZTsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgRmlyc3RUcmFpdDo6RW1wdHlWYWx1
ZVR5cGUsIHR5cGVuYW1lIFRyYWl0czo6RW1wdHlWYWx1ZVR5cGUuLi4+IEVtcHR5VmFsdWVUeXBl
OworCisgICAgLy8gV2Ugc2hvdWxkIHVzZSBlbXB0eVZhbHVlSXNaZXJvID0gVHJhaXRzOjplbXB0
eVZhbHVlSXNaZXJvICYmLi4uIHdoZW5ldmVyIHdlIHN3aXRjaCB0byBDKysxNy4gV2UgY2FuJ3Qg
ZG8gYW55dGhpbmcKKyAgICAvLyBiZXR0ZXIgaGVyZSByaWdodCBub3cgYmVjYXVzZSBHQ0MgY2Fu
J3QgZG8gQysrLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlPgorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBhbGxUcnVlKEJvb2xUeXBlIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlLCB0eXBlbmFtZS4uLiBCb29sVHlwZXM+Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGFsbFRydWUoQm9vbFR5cGUgdmFsdWUsIEJvb2xUeXBl
cy4uLiB2YWx1ZXMpIHsgcmV0dXJuIHZhbHVlICYmIGFsbFRydWUodmFsdWVzLi4uKTsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBhbGxUcnVlKEZpcnN0VHJhaXQ6
OmVtcHR5VmFsdWVJc1plcm8sIFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVyby4uLik7CisgICAgc3Rh
dGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUo
Rmlyc3RUcmFpdDo6ZW1wdHlWYWx1ZSgpLCBUcmFpdHM6OmVtcHR5VmFsdWUoKS4uLik7IH0KKwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0gRmlyc3RUcmFpdDo6
bWluaW11bVRhYmxlU2l6ZTsKKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShUcmFpdFR5cGUmIHNsb3QpIHsgRmlyc3RUcmFpdDo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKHN0
ZDo6Z2V0PDA+KHNsb3QpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IFRyYWl0VHlwZSYgdmFsdWUpIHsgcmV0dXJuIEZpcnN0VHJhaXQ6OmlzRGVsZXRlZFZhbHVlKHN0
ZDo6Z2V0PDA+KHZhbHVlKSk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFRyYWl0cz4K
K3N0cnVjdCBIYXNoVHJhaXRzPHN0ZDo6dHVwbGU8VHJhaXRzLi4uPj4gOiBwdWJsaWMgVHVwbGVI
YXNoVHJhaXRzPEhhc2hUcmFpdHM8VHJhaXRzPi4uLj4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlUeXBlQXJnLCB0eXBlbmFtZSBWYWx1ZVR5cGVBcmc+CitzdHJ1Y3QgS2V5VmFsdWVQYWly
IHsKKyAgICB0eXBlZGVmIEtleVR5cGVBcmcgS2V5VHlwZTsKKworICAgIEtleVZhbHVlUGFpcigp
CisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Cisg
ICAgS2V5VmFsdWVQYWlyKEsmJiBrZXksIFYmJiB2YWx1ZSkKKyAgICAgICAgOiBrZXkoc3RkOjpm
b3J3YXJkPEs+KGtleSkpCisgICAgICAgICwgdmFsdWUoc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSkK
KyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyS2V5VHlwZSwgdHlw
ZW5hbWUgT3RoZXJWYWx1ZVR5cGU+CisgICAgS2V5VmFsdWVQYWlyKEtleVZhbHVlUGFpcjxPdGhl
cktleVR5cGUsIE90aGVyVmFsdWVUeXBlPiYmIG90aGVyKQorICAgICAgICA6IGtleShzdGQ6OmZv
cndhcmQ8T3RoZXJLZXlUeXBlPihvdGhlci5rZXkpKQorICAgICAgICAsIHZhbHVlKHN0ZDo6Zm9y
d2FyZDxPdGhlclZhbHVlVHlwZT4ob3RoZXIudmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICBL
ZXlUeXBlQXJnIGtleTsKKyAgICBWYWx1ZVR5cGVBcmcgdmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIFZhbHVlVHJhaXRzQXJnPgorc3RydWN0IEtl
eVZhbHVlUGFpckhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxLZXlWYWx1ZVBhaXI8dHlw
ZW5hbWUgS2V5VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzQXJnOjpU
cmFpdFR5cGU+PiB7CisgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOworICAgIHR5
cGVkZWYgVmFsdWVUcmFpdHNBcmcgVmFsdWVUcmFpdHM7CisgICAgdHlwZWRlZiBLZXlWYWx1ZVBh
aXI8dHlwZW5hbWUgS2V5VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpU
cmFpdFR5cGU+IFRyYWl0VHlwZTsKKyAgICB0eXBlZGVmIEtleVZhbHVlUGFpcjx0eXBlbmFtZSBL
ZXlUcmFpdHM6OkVtcHR5VmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6RW1wdHlWYWx1
ZVR5cGU+IEVtcHR5VmFsdWVUeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHNB
cmc6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gS2V5VHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvICYmIFZhbHVlVHJhaXRzOjpl
bXB0eVZhbHVlSXNaZXJvOworICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkg
eyByZXR1cm4gS2V5VmFsdWVQYWlyPHR5cGVuYW1lIEtleVRyYWl0czo6RW1wdHlWYWx1ZVR5cGUs
IHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpFbXB0eVZhbHVlVHlwZT4oS2V5VHJhaXRzOjplbXB0eVZh
bHVlKCksIFZhbHVlVHJhaXRzOjplbXB0eVZhbHVlKCkpOyB9CisKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbWluaW11bVRhYmxlU2l6ZSA9IEtleVRyYWl0czo6bWluaW11bVRhYmxlU2l6ZTsK
KworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUcmFpdFR5cGUmIHNsb3Qp
IHsgS2V5VHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5rZXkpOyB9CisgICAgc3Rh
dGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4g
S2V5VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5rZXkpOyB9CisKKyAgICBzdGF0aWMgdm9p
ZCBjdXN0b21EZWxldGVCdWNrZXQoVHJhaXRUeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEtleVZhbHVlUGFpcjxp
bnQsIGludD4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICJUaGUgd3JhcHBlciBpdHNlbGYgaGFzIHRv
IGJlIHRyaXZpYWxseSBkZXN0cnVjdGlibGUgZm9yIGN1c3RvbURlbGV0ZUJ1Y2tldCgpIHRvIG1h
a2Ugc2Vuc2UsIHNpbmNlIHdlIGRvIG5vdCBkZXN0cnVjdCB0aGUgd3JhcHBlciBpdHNlbGYuIik7
CisKKyAgICAgICAgaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldDxLZXlUcmFpdHM+KHZhbHVlLmtleSk7
CisgICAgICAgIHZhbHVlLnZhbHVlLn5WYWx1ZVR5cGUoKTsKKyAgICB9Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgorc3RydWN0IEhhc2hUcmFpdHM8S2V5VmFs
dWVQYWlyPEtleSwgVmFsdWU+PiA6IHB1YmxpYyBLZXlWYWx1ZVBhaXJIYXNoVHJhaXRzPEhhc2hU
cmFpdHM8S2V5PiwgSGFzaFRyYWl0czxWYWx1ZT4+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3N0cnVjdCBOdWxsYWJsZUhhc2hUcmFpdHMgOiBwdWJsaWMgSGFzaFRyYWl0czxUPiB7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRp
YyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KDEpOyB9Cit9Owor
CisvLyBVc2VmdWwgZm9yIGNsYXNzZXMgdGhhdCB3YW50IGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB3
aGF0IGlzIGVtcHR5IGFuZCB3aGF0IGlzIGRlbGV0ZWQsCisvLyBhbmQgaG93IHRvIGNvbnN0cnVj
dCBib3RoLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBDdXN0b21IYXNoVHJhaXRzIDog
cHVibGljIEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZh
bHVlRnVuY3Rpb24gPSB0cnVlOworICAgIAorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShUJiBzbG90KQorICAgIHsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJl
c3NvZihzbG90KSkgVChUOjpEZWxldGVkVmFsdWUpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biB2YWx1ZS5pc0RlbGV0ZWRWYWx1ZSgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgVCBlbXB0
eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUKFQ6OkVtcHR5VmFsdWUpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgVCYgdmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gdmFsdWUuaXNFbXB0eVZhbHVlKCk7CisgICAgfQorfTsKKworLy8g
RW5hYmxlcyBpbnRlcm5hbCBXVEYgY29uc2lzdGVuY3kgY2hlY2tzIHRoYXQgYXJlIGludm9rZWQg
YXV0b21hdGljYWxseS4gTm9uLVdURiBjYWxsZXJzIGNhbiBjYWxsIGNoZWNrVGFibGVDb25zaXN0
ZW5jeSgpIGV2ZW4gaWYgaW50ZXJuYWwgY2hlY2tzIGFyZSBkaXNhYmxlZC4KKyNkZWZpbmUgQ0hF
Q0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZIDAKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTIDAKKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX1VTRV9BRlRF
Ul9ERVNUUlVDVElPTiAwCisjZWxzZQorI2RlZmluZSBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JT
IDEKKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX1VTRV9BRlRFUl9ERVNUUlVDVElPTiAxCisjZW5k
aWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCisKKyAgICBzdHJ1Y3QgSGFzaFRhYmxlU3Rh
dHMgeworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgYWxsIGF0b21pY2Fs
bHkgaW5jcmVtZW50ZWQgd2hlbiBtb2RpZmllZC4KKyAgICAgICAgV1RGX0VYUE9SVERBVEEgc3Rh
dGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1BY2Nlc3NlczsKKyAgICAgICAgV1RGX0VYUE9S
VERBVEEgc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZWhhc2hlczsKKyAgICAgICAg
V1RGX0VYUE9SVERBVEEgc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBudW1SZW1vdmVzOwor
ICAgICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMgc3RkOjphdG9taWM8dW5zaWduZWQ+IG51bVJl
aW5zZXJ0czsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgb25seSBt
b2RpZmllZCBpbiB0aGUgcmVjb3JkQ29sbGlzaW9uQXRDb3VudCBtZXRob2Qgd2l0aGluIGEgbXV0
ZXguCisgICAgICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyB1bnNpZ25lZCBtYXhDb2xsaXNpb25z
OworICAgICAgICBXVEZfRVhQT1JUREFUQSBzdGF0aWMgdW5zaWduZWQgbnVtQ29sbGlzaW9uczsK
KyAgICAgICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIHVuc2lnbmVkIGNvbGxpc2lvbkdyYXBoWzQw
OTZdOworCisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWNvcmRDb2xs
aXNpb25BdENvdW50KHVuc2lnbmVkIGNvdW50KTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGR1bXBTdGF0cygpOworICAgIH07CisKKyNlbmRpZgorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
KyAgICBjbGFzcyBIYXNoVGFibGU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVy
YXRvcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPgorICAgIGNsYXNzIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwKKyAgICAgICAg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPiopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIHJlbW92ZUl0
ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKTsKKworI2lmICFDSEVDS19IQVNIVEFCTEVf
SVRFUkFUT1JTCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPiosCisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7IH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVy
YXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPiopIHsgfQorCisjZW5kaWYKKworICAgIHR5cGVkZWYgZW51bSB7IEhhc2hJdGVtS25vd25H
b29kIH0gSGFzaEl0ZW1Lbm93bkdvb2RUYWc7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGNsYXNzIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRl
cmF0b3JfdGFnLCBWYWx1ZSwgc3RkOjpwdHJkaWZmX3QsIGNvbnN0IFZhbHVlKiwgY29uc3QgVmFs
dWUmPiB7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxl
VHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKKyAgICAg
ICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5
cGUmIFJlZmVyZW5jZVR5cGU7CisgICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2lu
dGVyVHlwZTsKKworICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OworICAgICAgICBmcmll
bmQgY2xhc3MgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47CisKKyAgICAgICAgdm9pZCBza2lwRW1wdHlCdWNr
ZXRzKCkKKyAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKG1fcG9zaXRpb24gIT0gbV9lbmRQ
b3NpdGlvbiAmJiBIYXNoVGFibGVUeXBlOjppc0VtcHR5T3JEZWxldGVkQnVja2V0KCptX3Bvc2l0
aW9uKSkKKyAgICAgICAgICAgICAgICArK21fcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2lu
dGVyVHlwZSBwb3NpdGlvbiwgUG9pbnRlclR5cGUgZW5kUG9zaXRpb24pCisgICAgICAgICAgICA6
IG1fcG9zaXRpb24ocG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKQorICAgICAg
ICB7CisgICAgICAgICAgICBhZGRJdGVyYXRvcih0YWJsZSwgdGhpcyk7CisgICAgICAgICAgICBz
a2lwRW1wdHlCdWNrZXRzKCk7CisgICAgICAgIH0KKworICAgICAgICBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBwb3NpdGlvbiwg
UG9pbnRlclR5cGUgZW5kUG9zaXRpb24sIEhhc2hJdGVtS25vd25Hb29kVGFnKQorICAgICAgICAg
ICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uKSwgbV9lbmRQb3NpdGlvbihlbmRQb3NpdGlvbikKKyAg
ICAgICAgeworICAgICAgICAgICAgYWRkSXRlcmF0b3IodGFibGUsIHRoaXMpOworICAgICAgICB9
CisKKyAgICBwdWJsaWM6CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IoKQorICAgICAg
ICB7CisgICAgICAgICAgICBhZGRJdGVyYXRvcihzdGF0aWNfY2FzdDxjb25zdCBIYXNoVGFibGVU
eXBlKj4oMCksIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZGVmYXVsdCBjb3B5LCBh
c3NpZ25tZW50IGFuZCBkZXN0cnVjdG9yIGFyZSBPSyBpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTIGlzIDAKKworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgfkhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICByZW1vdmVJdGVyYXRv
cih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IoY29u
c3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKQorICAgICAgICAgICAgOiBtX3Bvc2l0aW9uKG90aGVy
Lm1fcG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKG90aGVyLm1fZW5kUG9zaXRpb24pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGFkZEl0ZXJhdG9yKG90aGVyLm1fdGFibGUsIHRoaXMpOworICAgICAg
ICB9CisKKyAgICAgICAgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBjb25zdF9pdGVy
YXRvciYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcG9zaXRpb24gPSBvdGhlci5t
X3Bvc2l0aW9uOworICAgICAgICAgICAgbV9lbmRQb3NpdGlvbiA9IG90aGVyLm1fZW5kUG9zaXRp
b247CisKKyAgICAgICAgICAgIHJlbW92ZUl0ZXJhdG9yKHRoaXMpOworICAgICAgICAgICAgYWRk
SXRlcmF0b3Iob3RoZXIubV90YWJsZSwgdGhpcyk7CisKKyAgICAgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgY2hlY2tWYWxpZGl0eSgpOworICAgICAgICAgICAgcmV0
dXJuIG1fcG9zaXRpb247CisgICAgICAgIH0KKyAgICAgICAgUmVmZXJlbmNlVHlwZSBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0
b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisKKyAgICAgICAgY29uc3RfaXRlcmF0b3Im
IG9wZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9wb3NpdGlvbiAhPSBtX2VuZFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgICsrbV9wb3NpdGlvbjsKKyAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsKKyAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHBvc3RmaXggKysg
aW50ZW50aW9uYWxseSBvbWl0dGVkCisKKyAgICAgICAgLy8gQ29tcGFyaXNvbi4KKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7CisgICAgICAgICAgICByZXR1
cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOworICAgICAgICB9CisgICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkob3RoZXIpOworICAgICAgICAgICAgcmV0dXJu
IG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gKnRoaXMgPT0gc3RhdGljX2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVy
KTsKKyAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90
aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKnRoaXMgIT0gc3RhdGlj
X2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVyKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgdm9pZCBjaGVja1ZhbGlkaXR5KCkgY29uc3QKKyAgICAgICAgeworI2lmIENIRUNL
X0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyNlbmRp
ZgorICAgICAgICB9CisKKworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAg
dm9pZCBjaGVja1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdGFibGUpOworICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChvdGhlciwgb3RoZXIubV90YWJsZSk7CisgICAgICAgICAgICBBU1NFUlQobV90YWJs
ZSA9PSBvdGhlci5tX3RhYmxlKTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgdm9pZCBjaGVj
a1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJikgY29uc3QgeyB9CisjZW5kaWYKKworICAg
ICAgICBQb2ludGVyVHlwZSBtX3Bvc2l0aW9uOworICAgICAgICBQb2ludGVyVHlwZSBtX2VuZFBv
c2l0aW9uOworCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgIHB1YmxpYzoKKyAg
ICAgICAgLy8gQW55IG1vZGlmaWNhdGlvbnMgb2YgdGhlIG1fbmV4dCBvciBtX3ByZXZpb3VzIG9m
IGFuIGl0ZXJhdG9yIHRoYXQgaXMgaW4gYSBsaW5rZWQgbGlzdCBvZiBhIEhhc2hUYWJsZTo6bV9p
dGVyYXRvciwKKyAgICAgICAgLy8gc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBtX3RhYmxlLT5tX211
dGV4LgorICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7CisgICAg
ICAgIG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1fbmV4dDsKKyAgICAgICAgbXV0YWJsZSBjb25z
dF9pdGVyYXRvciogbV9wcmV2aW91czsKKyNlbmRpZgorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAg
IGNsYXNzIEhhc2hUYWJsZUl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3
YXJkX2l0ZXJhdG9yX3RhZywgVmFsdWUsIHN0ZDo6cHRyZGlmZl90LCBWYWx1ZSosIFZhbHVlJj4g
eworICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7CisgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlw
ZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CisgICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlJiBSZWZlcmVu
Y2VUeXBlOworICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7CisKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKKworICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihI
YXNoVGFibGVUeXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQpIDog
bV9pdGVyYXRvcih0YWJsZSwgcG9zLCBlbmQpIHsgfQorICAgICAgICBIYXNoVGFibGVJdGVyYXRv
cihIYXNoVGFibGVUeXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQs
IEhhc2hJdGVtS25vd25Hb29kVGFnIHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCwg
dGFnKSB7IH0KKworICAgIHB1YmxpYzoKKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoKSB7IH0K
KworICAgICAgICAvLyBkZWZhdWx0IGNvcHksIGFzc2lnbm1lbnQgYW5kIGRlc3RydWN0b3IgYXJl
IE9LCisKKyAgICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxQb2ludGVyVHlwZT4obV9pdGVyYXRvci5nZXQoKSk7IH0KKyAgICAgICAgUmVmZXJlbmNlVHlw
ZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICAgICAgUG9pbnRlclR5
cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisKKyAgICAgICAgaXRlcmF0
b3ImIG9wZXJhdG9yKysoKSB7ICsrbV9pdGVyYXRvcjsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAg
ICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQKKworICAgICAgICAvLyBDb21w
YXJpc29uLgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yID09IG90aGVyLm1faXRlcmF0b3I7IH0KKyAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
dGVyYXRvciAhPSBvdGhlci5tX2l0ZXJhdG9yOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgPT0g
b3RoZXI7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhlcjsgfQorCisgICAgICAgIG9w
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvcjsKKyAgICB9Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnM+IGNsYXNzIElkZW50aXR5SGFzaFRyYW5zbGF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7
IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3Qg
VSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJh
bnNsYXRlKFQmIGxvY2F0aW9uLCBjb25zdCBVJiwgViYmIHZhbHVlKQorICAgICAgICB7IAorICAg
ICAgICAgICAgVmFsdWVUcmFpdHM6OmFzc2lnblRvRW1wdHkobG9jYXRpb24sIHN0ZDo6Zm9yd2Fy
ZDxWPih2YWx1ZSkpOyAKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVyYXRvclR5cGU+IHN0cnVjdCBIYXNoVGFibGVBZGRSZXN1bHQgeworICAgICAgICBIYXNo
VGFibGVBZGRSZXN1bHQoKSA6IGlzTmV3RW50cnkoZmFsc2UpIHsgfQorICAgICAgICBIYXNoVGFi
bGVBZGRSZXN1bHQoSXRlcmF0b3JUeXBlIGl0ZXIsIGJvb2wgaXNOZXdFbnRyeSkgOiBpdGVyYXRv
cihpdGVyKSwgaXNOZXdFbnRyeShpc05ld0VudHJ5KSB7IH0KKyAgICAgICAgSXRlcmF0b3JUeXBl
IGl0ZXJhdG9yOworICAgICAgICBib29sIGlzTmV3RW50cnk7CisKKyAgICAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzTmV3RW50cnk7IH0KKyAgICB9OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KKyAgICBjbGFzcyBIYXNoVGFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFRyYWl0cyBW
YWx1ZVRyYWl0czsKKyAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKKyAgICAgICAgdHlwZWRl
ZiBWYWx1ZSBWYWx1ZVR5cGU7CisgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNoVHJhbnNsYXRv
cjxWYWx1ZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKKyAg
ICAgICAgdHlwZWRlZiBIYXNoVGFibGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKKwor
I2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQorICAgICAgICBzdHJ1Y3QgU3RhdHMg
eworICAgICAgICAgICAgU3RhdHMoKQorICAgICAgICAgICAgICAgIDogbnVtQWNjZXNzZXMoMCkK
KyAgICAgICAgICAgICAgICAsIG51bVJlaGFzaGVzKDApCisgICAgICAgICAgICAgICAgLCBudW1S
ZW1vdmVzKDApCisgICAgICAgICAgICAgICAgLCBudW1SZWluc2VydHMoMCkKKyAgICAgICAgICAg
ICAgICAsIG1heENvbGxpc2lvbnMoMCkKKyAgICAgICAgICAgICAgICAsIG51bUNvbGxpc2lvbnMo
MCkKKyAgICAgICAgICAgICAgICAsIGNvbGxpc2lvbkdyYXBoKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbnVtQWNjZXNzZXM7CisgICAgICAg
ICAgICB1bnNpZ25lZCBudW1SZWhhc2hlczsKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bVJlbW92
ZXM7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1SZWluc2VydHM7CisKKyAgICAgICAgICAgIHVu
c2lnbmVkIG1heENvbGxpc2lvbnM7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1Db2xsaXNpb25z
OworICAgICAgICAgICAgdW5zaWduZWQgY29sbGlzaW9uR3JhcGhbNDA5Nl07CisKKyAgICAgICAg
ICAgIHZvaWQgcmVjb3JkQ29sbGlzaW9uQXRDb3VudCh1bnNpZ25lZCBjb3VudCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQgPiBtYXhDb2xsaXNpb25zKQorICAgICAg
ICAgICAgICAgICAgICBtYXhDb2xsaXNpb25zID0gY291bnQ7CisgICAgICAgICAgICAgICAgbnVt
Q29sbGlzaW9ucysrOworICAgICAgICAgICAgICAgIGNvbGxpc2lvbkdyYXBoW2NvdW50XSsrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIGR1bXBTdGF0cygpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlxuV1RGOjpIYXNoVGFibGU6OlN0YXRzIGR1
bXBcblxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVkIGFjY2Vzc2VzXG4iLCBudW1B
Y2Nlc3Nlcyk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVkIHRvdGFsIGNvbGxpc2lvbnMs
IGF2ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xuIiwgbnVtQ29sbGlzaW9ucywgMS4wICog
KG51bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBudW1BY2Nlc3Nlcyk7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoImxvbmdlc3QgY29sbGlzaW9uIGNoYWluOiAlZFxuIiwgbWF4Q29sbGlz
aW9ucyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBtYXhDb2xs
aXNpb25zOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgJWQgbG9va3Vw
cyB3aXRoIGV4YWN0bHkgJWQgY29sbGlzaW9ucyAoJS4yZiUlICwgJS4yZiUlIHdpdGggdGhpcyBt
YW55IG9yIG1vcmUpXG4iLCBjb2xsaXNpb25HcmFwaFtpXSwgaSwgMTAwLjAgKiAoY29sbGlzaW9u
R3JhcGhbaV0gLSBjb2xsaXNpb25HcmFwaFtpKzFdKSAvIG51bUFjY2Vzc2VzLCAxMDAuMCAqIGNv
bGxpc2lvbkdyYXBoW2ldIC8gbnVtQWNjZXNzZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiJWQgcmVpbnNlcnRzXG4iLCBudW1SZWluc2VydHMpOworICAg
ICAgICAgICAgfQorICAgICAgICB9OworI2VuZGlmCisKKyAgICAgICAgSGFzaFRhYmxlKCk7Cisg
ICAgICAgIH5IYXNoVGFibGUoKSAKKyAgICAgICAgeworICAgICAgICAgICAgaW52YWxpZGF0ZUl0
ZXJhdG9ycygpOyAKKyAgICAgICAgICAgIGlmIChtX3RhYmxlKQorICAgICAgICAgICAgICAgIGRl
YWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7CisjaWYgQ0hFQ0tfSEFTSFRBQkxF
X1VTRV9BRlRFUl9ERVNUUlVDVElPTgorICAgICAgICAgICAgbV90YWJsZSA9IChWYWx1ZVR5cGUq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZjsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgSGFz
aFRhYmxlKGNvbnN0IEhhc2hUYWJsZSYpOworICAgICAgICB2b2lkIHN3YXAoSGFzaFRhYmxlJik7
CisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYpOworCisgICAg
ICAgIEhhc2hUYWJsZShIYXNoVGFibGUmJik7CisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9
KEhhc2hUYWJsZSYmKTsKKworICAgICAgICAvLyBXaGVuIHRoZSBoYXNoIHRhYmxlIGlzIGVtcHR5
LCBqdXN0IHJldHVybiB0aGUgc2FtZSBpdGVyYXRvciBmb3IgZW5kIGFzIGZvciBiZWdpbi4KKyAg
ICAgICAgLy8gVGhpcyBpcyBtb3JlIGVmZmljaWVudCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdG8g
c2tpcCBhbGwgdGhlIGVtcHR5IGFuZCBkZWxldGVkCisgICAgICAgIC8vIGJ1Y2tldHMsIGFuZCBp
dGVyYXRpbmcgYW4gZW1wdHkgdGFibGUgaXMgYSBjb21tb24gY2FzZSB0aGF0J3Mgd29ydGggb3B0
aW1pemluZy4KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0VtcHR5KCkgPyBl
bmQoKSA6IG1ha2VJdGVyYXRvcihtX3RhYmxlKTsgfQorICAgICAgICBpdGVyYXRvciBlbmQoKSB7
IHJldHVybiBtYWtlS25vd25Hb29kSXRlcmF0b3IobV90YWJsZSArIG1fdGFibGVTaXplKTsgfQor
ICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKSA/
IGVuZCgpIDogbWFrZUNvbnN0SXRlcmF0b3IobV90YWJsZSk7IH0KKyAgICAgICAgY29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IobV90
YWJsZSArIG1fdGFibGVTaXplKTsgfQorCisgICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX2tleUNvdW50OyB9CisgICAgICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV90YWJsZVNpemU7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fa2V5Q291bnQ7IH0KKworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVl
VHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0
b3I6OmV4dHJhY3QodmFsdWUpLCB2YWx1ZSk7IH0KKyAgICAgICAgQWRkUmVzdWx0IGFkZChWYWx1
ZVR5cGUmJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJh
Y3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIFdURk1vdmUodmFsdWUpKTsgfQorCisgICAgICAgIC8vIEEg
c3BlY2lhbCB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5n
IGFuZCBjb21wYXJpbmcKKyAgICAgICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lk
IHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKKyAg
ICAgICAgLy8gaW4gdGhlIHRhYmxlLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJlc3VsdCBhZGQoVCYmIGtl
eSwgRXh0cmEmJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0
eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZFBhc3NpbmdIYXNoQ29kZShU
JiYga2V5LCBFeHRyYSYmKTsKKworICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUm
IGtleSkgeyByZXR1cm4gZmluZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9CisgICAg
ICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVy
biBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KKyAgICAgICAgYm9vbCBjb250
YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGNvbnRhaW5zPElkZW50aXR5
VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gaXRlcmF0b3IgZmluZChjb25zdCBUJik7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBjb25zdF9pdGVy
YXRvciBmaW5kKGNvbnN0IFQmKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IGJvb2wgY29udGFpbnMoY29uc3QgVCYpIGNvbnN0Owor
CisgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsKKyAgICAgICAgdm9pZCByZW1v
dmUoaXRlcmF0b3IpOworICAgICAgICB2b2lkIHJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5
Q2hlY2soaXRlcmF0b3IpOworICAgICAgICB2b2lkIHJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3Rl
bmN5Q2hlY2soY29uc3RfaXRlcmF0b3IpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgorICAgICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdm9p
ZCBjbGVhcigpOworCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlCdWNrZXQoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gaXNIYXNoVHJhaXRzRW1wdHlWYWx1ZTxLZXlUcmFpdHM+
KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVs
ZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBLZXlUcmFpdHM6Omlz
RGVsZXRlZFZhbHVlKEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkpOyB9CisgICAgICAgIHN0YXRp
YyBib29sIGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyBy
ZXR1cm4gaXNFbXB0eUJ1Y2tldCh2YWx1ZSkgfHwgaXNEZWxldGVkQnVja2V0KHZhbHVlKTsgfQor
CisgICAgICAgIFZhbHVlVHlwZSogbG9va3VwKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBsb29r
dXA8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBsb29rdXAoY29uc3Qg
VCYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4gVmFsdWVUeXBlKiBpbmxpbmVMb29rdXAoY29uc3QgVCYpOworCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0OworI2Vsc2UK
KyAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgeyB9CisjZW5kaWYK
KyNpZiBDSEVDS19IQVNIVEFCTEVfQ09OU0lTVEVOQ1kKKyAgICAgICAgdm9pZCBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0IHsgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7IH0K
KyAgICAgICAgdm9pZCBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBj
b25zdCB7IGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsgfQorI2Vsc2UKKyAgICAg
ICAgc3RhdGljIHZvaWQgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkg
eyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkg
eyB9CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBWYWx1ZVR5cGUqIGFs
bG9jYXRlVGFibGUodW5zaWduZWQgc2l6ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2Nh
dGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCB1bnNpZ25lZCBzaXplKTsKKworICAgICAgICB0eXBl
ZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCBib29sPiBMb29rdXBUeXBlOworICAgICAgICB0eXBl
ZGVmIHN0ZDo6cGFpcjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7CisKKyAg
ICAgICAgTG9va3VwVHlwZSBsb29rdXBGb3JXcml0aW5nKGNvbnN0IEtleSYga2V5KSB7IHJldHVy
biBsb29rdXBGb3JXcml0aW5nPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH07CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBGdWxsTG9v
a3VwVHlwZSBmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJik7CisgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBMb29rdXBUeXBlIGxvb2t1cEZv
cldyaXRpbmcoY29uc3QgVCYpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gdm9pZCBhZGRVbmlxdWVGb3JJbml0
aWFsaXphdGlvbihUJiYga2V5LCBFeHRyYSYmKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gdm9pZCBjaGVja0tleShjb25zdCBUJik7CisK
KyAgICAgICAgdm9pZCByZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lD
aGVjayhWYWx1ZVR5cGUqKTsKKyAgICAgICAgdm9pZCByZW1vdmVBbmRJbnZhbGlkYXRlKFZhbHVl
VHlwZSopOworICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsKKworICAgICAgICBib29s
IHNob3VsZEV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIChtX2tleUNvdW50ICsgbV9kZWxldGVkQ291
bnQpICogbV9tYXhMb2FkID49IG1fdGFibGVTaXplOyB9CisgICAgICAgIGJvb2wgbXVzdFJlaGFz
aEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwgbV90YWJs
ZVNpemUgKiAyOyB9CisgICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICYmIG1fdGFibGVTaXplID4gS2V5
VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOyB9CisgICAgICAgIFZhbHVlVHlwZSogZXhwYW5kKFZh
bHVlVHlwZSogZW50cnkgPSBudWxscHRyKTsKKyAgICAgICAgdm9pZCBzaHJpbmsoKSB7IHJlaGFz
aChtX3RhYmxlU2l6ZSAvIDIsIG51bGxwdHIpOyB9CisKKyAgICAgICAgVmFsdWVUeXBlKiByZWhh
c2godW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KTsKKyAgICAgICAgVmFs
dWVUeXBlKiByZWluc2VydChWYWx1ZVR5cGUmJik7CisKKyAgICAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkgeyBoYXNoVHJhaXRzRGVsZXRlQnVja2V0PFRy
YWl0cz4oYnVja2V0KTsgfQorCisgICAgICAgIEZ1bGxMb29rdXBUeXBlIG1ha2VMb29rdXBSZXN1
bHQoVmFsdWVUeXBlKiBwb3NpdGlvbiwgYm9vbCBmb3VuZCwgdW5zaWduZWQgaGFzaCkKKyAgICAg
ICAgICAgIHsgcmV0dXJuIEZ1bGxMb29rdXBUeXBlKExvb2t1cFR5cGUocG9zaXRpb24sIGZvdW5k
KSwgaGFzaCk7IH0KKworICAgICAgICBpdGVyYXRvciBtYWtlSXRlcmF0b3IoVmFsdWVUeXBlKiBw
b3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplKTsg
fQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBv
cykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90
YWJsZVNpemUpOyB9CisgICAgICAgIGl0ZXJhdG9yIG1ha2VLbm93bkdvb2RJdGVyYXRvcihWYWx1
ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJs
ZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtl
S25vd25Hb29kQ29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29u
c3RfaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25v
d25Hb29kKTsgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB2b2lkIGNoZWNrVGFi
bGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25zdDsKKyNlbHNlCisgICAgICAgIHN0YXRpYyB2
b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0KKyNlbmRpZgorCisjaWYg
Q0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRv
cnMoKTsKKyNlbHNlCisgICAgICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKSB7
IH0KKyNlbmRpZgorCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtX21heExvYWQgPSAy
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbV9taW5Mb2FkID0gNjsKKworICAgICAg
ICBWYWx1ZVR5cGUqIG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVkIG1fdGFibGVTaXplOworICAg
ICAgICB1bnNpZ25lZCBtX3RhYmxlU2l6ZU1hc2s7CisgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291
bnQ7CisgICAgICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OworCisjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gQWxsIGFjY2VzcyB0byBtX2l0
ZXJhdG9ycyBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIG1fbXV0ZXguCisgICAgICAgIG11dGFibGUg
Y29uc3RfaXRlcmF0b3IqIG1faXRlcmF0b3JzOworICAgICAgICAvLyBVc2Ugc3RkOjp1bmlxdWVf
cHRyIHNvIEhhc2hUYWJsZSBjYW4gc3RpbGwgYmUgbWVtbW92ZSdkIG9yIG1lbWNweSdlZC4KKyAg
ICAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8TG9jaz4gbV9tdXRleDsKKyNlbmRpZgorCisj
aWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgcHVibGljOgorICAgICAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxTdGF0cz4gbV9zdGF0czsKKyNlbmRpZgorICAgIH07CisK
KyAgICAvLyBTZXQgYWxsIHRoZSBiaXRzIHRvIG9uZSBhZnRlciB0aGUgbW9zdCBzaWduaWZpY2Fu
dCBiaXQ6IDAwMTEwMTAxMDEwIC0+IDAwMTExMTExMTExLgorICAgIHRlbXBsYXRlPHVuc2lnbmVk
IHNpemU+IHN0cnVjdCBPbmVpZnlMb3dCaXRzOworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3Qg
T25laWZ5TG93Qml0czwwPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9
IDA7CisgICAgfTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1iZXI+CisgICAgc3RydWN0IE9u
ZWlmeUxvd0JpdHMgeworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSBudW1i
ZXIgfCBPbmVpZnlMb3dCaXRzPChudW1iZXIgPj4gMSk+Ojp2YWx1ZTsKKyAgICB9OworICAgIC8v
IENvbXB1dGUgdGhlIGZpcnN0IHBvd2VyIG9mIHR3byBpbnRlZ2VyIHRoYXQgaXMgYW4gdXBwZXIg
Ym91bmQgb2YgdGhlIHBhcmFtZXRlciAnbnVtYmVyJy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBu
dW1iZXI+CisgICAgc3RydWN0IFVwcGVyUG93ZXJPZlR3b0JvdW5kIHsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gKE9uZWlmeUxvd0JpdHM8bnVtYmVyIC0gMT46OnZhbHVl
ICsgMSkgKiAyOworICAgIH07CisKKyAgICAvLyBCZWNhdXNlIHBvd2VyIG9mIHR3byBudW1iZXJz
IGFyZSB0aGUgbGltaXQgb2YgbWF4TG9hZCwgdGhlaXIgY2FwYWNpdHkgaXMgdHdpY2UgdGhlCisg
ICAgLy8gVXBwZXJQb3dlck9mVHdvQm91bmQsIG9yIDQgdGltZXMgdGhlaXIgdmFsdWVzLgorICAg
IHRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIGJvb2wgaXNQb3dlck9mVHdvPiBzdHJ1Y3QgSGFzaFRh
YmxlQ2FwYWNpdHlGb3JTaXplU3BsaXR0ZXI7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4K
KyAgICBzdHJ1Y3QgSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplU3BsaXR0ZXI8c2l6ZSwgdHJ1ZT4g
eworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSBzaXplICogNDsKKyAgICB9
OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IEhhc2hUYWJsZUNhcGFj
aXR5Rm9yU2l6ZVNwbGl0dGVyPHNpemUsIGZhbHNlPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB2YWx1ZSA9IFVwcGVyUG93ZXJPZlR3b0JvdW5kPHNpemU+Ojp2YWx1ZTsKKyAgICB9
OworCisgICAgLy8gSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIGNvbXB1dGVzIHRoZSB1cHBlciBw
b3dlciBvZiB0d28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgc2l6ZSBwYXJhbWV0ZXIuCisgICAgLy8g
VGhpcyBpcyBkb25lIGF0IGNvbXBpbGUgdGltZSB0byBpbml0aWFsaXplIHRoZSBIYXNoVHJhaXRz
LgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IEhhc2hUYWJsZUNhcGFj
aXR5Rm9yU2l6ZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IEhhc2hU
YWJsZUNhcGFjaXR5Rm9yU2l6ZVNwbGl0dGVyPHNpemUsICEoc2l6ZSAmIChzaXplIC0gMSkpPjo6
dmFsdWU7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5lIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRh
YmxlKCkKKyAgICAgICAgOiBtX3RhYmxlKDApCisgICAgICAgICwgbV90YWJsZVNpemUoMCkKKyAg
ICAgICAgLCBtX3RhYmxlU2l6ZU1hc2soMCkKKyAgICAgICAgLCBtX2tleUNvdW50KDApCisgICAg
ICAgICwgbV9kZWxldGVkQ291bnQoMCkKKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisg
ICAgICAgICwgbV9pdGVyYXRvcnMoMCkKKyAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlx
dWU8TG9jaz4oKSkKKyNlbmRpZgorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQor
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyNlbmRpZgorICAg
IHsKKyAgICB9CisKKyAgICBpbmxpbmUgdW5zaWduZWQgZG91YmxlSGFzaCh1bnNpZ25lZCBrZXkp
CisgICAgeworICAgICAgICBrZXkgPSB+a2V5ICsgKGtleSA+PiAyMyk7CisgICAgICAgIGtleSBe
PSAoa2V5IDw8IDEyKTsKKyAgICAgICAga2V5IF49IChrZXkgPj4gNyk7CisgICAgICAgIGtleSBe
PSAoa2V5IDw8IDIpOworICAgICAgICBrZXkgXj0gKGtleSA+PiAyMCk7CisgICAgICAgIHJldHVy
biBrZXk7CisgICAgfQorCisjaWYgQVNTRVJUX0RJU0FCTEVECisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIGlubGluZSB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6Y2hlY2tLZXkoY29uc3QgVCYpCisgICAgeworICAgIH0KKworI2Vsc2UK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVu
YW1lIFQ+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrS2V5KGNvbnN0IFQmIGtleSkKKyAgICB7
CisgICAgICAgIGlmICghSGFzaEZ1bmN0aW9uczo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVCghSGFzaFRyYW5zbGF0b3I6
OmVxdWFsKEtleVRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBrZXkpKTsKKyAgICAgICAgdHlwZW5hbWUg
c3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFZhbHVlVHlwZSksIHN0ZDo6YWxpZ25tZW50X29m
PFZhbHVlVHlwZT46OnZhbHVlPjo6dHlwZSBkZWxldGVkVmFsdWVCdWZmZXI7CisgICAgICAgIFZh
bHVlVHlwZSogZGVsZXRlZFZhbHVlUHRyID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8VmFsdWVUeXBl
Kj4oJmRlbGV0ZWRWYWx1ZUJ1ZmZlcik7CisgICAgICAgIFZhbHVlVHlwZSYgZGVsZXRlZFZhbHVl
ID0gKmRlbGV0ZWRWYWx1ZVB0cjsKKyAgICAgICAgVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFs
dWUoZGVsZXRlZFZhbHVlKTsKKyAgICAgICAgQVNTRVJUKCFIYXNoVHJhbnNsYXRvcjo6ZXF1YWwo
RXh0cmFjdG9yOjpleHRyYWN0KGRlbGV0ZWRWYWx1ZSksIGtleSkpOworICAgIH0KKworI2VuZGlm
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBUPgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6bG9va3VwKGNvbnN0IFQmIGtleSkg
LT4gVmFsdWVUeXBlKgorICAgIHsKKyAgICAgICAgcmV0dXJuIGlubGluZUxvb2t1cDxIYXNoVHJh
bnNsYXRvcj4oa2V5KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OmlubGluZUxvb2t1cChjb25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoKKyAgICB7Cisg
ICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOworCisgICAgICAgIHVuc2lnbmVk
IGsgPSAwOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAg
ICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVkIGggPSBI
YXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOworICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVN
YXNrOworCisgICAgICAgIGlmICghdGFibGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKworI2lm
IERVTVBfSEFTSFRBQkxFX1NUQVRTCisgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bUFjY2Vz
c2VzOworICAgICAgICB1bnNpZ25lZCBwcm9iZUNvdW50ID0gMDsKKyNlbmRpZgorCisjaWYgRFVN
UF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgICsrbV9zdGF0cy0+bnVtQWNjZXNz
ZXM7CisjZW5kaWYKKworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgVmFsdWVUeXBl
KiBlbnRyeSA9IHRhYmxlICsgaTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHdl
IGNvdW50IG9uIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBvdXQgdGhpcyBicmFuY2gKKyAgICAg
ICAgICAgIGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkg
eworICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpl
eHRyYWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50
cnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KCFpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSAmJiBIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFj
dG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bnRyeTsKKyAgICAgICAgICAgIH0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUworICAgICAgICAg
ICAgKytwcm9iZUNvdW50OworICAgICAgICAgICAgSGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxp
c2lvbkF0Q291bnQocHJvYmVDb3VudCk7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NU
QVRTX1BFUl9UQUJMRQorICAgICAgICAgICAgbV9zdGF0cy0+cmVjb3JkQ29sbGlzaW9uQXRDb3Vu
dChwcm9iZUNvdW50KTsKKyNlbmRpZgorCisgICAgICAgICAgICBpZiAoayA9PSAwKQorICAgICAg
ICAgICAgICAgIGsgPSAxIHwgZG91YmxlSGFzaChoKTsKKyAgICAgICAgICAgIGkgPSAoaSArIGsp
ICYgc2l6ZU1hc2s7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIGlubGluZSBhdXRvIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6bG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IExvb2t1cFR5cGUKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5z
bGF0b3I+KGtleSk7CisKKyAgICAgICAgdW5zaWduZWQgayA9IDA7CisgICAgICAgIFZhbHVlVHlw
ZSogdGFibGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVT
aXplTWFzazsKKyAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7
CisgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CisKKyNpZiBEVU1QX0hBU0hUQUJM
RV9TVEFUUworICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsKKyAgICAgICAg
dW5zaWduZWQgcHJvYmVDb3VudCA9IDA7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NU
QVRTX1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51bUFjY2Vzc2VzOworI2VuZGlmCisK
KyAgICAgICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOworCisgICAgICAgIHdoaWxlICgx
KSB7CisgICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gdGFibGUgKyBpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyB3ZSBjb3VudCBvbiB0aGUgY29tcGlsZXIgdG8gb3B0aW1pemUg
b3V0IHRoaXMgYnJhbmNoCisgICAgICAgICAgICBpZiAoSGFzaEZ1bmN0aW9uczo6c2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tl
dCgqZW50cnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTG9va3VwVHlwZShkZWxldGVk
RW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFsc2UpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRy
YWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMb29rdXBUeXBl
KGVudHJ5LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNE
ZWxldGVkQnVja2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9
IGVudHJ5OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNFbXB0
eUJ1Y2tldCgqZW50cnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTG9va3VwVHlwZShk
ZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFsc2UpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQorICAgICAgICAg
ICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMb29rdXBUeXBlKGVudHJ5LCB0cnVlKTsKKyAg
ICAgICAgICAgIH0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUworICAgICAgICAgICAgKytwcm9i
ZUNvdW50OworICAgICAgICAgICAgSGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291
bnQocHJvYmVDb3VudCk7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9U
QUJMRQorICAgICAgICAgICAgbV9zdGF0cy0+cmVjb3JkQ29sbGlzaW9uQXRDb3VudChwcm9iZUNv
dW50KTsKKyNlbmRpZgorCisgICAgICAgICAgICBpZiAoayA9PSAwKQorICAgICAgICAgICAgICAg
IGsgPSAxIHwgZG91YmxlSGFzaChoKTsKKyAgICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1h
c2s7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
ZnVsbExvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYga2V5KSAtPiBGdWxsTG9va3VwVHlwZQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdGFibGUpOworICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNs
YXRvcj4oa2V5KTsKKworICAgICAgICB1bnNpZ25lZCBrID0gMDsKKyAgICAgICAgVmFsdWVUeXBl
KiB0YWJsZSA9IG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gbV90YWJsZVNp
emVNYXNrOworICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsK
KyAgICAgICAgdW5zaWduZWQgaSA9IGggJiBzaXplTWFzazsKKworI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTCisgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bUFjY2Vzc2VzOworICAgICAgICB1
bnNpZ25lZCBwcm9iZUNvdW50ID0gMDsKKyNlbmRpZgorCisjaWYgRFVNUF9IQVNIVEFCTEVfU1RB
VFNfUEVSX1RBQkxFCisgICAgICAgICsrbV9zdGF0cy0+bnVtQWNjZXNzZXM7CisjZW5kaWYKKwor
ICAgICAgICBWYWx1ZVR5cGUqIGRlbGV0ZWRFbnRyeSA9IDA7CisKKyAgICAgICAgd2hpbGUgKDEp
IHsKKyAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSB0YWJsZSArIGk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIHdlIGNvdW50IG9uIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBv
dXQgdGhpcyBicmFuY2gKKyAgICAgICAgICAgIGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCkgeworICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0
KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGRl
bGV0ZWRFbnRyeSA/IGRlbGV0ZWRFbnRyeSA6IGVudHJ5LCBmYWxzZSwgaCk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0
b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VMb29rdXBSZXN1bHQoZW50cnksIHRydWUsIGgpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKKyAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlTG9va3VwUmVzdWx0KGRlbGV0ZWRFbnRyeSA/IGRlbGV0ZWRFbnRyeSA6IGVudHJ5
LCBmYWxzZSwgaCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVk
QnVja2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0
b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VMb29rdXBSZXN1bHQoZW50cnksIHRydWUsIGgpOworICAgICAgICAgICAgfQorI2lmIERVTVBf
SEFTSFRBQkxFX1NUQVRTCisgICAgICAgICAgICArK3Byb2JlQ291bnQ7CisgICAgICAgICAgICBI
YXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlzaW9uQXRDb3VudChwcm9iZUNvdW50KTsKKyNlbmRp
ZgorCisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgICAgICBtX3N0
YXRzLT5yZWNvcmRDb2xsaXNpb25BdENvdW50KHByb2JlQ291bnQpOworI2VuZGlmCisKKyAgICAg
ICAgICAgIGlmIChrID09IDApCisgICAgICAgICAgICAgICAgayA9IDEgfCBkb3VibGVIYXNoKGgp
OworICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEV4dHJhPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
OmFkZFVuaXF1ZUZvckluaXRpYWxpemF0aW9uKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpCisgICAg
eworICAgICAgICBBU1NFUlQobV90YWJsZSk7CisKKyAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5z
bGF0b3I+KGtleSk7CisKKyAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOworCisgICAgICAg
IGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CisKKyAgICAgICAgdW5zaWduZWQgayA9
IDA7CisgICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25l
ZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hU
cmFuc2xhdG9yOjpoYXNoKGtleSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7
CisKKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUworICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpu
dW1BY2Nlc3NlczsKKyAgICAgICAgdW5zaWduZWQgcHJvYmVDb3VudCA9IDA7CisjZW5kaWYKKwor
I2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51
bUFjY2Vzc2VzOworI2VuZGlmCisKKyAgICAgICAgVmFsdWVUeXBlKiBlbnRyeTsKKyAgICAgICAg
d2hpbGUgKDEpIHsKKyAgICAgICAgICAgIGVudHJ5ID0gdGFibGUgKyBpOworCisgICAgICAgICAg
ICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisj
aWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKKyAgICAgICAgICAgICsrcHJvYmVDb3VudDsKKyAgICAg
ICAgICAgIEhhc2hUYWJsZVN0YXRzOjpyZWNvcmRDb2xsaXNpb25BdENvdW50KHByb2JlQ291bnQp
OworI2VuZGlmCisKKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKKyAgICAgICAg
ICAgIG1fc3RhdHMtPnJlY29yZENvbGxpc2lvbkF0Q291bnQocHJvYmVDb3VudCk7CisjZW5kaWYK
KworICAgICAgICAgICAgaWYgKGsgPT0gMCkKKyAgICAgICAgICAgICAgICBrID0gMSB8IGRvdWJs
ZUhhc2goaCk7CisgICAgICAgICAgICBpID0gKGkgKyBrKSAmIHNpemVNYXNrOworICAgICAgICB9
CisKKyAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2Fy
ZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CisKKyAgICAgICAgaW50ZXJu
YWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxib29sIGVt
cHR5VmFsdWVJc1plcm8+IHN0cnVjdCBIYXNoVGFibGVCdWNrZXRJbml0aWFsaXplcjsKKworICAg
IHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPGZhbHNlPiB7Cisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgVmFsdWU+IHN0YXRpYyB2
b2lkIGluaXRpYWxpemUoVmFsdWUmIGJ1Y2tldCkKKyAgICAgICAgeworICAgICAgICAgICAgbmV3
IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihidWNrZXQpKSBWYWx1ZShUcmFpdHM6OmVtcHR5VmFs
dWUoKSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRh
YmxlQnVja2V0SW5pdGlhbGl6ZXI8dHJ1ZT4geworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIFZhbHVlPiBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFZhbHVlJiBidWNr
ZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaW5pdGlhbGl6ZXMgdGhlIGJ1Y2tl
dCB3aXRob3V0IGNvcHlpbmcgdGhlIGVtcHR5IHZhbHVlLgorICAgICAgICAgICAgLy8gVGhhdCBt
YWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgdGhpcyB3aXRoIHR5cGVzIHRoYXQgZG9uJ3Qgc3VwcG9y
dCBjb3B5aW5nLgorICAgICAgICAgICAgLy8gVGhlIG1lbXNldCB0byAwIGxvb2tzIGxpa2UgYSBz
bG93IG9wZXJhdGlvbiBidXQgaXMgb3B0aW1pemVkIGJ5IHRoZSBjb21waWxlcnMuCisgICAgICAg
ICAgICBtZW1zZXQoc3RkOjphZGRyZXNzb2YoYnVja2V0KSwgMCwgc2l6ZW9mKGJ1Y2tldCkpOwor
ICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSB2b2lkIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6aW5pdGlhbGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkKKyAgICB7CisgICAgICAg
IEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybz46OnRl
bXBsYXRlIGluaXRpYWxpemU8VHJhaXRzPihidWNrZXQpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEV4dHJhPgorICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChUJiYga2V5LCBF
eHRyYSYmIGV4dHJhKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIGNoZWNrS2V5PEhhc2hU
cmFuc2xhdG9yPihrZXkpOworCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKKworICAg
ICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgICAgICBleHBhbmQobnVsbHB0cik7CisKKyAgICAg
ICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKKworICAgICAgICBBU1NFUlQobV90
YWJsZSk7CisKKyAgICAgICAgdW5zaWduZWQgayA9IDA7CisgICAgICAgIFZhbHVlVHlwZSogdGFi
bGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFz
azsKKyAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7CisgICAg
ICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CisKKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFU
UworICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsKKyAgICAgICAgdW5zaWdu
ZWQgcHJvYmVDb3VudCA9IDA7CisjZW5kaWYKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BF
Ul9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51bUFjY2Vzc2VzOworI2VuZGlmCisKKyAgICAg
ICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOworICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5
OworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgZW50cnkgPSB0YWJsZSArIGk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHdlIGNvdW50IG9uIHRoZSBjb21waWxlciB0byBv
cHRpbWl6ZSBvdXQgdGhpcyBicmFuY2gKKyAgICAgICAgICAgIGlmIChIYXNoRnVuY3Rpb25zOjpz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgeworICAgICAgICAgICAgICAgIGlmIChpc0Vt
cHR5QnVja2V0KCplbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFj
dG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKKyAg
ICAgICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlz
RGVsZXRlZEJ1Y2tldCgqZW50cnkpKQorICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkg
PSBlbnRyeTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwo
RXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOworICAg
ICAgICAgICAgfQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCisgICAgICAgICAgICArK3Byb2Jl
Q291bnQ7CisgICAgICAgICAgICBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlzaW9uQXRDb3Vu
dChwcm9iZUNvdW50KTsKKyNlbmRpZgorCisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RB
QkxFCisgICAgICAgICAgICBtX3N0YXRzLT5yZWNvcmRDb2xsaXNpb25BdENvdW50KHByb2JlQ291
bnQpOworI2VuZGlmCisKKyAgICAgICAgICAgIGlmIChrID09IDApCisgICAgICAgICAgICAgICAg
ayA9IDEgfCBkb3VibGVIYXNoKGgpOworICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFz
azsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZWxldGVkRW50cnkpIHsKKyAgICAgICAgICAg
IGluaXRpYWxpemVCdWNrZXQoKmRlbGV0ZWRFbnRyeSk7CisgICAgICAgICAgICBlbnRyeSA9IGRl
bGV0ZWRFbnRyeTsKKyAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7IAorICAgICAgICB9CisK
KyAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxU
PihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CisgICAgICAgICsrbV9rZXlDb3Vu
dDsKKyAgICAgICAgCisgICAgICAgIGlmIChzaG91bGRFeHBhbmQoKSkKKyAgICAgICAgICAgIGVu
dHJ5ID0gZXhwYW5kKGVudHJ5KTsKKworICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0
ZW5jeSgpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29k
SXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KKyAg
ICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRy
YSYmIGV4dHJhKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFu
c2xhdG9yPihrZXkpOworCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKKworICAgICAg
ICBpZiAoIW1fdGFibGUpCisgICAgICAgICAgICBleHBhbmQoKTsKKworICAgICAgICBpbnRlcm5h
bENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOworCisgICAgICAgIEZ1bGxMb29rdXBUeXBlIGxvb2t1
cFJlc3VsdCA9IGZ1bGxMb29rdXBGb3JXcml0aW5nPEhhc2hUcmFuc2xhdG9yPihrZXkpOworCisg
ICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSBsb29rdXBSZXN1bHQuZmlyc3QuZmlyc3Q7CisgICAg
ICAgIGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vjb25kOworICAgICAgICB1bnNp
Z25lZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKKyAgICAgICAgCisgICAgICAgIGlmIChmb3Vu
ZCkKKyAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVu
dHJ5KSwgZmFsc2UpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50
cnkpKSB7CisgICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7CisgICAgICAgICAg
ICAtLW1fZGVsZXRlZENvdW50OworICAgICAgICB9CisKKyAgICAgICAgSGFzaFRyYW5zbGF0b3I6
OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0
cmE+KGV4dHJhKSwgaCk7CisgICAgICAgICsrbV9rZXlDb3VudDsKKworICAgICAgICBpZiAoc2hv
dWxkRXhwYW5kKCkpCisgICAgICAgICAgICBlbnRyeSA9IGV4cGFuZChlbnRyeSk7CisKKyAgICAg
ICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKKworICAgICAgICByZXR1cm4gQWRk
UmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZWluc2VydChWYWx1ZVR5cGUmJiBl
bnRyeSkgLT4gVmFsdWVUeXBlKgorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdGFibGUpOworICAg
ICAgICBBU1NFUlQoIWxvb2t1cEZvcldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSku
c2Vjb25kKTsKKyAgICAgICAgQVNTRVJUKCFpc0RlbGV0ZWRCdWNrZXQoKihsb29rdXBGb3JXcml0
aW5nKEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkpLmZpcnN0KSkpOworI2lmIERVTVBfSEFTSFRB
QkxFX1NUQVRTCisgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaW5zZXJ0czsKKyNlbmRp
ZgorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMt
Pm51bVJlaW5zZXJ0czsKKyNlbmRpZgorCisgICAgICAgIFZhbHVlKiBuZXdFbnRyeSA9IGxvb2t1
cEZvcldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuZmlyc3Q7CisgICAgICAgIG5l
d0VudHJ5LT5+VmFsdWUoKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBuZXdFbnRyeSkgVmFsdWVU
eXBlKFdURk1vdmUoZW50cnkpKTsKKworICAgICAgICByZXR1cm4gbmV3RW50cnk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVu
YW1lIFQ+IAorICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgLT4gaXRlcmF0
b3IKKyAgICB7CisgICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgICAgIHJldHVybiBlbmQo
KTsKKworICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbG9va3VwPEhhc2hUcmFuc2xhdG9yPihr
ZXkpOworICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIGVuZCgpOworCisg
ICAgICAgIHJldHVybiBtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PiAKKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIGNvbnN0IC0+IGNvbnN0
X2l0ZXJhdG9yCisgICAgeworICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgICAgICByZXR1
cm4gZW5kKCk7CisKKyAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9IGNvbnN0X2Nhc3Q8SGFzaFRh
YmxlKj4odGhpcyktPmxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKKyAgICAgICAgaWYgKCFl
bnRyeSkKKyAgICAgICAgICAgIHJldHVybiBlbmQoKTsKKworICAgICAgICByZXR1cm4gbWFrZUtu
b3duR29vZENvbnN0SXRlcmF0b3IoZW50cnkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAKKyAgICBib29sIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KCFtX3RhYmxlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PEhhc2hUYWJsZSo+KHRoaXMpLT5sb29rdXA8SGFzaFRyYW5zbGF0b3I+KGtleSk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlQW5kSW52YWxp
ZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soVmFsdWVUeXBlKiBwb3MpCisgICAgewor
ICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CisgICAgICAgIHJlbW92ZShwb3MpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZEludmFsaWRhdGUo
VmFsdWVUeXBlKiBwb3MpCisgICAgeworICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7Cisg
ICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CisgICAgICAgIHJlbW92ZShw
b3MpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShWYWx1
ZVR5cGUqIHBvcykKKyAgICB7CisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKKyAgICAgICAgKytI
YXNoVGFibGVTdGF0czo6bnVtUmVtb3ZlczsKKyNlbmRpZgorI2lmIERVTVBfSEFTSFRBQkxFX1NU
QVRTX1BFUl9UQUJMRQorICAgICAgICArK21fc3RhdHMtPm51bVJlbW92ZXM7CisjZW5kaWYKKwor
ICAgICAgICBkZWxldGVCdWNrZXQoKnBvcyk7CisgICAgICAgICsrbV9kZWxldGVkQ291bnQ7Cisg
ICAgICAgIC0tbV9rZXlDb3VudDsKKworICAgICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCisgICAg
ICAgICAgICBzaHJpbmsoKTsKKworICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5j
eSgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1v
dmUoaXRlcmF0b3IgaXQpCisgICAgeworICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgcmVtb3ZlQW5kSW52YWxpZGF0ZShjb25zdF9jYXN0PFZh
bHVlVHlwZSo+KGl0Lm1faXRlcmF0b3IubV9wb3NpdGlvbikpOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5j
eUNoZWNrKGl0ZXJhdG9yIGl0KQorICAgIHsKKyAgICAgICAgaWYgKGl0ID09IGVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0RW50
cnlDb25zaXN0ZW5jeUNoZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5t
X3Bvc2l0aW9uKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfaXRlcmF0b3IgaXQp
CisgICAgeworICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgcmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2so
Y29uc3RfY2FzdDxWYWx1ZVR5cGUqPihpdC5tX3Bvc2l0aW9uKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkp
CisgICAgeworICAgICAgICByZW1vdmUoZmluZChrZXkpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpyZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgLy8gV2Ug
bXVzdCB1c2UgbG9jYWwgY29waWVzIGluIGNhc2UgImZ1bmN0b3IiIG9yICJkZWxldGVCdWNrZXQi
CisgICAgICAgIC8vIG1ha2UgYSBmdW5jdGlvbiBjYWxsLCB3aGljaCBwcmV2ZW50cyB0aGUgY29t
cGlsZXIgZnJvbSBrZWVwaW5nCisgICAgICAgIC8vIHRoZSB2YWx1ZXMgaW4gcmVnaXN0ZXIuCisg
ICAgICAgIHVuc2lnbmVkIHJlbW92ZWRCdWNrZXRDb3VudCA9IDA7CisgICAgICAgIFZhbHVlVHlw
ZSogdGFibGUgPSBtX3RhYmxlOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fdGFibGVT
aXplOyBpLS07KSB7CisgICAgICAgICAgICBWYWx1ZVR5cGUmIGJ1Y2tldCA9IHRhYmxlW2ldOwor
ICAgICAgICAgICAgaWYgKGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQoYnVja2V0KSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFmdW5jdG9y
KGJ1Y2tldCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGRlbGV0ZUJ1Y2tldChidWNrZXQpOworICAgICAgICAgICAgKytyZW1vdmVkQnVja2V0
Q291bnQ7CisgICAgICAgIH0KKyAgICAgICAgbV9kZWxldGVkQ291bnQgKz0gcmVtb3ZlZEJ1Y2tl
dENvdW50OworICAgICAgICBtX2tleUNvdW50IC09IHJlbW92ZWRCdWNrZXRDb3VudDsKKworICAg
ICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCisgICAgICAgICAgICBzaHJpbmsoKTsKKyAgICAgICAg
CisgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWxsb2NhdGVUYWJsZSh1bnNpZ25lZCBzaXplKSAt
PiBWYWx1ZVR5cGUqCisgICAgeworICAgICAgICAvLyB3b3VsZCB1c2UgYSB0ZW1wbGF0ZSBtZW1i
ZXIgZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMgaGVyZSwgYnV0CisgICAg
ICAgIC8vIGdjYyBkb2Vzbid0IGFwcGVhciB0byBzdXBwb3J0IHRoYXQKKyAgICAgICAgaWYgKFRy
YWl0czo6ZW1wdHlWYWx1ZUlzWmVybykKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
YWx1ZVR5cGUqPihjYWxsb2Moc2l6ZSwgc2l6ZW9mKFZhbHVlVHlwZSkpKTsKKyAgICAgICAgVmFs
dWVUeXBlKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUqPihjYWxsb2Moc2l6ZSwgc2l6
ZW9mKFZhbHVlVHlwZSkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
IGkrKykKKyAgICAgICAgICAgIGluaXRpYWxpemVCdWNrZXQocmVzdWx0W2ldKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpk
ZWFsbG9jYXRlVGFibGUoVmFsdWVUeXBlKiB0YWJsZSwgdW5zaWduZWQgc2l6ZSkKKyAgICB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAg
IGlmICghaXNEZWxldGVkQnVja2V0KHRhYmxlW2ldKSkKKyAgICAgICAgICAgICAgICB0YWJsZVtp
XS5+VmFsdWVUeXBlKCk7CisgICAgICAgIH0KKyAgICAgICAgZnJlZSh0YWJsZSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZXhwYW5kKFZhbHVlVHlwZSogZW50cnkp
IC0+IFZhbHVlVHlwZSoKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG5ld1NpemU7CisgICAgICAg
IGlmIChtX3RhYmxlU2l6ZSA9PSAwKQorICAgICAgICAgICAgbmV3U2l6ZSA9IEtleVRyYWl0czo6
bWluaW11bVRhYmxlU2l6ZTsKKyAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxhY2UoKSkK
KyAgICAgICAgICAgIG5ld1NpemUgPSBtX3RhYmxlU2l6ZTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbmV3U2l6ZSA9IG1fdGFibGVTaXplICogMjsKKworICAgICAgICByZXR1cm4gcmVoYXNo
KG5ld1NpemUsIGVudHJ5KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGF1dG8gSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpyZWhhc2godW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KSAtPiBWYWx1
ZVR5cGUqCisgICAgeworICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2Vw
dFNpemUoKTsKKworICAgICAgICB1bnNpZ25lZCBvbGRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsK
KyAgICAgICAgVmFsdWVUeXBlKiBvbGRUYWJsZSA9IG1fdGFibGU7CisKKyNpZiBEVU1QX0hBU0hU
QUJMRV9TVEFUUworICAgICAgICBpZiAob2xkVGFibGVTaXplICE9IDApCisgICAgICAgICAgICAr
K0hhc2hUYWJsZVN0YXRzOjpudW1SZWhhc2hlczsKKyNlbmRpZgorCisjaWYgRFVNUF9IQVNIVEFC
TEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgIGlmIChvbGRUYWJsZVNpemUgIT0gMCkKKyAgICAg
ICAgICAgICsrbV9zdGF0cy0+bnVtUmVoYXNoZXM7CisjZW5kaWYKKworICAgICAgICBtX3RhYmxl
U2l6ZSA9IG5ld1RhYmxlU2l6ZTsKKyAgICAgICAgbV90YWJsZVNpemVNYXNrID0gbmV3VGFibGVT
aXplIC0gMTsKKyAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRlVGFibGUobmV3VGFibGVTaXplKTsK
KworICAgICAgICBWYWx1ZSogbmV3RW50cnkgPSBudWxscHRyOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpICE9IG9sZFRhYmxlU2l6ZTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaXNE
ZWxldGVkQnVja2V0KG9sZFRhYmxlW2ldKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChzdGQ6
OmFkZHJlc3NvZihvbGRUYWJsZVtpXSkgIT0gZW50cnkpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldChvbGRU
YWJsZVtpXSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RkOjphZGRyZXNzb2Yob2xkVGFi
bGVbaV0pICE9IGVudHJ5KTsKKyAgICAgICAgICAgICAgICBvbGRUYWJsZVtpXS5+VmFsdWVUeXBl
KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFZhbHVlKiByZWluc2VydGVkRW50cnkgPSByZWluc2VydChXVEZNb3ZlKG9sZFRhYmxlW2ld
KSk7CisgICAgICAgICAgICBvbGRUYWJsZVtpXS5+VmFsdWVUeXBlKCk7CisgICAgICAgICAgICBp
ZiAoc3RkOjphZGRyZXNzb2Yob2xkVGFibGVbaV0pID09IGVudHJ5KSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFuZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgbmV3RW50cnkgPSByZWluc2Vy
dGVkRW50cnk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX2RlbGV0ZWRD
b3VudCA9IDA7CisKKyAgICAgICAgZnJlZShvbGRUYWJsZSk7CisKKyAgICAgICAgaW50ZXJuYWxD
aGVja1RhYmxlQ29uc2lzdGVuY3koKTsKKyAgICAgICAgcmV0dXJuIG5ld0VudHJ5OworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNsZWFyKCkKKyAgICB7CisgICAgICAg
IGludmFsaWRhdGVJdGVyYXRvcnMoKTsKKyAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6
ZSk7CisgICAgICAgIG1fdGFibGUgPSAwOworICAgICAgICBtX3RhYmxlU2l6ZSA9IDA7CisgICAg
ICAgIG1fdGFibGVTaXplTWFzayA9IDA7CisgICAgICAgIG1fa2V5Q291bnQgPSAwOworICAgICAg
ICBtX2RlbGV0ZWRDb3VudCA9IDA7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Okhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQorICAgICAgICA6IG1fdGFibGUobnVs
bHB0cikKKyAgICAgICAgLCBtX3RhYmxlU2l6ZSgwKQorICAgICAgICAsIG1fdGFibGVTaXplTWFz
aygwKQorICAgICAgICAsIG1fa2V5Q291bnQoMCkKKyAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgw
KQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgLCBtX2l0ZXJhdG9ycyhu
dWxscHRyKQorICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorI2Vu
ZGlmCisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgICwgbV9zdGF0
cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisjZW5kaWYKKyAgICB7
CisgICAgICAgIHVuc2lnbmVkIG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CisgICAgICAg
IGlmICghb3RoZXJLZXlDb3VudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNp
Z25lZCBiZXN0VGFibGVTaXplID0gV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKG90aGVyS2V5Q291
bnQpICogMjsKKworICAgICAgICAvLyBXaXRoIG1heExvYWQgYXQgMS8yIGFuZCBtaW5Mb2FkIGF0
IDEvNiwgb3VyIGF2ZXJhZ2UgbG9hZCBpcyAyLzYuCisgICAgICAgIC8vIElmIHdlIGFyZSBnZXR0
aW5nIGhhbGZ3YXkgYmV0d2VlbiAyLzYgYW5kIDEvMiAocGFzdCA1LzEyKSwgd2UgZG91YmxlIHRo
ZSBzaXplIHRvIGF2b2lkIGJlaW5nIHRvbyBjbG9zZSB0bworICAgICAgICAvLyBsb2FkTWF4IGFu
ZCBicmluZyB0aGUgcmF0aW8gY2xvc2UgdG8gMi82LiBUaGlzIGdpdmUgdXMgYSBsb2FkIGluIHRo
ZSBib3VuZHMgWzMvMTIsIDUvMTIpLgorICAgICAgICBib29sIGFib3ZlVGhyZWVRdWFydGVyTG9h
ZCA9IG90aGVyS2V5Q291bnQgKiAxMiA+PSBiZXN0VGFibGVTaXplICogNTsKKyAgICAgICAgaWYg
KGFib3ZlVGhyZWVRdWFydGVyTG9hZCkKKyAgICAgICAgICAgIGJlc3RUYWJsZVNpemUgKj0gMjsK
KworICAgICAgICB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0gS2V5VHJhaXRzOjptaW5pbXVt
VGFibGVTaXplOworICAgICAgICBtX3RhYmxlU2l6ZSA9IHN0ZDo6bWF4PHVuc2lnbmVkPihiZXN0
VGFibGVTaXplLCBtaW5pbXVtVGFibGVTaXplKTsKKyAgICAgICAgbV90YWJsZVNpemVNYXNrID0g
bV90YWJsZVNpemUgLSAxOworICAgICAgICBtX2tleUNvdW50ID0gb3RoZXJLZXlDb3VudDsKKyAg
ICAgICAgbV90YWJsZSA9IGFsbG9jYXRlVGFibGUobV90YWJsZVNpemUpOworCisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA6IG90aGVyKQorICAgICAgICAgICAgYWRkVW5pcXVl
Rm9ySW5pdGlhbGl6YXRpb248SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRy
YWN0KG90aGVyVmFsdWUpLCBvdGhlclZhbHVlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHZv
aWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+Ojpzd2FwKEhhc2hUYWJsZSYgb3RoZXIpCisgICAgeworICAgICAgICBpbnZh
bGlkYXRlSXRlcmF0b3JzKCk7CisgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsK
KworICAgICAgICBzdGQ6OnN3YXAobV90YWJsZSwgb3RoZXIubV90YWJsZSk7CisgICAgICAgIHN0
ZDo6c3dhcChtX3RhYmxlU2l6ZSwgb3RoZXIubV90YWJsZVNpemUpOworICAgICAgICBzdGQ6OnN3
YXAobV90YWJsZVNpemVNYXNrLCBvdGhlci5tX3RhYmxlU2l6ZU1hc2spOworICAgICAgICBzdGQ6
OnN3YXAobV9rZXlDb3VudCwgb3RoZXIubV9rZXlDb3VudCk7CisgICAgICAgIHN0ZDo6c3dhcCht
X2RlbGV0ZWRDb3VudCwgb3RoZXIubV9kZWxldGVkQ291bnQpOworCisjaWYgRFVNUF9IQVNIVEFC
TEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgIG1fc3RhdHMuc3dhcChvdGhlci5tX3N0YXRzKTsK
KyNlbmRpZgorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJhdG9y
PShjb25zdCBIYXNoVGFibGUmIG90aGVyKSAtPiBIYXNoVGFibGUmCisgICAgeworICAgICAgICBI
YXNoVGFibGUgdG1wKG90aGVyKTsKKyAgICAgICAgc3dhcCh0bXApOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFi
bGUoSGFzaFRhYmxlJiYgb3RoZXIpCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAg
ICAgICA6IG1faXRlcmF0b3JzKG51bGxwdHIpCisgICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2Vf
dW5pcXVlPExvY2s+KCkpCisjZW5kaWYKKyAgICB7CisgICAgICAgIG90aGVyLmludmFsaWRhdGVJ
dGVyYXRvcnMoKTsKKworICAgICAgICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsKKyAgICAgICAg
bV90YWJsZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsKKyAgICAgICAgbV90YWJsZVNpemVNYXNr
ID0gb3RoZXIubV90YWJsZVNpemVNYXNrOworICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9r
ZXlDb3VudDsKKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5tX2RlbGV0ZWRDb3VudDsK
KworICAgICAgICBvdGhlci5tX3RhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgb3RoZXIubV90YWJs
ZVNpemUgPSAwOworICAgICAgICBvdGhlci5tX3RhYmxlU2l6ZU1hc2sgPSAwOworICAgICAgICBv
dGhlci5tX2tleUNvdW50ID0gMDsKKyAgICAgICAgb3RoZXIubV9kZWxldGVkQ291bnQgPSAwOwor
CisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisgICAgICAgIG1fc3RhdHMgPSBX
VEZNb3ZlKG90aGVyLm1fc3RhdHMpOworICAgICAgICBvdGhlci5tX3N0YXRzID0gbnVsbHB0cjsK
KyNlbmRpZgorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpv
cGVyYXRvcj0oSGFzaFRhYmxlJiYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKKyAgICB7CisgICAgICAg
IEhhc2hUYWJsZSB0ZW1wID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIHN3YXAodGVtcCk7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBjb25z
dAorICAgIHsKKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpOworICAg
ICAgICBBU1NFUlQoIW1fdGFibGUgfHwgIXNob3VsZEV4cGFuZCgpKTsKKyAgICAgICAgQVNTRVJU
KCFzaG91bGRTaHJpbmsoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoIW1fdGFibGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdW5zaWduZWQg
Y291bnQgPSAwOworICAgICAgICB1bnNpZ25lZCBkZWxldGVkQ291bnQgPSAwOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbV90YWJsZVNpemU7ICsraikgeworICAgICAgICAgICAg
VmFsdWVUeXBlKiBlbnRyeSA9IG1fdGFibGUgKyBqOworICAgICAgICAgICAgaWYgKGlzRW1wdHlC
dWNrZXQoKmVudHJ5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
aWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7CisgICAgICAgICAgICAgICAgKytkZWxldGVk
Q291bnQ7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ID0gZmluZChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5
KSk7CisgICAgICAgICAgICBBU1NFUlQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7CisgICAgICAg
ICAgICArK2NvdW50OworCisgICAgICAgICAgICBWYWx1ZUNoZWNrPEtleT46OmNoZWNrQ29uc2lz
dGVuY3koaXQtPmtleSk7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoY291bnQgPT0gbV9r
ZXlDb3VudCk7CisgICAgICAgIEFTU0VSVChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVkQ291bnQp
OworICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPj0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVT
aXplKTsKKyAgICAgICAgQVNTRVJUKG1fdGFibGVTaXplTWFzayk7CisgICAgICAgIEFTU0VSVCht
X3RhYmxlU2l6ZSA9PSBtX3RhYmxlU2l6ZU1hc2sgKyAxKTsKKyAgICB9CisKKyNlbmRpZiAvLyBB
U1NFUlRfRElTQUJMRUQKKworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmludmFsaWRhdGVJdGVyYXRvcnMoKQorICAgIHsKKyAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soKm1fbXV0ZXgpOworICAgICAgICBjb25z
dF9pdGVyYXRvciogbmV4dDsKKyAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciogcCA9IG1faXRl
cmF0b3JzOyBwOyBwID0gbmV4dCkgeworICAgICAgICAgICAgbmV4dCA9IHAtPm1fbmV4dDsKKyAg
ICAgICAgICAgIHAtPm1fdGFibGUgPSAwOworICAgICAgICAgICAgcC0+bV9uZXh0ID0gMDsKKyAg
ICAgICAgICAgIHAtPm1fcHJldmlvdXMgPSAwOworICAgICAgICB9CisgICAgICAgIG1faXRlcmF0
b3JzID0gMDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3Qg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+KiB0YWJsZSwKKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpCisg
ICAgeworICAgICAgICBpdC0+bV90YWJsZSA9IHRhYmxlOworICAgICAgICBpdC0+bV9wcmV2aW91
cyA9IDA7CisKKyAgICAgICAgLy8gSW5zZXJ0IGl0ZXJhdG9yIGF0IGhlYWQgb2YgZG91Ymx5LWxp
bmtlZCBsaXN0IG9mIGl0ZXJhdG9ycy4KKyAgICAgICAgaWYgKCF0YWJsZSkgeworICAgICAgICAg
ICAgaXQtPm1fbmV4dCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jaygqdGFibGUtPm1fbXV0ZXgpOworICAgICAgICAgICAgQVNTRVJU
KHRhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7CisgICAgICAgICAgICBpdC0+bV9uZXh0ID0gdGFi
bGUtPm1faXRlcmF0b3JzOworICAgICAgICAgICAgdGFibGUtPm1faXRlcmF0b3JzID0gaXQ7Cisg
ICAgICAgICAgICBpZiAoaXQtPm1fbmV4dCkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaXQt
Pm1fbmV4dC0+bV9wcmV2aW91cyk7CisgICAgICAgICAgICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2
aW91cyA9IGl0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
KyAgICB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQorICAg
IHsKKyAgICAgICAgLy8gRGVsZXRlIGl0ZXJhdG9yIGZyb20gZG91Ymx5LWxpbmtlZCBsaXN0IG9m
IGl0ZXJhdG9ycy4KKyAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgeworICAgICAgICAgICAgQVNT
RVJUKCFpdC0+bV9uZXh0KTsKKyAgICAgICAgICAgIEFTU0VSVCghaXQtPm1fcHJldmlvdXMpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2so
Kml0LT5tX3RhYmxlLT5tX211dGV4KTsKKyAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGl0LT5tX25leHQtPm1fcHJldmlvdXMgPT0gaXQpOworICAg
ICAgICAgICAgICAgIGl0LT5tX25leHQtPm1fcHJldmlvdXMgPSBpdC0+bV9wcmV2aW91czsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpdC0+bV9wcmV2aW91cykgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChpdC0+bV90YWJsZS0+bV9pdGVyYXRvcnMgIT0gaXQpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0KTsKKyAgICAgICAgICAg
ICAgICBpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID0gaXQtPm1fbmV4dDsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9
PSBpdCk7CisgICAgICAgICAgICAgICAgaXQtPm1fdGFibGUtPm1faXRlcmF0b3JzID0gaXQtPm1f
bmV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGl0LT5tX3RhYmxlID0g
MDsKKyAgICAgICAgaXQtPm1fbmV4dCA9IDA7CisgICAgICAgIGl0LT5tX3ByZXZpb3VzID0gMDsK
KyAgICB9CisKKyNlbmRpZiAvLyBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisKKyAgICAvLyBp
dGVyYXRvciBhZGFwdGVycworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwg
dHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIg
OiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWYWx1ZVR5
cGUsIHN0ZDo6cHRyZGlmZl90LCBjb25zdCBWYWx1ZVR5cGUqLCBjb25zdCBWYWx1ZVR5cGUmPiB7
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyKCkge30KKyAgICAgICAgSGFz
aFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6
Y29uc3RfaXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9CisKKyAgICAgICAgY29uc3Qg
VmFsdWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoY29uc3QgVmFsdWVUeXBlKiltX2ltcGwu
Z2V0KCk7IH0KKyAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiAqZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29u
c3QgeyByZXR1cm4gZ2V0KCk7IH0KKworICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh
cHRlciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQorICAgICAgICAv
LyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAorCisgICAgICAgIHR5cGVuYW1lIEhh
c2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yIG1faW1wbDsKKyAgICB9OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgSGFz
aFRhYmxlSXRlcmF0b3JBZGFwdGVyIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJk
X2l0ZXJhdG9yX3RhZywgVmFsdWVUeXBlLCBzdGQ6OnB0cmRpZmZfdCwgVmFsdWVUeXBlKiwgVmFs
dWVUeXBlJj4geworICAgICAgICBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXIoKSB7fQorICAgICAg
ICBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXIoY29uc3QgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6
aXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9CisKKyAgICAgICAgVmFsdWVUeXBlKiBn
ZXQoKSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2ltcGwuZ2V0KCk7IH0KKyAgICAgICAg
VmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICAgICAg
VmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKworICAgICAg
ICBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXImIG9wZXJhdG9yKysoKSB7ICsrbV9pbXBsOyByZXR1
cm4gKnRoaXM7IH0KKyAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQK
KworICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFi
bGVUeXBlLCBWYWx1ZVR5cGU+KCkgeworICAgICAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlw
ZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1faW1wbDsKKyAgICAgICAgICAgIHJldHVybiBpOworICAg
ICAgICB9CisKKyAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBs
OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8
VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBiKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3Qg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hU
YWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFw
dGVyPFQsIFU+JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBs
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4m
IGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsKKyAgICB9CisKKyAgICAvLyBBbGwgNCBj
b21iaW5hdGlvbnMgb2YgPT0sICE9IGFuZCBDb25zdCxub24gY29uc3QuCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJ
dGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5tX2ltcGwg
PT0gYi5tX2ltcGw7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4m
IGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3Qg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hU
YWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5t
X2ltcGw7CisgICAgfQorCisgICAgc3RydWN0IElkZW50aXR5RXh0cmFjdG9yOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHM+IGNsYXNzIEhhc2hTZXQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
ZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFz
aCwKKyAgICAgICAgdHlwZW5hbWUgVHJhaXRzQXJnID0gSGFzaFRyYWl0czxWYWx1ZUFyZz4+IGNs
YXNzIEhhc2hTZXQgZmluYWwgeworICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgSGFzaEFy
ZyBIYXNoRnVuY3Rpb25zOworICAgICAgICB0eXBlZGVmIFRyYWl0c0FyZyBWYWx1ZVRyYWl0czsK
KyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6VGFrZVR5cGUgVGFrZVR5cGU7
CisKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRy
YWl0VHlwZSBWYWx1ZVR5cGU7CisKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hU
YWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwgSWRlbnRpdHlFeHRyYWN0b3IsCisgICAgICAgICAg
ICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7
CisKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFk
YXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKKyAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+
IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6
OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CisKKyAgICAgICAgSGFzaFNldCgpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIEhhc2hTZXQoc3RkOjppbml0aWFsaXplcl9saXN0PFZhbHVlQXJn
PiBpbml0aWFsaXplckxpc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgdmFsdWUgOiBpbml0aWFsaXplckxpc3QpCisgICAgICAgICAgICAgICAgYWRkKHZhbHVlKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7CisKKyAgICAgICAgdW5z
aWduZWQgc2l6ZSgpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0Owor
ICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgICAgICBpdGVyYXRvciBiZWdpbigp
IGNvbnN0OworICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdDsKKworICAgICAgICBpdGVyYXRv
ciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OworICAgICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IFZhbHVlVHlwZSYpIGNvbnN0OworCisgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9u
IG9mIGZpbmQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3QgYnkgaGFzaGluZyBhbmQgY29tcGFyaW5n
CisgICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBlLCB0byBhdm9pZCB0aGUgY29zdCBvZiB0
eXBlIGNvbnZlcnNpb24uIEhhc2hUcmFuc2xhdG9yCisgICAgICAgIC8vIG11c3QgaGF2ZSB0aGUg
Zm9sbG93aW5nIGZ1bmN0aW9uIG1lbWJlcnM6CisgICAgICAgIC8vICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgVCYpOworICAgICAgICAvLyAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFZh
bHVlVHlwZSYsIGNvbnN0IFQmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3IsIHR5cGVuYW1lIFQ+IGl0ZXJhdG9yIGZpbmQoY29uc3QgVCYpIGNvbnN0OworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gYm9vbCBjb250
YWlucyhjb25zdCBUJikgY29uc3Q7CisKKyAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpbmNs
dWRlcyBib3RoIGFuIGl0ZXJhdG9yIHRvIHRoZSBhZGRlZCB2YWx1ZSdzIGxvY2F0aW9uLAorICAg
ICAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sIHRoYXQgaW5kaWNhdGVzIGlmIGl0IGlzIGEg
bmV3IG9yIGV4aXN0aW5nIGVudHJ5IGluIHRoZSBzZXQuCisgICAgICAgIEFkZFJlc3VsdCBhZGQo
Y29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYpOwor
ICAgICAgICAKKyAgICAgICAgdm9pZCBhZGRWb2lkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAg
ICB2b2lkIGFkZFZvaWQoVmFsdWVUeXBlJiYpOworCisgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2
ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21w
YXJpbmcKKyAgICAgICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0
IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKKyAgICAgICAgLy8g
aW4gdGhlIHRhYmxlLiBIYXNoVHJhbnNsYXRvciBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZyBmdW5j
dGlvbiBtZW1iZXJzOgorICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQm
KTsKKyAgICAgICAgLy8gICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1ZVR5cGUmLCBjb25z
dCBUJik7CisgICAgICAgIC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBU
JiwgdW5zaWduZWQgaGFzaENvZGUpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVD4gQWRkUmVzdWx0IGFkZChjb25zdCBUJik7CisgICAgICAgIAor
ICAgICAgICAvLyBBdHRlbXB0cyB0byBhZGQgYSBsaXN0IG9mIHRoaW5ncyB0byB0aGUgc2V0LiBS
ZXR1cm5zIHRydWUgaWYgYW55IG9mCisgICAgICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0
LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQgaXMgdW5jaGFuZ2VkLgorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CisgICAgICAgIGJvb2wgYWRkKEl0ZXJhdG9yVHlwZSBi
ZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCk7CisKKyAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgVmFs
dWVUeXBlJik7CisgICAgICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICAgICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9y
Jik7CisgICAgICAgIHZvaWQgY2xlYXIoKTsKKworICAgICAgICBUYWtlVHlwZSB0YWtlKGNvbnN0
IFZhbHVlVHlwZSYpOworICAgICAgICBUYWtlVHlwZSB0YWtlKGl0ZXJhdG9yKTsKKyAgICAgICAg
VGFrZVR5cGUgdGFrZUFueSgpOworCisgICAgICAgIC8vIE92ZXJsb2FkcyBmb3Igc21hcnQgcG9p
bnRlciB2YWx1ZXMgdGhhdCB0YWtlIHRoZSByYXcgcG9pbnRlciB0eXBlIGFzIHRoZSBwYXJhbWV0
ZXIuCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUgZmluZCh0
eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpIGNvbnN0OworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0
UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgY29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVy
PFY+OjpQdHJUeXBlKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVl
VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+
Ojp0eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgVGFrZVR5cGU+Ojp0eXBlIHRha2UodHlwZW5hbWUgR2V0
UHRySGVscGVyPFY+OjpQdHJUeXBlKTsKKworICAgICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkVmFs
dWUoY29uc3QgVmFsdWVUeXBlJik7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJD
b2xsZWN0aW9uPgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3RoZXJDb2xsZWN0aW9u
JikgY29uc3Q7CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxl
Y3Rpb24+CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPdGhlckNvbGxlY3Rpb24mKSBj
b25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOworICAg
IH07CisKKyAgICBzdHJ1Y3QgSWRlbnRpdHlFeHRyYWN0b3IgeworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCYgZXh0cmFjdChjb25zdCBUJiB0KSB7IHJldHVybiB0
OyB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zPgorICAgIHN0cnVjdCBIYXNoU2V0VHJhbnNsYXRvciB7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkg
eyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9CisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0
IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRy
YW5zbGF0ZShUJiBsb2NhdGlvbiwgVSYmLCBWJiYgdmFsdWUpCisgICAgICAgIHsgCisgICAgICAg
ICAgICBWYWx1ZVRyYWl0czo6YXNzaWduVG9FbXB0eShsb2NhdGlvbiwgc3RkOjpmb3J3YXJkPFY+
KHZhbHVlKSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJh
bnNsYXRvcj4KKyAgICBzdHJ1Y3QgSGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyIHsKKyAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7
IHJldHVybiBUcmFuc2xhdG9yOjpoYXNoKGtleSk7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYg
YikgeyByZXR1cm4gVHJhbnNsYXRvcjo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9u
LCBjb25zdCBVJiBrZXksIGNvbnN0IFUmLCB1bnNpZ25lZCBoYXNoQ29kZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgVHJhbnNsYXRvcjo6dHJhbnNsYXRlKGxvY2F0aW9uLCBrZXksIGhhc2hDb2Rl
KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OnN3YXAo
SGFzaFNldCYgb3RoZXIpCisgICAgeworICAgICAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwp
OyAKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgorICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpzaXplKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB1bnNp
Z25lZCBIYXNoU2V0PFQsIFUsIFY+OjpjYXBhY2l0eSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pbXBsLmNhcGFjaXR5KCk7IAorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBV
LCBWPjo6aXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbXBsLmlzRW1w
dHkoKTsgCisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjpiZWdpbigpIGNvbnN0
IC0+IGl0ZXJhdG9yCisgICAgeworICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7IAorICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Cisg
ICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6ZW5kKCkgY29uc3QgLT4gaXRlcmF0b3IK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7IAorICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBp
dGVyYXRvcgorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1wbC5maW5kKHZhbHVlKTsgCisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KKyAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1
ZSk7IAorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3IsIHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0
b3IKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoU2V0VHJh
bnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4K
KyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpj
b250YWlucyhjb25zdCBUJiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lt
cGwudGVtcGxhdGUgY29udGFpbnM8SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xh
dG9yPj4odmFsdWUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6YWRkKGNv
bnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faW1wbC5hZGQodmFsdWUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6
YWRkKFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2ltcGwuYWRkKFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8
VCwgVSwgVj46OmFkZFZvaWQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IG1faW1wbC5hZGQodmFsdWUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6
YWRkVm9pZChWYWx1ZVR5cGUmJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1faW1wbC5hZGQoV1RG
TW92ZSh2YWx1ZSkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRS
ZXN1bHQKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hh
c2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlLCB2
YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CisgICAgaW5saW5l
IGJvb2wgSGFzaFNldDxULCBVLCBWPjo6YWRkKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JU
eXBlIGVuZCkKKyAgICB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBm
b3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IGFkZCgqaXRlcikuaXNOZXdFbnRyeTsKKyAgICAgICAgcmV0dXJu
IGNoYW5nZWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgVj4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRl
cmF0b3IgaXQpCisgICAgeworICAgICAgICBpZiAoaXQubV9pbXBsID09IG1faW1wbC5lbmQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9pbXBsLmludGVybmFsQ2hlY2tU
YWJsZUNvbnNpc3RlbmN5KCk7CisgICAgICAgIG1faW1wbC5yZW1vdmVXaXRob3V0RW50cnlDb25z
aXN0ZW5jeUNoZWNrKGl0Lm1faW1wbCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5s
aW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6
cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIG1faW1wbC5y
ZW1vdmVJZihmdW5jdG9yKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OmNs
ZWFyKCkKKyAgICB7CisgICAgICAgIG1faW1wbC5jbGVhcigpOyAKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlubGluZSBhdXRv
IEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoaXRlcmF0b3IgaXQpIC0+IFRha2VUeXBlCisgICAgewor
ICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gVmFsdWVUcmFpdHM6
OnRha2UoVmFsdWVUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CisKKyAgICAgICAgYXV0byByZXN1bHQg
PSBWYWx1ZVRyYWl0czo6dGFrZShXVEZNb3ZlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlJj4oKml0KSkp
OworICAgICAgICByZW1vdmUoaXQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgaW5s
aW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6dGFrZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAt
PiBUYWtlVHlwZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRha2UoZmluZCh2YWx1ZSkpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Cisg
ICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6dGFrZUFueSgpIC0+IFRha2VUeXBlCisg
ICAgeworICAgICAgICByZXR1cm4gdGFrZShiZWdpbigpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1
ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46
OlB0clR5cGUgdmFsdWUpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQ
dHI8Vj46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lt
cGwudGVtcGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvcjxUcmFpdHMsIEhhc2hGdW5jdGlvbnM+
Pih2YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
PgorICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3Qg
LT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0
eXBlCisgICAgeworICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEhhc2hT
ZXRUcmFuc2xhdG9yPFRyYWl0cywgSGFzaEZ1bmN0aW9ucz4+KHZhbHVlKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFz
aFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCisgICAgeworICAgICAgICByZXR1cm4gcmVt
b3ZlKGZpbmQodmFsdWUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFY+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUpIC0+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBUYWtlVHlwZT46
OnR5cGUKKyAgICB7CisgICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFsdWUpKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgorICAgIGlu
bGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKEhhc2hGdW5j
dGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkKSB7CisgICAgICAgICAgICBpZiAo
dmFsdWUgPT0gVmFsdWVUcmFpdHM6OmVtcHR5VmFsdWUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNIYXNoVHJhaXRz
RW1wdHlWYWx1ZTxWYWx1ZVRyYWl0cz4odmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIFc+CisgICAgaW5saW5lIHZvaWQgY29weVRvVmVj
dG9yKGNvbnN0IEMmIGNvbGxlY3Rpb24sIFcmIHZlY3RvcikKKyAgICB7CisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CisgICAgICAgIAorICAgICAg
ICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsKKyAgICAgICAgCisgICAgICAgIGl0
ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigpOworICAgICAgICBpdGVyYXRvciBlbmQgPSBj
b2xsZWN0aW9uLmVuZCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7
ICsraXQsICsraSkKKyAgICAgICAgICAgIHZlY3RvcltpXSA9ICppdDsKKyAgICB9ICAKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgorICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwg
VSwgVj46Om9wZXJhdG9yPT0oY29uc3QgT3RoZXJDb2xsZWN0aW9uJiBvdGhlckNvbGxlY3Rpb24p
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoc2l6ZSgpICE9IG90aGVyQ29sbGVjdGlvbi5zaXpl
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
b3RoZXIgOiBvdGhlckNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghY29udGFpbnMob3Ro
ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+
CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6b3BlcmF0b3IhPShjb25zdCBPdGhl
ckNvbGxlY3Rpb24mIG90aGVyQ29sbGVjdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyQ29sbGVjdGlvbik7CisgICAgfQorCit9CisKK3VzaW5nIFdURjo6
RGVmYXVsdEhhc2g7Cit1c2luZyBXVEY6Okhhc2hTZXQ7Cit1c2luZyBXVEY6OmJpdHdpc2VfY2Fz
dDsKKworc3RhdGljIGRvdWJsZSBjdXJyZW50VGltZSgpCit7CisgICAgdGltZXZhbCByZXN1bHQ7
CisgICAgZ2V0dGltZW9mZGF5KCZyZXN1bHQsIG51bGxwdHIpOworICAgIHJldHVybiByZXN1bHQu
dHZfc2VjICsgcmVzdWx0LnR2X3VzZWMgLyAxMDAwLiAvIDEwMDAuOworfQorCituYW1lc3BhY2Ug
SlNDIHsKKyAgICBuYW1lc3BhY2UgREZHIHsKKyAgICAgICAgc3RydWN0IE5vZGU7CisgICAgfQor
fQorCit2b2lkIGJlbmNobWFyaygpCit7CisgICAgYXV0byogXzQyODEgPSBuZXcgSGFzaFNldDw6
OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI4MiA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MjgzID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRG
Rzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQyODQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpO
b2RlKj4oKTsKKyAgICBhdXRvKiBfNDI4NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIGF1dG8qIF80Mjg2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7
CisgICAgYXV0byogXzQyODcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAg
ICBhdXRvKiBfNDI4OCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1
dG8qIF80Mjg5ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byog
XzQyOTAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI5
MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MjkyID0g
bmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQyOTMgPSBuZXcg
SGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI5NCA9IG5ldyBIYXNo
U2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80Mjk1ID0gbmV3IEhhc2hTZXQ8
OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQyOTYgPSBuZXcgSGFzaFNldDw6OkpT
Qzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDI5NyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80Mjk4ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6
Tm9kZSo+KCk7CisgICAgYXV0byogXzQyOTkgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2Rl
Kj4oKTsKKyAgICBhdXRvKiBfNDMwMCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIGF1dG8qIF80MzAxID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7Cisg
ICAgYXV0byogXzQzMDIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBh
dXRvKiBfNDMwMyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8q
IF80MzA0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQz
MDUgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMwNiA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MzA3ID0gbmV3
IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQzMDggPSBuZXcgSGFz
aFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMwOSA9IG5ldyBIYXNoU2V0
PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80MzEwID0gbmV3IEhhc2hTZXQ8OjpK
U0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQzMTEgPSBuZXcgSGFzaFNldDw6OkpTQzo6
REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMxMiA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGF1dG8qIF80MzEzID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9k
ZSo+KCk7CisgICAgYXV0byogXzQzMTQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICBhdXRvKiBfNDMxNSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIGF1dG8qIF80MzE2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAg
YXV0byogXzQzMTcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRv
KiBfNDMxOCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80
MzE5ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgKl80MjgxID0gV1RG
TW92ZSgqXzQzMTkpOworICAgIGRlbGV0ZSBfNDMxOTsKKyAgICBhdXRvKiBfNDMyMCA9IG5ldyBI
YXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzIwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAg
IF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEw
ZTBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzIwLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkpOwor
ICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTE2MDhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzIw
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkp
OworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTE3NzBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzIwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80
MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhs
dSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTkyYjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzIwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAg
IF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBk
MjBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzIwLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiYjhsdSkpOworICAgIF80MzIwLT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAg
XzQzMjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYmI4bHUp
KTsKKyAgICBfNDMyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTBkMjBsdSkpOworICAgICpfNDI4MiA9IFdURk1vdmUoKl80MzIwKTsKKyAgICBkZWxldGUgXzQz
MjA7CisgICAgYXV0byogXzQzMjEgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmU5YzkwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmU5MWM4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYTUwbHUpKTsKKyAgICBfNDMy
MS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUp
KTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmU0MzgwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmU2MDkwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNjA4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1MDI4bHUpKTsKKyAgICBf
NDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYjQw
bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU0ZTQ4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNzcwbHUpKTsKKyAgICBfNDMyMS0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1YjY4bHUpKTsKKyAg
ICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3
MDA4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUxZmUwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MGQ4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MmI4bHUpKTsKKyAgICBfNDMyMS0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYWI4bHUpKTsK
KyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmU3ZjA4bHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmU5MDYwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyMS0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU4ZjcwbHUpKTsKKyAgICBfNDMy
MS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUp
KTsKKyAgICBfNDMyMS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNmYWM4bHUpKTsKKyAgICBfNDMyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzIxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzZmFjOGx1KSk7CisgICAgXzQzMjEtPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICAqXzQyODMgPSBXVEZN
b3ZlKCpfNDMyMSk7CisgICAgZGVsZXRlIF80MzIxOworICAgIGF1dG8qIF80MzIyID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMjItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAg
XzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBl
MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMjItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7Cisg
ICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTJiOGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMjIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7
CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZmI0MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQz
MjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1
KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMjItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAg
XzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2Yw
OGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMjItPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMi0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI4
NCA9IFdURk1vdmUoKl80MzIyKTsKKyAgICBkZWxldGUgXzQzMjI7CisgICAgYXV0byogXzQzMjMg
PSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMyMy0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5YzkwbHUpKTsKKyAgICBfNDMy
My0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYzMwbHUp
KTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNmYjQwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNjA4bHUpKTsKKyAgICBf
NDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNzcw
bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUxZmUwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYWI4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMyMy0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAg
ICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUy
ZGYwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU0NTYwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3MDA4bHUpKTsKKyAgICBfNDMyMy0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1YjY4bHUpKTsK
KyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNmYTUwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmU0ZTQ4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MDYwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2MDkwbHUpKTsKKyAgICBfNDMy
My0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3ZjA4bHUp
KTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmU5MmI4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmU5MWM4bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU4ZjcwbHUpKTsKKyAgICBfNDMyMy0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MGQ4bHUpKTsKKyAgICBf
NDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1MDI4
bHUpKTsKKyAgICBfNDMyMy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmU0MzgwbHUpKTsKKyAgICBfNDMyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzIzLT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDU2MGx1KSk7CisgICAgXzQzMjMtPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyMy0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80
MzIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7
CisgICAgXzQzMjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUy
ZGYwbHUpKTsKKyAgICBfNDMyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyMy0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzIzLT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80
Mjg1ID0gV1RGTW92ZSgqXzQzMjMpOworICAgIGRlbGV0ZSBfNDMyMzsKKyAgICBhdXRvKiBfNDMy
NCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzI0LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80
MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBs
dSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI0LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAg
IF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFh
YjhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzI0LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkpOwor
ICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTkxYzhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80MzI0
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkp
OworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTdmMDhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI0LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80
MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBs
dSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTQzODBsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI0LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAg
IF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUw
MjhsdSkpOworICAgIF80MzI0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMjQtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU0MGIwbHUpKTsKKyAgICBfNDMyNC0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI0LT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAg
XzQzMjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYTUwbHUp
KTsKKyAgICBfNDMyNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTJkZjBsdSkpOworICAgIF80MzI0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMyNC0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI0LT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMjQtPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICAq
XzQyODYgPSBXVEZNb3ZlKCpfNDMyNCk7CisgICAgZGVsZXRlIF80MzI0OworICAgIGF1dG8qIF80
MzI1ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQzMjUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAg
XzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBl
MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMjUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7Cisg
ICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTYwOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMjUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7
CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZmI0MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQz
MjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1
KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMjUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAg
XzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRm
MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlODYxMGx1KSk7CisgICAgXzQzMjUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7Cisg
ICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NzAwOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMjUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMjUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7
CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU4
NjEwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzI1LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQz
MjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsK
KyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUw
YTBsdSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUzMWIwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMjUtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMy
NS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOwor
ICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRm
MGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmUzMWIwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMjUtPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYzMwbHUpKTsKKyAgICBfNDMyNS0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI4
NyA9IFdURk1vdmUoKl80MzI1KTsKKyAgICBkZWxldGUgXzQzMjU7CisgICAgYXV0byogXzQzMjYg
PSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMyNi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5YzkwbHUpKTsKKyAgICBfNDMy
Ni0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUp
KTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNmYTUwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MmI4bHUpKTsKKyAgICBf
NDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNjA4
bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmU1MGEwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU4ZjcwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmYzMwbHUpKTsKKyAgICBfNDMyNi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU0M2Y4bHUpKTsKKyAg
ICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNm
YjQwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MWM4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxNzcwbHUpKTsKKyAgICBfNDMyNi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxZmUwbHUpKTsK
KyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmU5MGQ4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUxYWI4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU5MDYwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMy
Ni0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUp
KTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmU0MzgwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3ZjA4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1MDI4bHUpKTsKKyAgICBf
NDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU3MDA4
bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmU0ZTQ4bHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU2MDkwbHUpKTsKKyAgICBfNDMyNi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU1YjY4bHUpKTsKKyAgICBfNDMyNi0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80
MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7
CisgICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2
NDUwbHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI2LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQz
MjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsK
KyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMx
YjBsdSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjYtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMy
Ni0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOwor
ICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRm
MGx1KSk7CisgICAgXzQzMjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80Mjg4ID0gV1RGTW92ZSgqXzQz
MjYpOworICAgIGRlbGV0ZSBfNDMyNjsKKyAgICBhdXRvKiBfNDMyNyA9IG5ldyBIYXNoU2V0PDo6
SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzI3LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOwor
ICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTEzYjBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI3
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkp
OworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTAyZDBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI3LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80
MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhs
dSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTkyYjhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI3LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAg
IF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFj
MjBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTY0NTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI3LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOwor
ICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTUwYTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzI3
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkp
OworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTcwMDhsdSkpOworICAgIF80MzI3LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjctPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyNy0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80
MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7
CisgICAgXzQzMjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2
NDUwbHUpKTsKKyAgICBfNDMyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyNy0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzI3LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQz
MjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsK
KyAgICBfNDMyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEw
ZTBsdSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzI3LT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMjctPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMy
Ny0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOwor
ICAgIF80MzI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQy
MGx1KSk7CisgICAgKl80Mjg5ID0gV1RGTW92ZSgqXzQzMjcpOworICAgIGRlbGV0ZSBfNDMyNzsK
KyAgICBhdXRvKiBfNDMyOCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAg
IF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTlj
OTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80MzI4LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOwor
ICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTFjMjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzI4
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkp
OworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTkxYzhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80
MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhs
dSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzI4LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAg
IF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTY0
NTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzI4LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOwor
ICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTRlNDhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzI4LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzI4
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7Cisg
ICAgXzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUw
bHUpKTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTFjMjBsdSkpOworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI4LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMjgt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAg
ICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBs
dSkpOworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNGU0OGx1KSk7CisgICAgXzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMjgtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMyOC0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAg
IF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1
KSk7CisgICAgXzQzMjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmUxMGUwbHUpKTsKKyAgICBfNDMyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80MjkwID0gV1RGTW92ZSgqXzQzMjgp
OworICAgIGRlbGV0ZSBfNDMyODsKKyAgICBhdXRvKiBfNDMyOSA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzI5LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAg
IF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2
MDhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzI5LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOwor
ICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
M2ZiNDBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzI5
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkp
OworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTkwZDhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzI5LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80
MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTJkZjBs
dSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTQzODBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTY0NTBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzI5LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAg
IF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcw
MDhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzI5LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzI5LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkpOwor
ICAgIF80MzI5LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTViNjhsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMjktPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBf
NDMyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkp
OworICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NTBhMGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMyOS0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80
MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7
CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUy
ZGYwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMyOS0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzI5LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80
MjkxID0gV1RGTW92ZSgqXzQzMjkpOworICAgIGRlbGV0ZSBfNDMyOTsKKyAgICBhdXRvKiBfNDMz
MCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzMwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80
MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBs
dSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzMwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAg
IF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3
NzBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzMwLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOwor
ICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTJkZjBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTY0NTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzZjhsdSkpOworICAgIF80MzMw
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkp
OworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTkwZDhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzMwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80
MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBs
dSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTcwMDhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzMwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAg
IF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTVi
NjhsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTYwOTBsdSkpOworICAgIF80MzMwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzMwLT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMzAtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMz
MC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFjMjBsdSkpOwor
ICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAw
OGx1KSk7CisgICAgXzQzMzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmU2NDUwbHUpKTsKKyAgICBfNDMzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMzAtPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxYzIwbHUpKTsKKyAgICBfNDMzMC0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzMw
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7Cisg
ICAgXzQzMzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIw
bHUpKTsKKyAgICBfNDMzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTEwZTBsdSkpOworICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMzMC0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzMwLT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMzAt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAg
ICBfNDMzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBs
dSkpOworICAgIF80MzMwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMGQyMGx1KSk7CisgICAgKl80MjkyID0gV1RGTW92ZSgqXzQzMzApOworICAgIGRlbGV0ZSBf
NDMzMDsKKyAgICBhdXRvKiBfNDMzMSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTJkZjBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzMxLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80
MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAyZDBs
dSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzMxLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAg
IF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBk
MjBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzMxLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkxYzhsdSkpOwor
ICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTcwMDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzMx
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBsdSkp
OworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2ZTkyYjhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzMxLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80
MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhs
dSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzMxLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80MzMxLT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMzEtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIwbHUpKTsKKyAgICBfNDMzMS0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAg
IF80MzMxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1
KSk7CisgICAgXzQzMzEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmUyZGYwbHUpKTsKKyAgICBfNDMzMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTMxYjBsdSkpOworICAgIF80MzMxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMzEtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUpKTsKKyAgICBfNDMzMS0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzMxLT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAg
Kl80MjkzID0gV1RGTW92ZSgqXzQzMzEpOworICAgIGRlbGV0ZSBfNDMzMTsKKyAgICBhdXRvKiBf
NDMzMiA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80MzMyLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE2MDhsdSkpOworICAg
IF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTAy
ZDBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzMyLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOwor
ICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTFjMjBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2ZjMzBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzMy
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkp
OworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2M2ZjYThsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTJkZjBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzMyLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOworICAgIF80
MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBs
dSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTkwNjBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2M2ZhNTBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwZDhsdSkpOworICAgIF80MzMyLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkyYjhsdSkpOworICAg
IF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYw
OTBsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzMyLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOwor
ICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTRlNDhsdSkpOworICAgIF80MzMyLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzMyLT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzZmNhOGx1KSk7CisgICAgXzQzMzItPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUyZGYwbHUpKTsKKyAgICBfNDMzMi0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkpOworICAgIF80MzMy
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7Cisg
ICAgXzQzMzItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwZDIw
bHUpKTsKKyAgICAqXzQyOTQgPSBXVEZNb3ZlKCpfNDMzMik7CisgICAgZGVsZXRlIF80MzMyOwor
ICAgIGF1dG8qIF80MzMzID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAg
XzQzMzMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxMGUwbHUp
KTsKKyAgICBfNDMzMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
M2ZjMzBsdSkpOworICAgIF80MzMzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMGQyMGx1KSk7CisgICAgKl80Mjk1ID0gV1RGTW92ZSgqXzQzMzMpOworICAgIGRl
bGV0ZSBfNDMzMzsKKyAgICBhdXRvKiBfNDMzNCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTAyZDBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEzYjBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTE3NzBsdSkpOworICAgIF80MzM0LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFmZTBsdSkpOwor
ICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTE2MDhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2ZTFjMjBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTFhYjhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTljOTBsdSkpOworICAgIF80MzM0
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTEwZTBsdSkp
OworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2M2ZhNTBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2ZTRlNDhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTQzODBsdSkpOworICAgIF80MzM0LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkwNjBsdSkpOworICAgIF80
MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTYwOTBs
dSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2ZTdmMDhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2ZThmNzBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTUwMjhsdSkpOworICAgIF80MzM0LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2ZiNDBsdSkpOworICAg
IF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTkw
ZDhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTkxYzhsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgIF80MzM0LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTViNjhsdSkpOworICAgIF80MzM0LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTcwMDhsdSkpOwor
ICAgIF80MzM0LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
ZTkyYjhsdSkpOworICAgIF80MzM0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMzQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNmVhZTYwbHUpKTsKKyAgICBfNDMzNC0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI5NiA9IFdURk1vdmUo
Kl80MzM0KTsKKyAgICBkZWxldGUgXzQzMzQ7CisgICAgYXV0byogXzQzMzUgPSBuZXcgSGFzaFNl
dDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMzNS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMzNS0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMz
NS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOwor
ICAgICpfNDI5NyA9IFdURk1vdmUoKl80MzM1KTsKKyAgICBkZWxldGUgXzQzMzU7CisgICAgYXV0
byogXzQzMzYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDMzNi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUwMmQwbHUpKTsK
KyAgICBfNDMzNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NmUxM2IwbHUpKTsKKyAgICBfNDMzNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI5OCA9IFdURk1vdmUoKl80MzM2KTsKKyAgICBk
ZWxldGUgXzQzMzY7CisgICAgYXV0byogXzQzMzcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpO
b2RlKj4oKTsKKyAgICBfNDMzNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNmUwMmQwbHUpKTsKKyAgICBfNDMzNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmUxM2IwbHUpKTsKKyAgICBfNDMzNy0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2ZTBkMjBsdSkpOworICAgICpfNDI5OSA9IFdU
Rk1vdmUoKl80MzM3KTsKKyAgICBkZWxldGUgXzQzMzc7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmFjOGx1KSk7CisgICAgXzQzMDAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7
CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOTA2MGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQz
MDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1
KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAg
XzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2Yw
OGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7Cisg
ICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTBkOGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7
CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOTFjOGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQz
MDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1
KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAg
XzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBl
MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7Cisg
ICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OWM5MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7
CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMTc3MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQz
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1
KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAg
XzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNi
MGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7Cisg
ICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTBlMGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7
CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOWM5MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQz
MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1
KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAg
XzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFi
OGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7Cisg
ICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTNiMGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7
CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOTA2MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQz
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1
KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAg
XzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5
MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7Cisg
ICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTc3MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7
CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWFiOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDU2MGx1KSk7CisgICAgXzQz
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1
KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAg
XzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2
OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7Cisg
ICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTJiOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7
CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZmMzMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDBiMGx1KSk7CisgICAgXzQz
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1
KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAg
XzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFi
OGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7Cisg
ICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MWZlMGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7
CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNWI2OGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQz
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1
KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAg
XzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2Yw
OGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7Cisg
ICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NGU0OGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7
CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNTAyOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQz
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1
KSk7CisgICAgXzQzMDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAg
XzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2
MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7Cisg
ICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MDJkMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7
CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMGQyMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQz
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1
KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAg
XzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFi
OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7Cisg
ICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NzAwOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7
CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNDNmOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQz
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1
KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAg
XzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5
MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7Cisg
ICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmE1MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7
CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOGY3MGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQz
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1
KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAg
XzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYw
OGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDYtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7Cisg
ICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NjA5MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDYt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7
CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNjQ1MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQz
MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1
KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDYtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAg
XzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBk
OGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDYtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7Cisg
ICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTFjOGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMDYtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDYt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7
CisgICAgXzQzMDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNWI2OGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQz
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1
KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAg
XzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2
MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7Cisg
ICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmMzMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7
CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMmRmMGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQz
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1
KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAg
XzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAw
OGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7Cisg
ICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NTBhMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlODYxMGx1KSk7CisgICAgXzQzMDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7
CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNjA5MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQz
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1
KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAg
XzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1
MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7Cisg
ICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OTBkOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7
CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOTFjOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQz
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1
KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAg
XzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4
MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7Cisg
ICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MDJkMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7
CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWMyMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQz
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1
KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAg
XzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAy
OGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7Cisg
ICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NzAwOGx1KSk7CisgICAgXzQzMDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMDkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7
CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlNDNmOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQz
MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1
KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMDktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAg
XzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5
MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMDktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7Cisg
ICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmE1MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMDkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7
CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOGY3MGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQz
MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1
KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMDktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTBhMGx1KSk7CisgICAg
XzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYw
OGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNDNmOGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7Cisg
ICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MzFiMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7
CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMTNiMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjQ1MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQz
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1
KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAg
XzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRm
MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7Cisg
ICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmI0MGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7
CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMTBlMGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMzFiMGx1KSk7CisgICAgXzQz
MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1
KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAg
XzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNi
MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOWM5MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7Cisg
ICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
ZmE1MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMTEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7
CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlOGY3MGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQz
MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1
KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMTEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAg
XzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3
MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmNhOGx1KSk7CisgICAgXzQzMTItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7Cisg
ICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NjA5MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMyMGx1KSk7CisgICAgXzQzMTIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7
CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlN2YwOGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQz
MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1
KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMmRmMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMTItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAg
XzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFi
OGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMTItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7Cisg
ICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MTNiMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmMzMGx1KSk7CisgICAgXzQzMTIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7
CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlYWU2MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBlMGx1KSk7CisgICAgXzQz
MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNjA5MGx1
KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOWM5MGx1KSk7CisgICAg
XzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWMy
MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMTMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7Cisg
ICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
NGU0OGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMTMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7
CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZmI0MGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZlMGx1KSk7CisgICAgXzQzMTMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQz
MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNzAwOGx1
KSk7CisgICAgXzQzMTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlMTYwOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTA2MGx1KSk7CisgICAgXzQzMTUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNWI2OGx1KSk7CisgICAg
XzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTBl
MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNjA5MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlOTJiOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7Cisg
ICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
OWM5MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlN2YwOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmE1MGx1KSk7CisgICAgXzQzMTUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmJiOGx1KSk7
CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMWMyMGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMTc3MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlNGU0OGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTBkOGx1KSk7CisgICAgXzQz
MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOGY3MGx1
KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZlMWFiOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzZlNTAyOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZmI0MGx1KSk7CisgICAgXzQzMTUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlOTFjOGx1KSk7CisgICAg
XzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMWZl
MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZlNzAwOGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZlNDM4MGx1KSk7CisgICAgXzQzMTUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7Cisg
ICAgXzQzMTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZl
MGQyMGx1KSk7CisgICAgXzQzMTYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzZlMDJkMGx1KSk7CisgICAgXzQzMTYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMTNiMGx1KSk7CisgICAgXzQzMTYtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgXzQzMTct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZlMDJkMGx1KSk7
CisgICAgXzQzMTctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZlMTNiMGx1KSk7CisgICAgXzQzMTctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZlMGQyMGx1KSk7CisgICAgYXV0byogXzQzMzggPSBuZXcgSGFzaFNldDw6
OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDMzOSA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDMzOTsKKyAgICBkZWxldGUgXzQzMzg7Cisg
ICAgYXV0byogXzQzNDAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBh
dXRvKiBfNDM0MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0
ZSBfNDM0MTsKKyAgICBkZWxldGUgXzQzNDA7CisgICAgYXV0byogXzQzNDIgPSBuZXcgSGFzaFNl
dDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM0MyA9IG5ldyBIYXNoU2V0PDo6
SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM0MzsKKyAgICBkZWxldGUgXzQzNDI7
CisgICAgYXV0byogXzQzNDQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAg
ICBhdXRvKiBfNDM0NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRl
bGV0ZSBfNDM0NTsKKyAgICBkZWxldGUgXzQzNDQ7CisgICAgYXV0byogXzQzNDYgPSBuZXcgSGFz
aFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM0NyA9IG5ldyBIYXNoU2V0
PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM0NzsKKyAgICBkZWxldGUgXzQz
NDY7CisgICAgYXV0byogXzQzNDggPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBhdXRvKiBfNDM0OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAg
IGRlbGV0ZSBfNDM0OTsKKyAgICBkZWxldGUgXzQzNDg7CisgICAgYXV0byogXzQzNTAgPSBuZXcg
SGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM1MSA9IG5ldyBIYXNo
U2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM1MTsKKyAgICBkZWxldGUg
XzQzNTA7CisgICAgYXV0byogXzQzNTIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICBhdXRvKiBfNDM1MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIGRlbGV0ZSBfNDM1MzsKKyAgICBkZWxldGUgXzQzNTI7CisgICAgYXV0byogXzQzNTQgPSBu
ZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM1NSA9IG5ldyBI
YXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM1NTsKKyAgICBkZWxl
dGUgXzQzNTQ7CisgICAgYXV0byogXzQzNTYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2Rl
Kj4oKTsKKyAgICBhdXRvKiBfNDM1NyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIGRlbGV0ZSBfNDM1NzsKKyAgICBkZWxldGUgXzQzNTY7CisgICAgYXV0byogXzQzNTgg
PSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM1OSA9IG5l
dyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM1OTsKKyAgICBk
ZWxldGUgXzQzNTg7CisgICAgYXV0byogXzQzNjAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpO
b2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIGRlbGV0ZSBfNDM2MTsKKyAgICBkZWxldGUgXzQzNjA7CisgICAgYXV0byogXzQz
NjIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2MyA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM2MzsKKyAg
ICBkZWxldGUgXzQzNjI7CisgICAgYXV0byogXzQzNjQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZH
OjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIGRlbGV0ZSBfNDM2NTsKKyAgICBkZWxldGUgXzQzNjQ7CisgICAgYXV0byog
XzQzNjYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2
NyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM2NzsK
KyAgICBkZWxldGUgXzQzNjY7CisgICAgYXV0byogXzQzNjggPSBuZXcgSGFzaFNldDw6OkpTQzo6
REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM2OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM2OTsKKyAgICBkZWxldGUgXzQzNjg7CisgICAgYXV0
byogXzQzNzAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBf
NDM3MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM3
MTsKKyAgICBkZWxldGUgXzQzNzA7CisgICAgYXV0byogXzQzNzIgPSBuZXcgSGFzaFNldDw6OkpT
Qzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDM3MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDM3MzsKKyAgICBkZWxldGUgXzQzNzI7CisgICAg
YXV0byogXzQzNzQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRv
KiBfNDM3NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGRlbGV0ZSBf
NDM3NTsKKyAgICBkZWxldGUgXzQzNzQ7CisgICAgZGVsZXRlIF80MzAwOworICAgIGRlbGV0ZSBf
NDMwMTsKKyAgICBkZWxldGUgXzQzMDI7CisgICAgZGVsZXRlIF80MzAzOworICAgIGRlbGV0ZSBf
NDMwNDsKKyAgICBkZWxldGUgXzQzMDU7CisgICAgZGVsZXRlIF80MzA2OworICAgIGRlbGV0ZSBf
NDMwNzsKKyAgICBkZWxldGUgXzQzMDg7CisgICAgZGVsZXRlIF80MzA5OworICAgIGRlbGV0ZSBf
NDMxMDsKKyAgICBkZWxldGUgXzQzMTE7CisgICAgZGVsZXRlIF80MzEyOworICAgIGRlbGV0ZSBf
NDMxMzsKKyAgICBkZWxldGUgXzQzMTQ7CisgICAgZGVsZXRlIF80MzE1OworICAgIGRlbGV0ZSBf
NDMxNjsKKyAgICBkZWxldGUgXzQzMTc7CisgICAgZGVsZXRlIF80MzE4OworICAgIGRlbGV0ZSBf
NDI4MTsKKyAgICBkZWxldGUgXzQyODI7CisgICAgZGVsZXRlIF80MjgzOworICAgIGRlbGV0ZSBf
NDI4NDsKKyAgICBkZWxldGUgXzQyODU7CisgICAgZGVsZXRlIF80Mjg2OworICAgIGRlbGV0ZSBf
NDI4NzsKKyAgICBkZWxldGUgXzQyODg7CisgICAgZGVsZXRlIF80Mjg5OworICAgIGRlbGV0ZSBf
NDI5MDsKKyAgICBkZWxldGUgXzQyOTE7CisgICAgZGVsZXRlIF80MjkyOworICAgIGRlbGV0ZSBf
NDI5MzsKKyAgICBkZWxldGUgXzQyOTQ7CisgICAgZGVsZXRlIF80Mjk1OworICAgIGRlbGV0ZSBf
NDI5NjsKKyAgICBkZWxldGUgXzQyOTc7CisgICAgZGVsZXRlIF80Mjk4OworICAgIGRlbGV0ZSBf
NDI5OTsKKyAgICBhdXRvKiBfNDM3NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80Mzc3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzNzggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM3OSA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80MzgwID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzODEgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM4MiA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Mzgz
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQzODQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDM4NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80Mzg2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQzODcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDM4OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Mzg5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzOTAgPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM5MSA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80MzkyID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQzOTMgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDM5NCA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIF80MzkyLT5h
ZGQoNSk7CisgICAgXzQzOTItPmFkZCg0MSk7CisgICAgXzQzOTMtPmFkZCg1KTsKKyAgICBfNDM5
My0+YWRkKDQxKTsKKyAgICBfNDM3Ni0+YWRkKDUpOworICAgIF80Mzc2LT5hZGQoNDEpOworICAg
IF80MzkxLT5hZGQoNSk7CisgICAgXzQzOTEtPmFkZCg0MSk7CisgICAgXzQzODktPmFkZCg1KTsK
KyAgICBfNDM4OS0+YWRkKDQxKTsKKyAgICBfNDM4OS0+YWRkKDQ5KTsKKyAgICBfNDM4OS0+YWRk
KDY3KTsKKyAgICBfNDM4OS0+YWRkKDQ2KTsKKyAgICBfNDM4OS0+YWRkKDU5KTsKKyAgICBfNDM4
OS0+YWRkKDU2KTsKKyAgICBfNDM4OS0+YWRkKDM4Nyk7CisgICAgXzQzODgtPmFkZCg0Nik7Cisg
ICAgXzQzODgtPmFkZCg1KTsKKyAgICBfNDM4OC0+YWRkKDQ5KTsKKyAgICBfNDM4OC0+YWRkKDY3
KTsKKyAgICBfNDM4OC0+YWRkKDU2KTsKKyAgICBfNDM4OC0+YWRkKDQxKTsKKyAgICBfNDM4OC0+
YWRkKDU5KTsKKyAgICBfNDM4OC0+YWRkKDI4MCk7CisgICAgXzQzODgtPmFkZCgxMDMpOworICAg
IF80Mzg4LT5hZGQoMjcpOworICAgIF80Mzg4LT5hZGQoMzUpOworICAgIF80Mzg4LT5hZGQoMjc1
KTsKKyAgICBfNDM4OC0+YWRkKDk3KTsKKyAgICBfNDM4MC0+YWRkKDk3KTsKKyAgICBfNDM4MC0+
YWRkKDI4MCk7CisgICAgXzQzODAtPmFkZCgxMDMpOworICAgIF80MzgwLT5hZGQoMzUpOworICAg
IF80MzgwLT5hZGQoNSk7CisgICAgXzQzODAtPmFkZCg0OSk7CisgICAgXzQzODAtPmFkZCg2Nyk7
CisgICAgXzQzODAtPmFkZCg1Nik7CisgICAgXzQzODAtPmFkZCg0MSk7CisgICAgXzQzODAtPmFk
ZCgyNyk7CisgICAgXzQzODAtPmFkZCg1OSk7CisgICAgXzQzODAtPmFkZCg0Nik7CisgICAgXzQz
ODAtPmFkZCgzMzMpOworICAgIF80MzgwLT5hZGQoMzg2KTsKKyAgICBfNDM4Ny0+YWRkKDk3KTsK
KyAgICBfNDM4Ny0+YWRkKDI4MCk7CisgICAgXzQzODctPmFkZCgxMDMpOworICAgIF80Mzg3LT5h
ZGQoMzUpOworICAgIF80Mzg3LT5hZGQoNSk7CisgICAgXzQzODctPmFkZCg0OSk7CisgICAgXzQz
ODctPmFkZCg2Nyk7CisgICAgXzQzODctPmFkZCg1Nik7CisgICAgXzQzODctPmFkZCg0MSk7Cisg
ICAgXzQzODctPmFkZCgyNyk7CisgICAgXzQzODctPmFkZCg1OSk7CisgICAgXzQzODctPmFkZCg0
Nik7CisgICAgXzQzODctPmFkZCgzMzMpOworICAgIF80Mzg3LT5hZGQoMzg2KTsKKyAgICBfNDM4
NS0+YWRkKDMzMyk7CisgICAgXzQzODUtPmFkZCgyODApOworICAgIF80Mzg1LT5hZGQoMTAzKTsK
KyAgICBfNDM4NS0+YWRkKDM1KTsKKyAgICBfNDM4NS0+YWRkKDUpOworICAgIF80Mzg1LT5hZGQo
NDYpOworICAgIF80Mzg1LT5hZGQoNDkpOworICAgIF80Mzg1LT5hZGQoNjcpOworICAgIF80Mzg1
LT5hZGQoNTYpOworICAgIF80Mzg1LT5hZGQoNDEpOworICAgIF80Mzg1LT5hZGQoMjcpOworICAg
IF80Mzg1LT5hZGQoOTcpOworICAgIF80Mzg1LT5hZGQoNTkpOworICAgIF80Mzg1LT5hZGQoMjEz
KTsKKyAgICBfNDM4NS0+YWRkKDE0NCk7CisgICAgXzQzODUtPmFkZCgzMTIpOworICAgIF80Mzg1
LT5hZGQoMzA4KTsKKyAgICBfNDM4NS0+YWRkKDE0Myk7CisgICAgXzQzODUtPmFkZCgzMDUpOwor
ICAgIF80Mzg1LT5hZGQoMzEwKTsKKyAgICBfNDM4NS0+YWRkKDMwNyk7CisgICAgXzQzODYtPmFk
ZCgzMzMpOworICAgIF80Mzg2LT5hZGQoMjgwKTsKKyAgICBfNDM4Ni0+YWRkKDEwMyk7CisgICAg
XzQzODYtPmFkZCgzNSk7CisgICAgXzQzODYtPmFkZCg1KTsKKyAgICBfNDM4Ni0+YWRkKDQ2KTsK
KyAgICBfNDM4Ni0+YWRkKDQ5KTsKKyAgICBfNDM4Ni0+YWRkKDY3KTsKKyAgICBfNDM4Ni0+YWRk
KDU2KTsKKyAgICBfNDM4Ni0+YWRkKDQxKTsKKyAgICBfNDM4Ni0+YWRkKDI3KTsKKyAgICBfNDM4
Ni0+YWRkKDk3KTsKKyAgICBfNDM4Ni0+YWRkKDU5KTsKKyAgICBfNDM4Ni0+YWRkKDIxMyk7Cisg
ICAgXzQzODYtPmFkZCgxNDQpOworICAgIF80Mzg2LT5hZGQoMzEyKTsKKyAgICBfNDM4Ni0+YWRk
KDMwOCk7CisgICAgXzQzODYtPmFkZCgxNDMpOworICAgIF80Mzg2LT5hZGQoMzA1KTsKKyAgICBf
NDM4Ni0+YWRkKDMxMCk7CisgICAgXzQzODYtPmFkZCgzMDcpOworICAgIF80MzgxLT5hZGQoMzMz
KTsKKyAgICBfNDM4MS0+YWRkKDM1KTsKKyAgICBfNDM4MS0+YWRkKDMwNyk7CisgICAgXzQzODEt
PmFkZCg0Nik7CisgICAgXzQzODEtPmFkZCg1Nik7CisgICAgXzQzODEtPmFkZCg1OSk7CisgICAg
XzQzODEtPmFkZCgzMDUpOworICAgIF80MzgxLT5hZGQoMjgwKTsKKyAgICBfNDM4MS0+YWRkKDEw
Myk7CisgICAgXzQzODEtPmFkZCg1KTsKKyAgICBfNDM4MS0+YWRkKDMxMCk7CisgICAgXzQzODEt
PmFkZCg0OSk7CisgICAgXzQzODEtPmFkZCg2Nyk7CisgICAgXzQzODEtPmFkZCgzMDgpOworICAg
IF80MzgxLT5hZGQoMzEyKTsKKyAgICBfNDM4MS0+YWRkKDQxKTsKKyAgICBfNDM4MS0+YWRkKDI3
KTsKKyAgICBfNDM4MS0+YWRkKDk3KTsKKyAgICBfNDM4MS0+YWRkKDE0Myk7CisgICAgXzQzODEt
PmFkZCgyMTMpOworICAgIF80MzgxLT5hZGQoMTQ0KTsKKyAgICBfNDM4NC0+YWRkKDMzMyk7Cisg
ICAgXzQzODQtPmFkZCgzNSk7CisgICAgXzQzODQtPmFkZCgzMDcpOworICAgIF80Mzg0LT5hZGQo
NDYpOworICAgIF80Mzg0LT5hZGQoNTYpOworICAgIF80Mzg0LT5hZGQoNTkpOworICAgIF80Mzg0
LT5hZGQoMzA1KTsKKyAgICBfNDM4NC0+YWRkKDI4MCk7CisgICAgXzQzODQtPmFkZCgxMDMpOwor
ICAgIF80Mzg0LT5hZGQoNSk7CisgICAgXzQzODQtPmFkZCgzMTApOworICAgIF80Mzg0LT5hZGQo
NDkpOworICAgIF80Mzg0LT5hZGQoNjcpOworICAgIF80Mzg0LT5hZGQoMzA4KTsKKyAgICBfNDM4
NC0+YWRkKDMxMik7CisgICAgXzQzODQtPmFkZCg0MSk7CisgICAgXzQzODQtPmFkZCgyNyk7Cisg
ICAgXzQzODQtPmFkZCg5Nyk7CisgICAgXzQzODQtPmFkZCgxNDMpOworICAgIF80Mzg0LT5hZGQo
MjEzKTsKKyAgICBfNDM4NC0+YWRkKDE0NCk7CisgICAgXzQzODMtPmFkZCgzMzMpOworICAgIF80
MzgzLT5hZGQoOTcpOworICAgIF80MzgzLT5hZGQoMzUpOworICAgIF80MzgzLT5hZGQoNDEpOwor
ICAgIF80MzgzLT5hZGQoNDYpOworICAgIF80MzgzLT5hZGQoNTYpOworICAgIF80MzgzLT5hZGQo
MjgwKTsKKyAgICBfNDM4My0+YWRkKDEwMyk7CisgICAgXzQzODMtPmFkZCg1KTsKKyAgICBfNDM4
My0+YWRkKDMxMCk7CisgICAgXzQzODMtPmFkZCg0OSk7CisgICAgXzQzODMtPmFkZCg2Nyk7Cisg
ICAgXzQzODMtPmFkZCgzMDgpOworICAgIF80MzgzLT5hZGQoMzEyKTsKKyAgICBfNDM4My0+YWRk
KDMwNyk7CisgICAgXzQzODMtPmFkZCgyNyk7CisgICAgXzQzODMtPmFkZCgzMDUpOworICAgIF80
MzgzLT5hZGQoNTkpOworICAgIF80MzgzLT5hZGQoMTQzKTsKKyAgICBfNDM4My0+YWRkKDIxMyk7
CisgICAgXzQzODMtPmFkZCgxNDQpOworICAgIF80MzgzLT5hZGQoNDQpOworICAgIF80MzgzLT5h
ZGQoMTcxKTsKKyAgICBfNDM4My0+YWRkKDM4NSk7CisgICAgXzQzODItPmFkZCgzMzMpOworICAg
IF80MzgyLT5hZGQoOTcpOworICAgIF80MzgyLT5hZGQoMzUpOworICAgIF80MzgyLT5hZGQoNDEp
OworICAgIF80MzgyLT5hZGQoNDYpOworICAgIF80MzgyLT5hZGQoNTYpOworICAgIF80MzgyLT5h
ZGQoMjgwKTsKKyAgICBfNDM4Mi0+YWRkKDEwMyk7CisgICAgXzQzODItPmFkZCg1KTsKKyAgICBf
NDM4Mi0+YWRkKDMxMCk7CisgICAgXzQzODItPmFkZCg0OSk7CisgICAgXzQzODItPmFkZCg2Nyk7
CisgICAgXzQzODItPmFkZCgzMDgpOworICAgIF80MzgyLT5hZGQoMzEyKTsKKyAgICBfNDM4Mi0+
YWRkKDMwNyk7CisgICAgXzQzODItPmFkZCgyNyk7CisgICAgXzQzODItPmFkZCgzMDUpOworICAg
IF80MzgyLT5hZGQoNTkpOworICAgIF80MzgyLT5hZGQoMTQzKTsKKyAgICBfNDM4Mi0+YWRkKDIx
Myk7CisgICAgXzQzODItPmFkZCgxNDQpOworICAgIF80MzgyLT5hZGQoNDQpOworICAgIF80Mzgy
LT5hZGQoMTcxKTsKKyAgICBfNDM4Mi0+YWRkKDM4NSk7CisgICAgXzQzODEtPmFkZCgzMzMpOwor
ICAgIF80MzgxLT5hZGQoMzUpOworICAgIF80MzgxLT5hZGQoNDQpOworICAgIF80MzgxLT5hZGQo
NDEpOworICAgIF80MzgxLT5hZGQoMjEzKTsKKyAgICBfNDM4MS0+YWRkKDMxMik7CisgICAgXzQz
ODEtPmFkZCg0Nik7CisgICAgXzQzODEtPmFkZCgxNzEpOworICAgIF80MzgxLT5hZGQoMzA1KTsK
KyAgICBfNDM4MS0+YWRkKDI4MCk7CisgICAgXzQzODEtPmFkZCgxNDQpOworICAgIF80MzgxLT5h
ZGQoMTAzKTsKKyAgICBfNDM4MS0+YWRkKDUpOworICAgIF80MzgxLT5hZGQoMzEwKTsKKyAgICBf
NDM4MS0+YWRkKDQ5KTsKKyAgICBfNDM4MS0+YWRkKDY3KTsKKyAgICBfNDM4MS0+YWRkKDMwOCk7
CisgICAgXzQzODEtPmFkZCg1Nik7CisgICAgXzQzODEtPmFkZCgzMDcpOworICAgIF80MzgxLT5h
ZGQoMjcpOworICAgIF80MzgxLT5hZGQoOTcpOworICAgIF80MzgxLT5hZGQoMTQzKTsKKyAgICBf
NDM4MS0+YWRkKDU5KTsKKyAgICBfNDM4MS0+YWRkKDI3MCk7CisgICAgXzQzODQtPmFkZCgzMzMp
OworICAgIF80Mzg0LT5hZGQoMzUpOworICAgIF80Mzg0LT5hZGQoNDQpOworICAgIF80Mzg0LT5h
ZGQoNDEpOworICAgIF80Mzg0LT5hZGQoMjEzKTsKKyAgICBfNDM4NC0+YWRkKDMxMik7CisgICAg
XzQzODQtPmFkZCg0Nik7CisgICAgXzQzODQtPmFkZCgxNzEpOworICAgIF80Mzg0LT5hZGQoMzA1
KTsKKyAgICBfNDM4NC0+YWRkKDI4MCk7CisgICAgXzQzODQtPmFkZCgxNDQpOworICAgIF80Mzg0
LT5hZGQoMTAzKTsKKyAgICBfNDM4NC0+YWRkKDUpOworICAgIF80Mzg0LT5hZGQoMzEwKTsKKyAg
ICBfNDM4NC0+YWRkKDQ5KTsKKyAgICBfNDM4NC0+YWRkKDY3KTsKKyAgICBfNDM4NC0+YWRkKDMw
OCk7CisgICAgXzQzODQtPmFkZCg1Nik7CisgICAgXzQzODQtPmFkZCgzMDcpOworICAgIF80Mzg0
LT5hZGQoMjcpOworICAgIF80Mzg0LT5hZGQoOTcpOworICAgIF80Mzg0LT5hZGQoMTQzKTsKKyAg
ICBfNDM4NC0+YWRkKDU5KTsKKyAgICBfNDM4NC0+YWRkKDI4NSk7CisgICAgXzQzNzktPmFkZCgz
MzMpOworICAgIF80Mzc5LT5hZGQoOTcpOworICAgIF80Mzc5LT5hZGQoMzUpOworICAgIF80Mzc5
LT5hZGQoNDQpOworICAgIF80Mzc5LT5hZGQoNDEpOworICAgIF80Mzc5LT5hZGQoNDYpOworICAg
IF80Mzc5LT5hZGQoNTYpOworICAgIF80Mzc5LT5hZGQoMjA1KTsKKyAgICBfNDM3OS0+YWRkKDI4
MCk7CisgICAgXzQzNzktPmFkZCgxMDMpOworICAgIF80Mzc5LT5hZGQoNSk7CisgICAgXzQzNzkt
PmFkZCgzMTApOworICAgIF80Mzc5LT5hZGQoNDkpOworICAgIF80Mzc5LT5hZGQoNjcpOworICAg
IF80Mzc5LT5hZGQoMzA4KTsKKyAgICBfNDM3OS0+YWRkKDMxMik7CisgICAgXzQzNzktPmFkZCgy
NzApOworICAgIF80Mzc5LT5hZGQoMzA3KTsKKyAgICBfNDM3OS0+YWRkKDI3KTsKKyAgICBfNDM3
OS0+YWRkKDMwNSk7CisgICAgXzQzNzktPmFkZCg1OSk7CisgICAgXzQzNzktPmFkZCgxNDMpOwor
ICAgIF80Mzc5LT5hZGQoMjM4KTsKKyAgICBfNDM3OS0+YWRkKDE0NCk7CisgICAgXzQzNzktPmFk
ZCgxOTQpOworICAgIF80Mzc5LT5hZGQoMTcwKTsKKyAgICBfNDM3OS0+YWRkKDE2Nik7CisgICAg
XzQzNzktPmFkZCgzMzMpOworICAgIF80Mzc5LT5hZGQoMjgwKTsKKyAgICBfNDM3OS0+YWRkKDEw
Myk7CisgICAgXzQzNzktPmFkZCgzNSk7CisgICAgXzQzNzktPmFkZCg1KTsKKyAgICBfNDM3OS0+
YWRkKDQ2KTsKKyAgICBfNDM3OS0+YWRkKDQ5KTsKKyAgICBfNDM3OS0+YWRkKDY3KTsKKyAgICBf
NDM3OS0+YWRkKDU2KTsKKyAgICBfNDM3OS0+YWRkKDQxKTsKKyAgICBfNDM3OS0+YWRkKDI3KTsK
KyAgICBfNDM3OS0+YWRkKDk3KTsKKyAgICBfNDM3OS0+YWRkKDU5KTsKKyAgICBfNDM3OS0+YWRk
KDE0Nyk7CisgICAgXzQzNzgtPmFkZCgzMzMpOworICAgIF80Mzc4LT5hZGQoMjM4KTsKKyAgICBf
NDM3OC0+YWRkKDM1KTsKKyAgICBfNDM3OC0+YWRkKDQ0KTsKKyAgICBfNDM3OC0+YWRkKDE2Nik7
CisgICAgXzQzNzgtPmFkZCgxNDMpOworICAgIF80Mzc4LT5hZGQoMzA3KTsKKyAgICBfNDM3OC0+
YWRkKDMxMik7CisgICAgXzQzNzgtPmFkZCg0Nik7CisgICAgXzQzNzgtPmFkZCgzMDUpOworICAg
IF80Mzc4LT5hZGQoNTkpOworICAgIF80Mzc4LT5hZGQoMTcwKTsKKyAgICBfNDM3OC0+YWRkKDEw
Myk7CisgICAgXzQzNzgtPmFkZCg1KTsKKyAgICBfNDM3OC0+YWRkKDMxMCk7CisgICAgXzQzNzgt
PmFkZCg0OSk7CisgICAgXzQzNzgtPmFkZCgxOTQpOworICAgIF80Mzc4LT5hZGQoMjA1KTsKKyAg
ICBfNDM3OC0+YWRkKDY3KTsKKyAgICBfNDM3OC0+YWRkKDMwOCk7CisgICAgXzQzNzgtPmFkZCg1
Nik7CisgICAgXzQzNzgtPmFkZCgyNzApOworICAgIF80Mzc4LT5hZGQoNDEpOworICAgIF80Mzc4
LT5hZGQoMjcpOworICAgIF80Mzc4LT5hZGQoMzg0KTsKKyAgICBfNDM3Ny0+YWRkKDMzMyk7Cisg
ICAgXzQzNzctPmFkZCgyMzgpOworICAgIF80Mzc3LT5hZGQoMzUpOworICAgIF80Mzc3LT5hZGQo
NDQpOworICAgIF80Mzc3LT5hZGQoMTY2KTsKKyAgICBfNDM3Ny0+YWRkKDE0Myk7CisgICAgXzQz
NzctPmFkZCgzMDcpOworICAgIF80Mzc3LT5hZGQoMzEyKTsKKyAgICBfNDM3Ny0+YWRkKDQ2KTsK
KyAgICBfNDM3Ny0+YWRkKDMwNSk7CisgICAgXzQzNzctPmFkZCg1OSk7CisgICAgXzQzNzctPmFk
ZCgxNzApOworICAgIF80Mzc3LT5hZGQoMTAzKTsKKyAgICBfNDM3Ny0+YWRkKDUpOworICAgIF80
Mzc3LT5hZGQoMzEwKTsKKyAgICBfNDM3Ny0+YWRkKDQ5KTsKKyAgICBfNDM3Ny0+YWRkKDE5NCk7
CisgICAgXzQzNzctPmFkZCgyMDUpOworICAgIF80Mzc3LT5hZGQoNjcpOworICAgIF80Mzc3LT5h
ZGQoMzA4KTsKKyAgICBfNDM3Ny0+YWRkKDU2KTsKKyAgICBfNDM3Ny0+YWRkKDI3MCk7CisgICAg
XzQzNzctPmFkZCg0MSk7CisgICAgXzQzNzctPmFkZCgyNyk7CisgICAgXzQzNzctPmFkZCgzODQp
OworICAgIF80Mzc2LT5hZGQoMzMzKTsKKyAgICBfNDM3Ni0+YWRkKDMxMCk7CisgICAgXzQzNzYt
PmFkZCgzNSk7CisgICAgXzQzNzYtPmFkZCg0NCk7CisgICAgXzQzNzYtPmFkZCg0MSk7CisgICAg
XzQzNzYtPmFkZCgxNDMpOworICAgIF80Mzc2LT5hZGQoMjA1KTsKKyAgICBfNDM3Ni0+YWRkKDQ2
KTsKKyAgICBfNDM3Ni0+YWRkKDE3MCk7CisgICAgXzQzNzYtPmFkZCgxMDMpOworICAgIF80Mzc2
LT5hZGQoNSk7CisgICAgXzQzNzYtPmFkZCgxNjYpOworICAgIF80Mzc2LT5hZGQoNDkpOworICAg
IF80Mzc2LT5hZGQoMTk0KTsKKyAgICBfNDM3Ni0+YWRkKDIzOCk7CisgICAgXzQzNzYtPmFkZCg2
Nyk7CisgICAgXzQzNzYtPmFkZCgzMDgpOworICAgIF80Mzc2LT5hZGQoMzEyKTsKKyAgICBfNDM3
Ni0+YWRkKDU2KTsKKyAgICBfNDM3Ni0+YWRkKDI3MCk7CisgICAgXzQzNzYtPmFkZCgzMDcpOwor
ICAgIF80Mzc2LT5hZGQoMjcpOworICAgIF80Mzc2LT5hZGQoMzA1KTsKKyAgICBfNDM3Ni0+YWRk
KDU5KTsKKyAgICBfNDM3Ni0+YWRkKDQ4KTsKKyAgICBfNDM5MS0+YWRkKDMzMyk7CisgICAgXzQz
OTEtPmFkZCgzMTApOworICAgIF80MzkxLT5hZGQoMzUpOworICAgIF80MzkxLT5hZGQoNDQpOwor
ICAgIF80MzkxLT5hZGQoNDEpOworICAgIF80MzkxLT5hZGQoMTQzKTsKKyAgICBfNDM5MS0+YWRk
KDIwNSk7CisgICAgXzQzOTEtPmFkZCg0Nik7CisgICAgXzQzOTEtPmFkZCgxNzApOworICAgIF80
MzkxLT5hZGQoMTAzKTsKKyAgICBfNDM5MS0+YWRkKDUpOworICAgIF80MzkxLT5hZGQoMTY2KTsK
KyAgICBfNDM5MS0+YWRkKDQ5KTsKKyAgICBfNDM5MS0+YWRkKDE5NCk7CisgICAgXzQzOTEtPmFk
ZCgyMzgpOworICAgIF80MzkxLT5hZGQoNjcpOworICAgIF80MzkxLT5hZGQoMzA4KTsKKyAgICBf
NDM5MS0+YWRkKDMxMik7CisgICAgXzQzOTEtPmFkZCg1Nik7CisgICAgXzQzOTEtPmFkZCgyNzAp
OworICAgIF80MzkxLT5hZGQoMzA3KTsKKyAgICBfNDM5MS0+YWRkKDI3KTsKKyAgICBfNDM5MS0+
YWRkKDMwNSk7CisgICAgXzQzOTEtPmFkZCg1OSk7CisgICAgXzQzOTEtPmFkZCgxNDYpOworICAg
IF80Mzg5LT5hZGQoMzMzKTsKKyAgICBfNDM4OS0+YWRkKDM1KTsKKyAgICBfNDM4OS0+YWRkKDQ0
KTsKKyAgICBfNDM4OS0+YWRkKDE2Nik7CisgICAgXzQzODktPmFkZCgxNDMpOworICAgIF80Mzg5
LT5hZGQoMzA3KTsKKyAgICBfNDM4OS0+YWRkKDIwNSk7CisgICAgXzQzODktPmFkZCgyNzApOwor
ICAgIF80Mzg5LT5hZGQoMzA1KTsKKyAgICBfNDM4OS0+YWRkKDE3MCk7CisgICAgXzQzODktPmFk
ZCgxMDMpOworICAgIF80Mzg5LT5hZGQoMzA4KTsKKyAgICBfNDM4OS0+YWRkKDMxMCk7CisgICAg
XzQzODktPmFkZCgyNyk7CisgICAgXzQzODktPmFkZCgxOTQpOworICAgIF80Mzg5LT5hZGQoMjM4
KTsKKyAgICBfNDM4OS0+YWRkKDMxMik7CisgICAgXzQzODgtPmFkZCgzMzMpOworICAgIF80Mzg4
LT5hZGQoMjM4KTsKKyAgICBfNDM4OC0+YWRkKDE0Myk7CisgICAgXzQzODgtPmFkZCgzMDcpOwor
ICAgIF80Mzg4LT5hZGQoNDQpOworICAgIF80Mzg4LT5hZGQoMzA4KTsKKyAgICBfNDM4OC0+YWRk
KDMxMik7CisgICAgXzQzODgtPmFkZCgyMDUpOworICAgIF80Mzg4LT5hZGQoMzEwKTsKKyAgICBf
NDM4OC0+YWRkKDE3MCk7CisgICAgXzQzODgtPmFkZCgzMDUpOworICAgIF80Mzg4LT5hZGQoMTk0
KTsKKyAgICBfNDM4OC0+YWRkKDE2Nik7CisgICAgXzQzODgtPmFkZCgyNzApOworICAgIF80Mzgw
LT5hZGQoMzEwKTsKKyAgICBfNDM4MC0+YWRkKDIzOCk7CisgICAgXzQzODAtPmFkZCg0NCk7Cisg
ICAgXzQzODAtPmFkZCgxNjYpOworICAgIF80MzgwLT5hZGQoMzA3KTsKKyAgICBfNDM4MC0+YWRk
KDIwNSk7CisgICAgXzQzODAtPmFkZCgzMTIpOworICAgIF80MzgwLT5hZGQoMjcwKTsKKyAgICBf
NDM4MC0+YWRkKDE0Myk7CisgICAgXzQzODAtPmFkZCgzMDUpOworICAgIF80MzgwLT5hZGQoMTk0
KTsKKyAgICBfNDM4MC0+YWRkKDE3MCk7CisgICAgXzQzODAtPmFkZCgzMDgpOworICAgIF80Mzg3
LT5hZGQoMzEwKTsKKyAgICBfNDM4Ny0+YWRkKDIzOCk7CisgICAgXzQzODctPmFkZCg0NCk7Cisg
ICAgXzQzODctPmFkZCgxNjYpOworICAgIF80Mzg3LT5hZGQoMzA3KTsKKyAgICBfNDM4Ny0+YWRk
KDIwNSk7CisgICAgXzQzODctPmFkZCgzMTIpOworICAgIF80Mzg3LT5hZGQoMjcwKTsKKyAgICBf
NDM4Ny0+YWRkKDE0Myk7CisgICAgXzQzODctPmFkZCgzMDUpOworICAgIF80Mzg3LT5hZGQoMTk0
KTsKKyAgICBfNDM4Ny0+YWRkKDE3MCk7CisgICAgXzQzODctPmFkZCgzMDgpOworICAgIF80Mzg1
LT5hZGQoMjM4KTsKKyAgICBfNDM4NS0+YWRkKDI3MCk7CisgICAgXzQzODUtPmFkZCg0NCk7Cisg
ICAgXzQzODUtPmFkZCgxNjYpOworICAgIF80Mzg1LT5hZGQoMTk0KTsKKyAgICBfNDM4NS0+YWRk
KDIwNSk7CisgICAgXzQzODUtPmFkZCgxNzApOworICAgIF80Mzg2LT5hZGQoMjM4KTsKKyAgICBf
NDM4Ni0+YWRkKDI3MCk7CisgICAgXzQzODYtPmFkZCg0NCk7CisgICAgXzQzODYtPmFkZCgxNjYp
OworICAgIF80Mzg2LT5hZGQoMTk0KTsKKyAgICBfNDM4Ni0+YWRkKDIwNSk7CisgICAgXzQzODYt
PmFkZCgxNzApOworICAgIF80MzgxLT5hZGQoMTcwKTsKKyAgICBfNDM4MS0+YWRkKDIzOCk7Cisg
ICAgXzQzODEtPmFkZCg0NCk7CisgICAgXzQzODEtPmFkZCgxNjYpOworICAgIF80MzgxLT5hZGQo
MjcwKTsKKyAgICBfNDM4MS0+YWRkKDIwNSk7CisgICAgXzQzODEtPmFkZCgxOTQpOworICAgIF80
Mzg0LT5hZGQoMTcwKTsKKyAgICBfNDM4NC0+YWRkKDIzOCk7CisgICAgXzQzODQtPmFkZCg0NCk7
CisgICAgXzQzODQtPmFkZCgxNjYpOworICAgIF80Mzg0LT5hZGQoMjcwKTsKKyAgICBfNDM4NC0+
YWRkKDIwNSk7CisgICAgXzQzODQtPmFkZCgxOTQpOworICAgIF80MzgzLT5hZGQoMjA1KTsKKyAg
ICBfNDM4My0+YWRkKDE5NCk7CisgICAgXzQzODMtPmFkZCgxNzApOworICAgIF80MzgzLT5hZGQo
MjcwKTsKKyAgICBfNDM4My0+YWRkKDIzOCk7CisgICAgXzQzODMtPmFkZCgxNjYpOworICAgIF80
MzgyLT5hZGQoMjA1KTsKKyAgICBfNDM4Mi0+YWRkKDE5NCk7CisgICAgXzQzODItPmFkZCgxNzAp
OworICAgIF80MzgyLT5hZGQoMjcwKTsKKyAgICBfNDM4Mi0+YWRkKDIzOCk7CisgICAgXzQzODIt
PmFkZCgxNjYpOworICAgIF80MzgxLT5hZGQoMTcwKTsKKyAgICBfNDM4MS0+YWRkKDIzOCk7Cisg
ICAgXzQzODEtPmFkZCgxNjYpOworICAgIF80MzgxLT5hZGQoMjA1KTsKKyAgICBfNDM4MS0+YWRk
KDE5NCk7CisgICAgXzQzODQtPmFkZCgxNzApOworICAgIF80Mzg0LT5hZGQoMjM4KTsKKyAgICBf
NDM4NC0+YWRkKDE5NCk7CisgICAgXzQzODQtPmFkZCgyNzApOworICAgIF80Mzg0LT5hZGQoMjA1
KTsKKyAgICBfNDM4NC0+YWRkKDE2Nik7CisgICAgXzQzNzktPmFkZCgyMzgpOworICAgIF80Mzc5
LT5hZGQoMTk0KTsKKyAgICBfNDM3OS0+YWRkKDQ0KTsKKyAgICBfNDM3OS0+YWRkKDE2Nik7Cisg
ICAgXzQzNzktPmFkZCgzMDcpOworICAgIF80Mzc5LT5hZGQoMjA1KTsKKyAgICBfNDM3OS0+YWRk
KDI3MCk7CisgICAgXzQzNzktPmFkZCgzMTIpOworICAgIF80Mzc5LT5hZGQoMzEwKTsKKyAgICBf
NDM3OS0+YWRkKDMwNSk7CisgICAgXzQzNzktPmFkZCgzMDgpOworICAgIF80Mzc5LT5hZGQoMTcw
KTsKKyAgICBfNDM3OS0+YWRkKDE0Myk7CisgICAgZGVsZXRlIF80Mzc2OworICAgIGRlbGV0ZSBf
NDM3NzsKKyAgICBkZWxldGUgXzQzNzg7CisgICAgZGVsZXRlIF80Mzc5OworICAgIGRlbGV0ZSBf
NDM4MDsKKyAgICBkZWxldGUgXzQzODE7CisgICAgZGVsZXRlIF80MzgyOworICAgIGRlbGV0ZSBf
NDM4MzsKKyAgICBkZWxldGUgXzQzODQ7CisgICAgZGVsZXRlIF80Mzg1OworICAgIGRlbGV0ZSBf
NDM4NjsKKyAgICBkZWxldGUgXzQzODc7CisgICAgZGVsZXRlIF80Mzg4OworICAgIGRlbGV0ZSBf
NDM4OTsKKyAgICBkZWxldGUgXzQzOTA7CisgICAgZGVsZXRlIF80MzkxOworICAgIGRlbGV0ZSBf
NDM5MjsKKyAgICBkZWxldGUgXzQzOTM7CisgICAgZGVsZXRlIF80Mzk0OworICAgIGF1dG8qIF80
Mzk1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQzOTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDM5NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80Mzk4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQzOTkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQwMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDAxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MDIgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQwMyA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDA0ID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MDUgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQw
NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80NDA3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ0MDggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDQwOSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NDEwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ0MTEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQxMiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDEzID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgXzQ0MTEtPmFkZCg1KTsKKyAgICBfNDQxMS0+
YWRkKDQxKTsKKyAgICBfNDQxMi0+YWRkKDUpOworICAgIF80NDEyLT5hZGQoNDEpOworICAgIF80
Mzk1LT5hZGQoNSk7CisgICAgXzQzOTUtPmFkZCg0MSk7CisgICAgXzQ0MTAtPmFkZCg1KTsKKyAg
ICBfNDQxMC0+YWRkKDQxKTsKKyAgICBfNDQwOC0+YWRkKDUpOworICAgIF80NDA4LT5hZGQoNDEp
OworICAgIF80NDA4LT5hZGQoNDkpOworICAgIF80NDA4LT5hZGQoNjcpOworICAgIF80NDA4LT5h
ZGQoNDYpOworICAgIF80NDA4LT5hZGQoNTkpOworICAgIF80NDA4LT5hZGQoNTYpOworICAgIF80
NDA4LT5hZGQoMzg4KTsKKyAgICBfNDQwNy0+YWRkKDUpOworICAgIF80NDA3LT5hZGQoNDkpOwor
ICAgIF80NDA3LT5hZGQoNjcpOworICAgIF80NDA3LT5hZGQoNTYpOworICAgIF80NDA3LT5hZGQo
NDEpOworICAgIF80NDA3LT5hZGQoNDYpOworICAgIF80NDA3LT5hZGQoNTkpOworICAgIF80NDA3
LT5hZGQoMjgwKTsKKyAgICBfNDQwNy0+YWRkKDEwMyk7CisgICAgXzQ0MDctPmFkZCgyNyk7Cisg
ICAgXzQ0MDctPmFkZCgzNSk7CisgICAgXzQ0MDctPmFkZCgyNzUpOworICAgIF80NDA3LT5hZGQo
OTcpOworICAgIF80Mzk5LT5hZGQoOTcpOworICAgIF80Mzk5LT5hZGQoMjgwKTsKKyAgICBfNDM5
OS0+YWRkKDEwMyk7CisgICAgXzQzOTktPmFkZCgzNSk7CisgICAgXzQzOTktPmFkZCg1KTsKKyAg
ICBfNDM5OS0+YWRkKDQ5KTsKKyAgICBfNDM5OS0+YWRkKDY3KTsKKyAgICBfNDM5OS0+YWRkKDU2
KTsKKyAgICBfNDM5OS0+YWRkKDQxKTsKKyAgICBfNDM5OS0+YWRkKDI3KTsKKyAgICBfNDM5OS0+
YWRkKDU5KTsKKyAgICBfNDM5OS0+YWRkKDQ2KTsKKyAgICBfNDM5OS0+YWRkKDMzMyk7CisgICAg
XzQzOTktPmFkZCgzMzQpOworICAgIF80Mzk5LT5hZGQoMzg3KTsKKyAgICBfNDQwNi0+YWRkKDk3
KTsKKyAgICBfNDQwNi0+YWRkKDI4MCk7CisgICAgXzQ0MDYtPmFkZCgxMDMpOworICAgIF80NDA2
LT5hZGQoMzUpOworICAgIF80NDA2LT5hZGQoNSk7CisgICAgXzQ0MDYtPmFkZCg0OSk7CisgICAg
XzQ0MDYtPmFkZCg2Nyk7CisgICAgXzQ0MDYtPmFkZCg1Nik7CisgICAgXzQ0MDYtPmFkZCg0MSk7
CisgICAgXzQ0MDYtPmFkZCgyNyk7CisgICAgXzQ0MDYtPmFkZCg1OSk7CisgICAgXzQ0MDYtPmFk
ZCg0Nik7CisgICAgXzQ0MDYtPmFkZCgzMzMpOworICAgIF80NDA2LT5hZGQoMzM0KTsKKyAgICBf
NDQwNi0+YWRkKDM4Nyk7CisgICAgXzQ0MDQtPmFkZCgzMzMpOworICAgIF80NDA0LT5hZGQoMjgw
KTsKKyAgICBfNDQwNC0+YWRkKDQ2KTsKKyAgICBfNDQwNC0+YWRkKDEwMyk7CisgICAgXzQ0MDQt
PmFkZCgzNSk7CisgICAgXzQ0MDQtPmFkZCg1KTsKKyAgICBfNDQwNC0+YWRkKDQ5KTsKKyAgICBf
NDQwNC0+YWRkKDY3KTsKKyAgICBfNDQwNC0+YWRkKDU2KTsKKyAgICBfNDQwNC0+YWRkKDQxKTsK
KyAgICBfNDQwNC0+YWRkKDI3KTsKKyAgICBfNDQwNC0+YWRkKDk3KTsKKyAgICBfNDQwNC0+YWRk
KDMzNCk7CisgICAgXzQ0MDQtPmFkZCg1OSk7CisgICAgXzQ0MDQtPmFkZCgyMTMpOworICAgIF80
NDA0LT5hZGQoMTQ0KTsKKyAgICBfNDQwNC0+YWRkKDMxMik7CisgICAgXzQ0MDQtPmFkZCgzMDgp
OworICAgIF80NDA0LT5hZGQoMTQzKTsKKyAgICBfNDQwNC0+YWRkKDMwNSk7CisgICAgXzQ0MDQt
PmFkZCgzMTApOworICAgIF80NDA0LT5hZGQoMzA3KTsKKyAgICBfNDQwNS0+YWRkKDMzMyk7Cisg
ICAgXzQ0MDUtPmFkZCgyODApOworICAgIF80NDA1LT5hZGQoNDYpOworICAgIF80NDA1LT5hZGQo
MTAzKTsKKyAgICBfNDQwNS0+YWRkKDM1KTsKKyAgICBfNDQwNS0+YWRkKDUpOworICAgIF80NDA1
LT5hZGQoNDkpOworICAgIF80NDA1LT5hZGQoNjcpOworICAgIF80NDA1LT5hZGQoNTYpOworICAg
IF80NDA1LT5hZGQoNDEpOworICAgIF80NDA1LT5hZGQoMjcpOworICAgIF80NDA1LT5hZGQoOTcp
OworICAgIF80NDA1LT5hZGQoMzM0KTsKKyAgICBfNDQwNS0+YWRkKDU5KTsKKyAgICBfNDQwNS0+
YWRkKDIxMyk7CisgICAgXzQ0MDUtPmFkZCgxNDQpOworICAgIF80NDA1LT5hZGQoMzEyKTsKKyAg
ICBfNDQwNS0+YWRkKDMwOCk7CisgICAgXzQ0MDUtPmFkZCgxNDMpOworICAgIF80NDA1LT5hZGQo
MzA1KTsKKyAgICBfNDQwNS0+YWRkKDMxMCk7CisgICAgXzQ0MDUtPmFkZCgzMDcpOworICAgIF80
NDAwLT5hZGQoMzMzKTsKKyAgICBfNDQwMC0+YWRkKDM1KTsKKyAgICBfNDQwMC0+YWRkKDMwNyk7
CisgICAgXzQ0MDAtPmFkZCgzMzQpOworICAgIF80NDAwLT5hZGQoMzEyKTsKKyAgICBfNDQwMC0+
YWRkKDQ2KTsKKyAgICBfNDQwMC0+YWRkKDU5KTsKKyAgICBfNDQwMC0+YWRkKDMwNSk7CisgICAg
XzQ0MDAtPmFkZCgyODApOworICAgIF80NDAwLT5hZGQoMTAzKTsKKyAgICBfNDQwMC0+YWRkKDUp
OworICAgIF80NDAwLT5hZGQoMzEwKTsKKyAgICBfNDQwMC0+YWRkKDQ5KTsKKyAgICBfNDQwMC0+
YWRkKDY3KTsKKyAgICBfNDQwMC0+YWRkKDMwOCk7CisgICAgXzQ0MDAtPmFkZCg1Nik7CisgICAg
XzQ0MDAtPmFkZCg0MSk7CisgICAgXzQ0MDAtPmFkZCgyNyk7CisgICAgXzQ0MDAtPmFkZCg5Nyk7
CisgICAgXzQ0MDAtPmFkZCgxNDMpOworICAgIF80NDAwLT5hZGQoMjEzKTsKKyAgICBfNDQwMC0+
YWRkKDE0NCk7CisgICAgXzQ0MDMtPmFkZCgzMzMpOworICAgIF80NDAzLT5hZGQoMzUpOworICAg
IF80NDAzLT5hZGQoMzA3KTsKKyAgICBfNDQwMy0+YWRkKDMzNCk7CisgICAgXzQ0MDMtPmFkZCgz
MTIpOworICAgIF80NDAzLT5hZGQoNDYpOworICAgIF80NDAzLT5hZGQoNTkpOworICAgIF80NDAz
LT5hZGQoMzA1KTsKKyAgICBfNDQwMy0+YWRkKDI4MCk7CisgICAgXzQ0MDMtPmFkZCgxMDMpOwor
ICAgIF80NDAzLT5hZGQoNSk7CisgICAgXzQ0MDMtPmFkZCgzMTApOworICAgIF80NDAzLT5hZGQo
NDkpOworICAgIF80NDAzLT5hZGQoNjcpOworICAgIF80NDAzLT5hZGQoMzA4KTsKKyAgICBfNDQw
My0+YWRkKDU2KTsKKyAgICBfNDQwMy0+YWRkKDQxKTsKKyAgICBfNDQwMy0+YWRkKDI3KTsKKyAg
ICBfNDQwMy0+YWRkKDk3KTsKKyAgICBfNDQwMy0+YWRkKDE0Myk7CisgICAgXzQ0MDMtPmFkZCgy
MTMpOworICAgIF80NDAzLT5hZGQoMTQ0KTsKKyAgICBfNDQwMi0+YWRkKDMzMyk7CisgICAgXzQ0
MDItPmFkZCg5Nyk7CisgICAgXzQ0MDItPmFkZCgzNSk7CisgICAgXzQ0MDItPmFkZCg0MSk7Cisg
ICAgXzQ0MDItPmFkZCgzMzQpOworICAgIF80NDAyLT5hZGQoNDYpOworICAgIF80NDAyLT5hZGQo
NTYpOworICAgIF80NDAyLT5hZGQoMjgwKTsKKyAgICBfNDQwMi0+YWRkKDEwMyk7CisgICAgXzQ0
MDItPmFkZCg1KTsKKyAgICBfNDQwMi0+YWRkKDMxMCk7CisgICAgXzQ0MDItPmFkZCg0OSk7Cisg
ICAgXzQ0MDItPmFkZCg2Nyk7CisgICAgXzQ0MDItPmFkZCgzMDgpOworICAgIF80NDAyLT5hZGQo
MzEyKTsKKyAgICBfNDQwMi0+YWRkKDMwNyk7CisgICAgXzQ0MDItPmFkZCgyNyk7CisgICAgXzQ0
MDItPmFkZCgzMDUpOworICAgIF80NDAyLT5hZGQoNTkpOworICAgIF80NDAyLT5hZGQoMTQzKTsK
KyAgICBfNDQwMi0+YWRkKDIxMyk7CisgICAgXzQ0MDItPmFkZCgxNDQpOworICAgIF80NDAyLT5h
ZGQoNDQpOworICAgIF80NDAyLT5hZGQoMTcxKTsKKyAgICBfNDQwMi0+YWRkKDM4Nik7CisgICAg
XzQ0MDEtPmFkZCgzMzMpOworICAgIF80NDAxLT5hZGQoOTcpOworICAgIF80NDAxLT5hZGQoMzUp
OworICAgIF80NDAxLT5hZGQoNDEpOworICAgIF80NDAxLT5hZGQoMzM0KTsKKyAgICBfNDQwMS0+
YWRkKDQ2KTsKKyAgICBfNDQwMS0+YWRkKDU2KTsKKyAgICBfNDQwMS0+YWRkKDI4MCk7CisgICAg
XzQ0MDEtPmFkZCgxMDMpOworICAgIF80NDAxLT5hZGQoNSk7CisgICAgXzQ0MDEtPmFkZCgzMTAp
OworICAgIF80NDAxLT5hZGQoNDkpOworICAgIF80NDAxLT5hZGQoNjcpOworICAgIF80NDAxLT5h
ZGQoMzA4KTsKKyAgICBfNDQwMS0+YWRkKDMxMik7CisgICAgXzQ0MDEtPmFkZCgzMDcpOworICAg
IF80NDAxLT5hZGQoMjcpOworICAgIF80NDAxLT5hZGQoMzA1KTsKKyAgICBfNDQwMS0+YWRkKDU5
KTsKKyAgICBfNDQwMS0+YWRkKDE0Myk7CisgICAgXzQ0MDEtPmFkZCgyMTMpOworICAgIF80NDAx
LT5hZGQoMTQ0KTsKKyAgICBfNDQwMS0+YWRkKDQ0KTsKKyAgICBfNDQwMS0+YWRkKDE3MSk7Cisg
ICAgXzQ0MDEtPmFkZCgzODYpOworICAgIF80NDAwLT5hZGQoMzMzKTsKKyAgICBfNDQwMC0+YWRk
KDM1KTsKKyAgICBfNDQwMC0+YWRkKDQ0KTsKKyAgICBfNDQwMC0+YWRkKDE0NCk7CisgICAgXzQ0
MDAtPmFkZCgzMDcpOworICAgIF80NDAwLT5hZGQoMzM0KTsKKyAgICBfNDQwMC0+YWRkKDMxMik7
CisgICAgXzQ0MDAtPmFkZCg0Nik7CisgICAgXzQ0MDAtPmFkZCgxNzEpOworICAgIF80NDAwLT5h
ZGQoMzA1KTsKKyAgICBfNDQwMC0+YWRkKDI4MCk7CisgICAgXzQ0MDAtPmFkZCgxMDMpOworICAg
IF80NDAwLT5hZGQoNSk7CisgICAgXzQ0MDAtPmFkZCgzMTApOworICAgIF80NDAwLT5hZGQoNDkp
OworICAgIF80NDAwLT5hZGQoNjcpOworICAgIF80NDAwLT5hZGQoMzA4KTsKKyAgICBfNDQwMC0+
YWRkKDU2KTsKKyAgICBfNDQwMC0+YWRkKDQxKTsKKyAgICBfNDQwMC0+YWRkKDI3KTsKKyAgICBf
NDQwMC0+YWRkKDk3KTsKKyAgICBfNDQwMC0+YWRkKDU5KTsKKyAgICBfNDQwMC0+YWRkKDE0Myk7
CisgICAgXzQ0MDAtPmFkZCgyMTMpOworICAgIF80NDAwLT5hZGQoMjcwKTsKKyAgICBfNDQwMy0+
YWRkKDMzMyk7CisgICAgXzQ0MDMtPmFkZCgzNSk7CisgICAgXzQ0MDMtPmFkZCg0NCk7CisgICAg
XzQ0MDMtPmFkZCgxNDQpOworICAgIF80NDAzLT5hZGQoMzA3KTsKKyAgICBfNDQwMy0+YWRkKDMz
NCk7CisgICAgXzQ0MDMtPmFkZCgzMTIpOworICAgIF80NDAzLT5hZGQoNDYpOworICAgIF80NDAz
LT5hZGQoMTcxKTsKKyAgICBfNDQwMy0+YWRkKDMwNSk7CisgICAgXzQ0MDMtPmFkZCgyODApOwor
ICAgIF80NDAzLT5hZGQoMTAzKTsKKyAgICBfNDQwMy0+YWRkKDUpOworICAgIF80NDAzLT5hZGQo
MzEwKTsKKyAgICBfNDQwMy0+YWRkKDQ5KTsKKyAgICBfNDQwMy0+YWRkKDY3KTsKKyAgICBfNDQw
My0+YWRkKDMwOCk7CisgICAgXzQ0MDMtPmFkZCg1Nik7CisgICAgXzQ0MDMtPmFkZCg0MSk7Cisg
ICAgXzQ0MDMtPmFkZCgyNyk7CisgICAgXzQ0MDMtPmFkZCg5Nyk7CisgICAgXzQ0MDMtPmFkZCg1
OSk7CisgICAgXzQ0MDMtPmFkZCgxNDMpOworICAgIF80NDAzLT5hZGQoMjEzKTsKKyAgICBfNDQw
My0+YWRkKDI4NSk7CisgICAgXzQzOTgtPmFkZCgzMzMpOworICAgIF80Mzk4LT5hZGQoOTcpOwor
ICAgIF80Mzk4LT5hZGQoMzUpOworICAgIF80Mzk4LT5hZGQoNDQpOworICAgIF80Mzk4LT5hZGQo
NDEpOworICAgIF80Mzk4LT5hZGQoMzM0KTsKKyAgICBfNDM5OC0+YWRkKDQ2KTsKKyAgICBfNDM5
OC0+YWRkKDU2KTsKKyAgICBfNDM5OC0+YWRkKDIwNSk7CisgICAgXzQzOTgtPmFkZCgyODApOwor
ICAgIF80Mzk4LT5hZGQoMTAzKTsKKyAgICBfNDM5OC0+YWRkKDUpOworICAgIF80Mzk4LT5hZGQo
MzEwKTsKKyAgICBfNDM5OC0+YWRkKDQ5KTsKKyAgICBfNDM5OC0+YWRkKDY3KTsKKyAgICBfNDM5
OC0+YWRkKDMwOCk7CisgICAgXzQzOTgtPmFkZCgzMTIpOworICAgIF80Mzk4LT5hZGQoMjcwKTsK
KyAgICBfNDM5OC0+YWRkKDMwNyk7CisgICAgXzQzOTgtPmFkZCgyNyk7CisgICAgXzQzOTgtPmFk
ZCgzMDUpOworICAgIF80Mzk4LT5hZGQoNTkpOworICAgIF80Mzk4LT5hZGQoMTQzKTsKKyAgICBf
NDM5OC0+YWRkKDIzOCk7CisgICAgXzQzOTgtPmFkZCgxNDQpOworICAgIF80Mzk4LT5hZGQoMTk0
KTsKKyAgICBfNDM5OC0+YWRkKDE3MCk7CisgICAgXzQzOTgtPmFkZCgxNjYpOworICAgIF80Mzk4
LT5hZGQoMzMzKTsKKyAgICBfNDM5OC0+YWRkKDI4MCk7CisgICAgXzQzOTgtPmFkZCg0Nik7Cisg
ICAgXzQzOTgtPmFkZCgxMDMpOworICAgIF80Mzk4LT5hZGQoMzUpOworICAgIF80Mzk4LT5hZGQo
NSk7CisgICAgXzQzOTgtPmFkZCg0OSk7CisgICAgXzQzOTgtPmFkZCg2Nyk7CisgICAgXzQzOTgt
PmFkZCg1Nik7CisgICAgXzQzOTgtPmFkZCg0MSk7CisgICAgXzQzOTgtPmFkZCgyNyk7CisgICAg
XzQzOTgtPmFkZCg5Nyk7CisgICAgXzQzOTgtPmFkZCgzMzQpOworICAgIF80Mzk4LT5hZGQoNTkp
OworICAgIF80Mzk4LT5hZGQoMTQ3KTsKKyAgICBfNDM5Ny0+YWRkKDMzMyk7CisgICAgXzQzOTct
PmFkZCgyMzgpOworICAgIF80Mzk3LT5hZGQoMzUpOworICAgIF80Mzk3LT5hZGQoNDQpOworICAg
IF80Mzk3LT5hZGQoMTY2KTsKKyAgICBfNDM5Ny0+YWRkKDE0Myk7CisgICAgXzQzOTctPmFkZCgz
MDcpOworICAgIF80Mzk3LT5hZGQoMzM0KTsKKyAgICBfNDM5Ny0+YWRkKDMxMik7CisgICAgXzQz
OTctPmFkZCg0Nik7CisgICAgXzQzOTctPmFkZCgzMDUpOworICAgIF80Mzk3LT5hZGQoNTkpOwor
ICAgIF80Mzk3LT5hZGQoMTcwKTsKKyAgICBfNDM5Ny0+YWRkKDEwMyk7CisgICAgXzQzOTctPmFk
ZCg1KTsKKyAgICBfNDM5Ny0+YWRkKDMxMCk7CisgICAgXzQzOTctPmFkZCg0OSk7CisgICAgXzQz
OTctPmFkZCgxOTQpOworICAgIF80Mzk3LT5hZGQoMjA1KTsKKyAgICBfNDM5Ny0+YWRkKDY3KTsK
KyAgICBfNDM5Ny0+YWRkKDMwOCk7CisgICAgXzQzOTctPmFkZCg1Nik7CisgICAgXzQzOTctPmFk
ZCgyNzApOworICAgIF80Mzk3LT5hZGQoNDEpOworICAgIF80Mzk3LT5hZGQoMjcpOworICAgIF80
Mzk3LT5hZGQoMzg1KTsKKyAgICBfNDM5Ni0+YWRkKDMzMyk7CisgICAgXzQzOTYtPmFkZCgyMzgp
OworICAgIF80Mzk2LT5hZGQoMzUpOworICAgIF80Mzk2LT5hZGQoNDQpOworICAgIF80Mzk2LT5h
ZGQoMTY2KTsKKyAgICBfNDM5Ni0+YWRkKDE0Myk7CisgICAgXzQzOTYtPmFkZCgzMDcpOworICAg
IF80Mzk2LT5hZGQoMzM0KTsKKyAgICBfNDM5Ni0+YWRkKDMxMik7CisgICAgXzQzOTYtPmFkZCg0
Nik7CisgICAgXzQzOTYtPmFkZCgzMDUpOworICAgIF80Mzk2LT5hZGQoNTkpOworICAgIF80Mzk2
LT5hZGQoMTcwKTsKKyAgICBfNDM5Ni0+YWRkKDEwMyk7CisgICAgXzQzOTYtPmFkZCg1KTsKKyAg
ICBfNDM5Ni0+YWRkKDMxMCk7CisgICAgXzQzOTYtPmFkZCg0OSk7CisgICAgXzQzOTYtPmFkZCgx
OTQpOworICAgIF80Mzk2LT5hZGQoMjA1KTsKKyAgICBfNDM5Ni0+YWRkKDY3KTsKKyAgICBfNDM5
Ni0+YWRkKDMwOCk7CisgICAgXzQzOTYtPmFkZCg1Nik7CisgICAgXzQzOTYtPmFkZCgyNzApOwor
ICAgIF80Mzk2LT5hZGQoNDEpOworICAgIF80Mzk2LT5hZGQoMjcpOworICAgIF80Mzk2LT5hZGQo
Mzg1KTsKKyAgICBfNDM5NS0+YWRkKDMzMyk7CisgICAgXzQzOTUtPmFkZCg0OSk7CisgICAgXzQz
OTUtPmFkZCgzMTApOworICAgIF80Mzk1LT5hZGQoMzUpOworICAgIF80Mzk1LT5hZGQoNDQpOwor
ICAgIF80Mzk1LT5hZGQoNDEpOworICAgIF80Mzk1LT5hZGQoMjA1KTsKKyAgICBfNDM5NS0+YWRk
KDQ2KTsKKyAgICBfNDM5NS0+YWRkKDU5KTsKKyAgICBfNDM5NS0+YWRkKDE3MCk7CisgICAgXzQz
OTUtPmFkZCgxMDMpOworICAgIF80Mzk1LT5hZGQoNSk7CisgICAgXzQzOTUtPmFkZCgxNjYpOwor
ICAgIF80Mzk1LT5hZGQoMTQzKTsKKyAgICBfNDM5NS0+YWRkKDE5NCk7CisgICAgXzQzOTUtPmFk
ZCgyMzgpOworICAgIF80Mzk1LT5hZGQoNjcpOworICAgIF80Mzk1LT5hZGQoMzA4KTsKKyAgICBf
NDM5NS0+YWRkKDMxMik7CisgICAgXzQzOTUtPmFkZCg1Nik7CisgICAgXzQzOTUtPmFkZCgyNzAp
OworICAgIF80Mzk1LT5hZGQoMzA3KTsKKyAgICBfNDM5NS0+YWRkKDI3KTsKKyAgICBfNDM5NS0+
YWRkKDMwNSk7CisgICAgXzQzOTUtPmFkZCg0OCk7CisgICAgXzQ0MTAtPmFkZCgzMzMpOworICAg
IF80NDEwLT5hZGQoNDkpOworICAgIF80NDEwLT5hZGQoMzEwKTsKKyAgICBfNDQxMC0+YWRkKDM1
KTsKKyAgICBfNDQxMC0+YWRkKDQ0KTsKKyAgICBfNDQxMC0+YWRkKDQxKTsKKyAgICBfNDQxMC0+
YWRkKDIwNSk7CisgICAgXzQ0MTAtPmFkZCg0Nik7CisgICAgXzQ0MTAtPmFkZCgxNDMpOworICAg
IF80NDEwLT5hZGQoMTcwKTsKKyAgICBfNDQxMC0+YWRkKDEwMyk7CisgICAgXzQ0MTAtPmFkZCg1
KTsKKyAgICBfNDQxMC0+YWRkKDE2Nik7CisgICAgXzQ0MTAtPmFkZCgzMzQpOworICAgIF80NDEw
LT5hZGQoMTk0KTsKKyAgICBfNDQxMC0+YWRkKDIzOCk7CisgICAgXzQ0MTAtPmFkZCg2Nyk7Cisg
ICAgXzQ0MTAtPmFkZCgzMDgpOworICAgIF80NDEwLT5hZGQoMzEyKTsKKyAgICBfNDQxMC0+YWRk
KDU2KTsKKyAgICBfNDQxMC0+YWRkKDI3MCk7CisgICAgXzQ0MTAtPmFkZCgzMDcpOworICAgIF80
NDEwLT5hZGQoMjcpOworICAgIF80NDEwLT5hZGQoMzA1KTsKKyAgICBfNDQxMC0+YWRkKDU5KTsK
KyAgICBfNDQxMC0+YWRkKDE0Nik7CisgICAgXzQ0MDgtPmFkZCgzMzMpOworICAgIF80NDA4LT5h
ZGQoMjcpOworICAgIF80NDA4LT5hZGQoMzUpOworICAgIF80NDA4LT5hZGQoNDQpOworICAgIF80
NDA4LT5hZGQoMTY2KTsKKyAgICBfNDQwOC0+YWRkKDE0Myk7CisgICAgXzQ0MDgtPmFkZCgzMDcp
OworICAgIF80NDA4LT5hZGQoMjA1KTsKKyAgICBfNDQwOC0+YWRkKDI3MCk7CisgICAgXzQ0MDgt
PmFkZCgzMDUpOworICAgIF80NDA4LT5hZGQoMTcwKTsKKyAgICBfNDQwOC0+YWRkKDEwMyk7Cisg
ICAgXzQ0MDgtPmFkZCgzMDgpOworICAgIF80NDA4LT5hZGQoMzEwKTsKKyAgICBfNDQwOC0+YWRk
KDMzNCk7CisgICAgXzQ0MDgtPmFkZCgxOTQpOworICAgIF80NDA4LT5hZGQoMjM4KTsKKyAgICBf
NDQwOC0+YWRkKDMxMik7CisgICAgXzQ0MDctPmFkZCgzMzMpOworICAgIF80NDA3LT5hZGQoMjM4
KTsKKyAgICBfNDQwNy0+YWRkKDMxMCk7CisgICAgXzQ0MDctPmFkZCgyNzApOworICAgIF80NDA3
LT5hZGQoNDQpOworICAgIF80NDA3LT5hZGQoMTQzKTsKKyAgICBfNDQwNy0+YWRkKDMxMik7Cisg
ICAgXzQ0MDctPmFkZCgzMDgpOworICAgIF80NDA3LT5hZGQoMzA1KTsKKyAgICBfNDQwNy0+YWRk
KDMzNCk7CisgICAgXzQ0MDctPmFkZCgxNzApOworICAgIF80NDA3LT5hZGQoMzA3KTsKKyAgICBf
NDQwNy0+YWRkKDIwNSk7CisgICAgXzQ0MDctPmFkZCgxNjYpOworICAgIF80NDA3LT5hZGQoMTk0
KTsKKyAgICBfNDM5OS0+YWRkKDMxMCk7CisgICAgXzQzOTktPmFkZCgyMzgpOworICAgIF80Mzk5
LT5hZGQoNDQpOworICAgIF80Mzk5LT5hZGQoMTY2KTsKKyAgICBfNDM5OS0+YWRkKDMwNyk7Cisg
ICAgXzQzOTktPmFkZCgzMDgpOworICAgIF80Mzk5LT5hZGQoMjA1KTsKKyAgICBfNDM5OS0+YWRk
KDMxMik7CisgICAgXzQzOTktPmFkZCgyNzApOworICAgIF80Mzk5LT5hZGQoMTQzKTsKKyAgICBf
NDM5OS0+YWRkKDMwNSk7CisgICAgXzQzOTktPmFkZCgxOTQpOworICAgIF80Mzk5LT5hZGQoMTcw
KTsKKyAgICBfNDQwNi0+YWRkKDMxMCk7CisgICAgXzQ0MDYtPmFkZCgyMzgpOworICAgIF80NDA2
LT5hZGQoNDQpOworICAgIF80NDA2LT5hZGQoMTY2KTsKKyAgICBfNDQwNi0+YWRkKDMwNyk7Cisg
ICAgXzQ0MDYtPmFkZCgzMDgpOworICAgIF80NDA2LT5hZGQoMjA1KTsKKyAgICBfNDQwNi0+YWRk
KDMxMik7CisgICAgXzQ0MDYtPmFkZCgyNzApOworICAgIF80NDA2LT5hZGQoMTQzKTsKKyAgICBf
NDQwNi0+YWRkKDMwNSk7CisgICAgXzQ0MDYtPmFkZCgxOTQpOworICAgIF80NDA2LT5hZGQoMTcw
KTsKKyAgICBfNDQwNC0+YWRkKDE3MCk7CisgICAgXzQ0MDQtPmFkZCgyNzApOworICAgIF80NDA0
LT5hZGQoMjM4KTsKKyAgICBfNDQwNC0+YWRkKDQ0KTsKKyAgICBfNDQwNC0+YWRkKDE2Nik7Cisg
ICAgXzQ0MDQtPmFkZCgyMDUpOworICAgIF80NDA0LT5hZGQoMTk0KTsKKyAgICBfNDQwNS0+YWRk
KDE3MCk7CisgICAgXzQ0MDUtPmFkZCgyNzApOworICAgIF80NDA1LT5hZGQoMjM4KTsKKyAgICBf
NDQwNS0+YWRkKDQ0KTsKKyAgICBfNDQwNS0+YWRkKDE2Nik7CisgICAgXzQ0MDUtPmFkZCgyMDUp
OworICAgIF80NDA1LT5hZGQoMTk0KTsKKyAgICBfNDQwMC0+YWRkKDIzOCk7CisgICAgXzQ0MDAt
PmFkZCgxNzApOworICAgIF80NDAwLT5hZGQoNDQpOworICAgIF80NDAwLT5hZGQoMTY2KTsKKyAg
ICBfNDQwMC0+YWRkKDI3MCk7CisgICAgXzQ0MDAtPmFkZCgxOTQpOworICAgIF80NDAwLT5hZGQo
MjA1KTsKKyAgICBfNDQwMy0+YWRkKDIzOCk7CisgICAgXzQ0MDMtPmFkZCgxNzApOworICAgIF80
NDAzLT5hZGQoNDQpOworICAgIF80NDAzLT5hZGQoMTY2KTsKKyAgICBfNDQwMy0+YWRkKDI3MCk7
CisgICAgXzQ0MDMtPmFkZCgxOTQpOworICAgIF80NDAzLT5hZGQoMjA1KTsKKyAgICBfNDQwMi0+
YWRkKDIzOCk7CisgICAgXzQ0MDItPmFkZCgyMDUpOworICAgIF80NDAyLT5hZGQoMTk0KTsKKyAg
ICBfNDQwMi0+YWRkKDI3MCk7CisgICAgXzQ0MDItPmFkZCgxNzApOworICAgIF80NDAyLT5hZGQo
MTY2KTsKKyAgICBfNDQwMS0+YWRkKDIzOCk7CisgICAgXzQ0MDEtPmFkZCgyMDUpOworICAgIF80
NDAxLT5hZGQoMTk0KTsKKyAgICBfNDQwMS0+YWRkKDI3MCk7CisgICAgXzQ0MDEtPmFkZCgxNzAp
OworICAgIF80NDAxLT5hZGQoMTY2KTsKKyAgICBfNDQwMC0+YWRkKDE5NCk7CisgICAgXzQ0MDAt
PmFkZCgyMDUpOworICAgIF80NDAwLT5hZGQoMTcwKTsKKyAgICBfNDQwMC0+YWRkKDIzOCk7Cisg
ICAgXzQ0MDAtPmFkZCgxNjYpOworICAgIF80NDAzLT5hZGQoMjM4KTsKKyAgICBfNDQwMy0+YWRk
KDIwNSk7CisgICAgXzQ0MDMtPmFkZCgxOTQpOworICAgIF80NDAzLT5hZGQoMjcwKTsKKyAgICBf
NDQwMy0+YWRkKDE2Nik7CisgICAgXzQ0MDMtPmFkZCgxNzApOworICAgIF80Mzk4LT5hZGQoMTcw
KTsKKyAgICBfNDM5OC0+YWRkKDE0Myk7CisgICAgXzQzOTgtPmFkZCgyNzApOworICAgIF80Mzk4
LT5hZGQoNDQpOworICAgIF80Mzk4LT5hZGQoMTY2KTsKKyAgICBfNDM5OC0+YWRkKDMwNyk7Cisg
ICAgXzQzOTgtPmFkZCgyMzgpOworICAgIF80Mzk4LT5hZGQoMjA1KTsKKyAgICBfNDM5OC0+YWRk
KDMwOCk7CisgICAgXzQzOTgtPmFkZCgzMTIpOworICAgIF80Mzk4LT5hZGQoMTk0KTsKKyAgICBf
NDM5OC0+YWRkKDMwNSk7CisgICAgXzQzOTgtPmFkZCgzMTApOworICAgIGRlbGV0ZSBfNDM5NTsK
KyAgICBkZWxldGUgXzQzOTY7CisgICAgZGVsZXRlIF80Mzk3OworICAgIGRlbGV0ZSBfNDM5ODsK
KyAgICBkZWxldGUgXzQzOTk7CisgICAgZGVsZXRlIF80NDAwOworICAgIGRlbGV0ZSBfNDQwMTsK
KyAgICBkZWxldGUgXzQ0MDI7CisgICAgZGVsZXRlIF80NDAzOworICAgIGRlbGV0ZSBfNDQwNDsK
KyAgICBkZWxldGUgXzQ0MDU7CisgICAgZGVsZXRlIF80NDA2OworICAgIGRlbGV0ZSBfNDQwNzsK
KyAgICBkZWxldGUgXzQ0MDg7CisgICAgZGVsZXRlIF80NDA5OworICAgIGRlbGV0ZSBfNDQxMDsK
KyAgICBkZWxldGUgXzQ0MTE7CisgICAgZGVsZXRlIF80NDEyOworICAgIGRlbGV0ZSBfNDQxMzsK
KyAgICBhdXRvKiBfNDQxNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NDE1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ0MTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQxNyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDE4ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MTkgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQyMCA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDIxID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MjIg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDQyMyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NDI0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ0MjUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDQyNiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NDI3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MjggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQyOSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDMwID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0MzEgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQzMiA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIF80NDMwLT5hZGQoNSk7
CisgICAgXzQ0MzAtPmFkZCg0MSk7CisgICAgXzQ0MzEtPmFkZCg1KTsKKyAgICBfNDQzMS0+YWRk
KDQxKTsKKyAgICBfNDQxNC0+YWRkKDUpOworICAgIF80NDE0LT5hZGQoNDEpOworICAgIF80NDI5
LT5hZGQoNSk7CisgICAgXzQ0MjktPmFkZCg0MSk7CisgICAgXzQ0MjctPmFkZCg1KTsKKyAgICBf
NDQyNy0+YWRkKDQxKTsKKyAgICBfNDQyNy0+YWRkKDQ5KTsKKyAgICBfNDQyNy0+YWRkKDY3KTsK
KyAgICBfNDQyNy0+YWRkKDQ2KTsKKyAgICBfNDQyNy0+YWRkKDU5KTsKKyAgICBfNDQyNy0+YWRk
KDU2KTsKKyAgICBfNDQyNy0+YWRkKDM4OSk7CisgICAgXzQ0MjYtPmFkZCg0Nik7CisgICAgXzQ0
MjYtPmFkZCg1KTsKKyAgICBfNDQyNi0+YWRkKDQ5KTsKKyAgICBfNDQyNi0+YWRkKDY3KTsKKyAg
ICBfNDQyNi0+YWRkKDU2KTsKKyAgICBfNDQyNi0+YWRkKDQxKTsKKyAgICBfNDQyNi0+YWRkKDU5
KTsKKyAgICBfNDQyNi0+YWRkKDI4MCk7CisgICAgXzQ0MjYtPmFkZCgxMDMpOworICAgIF80NDI2
LT5hZGQoMjcpOworICAgIF80NDI2LT5hZGQoMzUpOworICAgIF80NDI2LT5hZGQoMjc1KTsKKyAg
ICBfNDQyNi0+YWRkKDk3KTsKKyAgICBfNDQxOC0+YWRkKDk3KTsKKyAgICBfNDQxOC0+YWRkKDI4
MCk7CisgICAgXzQ0MTgtPmFkZCgxMDMpOworICAgIF80NDE4LT5hZGQoMzUpOworICAgIF80NDE4
LT5hZGQoNSk7CisgICAgXzQ0MTgtPmFkZCg0OSk7CisgICAgXzQ0MTgtPmFkZCg2Nyk7CisgICAg
XzQ0MTgtPmFkZCg1Nik7CisgICAgXzQ0MTgtPmFkZCg0MSk7CisgICAgXzQ0MTgtPmFkZCgyNyk7
CisgICAgXzQ0MTgtPmFkZCg1OSk7CisgICAgXzQ0MTgtPmFkZCg0Nik7CisgICAgXzQ0MTgtPmFk
ZCgzMzQpOworICAgIF80NDE4LT5hZGQoMzg4KTsKKyAgICBfNDQyNS0+YWRkKDk3KTsKKyAgICBf
NDQyNS0+YWRkKDI4MCk7CisgICAgXzQ0MjUtPmFkZCgxMDMpOworICAgIF80NDI1LT5hZGQoMzUp
OworICAgIF80NDI1LT5hZGQoNSk7CisgICAgXzQ0MjUtPmFkZCg0OSk7CisgICAgXzQ0MjUtPmFk
ZCg2Nyk7CisgICAgXzQ0MjUtPmFkZCg1Nik7CisgICAgXzQ0MjUtPmFkZCg0MSk7CisgICAgXzQ0
MjUtPmFkZCgyNyk7CisgICAgXzQ0MjUtPmFkZCg1OSk7CisgICAgXzQ0MjUtPmFkZCg0Nik7Cisg
ICAgXzQ0MjUtPmFkZCgzMzQpOworICAgIF80NDI1LT5hZGQoMzg4KTsKKyAgICBfNDQyMy0+YWRk
KDI4MCk7CisgICAgXzQ0MjMtPmFkZCgxMDMpOworICAgIF80NDIzLT5hZGQoMzUpOworICAgIF80
NDIzLT5hZGQoNSk7CisgICAgXzQ0MjMtPmFkZCg0OSk7CisgICAgXzQ0MjMtPmFkZCg2Nyk7Cisg
ICAgXzQ0MjMtPmFkZCg1Nik7CisgICAgXzQ0MjMtPmFkZCg0MSk7CisgICAgXzQ0MjMtPmFkZCgy
Nyk7CisgICAgXzQ0MjMtPmFkZCg5Nyk7CisgICAgXzQ0MjMtPmFkZCg0Nik7CisgICAgXzQ0MjMt
PmFkZCgzMzQpOworICAgIF80NDIzLT5hZGQoNTkpOworICAgIF80NDIzLT5hZGQoMjEzKTsKKyAg
ICBfNDQyMy0+YWRkKDE0NCk7CisgICAgXzQ0MjMtPmFkZCgzMTIpOworICAgIF80NDIzLT5hZGQo
MzA4KTsKKyAgICBfNDQyMy0+YWRkKDMwNSk7CisgICAgXzQ0MjMtPmFkZCgzMTApOworICAgIF80
NDIzLT5hZGQoMzA3KTsKKyAgICBfNDQyMy0+YWRkKDE0Myk7CisgICAgXzQ0MjQtPmFkZCgyODAp
OworICAgIF80NDI0LT5hZGQoMTAzKTsKKyAgICBfNDQyNC0+YWRkKDM1KTsKKyAgICBfNDQyNC0+
YWRkKDUpOworICAgIF80NDI0LT5hZGQoNDkpOworICAgIF80NDI0LT5hZGQoNjcpOworICAgIF80
NDI0LT5hZGQoNTYpOworICAgIF80NDI0LT5hZGQoNDEpOworICAgIF80NDI0LT5hZGQoMjcpOwor
ICAgIF80NDI0LT5hZGQoOTcpOworICAgIF80NDI0LT5hZGQoNDYpOworICAgIF80NDI0LT5hZGQo
MzM0KTsKKyAgICBfNDQyNC0+YWRkKDU5KTsKKyAgICBfNDQyNC0+YWRkKDIxMyk7CisgICAgXzQ0
MjQtPmFkZCgxNDQpOworICAgIF80NDI0LT5hZGQoMzEyKTsKKyAgICBfNDQyNC0+YWRkKDMwOCk7
CisgICAgXzQ0MjQtPmFkZCgzMDUpOworICAgIF80NDI0LT5hZGQoMzEwKTsKKyAgICBfNDQyNC0+
YWRkKDMwNyk7CisgICAgXzQ0MjQtPmFkZCgxNDMpOworICAgIF80NDE5LT5hZGQoMzUpOworICAg
IF80NDE5LT5hZGQoMzA3KTsKKyAgICBfNDQxOS0+YWRkKDMzNCk7CisgICAgXzQ0MTktPmFkZCg0
Nik7CisgICAgXzQ0MTktPmFkZCg1Nik7CisgICAgXzQ0MTktPmFkZCg1OSk7CisgICAgXzQ0MTkt
PmFkZCgzMDUpOworICAgIF80NDE5LT5hZGQoMjgwKTsKKyAgICBfNDQxOS0+YWRkKDEwMyk7Cisg
ICAgXzQ0MTktPmFkZCg1KTsKKyAgICBfNDQxOS0+YWRkKDMxMCk7CisgICAgXzQ0MTktPmFkZCg0
OSk7CisgICAgXzQ0MTktPmFkZCg2Nyk7CisgICAgXzQ0MTktPmFkZCgzMDgpOworICAgIF80NDE5
LT5hZGQoMzEyKTsKKyAgICBfNDQxOS0+YWRkKDQxKTsKKyAgICBfNDQxOS0+YWRkKDI3KTsKKyAg
ICBfNDQxOS0+YWRkKDk3KTsKKyAgICBfNDQxOS0+YWRkKDE0Myk7CisgICAgXzQ0MTktPmFkZCgy
MTMpOworICAgIF80NDE5LT5hZGQoMTQ0KTsKKyAgICBfNDQyMi0+YWRkKDM1KTsKKyAgICBfNDQy
Mi0+YWRkKDMwNyk7CisgICAgXzQ0MjItPmFkZCgzMzQpOworICAgIF80NDIyLT5hZGQoNDYpOwor
ICAgIF80NDIyLT5hZGQoNTYpOworICAgIF80NDIyLT5hZGQoNTkpOworICAgIF80NDIyLT5hZGQo
MzA1KTsKKyAgICBfNDQyMi0+YWRkKDI4MCk7CisgICAgXzQ0MjItPmFkZCgxMDMpOworICAgIF80
NDIyLT5hZGQoNSk7CisgICAgXzQ0MjItPmFkZCgzMTApOworICAgIF80NDIyLT5hZGQoNDkpOwor
ICAgIF80NDIyLT5hZGQoNjcpOworICAgIF80NDIyLT5hZGQoMzA4KTsKKyAgICBfNDQyMi0+YWRk
KDMxMik7CisgICAgXzQ0MjItPmFkZCg0MSk7CisgICAgXzQ0MjItPmFkZCgyNyk7CisgICAgXzQ0
MjItPmFkZCg5Nyk7CisgICAgXzQ0MjItPmFkZCgxNDMpOworICAgIF80NDIyLT5hZGQoMjEzKTsK
KyAgICBfNDQyMi0+YWRkKDE0NCk7CisgICAgXzQ0MjEtPmFkZCg5Nyk7CisgICAgXzQ0MjEtPmFk
ZCgzNSk7CisgICAgXzQ0MjEtPmFkZCg0MSk7CisgICAgXzQ0MjEtPmFkZCgzMzQpOworICAgIF80
NDIxLT5hZGQoNDYpOworICAgIF80NDIxLT5hZGQoNTYpOworICAgIF80NDIxLT5hZGQoMjgwKTsK
KyAgICBfNDQyMS0+YWRkKDEwMyk7CisgICAgXzQ0MjEtPmFkZCg1KTsKKyAgICBfNDQyMS0+YWRk
KDMxMCk7CisgICAgXzQ0MjEtPmFkZCg0OSk7CisgICAgXzQ0MjEtPmFkZCg2Nyk7CisgICAgXzQ0
MjEtPmFkZCgzMDgpOworICAgIF80NDIxLT5hZGQoMzEyKTsKKyAgICBfNDQyMS0+YWRkKDMwNyk7
CisgICAgXzQ0MjEtPmFkZCgyNyk7CisgICAgXzQ0MjEtPmFkZCgzMDUpOworICAgIF80NDIxLT5h
ZGQoNTkpOworICAgIF80NDIxLT5hZGQoMTQzKTsKKyAgICBfNDQyMS0+YWRkKDIxMyk7CisgICAg
XzQ0MjEtPmFkZCgxNDQpOworICAgIF80NDIxLT5hZGQoNDQpOworICAgIF80NDIxLT5hZGQoMTcx
KTsKKyAgICBfNDQyMS0+YWRkKDM4Nyk7CisgICAgXzQ0MjAtPmFkZCg5Nyk7CisgICAgXzQ0MjAt
PmFkZCgzNSk7CisgICAgXzQ0MjAtPmFkZCg0MSk7CisgICAgXzQ0MjAtPmFkZCgzMzQpOworICAg
IF80NDIwLT5hZGQoNDYpOworICAgIF80NDIwLT5hZGQoNTYpOworICAgIF80NDIwLT5hZGQoMjgw
KTsKKyAgICBfNDQyMC0+YWRkKDEwMyk7CisgICAgXzQ0MjAtPmFkZCg1KTsKKyAgICBfNDQyMC0+
YWRkKDMxMCk7CisgICAgXzQ0MjAtPmFkZCg0OSk7CisgICAgXzQ0MjAtPmFkZCg2Nyk7CisgICAg
XzQ0MjAtPmFkZCgzMDgpOworICAgIF80NDIwLT5hZGQoMzEyKTsKKyAgICBfNDQyMC0+YWRkKDMw
Nyk7CisgICAgXzQ0MjAtPmFkZCgyNyk7CisgICAgXzQ0MjAtPmFkZCgzMDUpOworICAgIF80NDIw
LT5hZGQoNTkpOworICAgIF80NDIwLT5hZGQoMTQzKTsKKyAgICBfNDQyMC0+YWRkKDIxMyk7Cisg
ICAgXzQ0MjAtPmFkZCgxNDQpOworICAgIF80NDIwLT5hZGQoNDQpOworICAgIF80NDIwLT5hZGQo
MTcxKTsKKyAgICBfNDQyMC0+YWRkKDM4Nyk7CisgICAgXzQ0MTktPmFkZCgxNDQpOworICAgIF80
NDE5LT5hZGQoMzUpOworICAgIF80NDE5LT5hZGQoNDQpOworICAgIF80NDE5LT5hZGQoMjEzKTsK
KyAgICBfNDQxOS0+YWRkKDMwNyk7CisgICAgXzQ0MTktPmFkZCgzMzQpOworICAgIF80NDE5LT5h
ZGQoMzEyKTsKKyAgICBfNDQxOS0+YWRkKDQ2KTsKKyAgICBfNDQxOS0+YWRkKDE3MSk7CisgICAg
XzQ0MTktPmFkZCgzMDUpOworICAgIF80NDE5LT5hZGQoMjgwKTsKKyAgICBfNDQxOS0+YWRkKDEw
Myk7CisgICAgXzQ0MTktPmFkZCg1KTsKKyAgICBfNDQxOS0+YWRkKDMxMCk7CisgICAgXzQ0MTkt
PmFkZCg0OSk7CisgICAgXzQ0MTktPmFkZCg2Nyk7CisgICAgXzQ0MTktPmFkZCgzMDgpOworICAg
IF80NDE5LT5hZGQoNTYpOworICAgIF80NDE5LT5hZGQoNDEpOworICAgIF80NDE5LT5hZGQoMjcp
OworICAgIF80NDE5LT5hZGQoOTcpOworICAgIF80NDE5LT5hZGQoMTQzKTsKKyAgICBfNDQxOS0+
YWRkKDU5KTsKKyAgICBfNDQxOS0+YWRkKDI3MCk7CisgICAgXzQ0MjItPmFkZCgxNDQpOworICAg
IF80NDIyLT5hZGQoMzUpOworICAgIF80NDIyLT5hZGQoNDQpOworICAgIF80NDIyLT5hZGQoMjEz
KTsKKyAgICBfNDQyMi0+YWRkKDMwNyk7CisgICAgXzQ0MjItPmFkZCgzMzQpOworICAgIF80NDIy
LT5hZGQoMzEyKTsKKyAgICBfNDQyMi0+YWRkKDQ2KTsKKyAgICBfNDQyMi0+YWRkKDE3MSk7Cisg
ICAgXzQ0MjItPmFkZCgzMDUpOworICAgIF80NDIyLT5hZGQoMjgwKTsKKyAgICBfNDQyMi0+YWRk
KDEwMyk7CisgICAgXzQ0MjItPmFkZCg1KTsKKyAgICBfNDQyMi0+YWRkKDMxMCk7CisgICAgXzQ0
MjItPmFkZCg0OSk7CisgICAgXzQ0MjItPmFkZCg2Nyk7CisgICAgXzQ0MjItPmFkZCgzMDgpOwor
ICAgIF80NDIyLT5hZGQoNTYpOworICAgIF80NDIyLT5hZGQoNDEpOworICAgIF80NDIyLT5hZGQo
MjcpOworICAgIF80NDIyLT5hZGQoOTcpOworICAgIF80NDIyLT5hZGQoMTQzKTsKKyAgICBfNDQy
Mi0+YWRkKDU5KTsKKyAgICBfNDQyMi0+YWRkKDI4NSk7CisgICAgXzQ0MTctPmFkZCg5Nyk7Cisg
ICAgXzQ0MTctPmFkZCgzNSk7CisgICAgXzQ0MTctPmFkZCg0NCk7CisgICAgXzQ0MTctPmFkZCg0
MSk7CisgICAgXzQ0MTctPmFkZCgzMzQpOworICAgIF80NDE3LT5hZGQoNDYpOworICAgIF80NDE3
LT5hZGQoNTYpOworICAgIF80NDE3LT5hZGQoMjA1KTsKKyAgICBfNDQxNy0+YWRkKDI4MCk7Cisg
ICAgXzQ0MTctPmFkZCgxMDMpOworICAgIF80NDE3LT5hZGQoNSk7CisgICAgXzQ0MTctPmFkZCgz
MTApOworICAgIF80NDE3LT5hZGQoNDkpOworICAgIF80NDE3LT5hZGQoNjcpOworICAgIF80NDE3
LT5hZGQoMzA4KTsKKyAgICBfNDQxNy0+YWRkKDMxMik7CisgICAgXzQ0MTctPmFkZCgyNzApOwor
ICAgIF80NDE3LT5hZGQoMzA3KTsKKyAgICBfNDQxNy0+YWRkKDI3KTsKKyAgICBfNDQxNy0+YWRk
KDMwNSk7CisgICAgXzQ0MTctPmFkZCg1OSk7CisgICAgXzQ0MTctPmFkZCgxNDMpOworICAgIF80
NDE3LT5hZGQoMjM4KTsKKyAgICBfNDQxNy0+YWRkKDE0NCk7CisgICAgXzQ0MTctPmFkZCgxOTQp
OworICAgIF80NDE3LT5hZGQoMTcwKTsKKyAgICBfNDQxNy0+YWRkKDE2Nik7CisgICAgXzQ0MTct
PmFkZCgyODApOworICAgIF80NDE3LT5hZGQoMTAzKTsKKyAgICBfNDQxNy0+YWRkKDM1KTsKKyAg
ICBfNDQxNy0+YWRkKDUpOworICAgIF80NDE3LT5hZGQoNDkpOworICAgIF80NDE3LT5hZGQoNjcp
OworICAgIF80NDE3LT5hZGQoNTYpOworICAgIF80NDE3LT5hZGQoNDEpOworICAgIF80NDE3LT5h
ZGQoMjcpOworICAgIF80NDE3LT5hZGQoOTcpOworICAgIF80NDE3LT5hZGQoNDYpOworICAgIF80
NDE3LT5hZGQoMzM0KTsKKyAgICBfNDQxNy0+YWRkKDU5KTsKKyAgICBfNDQxNy0+YWRkKDE0Nyk7
CisgICAgXzQ0MTYtPmFkZCgyMzgpOworICAgIF80NDE2LT5hZGQoMzUpOworICAgIF80NDE2LT5h
ZGQoNDQpOworICAgIF80NDE2LT5hZGQoMTY2KTsKKyAgICBfNDQxNi0+YWRkKDE0Myk7CisgICAg
XzQ0MTYtPmFkZCgzMDcpOworICAgIF80NDE2LT5hZGQoMzM0KTsKKyAgICBfNDQxNi0+YWRkKDMx
Mik7CisgICAgXzQ0MTYtPmFkZCg0Nik7CisgICAgXzQ0MTYtPmFkZCgzMDUpOworICAgIF80NDE2
LT5hZGQoNTkpOworICAgIF80NDE2LT5hZGQoMTcwKTsKKyAgICBfNDQxNi0+YWRkKDEwMyk7Cisg
ICAgXzQ0MTYtPmFkZCg1KTsKKyAgICBfNDQxNi0+YWRkKDMxMCk7CisgICAgXzQ0MTYtPmFkZCg0
OSk7CisgICAgXzQ0MTYtPmFkZCgxOTQpOworICAgIF80NDE2LT5hZGQoMjA1KTsKKyAgICBfNDQx
Ni0+YWRkKDY3KTsKKyAgICBfNDQxNi0+YWRkKDMwOCk7CisgICAgXzQ0MTYtPmFkZCg1Nik7Cisg
ICAgXzQ0MTYtPmFkZCgyNzApOworICAgIF80NDE2LT5hZGQoNDEpOworICAgIF80NDE2LT5hZGQo
MjcpOworICAgIF80NDE2LT5hZGQoMzg2KTsKKyAgICBfNDQxNS0+YWRkKDIzOCk7CisgICAgXzQ0
MTUtPmFkZCgzNSk7CisgICAgXzQ0MTUtPmFkZCg0NCk7CisgICAgXzQ0MTUtPmFkZCgxNjYpOwor
ICAgIF80NDE1LT5hZGQoMTQzKTsKKyAgICBfNDQxNS0+YWRkKDMwNyk7CisgICAgXzQ0MTUtPmFk
ZCgzMzQpOworICAgIF80NDE1LT5hZGQoMzEyKTsKKyAgICBfNDQxNS0+YWRkKDQ2KTsKKyAgICBf
NDQxNS0+YWRkKDMwNSk7CisgICAgXzQ0MTUtPmFkZCg1OSk7CisgICAgXzQ0MTUtPmFkZCgxNzAp
OworICAgIF80NDE1LT5hZGQoMTAzKTsKKyAgICBfNDQxNS0+YWRkKDUpOworICAgIF80NDE1LT5h
ZGQoMzEwKTsKKyAgICBfNDQxNS0+YWRkKDQ5KTsKKyAgICBfNDQxNS0+YWRkKDE5NCk7CisgICAg
XzQ0MTUtPmFkZCgyMDUpOworICAgIF80NDE1LT5hZGQoNjcpOworICAgIF80NDE1LT5hZGQoMzA4
KTsKKyAgICBfNDQxNS0+YWRkKDU2KTsKKyAgICBfNDQxNS0+YWRkKDI3MCk7CisgICAgXzQ0MTUt
PmFkZCg0MSk7CisgICAgXzQ0MTUtPmFkZCgyNyk7CisgICAgXzQ0MTUtPmFkZCgzODYpOworICAg
IF80NDE0LT5hZGQoMzMzKTsKKyAgICBfNDQxNC0+YWRkKDMxMCk7CisgICAgXzQ0MTQtPmFkZCgz
NSk7CisgICAgXzQ0MTQtPmFkZCg0NCk7CisgICAgXzQ0MTQtPmFkZCg0MSk7CisgICAgXzQ0MTQt
PmFkZCgyMDUpOworICAgIF80NDE0LT5hZGQoNDYpOworICAgIF80NDE0LT5hZGQoMTQzKTsKKyAg
ICBfNDQxNC0+YWRkKDE3MCk7CisgICAgXzQ0MTQtPmFkZCgxMDMpOworICAgIF80NDE0LT5hZGQo
NSk7CisgICAgXzQ0MTQtPmFkZCgxNjYpOworICAgIF80NDE0LT5hZGQoNDkpOworICAgIF80NDE0
LT5hZGQoMTk0KTsKKyAgICBfNDQxNC0+YWRkKDIzOCk7CisgICAgXzQ0MTQtPmFkZCg2Nyk7Cisg
ICAgXzQ0MTQtPmFkZCgzMDgpOworICAgIF80NDE0LT5hZGQoMzEyKTsKKyAgICBfNDQxNC0+YWRk
KDU2KTsKKyAgICBfNDQxNC0+YWRkKDI3MCk7CisgICAgXzQ0MTQtPmFkZCgzMDcpOworICAgIF80
NDE0LT5hZGQoMjcpOworICAgIF80NDE0LT5hZGQoMzA1KTsKKyAgICBfNDQxNC0+YWRkKDU5KTsK
KyAgICBfNDQxNC0+YWRkKDQ4KTsKKyAgICBfNDQyOS0+YWRkKDE0Myk7CisgICAgXzQ0MjktPmFk
ZCgzMTApOworICAgIF80NDI5LT5hZGQoMzUpOworICAgIF80NDI5LT5hZGQoNDQpOworICAgIF80
NDI5LT5hZGQoNDEpOworICAgIF80NDI5LT5hZGQoMjA1KTsKKyAgICBfNDQyOS0+YWRkKDQ2KTsK
KyAgICBfNDQyOS0+YWRkKDMzNCk7CisgICAgXzQ0MjktPmFkZCgxNzApOworICAgIF80NDI5LT5h
ZGQoMTAzKTsKKyAgICBfNDQyOS0+YWRkKDUpOworICAgIF80NDI5LT5hZGQoMTY2KTsKKyAgICBf
NDQyOS0+YWRkKDQ5KTsKKyAgICBfNDQyOS0+YWRkKDE5NCk7CisgICAgXzQ0MjktPmFkZCgyMzgp
OworICAgIF80NDI5LT5hZGQoNjcpOworICAgIF80NDI5LT5hZGQoMzA4KTsKKyAgICBfNDQyOS0+
YWRkKDMxMik7CisgICAgXzQ0MjktPmFkZCg1Nik7CisgICAgXzQ0MjktPmFkZCgyNzApOworICAg
IF80NDI5LT5hZGQoMzA3KTsKKyAgICBfNDQyOS0+YWRkKDI3KTsKKyAgICBfNDQyOS0+YWRkKDMw
NSk7CisgICAgXzQ0MjktPmFkZCg1OSk7CisgICAgXzQ0MjktPmFkZCgxNDYpOworICAgIF80NDI3
LT5hZGQoMzUpOworICAgIF80NDI3LT5hZGQoNDQpOworICAgIF80NDI3LT5hZGQoMTY2KTsKKyAg
ICBfNDQyNy0+YWRkKDE0Myk7CisgICAgXzQ0MjctPmFkZCgzMDcpOworICAgIF80NDI3LT5hZGQo
MjA1KTsKKyAgICBfNDQyNy0+YWRkKDI3MCk7CisgICAgXzQ0MjctPmFkZCgzMDUpOworICAgIF80
NDI3LT5hZGQoMzM0KTsKKyAgICBfNDQyNy0+YWRkKDE3MCk7CisgICAgXzQ0MjctPmFkZCgxMDMp
OworICAgIF80NDI3LT5hZGQoMzA4KTsKKyAgICBfNDQyNy0+YWRkKDMxMCk7CisgICAgXzQ0Mjct
PmFkZCgyNyk7CisgICAgXzQ0MjctPmFkZCgxOTQpOworICAgIF80NDI3LT5hZGQoMjM4KTsKKyAg
ICBfNDQyNy0+YWRkKDMxMik7CisgICAgXzQ0MjYtPmFkZCgyMzgpOworICAgIF80NDI2LT5hZGQo
MTQzKTsKKyAgICBfNDQyNi0+YWRkKDMwNyk7CisgICAgXzQ0MjYtPmFkZCg0NCk7CisgICAgXzQ0
MjYtPmFkZCgzMDgpOworICAgIF80NDI2LT5hZGQoMzEyKTsKKyAgICBfNDQyNi0+YWRkKDIwNSk7
CisgICAgXzQ0MjYtPmFkZCgzMTApOworICAgIF80NDI2LT5hZGQoMzM0KTsKKyAgICBfNDQyNi0+
YWRkKDE3MCk7CisgICAgXzQ0MjYtPmFkZCgzMDUpOworICAgIF80NDI2LT5hZGQoMTk0KTsKKyAg
ICBfNDQyNi0+YWRkKDE2Nik7CisgICAgXzQ0MjYtPmFkZCgyNzApOworICAgIF80NDE4LT5hZGQo
MjM4KTsKKyAgICBfNDQxOC0+YWRkKDQ0KTsKKyAgICBfNDQxOC0+YWRkKDE2Nik7CisgICAgXzQ0
MTgtPmFkZCgzMDcpOworICAgIF80NDE4LT5hZGQoMzEwKTsKKyAgICBfNDQxOC0+YWRkKDIwNSk7
CisgICAgXzQ0MTgtPmFkZCgzMTIpOworICAgIF80NDE4LT5hZGQoMjcwKTsKKyAgICBfNDQxOC0+
YWRkKDE0Myk7CisgICAgXzQ0MTgtPmFkZCgzMDUpOworICAgIF80NDE4LT5hZGQoMTk0KTsKKyAg
ICBfNDQxOC0+YWRkKDE3MCk7CisgICAgXzQ0MTgtPmFkZCgzMDgpOworICAgIF80NDI1LT5hZGQo
MjM4KTsKKyAgICBfNDQyNS0+YWRkKDQ0KTsKKyAgICBfNDQyNS0+YWRkKDE2Nik7CisgICAgXzQ0
MjUtPmFkZCgzMDcpOworICAgIF80NDI1LT5hZGQoMzEwKTsKKyAgICBfNDQyNS0+YWRkKDIwNSk7
CisgICAgXzQ0MjUtPmFkZCgzMTIpOworICAgIF80NDI1LT5hZGQoMjcwKTsKKyAgICBfNDQyNS0+
YWRkKDE0Myk7CisgICAgXzQ0MjUtPmFkZCgzMDUpOworICAgIF80NDI1LT5hZGQoMTk0KTsKKyAg
ICBfNDQyNS0+YWRkKDE3MCk7CisgICAgXzQ0MjUtPmFkZCgzMDgpOworICAgIF80NDIzLT5hZGQo
MTY2KTsKKyAgICBfNDQyMy0+YWRkKDI3MCk7CisgICAgXzQ0MjMtPmFkZCg0NCk7CisgICAgXzQ0
MjMtPmFkZCgxNzApOworICAgIF80NDIzLT5hZGQoMTk0KTsKKyAgICBfNDQyMy0+YWRkKDIwNSk7
CisgICAgXzQ0MjMtPmFkZCgyMzgpOworICAgIF80NDI0LT5hZGQoMTY2KTsKKyAgICBfNDQyNC0+
YWRkKDI3MCk7CisgICAgXzQ0MjQtPmFkZCg0NCk7CisgICAgXzQ0MjQtPmFkZCgxNzApOworICAg
IF80NDI0LT5hZGQoMTk0KTsKKyAgICBfNDQyNC0+YWRkKDIwNSk7CisgICAgXzQ0MjQtPmFkZCgy
MzgpOworICAgIF80NDE5LT5hZGQoMjM4KTsKKyAgICBfNDQxOS0+YWRkKDE3MCk7CisgICAgXzQ0
MTktPmFkZCg0NCk7CisgICAgXzQ0MTktPmFkZCgxNjYpOworICAgIF80NDE5LT5hZGQoMjA1KTsK
KyAgICBfNDQxOS0+YWRkKDI3MCk7CisgICAgXzQ0MTktPmFkZCgxOTQpOworICAgIF80NDIyLT5h
ZGQoMjM4KTsKKyAgICBfNDQyMi0+YWRkKDE3MCk7CisgICAgXzQ0MjItPmFkZCg0NCk7CisgICAg
XzQ0MjItPmFkZCgxNjYpOworICAgIF80NDIyLT5hZGQoMjA1KTsKKyAgICBfNDQyMi0+YWRkKDI3
MCk7CisgICAgXzQ0MjItPmFkZCgxOTQpOworICAgIF80NDIxLT5hZGQoMjA1KTsKKyAgICBfNDQy
MS0+YWRkKDE5NCk7CisgICAgXzQ0MjEtPmFkZCgyNzApOworICAgIF80NDIxLT5hZGQoMTcwKTsK
KyAgICBfNDQyMS0+YWRkKDE2Nik7CisgICAgXzQ0MjEtPmFkZCgyMzgpOworICAgIF80NDIwLT5h
ZGQoMjA1KTsKKyAgICBfNDQyMC0+YWRkKDE5NCk7CisgICAgXzQ0MjAtPmFkZCgyNzApOworICAg
IF80NDIwLT5hZGQoMTcwKTsKKyAgICBfNDQyMC0+YWRkKDE2Nik7CisgICAgXzQ0MjAtPmFkZCgy
MzgpOworICAgIF80NDE5LT5hZGQoMjM4KTsKKyAgICBfNDQxOS0+YWRkKDE3MCk7CisgICAgXzQ0
MTktPmFkZCgxOTQpOworICAgIF80NDE5LT5hZGQoMjA1KTsKKyAgICBfNDQxOS0+YWRkKDE2Nik7
CisgICAgXzQ0MjItPmFkZCgyMzgpOworICAgIF80NDIyLT5hZGQoMTcwKTsKKyAgICBfNDQyMi0+
YWRkKDE5NCk7CisgICAgXzQ0MjItPmFkZCgyNzApOworICAgIF80NDIyLT5hZGQoMTY2KTsKKyAg
ICBfNDQyMi0+YWRkKDIwNSk7CisgICAgXzQ0MTctPmFkZCgzMTApOworICAgIF80NDE3LT5hZGQo
MTQzKTsKKyAgICBfNDQxNy0+YWRkKDQ0KTsKKyAgICBfNDQxNy0+YWRkKDMwNyk7CisgICAgXzQ0
MTctPmFkZCgzMDgpOworICAgIF80NDE3LT5hZGQoMjA1KTsKKyAgICBfNDQxNy0+YWRkKDE5NCk7
CisgICAgXzQ0MTctPmFkZCgzMTIpOworICAgIF80NDE3LT5hZGQoMTY2KTsKKyAgICBfNDQxNy0+
YWRkKDMwNSk7CisgICAgXzQ0MTctPmFkZCgyNzApOworICAgIF80NDE3LT5hZGQoMTcwKTsKKyAg
ICBfNDQxNy0+YWRkKDIzOCk7CisgICAgZGVsZXRlIF80NDE0OworICAgIGRlbGV0ZSBfNDQxNTsK
KyAgICBkZWxldGUgXzQ0MTY7CisgICAgZGVsZXRlIF80NDE3OworICAgIGRlbGV0ZSBfNDQxODsK
KyAgICBkZWxldGUgXzQ0MTk7CisgICAgZGVsZXRlIF80NDIwOworICAgIGRlbGV0ZSBfNDQyMTsK
KyAgICBkZWxldGUgXzQ0MjI7CisgICAgZGVsZXRlIF80NDIzOworICAgIGRlbGV0ZSBfNDQyNDsK
KyAgICBkZWxldGUgXzQ0MjU7CisgICAgZGVsZXRlIF80NDI2OworICAgIGRlbGV0ZSBfNDQyNzsK
KyAgICBkZWxldGUgXzQ0Mjg7CisgICAgZGVsZXRlIF80NDI5OworICAgIGRlbGV0ZSBfNDQzMDsK
KyAgICBkZWxldGUgXzQ0MzE7CisgICAgZGVsZXRlIF80NDMyOworICAgIGF1dG8qIF80NDMzID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0
MzQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDQzNSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NDM2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ0MzcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDQzOCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NDM5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NDAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ0MSA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDQyID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NDMgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ0NCA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDQ1
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ0NDYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDQ0NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NDQ4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ0NDkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ1MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDUxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgXzQ0NDktPmFkZCg1KTsKKyAgICBfNDQ1MC0+YWRkKDUp
OworICAgIF80NDMzLT5hZGQoNSk7CisgICAgXzQ0NDgtPmFkZCg1KTsKKyAgICBfNDQ0Ni0+YWRk
KDUpOworICAgIF80NDQ2LT5hZGQoNTYpOworICAgIF80NDQ2LT5hZGQoNjcpOworICAgIF80NDQ2
LT5hZGQoNDYpOworICAgIF80NDQ2LT5hZGQoMzg1KTsKKyAgICBfNDQ0NS0+YWRkKDU2KTsKKyAg
ICBfNDQ0NS0+YWRkKDUpOworICAgIF80NDQ1LT5hZGQoNDYpOworICAgIF80NDQ1LT5hZGQoNjcp
OworICAgIF80NDQ1LT5hZGQoMjgwKTsKKyAgICBfNDQ0NS0+YWRkKDEwMyk7CisgICAgXzQ0NDUt
PmFkZCgyNyk7CisgICAgXzQ0NDUtPmFkZCgzNSk7CisgICAgXzQ0NDUtPmFkZCgyNzUpOworICAg
IF80NDQ1LT5hZGQoOTcpOworICAgIF80NDM3LT5hZGQoMjgwKTsKKyAgICBfNDQzNy0+YWRkKDEw
Myk7CisgICAgXzQ0MzctPmFkZCgzNSk7CisgICAgXzQ0MzctPmFkZCg1KTsKKyAgICBfNDQzNy0+
YWRkKDY3KTsKKyAgICBfNDQzNy0+YWRkKDU2KTsKKyAgICBfNDQzNy0+YWRkKDI3KTsKKyAgICBf
NDQzNy0+YWRkKDk3KTsKKyAgICBfNDQzNy0+YWRkKDQ2KTsKKyAgICBfNDQzNy0+YWRkKDMzNCk7
CisgICAgXzQ0MzctPmFkZCg1OSk7CisgICAgXzQ0MzctPmFkZCgzODQpOworICAgIF80NDQ0LT5h
ZGQoMjgwKTsKKyAgICBfNDQ0NC0+YWRkKDEwMyk7CisgICAgXzQ0NDQtPmFkZCgzNSk7CisgICAg
XzQ0NDQtPmFkZCg1KTsKKyAgICBfNDQ0NC0+YWRkKDY3KTsKKyAgICBfNDQ0NC0+YWRkKDU2KTsK
KyAgICBfNDQ0NC0+YWRkKDI3KTsKKyAgICBfNDQ0NC0+YWRkKDk3KTsKKyAgICBfNDQ0NC0+YWRk
KDQ2KTsKKyAgICBfNDQ0NC0+YWRkKDMzNCk7CisgICAgXzQ0NDQtPmFkZCg1OSk7CisgICAgXzQ0
NDQtPmFkZCgzODQpOworICAgIF80NDQyLT5hZGQoMjgwKTsKKyAgICBfNDQ0Mi0+YWRkKDEwMyk7
CisgICAgXzQ0NDItPmFkZCgzNSk7CisgICAgXzQ0NDItPmFkZCg1KTsKKyAgICBfNDQ0Mi0+YWRk
KDMzNCk7CisgICAgXzQ0NDItPmFkZCg2Nyk7CisgICAgXzQ0NDItPmFkZCg1Nik7CisgICAgXzQ0
NDItPmFkZCg1OSk7CisgICAgXzQ0NDItPmFkZCgyNyk7CisgICAgXzQ0NDItPmFkZCg5Nyk7Cisg
ICAgXzQ0NDItPmFkZCg0Nik7CisgICAgXzQ0NDItPmFkZCgyMTMpOworICAgIF80NDQyLT5hZGQo
MTQ0KTsKKyAgICBfNDQ0Mi0+YWRkKDMxMik7CisgICAgXzQ0NDItPmFkZCgzMDgpOworICAgIF80
NDQyLT5hZGQoMzA1KTsKKyAgICBfNDQ0Mi0+YWRkKDMxMCk7CisgICAgXzQ0NDItPmFkZCgzMDcp
OworICAgIF80NDQyLT5hZGQoMTQzKTsKKyAgICBfNDQ0My0+YWRkKDI4MCk7CisgICAgXzQ0NDMt
PmFkZCgxMDMpOworICAgIF80NDQzLT5hZGQoMzUpOworICAgIF80NDQzLT5hZGQoNSk7CisgICAg
XzQ0NDMtPmFkZCgzMzQpOworICAgIF80NDQzLT5hZGQoNjcpOworICAgIF80NDQzLT5hZGQoNTYp
OworICAgIF80NDQzLT5hZGQoNTkpOworICAgIF80NDQzLT5hZGQoMjcpOworICAgIF80NDQzLT5h
ZGQoOTcpOworICAgIF80NDQzLT5hZGQoNDYpOworICAgIF80NDQzLT5hZGQoMjEzKTsKKyAgICBf
NDQ0My0+YWRkKDE0NCk7CisgICAgXzQ0NDMtPmFkZCgzMTIpOworICAgIF80NDQzLT5hZGQoMzA4
KTsKKyAgICBfNDQ0My0+YWRkKDMwNSk7CisgICAgXzQ0NDMtPmFkZCgzMTApOworICAgIF80NDQz
LT5hZGQoMzA3KTsKKyAgICBfNDQ0My0+YWRkKDE0Myk7CisgICAgXzQ0MzgtPmFkZCgzNSk7Cisg
ICAgXzQ0MzgtPmFkZCg0Nik7CisgICAgXzQ0MzgtPmFkZCg1Nik7CisgICAgXzQ0MzgtPmFkZCgz
MDUpOworICAgIF80NDM4LT5hZGQoMjgwKTsKKyAgICBfNDQzOC0+YWRkKDEwMyk7CisgICAgXzQ0
MzgtPmFkZCg1KTsKKyAgICBfNDQzOC0+YWRkKDMxMCk7CisgICAgXzQ0MzgtPmFkZCgzMzQpOwor
ICAgIF80NDM4LT5hZGQoNjcpOworICAgIF80NDM4LT5hZGQoMzA4KTsKKyAgICBfNDQzOC0+YWRk
KDMxMik7CisgICAgXzQ0MzgtPmFkZCgzMDcpOworICAgIF80NDM4LT5hZGQoMjcpOworICAgIF80
NDM4LT5hZGQoOTcpOworICAgIF80NDM4LT5hZGQoNTkpOworICAgIF80NDM4LT5hZGQoMTQzKTsK
KyAgICBfNDQzOC0+YWRkKDIxMyk7CisgICAgXzQ0MzgtPmFkZCgxNDQpOworICAgIF80NDQxLT5h
ZGQoMzUpOworICAgIF80NDQxLT5hZGQoNDYpOworICAgIF80NDQxLT5hZGQoNTYpOworICAgIF80
NDQxLT5hZGQoMzA1KTsKKyAgICBfNDQ0MS0+YWRkKDI4MCk7CisgICAgXzQ0NDEtPmFkZCgxMDMp
OworICAgIF80NDQxLT5hZGQoNSk7CisgICAgXzQ0NDEtPmFkZCgzMTApOworICAgIF80NDQxLT5h
ZGQoMzM0KTsKKyAgICBfNDQ0MS0+YWRkKDY3KTsKKyAgICBfNDQ0MS0+YWRkKDMwOCk7CisgICAg
XzQ0NDEtPmFkZCgzMTIpOworICAgIF80NDQxLT5hZGQoMzA3KTsKKyAgICBfNDQ0MS0+YWRkKDI3
KTsKKyAgICBfNDQ0MS0+YWRkKDk3KTsKKyAgICBfNDQ0MS0+YWRkKDU5KTsKKyAgICBfNDQ0MS0+
YWRkKDE0Myk7CisgICAgXzQ0NDEtPmFkZCgyMTMpOworICAgIF80NDQxLT5hZGQoMTQ0KTsKKyAg
ICBfNDQ0MC0+YWRkKDM1KTsKKyAgICBfNDQ0MC0+YWRkKDMxMik7CisgICAgXzQ0NDAtPmFkZCg0
Nik7CisgICAgXzQ0NDAtPmFkZCgzMDUpOworICAgIF80NDQwLT5hZGQoMjgwKTsKKyAgICBfNDQ0
MC0+YWRkKDEwMyk7CisgICAgXzQ0NDAtPmFkZCg1KTsKKyAgICBfNDQ0MC0+YWRkKDMxMCk7Cisg
ICAgXzQ0NDAtPmFkZCgzMzQpOworICAgIF80NDQwLT5hZGQoNjcpOworICAgIF80NDQwLT5hZGQo
MzA4KTsKKyAgICBfNDQ0MC0+YWRkKDU2KTsKKyAgICBfNDQ0MC0+YWRkKDMwNyk7CisgICAgXzQ0
NDAtPmFkZCgyNyk7CisgICAgXzQ0NDAtPmFkZCg5Nyk7CisgICAgXzQ0NDAtPmFkZCg1OSk7Cisg
ICAgXzQ0NDAtPmFkZCgxNDMpOworICAgIF80NDQwLT5hZGQoMjEzKTsKKyAgICBfNDQ0MC0+YWRk
KDE0NCk7CisgICAgXzQ0NDAtPmFkZCg0NCk7CisgICAgXzQ0NDAtPmFkZCgxNzEpOworICAgIF80
NDQwLT5hZGQoMzgzKTsKKyAgICBfNDQzOS0+YWRkKDM1KTsKKyAgICBfNDQzOS0+YWRkKDMxMik7
CisgICAgXzQ0MzktPmFkZCg0Nik7CisgICAgXzQ0MzktPmFkZCgzMDUpOworICAgIF80NDM5LT5h
ZGQoMjgwKTsKKyAgICBfNDQzOS0+YWRkKDEwMyk7CisgICAgXzQ0MzktPmFkZCg1KTsKKyAgICBf
NDQzOS0+YWRkKDMxMCk7CisgICAgXzQ0MzktPmFkZCgzMzQpOworICAgIF80NDM5LT5hZGQoNjcp
OworICAgIF80NDM5LT5hZGQoMzA4KTsKKyAgICBfNDQzOS0+YWRkKDU2KTsKKyAgICBfNDQzOS0+
YWRkKDMwNyk7CisgICAgXzQ0MzktPmFkZCgyNyk7CisgICAgXzQ0MzktPmFkZCg5Nyk7CisgICAg
XzQ0MzktPmFkZCg1OSk7CisgICAgXzQ0MzktPmFkZCgxNDMpOworICAgIF80NDM5LT5hZGQoMjEz
KTsKKyAgICBfNDQzOS0+YWRkKDE0NCk7CisgICAgXzQ0MzktPmFkZCg0NCk7CisgICAgXzQ0Mzkt
PmFkZCgxNzEpOworICAgIF80NDM5LT5hZGQoMzgzKTsKKyAgICBfNDQzOC0+YWRkKDE0NCk7Cisg
ICAgXzQ0MzgtPmFkZCgzNSk7CisgICAgXzQ0MzgtPmFkZCg0NCk7CisgICAgXzQ0MzgtPmFkZCgy
MTMpOworICAgIF80NDM4LT5hZGQoMzEyKTsKKyAgICBfNDQzOC0+YWRkKDQ2KTsKKyAgICBfNDQz
OC0+YWRkKDE3MSk7CisgICAgXzQ0MzgtPmFkZCgzMDUpOworICAgIF80NDM4LT5hZGQoMjgwKTsK
KyAgICBfNDQzOC0+YWRkKDEwMyk7CisgICAgXzQ0MzgtPmFkZCg1KTsKKyAgICBfNDQzOC0+YWRk
KDMxMCk7CisgICAgXzQ0MzgtPmFkZCgzMzQpOworICAgIF80NDM4LT5hZGQoNjcpOworICAgIF80
NDM4LT5hZGQoMzA4KTsKKyAgICBfNDQzOC0+YWRkKDU2KTsKKyAgICBfNDQzOC0+YWRkKDMwNyk7
CisgICAgXzQ0MzgtPmFkZCgyNyk7CisgICAgXzQ0MzgtPmFkZCg5Nyk7CisgICAgXzQ0MzgtPmFk
ZCgxNDMpOworICAgIF80NDM4LT5hZGQoNTkpOworICAgIF80NDM4LT5hZGQoMjcwKTsKKyAgICBf
NDQ0MS0+YWRkKDE0NCk7CisgICAgXzQ0NDEtPmFkZCgzNSk7CisgICAgXzQ0NDEtPmFkZCg0NCk7
CisgICAgXzQ0NDEtPmFkZCgyMTMpOworICAgIF80NDQxLT5hZGQoMzEyKTsKKyAgICBfNDQ0MS0+
YWRkKDQ2KTsKKyAgICBfNDQ0MS0+YWRkKDE3MSk7CisgICAgXzQ0NDEtPmFkZCgzMDUpOworICAg
IF80NDQxLT5hZGQoMjgwKTsKKyAgICBfNDQ0MS0+YWRkKDEwMyk7CisgICAgXzQ0NDEtPmFkZCg1
KTsKKyAgICBfNDQ0MS0+YWRkKDMxMCk7CisgICAgXzQ0NDEtPmFkZCgzMzQpOworICAgIF80NDQx
LT5hZGQoNjcpOworICAgIF80NDQxLT5hZGQoMzA4KTsKKyAgICBfNDQ0MS0+YWRkKDU2KTsKKyAg
ICBfNDQ0MS0+YWRkKDMwNyk7CisgICAgXzQ0NDEtPmFkZCgyNyk7CisgICAgXzQ0NDEtPmFkZCg5
Nyk7CisgICAgXzQ0NDEtPmFkZCgxNDMpOworICAgIF80NDQxLT5hZGQoNTkpOworICAgIF80NDQx
LT5hZGQoMjg1KTsKKyAgICBfNDQzNi0+YWRkKDM1KTsKKyAgICBfNDQzNi0+YWRkKDQ0KTsKKyAg
ICBfNDQzNi0+YWRkKDMxMik7CisgICAgXzQ0MzYtPmFkZCg0Nik7CisgICAgXzQ0MzYtPmFkZCgx
OTQpOworICAgIF80NDM2LT5hZGQoMzA1KTsKKyAgICBfNDQzNi0+YWRkKDI4MCk7CisgICAgXzQ0
MzYtPmFkZCgxMDMpOworICAgIF80NDM2LT5hZGQoNSk7CisgICAgXzQ0MzYtPmFkZCgzMTApOwor
ICAgIF80NDM2LT5hZGQoMzM0KTsKKyAgICBfNDQzNi0+YWRkKDY3KTsKKyAgICBfNDQzNi0+YWRk
KDMwOCk7CisgICAgXzQ0MzYtPmFkZCg1Nik7CisgICAgXzQ0MzYtPmFkZCgyNzApOworICAgIF80
NDM2LT5hZGQoMzA3KTsKKyAgICBfNDQzNi0+YWRkKDI3KTsKKyAgICBfNDQzNi0+YWRkKDk3KTsK
KyAgICBfNDQzNi0+YWRkKDU5KTsKKyAgICBfNDQzNi0+YWRkKDE0Myk7CisgICAgXzQ0MzYtPmFk
ZCg0MSk7CisgICAgXzQ0MzYtPmFkZCgxNDQpOworICAgIF80NDM2LT5hZGQoMjM4KTsKKyAgICBf
NDQzNi0+YWRkKDIwNSk7CisgICAgXzQ0MzYtPmFkZCgxNzApOworICAgIF80NDM2LT5hZGQoMTY2
KTsKKyAgICBfNDQzNi0+YWRkKDI4MCk7CisgICAgXzQ0MzYtPmFkZCgxMDMpOworICAgIF80NDM2
LT5hZGQoMzUpOworICAgIF80NDM2LT5hZGQoNSk7CisgICAgXzQ0MzYtPmFkZCgzMzQpOworICAg
IF80NDM2LT5hZGQoNjcpOworICAgIF80NDM2LT5hZGQoNTYpOworICAgIF80NDM2LT5hZGQoNTkp
OworICAgIF80NDM2LT5hZGQoMjcpOworICAgIF80NDM2LT5hZGQoOTcpOworICAgIF80NDM2LT5h
ZGQoNDYpOworICAgIF80NDM2LT5hZGQoMTQ3KTsKKyAgICBfNDQzNS0+YWRkKDE0Myk7CisgICAg
XzQ0MzUtPmFkZCgzNSk7CisgICAgXzQ0MzUtPmFkZCg0NCk7CisgICAgXzQ0MzUtPmFkZCg0MSk7
CisgICAgXzQ0MzUtPmFkZCgxNjYpOworICAgIF80NDM1LT5hZGQoNTkpOworICAgIF80NDM1LT5h
ZGQoMjA1KTsKKyAgICBfNDQzNS0+YWRkKDU2KTsKKyAgICBfNDQzNS0+YWRkKDQ2KTsKKyAgICBf
NDQzNS0+YWRkKDE3MCk7CisgICAgXzQ0MzUtPmFkZCgxMDMpOworICAgIF80NDM1LT5hZGQoNSk7
CisgICAgXzQ0MzUtPmFkZCgzMTApOworICAgIF80NDM1LT5hZGQoMzM0KTsKKyAgICBfNDQzNS0+
YWRkKDE5NCk7CisgICAgXzQ0MzUtPmFkZCgyMzgpOworICAgIF80NDM1LT5hZGQoNjcpOworICAg
IF80NDM1LT5hZGQoMzA4KTsKKyAgICBfNDQzNS0+YWRkKDMxMik7CisgICAgXzQ0MzUtPmFkZCgy
NzApOworICAgIF80NDM1LT5hZGQoMzA3KTsKKyAgICBfNDQzNS0+YWRkKDI3KTsKKyAgICBfNDQz
NS0+YWRkKDMwNSk7CisgICAgXzQ0MzUtPmFkZCgzODIpOworICAgIF80NDM0LT5hZGQoMTQzKTsK
KyAgICBfNDQzNC0+YWRkKDM1KTsKKyAgICBfNDQzNC0+YWRkKDQ0KTsKKyAgICBfNDQzNC0+YWRk
KDQxKTsKKyAgICBfNDQzNC0+YWRkKDE2Nik7CisgICAgXzQ0MzQtPmFkZCg1OSk7CisgICAgXzQ0
MzQtPmFkZCgyMDUpOworICAgIF80NDM0LT5hZGQoNTYpOworICAgIF80NDM0LT5hZGQoNDYpOwor
ICAgIF80NDM0LT5hZGQoMTcwKTsKKyAgICBfNDQzNC0+YWRkKDEwMyk7CisgICAgXzQ0MzQtPmFk
ZCg1KTsKKyAgICBfNDQzNC0+YWRkKDMxMCk7CisgICAgXzQ0MzQtPmFkZCgzMzQpOworICAgIF80
NDM0LT5hZGQoMTk0KTsKKyAgICBfNDQzNC0+YWRkKDIzOCk7CisgICAgXzQ0MzQtPmFkZCg2Nyk7
CisgICAgXzQ0MzQtPmFkZCgzMDgpOworICAgIF80NDM0LT5hZGQoMzEyKTsKKyAgICBfNDQzNC0+
YWRkKDI3MCk7CisgICAgXzQ0MzQtPmFkZCgzMDcpOworICAgIF80NDM0LT5hZGQoMjcpOworICAg
IF80NDM0LT5hZGQoMzA1KTsKKyAgICBfNDQzNC0+YWRkKDM4Mik7CisgICAgXzQ0MzMtPmFkZCgz
MTApOworICAgIF80NDMzLT5hZGQoMzUpOworICAgIF80NDMzLT5hZGQoNDQpOworICAgIF80NDMz
LT5hZGQoMzA3KTsKKyAgICBfNDQzMy0+YWRkKDIwNSk7CisgICAgXzQ0MzMtPmFkZCgzMTIpOwor
ICAgIF80NDMzLT5hZGQoNDYpOworICAgIF80NDMzLT5hZGQoMzA1KTsKKyAgICBfNDQzMy0+YWRk
KDE3MCk7CisgICAgXzQ0MzMtPmFkZCgxMDMpOworICAgIF80NDMzLT5hZGQoNSk7CisgICAgXzQ0
MzMtPmFkZCgxNjYpOworICAgIF80NDMzLT5hZGQoMTQzKTsKKyAgICBfNDQzMy0+YWRkKDE5NCk7
CisgICAgXzQ0MzMtPmFkZCgyMzgpOworICAgIF80NDMzLT5hZGQoNjcpOworICAgIF80NDMzLT5h
ZGQoMzMzKTsKKyAgICBfNDQzMy0+YWRkKDMwOCk7CisgICAgXzQ0MzMtPmFkZCg1Nik7CisgICAg
XzQ0MzMtPmFkZCgyNzApOworICAgIF80NDMzLT5hZGQoNDEpOworICAgIF80NDMzLT5hZGQoMjcp
OworICAgIF80NDMzLT5hZGQoNTkpOworICAgIF80NDMzLT5hZGQoNDgpOworICAgIF80NDQ4LT5h
ZGQoMzEwKTsKKyAgICBfNDQ0OC0+YWRkKDM1KTsKKyAgICBfNDQ0OC0+YWRkKDQ0KTsKKyAgICBf
NDQ0OC0+YWRkKDMwNyk7CisgICAgXzQ0NDgtPmFkZCgyMDUpOworICAgIF80NDQ4LT5hZGQoMzEy
KTsKKyAgICBfNDQ0OC0+YWRkKDQ2KTsKKyAgICBfNDQ0OC0+YWRkKDMwNSk7CisgICAgXzQ0NDgt
PmFkZCgxNzApOworICAgIF80NDQ4LT5hZGQoMTAzKTsKKyAgICBfNDQ0OC0+YWRkKDUpOworICAg
IF80NDQ4LT5hZGQoMTY2KTsKKyAgICBfNDQ0OC0+YWRkKDMzNCk7CisgICAgXzQ0NDgtPmFkZCgx
OTQpOworICAgIF80NDQ4LT5hZGQoMjM4KTsKKyAgICBfNDQ0OC0+YWRkKDY3KTsKKyAgICBfNDQ0
OC0+YWRkKDE0Myk7CisgICAgXzQ0NDgtPmFkZCgzMDgpOworICAgIF80NDQ4LT5hZGQoNTYpOwor
ICAgIF80NDQ4LT5hZGQoMjcwKTsKKyAgICBfNDQ0OC0+YWRkKDQxKTsKKyAgICBfNDQ0OC0+YWRk
KDI3KTsKKyAgICBfNDQ0OC0+YWRkKDU5KTsKKyAgICBfNDQ0OC0+YWRkKDE0Nik7CisgICAgXzQ0
NDYtPmFkZCgzNSk7CisgICAgXzQ0NDYtPmFkZCg0NCk7CisgICAgXzQ0NDYtPmFkZCg0MSk7Cisg
ICAgXzQ0NDYtPmFkZCgxNjYpOworICAgIF80NDQ2LT5hZGQoMTQzKTsKKyAgICBfNDQ0Ni0+YWRk
KDIwNSk7CisgICAgXzQ0NDYtPmFkZCgyNyk7CisgICAgXzQ0NDYtPmFkZCgxNzApOworICAgIF80
NDQ2LT5hZGQoMTAzKTsKKyAgICBfNDQ0Ni0+YWRkKDMwNyk7CisgICAgXzQ0NDYtPmFkZCgzMTAp
OworICAgIF80NDQ2LT5hZGQoMzM0KTsKKyAgICBfNDQ0Ni0+YWRkKDE5NCk7CisgICAgXzQ0NDYt
PmFkZCgyMzgpOworICAgIF80NDQ2LT5hZGQoMzA1KTsKKyAgICBfNDQ0Ni0+YWRkKDMwOCk7Cisg
ICAgXzQ0NDYtPmFkZCgzMTIpOworICAgIF80NDQ2LT5hZGQoNTkpOworICAgIF80NDQ2LT5hZGQo
MjcwKTsKKyAgICBfNDQ0NS0+YWRkKDIzOCk7CisgICAgXzQ0NDUtPmFkZCgzMTApOworICAgIF80
NDQ1LT5hZGQoMTQzKTsKKyAgICBfNDQ0NS0+YWRkKDQ0KTsKKyAgICBfNDQ0NS0+YWRkKDMwNyk7
CisgICAgXzQ0NDUtPmFkZCgzMTIpOworICAgIF80NDQ1LT5hZGQoMjcwKTsKKyAgICBfNDQ0NS0+
YWRkKDMwNSk7CisgICAgXzQ0NDUtPmFkZCgxNzApOworICAgIF80NDQ1LT5hZGQoNDEpOworICAg
IF80NDQ1LT5hZGQoMzA4KTsKKyAgICBfNDQ0NS0+YWRkKDU5KTsKKyAgICBfNDQ0NS0+YWRkKDE2
Nik7CisgICAgXzQ0NDUtPmFkZCgzMzQpOworICAgIF80NDQ1LT5hZGQoMTk0KTsKKyAgICBfNDQ0
NS0+YWRkKDIwNSk7CisgICAgXzQ0MzctPmFkZCgzMDgpOworICAgIF80NDM3LT5hZGQoNDQpOwor
ICAgIF80NDM3LT5hZGQoNDEpOworICAgIF80NDM3LT5hZGQoMTY2KTsKKyAgICBfNDQzNy0+YWRk
KDIwNSk7CisgICAgXzQ0MzctPmFkZCgzMDcpOworICAgIF80NDM3LT5hZGQoMjcwKTsKKyAgICBf
NDQzNy0+YWRkKDE5NCk7CisgICAgXzQ0MzctPmFkZCgzMDUpOworICAgIF80NDM3LT5hZGQoMjM4
KTsKKyAgICBfNDQzNy0+YWRkKDE3MCk7CisgICAgXzQ0MzctPmFkZCgxNDMpOworICAgIF80NDM3
LT5hZGQoMzEyKTsKKyAgICBfNDQzNy0+YWRkKDMxMCk7CisgICAgXzQ0NDQtPmFkZCgzMDgpOwor
ICAgIF80NDQ0LT5hZGQoNDQpOworICAgIF80NDQ0LT5hZGQoNDEpOworICAgIF80NDQ0LT5hZGQo
MTY2KTsKKyAgICBfNDQ0NC0+YWRkKDIwNSk7CisgICAgXzQ0NDQtPmFkZCgzMDcpOworICAgIF80
NDQ0LT5hZGQoMjcwKTsKKyAgICBfNDQ0NC0+YWRkKDE5NCk7CisgICAgXzQ0NDQtPmFkZCgzMDUp
OworICAgIF80NDQ0LT5hZGQoMjM4KTsKKyAgICBfNDQ0NC0+YWRkKDE3MCk7CisgICAgXzQ0NDQt
PmFkZCgxNDMpOworICAgIF80NDQ0LT5hZGQoMzEyKTsKKyAgICBfNDQ0NC0+YWRkKDMxMCk7Cisg
ICAgXzQ0NDItPmFkZCgyMzgpOworICAgIF80NDQyLT5hZGQoMjA1KTsKKyAgICBfNDQ0Mi0+YWRk
KDE5NCk7CisgICAgXzQ0NDItPmFkZCg0NCk7CisgICAgXzQ0NDItPmFkZCgxNzApOworICAgIF80
NDQyLT5hZGQoMjcwKTsKKyAgICBfNDQ0Mi0+YWRkKDQxKTsKKyAgICBfNDQ0Mi0+YWRkKDE2Nik7
CisgICAgXzQ0NDMtPmFkZCgyMzgpOworICAgIF80NDQzLT5hZGQoMjA1KTsKKyAgICBfNDQ0My0+
YWRkKDE5NCk7CisgICAgXzQ0NDMtPmFkZCg0NCk7CisgICAgXzQ0NDMtPmFkZCgxNzApOworICAg
IF80NDQzLT5hZGQoMjcwKTsKKyAgICBfNDQ0My0+YWRkKDQxKTsKKyAgICBfNDQ0My0+YWRkKDE2
Nik7CisgICAgXzQ0MzgtPmFkZCgyNzApOworICAgIF80NDM4LT5hZGQoNDQpOworICAgIF80NDM4
LT5hZGQoNDEpOworICAgIF80NDM4LT5hZGQoMTY2KTsKKyAgICBfNDQzOC0+YWRkKDIwNSk7Cisg
ICAgXzQ0MzgtPmFkZCgxNzApOworICAgIF80NDM4LT5hZGQoMjM4KTsKKyAgICBfNDQzOC0+YWRk
KDE5NCk7CisgICAgXzQ0NDEtPmFkZCgyNzApOworICAgIF80NDQxLT5hZGQoNDQpOworICAgIF80
NDQxLT5hZGQoNDEpOworICAgIF80NDQxLT5hZGQoMTY2KTsKKyAgICBfNDQ0MS0+YWRkKDIwNSk7
CisgICAgXzQ0NDEtPmFkZCgxNzApOworICAgIF80NDQxLT5hZGQoMjM4KTsKKyAgICBfNDQ0MS0+
YWRkKDE5NCk7CisgICAgXzQ0NDAtPmFkZCgyMzgpOworICAgIF80NDQwLT5hZGQoMjA1KTsKKyAg
ICBfNDQ0MC0+YWRkKDE3MCk7CisgICAgXzQ0NDAtPmFkZCg0MSk7CisgICAgXzQ0NDAtPmFkZCgx
NjYpOworICAgIF80NDQwLT5hZGQoMjcwKTsKKyAgICBfNDQ0MC0+YWRkKDE5NCk7CisgICAgXzQ0
MzktPmFkZCgyMzgpOworICAgIF80NDM5LT5hZGQoMjA1KTsKKyAgICBfNDQzOS0+YWRkKDE3MCk7
CisgICAgXzQ0MzktPmFkZCg0MSk7CisgICAgXzQ0MzktPmFkZCgxNjYpOworICAgIF80NDM5LT5h
ZGQoMjcwKTsKKyAgICBfNDQzOS0+YWRkKDE5NCk7CisgICAgXzQ0MzgtPmFkZCgxOTQpOworICAg
IF80NDM4LT5hZGQoMjA1KTsKKyAgICBfNDQzOC0+YWRkKDE3MCk7CisgICAgXzQ0MzgtPmFkZCg0
MSk7CisgICAgXzQ0MzgtPmFkZCgxNjYpOworICAgIF80NDM4LT5hZGQoMjM4KTsKKyAgICBfNDQ0
MS0+YWRkKDIzOCk7CisgICAgXzQ0NDEtPmFkZCgxNzApOworICAgIF80NDQxLT5hZGQoMjcwKTsK
KyAgICBfNDQ0MS0+YWRkKDQxKTsKKyAgICBfNDQ0MS0+YWRkKDE2Nik7CisgICAgXzQ0NDEtPmFk
ZCgxOTQpOworICAgIF80NDQxLT5hZGQoMjA1KTsKKyAgICBfNDQzNi0+YWRkKDIzOCk7CisgICAg
XzQ0MzYtPmFkZCgzMTApOworICAgIF80NDM2LT5hZGQoMjcwKTsKKyAgICBfNDQzNi0+YWRkKDQ0
KTsKKyAgICBfNDQzNi0+YWRkKDMwNyk7CisgICAgXzQ0MzYtPmFkZCgzMTIpOworICAgIF80NDM2
LT5hZGQoMjA1KTsKKyAgICBfNDQzNi0+YWRkKDMwNSk7CisgICAgXzQ0MzYtPmFkZCgxOTQpOwor
ICAgIF80NDM2LT5hZGQoMTcwKTsKKyAgICBfNDQzNi0+YWRkKDE0Myk7CisgICAgXzQ0MzYtPmFk
ZCgzMDgpOworICAgIF80NDM2LT5hZGQoMTY2KTsKKyAgICBfNDQzNi0+YWRkKDQxKTsKKyAgICBk
ZWxldGUgXzQ0MzM7CisgICAgZGVsZXRlIF80NDM0OworICAgIGRlbGV0ZSBfNDQzNTsKKyAgICBk
ZWxldGUgXzQ0MzY7CisgICAgZGVsZXRlIF80NDM3OworICAgIGRlbGV0ZSBfNDQzODsKKyAgICBk
ZWxldGUgXzQ0Mzk7CisgICAgZGVsZXRlIF80NDQwOworICAgIGRlbGV0ZSBfNDQ0MTsKKyAgICBk
ZWxldGUgXzQ0NDI7CisgICAgZGVsZXRlIF80NDQzOworICAgIGRlbGV0ZSBfNDQ0NDsKKyAgICBk
ZWxldGUgXzQ0NDU7CisgICAgZGVsZXRlIF80NDQ2OworICAgIGRlbGV0ZSBfNDQ0NzsKKyAgICBk
ZWxldGUgXzQ0NDg7CisgICAgZGVsZXRlIF80NDQ5OworICAgIGRlbGV0ZSBfNDQ1MDsKKyAgICBk
ZWxldGUgXzQ0NTE7CisgICAgYXV0byogXzQ0NTIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ1MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDU0ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NTUgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ1NiA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDU3ID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0
NTggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDQ1OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NDYwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ0NjEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDQ2MiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NDYzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NjQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ2NSA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDY2ID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NjcgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBfNDQ2Ni0+YWRkKDUxMik7
CisgICAgXzQ0NjQtPmFkZCg3MTcpOworICAgIF80NDY0LT5hZGQoMjI5KTsKKyAgICBfNDQ2NC0+
YWRkKDE4Mik7CisgICAgXzQ0NjQtPmFkZCg3MTYpOworICAgIF80NDY1LT5hZGQoNzE3KTsKKyAg
ICBfNDQ2NS0+YWRkKDIyOSk7CisgICAgXzQ0NjUtPmFkZCgxODIpOworICAgIF80NDY1LT5hZGQo
NzE2KTsKKyAgICBfNDQ2Ni0+YWRkKDE4Mik7CisgICAgXzQ0NjYtPmFkZCgyMjkpOworICAgIF80
NDY2LT5hZGQoNTEyKTsKKyAgICBfNDQ2Ni0+YWRkKDUxOCk7CisgICAgXzQ0NjMtPmFkZCgxODIp
OworICAgIF80NDYzLT5hZGQoMjI5KTsKKyAgICBfNDQ2My0+YWRkKDE2OCk7CisgICAgXzQ0NjMt
PmFkZCgyKTsKKyAgICBfNDQ2My0+YWRkKDEyNik7CisgICAgXzQ0NjMtPmFkZCgyMCk7CisgICAg
XzQ0NjMtPmFkZCgzNTkpOworICAgIF80NDYzLT5hZGQoMzcyKTsKKyAgICBfNDQ2My0+YWRkKDk4
KTsKKyAgICBfNDQ2My0+YWRkKDQyMCk7CisgICAgXzQ0NjMtPmFkZCg0MjQpOworICAgIF80NDYz
LT5hZGQoNDI4KTsKKyAgICBfNDQ2My0+YWRkKDQzMik7CisgICAgXzQ0NjMtPmFkZCg0MzYpOwor
ICAgIF80NDYzLT5hZGQoNDQwKTsKKyAgICBfNDQ2My0+YWRkKDM2Nyk7CisgICAgXzQ0NjMtPmFk
ZCgyNik7CisgICAgXzQ0NjMtPmFkZCg0NSk7CisgICAgXzQ0NjMtPmFkZCg3MTUpOworICAgIF80
NDYyLT5hZGQoMTgyKTsKKyAgICBfNDQ2Mi0+YWRkKDIyOSk7CisgICAgXzQ0NjItPmFkZCgxNjgp
OworICAgIF80NDYyLT5hZGQoMik7CisgICAgXzQ0NjItPmFkZCgxMjYpOworICAgIF80NDYyLT5h
ZGQoMjApOworICAgIF80NDYyLT5hZGQoMzU5KTsKKyAgICBfNDQ2Mi0+YWRkKDM3Mik7CisgICAg
XzQ0NjItPmFkZCg5OCk7CisgICAgXzQ0NjItPmFkZCg0MjApOworICAgIF80NDYyLT5hZGQoNDI0
KTsKKyAgICBfNDQ2Mi0+YWRkKDQyOCk7CisgICAgXzQ0NjItPmFkZCg0MzIpOworICAgIF80NDYy
LT5hZGQoNDM2KTsKKyAgICBfNDQ2Mi0+YWRkKDQ0MCk7CisgICAgXzQ0NjItPmFkZCgzNjcpOwor
ICAgIF80NDYyLT5hZGQoMjYpOworICAgIF80NDYyLT5hZGQoNDUpOworICAgIF80NDYyLT5hZGQo
NzE1KTsKKyAgICBfNDQ1OC0+YWRkKDE4Mik7CisgICAgXzQ0NTgtPmFkZCg0MzYpOworICAgIF80
NDU4LT5hZGQoMjI5KTsKKyAgICBfNDQ1OC0+YWRkKDEyNik7CisgICAgXzQ0NTgtPmFkZCgzNjcp
OworICAgIF80NDU4LT5hZGQoNDUpOworICAgIF80NDU4LT5hZGQoMzU5KTsKKyAgICBfNDQ1OC0+
YWRkKDQ0MCk7CisgICAgXzQ0NTgtPmFkZCgyNik7CisgICAgXzQ0NTgtPmFkZCgxNjgpOworICAg
IF80NDU4LT5hZGQoNDI4KTsKKyAgICBfNDQ1OC0+YWRkKDk4KTsKKyAgICBfNDQ1OC0+YWRkKDQz
Mik7CisgICAgXzQ0NTgtPmFkZCgyKTsKKyAgICBfNDQ1OC0+YWRkKDQyMCk7CisgICAgXzQ0NTgt
PmFkZCgyMCk7CisgICAgXzQ0NTgtPmFkZCg0MjQpOworICAgIF80NDU4LT5hZGQoMzcyKTsKKyAg
ICBfNDQ2MS0+YWRkKDE4Mik7CisgICAgXzQ0NjEtPmFkZCg0MzYpOworICAgIF80NDYxLT5hZGQo
MjI5KTsKKyAgICBfNDQ2MS0+YWRkKDEyNik7CisgICAgXzQ0NjEtPmFkZCgzNjcpOworICAgIF80
NDYxLT5hZGQoNDUpOworICAgIF80NDYxLT5hZGQoMzU5KTsKKyAgICBfNDQ2MS0+YWRkKDQ0MCk7
CisgICAgXzQ0NjEtPmFkZCgyNik7CisgICAgXzQ0NjEtPmFkZCgxNjgpOworICAgIF80NDYxLT5h
ZGQoNDI4KTsKKyAgICBfNDQ2MS0+YWRkKDk4KTsKKyAgICBfNDQ2MS0+YWRkKDQzMik7CisgICAg
XzQ0NjEtPmFkZCgyKTsKKyAgICBfNDQ2MS0+YWRkKDQyMCk7CisgICAgXzQ0NjEtPmFkZCgyMCk7
CisgICAgXzQ0NjEtPmFkZCg0MjQpOworICAgIF80NDYxLT5hZGQoMzcyKTsKKyAgICBfNDQ2MS0+
YWRkKDMyMCk7CisgICAgXzQ0NjAtPmFkZCgxODIpOworICAgIF80NDYwLT5hZGQoNDM2KTsKKyAg
ICBfNDQ2MC0+YWRkKDIyOSk7CisgICAgXzQ0NjAtPmFkZCgxMjYpOworICAgIF80NDYwLT5hZGQo
NDI0KTsKKyAgICBfNDQ2MC0+YWRkKDM2Nyk7CisgICAgXzQ0NjAtPmFkZCgyODcpOworICAgIF80
NDYwLT5hZGQoNDUpOworICAgIF80NDYwLT5hZGQoMjYpOworICAgIF80NDYwLT5hZGQoNDQwKTsK
KyAgICBfNDQ2MC0+YWRkKDE2OCk7CisgICAgXzQ0NjAtPmFkZCg0MjgpOworICAgIF80NDYwLT5h
ZGQoMzU5KTsKKyAgICBfNDQ2MC0+YWRkKDIpOworICAgIF80NDYwLT5hZGQoNDIwKTsKKyAgICBf
NDQ2MC0+YWRkKDIwKTsKKyAgICBfNDQ2MC0+YWRkKDk4KTsKKyAgICBfNDQ2MC0+YWRkKDM3Mik7
CisgICAgXzQ0NjAtPmFkZCg0MzIpOworICAgIF80NDYwLT5hZGQoMjUwKTsKKyAgICBfNDQ2MC0+
YWRkKDYzOSk7CisgICAgXzQ0NjAtPmFkZCg3MTQpOworICAgIF80NDYwLT5hZGQoMTExKTsKKyAg
ICBfNDQ2MC0+YWRkKDYwMyk7CisgICAgXzQ0NjAtPmFkZCgyMzIpOworICAgIF80NDYwLT5hZGQo
NzEzKTsKKyAgICBfNDQ1OS0+YWRkKDE4Mik7CisgICAgXzQ0NTktPmFkZCg0MzYpOworICAgIF80
NDU5LT5hZGQoMjI5KTsKKyAgICBfNDQ1OS0+YWRkKDEyNik7CisgICAgXzQ0NTktPmFkZCg0MjQp
OworICAgIF80NDU5LT5hZGQoMzY3KTsKKyAgICBfNDQ1OS0+YWRkKDI4Nyk7CisgICAgXzQ0NTkt
PmFkZCg0NSk7CisgICAgXzQ0NTktPmFkZCgyNik7CisgICAgXzQ0NTktPmFkZCg0NDApOworICAg
IF80NDU5LT5hZGQoMTY4KTsKKyAgICBfNDQ1OS0+YWRkKDQyOCk7CisgICAgXzQ0NTktPmFkZCgz
NTkpOworICAgIF80NDU5LT5hZGQoMik7CisgICAgXzQ0NTktPmFkZCg0MjApOworICAgIF80NDU5
LT5hZGQoMjApOworICAgIF80NDU5LT5hZGQoOTgpOworICAgIF80NDU5LT5hZGQoMzcyKTsKKyAg
ICBfNDQ1OS0+YWRkKDQzMik7CisgICAgXzQ0NTktPmFkZCgyNTApOworICAgIF80NDU5LT5hZGQo
NjM5KTsKKyAgICBfNDQ1OS0+YWRkKDcxNCk7CisgICAgXzQ0NTktPmFkZCgxMTEpOworICAgIF80
NDU5LT5hZGQoNjAzKTsKKyAgICBfNDQ1OS0+YWRkKDIzMik7CisgICAgXzQ0NTktPmFkZCg3MTMp
OworICAgIF80NDU4LT5hZGQoMTgyKTsKKyAgICBfNDQ1OC0+YWRkKDQzNik7CisgICAgXzQ0NTgt
PmFkZCgyMjkpOworICAgIF80NDU4LT5hZGQoMTI2KTsKKyAgICBfNDQ1OC0+YWRkKDI4Nyk7Cisg
ICAgXzQ0NTgtPmFkZCgzNjcpOworICAgIF80NDU4LT5hZGQoNDMyKTsKKyAgICBfNDQ1OC0+YWRk
KDYzOSk7CisgICAgXzQ0NTgtPmFkZCg2MDMpOworICAgIF80NDU4LT5hZGQoNDIwKTsKKyAgICBf
NDQ1OC0+YWRkKDIzMik7CisgICAgXzQ0NTgtPmFkZCg0NSk7CisgICAgXzQ0NTgtPmFkZCgyNTAp
OworICAgIF80NDU4LT5hZGQoMTExKTsKKyAgICBfNDQ1OC0+YWRkKDI2KTsKKyAgICBfNDQ1OC0+
YWRkKDQ0MCk7CisgICAgXzQ0NTgtPmFkZCgxNjgpOworICAgIF80NDU4LT5hZGQoNDI4KTsKKyAg
ICBfNDQ1OC0+YWRkKDk4KTsKKyAgICBfNDQ1OC0+YWRkKDM1OSk7CisgICAgXzQ0NTgtPmFkZCgy
KTsKKyAgICBfNDQ1OC0+YWRkKDQyNCk7CisgICAgXzQ0NTgtPmFkZCgyMCk7CisgICAgXzQ0NTgt
PmFkZCgyMzYpOworICAgIF80NDU4LT5hZGQoMzcyKTsKKyAgICBfNDQ2MS0+YWRkKDE4Mik7Cisg
ICAgXzQ0NjEtPmFkZCg0MzYpOworICAgIF80NDYxLT5hZGQoMjI5KTsKKyAgICBfNDQ2MS0+YWRk
KDEyNik7CisgICAgXzQ0NjEtPmFkZCgyODcpOworICAgIF80NDYxLT5hZGQoMzY3KTsKKyAgICBf
NDQ2MS0+YWRkKDQzMik7CisgICAgXzQ0NjEtPmFkZCg2MzkpOworICAgIF80NDYxLT5hZGQoNjAz
KTsKKyAgICBfNDQ2MS0+YWRkKDQyMCk7CisgICAgXzQ0NjEtPmFkZCgyMzIpOworICAgIF80NDYx
LT5hZGQoNDUpOworICAgIF80NDYxLT5hZGQoMjUwKTsKKyAgICBfNDQ2MS0+YWRkKDExMSk7Cisg
ICAgXzQ0NjEtPmFkZCgyNik7CisgICAgXzQ0NjEtPmFkZCg0NDApOworICAgIF80NDYxLT5hZGQo
MTY4KTsKKyAgICBfNDQ2MS0+YWRkKDQyOCk7CisgICAgXzQ0NjEtPmFkZCg5OCk7CisgICAgXzQ0
NjEtPmFkZCgzNTkpOworICAgIF80NDYxLT5hZGQoMik7CisgICAgXzQ0NjEtPmFkZCg0MjQpOwor
ICAgIF80NDYxLT5hZGQoMjApOworICAgIF80NDYxLT5hZGQoMzM4KTsKKyAgICBfNDQ2MS0+YWRk
KDM3Mik7CisgICAgXzQ0NjEtPmFkZCgzMjApOworICAgIF80NDU2LT5hZGQoMTgyKTsKKyAgICBf
NDQ1Ni0+YWRkKDQzNik7CisgICAgXzQ0NTYtPmFkZCgyMjkpOworICAgIF80NDU2LT5hZGQoMTI2
KTsKKyAgICBfNDQ1Ni0+YWRkKDQyNCk7CisgICAgXzQ0NTYtPmFkZCgyODcpOworICAgIF80NDU2
LT5hZGQoMzY3KTsKKyAgICBfNDQ1Ni0+YWRkKDYzOSk7CisgICAgXzQ0NTYtPmFkZCg5OCk7Cisg
ICAgXzQ0NTYtPmFkZCgzNzIpOworICAgIF80NDU2LT5hZGQoNDUpOworICAgIF80NDU2LT5hZGQo
MjUwKTsKKyAgICBfNDQ1Ni0+YWRkKDExMSk7CisgICAgXzQ0NTYtPmFkZCgyNik7CisgICAgXzQ0
NTYtPmFkZCg0NDApOworICAgIF80NDU2LT5hZGQoMTY4KTsKKyAgICBfNDQ1Ni0+YWRkKDQyOCk7
CisgICAgXzQ0NTYtPmFkZCgzNTkpOworICAgIF80NDU2LT5hZGQoMik7CisgICAgXzQ0NTYtPmFk
ZCg0MzIpOworICAgIF80NDU2LT5hZGQoNDIwKTsKKyAgICBfNDQ1Ni0+YWRkKDIwKTsKKyAgICBf
NDQ1Ny0+YWRkKDE4Mik7CisgICAgXzQ0NTctPmFkZCg0MzYpOworICAgIF80NDU3LT5hZGQoMjI5
KTsKKyAgICBfNDQ1Ny0+YWRkKDEyNik7CisgICAgXzQ0NTctPmFkZCg0MjQpOworICAgIF80NDU3
LT5hZGQoMjg3KTsKKyAgICBfNDQ1Ny0+YWRkKDM2Nyk7CisgICAgXzQ0NTctPmFkZCg2MzkpOwor
ICAgIF80NDU3LT5hZGQoOTgpOworICAgIF80NDU3LT5hZGQoMzcyKTsKKyAgICBfNDQ1Ny0+YWRk
KDQ1KTsKKyAgICBfNDQ1Ny0+YWRkKDI1MCk7CisgICAgXzQ0NTctPmFkZCgxMTEpOworICAgIF80
NDU3LT5hZGQoMjYpOworICAgIF80NDU3LT5hZGQoNDQwKTsKKyAgICBfNDQ1Ny0+YWRkKDE2OCk7
CisgICAgXzQ0NTctPmFkZCg0MjgpOworICAgIF80NDU3LT5hZGQoMzU5KTsKKyAgICBfNDQ1Ny0+
YWRkKDIpOworICAgIF80NDU3LT5hZGQoNDMyKTsKKyAgICBfNDQ1Ny0+YWRkKDQyMCk7CisgICAg
XzQ0NTctPmFkZCgyMCk7CisgICAgXzQ0NTUtPmFkZCgxODIpOworICAgIF80NDU1LT5hZGQoNDM2
KTsKKyAgICBfNDQ1NS0+YWRkKDIyOSk7CisgICAgXzQ0NTUtPmFkZCgxMjYpOworICAgIF80NDU1
LT5hZGQoMjg3KTsKKyAgICBfNDQ1NS0+YWRkKDM2Nyk7CisgICAgXzQ0NTUtPmFkZCg0MzIpOwor
ICAgIF80NDU1LT5hZGQoNDIwKTsKKyAgICBfNDQ1NS0+YWRkKDQ1KTsKKyAgICBfNDQ1NS0+YWRk
KDI1MCk7CisgICAgXzQ0NTUtPmFkZCgxMTEpOworICAgIF80NDU1LT5hZGQoMjYpOworICAgIF80
NDU1LT5hZGQoNDQwKTsKKyAgICBfNDQ1NS0+YWRkKDE2OCk7CisgICAgXzQ0NTUtPmFkZCg2Mzkp
OworICAgIF80NDU1LT5hZGQoMik7CisgICAgXzQ0NTUtPmFkZCgzNTkpOworICAgIF80NDU1LT5h
ZGQoNDI0KTsKKyAgICBfNDQ1NS0+YWRkKDQyOCk7CisgICAgXzQ0NTUtPmFkZCgyMCk7CisgICAg
XzQ0NTUtPmFkZCgzNzIpOworICAgIF80NDU1LT5hZGQoOTgpOworICAgIF80NDUyLT5hZGQoMTgy
KTsKKyAgICBfNDQ1Mi0+YWRkKDQzNik7CisgICAgXzQ0NTItPmFkZCgyMjkpOworICAgIF80NDUy
LT5hZGQoMTI2KTsKKyAgICBfNDQ1Mi0+YWRkKDI4Nyk7CisgICAgXzQ0NTItPmFkZCgzNjcpOwor
ICAgIF80NDUyLT5hZGQoNDMyKTsKKyAgICBfNDQ1Mi0+YWRkKDQyMCk7CisgICAgXzQ0NTItPmFk
ZCg0NSk7CisgICAgXzQ0NTItPmFkZCgyNTApOworICAgIF80NDUyLT5hZGQoMTExKTsKKyAgICBf
NDQ1Mi0+YWRkKDI2KTsKKyAgICBfNDQ1Mi0+YWRkKDQ0MCk7CisgICAgXzQ0NTItPmFkZCgxNjgp
OworICAgIF80NDUyLT5hZGQoNjM5KTsKKyAgICBfNDQ1Mi0+YWRkKDIpOworICAgIF80NDUyLT5h
ZGQoMzU5KTsKKyAgICBfNDQ1Mi0+YWRkKDQyNCk7CisgICAgXzQ0NTItPmFkZCg0MjgpOworICAg
IF80NDUyLT5hZGQoMjApOworICAgIF80NDUyLT5hZGQoMzcyKTsKKyAgICBfNDQ1Mi0+YWRkKDk4
KTsKKyAgICBfNDQ1My0+YWRkKDQyOCk7CisgICAgXzQ0NTMtPmFkZCgxODIpOworICAgIF80NDUz
LT5hZGQoNDM2KTsKKyAgICBfNDQ1My0+YWRkKDIyOSk7CisgICAgXzQ0NTMtPmFkZCgxMjYpOwor
ICAgIF80NDUzLT5hZGQoMjg3KTsKKyAgICBfNDQ1My0+YWRkKDM2Nyk7CisgICAgXzQ0NTMtPmFk
ZCg0NSk7CisgICAgXzQ0NTMtPmFkZCgyNTApOworICAgIF80NDUzLT5hZGQoMTExKTsKKyAgICBf
NDQ1My0+YWRkKDI2KTsKKyAgICBfNDQ1My0+YWRkKDQ0MCk7CisgICAgXzQ0NTMtPmFkZCgxNjgp
OworICAgIF80NDUzLT5hZGQoNjM5KTsKKyAgICBfNDQ1My0+YWRkKDk4KTsKKyAgICBfNDQ1My0+
YWRkKDM1OSk7CisgICAgXzQ0NTMtPmFkZCgyKTsKKyAgICBfNDQ1My0+YWRkKDQyMCk7CisgICAg
XzQ0NTMtPmFkZCgyMCk7CisgICAgXzQ0NTMtPmFkZCg0MjQpOworICAgIF80NDUzLT5hZGQoMzcy
KTsKKyAgICBfNDQ1My0+YWRkKDQzMik7CisgICAgXzQ0NTMtPmFkZCg3Mik7CisgICAgXzQ0NTMt
PmFkZCg3MTIpOworICAgIF80NDU0LT5hZGQoNDI4KTsKKyAgICBfNDQ1NC0+YWRkKDE4Mik7Cisg
ICAgXzQ0NTQtPmFkZCg0MzYpOworICAgIF80NDU0LT5hZGQoMjI5KTsKKyAgICBfNDQ1NC0+YWRk
KDEyNik7CisgICAgXzQ0NTQtPmFkZCgyODcpOworICAgIF80NDU0LT5hZGQoMzY3KTsKKyAgICBf
NDQ1NC0+YWRkKDQ1KTsKKyAgICBfNDQ1NC0+YWRkKDI1MCk7CisgICAgXzQ0NTQtPmFkZCgxMTEp
OworICAgIF80NDU0LT5hZGQoMjYpOworICAgIF80NDU0LT5hZGQoNDQwKTsKKyAgICBfNDQ1NC0+
YWRkKDE2OCk7CisgICAgXzQ0NTQtPmFkZCg2MzkpOworICAgIF80NDU0LT5hZGQoOTgpOworICAg
IF80NDU0LT5hZGQoMzU5KTsKKyAgICBfNDQ1NC0+YWRkKDIpOworICAgIF80NDU0LT5hZGQoNDIw
KTsKKyAgICBfNDQ1NC0+YWRkKDIwKTsKKyAgICBfNDQ1NC0+YWRkKDQyNCk7CisgICAgXzQ0NTQt
PmFkZCgzNzIpOworICAgIF80NDU0LT5hZGQoNDMyKTsKKyAgICBfNDQ1NC0+YWRkKDcyKTsKKyAg
ICBfNDQ1NC0+YWRkKDcxMik7CisgICAgXzQ0NTUtPmFkZCgxODIpOworICAgIF80NDU1LT5hZGQo
NDM2KTsKKyAgICBfNDQ1NS0+YWRkKDIyOSk7CisgICAgXzQ0NTUtPmFkZCgxMjYpOworICAgIF80
NDU1LT5hZGQoMjg3KTsKKyAgICBfNDQ1NS0+YWRkKDM2Nyk7CisgICAgXzQ0NTUtPmFkZCg0MzIp
OworICAgIF80NDU1LT5hZGQoNjM5KTsKKyAgICBfNDQ1NS0+YWRkKDQ1KTsKKyAgICBfNDQ1NS0+
YWRkKDI1MCk7CisgICAgXzQ0NTUtPmFkZCgxMTEpOworICAgIF80NDU1LT5hZGQoMjYpOworICAg
IF80NDU1LT5hZGQoOTgpOworICAgIF80NDU1LT5hZGQoNDQwKTsKKyAgICBfNDQ1NS0+YWRkKDE2
OCk7CisgICAgXzQ0NTUtPmFkZCg0MjgpOworICAgIF80NDU1LT5hZGQoMzU5KTsKKyAgICBfNDQ1
NS0+YWRkKDIpOworICAgIF80NDU1LT5hZGQoNDIwKTsKKyAgICBfNDQ1NS0+YWRkKDIwKTsKKyAg
ICBfNDQ1NS0+YWRkKDcyKTsKKyAgICBfNDQ1NS0+YWRkKDQyNCk7CisgICAgXzQ0NTUtPmFkZCgz
NzIpOworICAgIF80NDU1LT5hZGQoMTgzKTsKKyAgICBfNDQ1Mi0+YWRkKDE4Mik7CisgICAgXzQ0
NTItPmFkZCg0MzYpOworICAgIF80NDUyLT5hZGQoMjI5KTsKKyAgICBfNDQ1Mi0+YWRkKDEyNik7
CisgICAgXzQ0NTItPmFkZCgyODcpOworICAgIF80NDUyLT5hZGQoMzY3KTsKKyAgICBfNDQ1Mi0+
YWRkKDQzMik7CisgICAgXzQ0NTItPmFkZCg2MzkpOworICAgIF80NDUyLT5hZGQoNDUpOworICAg
IF80NDUyLT5hZGQoMjUwKTsKKyAgICBfNDQ1Mi0+YWRkKDExMSk7CisgICAgXzQ0NTItPmFkZCgy
Nik7CisgICAgXzQ0NTItPmFkZCg5OCk7CisgICAgXzQ0NTItPmFkZCg0NDApOworICAgIF80NDUy
LT5hZGQoMTY4KTsKKyAgICBfNDQ1Mi0+YWRkKDQyOCk7CisgICAgXzQ0NTItPmFkZCgzNTkpOwor
ICAgIF80NDUyLT5hZGQoMik7CisgICAgXzQ0NTItPmFkZCg0MjApOworICAgIF80NDUyLT5hZGQo
MjApOworICAgIF80NDUyLT5hZGQoNzIpOworICAgIF80NDUyLT5hZGQoNDI0KTsKKyAgICBfNDQ1
Mi0+YWRkKDM3Mik7CisgICAgZGVsZXRlIF80NDUyOworICAgIGRlbGV0ZSBfNDQ1MzsKKyAgICBk
ZWxldGUgXzQ0NTQ7CisgICAgZGVsZXRlIF80NDU1OworICAgIGRlbGV0ZSBfNDQ1NjsKKyAgICBk
ZWxldGUgXzQ0NTc7CisgICAgZGVsZXRlIF80NDU4OworICAgIGRlbGV0ZSBfNDQ1OTsKKyAgICBk
ZWxldGUgXzQ0NjA7CisgICAgZGVsZXRlIF80NDYxOworICAgIGRlbGV0ZSBfNDQ2MjsKKyAgICBk
ZWxldGUgXzQ0NjM7CisgICAgZGVsZXRlIF80NDY0OworICAgIGRlbGV0ZSBfNDQ2NTsKKyAgICBk
ZWxldGUgXzQ0NjY7CisgICAgZGVsZXRlIF80NDY3OworICAgIGF1dG8qIF80NDY4ID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0NjkgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ3MCA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDcxID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0
NzIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDQ3MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NDc0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ0NzUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDQ3NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NDc3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0NzggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ3OSA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDgwID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ0ODEgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDQ4MiA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NDgz
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ0ODQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBf
NDQ4My0+YWRkKDQ4Myk7CisgICAgXzQ0ODEtPmFkZCg1MDgpOworICAgIF80NDgxLT5hZGQoMjI5
KTsKKyAgICBfNDQ4MS0+YWRkKDE4Mik7CisgICAgXzQ0ODEtPmFkZCg1MDcpOworICAgIF80NDgy
LT5hZGQoNTA4KTsKKyAgICBfNDQ4Mi0+YWRkKDIyOSk7CisgICAgXzQ0ODItPmFkZCgxODIpOwor
ICAgIF80NDgyLT5hZGQoNTA3KTsKKyAgICBfNDQ4My0+YWRkKDE4Mik7CisgICAgXzQ0ODMtPmFk
ZCgyMjkpOworICAgIF80NDgzLT5hZGQoNDgzKTsKKyAgICBfNDQ4My0+YWRkKDQ3Myk7CisgICAg
XzQ0ODAtPmFkZCgxODIpOworICAgIF80NDgwLT5hZGQoMjI5KTsKKyAgICBfNDQ4MC0+YWRkKDE2
OCk7CisgICAgXzQ0ODAtPmFkZCgyKTsKKyAgICBfNDQ4MC0+YWRkKDEyNik7CisgICAgXzQ0ODAt
PmFkZCgyMCk7CisgICAgXzQ0ODAtPmFkZCgzNTkpOworICAgIF80NDgwLT5hZGQoMzcyKTsKKyAg
ICBfNDQ4MC0+YWRkKDk4KTsKKyAgICBfNDQ4MC0+YWRkKDQyMCk7CisgICAgXzQ0ODAtPmFkZCg0
MjQpOworICAgIF80NDgwLT5hZGQoNDI4KTsKKyAgICBfNDQ4MC0+YWRkKDQzMik7CisgICAgXzQ0
ODAtPmFkZCg0MzYpOworICAgIF80NDgwLT5hZGQoNDQwKTsKKyAgICBfNDQ4MC0+YWRkKDM2Nyk7
CisgICAgXzQ0ODAtPmFkZCgyNik7CisgICAgXzQ0ODAtPmFkZCg0NSk7CisgICAgXzQ0ODAtPmFk
ZCg1MDYpOworICAgIF80NDc5LT5hZGQoMTgyKTsKKyAgICBfNDQ3OS0+YWRkKDIyOSk7CisgICAg
XzQ0NzktPmFkZCgxNjgpOworICAgIF80NDc5LT5hZGQoMik7CisgICAgXzQ0NzktPmFkZCgxMjYp
OworICAgIF80NDc5LT5hZGQoMjApOworICAgIF80NDc5LT5hZGQoMzU5KTsKKyAgICBfNDQ3OS0+
YWRkKDM3Mik7CisgICAgXzQ0NzktPmFkZCg5OCk7CisgICAgXzQ0NzktPmFkZCg0MjApOworICAg
IF80NDc5LT5hZGQoNDI0KTsKKyAgICBfNDQ3OS0+YWRkKDQyOCk7CisgICAgXzQ0NzktPmFkZCg0
MzIpOworICAgIF80NDc5LT5hZGQoNDM2KTsKKyAgICBfNDQ3OS0+YWRkKDQ0MCk7CisgICAgXzQ0
NzktPmFkZCgzNjcpOworICAgIF80NDc5LT5hZGQoMjYpOworICAgIF80NDc5LT5hZGQoNDUpOwor
ICAgIF80NDc5LT5hZGQoNTA2KTsKKyAgICBfNDQ3NS0+YWRkKDE4Mik7CisgICAgXzQ0NzUtPmFk
ZCg0MzYpOworICAgIF80NDc1LT5hZGQoMjI5KTsKKyAgICBfNDQ3NS0+YWRkKDEyNik7CisgICAg
XzQ0NzUtPmFkZCgzNjcpOworICAgIF80NDc1LT5hZGQoNDUpOworICAgIF80NDc1LT5hZGQoNDMy
KTsKKyAgICBfNDQ3NS0+YWRkKDM1OSk7CisgICAgXzQ0NzUtPmFkZCg0NDApOworICAgIF80NDc1
LT5hZGQoMjYpOworICAgIF80NDc1LT5hZGQoMTY4KTsKKyAgICBfNDQ3NS0+YWRkKDQyOCk7Cisg
ICAgXzQ0NzUtPmFkZCg5OCk7CisgICAgXzQ0NzUtPmFkZCgyKTsKKyAgICBfNDQ3NS0+YWRkKDQy
MCk7CisgICAgXzQ0NzUtPmFkZCgyMCk7CisgICAgXzQ0NzUtPmFkZCg0MjQpOworICAgIF80NDc1
LT5hZGQoMzcyKTsKKyAgICBfNDQ3OC0+YWRkKDE4Mik7CisgICAgXzQ0NzgtPmFkZCg0MzYpOwor
ICAgIF80NDc4LT5hZGQoMjI5KTsKKyAgICBfNDQ3OC0+YWRkKDEyNik7CisgICAgXzQ0NzgtPmFk
ZCgzNjcpOworICAgIF80NDc4LT5hZGQoNDUpOworICAgIF80NDc4LT5hZGQoNDMyKTsKKyAgICBf
NDQ3OC0+YWRkKDM1OSk7CisgICAgXzQ0NzgtPmFkZCg0NDApOworICAgIF80NDc4LT5hZGQoMjYp
OworICAgIF80NDc4LT5hZGQoMTY4KTsKKyAgICBfNDQ3OC0+YWRkKDQyOCk7CisgICAgXzQ0Nzgt
PmFkZCg5OCk7CisgICAgXzQ0NzgtPmFkZCgyKTsKKyAgICBfNDQ3OC0+YWRkKDQyMCk7CisgICAg
XzQ0NzgtPmFkZCgyMCk7CisgICAgXzQ0NzgtPmFkZCg0MjQpOworICAgIF80NDc4LT5hZGQoMzcy
KTsKKyAgICBfNDQ3OC0+YWRkKDMyMCk7CisgICAgXzQ0NzctPmFkZCgxODIpOworICAgIF80NDc3
LT5hZGQoNDM2KTsKKyAgICBfNDQ3Ny0+YWRkKDIyOSk7CisgICAgXzQ0NzctPmFkZCgxMjYpOwor
ICAgIF80NDc3LT5hZGQoMzY3KTsKKyAgICBfNDQ3Ny0+YWRkKDI4Nyk7CisgICAgXzQ0NzctPmFk
ZCg0MzIpOworICAgIF80NDc3LT5hZGQoNDUpOworICAgIF80NDc3LT5hZGQoMjYpOworICAgIF80
NDc3LT5hZGQoNDQwKTsKKyAgICBfNDQ3Ny0+YWRkKDE2OCk7CisgICAgXzQ0NzctPmFkZCg0Mjgp
OworICAgIF80NDc3LT5hZGQoMzU5KTsKKyAgICBfNDQ3Ny0+YWRkKDIpOworICAgIF80NDc3LT5h
ZGQoNDIwKTsKKyAgICBfNDQ3Ny0+YWRkKDIwKTsKKyAgICBfNDQ3Ny0+YWRkKDQyNCk7CisgICAg
XzQ0NzctPmFkZCgzNzIpOworICAgIF80NDc3LT5hZGQoOTgpOworICAgIF80NDc3LT5hZGQoMjUw
KTsKKyAgICBfNDQ3Ny0+YWRkKDE3OSk7CisgICAgXzQ0NzctPmFkZCg1MDUpOworICAgIF80NDc3
LT5hZGQoMTExKTsKKyAgICBfNDQ3Ny0+YWRkKDI3Mik7CisgICAgXzQ0NzctPmFkZCgyMzIpOwor
ICAgIF80NDc3LT5hZGQoNTA0KTsKKyAgICBfNDQ3Ni0+YWRkKDE4Mik7CisgICAgXzQ0NzYtPmFk
ZCg0MzYpOworICAgIF80NDc2LT5hZGQoMjI5KTsKKyAgICBfNDQ3Ni0+YWRkKDEyNik7CisgICAg
XzQ0NzYtPmFkZCgzNjcpOworICAgIF80NDc2LT5hZGQoMjg3KTsKKyAgICBfNDQ3Ni0+YWRkKDQz
Mik7CisgICAgXzQ0NzYtPmFkZCg0NSk7CisgICAgXzQ0NzYtPmFkZCgyNik7CisgICAgXzQ0NzYt
PmFkZCg0NDApOworICAgIF80NDc2LT5hZGQoMTY4KTsKKyAgICBfNDQ3Ni0+YWRkKDQyOCk7Cisg
ICAgXzQ0NzYtPmFkZCgzNTkpOworICAgIF80NDc2LT5hZGQoMik7CisgICAgXzQ0NzYtPmFkZCg0
MjApOworICAgIF80NDc2LT5hZGQoMjApOworICAgIF80NDc2LT5hZGQoNDI0KTsKKyAgICBfNDQ3
Ni0+YWRkKDM3Mik7CisgICAgXzQ0NzYtPmFkZCg5OCk7CisgICAgXzQ0NzYtPmFkZCgyNTApOwor
ICAgIF80NDc2LT5hZGQoMTc5KTsKKyAgICBfNDQ3Ni0+YWRkKDUwNSk7CisgICAgXzQ0NzYtPmFk
ZCgxMTEpOworICAgIF80NDc2LT5hZGQoMjcyKTsKKyAgICBfNDQ3Ni0+YWRkKDIzMik7CisgICAg
XzQ0NzYtPmFkZCg1MDQpOworICAgIF80NDc1LT5hZGQoMTgyKTsKKyAgICBfNDQ3NS0+YWRkKDQz
Nik7CisgICAgXzQ0NzUtPmFkZCgyMjkpOworICAgIF80NDc1LT5hZGQoMTI2KTsKKyAgICBfNDQ3
NS0+YWRkKDI4Nyk7CisgICAgXzQ0NzUtPmFkZCgzNjcpOworICAgIF80NDc1LT5hZGQoNDMyKTsK
KyAgICBfNDQ3NS0+YWRkKDIzNik7CisgICAgXzQ0NzUtPmFkZCgxNzkpOworICAgIF80NDc1LT5h
ZGQoMjMyKTsKKyAgICBfNDQ3NS0+YWRkKDQ1KTsKKyAgICBfNDQ3NS0+YWRkKDI1MCk7CisgICAg
XzQ0NzUtPmFkZCgyNzIpOworICAgIF80NDc1LT5hZGQoMTExKTsKKyAgICBfNDQ3NS0+YWRkKDI2
KTsKKyAgICBfNDQ3NS0+YWRkKDQ0MCk7CisgICAgXzQ0NzUtPmFkZCgxNjgpOworICAgIF80NDc1
LT5hZGQoNDI4KTsKKyAgICBfNDQ3NS0+YWRkKDk4KTsKKyAgICBfNDQ3NS0+YWRkKDM1OSk7Cisg
ICAgXzQ0NzUtPmFkZCgyKTsKKyAgICBfNDQ3NS0+YWRkKDQyMCk7CisgICAgXzQ0NzUtPmFkZCgy
MCk7CisgICAgXzQ0NzUtPmFkZCg0MjQpOworICAgIF80NDc1LT5hZGQoMzcyKTsKKyAgICBfNDQ3
OC0+YWRkKDE4Mik7CisgICAgXzQ0NzgtPmFkZCg0MzYpOworICAgIF80NDc4LT5hZGQoMjI5KTsK
KyAgICBfNDQ3OC0+YWRkKDEyNik7CisgICAgXzQ0NzgtPmFkZCgyODcpOworICAgIF80NDc4LT5h
ZGQoMzY3KTsKKyAgICBfNDQ3OC0+YWRkKDQzMik7CisgICAgXzQ0NzgtPmFkZCgzMzgpOworICAg
IF80NDc4LT5hZGQoMTc5KTsKKyAgICBfNDQ3OC0+YWRkKDIzMik7CisgICAgXzQ0NzgtPmFkZCg0
NSk7CisgICAgXzQ0NzgtPmFkZCgyNTApOworICAgIF80NDc4LT5hZGQoMjcyKTsKKyAgICBfNDQ3
OC0+YWRkKDExMSk7CisgICAgXzQ0NzgtPmFkZCgyNik7CisgICAgXzQ0NzgtPmFkZCg0NDApOwor
ICAgIF80NDc4LT5hZGQoMTY4KTsKKyAgICBfNDQ3OC0+YWRkKDQyOCk7CisgICAgXzQ0NzgtPmFk
ZCg5OCk7CisgICAgXzQ0NzgtPmFkZCgzNTkpOworICAgIF80NDc4LT5hZGQoMik7CisgICAgXzQ0
NzgtPmFkZCg0MjApOworICAgIF80NDc4LT5hZGQoMjApOworICAgIF80NDc4LT5hZGQoNDI0KTsK
KyAgICBfNDQ3OC0+YWRkKDM3Mik7CisgICAgXzQ0NzgtPmFkZCgzMjApOworICAgIF80NDczLT5h
ZGQoMTgyKTsKKyAgICBfNDQ3My0+YWRkKDQzNik7CisgICAgXzQ0NzMtPmFkZCgyMjkpOworICAg
IF80NDczLT5hZGQoMTI2KTsKKyAgICBfNDQ3My0+YWRkKDI4Nyk7CisgICAgXzQ0NzMtPmFkZCgz
NjcpOworICAgIF80NDczLT5hZGQoNDMyKTsKKyAgICBfNDQ3My0+YWRkKDE3OSk7CisgICAgXzQ0
NzMtPmFkZCgzNzIpOworICAgIF80NDczLT5hZGQoNDUpOworICAgIF80NDczLT5hZGQoMjUwKTsK
KyAgICBfNDQ3My0+YWRkKDQyNCk7CisgICAgXzQ0NzMtPmFkZCgxMTEpOworICAgIF80NDczLT5h
ZGQoMjYpOworICAgIF80NDczLT5hZGQoNDQwKTsKKyAgICBfNDQ3My0+YWRkKDE2OCk7CisgICAg
XzQ0NzMtPmFkZCg0MjgpOworICAgIF80NDczLT5hZGQoMzU5KTsKKyAgICBfNDQ3My0+YWRkKDIp
OworICAgIF80NDczLT5hZGQoOTgpOworICAgIF80NDczLT5hZGQoNDIwKTsKKyAgICBfNDQ3My0+
YWRkKDIwKTsKKyAgICBfNDQ3NC0+YWRkKDE4Mik7CisgICAgXzQ0NzQtPmFkZCg0MzYpOworICAg
IF80NDc0LT5hZGQoMjI5KTsKKyAgICBfNDQ3NC0+YWRkKDEyNik7CisgICAgXzQ0NzQtPmFkZCgy
ODcpOworICAgIF80NDc0LT5hZGQoMzY3KTsKKyAgICBfNDQ3NC0+YWRkKDQzMik7CisgICAgXzQ0
NzQtPmFkZCgxNzkpOworICAgIF80NDc0LT5hZGQoMzcyKTsKKyAgICBfNDQ3NC0+YWRkKDQ1KTsK
KyAgICBfNDQ3NC0+YWRkKDI1MCk7CisgICAgXzQ0NzQtPmFkZCg0MjQpOworICAgIF80NDc0LT5h
ZGQoMTExKTsKKyAgICBfNDQ3NC0+YWRkKDI2KTsKKyAgICBfNDQ3NC0+YWRkKDQ0MCk7CisgICAg
XzQ0NzQtPmFkZCgxNjgpOworICAgIF80NDc0LT5hZGQoNDI4KTsKKyAgICBfNDQ3NC0+YWRkKDM1
OSk7CisgICAgXzQ0NzQtPmFkZCgyKTsKKyAgICBfNDQ3NC0+YWRkKDk4KTsKKyAgICBfNDQ3NC0+
YWRkKDQyMCk7CisgICAgXzQ0NzQtPmFkZCgyMCk7CisgICAgXzQ0NzItPmFkZCgxODIpOworICAg
IF80NDcyLT5hZGQoNDM2KTsKKyAgICBfNDQ3Mi0+YWRkKDIyOSk7CisgICAgXzQ0NzItPmFkZCgx
MjYpOworICAgIF80NDcyLT5hZGQoMjg3KTsKKyAgICBfNDQ3Mi0+YWRkKDM2Nyk7CisgICAgXzQ0
NzItPmFkZCgxNzkpOworICAgIF80NDcyLT5hZGQoNDUpOworICAgIF80NDcyLT5hZGQoMjUwKTsK
KyAgICBfNDQ3Mi0+YWRkKDExMSk7CisgICAgXzQ0NzItPmFkZCgyNik7CisgICAgXzQ0NzItPmFk
ZCg0NDApOworICAgIF80NDcyLT5hZGQoMTY4KTsKKyAgICBfNDQ3Mi0+YWRkKDQyOCk7CisgICAg
XzQ0NzItPmFkZCgyKTsKKyAgICBfNDQ3Mi0+YWRkKDM1OSk7CisgICAgXzQ0NzItPmFkZCg0MjQp
OworICAgIF80NDcyLT5hZGQoNDIwKTsKKyAgICBfNDQ3Mi0+YWRkKDIwKTsKKyAgICBfNDQ3Mi0+
YWRkKDk4KTsKKyAgICBfNDQ3Mi0+YWRkKDM3Mik7CisgICAgXzQ0NzItPmFkZCg0MzIpOworICAg
IF80NDY5LT5hZGQoMTgyKTsKKyAgICBfNDQ2OS0+YWRkKDQzNik7CisgICAgXzQ0NjktPmFkZCgy
MjkpOworICAgIF80NDY5LT5hZGQoMTI2KTsKKyAgICBfNDQ2OS0+YWRkKDI4Nyk7CisgICAgXzQ0
NjktPmFkZCgzNjcpOworICAgIF80NDY5LT5hZGQoMTc5KTsKKyAgICBfNDQ2OS0+YWRkKDQ1KTsK
KyAgICBfNDQ2OS0+YWRkKDI1MCk7CisgICAgXzQ0NjktPmFkZCgxMTEpOworICAgIF80NDY5LT5h
ZGQoMjYpOworICAgIF80NDY5LT5hZGQoNDQwKTsKKyAgICBfNDQ2OS0+YWRkKDE2OCk7CisgICAg
XzQ0NjktPmFkZCg0MjgpOworICAgIF80NDY5LT5hZGQoMik7CisgICAgXzQ0NjktPmFkZCgzNTkp
OworICAgIF80NDY5LT5hZGQoNDI0KTsKKyAgICBfNDQ2OS0+YWRkKDQyMCk7CisgICAgXzQ0Njkt
PmFkZCgyMCk7CisgICAgXzQ0NjktPmFkZCg5OCk7CisgICAgXzQ0NjktPmFkZCgzNzIpOworICAg
IF80NDY5LT5hZGQoNDMyKTsKKyAgICBfNDQ3MC0+YWRkKDE4Mik7CisgICAgXzQ0NzAtPmFkZCg0
MzYpOworICAgIF80NDcwLT5hZGQoMjI5KTsKKyAgICBfNDQ3MC0+YWRkKDEyNik7CisgICAgXzQ0
NzAtPmFkZCgyODcpOworICAgIF80NDcwLT5hZGQoMzY3KTsKKyAgICBfNDQ3MC0+YWRkKDQzMik7
CisgICAgXzQ0NzAtPmFkZCgxNzkpOworICAgIF80NDcwLT5hZGQoNDIwKTsKKyAgICBfNDQ3MC0+
YWRkKDQ1KTsKKyAgICBfNDQ3MC0+YWRkKDI1MCk7CisgICAgXzQ0NzAtPmFkZCgxMTEpOworICAg
IF80NDcwLT5hZGQoMjYpOworICAgIF80NDcwLT5hZGQoNDQwKTsKKyAgICBfNDQ3MC0+YWRkKDE2
OCk7CisgICAgXzQ0NzAtPmFkZCg0MjgpOworICAgIF80NDcwLT5hZGQoMzU5KTsKKyAgICBfNDQ3
MC0+YWRkKDIpOworICAgIF80NDcwLT5hZGQoNDI0KTsKKyAgICBfNDQ3MC0+YWRkKDIwKTsKKyAg
ICBfNDQ3MC0+YWRkKDM3Mik7CisgICAgXzQ0NzAtPmFkZCg5OCk7CisgICAgXzQ0NzAtPmFkZCg3
Mik7CisgICAgXzQ0NzAtPmFkZCg1MDMpOworICAgIF80NDcxLT5hZGQoMTgyKTsKKyAgICBfNDQ3
MS0+YWRkKDQzNik7CisgICAgXzQ0NzEtPmFkZCgyMjkpOworICAgIF80NDcxLT5hZGQoMTI2KTsK
KyAgICBfNDQ3MS0+YWRkKDI4Nyk7CisgICAgXzQ0NzEtPmFkZCgzNjcpOworICAgIF80NDcxLT5h
ZGQoNDMyKTsKKyAgICBfNDQ3MS0+YWRkKDE3OSk7CisgICAgXzQ0NzEtPmFkZCg0MjApOworICAg
IF80NDcxLT5hZGQoNDUpOworICAgIF80NDcxLT5hZGQoMjUwKTsKKyAgICBfNDQ3MS0+YWRkKDEx
MSk7CisgICAgXzQ0NzEtPmFkZCgyNik7CisgICAgXzQ0NzEtPmFkZCg0NDApOworICAgIF80NDcx
LT5hZGQoMTY4KTsKKyAgICBfNDQ3MS0+YWRkKDQyOCk7CisgICAgXzQ0NzEtPmFkZCgzNTkpOwor
ICAgIF80NDcxLT5hZGQoMik7CisgICAgXzQ0NzEtPmFkZCg0MjQpOworICAgIF80NDcxLT5hZGQo
MjApOworICAgIF80NDcxLT5hZGQoMzcyKTsKKyAgICBfNDQ3MS0+YWRkKDk4KTsKKyAgICBfNDQ3
MS0+YWRkKDcyKTsKKyAgICBfNDQ3MS0+YWRkKDUwMyk7CisgICAgXzQ0NzItPmFkZCgxODIpOwor
ICAgIF80NDcyLT5hZGQoNDM2KTsKKyAgICBfNDQ3Mi0+YWRkKDIyOSk7CisgICAgXzQ0NzItPmFk
ZCgxMjYpOworICAgIF80NDcyLT5hZGQoMjg3KTsKKyAgICBfNDQ3Mi0+YWRkKDM2Nyk7CisgICAg
XzQ0NzItPmFkZCg0MzIpOworICAgIF80NDcyLT5hZGQoMTc5KTsKKyAgICBfNDQ3Mi0+YWRkKDQ1
KTsKKyAgICBfNDQ3Mi0+YWRkKDI1MCk7CisgICAgXzQ0NzItPmFkZCgxMTEpOworICAgIF80NDcy
LT5hZGQoMjYpOworICAgIF80NDcyLT5hZGQoNDQwKTsKKyAgICBfNDQ3Mi0+YWRkKDE2OCk7Cisg
ICAgXzQ0NzItPmFkZCg0MjgpOworICAgIF80NDcyLT5hZGQoOTgpOworICAgIF80NDcyLT5hZGQo
MzU5KTsKKyAgICBfNDQ3Mi0+YWRkKDIpOworICAgIF80NDcyLT5hZGQoNDIwKTsKKyAgICBfNDQ3
Mi0+YWRkKDIwKTsKKyAgICBfNDQ3Mi0+YWRkKDcyKTsKKyAgICBfNDQ3Mi0+YWRkKDQyNCk7Cisg
ICAgXzQ0NzItPmFkZCgzNzIpOworICAgIF80NDcyLT5hZGQoMTgzKTsKKyAgICBfNDQ2OS0+YWRk
KDE4Mik7CisgICAgXzQ0NjktPmFkZCg0MzYpOworICAgIF80NDY5LT5hZGQoMjI5KTsKKyAgICBf
NDQ2OS0+YWRkKDEyNik7CisgICAgXzQ0NjktPmFkZCgyODcpOworICAgIF80NDY5LT5hZGQoMzY3
KTsKKyAgICBfNDQ2OS0+YWRkKDQzMik7CisgICAgXzQ0NjktPmFkZCgxNzkpOworICAgIF80NDY5
LT5hZGQoNDUpOworICAgIF80NDY5LT5hZGQoMjUwKTsKKyAgICBfNDQ2OS0+YWRkKDExMSk7Cisg
ICAgXzQ0NjktPmFkZCgyNik7CisgICAgXzQ0NjktPmFkZCg0NDApOworICAgIF80NDY5LT5hZGQo
MTY4KTsKKyAgICBfNDQ2OS0+YWRkKDQyOCk7CisgICAgXzQ0NjktPmFkZCg5OCk7CisgICAgXzQ0
NjktPmFkZCgzNTkpOworICAgIF80NDY5LT5hZGQoMik7CisgICAgXzQ0NjktPmFkZCg0MjApOwor
ICAgIF80NDY5LT5hZGQoMjApOworICAgIF80NDY5LT5hZGQoNzIpOworICAgIF80NDY5LT5hZGQo
NDI0KTsKKyAgICBfNDQ2OS0+YWRkKDM3Mik7CisgICAgZGVsZXRlIF80NDY5OworICAgIGRlbGV0
ZSBfNDQ3MDsKKyAgICBkZWxldGUgXzQ0NzE7CisgICAgZGVsZXRlIF80NDcyOworICAgIGRlbGV0
ZSBfNDQ3MzsKKyAgICBkZWxldGUgXzQ0NzQ7CisgICAgZGVsZXRlIF80NDc1OworICAgIGRlbGV0
ZSBfNDQ3NjsKKyAgICBkZWxldGUgXzQ0Nzc7CisgICAgZGVsZXRlIF80NDc4OworICAgIGRlbGV0
ZSBfNDQ3OTsKKyAgICBkZWxldGUgXzQ0ODA7CisgICAgZGVsZXRlIF80NDgxOworICAgIGRlbGV0
ZSBfNDQ4MjsKKyAgICBkZWxldGUgXzQ0ODM7CisgICAgZGVsZXRlIF80NDg0OworICAgIGF1dG8q
IF80NDg1ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0
ODYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDQ4NyA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NDg4ID0gbmV3
IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0ODkgPSBuZXcgSGFz
aFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDQ5MCA9IG5ldyBIYXNoU2V0
PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NDkxID0gbmV3IEhhc2hTZXQ8OjpK
U0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ0OTIgPSBuZXcgSGFzaFNldDw6OkpTQzo6
REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDQ5MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGF1dG8qIF80NDk0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9k
ZSo+KCk7CisgICAgYXV0byogXzQ0OTUgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICBhdXRvKiBfNDQ5NiA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIGF1dG8qIF80NDk3ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAg
YXV0byogXzQ0OTggPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRv
KiBfNDQ5OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80
NTAwID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MDEg
PSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUwMiA9IG5l
dyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTAzID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MDQgPSBuZXcgSGFzaFNl
dDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUwNSA9IG5ldyBIYXNoU2V0PDo6
SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTA2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6
OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MDcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZH
OjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUwOCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIGF1dG8qIF80NTA5ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+
KCk7CisgICAgYXV0byogXzQ1MTAgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBhdXRvKiBfNDUxMSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAg
IGF1dG8qIF80NTEyID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0
byogXzQ1MTMgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBf
NDUxNCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTE1
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgYXV0byogXzQ1MTYgPSBu
ZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUxNyA9IG5ldyBI
YXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgICpfNDQ4NSA9IFdURk1vdmUoKl80NTE3
KTsKKyAgICBkZWxldGUgXzQ1MTc7CisgICAgYXV0byogXzQ1MTggPSBuZXcgSGFzaFNldDw6OkpT
Qzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBfNDUxOC0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAg
ICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMz
Yjg4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjM4NzAwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUxOC0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmMyYzg4bHUpKTsK
KyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjMxNTkwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjM3NWE4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUx
OC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUp
KTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBf
NDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4
bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICBfNDUxOC0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4bHUpKTsKKyAgICBfNDUxOC0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNzM4bHUpKTsKKyAg
ICBfNDUxOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNh
ZWQ4bHUpKTsKKyAgICBfNDUxOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzRmMzhsdSkpOworICAgIF80NTE4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUxOC0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80NTE4LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1
MTgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsK
KyAgICBfNDUxOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBj
YThsdSkpOworICAgIF80NTE4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MTgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjMyMjM4bHUpKTsKKyAgICBfNDUxOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzFmNjhsdSkpOworICAgIF80NTE4LT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTgtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxYmE4bHUpKTsKKyAgICBfNDUx
OC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOwor
ICAgIF80NTE4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5
MGx1KSk7CisgICAgXzQ1MTgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjMwOWQ4bHUpKTsKKyAgICAqXzQ0ODYgPSBXVEZNb3ZlKCpfNDUxOCk7CisgICAgZGVsZXRl
IF80NTE4OworICAgIGF1dG8qIF80NTE5ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+
KCk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAg
XzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcw
MGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MTktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7Cisg
ICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NzVhOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MTkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7
CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYzkxOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1
MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1
KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MTktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MTktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAg
XzQ1MTktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTY0
MGx1KSk7CisgICAgXzQ1MTktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjM1NjQwbHUpKTsKKyAgICBfNDUxOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTE5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTktPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4bHUpKTsKKyAgICBfNDUxOS0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzQwMzhsdSkpOworICAgIF80NTE5
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7Cisg
ICAgXzQ1MTktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4
bHUpKTsKKyAgICBfNDUxOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2Y2E1NzhsdSkpOworICAgIF80NTE5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MTktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMxZjY4bHUpKTsKKyAgICBfNDUxOS0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTE5LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MTkt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAg
ICBfNDUxOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBs
dSkpOworICAgIF80NTE5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMDlkOGx1KSk7CisgICAgKl80NDg3ID0gV1RGTW92ZSgqXzQ1MTkpOworICAgIGRlbGV0ZSBf
NDUxOTsKKyAgICBhdXRvKiBfNDUyMCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzU1YzhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2NjZDhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZiZDBsdSkpOworICAgIF80NTIwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzNiODhsdSkpOworICAgIF80
NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzg3MDBs
dSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2M2FjODBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2M2NhZjhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2YzJjODhsdSkpOworICAgIF80NTIwLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M1NThsdSkpOworICAg
IF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzE1
OTBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2Mzc1YThsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIwLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NlYjhsdSkpOwor
ICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzRmMzhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2M2M5MThsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2E4YzBsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIw
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M3MzhsdSkp
OworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzA5ZDhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2FlZDhsdSkpOworICAgIF80NTIwLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTIwLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80
NTIwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7
CisgICAgXzQ1MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMz
NDgwbHUpKTsKKyAgICBfNDUyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzIyMzhsdSkpOworICAgIF80NTIwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyMC0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIwLT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1
MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4bHUpKTsK
KyAgICBfNDUyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFm
NjhsdSkpOworICAgIF80NTIwLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MjAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjMxYmE4bHUpKTsKKyAgICBfNDUyMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIwLT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MjAtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICAqXzQ0
ODggPSBXVEZNb3ZlKCpfNDUyMCk7CisgICAgZGVsZXRlIF80NTIwOworICAgIGF1dG8qIF80NTIx
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1MjEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1
MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1
KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MjEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAg
XzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4
OGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MjEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7Cisg
ICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
Y2ViOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7
CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYzczOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1
MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1
KSk7CisgICAgXzQ1MjEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MjEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkpOworICAgIF80NTIxLT5hZGQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MjEtPmFkZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0MDM4bHUpKTsKKyAgICBfNDUy
MS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkpOwor
ICAgIF80NTIxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNh
OGx1KSk7CisgICAgXzQ1MjEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80NTIxLT5hZGQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MjEtPmFkZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMS0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFiYThsdSkpOworICAgIF80NTIx
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7Cisg
ICAgXzQ1MjEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkw
bHUpKTsKKyAgICBfNDUyMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzA5ZDhsdSkpOworICAgICpfNDQ4OSA9IFdURk1vdmUoKl80NTIxKTsKKyAgICBkZWxldGUg
XzQ1MjE7CisgICAgYXV0byogXzQ1MjIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4o
KTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjM1NWM4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzYjg4bHUpKTsKKyAgICBf
NDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM4NzAw
bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNmMyYzg4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyMi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM3NWE4bHUpKTsKKyAg
ICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMz
NDgwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUyMi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsK
KyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjMwMTY4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNzM4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUy
Mi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUp
KTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyMi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUyMi0+YWRkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIy
LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7Cisg
ICAgXzQ1MjItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMyMjM4
bHUpKTsKKyAgICBfNDUyMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzQwMzhsdSkpOworICAgIF80NTIyLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MjItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyMi0+YWRkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTIyLT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MjIt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxZjY4bHUpKTsKKyAg
ICBfNDUyMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThs
dSkpOworICAgIF80NTIyLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMWJhOGx1KSk7CisgICAgXzQ1MjItPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTIyLT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgKl80NDkwID0gV1RGTW92
ZSgqXzQ1MjIpOworICAgIGRlbGV0ZSBfNDUyMjsKKyAgICBhdXRvKiBfNDUyMyA9IG5ldyBIYXNo
U2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzU1YzhsdSkpOworICAgIF80NTIzLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NjZDhsdSkpOworICAgIF80
NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZiZDBs
dSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzNiODhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2Mzg3MDBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2FjODBsdSkpOworICAgIF80NTIzLT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NhZjhsdSkpOworICAg
IF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2YzJj
ODhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2M2FlZDhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzc1YThsdSkpOworICAgIF80NTIzLT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M3MzhsdSkpOwor
ICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
MzM0ODBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NlYjhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzRmMzhsdSkpOworICAgIF80NTIz
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M5MThsdSkp
OworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2M2E4YzBsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTIzLT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M1NThsdSkpOworICAgIF80
NTIzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhs
dSkpOworICAgIF80NTIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMGNhOGx1KSk7CisgICAgXzQ1MjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzIyMzhsdSkpOworICAgIF80NTIzLT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MjMtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyMy0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAg
IF80NTIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1
KSk7CisgICAgXzQ1MjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjMyMjM4bHUpKTsKKyAgICBfNDUyMy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2MzFmNjhsdSkpOworICAgIF80NTIzLT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MjMtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxYmE4bHUpKTsKKyAgICBfNDUyMy0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTIzLT5h
ZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAg
XzQ1MjMtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUp
KTsKKyAgICAqXzQ0OTEgPSBXVEZNb3ZlKCpfNDUyMyk7CisgICAgZGVsZXRlIF80NTIzOworICAg
IGF1dG8qIF80NTI0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1
MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1
KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAg
XzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4
MGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzOWVlOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MjQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmQzOGx1KSk7Cisg
ICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MTU5MGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MjQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7
CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzY2ViOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1
MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1
KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MjQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAg
XzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVk
OGx1KSk7CisgICAgXzQ1MjQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzOTY3OGx1KSk7CisgICAgXzQ1MjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjM5ZWU4bHUpKTsKKyAgICBfNDUyNC0+YWRkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgIF80NTI0LT5hZGQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MjQtPmFk
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBf
NDUyNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzM0ODBsdSkp
OworICAgIF80NTI0LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MWJhOGx1KSk7CisgICAgXzQ1MjQtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyNC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTI0LT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgKl80NDkyID0gV1RGTW92ZSgq
XzQ1MjQpOworICAgIGRlbGV0ZSBfNDUyNDsKKyAgICBhdXRvKiBfNDUyNSA9IG5ldyBIYXNoU2V0
PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzU1YzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NjZDhsdSkpOworICAgIF80NTI1
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZiZDBsdSkp
OworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzNiODhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2Mzg3MDBsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2FjODBsdSkpOworICAgIF80NTI1LT5hZGRWb2lk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NhZjhsdSkpOworICAgIF80
NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzZmMThs
dSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2YzJjODhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzZkMzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzE1OTBsdSkpOworICAgIF80NTI1LT5hZGRW
b2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzc1YThsdSkpOworICAg
IF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2YzFi
YThsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2MzM0ODBsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2NlYjhsdSkpOworICAgIF80NTI1LT5h
ZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzRmMzhsdSkpOwor
ICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2
M2M5MThsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpO
b2RlKj4oMHgxMGM2Y2E1NzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2E4YzBsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJp
dHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzAxNjhsdSkpOworICAgIF80NTI1
LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2M1NThsdSkp
OworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgx
MGM2MzA5ZDhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2M3MzhsdSkpOworICAgIF80NTI1LT5hZGRWb2lkKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2FlZDhsdSkpOworICAgIF80NTI1LT5hZGQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmYxOGx1KSk7CisgICAgXzQ1MjUt
PmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAg
ICBfNDUyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhs
dSkpOworICAgIF80NTI1LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMGNhOGx1KSk7CisgICAgXzQ1MjUtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyNS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzFiYThsdSkpOworICAgIF80NTI1LT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjUtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNS0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAg
ICpfNDQ5MyA9IFdURk1vdmUoKl80NTI1KTsKKyAgICBkZWxldGUgXzQ1MjU7CisgICAgYXV0byog
XzQ1MjYgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDUyNi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAg
ICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNj
Y2Q4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzYjg4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyNi0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM4NzAwbHUpKTsK
KyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjNjYWY4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUpKTsKKyAgICBfNDUy
Ni0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUp
KTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNjOTE4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBf
NDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4
bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjNjNzM4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUyNi0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM3NWE4bHUpKTsKKyAg
ICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmMy
Yzg4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmMxYmE4bHUpKTsKKyAgICBfNDUyNi0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2ZDM4bHUpKTsKKyAgICBfNDUyNi0+
YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAg
IF80NTI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1
KSk7CisgICAgXzQ1MjYtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjMzNDgwbHUpKTsKKyAgICBfNDUyNi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2MzFiYThsdSkpOworICAgIF80NTI2LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjYtPmFkZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNi0+YWRkKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAgICpfNDQ5NCA9
IFdURk1vdmUoKl80NTI2KTsKKyAgICBkZWxldGUgXzQ1MjY7CisgICAgYXV0byogXzQ1MjcgPSBu
ZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAgICBfNDUyNy0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsK
KyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjM2YmQwbHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjMzYjg4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUy
Ny0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUp
KTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNjZWI4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBf
NDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjOTE4
bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUyNy0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAg
ICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNj
NzM4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyNy0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4bHUpKTsKKyAgICBfNDUyNy0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgIF80NTI3LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1
MjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsK
KyAgICBfNDUyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFi
YThsdSkpOworICAgIF80NTI3LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MjctPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyNy0+YWRkKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5ZDhsdSkpOworICAgICpfNDQ5NSA9IFdURk1vdmUoKl80
NTI3KTsKKyAgICBkZWxldGUgXzQ1Mjc7CisgICAgYXV0byogXzQ1MjggPSBuZXcgSGFzaFNldDw6
OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM1NWM4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBfNDUyOC0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM2YmQwbHUpKTsK
KyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjMzYjg4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUy
OC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhOGMwbHUp
KTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNjZWI4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsKKyAgICBf
NDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4
bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUpKTsKKyAgICBfNDUyOC0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICBfNDUyOC0+YWRk
Vm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNzM4bHUpKTsKKyAg
ICBfNDUyOC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNh
ZWQ4bHUpKTsKKyAgICBfNDUyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzZiZDBsdSkpOworICAgIF80NTI4LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzNDgwbHUpKTsKKyAgICBfNDUyOC0+YWRkKGJpdHdpc2Vf
Y2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzFiYThsdSkpOworICAgIF80NTI4LT5hZGQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1
MjgtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsK
KyAgICBfNDUyOC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzA5
ZDhsdSkpOworICAgICpfNDQ5NiA9IFdURk1vdmUoKl80NTI4KTsKKyAgICBkZWxldGUgXzQ1Mjg7
CisgICAgYXV0byogXzQ1MjkgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAg
ICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM1
NWM4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjM2YmQwbHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM0ZjM4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwMTY4bHUpKTsKKyAgICBfNDUyOS0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMzYjg4bHUpKTsK
KyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjMwOWQ4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8
OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhZWQ4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNmNhNTc4bHUpKTsKKyAgICBfNDUy
OS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjNTU4bHUp
KTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4
MTBjNjNjNzM4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRG
Rzo6Tm9kZSo+KDB4MTBjNjNjOTE4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nh
c3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjYWY4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9p
ZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjY2Q4bHUpKTsKKyAgICBf
NDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNjZWI4
bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjNhYzgwbHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6
OkRGRzo6Tm9kZSo+KDB4MTBjNjMwY2E4bHUpKTsKKyAgICBfNDUyOS0+YWRkVm9pZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNTkwbHUpKTsKKyAgICBfNDUyOS0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80
NTI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7
CisgICAgXzQ1MjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMx
YmE4bHUpKTsKKyAgICBfNDUyOS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2MzAxNjhsdSkpOworICAgIF80NTI5LT5hZGQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MjktPmFkZChiaXR3aXNlX2Nhc3Q8OjpK
U0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMwOWQ4bHUpKTsKKyAgICAqXzQ0OTcgPSBXVEZNb3ZlKCpf
NDUyOSk7CisgICAgZGVsZXRlIF80NTI5OworICAgIGF1dG8qIF80NTMwID0gbmV3IEhhc2hTZXQ8
OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1MzAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MzAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MzAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjA3OGx1KSk7
CisgICAgXzQ1MzAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzZjM0OGx1KSk7CisgICAgXzQ1MzAtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9k
ZSo+KDB4MTBjNjNmMDc4bHUpKTsKKyAgICBfNDUzMC0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6
REZHOjpOb2RlKj4oMHgxMGM2MzBjYThsdSkpOworICAgIF80NTMwLT5hZGQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjM0OGx1KSk7CisgICAgXzQ1MzAtPmFkZChiaXR3
aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNhOGMwbHUpKTsKKyAgICAqXzQ0OTgg
PSBXVEZNb3ZlKCpfNDUzMCk7CisgICAgZGVsZXRlIF80NTMwOworICAgIGF1dG8qIF80NTMxID0g
bmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgXzQ1MzEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MzEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7
CisgICAgXzQ1MzEtPmFkZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMw
Y2E4bHUpKTsKKyAgICBfNDUzMS0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4o
MHgxMGM2M2E4YzBsdSkpOworICAgICpfNDQ5OSA9IFdURk1vdmUoKl80NTMxKTsKKyAgICBkZWxl
dGUgXzQ1MzE7CisgICAgYXV0byogXzQ1MzIgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2Rl
Kj4oKTsKKyAgICBfNDUzMi0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+
KDB4MTBjNjNmMDc4bHUpKTsKKyAgICBfNDUzMi0+YWRkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZH
OjpOb2RlKj4oMHgxMGM2M2YwNzhsdSkpOworICAgIF80NTMyLT5hZGQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MzItPmFkZChiaXR3aXNl
X2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjNmMzQ4bHUpKTsKKyAgICBfNDUzMi0+YWRk
KGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2M2E4YzBsdSkpOworICAgICpf
NDUwMCA9IFdURk1vdmUoKl80NTMyKTsKKyAgICBkZWxldGUgXzQ1MzI7CisgICAgXzQ1MDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7Cisg
ICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NmJkMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7
CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzM2I4OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1
KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAg
XzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2Nk
OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7Cisg
ICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NGYzOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7
CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMWJhOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1
KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAg
XzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2
OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7Cisg
ICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YThjMGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7
CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNzVhOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1
MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1
KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAg
XzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJk
MGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7Cisg
ICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
M2I4OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7
CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzZjYTU3OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1
MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1
KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAg
XzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYz
OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7Cisg
ICAgXzQ1MDItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MWJhOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7
CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzY2ViOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1
MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1
KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAg
XzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThj
MGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDMtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7Cisg
ICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NzVhOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDMt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7
CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNTVjOGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDMtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1
KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAg
XzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4
OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7Cisg
ICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZj
YTU3OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7
CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMTU5MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1
KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNTY0MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAg
XzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4
MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7Cisg
ICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YzczOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDQt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7
CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMDE2OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1
MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1
KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAg
XzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlk
OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7Cisg
ICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZj
MmM4OGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDQtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7
CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNmJkMGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1
KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAg
XzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNh
OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDUtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7Cisg
ICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
Y2NkOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7
CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNGYzOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1
MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1
KSk7CisgICAgXzQ1MDUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzNDAzOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDYtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAg
XzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzcz
OGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDYtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7Cisg
ICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MDE2OGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzMjIzOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDYt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7
CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYThjMGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMWY2OGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1
MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1
KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAg
XzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4
OGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDYtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7Cisg
ICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MzQ4MGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNmQzOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7
CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzM2I4OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1
KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAg
XzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5
MGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7Cisg
ICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NmYxOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7
CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMWJhOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1
MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1
KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDctPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAg
XzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3
OGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDctPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7Cisg
ICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MDlkOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDct
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7
CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYWM4MGx1KSk7CisgICAgXzQ1MDctPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1
KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MDgtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAg
XzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1
OGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MDgtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7Cisg
ICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YThjMGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MDgt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNzVhOGx1KSk7
CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYWVkOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7CisgICAgXzQ1
MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1
KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNmQzOGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDgtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MDktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAg
XzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4
MGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MDktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7Cisg
ICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZj
MWJhOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MDkt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7
CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYzkxOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1
MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1
KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNzVhOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MDktPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAg
XzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4
OGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzNmQzOGx1KSk7CisgICAgXzQ1MDktPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MDktPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7Cisg
ICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
OTY3OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmQzOGx1KSk7CisgICAgXzQ1MTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7
CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzYzczOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzODcwMGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMWJhOGx1KSk7CisgICAgXzQ1
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1
KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAg
XzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThj
MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7Cisg
ICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
NzVhOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjMmM4OGx1KSk7
CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNTVjOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOWVlOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAgXzQ1
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1
KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4OGx1KSk7CisgICAg
XzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzU1
OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7CisgICAgXzQ1MTAtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzkxOGx1KSk7Cisg
ICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YThjMGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7CisgICAgXzQ1MTAt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7
CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNGYzOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTAtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1
MTAtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1
KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2ViOGx1KSk7CisgICAg
XzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzM2I4
OGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTEtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZjYTU3OGx1KSk7Cisg
ICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
YzkxOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7CisgICAgXzQ1MTEt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDlkOGx1KSk7
CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNmJkMGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1KSk7CisgICAgXzQ1
MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWM4MGx1
KSk7CisgICAgXzQ1MTEtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMzQ4MGx1KSk7CisgICAgXzQ1MTItPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYzczOGx1KSk7CisgICAg
XzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2Vi
OGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzM2I4OGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYzU1OGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMDE2OGx1KSk7CisgICAgXzQ1MTItPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7Cisg
ICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzZj
YTU3OGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzYzkxOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2NkOGx1KSk7CisgICAgXzQ1MTIt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzMTU5MGx1KSk7
CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzMDlkOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYWVkOGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNGYzOGx1KSk7CisgICAgXzQ1
MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzY2FmOGx1
KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzYWM4MGx1KSk7CisgICAgXzQ1MTItPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigweDEwYzYzMWJhOGx1KSk7CisgICAgXzQ1MTMtPmFkZFZvaWQoYml0d2lzZV9j
YXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTMtPmFkZFZv
aWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAg
XzQ1MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVj
OGx1KSk7CisgICAgXzQ1MTMtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUq
PigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlND
OjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTQtPmFkZFZvaWQoYml0d2lz
ZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNmJkMGx1KSk7CisgICAgXzQ1MTQtPmFk
ZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7Cisg
ICAgXzQ1MTQtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYz
MGNhOGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5v
ZGUqPigweDEwYzYzZjA3OGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6
SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0
d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzNTVjOGx1KSk7CisgICAgXzQ1MTUt
PmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjM0OGx1KSk7
CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEw
YzYzNmJkMGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMGNhOGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzYThjMGx1KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjM0OGx1KSk7CisgICAgXzQ1
MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzZjA3OGx1
KSk7CisgICAgXzQ1MTUtPmFkZFZvaWQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMGNhOGx1KSk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBfNDUwMS0+ZmluZChi
aXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNDI4bHUpKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUwMS0+ZW5kKCkpOworICAgIH0KKyAgICBhdXRvKiBf
NDUzMyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIHsKKyAgICAgICAg
YXV0byBpdGVyID0gXzQ1MzMtPmZpbmQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigw
eDEwYzYzMTQyOGx1KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgPT0gXzQ1MzMtPmVu
ZCgpKTsKKyAgICB9CisgICAgZGVsZXRlIF80NTMzOworICAgIHsKKyAgICAgICAgYXV0byBpdGVy
ID0gXzQ1MTAtPmZpbmQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3
OGx1KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gXzQ1MTAtPmVuZCgpKTsKKyAg
ICB9CisgICAgYXV0byogXzQ1MzQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsK
KyAgICBfNDUzNC0+YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjM5Njc4bHUpKTsKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTM0LT5maW5kKGJpdHdp
c2VfY2FzdDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChpdGVyICE9IF80NTM0LT5lbmQoKSk7CisgICAgfQorICAgIGRlbGV0ZSBfNDUz
NDsKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTA4LT5maW5kKGJpdHdpc2VfY2FzdDw6
OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChpdGVyID09IF80NTA4LT5lbmQoKSk7CisgICAgfQorICAgIGF1dG8qIF80NTM1ID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBf
NDUzNS0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4bHUp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUzNS0+ZW5kKCkpOworICAgIH0K
KyAgICBkZWxldGUgXzQ1MzU7CisgICAgYXV0byogXzQ1MzYgPSBuZXcgSGFzaFNldDw6OkpTQzo6
REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDUzNyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGRlbGV0ZSBfNDUzNzsKKyAgICBkZWxldGUgXzQ1MzY7CisgICAgewor
ICAgICAgICBhdXRvIGl0ZXIgPSBfNDUxMS0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6
Tm9kZSo+KDB4MTBjNjM5Njc4bHUpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBf
NDUxMS0+ZW5kKCkpOworICAgIH0KKyAgICBhdXRvKiBfNDUzOCA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gXzQ1MzgtPmZpbmQo
Yml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGl0ZXIgPT0gXzQ1MzgtPmVuZCgpKTsKKyAgICB9CisgICAgZGVsZXRl
IF80NTM4OworICAgIF80NDY4LT5jbGVhcigpOworICAgIGF1dG8qIF80NTM5ID0gbmV3IEhhc2hT
ZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBfNDUw
MS0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjMxNDI4bHUpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUwMS0+ZW5kKCkpOworICAgIH0KKyAg
ICBhdXRvKiBfNDU0MCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIHsK
KyAgICAgICAgYXV0byBpdGVyID0gXzQ1NDAtPmZpbmQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6
Ok5vZGUqPigweDEwYzYzMTQyOGx1KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgPT0g
XzQ1NDAtPmVuZCgpKTsKKyAgICB9CisgICAgZGVsZXRlIF80NTQwOworICAgIGRlbGV0ZSBfNDUz
OTsKKyAgICBhdXRvKiBfNDU0MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOwor
ICAgIGF1dG8qIF80NTQyID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAg
ZGVsZXRlIF80NTQyOworICAgIGRlbGV0ZSBfNDU0MTsKKyAgICBhdXRvKiBfNDU0MyA9IG5ldyBI
YXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTQ0ID0gbmV3IEhhc2hT
ZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTQ0OworICAgIGRlbGV0ZSBf
NDU0MzsKKyAgICBhdXRvKiBfNDU0NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigp
OworICAgIGF1dG8qIF80NTQ2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7Cisg
ICAgZGVsZXRlIF80NTQ2OworICAgIGRlbGV0ZSBfNDU0NTsKKyAgICBhdXRvKiBfNDU0NyA9IG5l
dyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTQ4ID0gbmV3IEhh
c2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTQ4OworICAgIGRlbGV0
ZSBfNDU0NzsKKyAgICBhdXRvKiBfNDU0OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIGF1dG8qIF80NTUwID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7
CisgICAgZGVsZXRlIF80NTUwOworICAgIGRlbGV0ZSBfNDU0OTsKKyAgICBhdXRvKiBfNDU1MSA9
IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTUyID0gbmV3
IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTUyOworICAgIGRl
bGV0ZSBfNDU1MTsKKyAgICBhdXRvKiBfNDU1MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5v
ZGUqPigpOworICAgIF80NTUzLT5hZGRWb2lkKGJpdHdpc2VfY2FzdDw6OkpTQzo6REZHOjpOb2Rl
Kj4oMHgxMGM2Mzk2NzhsdSkpOworICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gXzQ1MTAtPmZp
bmQoYml0d2lzZV9jYXN0PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gXzQ1MTAtPmVuZCgpKTsKKyAgICB9CisgICAgYXV0
byogXzQ1NTQgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBfNDU1NC0+
YWRkVm9pZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4bHUpKTsK
KyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTU0LT5maW5kKGJpdHdpc2VfY2FzdDw6OkpT
Qzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChp
dGVyICE9IF80NTU0LT5lbmQoKSk7CisgICAgfQorICAgIGRlbGV0ZSBfNDU1NDsKKyAgICBkZWxl
dGUgXzQ1NTM7CisgICAgYXV0byogXzQ1NTUgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2Rl
Kj4oKTsKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IF80NTA4LT5maW5kKGJpdHdpc2VfY2Fz
dDw6OkpTQzo6REZHOjpOb2RlKj4oMHgxMGM2Mzk2NzhsdSkpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChpdGVyID09IF80NTA4LT5lbmQoKSk7CisgICAgfQorICAgIGF1dG8qIF80NTU2ID0gbmV3
IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRvIGl0ZXIg
PSBfNDU1Ni0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBjNjM5Njc4
bHUpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDU1Ni0+ZW5kKCkpOworICAg
IH0KKyAgICBkZWxldGUgXzQ1NTY7CisgICAgZGVsZXRlIF80NTU1OworICAgIGF1dG8qIF80NTU3
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgeworICAgICAgICBhdXRv
IGl0ZXIgPSBfNDUxMS0+ZmluZChiaXR3aXNlX2Nhc3Q8OjpKU0M6OkRGRzo6Tm9kZSo+KDB4MTBj
NjM5Njc4bHUpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciA9PSBfNDUxMS0+ZW5kKCkp
OworICAgIH0KKyAgICBhdXRvKiBfNDU1OCA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUq
PigpOworICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gXzQ1NTgtPmZpbmQoYml0d2lzZV9jYXN0
PDo6SlNDOjpERkc6Ok5vZGUqPigweDEwYzYzOTY3OGx1KSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGl0ZXIgPT0gXzQ1NTgtPmVuZCgpKTsKKyAgICB9CisgICAgZGVsZXRlIF80NTU4OworICAg
IGRlbGV0ZSBfNDU1NzsKKyAgICBhdXRvKiBfNDU1OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6
Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTYwID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9k
ZSo+KCk7CisgICAgZGVsZXRlIF80NTYwOworICAgIGRlbGV0ZSBfNDU1OTsKKyAgICBhdXRvKiBf
NDU2MSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTYy
ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTYyOwor
ICAgIGRlbGV0ZSBfNDU2MTsKKyAgICBhdXRvKiBfNDU2MyA9IG5ldyBIYXNoU2V0PDo6SlNDOjpE
Rkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTY0ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6
Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTY0OworICAgIGRlbGV0ZSBfNDU2MzsKKyAgICBhdXRv
KiBfNDU2NSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80
NTY2ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTY2
OworICAgIGRlbGV0ZSBfNDU2NTsKKyAgICBhdXRvKiBfNDU2NyA9IG5ldyBIYXNoU2V0PDo6SlND
OjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8qIF80NTY4ID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRG
Rzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80NTY4OworICAgIGRlbGV0ZSBfNDU2NzsKKyAgICBh
dXRvKiBfNDU2OSA9IG5ldyBIYXNoU2V0PDo6SlNDOjpERkc6Ok5vZGUqPigpOworICAgIGF1dG8q
IF80NTcwID0gbmV3IEhhc2hTZXQ8OjpKU0M6OkRGRzo6Tm9kZSo+KCk7CisgICAgZGVsZXRlIF80
NTcwOworICAgIGRlbGV0ZSBfNDU2OTsKKyAgICBkZWxldGUgXzQ1MDE7CisgICAgZGVsZXRlIF80
NTAyOworICAgIGRlbGV0ZSBfNDUwMzsKKyAgICBkZWxldGUgXzQ1MDQ7CisgICAgZGVsZXRlIF80
NTA1OworICAgIGRlbGV0ZSBfNDUwNjsKKyAgICBkZWxldGUgXzQ1MDc7CisgICAgZGVsZXRlIF80
NTA4OworICAgIGRlbGV0ZSBfNDUwOTsKKyAgICBkZWxldGUgXzQ1MTA7CisgICAgZGVsZXRlIF80
NTExOworICAgIGRlbGV0ZSBfNDUxMjsKKyAgICBkZWxldGUgXzQ1MTM7CisgICAgZGVsZXRlIF80
NTE0OworICAgIGRlbGV0ZSBfNDUxNTsKKyAgICBkZWxldGUgXzQ1MTY7CisgICAgZGVsZXRlIF80
NDg1OworICAgIGRlbGV0ZSBfNDQ4NjsKKyAgICBkZWxldGUgXzQ0ODc7CisgICAgZGVsZXRlIF80
NDg4OworICAgIGRlbGV0ZSBfNDQ4OTsKKyAgICBkZWxldGUgXzQ0OTA7CisgICAgZGVsZXRlIF80
NDkxOworICAgIGRlbGV0ZSBfNDQ5MjsKKyAgICBkZWxldGUgXzQ0OTM7CisgICAgZGVsZXRlIF80
NDk0OworICAgIGRlbGV0ZSBfNDQ5NTsKKyAgICBkZWxldGUgXzQ0OTY7CisgICAgZGVsZXRlIF80
NDk3OworICAgIGRlbGV0ZSBfNDQ5ODsKKyAgICBkZWxldGUgXzQ0OTk7CisgICAgZGVsZXRlIF80
NTAwOworICAgIGRlbGV0ZSBfNDQ2ODsKKyAgICBhdXRvKiBfNDU3MSA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTcyID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1NzMgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU3NCA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
NTc1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ1NzYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDU3NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NTc4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ1NzkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU4MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTgxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1ODIgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU4MyA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTg0ID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1ODUgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU4
NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIF80NTg1
LT5hZGQoNDgzKTsKKyAgICBfNDU4My0+YWRkKDUwOCk7CisgICAgXzQ1ODMtPmFkZCgyMjkpOwor
ICAgIF80NTgzLT5hZGQoMTgyKTsKKyAgICBfNDU4My0+YWRkKDUwNyk7CisgICAgXzQ1ODQtPmFk
ZCg1MDgpOworICAgIF80NTg0LT5hZGQoMjI5KTsKKyAgICBfNDU4NC0+YWRkKDE4Mik7CisgICAg
XzQ1ODQtPmFkZCg1MDcpOworICAgIF80NTg1LT5hZGQoMTgyKTsKKyAgICBfNDU4NS0+YWRkKDIy
OSk7CisgICAgXzQ1ODUtPmFkZCg0ODMpOworICAgIF80NTg1LT5hZGQoNDczKTsKKyAgICBfNDU4
Mi0+YWRkKDE4Mik7CisgICAgXzQ1ODItPmFkZCgyMjkpOworICAgIF80NTgyLT5hZGQoMTY4KTsK
KyAgICBfNDU4Mi0+YWRkKDIpOworICAgIF80NTgyLT5hZGQoMTI2KTsKKyAgICBfNDU4Mi0+YWRk
KDIwKTsKKyAgICBfNDU4Mi0+YWRkKDM1OSk7CisgICAgXzQ1ODItPmFkZCgzNzIpOworICAgIF80
NTgyLT5hZGQoOTgpOworICAgIF80NTgyLT5hZGQoNDIwKTsKKyAgICBfNDU4Mi0+YWRkKDQyNCk7
CisgICAgXzQ1ODItPmFkZCg0MjgpOworICAgIF80NTgyLT5hZGQoNDMyKTsKKyAgICBfNDU4Mi0+
YWRkKDQzNik7CisgICAgXzQ1ODItPmFkZCg0NDApOworICAgIF80NTgyLT5hZGQoMzY3KTsKKyAg
ICBfNDU4Mi0+YWRkKDI2KTsKKyAgICBfNDU4Mi0+YWRkKDQ1KTsKKyAgICBfNDU4Mi0+YWRkKDUw
Nik7CisgICAgXzQ1ODEtPmFkZCgxODIpOworICAgIF80NTgxLT5hZGQoMjI5KTsKKyAgICBfNDU4
MS0+YWRkKDE2OCk7CisgICAgXzQ1ODEtPmFkZCgyKTsKKyAgICBfNDU4MS0+YWRkKDEyNik7Cisg
ICAgXzQ1ODEtPmFkZCgyMCk7CisgICAgXzQ1ODEtPmFkZCgzNTkpOworICAgIF80NTgxLT5hZGQo
MzcyKTsKKyAgICBfNDU4MS0+YWRkKDk4KTsKKyAgICBfNDU4MS0+YWRkKDQyMCk7CisgICAgXzQ1
ODEtPmFkZCg0MjQpOworICAgIF80NTgxLT5hZGQoNDI4KTsKKyAgICBfNDU4MS0+YWRkKDQzMik7
CisgICAgXzQ1ODEtPmFkZCg0MzYpOworICAgIF80NTgxLT5hZGQoNDQwKTsKKyAgICBfNDU4MS0+
YWRkKDM2Nyk7CisgICAgXzQ1ODEtPmFkZCgyNik7CisgICAgXzQ1ODEtPmFkZCg0NSk7CisgICAg
XzQ1ODEtPmFkZCg1MDYpOworICAgIF80NTc3LT5hZGQoMTgyKTsKKyAgICBfNDU3Ny0+YWRkKDQz
Nik7CisgICAgXzQ1NzctPmFkZCgyMjkpOworICAgIF80NTc3LT5hZGQoMTI2KTsKKyAgICBfNDU3
Ny0+YWRkKDM2Nyk7CisgICAgXzQ1NzctPmFkZCg0NSk7CisgICAgXzQ1NzctPmFkZCg0MzIpOwor
ICAgIF80NTc3LT5hZGQoMzU5KTsKKyAgICBfNDU3Ny0+YWRkKDQ0MCk7CisgICAgXzQ1NzctPmFk
ZCgyNik7CisgICAgXzQ1NzctPmFkZCgxNjgpOworICAgIF80NTc3LT5hZGQoNDI4KTsKKyAgICBf
NDU3Ny0+YWRkKDk4KTsKKyAgICBfNDU3Ny0+YWRkKDIpOworICAgIF80NTc3LT5hZGQoNDIwKTsK
KyAgICBfNDU3Ny0+YWRkKDIwKTsKKyAgICBfNDU3Ny0+YWRkKDQyNCk7CisgICAgXzQ1NzctPmFk
ZCgzNzIpOworICAgIF80NTgwLT5hZGQoMTgyKTsKKyAgICBfNDU4MC0+YWRkKDQzNik7CisgICAg
XzQ1ODAtPmFkZCgyMjkpOworICAgIF80NTgwLT5hZGQoMTI2KTsKKyAgICBfNDU4MC0+YWRkKDM2
Nyk7CisgICAgXzQ1ODAtPmFkZCg0NSk7CisgICAgXzQ1ODAtPmFkZCg0MzIpOworICAgIF80NTgw
LT5hZGQoMzU5KTsKKyAgICBfNDU4MC0+YWRkKDQ0MCk7CisgICAgXzQ1ODAtPmFkZCgyNik7Cisg
ICAgXzQ1ODAtPmFkZCgxNjgpOworICAgIF80NTgwLT5hZGQoNDI4KTsKKyAgICBfNDU4MC0+YWRk
KDk4KTsKKyAgICBfNDU4MC0+YWRkKDIpOworICAgIF80NTgwLT5hZGQoNDIwKTsKKyAgICBfNDU4
MC0+YWRkKDIwKTsKKyAgICBfNDU4MC0+YWRkKDQyNCk7CisgICAgXzQ1ODAtPmFkZCgzNzIpOwor
ICAgIF80NTgwLT5hZGQoMzIwKTsKKyAgICBfNDU3OS0+YWRkKDE4Mik7CisgICAgXzQ1NzktPmFk
ZCg0MzYpOworICAgIF80NTc5LT5hZGQoMjI5KTsKKyAgICBfNDU3OS0+YWRkKDEyNik7CisgICAg
XzQ1NzktPmFkZCgzNjcpOworICAgIF80NTc5LT5hZGQoMjg3KTsKKyAgICBfNDU3OS0+YWRkKDQz
Mik7CisgICAgXzQ1NzktPmFkZCg0NSk7CisgICAgXzQ1NzktPmFkZCgyNik7CisgICAgXzQ1Nzkt
PmFkZCg0NDApOworICAgIF80NTc5LT5hZGQoMTY4KTsKKyAgICBfNDU3OS0+YWRkKDQyOCk7Cisg
ICAgXzQ1NzktPmFkZCgzNTkpOworICAgIF80NTc5LT5hZGQoMik7CisgICAgXzQ1NzktPmFkZCg0
MjApOworICAgIF80NTc5LT5hZGQoMjApOworICAgIF80NTc5LT5hZGQoNDI0KTsKKyAgICBfNDU3
OS0+YWRkKDM3Mik7CisgICAgXzQ1NzktPmFkZCg5OCk7CisgICAgXzQ1NzktPmFkZCgyNTApOwor
ICAgIF80NTc5LT5hZGQoMTc5KTsKKyAgICBfNDU3OS0+YWRkKDUwNSk7CisgICAgXzQ1NzktPmFk
ZCgxMTEpOworICAgIF80NTc5LT5hZGQoMjcyKTsKKyAgICBfNDU3OS0+YWRkKDIzMik7CisgICAg
XzQ1NzktPmFkZCg1MDQpOworICAgIF80NTc4LT5hZGQoMTgyKTsKKyAgICBfNDU3OC0+YWRkKDQz
Nik7CisgICAgXzQ1NzgtPmFkZCgyMjkpOworICAgIF80NTc4LT5hZGQoMTI2KTsKKyAgICBfNDU3
OC0+YWRkKDM2Nyk7CisgICAgXzQ1NzgtPmFkZCgyODcpOworICAgIF80NTc4LT5hZGQoNDMyKTsK
KyAgICBfNDU3OC0+YWRkKDQ1KTsKKyAgICBfNDU3OC0+YWRkKDI2KTsKKyAgICBfNDU3OC0+YWRk
KDQ0MCk7CisgICAgXzQ1NzgtPmFkZCgxNjgpOworICAgIF80NTc4LT5hZGQoNDI4KTsKKyAgICBf
NDU3OC0+YWRkKDM1OSk7CisgICAgXzQ1NzgtPmFkZCgyKTsKKyAgICBfNDU3OC0+YWRkKDQyMCk7
CisgICAgXzQ1NzgtPmFkZCgyMCk7CisgICAgXzQ1NzgtPmFkZCg0MjQpOworICAgIF80NTc4LT5h
ZGQoMzcyKTsKKyAgICBfNDU3OC0+YWRkKDk4KTsKKyAgICBfNDU3OC0+YWRkKDI1MCk7CisgICAg
XzQ1NzgtPmFkZCgxNzkpOworICAgIF80NTc4LT5hZGQoNTA1KTsKKyAgICBfNDU3OC0+YWRkKDEx
MSk7CisgICAgXzQ1NzgtPmFkZCgyNzIpOworICAgIF80NTc4LT5hZGQoMjMyKTsKKyAgICBfNDU3
OC0+YWRkKDUwNCk7CisgICAgXzQ1NzctPmFkZCgxODIpOworICAgIF80NTc3LT5hZGQoNDM2KTsK
KyAgICBfNDU3Ny0+YWRkKDIyOSk7CisgICAgXzQ1NzctPmFkZCgxMjYpOworICAgIF80NTc3LT5h
ZGQoMjg3KTsKKyAgICBfNDU3Ny0+YWRkKDM2Nyk7CisgICAgXzQ1NzctPmFkZCg0MzIpOworICAg
IF80NTc3LT5hZGQoMjM2KTsKKyAgICBfNDU3Ny0+YWRkKDE3OSk7CisgICAgXzQ1NzctPmFkZCgy
MzIpOworICAgIF80NTc3LT5hZGQoNDUpOworICAgIF80NTc3LT5hZGQoMjUwKTsKKyAgICBfNDU3
Ny0+YWRkKDI3Mik7CisgICAgXzQ1NzctPmFkZCgxMTEpOworICAgIF80NTc3LT5hZGQoMjYpOwor
ICAgIF80NTc3LT5hZGQoNDQwKTsKKyAgICBfNDU3Ny0+YWRkKDE2OCk7CisgICAgXzQ1NzctPmFk
ZCg0MjgpOworICAgIF80NTc3LT5hZGQoOTgpOworICAgIF80NTc3LT5hZGQoMzU5KTsKKyAgICBf
NDU3Ny0+YWRkKDIpOworICAgIF80NTc3LT5hZGQoNDIwKTsKKyAgICBfNDU3Ny0+YWRkKDIwKTsK
KyAgICBfNDU3Ny0+YWRkKDQyNCk7CisgICAgXzQ1NzctPmFkZCgzNzIpOworICAgIF80NTgwLT5h
ZGQoMTgyKTsKKyAgICBfNDU4MC0+YWRkKDQzNik7CisgICAgXzQ1ODAtPmFkZCgyMjkpOworICAg
IF80NTgwLT5hZGQoMTI2KTsKKyAgICBfNDU4MC0+YWRkKDI4Nyk7CisgICAgXzQ1ODAtPmFkZCgz
NjcpOworICAgIF80NTgwLT5hZGQoNDMyKTsKKyAgICBfNDU4MC0+YWRkKDMzOCk7CisgICAgXzQ1
ODAtPmFkZCgxNzkpOworICAgIF80NTgwLT5hZGQoMjMyKTsKKyAgICBfNDU4MC0+YWRkKDQ1KTsK
KyAgICBfNDU4MC0+YWRkKDI1MCk7CisgICAgXzQ1ODAtPmFkZCgyNzIpOworICAgIF80NTgwLT5h
ZGQoMTExKTsKKyAgICBfNDU4MC0+YWRkKDI2KTsKKyAgICBfNDU4MC0+YWRkKDQ0MCk7CisgICAg
XzQ1ODAtPmFkZCgxNjgpOworICAgIF80NTgwLT5hZGQoNDI4KTsKKyAgICBfNDU4MC0+YWRkKDk4
KTsKKyAgICBfNDU4MC0+YWRkKDM1OSk7CisgICAgXzQ1ODAtPmFkZCgyKTsKKyAgICBfNDU4MC0+
YWRkKDQyMCk7CisgICAgXzQ1ODAtPmFkZCgyMCk7CisgICAgXzQ1ODAtPmFkZCg0MjQpOworICAg
IF80NTgwLT5hZGQoMzcyKTsKKyAgICBfNDU4MC0+YWRkKDMyMCk7CisgICAgXzQ1NzUtPmFkZCgx
ODIpOworICAgIF80NTc1LT5hZGQoNDM2KTsKKyAgICBfNDU3NS0+YWRkKDIyOSk7CisgICAgXzQ1
NzUtPmFkZCgxMjYpOworICAgIF80NTc1LT5hZGQoMjg3KTsKKyAgICBfNDU3NS0+YWRkKDM2Nyk7
CisgICAgXzQ1NzUtPmFkZCg0MzIpOworICAgIF80NTc1LT5hZGQoMTc5KTsKKyAgICBfNDU3NS0+
YWRkKDM3Mik7CisgICAgXzQ1NzUtPmFkZCg0NSk7CisgICAgXzQ1NzUtPmFkZCgyNTApOworICAg
IF80NTc1LT5hZGQoNDI0KTsKKyAgICBfNDU3NS0+YWRkKDExMSk7CisgICAgXzQ1NzUtPmFkZCgy
Nik7CisgICAgXzQ1NzUtPmFkZCg0NDApOworICAgIF80NTc1LT5hZGQoMTY4KTsKKyAgICBfNDU3
NS0+YWRkKDQyOCk7CisgICAgXzQ1NzUtPmFkZCgzNTkpOworICAgIF80NTc1LT5hZGQoMik7Cisg
ICAgXzQ1NzUtPmFkZCg5OCk7CisgICAgXzQ1NzUtPmFkZCg0MjApOworICAgIF80NTc1LT5hZGQo
MjApOworICAgIF80NTc2LT5hZGQoMTgyKTsKKyAgICBfNDU3Ni0+YWRkKDQzNik7CisgICAgXzQ1
NzYtPmFkZCgyMjkpOworICAgIF80NTc2LT5hZGQoMTI2KTsKKyAgICBfNDU3Ni0+YWRkKDI4Nyk7
CisgICAgXzQ1NzYtPmFkZCgzNjcpOworICAgIF80NTc2LT5hZGQoNDMyKTsKKyAgICBfNDU3Ni0+
YWRkKDE3OSk7CisgICAgXzQ1NzYtPmFkZCgzNzIpOworICAgIF80NTc2LT5hZGQoNDUpOworICAg
IF80NTc2LT5hZGQoMjUwKTsKKyAgICBfNDU3Ni0+YWRkKDQyNCk7CisgICAgXzQ1NzYtPmFkZCgx
MTEpOworICAgIF80NTc2LT5hZGQoMjYpOworICAgIF80NTc2LT5hZGQoNDQwKTsKKyAgICBfNDU3
Ni0+YWRkKDE2OCk7CisgICAgXzQ1NzYtPmFkZCg0MjgpOworICAgIF80NTc2LT5hZGQoMzU5KTsK
KyAgICBfNDU3Ni0+YWRkKDIpOworICAgIF80NTc2LT5hZGQoOTgpOworICAgIF80NTc2LT5hZGQo
NDIwKTsKKyAgICBfNDU3Ni0+YWRkKDIwKTsKKyAgICBfNDU3NC0+YWRkKDE4Mik7CisgICAgXzQ1
NzQtPmFkZCg0MzYpOworICAgIF80NTc0LT5hZGQoMjI5KTsKKyAgICBfNDU3NC0+YWRkKDEyNik7
CisgICAgXzQ1NzQtPmFkZCgyODcpOworICAgIF80NTc0LT5hZGQoMzY3KTsKKyAgICBfNDU3NC0+
YWRkKDE3OSk7CisgICAgXzQ1NzQtPmFkZCg0NSk7CisgICAgXzQ1NzQtPmFkZCgyNTApOworICAg
IF80NTc0LT5hZGQoMTExKTsKKyAgICBfNDU3NC0+YWRkKDI2KTsKKyAgICBfNDU3NC0+YWRkKDQ0
MCk7CisgICAgXzQ1NzQtPmFkZCgxNjgpOworICAgIF80NTc0LT5hZGQoNDI4KTsKKyAgICBfNDU3
NC0+YWRkKDIpOworICAgIF80NTc0LT5hZGQoMzU5KTsKKyAgICBfNDU3NC0+YWRkKDQyNCk7Cisg
ICAgXzQ1NzQtPmFkZCg0MjApOworICAgIF80NTc0LT5hZGQoMjApOworICAgIF80NTc0LT5hZGQo
OTgpOworICAgIF80NTc0LT5hZGQoMzcyKTsKKyAgICBfNDU3NC0+YWRkKDQzMik7CisgICAgXzQ1
NzEtPmFkZCgxODIpOworICAgIF80NTcxLT5hZGQoNDM2KTsKKyAgICBfNDU3MS0+YWRkKDIyOSk7
CisgICAgXzQ1NzEtPmFkZCgxMjYpOworICAgIF80NTcxLT5hZGQoMjg3KTsKKyAgICBfNDU3MS0+
YWRkKDM2Nyk7CisgICAgXzQ1NzEtPmFkZCgxNzkpOworICAgIF80NTcxLT5hZGQoNDUpOworICAg
IF80NTcxLT5hZGQoMjUwKTsKKyAgICBfNDU3MS0+YWRkKDExMSk7CisgICAgXzQ1NzEtPmFkZCgy
Nik7CisgICAgXzQ1NzEtPmFkZCg0NDApOworICAgIF80NTcxLT5hZGQoMTY4KTsKKyAgICBfNDU3
MS0+YWRkKDQyOCk7CisgICAgXzQ1NzEtPmFkZCgyKTsKKyAgICBfNDU3MS0+YWRkKDM1OSk7Cisg
ICAgXzQ1NzEtPmFkZCg0MjQpOworICAgIF80NTcxLT5hZGQoNDIwKTsKKyAgICBfNDU3MS0+YWRk
KDIwKTsKKyAgICBfNDU3MS0+YWRkKDk4KTsKKyAgICBfNDU3MS0+YWRkKDM3Mik7CisgICAgXzQ1
NzEtPmFkZCg0MzIpOworICAgIF80NTcyLT5hZGQoMTgyKTsKKyAgICBfNDU3Mi0+YWRkKDQzNik7
CisgICAgXzQ1NzItPmFkZCgyMjkpOworICAgIF80NTcyLT5hZGQoMTI2KTsKKyAgICBfNDU3Mi0+
YWRkKDI4Nyk7CisgICAgXzQ1NzItPmFkZCgzNjcpOworICAgIF80NTcyLT5hZGQoNDMyKTsKKyAg
ICBfNDU3Mi0+YWRkKDE3OSk7CisgICAgXzQ1NzItPmFkZCg0MjApOworICAgIF80NTcyLT5hZGQo
NDUpOworICAgIF80NTcyLT5hZGQoMjUwKTsKKyAgICBfNDU3Mi0+YWRkKDExMSk7CisgICAgXzQ1
NzItPmFkZCgyNik7CisgICAgXzQ1NzItPmFkZCg0NDApOworICAgIF80NTcyLT5hZGQoMTY4KTsK
KyAgICBfNDU3Mi0+YWRkKDQyOCk7CisgICAgXzQ1NzItPmFkZCgzNTkpOworICAgIF80NTcyLT5h
ZGQoMik7CisgICAgXzQ1NzItPmFkZCg0MjQpOworICAgIF80NTcyLT5hZGQoMjApOworICAgIF80
NTcyLT5hZGQoMzcyKTsKKyAgICBfNDU3Mi0+YWRkKDk4KTsKKyAgICBfNDU3Mi0+YWRkKDcyKTsK
KyAgICBfNDU3Mi0+YWRkKDUwMyk7CisgICAgXzQ1NzMtPmFkZCgxODIpOworICAgIF80NTczLT5h
ZGQoNDM2KTsKKyAgICBfNDU3My0+YWRkKDIyOSk7CisgICAgXzQ1NzMtPmFkZCgxMjYpOworICAg
IF80NTczLT5hZGQoMjg3KTsKKyAgICBfNDU3My0+YWRkKDM2Nyk7CisgICAgXzQ1NzMtPmFkZCg0
MzIpOworICAgIF80NTczLT5hZGQoMTc5KTsKKyAgICBfNDU3My0+YWRkKDQyMCk7CisgICAgXzQ1
NzMtPmFkZCg0NSk7CisgICAgXzQ1NzMtPmFkZCgyNTApOworICAgIF80NTczLT5hZGQoMTExKTsK
KyAgICBfNDU3My0+YWRkKDI2KTsKKyAgICBfNDU3My0+YWRkKDQ0MCk7CisgICAgXzQ1NzMtPmFk
ZCgxNjgpOworICAgIF80NTczLT5hZGQoNDI4KTsKKyAgICBfNDU3My0+YWRkKDM1OSk7CisgICAg
XzQ1NzMtPmFkZCgyKTsKKyAgICBfNDU3My0+YWRkKDQyNCk7CisgICAgXzQ1NzMtPmFkZCgyMCk7
CisgICAgXzQ1NzMtPmFkZCgzNzIpOworICAgIF80NTczLT5hZGQoOTgpOworICAgIF80NTczLT5h
ZGQoNzIpOworICAgIF80NTczLT5hZGQoNTAzKTsKKyAgICBfNDU3NC0+YWRkKDE4Mik7CisgICAg
XzQ1NzQtPmFkZCg0MzYpOworICAgIF80NTc0LT5hZGQoMjI5KTsKKyAgICBfNDU3NC0+YWRkKDEy
Nik7CisgICAgXzQ1NzQtPmFkZCgyODcpOworICAgIF80NTc0LT5hZGQoMzY3KTsKKyAgICBfNDU3
NC0+YWRkKDQzMik7CisgICAgXzQ1NzQtPmFkZCgxNzkpOworICAgIF80NTc0LT5hZGQoNDUpOwor
ICAgIF80NTc0LT5hZGQoMjUwKTsKKyAgICBfNDU3NC0+YWRkKDExMSk7CisgICAgXzQ1NzQtPmFk
ZCgyNik7CisgICAgXzQ1NzQtPmFkZCg0NDApOworICAgIF80NTc0LT5hZGQoMTY4KTsKKyAgICBf
NDU3NC0+YWRkKDQyOCk7CisgICAgXzQ1NzQtPmFkZCg5OCk7CisgICAgXzQ1NzQtPmFkZCgzNTkp
OworICAgIF80NTc0LT5hZGQoMik7CisgICAgXzQ1NzQtPmFkZCg0MjApOworICAgIF80NTc0LT5h
ZGQoMjApOworICAgIF80NTc0LT5hZGQoNzIpOworICAgIF80NTc0LT5hZGQoNDI0KTsKKyAgICBf
NDU3NC0+YWRkKDM3Mik7CisgICAgXzQ1NzQtPmFkZCgxODMpOworICAgIF80NTcxLT5hZGQoMTgy
KTsKKyAgICBfNDU3MS0+YWRkKDQzNik7CisgICAgXzQ1NzEtPmFkZCgyMjkpOworICAgIF80NTcx
LT5hZGQoMTI2KTsKKyAgICBfNDU3MS0+YWRkKDI4Nyk7CisgICAgXzQ1NzEtPmFkZCgzNjcpOwor
ICAgIF80NTcxLT5hZGQoNDMyKTsKKyAgICBfNDU3MS0+YWRkKDE3OSk7CisgICAgXzQ1NzEtPmFk
ZCg0NSk7CisgICAgXzQ1NzEtPmFkZCgyNTApOworICAgIF80NTcxLT5hZGQoMTExKTsKKyAgICBf
NDU3MS0+YWRkKDI2KTsKKyAgICBfNDU3MS0+YWRkKDQ0MCk7CisgICAgXzQ1NzEtPmFkZCgxNjgp
OworICAgIF80NTcxLT5hZGQoNDI4KTsKKyAgICBfNDU3MS0+YWRkKDk4KTsKKyAgICBfNDU3MS0+
YWRkKDM1OSk7CisgICAgXzQ1NzEtPmFkZCgyKTsKKyAgICBfNDU3MS0+YWRkKDQyMCk7CisgICAg
XzQ1NzEtPmFkZCgyMCk7CisgICAgXzQ1NzEtPmFkZCg3Mik7CisgICAgXzQ1NzEtPmFkZCg0MjQp
OworICAgIF80NTcxLT5hZGQoMzcyKTsKKyAgICBkZWxldGUgXzQ1NzE7CisgICAgZGVsZXRlIF80
NTcyOworICAgIGRlbGV0ZSBfNDU3MzsKKyAgICBkZWxldGUgXzQ1NzQ7CisgICAgZGVsZXRlIF80
NTc1OworICAgIGRlbGV0ZSBfNDU3NjsKKyAgICBkZWxldGUgXzQ1Nzc7CisgICAgZGVsZXRlIF80
NTc4OworICAgIGRlbGV0ZSBfNDU3OTsKKyAgICBkZWxldGUgXzQ1ODA7CisgICAgZGVsZXRlIF80
NTgxOworICAgIGRlbGV0ZSBfNDU4MjsKKyAgICBkZWxldGUgXzQ1ODM7CisgICAgZGVsZXRlIF80
NTg0OworICAgIGRlbGV0ZSBfNDU4NTsKKyAgICBkZWxldGUgXzQ1ODY7CisgICAgYXV0byogXzQ1
ODcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDU4OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NTg5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ1OTAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDU5MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NTkyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1OTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU5NCA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTk1ID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ1OTYgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDU5NyA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NTk4
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ1OTkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDYwMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NjAxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ2MDIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBfNDYwMS0+YWRkKDQ4Myk7CisgICAgXzQ1OTktPmFkZCg1MDgpOworICAg
IF80NTk5LT5hZGQoMjI5KTsKKyAgICBfNDU5OS0+YWRkKDE4Mik7CisgICAgXzQ1OTktPmFkZCg1
MDcpOworICAgIF80NjAwLT5hZGQoNTA4KTsKKyAgICBfNDYwMC0+YWRkKDIyOSk7CisgICAgXzQ2
MDAtPmFkZCgxODIpOworICAgIF80NjAwLT5hZGQoNTA3KTsKKyAgICBfNDYwMS0+YWRkKDE4Mik7
CisgICAgXzQ2MDEtPmFkZCgyMjkpOworICAgIF80NjAxLT5hZGQoNDgzKTsKKyAgICBfNDYwMS0+
YWRkKDQ3Myk7CisgICAgXzQ1OTgtPmFkZCgxODIpOworICAgIF80NTk4LT5hZGQoMjI5KTsKKyAg
ICBfNDU5OC0+YWRkKDE2OCk7CisgICAgXzQ1OTgtPmFkZCgyKTsKKyAgICBfNDU5OC0+YWRkKDEy
Nik7CisgICAgXzQ1OTgtPmFkZCgyMCk7CisgICAgXzQ1OTgtPmFkZCgzNTkpOworICAgIF80NTk4
LT5hZGQoMzcyKTsKKyAgICBfNDU5OC0+YWRkKDk4KTsKKyAgICBfNDU5OC0+YWRkKDQyMCk7Cisg
ICAgXzQ1OTgtPmFkZCg0MjQpOworICAgIF80NTk4LT5hZGQoNDI4KTsKKyAgICBfNDU5OC0+YWRk
KDQzMik7CisgICAgXzQ1OTgtPmFkZCg0MzYpOworICAgIF80NTk4LT5hZGQoNDQwKTsKKyAgICBf
NDU5OC0+YWRkKDM2Nyk7CisgICAgXzQ1OTgtPmFkZCgyNik7CisgICAgXzQ1OTgtPmFkZCg0NSk7
CisgICAgXzQ1OTgtPmFkZCg1MDYpOworICAgIF80NTk3LT5hZGQoMTgyKTsKKyAgICBfNDU5Ny0+
YWRkKDIyOSk7CisgICAgXzQ1OTctPmFkZCgxNjgpOworICAgIF80NTk3LT5hZGQoMik7CisgICAg
XzQ1OTctPmFkZCgxMjYpOworICAgIF80NTk3LT5hZGQoMjApOworICAgIF80NTk3LT5hZGQoMzU5
KTsKKyAgICBfNDU5Ny0+YWRkKDM3Mik7CisgICAgXzQ1OTctPmFkZCg5OCk7CisgICAgXzQ1OTct
PmFkZCg0MjApOworICAgIF80NTk3LT5hZGQoNDI0KTsKKyAgICBfNDU5Ny0+YWRkKDQyOCk7Cisg
ICAgXzQ1OTctPmFkZCg0MzIpOworICAgIF80NTk3LT5hZGQoNDM2KTsKKyAgICBfNDU5Ny0+YWRk
KDQ0MCk7CisgICAgXzQ1OTctPmFkZCgzNjcpOworICAgIF80NTk3LT5hZGQoMjYpOworICAgIF80
NTk3LT5hZGQoNDUpOworICAgIF80NTk3LT5hZGQoNTA2KTsKKyAgICBfNDU5My0+YWRkKDE4Mik7
CisgICAgXzQ1OTMtPmFkZCg0MzYpOworICAgIF80NTkzLT5hZGQoMjI5KTsKKyAgICBfNDU5My0+
YWRkKDEyNik7CisgICAgXzQ1OTMtPmFkZCgzNjcpOworICAgIF80NTkzLT5hZGQoNDUpOworICAg
IF80NTkzLT5hZGQoNDMyKTsKKyAgICBfNDU5My0+YWRkKDM1OSk7CisgICAgXzQ1OTMtPmFkZCg0
NDApOworICAgIF80NTkzLT5hZGQoMjYpOworICAgIF80NTkzLT5hZGQoMTY4KTsKKyAgICBfNDU5
My0+YWRkKDQyOCk7CisgICAgXzQ1OTMtPmFkZCg5OCk7CisgICAgXzQ1OTMtPmFkZCgyKTsKKyAg
ICBfNDU5My0+YWRkKDQyMCk7CisgICAgXzQ1OTMtPmFkZCgyMCk7CisgICAgXzQ1OTMtPmFkZCg0
MjQpOworICAgIF80NTkzLT5hZGQoMzcyKTsKKyAgICBfNDU5Ni0+YWRkKDE4Mik7CisgICAgXzQ1
OTYtPmFkZCg0MzYpOworICAgIF80NTk2LT5hZGQoMjI5KTsKKyAgICBfNDU5Ni0+YWRkKDEyNik7
CisgICAgXzQ1OTYtPmFkZCgzNjcpOworICAgIF80NTk2LT5hZGQoNDUpOworICAgIF80NTk2LT5h
ZGQoNDMyKTsKKyAgICBfNDU5Ni0+YWRkKDM1OSk7CisgICAgXzQ1OTYtPmFkZCg0NDApOworICAg
IF80NTk2LT5hZGQoMjYpOworICAgIF80NTk2LT5hZGQoMTY4KTsKKyAgICBfNDU5Ni0+YWRkKDQy
OCk7CisgICAgXzQ1OTYtPmFkZCg5OCk7CisgICAgXzQ1OTYtPmFkZCgyKTsKKyAgICBfNDU5Ni0+
YWRkKDQyMCk7CisgICAgXzQ1OTYtPmFkZCgyMCk7CisgICAgXzQ1OTYtPmFkZCg0MjQpOworICAg
IF80NTk2LT5hZGQoMzcyKTsKKyAgICBfNDU5Ni0+YWRkKDMyMCk7CisgICAgXzQ1OTUtPmFkZCgx
ODIpOworICAgIF80NTk1LT5hZGQoNDM2KTsKKyAgICBfNDU5NS0+YWRkKDIyOSk7CisgICAgXzQ1
OTUtPmFkZCgxMjYpOworICAgIF80NTk1LT5hZGQoMzY3KTsKKyAgICBfNDU5NS0+YWRkKDI4Nyk7
CisgICAgXzQ1OTUtPmFkZCg0MzIpOworICAgIF80NTk1LT5hZGQoNDUpOworICAgIF80NTk1LT5h
ZGQoMjYpOworICAgIF80NTk1LT5hZGQoNDQwKTsKKyAgICBfNDU5NS0+YWRkKDE2OCk7CisgICAg
XzQ1OTUtPmFkZCg0MjgpOworICAgIF80NTk1LT5hZGQoMzU5KTsKKyAgICBfNDU5NS0+YWRkKDIp
OworICAgIF80NTk1LT5hZGQoNDIwKTsKKyAgICBfNDU5NS0+YWRkKDIwKTsKKyAgICBfNDU5NS0+
YWRkKDQyNCk7CisgICAgXzQ1OTUtPmFkZCgzNzIpOworICAgIF80NTk1LT5hZGQoOTgpOworICAg
IF80NTk1LT5hZGQoMjUwKTsKKyAgICBfNDU5NS0+YWRkKDE3OSk7CisgICAgXzQ1OTUtPmFkZCg1
MDUpOworICAgIF80NTk1LT5hZGQoMTExKTsKKyAgICBfNDU5NS0+YWRkKDI3Mik7CisgICAgXzQ1
OTUtPmFkZCgyMzIpOworICAgIF80NTk1LT5hZGQoNTA0KTsKKyAgICBfNDU5NC0+YWRkKDE4Mik7
CisgICAgXzQ1OTQtPmFkZCg0MzYpOworICAgIF80NTk0LT5hZGQoMjI5KTsKKyAgICBfNDU5NC0+
YWRkKDEyNik7CisgICAgXzQ1OTQtPmFkZCgzNjcpOworICAgIF80NTk0LT5hZGQoMjg3KTsKKyAg
ICBfNDU5NC0+YWRkKDQzMik7CisgICAgXzQ1OTQtPmFkZCg0NSk7CisgICAgXzQ1OTQtPmFkZCgy
Nik7CisgICAgXzQ1OTQtPmFkZCg0NDApOworICAgIF80NTk0LT5hZGQoMTY4KTsKKyAgICBfNDU5
NC0+YWRkKDQyOCk7CisgICAgXzQ1OTQtPmFkZCgzNTkpOworICAgIF80NTk0LT5hZGQoMik7Cisg
ICAgXzQ1OTQtPmFkZCg0MjApOworICAgIF80NTk0LT5hZGQoMjApOworICAgIF80NTk0LT5hZGQo
NDI0KTsKKyAgICBfNDU5NC0+YWRkKDM3Mik7CisgICAgXzQ1OTQtPmFkZCg5OCk7CisgICAgXzQ1
OTQtPmFkZCgyNTApOworICAgIF80NTk0LT5hZGQoMTc5KTsKKyAgICBfNDU5NC0+YWRkKDUwNSk7
CisgICAgXzQ1OTQtPmFkZCgxMTEpOworICAgIF80NTk0LT5hZGQoMjcyKTsKKyAgICBfNDU5NC0+
YWRkKDIzMik7CisgICAgXzQ1OTQtPmFkZCg1MDQpOworICAgIF80NTkzLT5hZGQoMTgyKTsKKyAg
ICBfNDU5My0+YWRkKDQzNik7CisgICAgXzQ1OTMtPmFkZCgyMjkpOworICAgIF80NTkzLT5hZGQo
MTI2KTsKKyAgICBfNDU5My0+YWRkKDI4Nyk7CisgICAgXzQ1OTMtPmFkZCgzNjcpOworICAgIF80
NTkzLT5hZGQoNDMyKTsKKyAgICBfNDU5My0+YWRkKDIzNik7CisgICAgXzQ1OTMtPmFkZCgxNzkp
OworICAgIF80NTkzLT5hZGQoMjMyKTsKKyAgICBfNDU5My0+YWRkKDQ1KTsKKyAgICBfNDU5My0+
YWRkKDI1MCk7CisgICAgXzQ1OTMtPmFkZCgyNzIpOworICAgIF80NTkzLT5hZGQoMTExKTsKKyAg
ICBfNDU5My0+YWRkKDI2KTsKKyAgICBfNDU5My0+YWRkKDQ0MCk7CisgICAgXzQ1OTMtPmFkZCgx
NjgpOworICAgIF80NTkzLT5hZGQoNDI4KTsKKyAgICBfNDU5My0+YWRkKDk4KTsKKyAgICBfNDU5
My0+YWRkKDM1OSk7CisgICAgXzQ1OTMtPmFkZCgyKTsKKyAgICBfNDU5My0+YWRkKDQyMCk7Cisg
ICAgXzQ1OTMtPmFkZCgyMCk7CisgICAgXzQ1OTMtPmFkZCg0MjQpOworICAgIF80NTkzLT5hZGQo
MzcyKTsKKyAgICBfNDU5Ni0+YWRkKDE4Mik7CisgICAgXzQ1OTYtPmFkZCg0MzYpOworICAgIF80
NTk2LT5hZGQoMjI5KTsKKyAgICBfNDU5Ni0+YWRkKDEyNik7CisgICAgXzQ1OTYtPmFkZCgyODcp
OworICAgIF80NTk2LT5hZGQoMzY3KTsKKyAgICBfNDU5Ni0+YWRkKDQzMik7CisgICAgXzQ1OTYt
PmFkZCgzMzgpOworICAgIF80NTk2LT5hZGQoMTc5KTsKKyAgICBfNDU5Ni0+YWRkKDIzMik7Cisg
ICAgXzQ1OTYtPmFkZCg0NSk7CisgICAgXzQ1OTYtPmFkZCgyNTApOworICAgIF80NTk2LT5hZGQo
MjcyKTsKKyAgICBfNDU5Ni0+YWRkKDExMSk7CisgICAgXzQ1OTYtPmFkZCgyNik7CisgICAgXzQ1
OTYtPmFkZCg0NDApOworICAgIF80NTk2LT5hZGQoMTY4KTsKKyAgICBfNDU5Ni0+YWRkKDQyOCk7
CisgICAgXzQ1OTYtPmFkZCg5OCk7CisgICAgXzQ1OTYtPmFkZCgzNTkpOworICAgIF80NTk2LT5h
ZGQoMik7CisgICAgXzQ1OTYtPmFkZCg0MjApOworICAgIF80NTk2LT5hZGQoMjApOworICAgIF80
NTk2LT5hZGQoNDI0KTsKKyAgICBfNDU5Ni0+YWRkKDM3Mik7CisgICAgXzQ1OTYtPmFkZCgzMjAp
OworICAgIF80NTkxLT5hZGQoMTgyKTsKKyAgICBfNDU5MS0+YWRkKDQzNik7CisgICAgXzQ1OTEt
PmFkZCgyMjkpOworICAgIF80NTkxLT5hZGQoMTI2KTsKKyAgICBfNDU5MS0+YWRkKDI4Nyk7Cisg
ICAgXzQ1OTEtPmFkZCgzNjcpOworICAgIF80NTkxLT5hZGQoNDMyKTsKKyAgICBfNDU5MS0+YWRk
KDE3OSk7CisgICAgXzQ1OTEtPmFkZCgzNzIpOworICAgIF80NTkxLT5hZGQoNDUpOworICAgIF80
NTkxLT5hZGQoMjUwKTsKKyAgICBfNDU5MS0+YWRkKDQyNCk7CisgICAgXzQ1OTEtPmFkZCgxMTEp
OworICAgIF80NTkxLT5hZGQoMjYpOworICAgIF80NTkxLT5hZGQoNDQwKTsKKyAgICBfNDU5MS0+
YWRkKDE2OCk7CisgICAgXzQ1OTEtPmFkZCg0MjgpOworICAgIF80NTkxLT5hZGQoMzU5KTsKKyAg
ICBfNDU5MS0+YWRkKDIpOworICAgIF80NTkxLT5hZGQoOTgpOworICAgIF80NTkxLT5hZGQoNDIw
KTsKKyAgICBfNDU5MS0+YWRkKDIwKTsKKyAgICBfNDU5Mi0+YWRkKDE4Mik7CisgICAgXzQ1OTIt
PmFkZCg0MzYpOworICAgIF80NTkyLT5hZGQoMjI5KTsKKyAgICBfNDU5Mi0+YWRkKDEyNik7Cisg
ICAgXzQ1OTItPmFkZCgyODcpOworICAgIF80NTkyLT5hZGQoMzY3KTsKKyAgICBfNDU5Mi0+YWRk
KDQzMik7CisgICAgXzQ1OTItPmFkZCgxNzkpOworICAgIF80NTkyLT5hZGQoMzcyKTsKKyAgICBf
NDU5Mi0+YWRkKDQ1KTsKKyAgICBfNDU5Mi0+YWRkKDI1MCk7CisgICAgXzQ1OTItPmFkZCg0MjQp
OworICAgIF80NTkyLT5hZGQoMTExKTsKKyAgICBfNDU5Mi0+YWRkKDI2KTsKKyAgICBfNDU5Mi0+
YWRkKDQ0MCk7CisgICAgXzQ1OTItPmFkZCgxNjgpOworICAgIF80NTkyLT5hZGQoNDI4KTsKKyAg
ICBfNDU5Mi0+YWRkKDM1OSk7CisgICAgXzQ1OTItPmFkZCgyKTsKKyAgICBfNDU5Mi0+YWRkKDk4
KTsKKyAgICBfNDU5Mi0+YWRkKDQyMCk7CisgICAgXzQ1OTItPmFkZCgyMCk7CisgICAgXzQ1OTAt
PmFkZCgxODIpOworICAgIF80NTkwLT5hZGQoNDM2KTsKKyAgICBfNDU5MC0+YWRkKDIyOSk7Cisg
ICAgXzQ1OTAtPmFkZCgxMjYpOworICAgIF80NTkwLT5hZGQoMjg3KTsKKyAgICBfNDU5MC0+YWRk
KDM2Nyk7CisgICAgXzQ1OTAtPmFkZCgxNzkpOworICAgIF80NTkwLT5hZGQoNDUpOworICAgIF80
NTkwLT5hZGQoMjUwKTsKKyAgICBfNDU5MC0+YWRkKDExMSk7CisgICAgXzQ1OTAtPmFkZCgyNik7
CisgICAgXzQ1OTAtPmFkZCg0NDApOworICAgIF80NTkwLT5hZGQoMTY4KTsKKyAgICBfNDU5MC0+
YWRkKDQyOCk7CisgICAgXzQ1OTAtPmFkZCgyKTsKKyAgICBfNDU5MC0+YWRkKDM1OSk7CisgICAg
XzQ1OTAtPmFkZCg0MjQpOworICAgIF80NTkwLT5hZGQoNDIwKTsKKyAgICBfNDU5MC0+YWRkKDIw
KTsKKyAgICBfNDU5MC0+YWRkKDk4KTsKKyAgICBfNDU5MC0+YWRkKDM3Mik7CisgICAgXzQ1OTAt
PmFkZCg0MzIpOworICAgIF80NTg3LT5hZGQoMTgyKTsKKyAgICBfNDU4Ny0+YWRkKDQzNik7Cisg
ICAgXzQ1ODctPmFkZCgyMjkpOworICAgIF80NTg3LT5hZGQoMTI2KTsKKyAgICBfNDU4Ny0+YWRk
KDI4Nyk7CisgICAgXzQ1ODctPmFkZCgzNjcpOworICAgIF80NTg3LT5hZGQoMTc5KTsKKyAgICBf
NDU4Ny0+YWRkKDQ1KTsKKyAgICBfNDU4Ny0+YWRkKDI1MCk7CisgICAgXzQ1ODctPmFkZCgxMTEp
OworICAgIF80NTg3LT5hZGQoMjYpOworICAgIF80NTg3LT5hZGQoNDQwKTsKKyAgICBfNDU4Ny0+
YWRkKDE2OCk7CisgICAgXzQ1ODctPmFkZCg0MjgpOworICAgIF80NTg3LT5hZGQoMik7CisgICAg
XzQ1ODctPmFkZCgzNTkpOworICAgIF80NTg3LT5hZGQoNDI0KTsKKyAgICBfNDU4Ny0+YWRkKDQy
MCk7CisgICAgXzQ1ODctPmFkZCgyMCk7CisgICAgXzQ1ODctPmFkZCg5OCk7CisgICAgXzQ1ODct
PmFkZCgzNzIpOworICAgIF80NTg3LT5hZGQoNDMyKTsKKyAgICBfNDU4OC0+YWRkKDE4Mik7Cisg
ICAgXzQ1ODgtPmFkZCg0MzYpOworICAgIF80NTg4LT5hZGQoMjI5KTsKKyAgICBfNDU4OC0+YWRk
KDEyNik7CisgICAgXzQ1ODgtPmFkZCgyODcpOworICAgIF80NTg4LT5hZGQoMzY3KTsKKyAgICBf
NDU4OC0+YWRkKDQzMik7CisgICAgXzQ1ODgtPmFkZCgxNzkpOworICAgIF80NTg4LT5hZGQoNDIw
KTsKKyAgICBfNDU4OC0+YWRkKDQ1KTsKKyAgICBfNDU4OC0+YWRkKDI1MCk7CisgICAgXzQ1ODgt
PmFkZCgxMTEpOworICAgIF80NTg4LT5hZGQoMjYpOworICAgIF80NTg4LT5hZGQoNDQwKTsKKyAg
ICBfNDU4OC0+YWRkKDE2OCk7CisgICAgXzQ1ODgtPmFkZCg0MjgpOworICAgIF80NTg4LT5hZGQo
MzU5KTsKKyAgICBfNDU4OC0+YWRkKDIpOworICAgIF80NTg4LT5hZGQoNDI0KTsKKyAgICBfNDU4
OC0+YWRkKDIwKTsKKyAgICBfNDU4OC0+YWRkKDM3Mik7CisgICAgXzQ1ODgtPmFkZCg5OCk7Cisg
ICAgXzQ1ODgtPmFkZCg3Mik7CisgICAgXzQ1ODgtPmFkZCg1MDMpOworICAgIF80NTg5LT5hZGQo
MTgyKTsKKyAgICBfNDU4OS0+YWRkKDQzNik7CisgICAgXzQ1ODktPmFkZCgyMjkpOworICAgIF80
NTg5LT5hZGQoMTI2KTsKKyAgICBfNDU4OS0+YWRkKDI4Nyk7CisgICAgXzQ1ODktPmFkZCgzNjcp
OworICAgIF80NTg5LT5hZGQoNDMyKTsKKyAgICBfNDU4OS0+YWRkKDE3OSk7CisgICAgXzQ1ODkt
PmFkZCg0MjApOworICAgIF80NTg5LT5hZGQoNDUpOworICAgIF80NTg5LT5hZGQoMjUwKTsKKyAg
ICBfNDU4OS0+YWRkKDExMSk7CisgICAgXzQ1ODktPmFkZCgyNik7CisgICAgXzQ1ODktPmFkZCg0
NDApOworICAgIF80NTg5LT5hZGQoMTY4KTsKKyAgICBfNDU4OS0+YWRkKDQyOCk7CisgICAgXzQ1
ODktPmFkZCgzNTkpOworICAgIF80NTg5LT5hZGQoMik7CisgICAgXzQ1ODktPmFkZCg0MjQpOwor
ICAgIF80NTg5LT5hZGQoMjApOworICAgIF80NTg5LT5hZGQoMzcyKTsKKyAgICBfNDU4OS0+YWRk
KDk4KTsKKyAgICBfNDU4OS0+YWRkKDcyKTsKKyAgICBfNDU4OS0+YWRkKDUwMyk7CisgICAgXzQ1
OTAtPmFkZCgxODIpOworICAgIF80NTkwLT5hZGQoNDM2KTsKKyAgICBfNDU5MC0+YWRkKDIyOSk7
CisgICAgXzQ1OTAtPmFkZCgxMjYpOworICAgIF80NTkwLT5hZGQoMjg3KTsKKyAgICBfNDU5MC0+
YWRkKDM2Nyk7CisgICAgXzQ1OTAtPmFkZCg0MzIpOworICAgIF80NTkwLT5hZGQoMTc5KTsKKyAg
ICBfNDU5MC0+YWRkKDQ1KTsKKyAgICBfNDU5MC0+YWRkKDI1MCk7CisgICAgXzQ1OTAtPmFkZCgx
MTEpOworICAgIF80NTkwLT5hZGQoMjYpOworICAgIF80NTkwLT5hZGQoNDQwKTsKKyAgICBfNDU5
MC0+YWRkKDE2OCk7CisgICAgXzQ1OTAtPmFkZCg0MjgpOworICAgIF80NTkwLT5hZGQoOTgpOwor
ICAgIF80NTkwLT5hZGQoMzU5KTsKKyAgICBfNDU5MC0+YWRkKDIpOworICAgIF80NTkwLT5hZGQo
NDIwKTsKKyAgICBfNDU5MC0+YWRkKDIwKTsKKyAgICBfNDU5MC0+YWRkKDcyKTsKKyAgICBfNDU5
MC0+YWRkKDQyNCk7CisgICAgXzQ1OTAtPmFkZCgzNzIpOworICAgIF80NTkwLT5hZGQoMTgzKTsK
KyAgICBfNDU4Ny0+YWRkKDE4Mik7CisgICAgXzQ1ODctPmFkZCg0MzYpOworICAgIF80NTg3LT5h
ZGQoMjI5KTsKKyAgICBfNDU4Ny0+YWRkKDEyNik7CisgICAgXzQ1ODctPmFkZCgyODcpOworICAg
IF80NTg3LT5hZGQoMzY3KTsKKyAgICBfNDU4Ny0+YWRkKDQzMik7CisgICAgXzQ1ODctPmFkZCgx
NzkpOworICAgIF80NTg3LT5hZGQoNDUpOworICAgIF80NTg3LT5hZGQoMjUwKTsKKyAgICBfNDU4
Ny0+YWRkKDExMSk7CisgICAgXzQ1ODctPmFkZCgyNik7CisgICAgXzQ1ODctPmFkZCg0NDApOwor
ICAgIF80NTg3LT5hZGQoMTY4KTsKKyAgICBfNDU4Ny0+YWRkKDQyOCk7CisgICAgXzQ1ODctPmFk
ZCg5OCk7CisgICAgXzQ1ODctPmFkZCgzNTkpOworICAgIF80NTg3LT5hZGQoMik7CisgICAgXzQ1
ODctPmFkZCg0MjApOworICAgIF80NTg3LT5hZGQoMjApOworICAgIF80NTg3LT5hZGQoNzIpOwor
ICAgIF80NTg3LT5hZGQoNDI0KTsKKyAgICBfNDU4Ny0+YWRkKDM3Mik7CisgICAgZGVsZXRlIF80
NTg3OworICAgIGRlbGV0ZSBfNDU4ODsKKyAgICBkZWxldGUgXzQ1ODk7CisgICAgZGVsZXRlIF80
NTkwOworICAgIGRlbGV0ZSBfNDU5MTsKKyAgICBkZWxldGUgXzQ1OTI7CisgICAgZGVsZXRlIF80
NTkzOworICAgIGRlbGV0ZSBfNDU5NDsKKyAgICBkZWxldGUgXzQ1OTU7CisgICAgZGVsZXRlIF80
NTk2OworICAgIGRlbGV0ZSBfNDU5NzsKKyAgICBkZWxldGUgXzQ1OTg7CisgICAgZGVsZXRlIF80
NTk5OworICAgIGRlbGV0ZSBfNDYwMDsKKyAgICBkZWxldGUgXzQ2MDE7CisgICAgZGVsZXRlIF80
NjAyOworICAgIGF1dG8qIF80NjAzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ2MDQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYwNSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjA2ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MDcgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYwOCA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjA5ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MTAg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDYxMSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NjEyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ2MTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDYxNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NjE1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYxNyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjE4ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgXzQ2MTctPmFkZCg0ODMpOworICAgIF80
NjE1LT5hZGQoNTA5KTsKKyAgICBfNDYxNS0+YWRkKDIyOSk7CisgICAgXzQ2MTUtPmFkZCgxODIp
OworICAgIF80NjE1LT5hZGQoNTA4KTsKKyAgICBfNDYxNi0+YWRkKDUwOSk7CisgICAgXzQ2MTYt
PmFkZCgyMjkpOworICAgIF80NjE2LT5hZGQoMTgyKTsKKyAgICBfNDYxNi0+YWRkKDUwOCk7Cisg
ICAgXzQ2MTctPmFkZCgxODIpOworICAgIF80NjE3LT5hZGQoMjI5KTsKKyAgICBfNDYxNy0+YWRk
KDQ4Myk7CisgICAgXzQ2MTctPmFkZCg0NzMpOworICAgIF80NjE0LT5hZGQoMTgyKTsKKyAgICBf
NDYxNC0+YWRkKDIyOSk7CisgICAgXzQ2MTQtPmFkZCgxNjgpOworICAgIF80NjE0LT5hZGQoMik7
CisgICAgXzQ2MTQtPmFkZCgxMjYpOworICAgIF80NjE0LT5hZGQoMjApOworICAgIF80NjE0LT5h
ZGQoMzU5KTsKKyAgICBfNDYxNC0+YWRkKDM3Mik7CisgICAgXzQ2MTQtPmFkZCg5OCk7CisgICAg
XzQ2MTQtPmFkZCg0MjApOworICAgIF80NjE0LT5hZGQoNDI0KTsKKyAgICBfNDYxNC0+YWRkKDQy
OCk7CisgICAgXzQ2MTQtPmFkZCg0MzIpOworICAgIF80NjE0LT5hZGQoNDM2KTsKKyAgICBfNDYx
NC0+YWRkKDQ0MCk7CisgICAgXzQ2MTQtPmFkZCgzNjcpOworICAgIF80NjE0LT5hZGQoMjYpOwor
ICAgIF80NjE0LT5hZGQoNDUpOworICAgIF80NjE0LT5hZGQoNTA3KTsKKyAgICBfNDYxMy0+YWRk
KDE4Mik7CisgICAgXzQ2MTMtPmFkZCgyMjkpOworICAgIF80NjEzLT5hZGQoMTY4KTsKKyAgICBf
NDYxMy0+YWRkKDIpOworICAgIF80NjEzLT5hZGQoMTI2KTsKKyAgICBfNDYxMy0+YWRkKDIwKTsK
KyAgICBfNDYxMy0+YWRkKDM1OSk7CisgICAgXzQ2MTMtPmFkZCgzNzIpOworICAgIF80NjEzLT5h
ZGQoOTgpOworICAgIF80NjEzLT5hZGQoNDIwKTsKKyAgICBfNDYxMy0+YWRkKDQyNCk7CisgICAg
XzQ2MTMtPmFkZCg0MjgpOworICAgIF80NjEzLT5hZGQoNDMyKTsKKyAgICBfNDYxMy0+YWRkKDQz
Nik7CisgICAgXzQ2MTMtPmFkZCg0NDApOworICAgIF80NjEzLT5hZGQoMzY3KTsKKyAgICBfNDYx
My0+YWRkKDI2KTsKKyAgICBfNDYxMy0+YWRkKDQ1KTsKKyAgICBfNDYxMy0+YWRkKDUwNyk7Cisg
ICAgXzQ2MDktPmFkZCgxODIpOworICAgIF80NjA5LT5hZGQoNDM2KTsKKyAgICBfNDYwOS0+YWRk
KDIyOSk7CisgICAgXzQ2MDktPmFkZCgxMjYpOworICAgIF80NjA5LT5hZGQoMzY3KTsKKyAgICBf
NDYwOS0+YWRkKDQ1KTsKKyAgICBfNDYwOS0+YWRkKDQzMik7CisgICAgXzQ2MDktPmFkZCgzNTkp
OworICAgIF80NjA5LT5hZGQoNDQwKTsKKyAgICBfNDYwOS0+YWRkKDI2KTsKKyAgICBfNDYwOS0+
YWRkKDE2OCk7CisgICAgXzQ2MDktPmFkZCg0MjgpOworICAgIF80NjA5LT5hZGQoOTgpOworICAg
IF80NjA5LT5hZGQoMik7CisgICAgXzQ2MDktPmFkZCg0MjApOworICAgIF80NjA5LT5hZGQoMjAp
OworICAgIF80NjA5LT5hZGQoNDI0KTsKKyAgICBfNDYwOS0+YWRkKDM3Mik7CisgICAgXzQ2MTIt
PmFkZCgxODIpOworICAgIF80NjEyLT5hZGQoNDM2KTsKKyAgICBfNDYxMi0+YWRkKDIyOSk7Cisg
ICAgXzQ2MTItPmFkZCgxMjYpOworICAgIF80NjEyLT5hZGQoMzY3KTsKKyAgICBfNDYxMi0+YWRk
KDQ1KTsKKyAgICBfNDYxMi0+YWRkKDQzMik7CisgICAgXzQ2MTItPmFkZCgzNTkpOworICAgIF80
NjEyLT5hZGQoNDQwKTsKKyAgICBfNDYxMi0+YWRkKDI2KTsKKyAgICBfNDYxMi0+YWRkKDE2OCk7
CisgICAgXzQ2MTItPmFkZCg0MjgpOworICAgIF80NjEyLT5hZGQoOTgpOworICAgIF80NjEyLT5h
ZGQoMik7CisgICAgXzQ2MTItPmFkZCg0MjApOworICAgIF80NjEyLT5hZGQoMjApOworICAgIF80
NjEyLT5hZGQoNDI0KTsKKyAgICBfNDYxMi0+YWRkKDM3Mik7CisgICAgXzQ2MTItPmFkZCgzMjAp
OworICAgIF80NjExLT5hZGQoMTgyKTsKKyAgICBfNDYxMS0+YWRkKDQzNik7CisgICAgXzQ2MTEt
PmFkZCgyMjkpOworICAgIF80NjExLT5hZGQoMTI2KTsKKyAgICBfNDYxMS0+YWRkKDM2Nyk7Cisg
ICAgXzQ2MTEtPmFkZCgyODcpOworICAgIF80NjExLT5hZGQoNDMyKTsKKyAgICBfNDYxMS0+YWRk
KDQ1KTsKKyAgICBfNDYxMS0+YWRkKDI2KTsKKyAgICBfNDYxMS0+YWRkKDQ0MCk7CisgICAgXzQ2
MTEtPmFkZCgxNjgpOworICAgIF80NjExLT5hZGQoNDI4KTsKKyAgICBfNDYxMS0+YWRkKDM1OSk7
CisgICAgXzQ2MTEtPmFkZCgyKTsKKyAgICBfNDYxMS0+YWRkKDQyMCk7CisgICAgXzQ2MTEtPmFk
ZCgyMCk7CisgICAgXzQ2MTEtPmFkZCg0MjQpOworICAgIF80NjExLT5hZGQoMzcyKTsKKyAgICBf
NDYxMS0+YWRkKDk4KTsKKyAgICBfNDYxMS0+YWRkKDI1MCk7CisgICAgXzQ2MTEtPmFkZCgxNzkp
OworICAgIF80NjExLT5hZGQoNTA2KTsKKyAgICBfNDYxMS0+YWRkKDExMSk7CisgICAgXzQ2MTEt
PmFkZCgyNzIpOworICAgIF80NjExLT5hZGQoNTA1KTsKKyAgICBfNDYxMC0+YWRkKDE4Mik7Cisg
ICAgXzQ2MTAtPmFkZCg0MzYpOworICAgIF80NjEwLT5hZGQoMjI5KTsKKyAgICBfNDYxMC0+YWRk
KDEyNik7CisgICAgXzQ2MTAtPmFkZCgzNjcpOworICAgIF80NjEwLT5hZGQoMjg3KTsKKyAgICBf
NDYxMC0+YWRkKDQzMik7CisgICAgXzQ2MTAtPmFkZCg0NSk7CisgICAgXzQ2MTAtPmFkZCgyNik7
CisgICAgXzQ2MTAtPmFkZCg0NDApOworICAgIF80NjEwLT5hZGQoMTY4KTsKKyAgICBfNDYxMC0+
YWRkKDQyOCk7CisgICAgXzQ2MTAtPmFkZCgzNTkpOworICAgIF80NjEwLT5hZGQoMik7CisgICAg
XzQ2MTAtPmFkZCg0MjApOworICAgIF80NjEwLT5hZGQoMjApOworICAgIF80NjEwLT5hZGQoNDI0
KTsKKyAgICBfNDYxMC0+YWRkKDM3Mik7CisgICAgXzQ2MTAtPmFkZCg5OCk7CisgICAgXzQ2MTAt
PmFkZCgyNTApOworICAgIF80NjEwLT5hZGQoMTc5KTsKKyAgICBfNDYxMC0+YWRkKDUwNik7Cisg
ICAgXzQ2MTAtPmFkZCgxMTEpOworICAgIF80NjEwLT5hZGQoMjcyKTsKKyAgICBfNDYxMC0+YWRk
KDUwNSk7CisgICAgXzQ2MDktPmFkZCgxODIpOworICAgIF80NjA5LT5hZGQoNDM2KTsKKyAgICBf
NDYwOS0+YWRkKDIyOSk7CisgICAgXzQ2MDktPmFkZCgxMjYpOworICAgIF80NjA5LT5hZGQoMjg3
KTsKKyAgICBfNDYwOS0+YWRkKDM2Nyk7CisgICAgXzQ2MDktPmFkZCgyMzYpOworICAgIF80NjA5
LT5hZGQoMTc5KTsKKyAgICBfNDYwOS0+YWRkKDQ1KTsKKyAgICBfNDYwOS0+YWRkKDQzMik7Cisg
ICAgXzQ2MDktPmFkZCgyNTApOworICAgIF80NjA5LT5hZGQoMjcyKTsKKyAgICBfNDYwOS0+YWRk
KDExMSk7CisgICAgXzQ2MDktPmFkZCgyNik7CisgICAgXzQ2MDktPmFkZCg0NDApOworICAgIF80
NjA5LT5hZGQoMTY4KTsKKyAgICBfNDYwOS0+YWRkKDQyOCk7CisgICAgXzQ2MDktPmFkZCg5OCk7
CisgICAgXzQ2MDktPmFkZCgzNTkpOworICAgIF80NjA5LT5hZGQoMik7CisgICAgXzQ2MDktPmFk
ZCg0MjApOworICAgIF80NjA5LT5hZGQoMjApOworICAgIF80NjA5LT5hZGQoNDI0KTsKKyAgICBf
NDYwOS0+YWRkKDM3Mik7CisgICAgXzQ2MTItPmFkZCgxODIpOworICAgIF80NjEyLT5hZGQoNDM2
KTsKKyAgICBfNDYxMi0+YWRkKDIyOSk7CisgICAgXzQ2MTItPmFkZCgxMjYpOworICAgIF80NjEy
LT5hZGQoMjg3KTsKKyAgICBfNDYxMi0+YWRkKDM2Nyk7CisgICAgXzQ2MTItPmFkZCgzMzgpOwor
ICAgIF80NjEyLT5hZGQoMTc5KTsKKyAgICBfNDYxMi0+YWRkKDQ1KTsKKyAgICBfNDYxMi0+YWRk
KDQzMik7CisgICAgXzQ2MTItPmFkZCgyNTApOworICAgIF80NjEyLT5hZGQoMjcyKTsKKyAgICBf
NDYxMi0+YWRkKDExMSk7CisgICAgXzQ2MTItPmFkZCgyNik7CisgICAgXzQ2MTItPmFkZCg0NDAp
OworICAgIF80NjEyLT5hZGQoMTY4KTsKKyAgICBfNDYxMi0+YWRkKDQyOCk7CisgICAgXzQ2MTIt
PmFkZCg5OCk7CisgICAgXzQ2MTItPmFkZCgzNTkpOworICAgIF80NjEyLT5hZGQoMik7CisgICAg
XzQ2MTItPmFkZCg0MjApOworICAgIF80NjEyLT5hZGQoMjApOworICAgIF80NjEyLT5hZGQoNDI0
KTsKKyAgICBfNDYxMi0+YWRkKDM3Mik7CisgICAgXzQ2MTItPmFkZCgzMjApOworICAgIF80NjA3
LT5hZGQoMTgyKTsKKyAgICBfNDYwNy0+YWRkKDQzNik7CisgICAgXzQ2MDctPmFkZCgyMjkpOwor
ICAgIF80NjA3LT5hZGQoMTI2KTsKKyAgICBfNDYwNy0+YWRkKDI4Nyk7CisgICAgXzQ2MDctPmFk
ZCgzNjcpOworICAgIF80NjA3LT5hZGQoNDMyKTsKKyAgICBfNDYwNy0+YWRkKDE3OSk7CisgICAg
XzQ2MDctPmFkZCg0NSk7CisgICAgXzQ2MDctPmFkZCgyNTApOworICAgIF80NjA3LT5hZGQoMzcy
KTsKKyAgICBfNDYwNy0+YWRkKDExMSk7CisgICAgXzQ2MDctPmFkZCgyNik7CisgICAgXzQ2MDct
PmFkZCg0NDApOworICAgIF80NjA3LT5hZGQoMTY4KTsKKyAgICBfNDYwNy0+YWRkKDQyOCk7Cisg
ICAgXzQ2MDctPmFkZCgzNTkpOworICAgIF80NjA3LT5hZGQoMik7CisgICAgXzQ2MDctPmFkZCg5
OCk7CisgICAgXzQ2MDctPmFkZCg0MjApOworICAgIF80NjA3LT5hZGQoMjApOworICAgIF80NjA3
LT5hZGQoNDI0KTsKKyAgICBfNDYwOC0+YWRkKDE4Mik7CisgICAgXzQ2MDgtPmFkZCg0MzYpOwor
ICAgIF80NjA4LT5hZGQoMjI5KTsKKyAgICBfNDYwOC0+YWRkKDEyNik7CisgICAgXzQ2MDgtPmFk
ZCgyODcpOworICAgIF80NjA4LT5hZGQoMzY3KTsKKyAgICBfNDYwOC0+YWRkKDQzMik7CisgICAg
XzQ2MDgtPmFkZCgxNzkpOworICAgIF80NjA4LT5hZGQoNDUpOworICAgIF80NjA4LT5hZGQoMjUw
KTsKKyAgICBfNDYwOC0+YWRkKDM3Mik7CisgICAgXzQ2MDgtPmFkZCgxMTEpOworICAgIF80NjA4
LT5hZGQoMjYpOworICAgIF80NjA4LT5hZGQoNDQwKTsKKyAgICBfNDYwOC0+YWRkKDE2OCk7Cisg
ICAgXzQ2MDgtPmFkZCg0MjgpOworICAgIF80NjA4LT5hZGQoMzU5KTsKKyAgICBfNDYwOC0+YWRk
KDIpOworICAgIF80NjA4LT5hZGQoOTgpOworICAgIF80NjA4LT5hZGQoNDIwKTsKKyAgICBfNDYw
OC0+YWRkKDIwKTsKKyAgICBfNDYwOC0+YWRkKDQyNCk7CisgICAgXzQ2MDYtPmFkZCgxODIpOwor
ICAgIF80NjA2LT5hZGQoNDM2KTsKKyAgICBfNDYwNi0+YWRkKDIyOSk7CisgICAgXzQ2MDYtPmFk
ZCgxMjYpOworICAgIF80NjA2LT5hZGQoNDI0KTsKKyAgICBfNDYwNi0+YWRkKDI4Nyk7CisgICAg
XzQ2MDYtPmFkZCgzNjcpOworICAgIF80NjA2LT5hZGQoMTc5KTsKKyAgICBfNDYwNi0+YWRkKDQ1
KTsKKyAgICBfNDYwNi0+YWRkKDI1MCk7CisgICAgXzQ2MDYtPmFkZCgxMTEpOworICAgIF80NjA2
LT5hZGQoMjYpOworICAgIF80NjA2LT5hZGQoNDQwKTsKKyAgICBfNDYwNi0+YWRkKDE2OCk7Cisg
ICAgXzQ2MDYtPmFkZCg0MjgpOworICAgIF80NjA2LT5hZGQoMzU5KTsKKyAgICBfNDYwNi0+YWRk
KDIpOworICAgIF80NjA2LT5hZGQoNDIwKTsKKyAgICBfNDYwNi0+YWRkKDIwKTsKKyAgICBfNDYw
Ni0+YWRkKDk4KTsKKyAgICBfNDYwNi0+YWRkKDM3Mik7CisgICAgXzQ2MDYtPmFkZCg0MzIpOwor
ICAgIF80NjAzLT5hZGQoMTgyKTsKKyAgICBfNDYwMy0+YWRkKDQzNik7CisgICAgXzQ2MDMtPmFk
ZCgyMjkpOworICAgIF80NjAzLT5hZGQoMTI2KTsKKyAgICBfNDYwMy0+YWRkKDQyNCk7CisgICAg
XzQ2MDMtPmFkZCgyODcpOworICAgIF80NjAzLT5hZGQoMzY3KTsKKyAgICBfNDYwMy0+YWRkKDE3
OSk7CisgICAgXzQ2MDMtPmFkZCg0NSk7CisgICAgXzQ2MDMtPmFkZCgyNTApOworICAgIF80NjAz
LT5hZGQoMTExKTsKKyAgICBfNDYwMy0+YWRkKDI2KTsKKyAgICBfNDYwMy0+YWRkKDQ0MCk7Cisg
ICAgXzQ2MDMtPmFkZCgxNjgpOworICAgIF80NjAzLT5hZGQoNDI4KTsKKyAgICBfNDYwMy0+YWRk
KDM1OSk7CisgICAgXzQ2MDMtPmFkZCgyKTsKKyAgICBfNDYwMy0+YWRkKDQyMCk7CisgICAgXzQ2
MDMtPmFkZCgyMCk7CisgICAgXzQ2MDMtPmFkZCg5OCk7CisgICAgXzQ2MDMtPmFkZCgzNzIpOwor
ICAgIF80NjAzLT5hZGQoNDMyKTsKKyAgICBfNDYwNC0+YWRkKDE4Mik7CisgICAgXzQ2MDQtPmFk
ZCg0MzYpOworICAgIF80NjA0LT5hZGQoMjI5KTsKKyAgICBfNDYwNC0+YWRkKDEyNik7CisgICAg
XzQ2MDQtPmFkZCgyODcpOworICAgIF80NjA0LT5hZGQoMzY3KTsKKyAgICBfNDYwNC0+YWRkKDQz
Mik7CisgICAgXzQ2MDQtPmFkZCgxNzkpOworICAgIF80NjA0LT5hZGQoNDUpOworICAgIF80NjA0
LT5hZGQoMjUwKTsKKyAgICBfNDYwNC0+YWRkKDExMSk7CisgICAgXzQ2MDQtPmFkZCgyNik7Cisg
ICAgXzQ2MDQtPmFkZCg0NDApOworICAgIF80NjA0LT5hZGQoMTY4KTsKKyAgICBfNDYwNC0+YWRk
KDQyOCk7CisgICAgXzQ2MDQtPmFkZCgyKTsKKyAgICBfNDYwNC0+YWRkKDM1OSk7CisgICAgXzQ2
MDQtPmFkZCg0MjQpOworICAgIF80NjA0LT5hZGQoNDIwKTsKKyAgICBfNDYwNC0+YWRkKDIwKTsK
KyAgICBfNDYwNC0+YWRkKDM3Mik7CisgICAgXzQ2MDQtPmFkZCg5OCk7CisgICAgXzQ2MDQtPmFk
ZCg3Mik7CisgICAgXzQ2MDQtPmFkZCg1MDQpOworICAgIF80NjA1LT5hZGQoMTgyKTsKKyAgICBf
NDYwNS0+YWRkKDQzNik7CisgICAgXzQ2MDUtPmFkZCgyMjkpOworICAgIF80NjA1LT5hZGQoMTI2
KTsKKyAgICBfNDYwNS0+YWRkKDI4Nyk7CisgICAgXzQ2MDUtPmFkZCgzNjcpOworICAgIF80NjA1
LT5hZGQoNDMyKTsKKyAgICBfNDYwNS0+YWRkKDE3OSk7CisgICAgXzQ2MDUtPmFkZCg0NSk7Cisg
ICAgXzQ2MDUtPmFkZCgyNTApOworICAgIF80NjA1LT5hZGQoMTExKTsKKyAgICBfNDYwNS0+YWRk
KDI2KTsKKyAgICBfNDYwNS0+YWRkKDQ0MCk7CisgICAgXzQ2MDUtPmFkZCgxNjgpOworICAgIF80
NjA1LT5hZGQoNDI4KTsKKyAgICBfNDYwNS0+YWRkKDIpOworICAgIF80NjA1LT5hZGQoMzU5KTsK
KyAgICBfNDYwNS0+YWRkKDQyNCk7CisgICAgXzQ2MDUtPmFkZCg0MjApOworICAgIF80NjA1LT5h
ZGQoMjApOworICAgIF80NjA1LT5hZGQoMzcyKTsKKyAgICBfNDYwNS0+YWRkKDk4KTsKKyAgICBf
NDYwNS0+YWRkKDcyKTsKKyAgICBfNDYwNS0+YWRkKDUwNCk7CisgICAgXzQ2MDYtPmFkZCgxODIp
OworICAgIF80NjA2LT5hZGQoNDM2KTsKKyAgICBfNDYwNi0+YWRkKDIyOSk7CisgICAgXzQ2MDYt
PmFkZCgxMjYpOworICAgIF80NjA2LT5hZGQoMjg3KTsKKyAgICBfNDYwNi0+YWRkKDM2Nyk7Cisg
ICAgXzQ2MDYtPmFkZCg0MzIpOworICAgIF80NjA2LT5hZGQoMTc5KTsKKyAgICBfNDYwNi0+YWRk
KDQyMCk7CisgICAgXzQ2MDYtPmFkZCg0NSk7CisgICAgXzQ2MDYtPmFkZCgyNTApOworICAgIF80
NjA2LT5hZGQoMTExKTsKKyAgICBfNDYwNi0+YWRkKDI2KTsKKyAgICBfNDYwNi0+YWRkKDQ0MCk7
CisgICAgXzQ2MDYtPmFkZCgxNjgpOworICAgIF80NjA2LT5hZGQoNDI4KTsKKyAgICBfNDYwNi0+
YWRkKDM1OSk7CisgICAgXzQ2MDYtPmFkZCgyKTsKKyAgICBfNDYwNi0+YWRkKDQyNCk7CisgICAg
XzQ2MDYtPmFkZCgyMCk7CisgICAgXzQ2MDYtPmFkZCg3Mik7CisgICAgXzQ2MDYtPmFkZCg5OCk7
CisgICAgXzQ2MDYtPmFkZCgzNzIpOworICAgIF80NjA2LT5hZGQoMTgzKTsKKyAgICBfNDYwMy0+
YWRkKDE4Mik7CisgICAgXzQ2MDMtPmFkZCg0MzYpOworICAgIF80NjAzLT5hZGQoMjI5KTsKKyAg
ICBfNDYwMy0+YWRkKDEyNik7CisgICAgXzQ2MDMtPmFkZCgyODcpOworICAgIF80NjAzLT5hZGQo
MzY3KTsKKyAgICBfNDYwMy0+YWRkKDQzMik7CisgICAgXzQ2MDMtPmFkZCgxNzkpOworICAgIF80
NjAzLT5hZGQoNDIwKTsKKyAgICBfNDYwMy0+YWRkKDQ1KTsKKyAgICBfNDYwMy0+YWRkKDI1MCk7
CisgICAgXzQ2MDMtPmFkZCgxMTEpOworICAgIF80NjAzLT5hZGQoMjYpOworICAgIF80NjAzLT5h
ZGQoNDQwKTsKKyAgICBfNDYwMy0+YWRkKDE2OCk7CisgICAgXzQ2MDMtPmFkZCg0MjgpOworICAg
IF80NjAzLT5hZGQoMzU5KTsKKyAgICBfNDYwMy0+YWRkKDIpOworICAgIF80NjAzLT5hZGQoNDI0
KTsKKyAgICBfNDYwMy0+YWRkKDIwKTsKKyAgICBfNDYwMy0+YWRkKDcyKTsKKyAgICBfNDYwMy0+
YWRkKDk4KTsKKyAgICBfNDYwMy0+YWRkKDM3Mik7CisgICAgZGVsZXRlIF80NjAzOworICAgIGRl
bGV0ZSBfNDYwNDsKKyAgICBkZWxldGUgXzQ2MDU7CisgICAgZGVsZXRlIF80NjA2OworICAgIGRl
bGV0ZSBfNDYwNzsKKyAgICBkZWxldGUgXzQ2MDg7CisgICAgZGVsZXRlIF80NjA5OworICAgIGRl
bGV0ZSBfNDYxMDsKKyAgICBkZWxldGUgXzQ2MTE7CisgICAgZGVsZXRlIF80NjEyOworICAgIGRl
bGV0ZSBfNDYxMzsKKyAgICBkZWxldGUgXzQ2MTQ7CisgICAgZGVsZXRlIF80NjE1OworICAgIGRl
bGV0ZSBfNDYxNjsKKyAgICBkZWxldGUgXzQ2MTc7CisgICAgZGVsZXRlIF80NjE4OworICAgIGF1
dG8qIF80NjE5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ2MjAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDYyMSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NjIyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MjMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYyNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjI1ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MjYgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYyNyA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjI4ID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2
MjkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDYzMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NjMxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ2MzIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDYzMyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NjM0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgXzQ2MzMtPmFkZCg0ODMpOworICAgIF80NjMxLT5hZGQoNTAy
KTsKKyAgICBfNDYzMS0+YWRkKDIyOSk7CisgICAgXzQ2MzEtPmFkZCgxODIpOworICAgIF80NjMx
LT5hZGQoNTAxKTsKKyAgICBfNDYzMi0+YWRkKDUwMik7CisgICAgXzQ2MzItPmFkZCgyMjkpOwor
ICAgIF80NjMyLT5hZGQoMTgyKTsKKyAgICBfNDYzMi0+YWRkKDUwMSk7CisgICAgXzQ2MzMtPmFk
ZCgxODIpOworICAgIF80NjMzLT5hZGQoMjI5KTsKKyAgICBfNDYzMy0+YWRkKDQ4Myk7CisgICAg
XzQ2MzMtPmFkZCg0NzMpOworICAgIF80NjMwLT5hZGQoMTgyKTsKKyAgICBfNDYzMC0+YWRkKDIy
OSk7CisgICAgXzQ2MzAtPmFkZCgxNjgpOworICAgIF80NjMwLT5hZGQoMTI2KTsKKyAgICBfNDYz
MC0+YWRkKDM1OSk7CisgICAgXzQ2MzAtPmFkZCgyKTsKKyAgICBfNDYzMC0+YWRkKDM3Mik7Cisg
ICAgXzQ2MzAtPmFkZCg5OCk7CisgICAgXzQ2MzAtPmFkZCg0MjApOworICAgIF80NjMwLT5hZGQo
NDI0KTsKKyAgICBfNDYzMC0+YWRkKDQyOCk7CisgICAgXzQ2MzAtPmFkZCg0MzIpOworICAgIF80
NjMwLT5hZGQoNDM2KTsKKyAgICBfNDYzMC0+YWRkKDQ0MCk7CisgICAgXzQ2MzAtPmFkZCgzNjcp
OworICAgIF80NjMwLT5hZGQoMjYpOworICAgIF80NjMwLT5hZGQoNDUpOworICAgIF80NjMwLT5h
ZGQoNTAwKTsKKyAgICBfNDYyOS0+YWRkKDE4Mik7CisgICAgXzQ2MjktPmFkZCgyMjkpOworICAg
IF80NjI5LT5hZGQoMTY4KTsKKyAgICBfNDYyOS0+YWRkKDEyNik7CisgICAgXzQ2MjktPmFkZCgz
NTkpOworICAgIF80NjI5LT5hZGQoMik7CisgICAgXzQ2MjktPmFkZCgzNzIpOworICAgIF80NjI5
LT5hZGQoOTgpOworICAgIF80NjI5LT5hZGQoNDIwKTsKKyAgICBfNDYyOS0+YWRkKDQyNCk7Cisg
ICAgXzQ2MjktPmFkZCg0MjgpOworICAgIF80NjI5LT5hZGQoNDMyKTsKKyAgICBfNDYyOS0+YWRk
KDQzNik7CisgICAgXzQ2MjktPmFkZCg0NDApOworICAgIF80NjI5LT5hZGQoMzY3KTsKKyAgICBf
NDYyOS0+YWRkKDI2KTsKKyAgICBfNDYyOS0+YWRkKDQ1KTsKKyAgICBfNDYyOS0+YWRkKDUwMCk7
CisgICAgXzQ2MjUtPmFkZCgxODIpOworICAgIF80NjI1LT5hZGQoNDM2KTsKKyAgICBfNDYyNS0+
YWRkKDIyOSk7CisgICAgXzQ2MjUtPmFkZCgxMjYpOworICAgIF80NjI1LT5hZGQoMzY3KTsKKyAg
ICBfNDYyNS0+YWRkKDQzMik7CisgICAgXzQ2MjUtPmFkZCg0NSk7CisgICAgXzQ2MjUtPmFkZCgy
Nik7CisgICAgXzQ2MjUtPmFkZCg0NDApOworICAgIF80NjI1LT5hZGQoMTY4KTsKKyAgICBfNDYy
NS0+YWRkKDQyOCk7CisgICAgXzQ2MjUtPmFkZCg5OCk7CisgICAgXzQ2MjUtPmFkZCgzNTkpOwor
ICAgIF80NjI1LT5hZGQoMik7CisgICAgXzQ2MjUtPmFkZCg0MjApOworICAgIF80NjI1LT5hZGQo
NDI0KTsKKyAgICBfNDYyNS0+YWRkKDM3Mik7CisgICAgXzQ2MjgtPmFkZCgxODIpOworICAgIF80
NjI4LT5hZGQoNDM2KTsKKyAgICBfNDYyOC0+YWRkKDIyOSk7CisgICAgXzQ2MjgtPmFkZCgxMjYp
OworICAgIF80NjI4LT5hZGQoMzY3KTsKKyAgICBfNDYyOC0+YWRkKDQzMik7CisgICAgXzQ2Mjgt
PmFkZCg0NSk7CisgICAgXzQ2MjgtPmFkZCgyNik7CisgICAgXzQ2MjgtPmFkZCg0NDApOworICAg
IF80NjI4LT5hZGQoMTY4KTsKKyAgICBfNDYyOC0+YWRkKDQyOCk7CisgICAgXzQ2MjgtPmFkZCg5
OCk7CisgICAgXzQ2MjgtPmFkZCgzNTkpOworICAgIF80NjI4LT5hZGQoMik7CisgICAgXzQ2Mjgt
PmFkZCg0MjApOworICAgIF80NjI4LT5hZGQoNDI0KTsKKyAgICBfNDYyOC0+YWRkKDM3Mik7Cisg
ICAgXzQ2MjgtPmFkZCgzMjApOworICAgIF80NjI3LT5hZGQoMTgyKTsKKyAgICBfNDYyNy0+YWRk
KDQzNik7CisgICAgXzQ2MjctPmFkZCgyMjkpOworICAgIF80NjI3LT5hZGQoMTI2KTsKKyAgICBf
NDYyNy0+YWRkKDM2Nyk7CisgICAgXzQ2MjctPmFkZCgyMCk7CisgICAgXzQ2MjctPmFkZCg0MzIp
OworICAgIF80NjI3LT5hZGQoNDUpOworICAgIF80NjI3LT5hZGQoMjYpOworICAgIF80NjI3LT5h
ZGQoNDQwKTsKKyAgICBfNDYyNy0+YWRkKDE2OCk7CisgICAgXzQ2MjctPmFkZCg0MjgpOworICAg
IF80NjI3LT5hZGQoMik7CisgICAgXzQ2MjctPmFkZCgzNTkpOworICAgIF80NjI3LT5hZGQoNDI0
KTsKKyAgICBfNDYyNy0+YWRkKDQyMCk7CisgICAgXzQ2MjctPmFkZCgzNzIpOworICAgIF80NjI3
LT5hZGQoOTgpOworICAgIF80NjI3LT5hZGQoMjUwKTsKKyAgICBfNDYyNy0+YWRkKDE3OSk7Cisg
ICAgXzQ2MjctPmFkZCg0OTkpOworICAgIF80NjI3LT5hZGQoMjg3KTsKKyAgICBfNDYyNy0+YWRk
KDExMSk7CisgICAgXzQ2MjctPmFkZCgyNzIpOworICAgIF80NjI3LT5hZGQoNDk4KTsKKyAgICBf
NDYyNi0+YWRkKDE4Mik7CisgICAgXzQ2MjYtPmFkZCg0MzYpOworICAgIF80NjI2LT5hZGQoMjI5
KTsKKyAgICBfNDYyNi0+YWRkKDEyNik7CisgICAgXzQ2MjYtPmFkZCgzNjcpOworICAgIF80NjI2
LT5hZGQoMjApOworICAgIF80NjI2LT5hZGQoNDMyKTsKKyAgICBfNDYyNi0+YWRkKDQ1KTsKKyAg
ICBfNDYyNi0+YWRkKDI2KTsKKyAgICBfNDYyNi0+YWRkKDQ0MCk7CisgICAgXzQ2MjYtPmFkZCgx
NjgpOworICAgIF80NjI2LT5hZGQoNDI4KTsKKyAgICBfNDYyNi0+YWRkKDIpOworICAgIF80NjI2
LT5hZGQoMzU5KTsKKyAgICBfNDYyNi0+YWRkKDQyNCk7CisgICAgXzQ2MjYtPmFkZCg0MjApOwor
ICAgIF80NjI2LT5hZGQoMzcyKTsKKyAgICBfNDYyNi0+YWRkKDk4KTsKKyAgICBfNDYyNi0+YWRk
KDI1MCk7CisgICAgXzQ2MjYtPmFkZCgxNzkpOworICAgIF80NjI2LT5hZGQoNDk5KTsKKyAgICBf
NDYyNi0+YWRkKDI4Nyk7CisgICAgXzQ2MjYtPmFkZCgxMTEpOworICAgIF80NjI2LT5hZGQoMjcy
KTsKKyAgICBfNDYyNi0+YWRkKDQ5OCk7CisgICAgXzQ2MjUtPmFkZCg0MzIpOworICAgIF80NjI1
LT5hZGQoMTgyKTsKKyAgICBfNDYyNS0+YWRkKDQzNik7CisgICAgXzQ2MjUtPmFkZCgyMjkpOwor
ICAgIF80NjI1LT5hZGQoMTI2KTsKKyAgICBfNDYyNS0+YWRkKDI4Nyk7CisgICAgXzQ2MjUtPmFk
ZCgzNjcpOworICAgIF80NjI1LT5hZGQoMTc5KTsKKyAgICBfNDYyNS0+YWRkKDQyMCk7CisgICAg
XzQ2MjUtPmFkZCg0NSk7CisgICAgXzQ2MjUtPmFkZCgyNTApOworICAgIF80NjI1LT5hZGQoMjcy
KTsKKyAgICBfNDYyNS0+YWRkKDExMSk7CisgICAgXzQ2MjUtPmFkZCgyNik7CisgICAgXzQ2MjUt
PmFkZCg0NDApOworICAgIF80NjI1LT5hZGQoMTY4KTsKKyAgICBfNDYyNS0+YWRkKDQyOCk7Cisg
ICAgXzQ2MjUtPmFkZCgzNTkpOworICAgIF80NjI1LT5hZGQoMik7CisgICAgXzQ2MjUtPmFkZCg0
MjQpOworICAgIF80NjI1LT5hZGQoMjApOworICAgIF80NjI1LT5hZGQoMjM2KTsKKyAgICBfNDYy
NS0+YWRkKDk4KTsKKyAgICBfNDYyNS0+YWRkKDM3Mik7CisgICAgXzQ2MjgtPmFkZCg0MzIpOwor
ICAgIF80NjI4LT5hZGQoMTgyKTsKKyAgICBfNDYyOC0+YWRkKDQzNik7CisgICAgXzQ2MjgtPmFk
ZCgyMjkpOworICAgIF80NjI4LT5hZGQoMTI2KTsKKyAgICBfNDYyOC0+YWRkKDI4Nyk7CisgICAg
XzQ2MjgtPmFkZCgzNjcpOworICAgIF80NjI4LT5hZGQoMTc5KTsKKyAgICBfNDYyOC0+YWRkKDQy
MCk7CisgICAgXzQ2MjgtPmFkZCg0NSk7CisgICAgXzQ2MjgtPmFkZCgyNTApOworICAgIF80NjI4
LT5hZGQoMjcyKTsKKyAgICBfNDYyOC0+YWRkKDExMSk7CisgICAgXzQ2MjgtPmFkZCgyNik7Cisg
ICAgXzQ2MjgtPmFkZCg0NDApOworICAgIF80NjI4LT5hZGQoMTY4KTsKKyAgICBfNDYyOC0+YWRk
KDQyOCk7CisgICAgXzQ2MjgtPmFkZCgzNTkpOworICAgIF80NjI4LT5hZGQoMik7CisgICAgXzQ2
MjgtPmFkZCg0MjQpOworICAgIF80NjI4LT5hZGQoMjApOworICAgIF80NjI4LT5hZGQoMzM4KTsK
KyAgICBfNDYyOC0+YWRkKDk4KTsKKyAgICBfNDYyOC0+YWRkKDM3Mik7CisgICAgXzQ2MjgtPmFk
ZCgzMjApOworICAgIF80NjIzLT5hZGQoMTgyKTsKKyAgICBfNDYyMy0+YWRkKDQzNik7CisgICAg
XzQ2MjMtPmFkZCgyMjkpOworICAgIF80NjIzLT5hZGQoMTI2KTsKKyAgICBfNDYyMy0+YWRkKDI4
Nyk7CisgICAgXzQ2MjMtPmFkZCgzNjcpOworICAgIF80NjIzLT5hZGQoNDMyKTsKKyAgICBfNDYy
My0+YWRkKDE3OSk7CisgICAgXzQ2MjMtPmFkZCg0NSk7CisgICAgXzQ2MjMtPmFkZCgyNTApOwor
ICAgIF80NjIzLT5hZGQoMzcyKTsKKyAgICBfNDYyMy0+YWRkKDExMSk7CisgICAgXzQ2MjMtPmFk
ZCgyNik7CisgICAgXzQ2MjMtPmFkZCg0NDApOworICAgIF80NjIzLT5hZGQoMTY4KTsKKyAgICBf
NDYyMy0+YWRkKDQyOCk7CisgICAgXzQ2MjMtPmFkZCgyKTsKKyAgICBfNDYyMy0+YWRkKDM1OSk7
CisgICAgXzQ2MjMtPmFkZCg0MjQpOworICAgIF80NjIzLT5hZGQoOTgpOworICAgIF80NjIzLT5h
ZGQoNDIwKTsKKyAgICBfNDYyMy0+YWRkKDIwKTsKKyAgICBfNDYyNC0+YWRkKDE4Mik7CisgICAg
XzQ2MjQtPmFkZCg0MzYpOworICAgIF80NjI0LT5hZGQoMjI5KTsKKyAgICBfNDYyNC0+YWRkKDEy
Nik7CisgICAgXzQ2MjQtPmFkZCgyODcpOworICAgIF80NjI0LT5hZGQoMzY3KTsKKyAgICBfNDYy
NC0+YWRkKDQzMik7CisgICAgXzQ2MjQtPmFkZCgxNzkpOworICAgIF80NjI0LT5hZGQoNDUpOwor
ICAgIF80NjI0LT5hZGQoMjUwKTsKKyAgICBfNDYyNC0+YWRkKDM3Mik7CisgICAgXzQ2MjQtPmFk
ZCgxMTEpOworICAgIF80NjI0LT5hZGQoMjYpOworICAgIF80NjI0LT5hZGQoNDQwKTsKKyAgICBf
NDYyNC0+YWRkKDE2OCk7CisgICAgXzQ2MjQtPmFkZCg0MjgpOworICAgIF80NjI0LT5hZGQoMik7
CisgICAgXzQ2MjQtPmFkZCgzNTkpOworICAgIF80NjI0LT5hZGQoNDI0KTsKKyAgICBfNDYyNC0+
YWRkKDk4KTsKKyAgICBfNDYyNC0+YWRkKDQyMCk7CisgICAgXzQ2MjQtPmFkZCgyMCk7CisgICAg
XzQ2MjItPmFkZCgxODIpOworICAgIF80NjIyLT5hZGQoNDM2KTsKKyAgICBfNDYyMi0+YWRkKDIy
OSk7CisgICAgXzQ2MjItPmFkZCgxMjYpOworICAgIF80NjIyLT5hZGQoMjg3KTsKKyAgICBfNDYy
Mi0+YWRkKDM2Nyk7CisgICAgXzQ2MjItPmFkZCgxNzkpOworICAgIF80NjIyLT5hZGQoNDIwKTsK
KyAgICBfNDYyMi0+YWRkKDQ1KTsKKyAgICBfNDYyMi0+YWRkKDI1MCk7CisgICAgXzQ2MjItPmFk
ZCgxMTEpOworICAgIF80NjIyLT5hZGQoMjYpOworICAgIF80NjIyLT5hZGQoNDQwKTsKKyAgICBf
NDYyMi0+YWRkKDE2OCk7CisgICAgXzQ2MjItPmFkZCg0MjgpOworICAgIF80NjIyLT5hZGQoMzU5
KTsKKyAgICBfNDYyMi0+YWRkKDIpOworICAgIF80NjIyLT5hZGQoNDI0KTsKKyAgICBfNDYyMi0+
YWRkKDIwKTsKKyAgICBfNDYyMi0+YWRkKDk4KTsKKyAgICBfNDYyMi0+YWRkKDM3Mik7CisgICAg
XzQ2MjItPmFkZCg0MzIpOworICAgIF80NjE5LT5hZGQoMTgyKTsKKyAgICBfNDYxOS0+YWRkKDQz
Nik7CisgICAgXzQ2MTktPmFkZCgyMjkpOworICAgIF80NjE5LT5hZGQoMTI2KTsKKyAgICBfNDYx
OS0+YWRkKDI4Nyk7CisgICAgXzQ2MTktPmFkZCgzNjcpOworICAgIF80NjE5LT5hZGQoMTc5KTsK
KyAgICBfNDYxOS0+YWRkKDQyMCk7CisgICAgXzQ2MTktPmFkZCg0NSk7CisgICAgXzQ2MTktPmFk
ZCgyNTApOworICAgIF80NjE5LT5hZGQoMTExKTsKKyAgICBfNDYxOS0+YWRkKDI2KTsKKyAgICBf
NDYxOS0+YWRkKDQ0MCk7CisgICAgXzQ2MTktPmFkZCgxNjgpOworICAgIF80NjE5LT5hZGQoNDI4
KTsKKyAgICBfNDYxOS0+YWRkKDM1OSk7CisgICAgXzQ2MTktPmFkZCgyKTsKKyAgICBfNDYxOS0+
YWRkKDQyNCk7CisgICAgXzQ2MTktPmFkZCgyMCk7CisgICAgXzQ2MTktPmFkZCg5OCk7CisgICAg
XzQ2MTktPmFkZCgzNzIpOworICAgIF80NjE5LT5hZGQoNDMyKTsKKyAgICBfNDYyMC0+YWRkKDE4
Mik7CisgICAgXzQ2MjAtPmFkZCg0MzYpOworICAgIF80NjIwLT5hZGQoMjI5KTsKKyAgICBfNDYy
MC0+YWRkKDEyNik7CisgICAgXzQ2MjAtPmFkZCgyODcpOworICAgIF80NjIwLT5hZGQoMzY3KTsK
KyAgICBfNDYyMC0+YWRkKDQzMik7CisgICAgXzQ2MjAtPmFkZCgxNzkpOworICAgIF80NjIwLT5h
ZGQoNDUpOworICAgIF80NjIwLT5hZGQoMjUwKTsKKyAgICBfNDYyMC0+YWRkKDExMSk7CisgICAg
XzQ2MjAtPmFkZCgyNik7CisgICAgXzQ2MjAtPmFkZCg0NDApOworICAgIF80NjIwLT5hZGQoMTY4
KTsKKyAgICBfNDYyMC0+YWRkKDQyOCk7CisgICAgXzQ2MjAtPmFkZCgzNTkpOworICAgIF80NjIw
LT5hZGQoMik7CisgICAgXzQ2MjAtPmFkZCg0MjApOworICAgIF80NjIwLT5hZGQoMjApOworICAg
IF80NjIwLT5hZGQoNDI0KTsKKyAgICBfNDYyMC0+YWRkKDM3Mik7CisgICAgXzQ2MjAtPmFkZCg5
OCk7CisgICAgXzQ2MjAtPmFkZCg3Mik7CisgICAgXzQ2MjAtPmFkZCg0OTcpOworICAgIF80NjIx
LT5hZGQoMTgyKTsKKyAgICBfNDYyMS0+YWRkKDQzNik7CisgICAgXzQ2MjEtPmFkZCgyMjkpOwor
ICAgIF80NjIxLT5hZGQoMTI2KTsKKyAgICBfNDYyMS0+YWRkKDI4Nyk7CisgICAgXzQ2MjEtPmFk
ZCgzNjcpOworICAgIF80NjIxLT5hZGQoNDMyKTsKKyAgICBfNDYyMS0+YWRkKDE3OSk7CisgICAg
XzQ2MjEtPmFkZCg0NSk7CisgICAgXzQ2MjEtPmFkZCgyNTApOworICAgIF80NjIxLT5hZGQoMTEx
KTsKKyAgICBfNDYyMS0+YWRkKDI2KTsKKyAgICBfNDYyMS0+YWRkKDQ0MCk7CisgICAgXzQ2MjEt
PmFkZCgxNjgpOworICAgIF80NjIxLT5hZGQoNDI4KTsKKyAgICBfNDYyMS0+YWRkKDM1OSk7Cisg
ICAgXzQ2MjEtPmFkZCgyKTsKKyAgICBfNDYyMS0+YWRkKDQyMCk7CisgICAgXzQ2MjEtPmFkZCgy
MCk7CisgICAgXzQ2MjEtPmFkZCg0MjQpOworICAgIF80NjIxLT5hZGQoMzcyKTsKKyAgICBfNDYy
MS0+YWRkKDk4KTsKKyAgICBfNDYyMS0+YWRkKDcyKTsKKyAgICBfNDYyMS0+YWRkKDQ5Nyk7Cisg
ICAgXzQ2MjItPmFkZCgxODIpOworICAgIF80NjIyLT5hZGQoNDM2KTsKKyAgICBfNDYyMi0+YWRk
KDIyOSk7CisgICAgXzQ2MjItPmFkZCgxMjYpOworICAgIF80NjIyLT5hZGQoMjg3KTsKKyAgICBf
NDYyMi0+YWRkKDM2Nyk7CisgICAgXzQ2MjItPmFkZCgxNzkpOworICAgIF80NjIyLT5hZGQoNDMy
KTsKKyAgICBfNDYyMi0+YWRkKDQ1KTsKKyAgICBfNDYyMi0+YWRkKDI1MCk7CisgICAgXzQ2MjIt
PmFkZCgxMTEpOworICAgIF80NjIyLT5hZGQoMjYpOworICAgIF80NjIyLT5hZGQoNDQwKTsKKyAg
ICBfNDYyMi0+YWRkKDE2OCk7CisgICAgXzQ2MjItPmFkZCg0MjgpOworICAgIF80NjIyLT5hZGQo
OTgpOworICAgIF80NjIyLT5hZGQoMzU5KTsKKyAgICBfNDYyMi0+YWRkKDIpOworICAgIF80NjIy
LT5hZGQoNDIwKTsKKyAgICBfNDYyMi0+YWRkKDIwKTsKKyAgICBfNDYyMi0+YWRkKDcyKTsKKyAg
ICBfNDYyMi0+YWRkKDQyNCk7CisgICAgXzQ2MjItPmFkZCgzNzIpOworICAgIF80NjIyLT5hZGQo
MTgzKTsKKyAgICBfNDYxOS0+YWRkKDE4Mik7CisgICAgXzQ2MTktPmFkZCg0MzYpOworICAgIF80
NjE5LT5hZGQoMjI5KTsKKyAgICBfNDYxOS0+YWRkKDEyNik7CisgICAgXzQ2MTktPmFkZCgyODcp
OworICAgIF80NjE5LT5hZGQoMzY3KTsKKyAgICBfNDYxOS0+YWRkKDE3OSk7CisgICAgXzQ2MTkt
PmFkZCg0MzIpOworICAgIF80NjE5LT5hZGQoNDUpOworICAgIF80NjE5LT5hZGQoMjUwKTsKKyAg
ICBfNDYxOS0+YWRkKDExMSk7CisgICAgXzQ2MTktPmFkZCgyNik7CisgICAgXzQ2MTktPmFkZCg0
NDApOworICAgIF80NjE5LT5hZGQoMTY4KTsKKyAgICBfNDYxOS0+YWRkKDQyOCk7CisgICAgXzQ2
MTktPmFkZCg5OCk7CisgICAgXzQ2MTktPmFkZCgzNTkpOworICAgIF80NjE5LT5hZGQoMik7Cisg
ICAgXzQ2MTktPmFkZCg0MjApOworICAgIF80NjE5LT5hZGQoMjApOworICAgIF80NjE5LT5hZGQo
NzIpOworICAgIF80NjE5LT5hZGQoNDI0KTsKKyAgICBfNDYxOS0+YWRkKDM3Mik7CisgICAgZGVs
ZXRlIF80NjE5OworICAgIGRlbGV0ZSBfNDYyMDsKKyAgICBkZWxldGUgXzQ2MjE7CisgICAgZGVs
ZXRlIF80NjIyOworICAgIGRlbGV0ZSBfNDYyMzsKKyAgICBkZWxldGUgXzQ2MjQ7CisgICAgZGVs
ZXRlIF80NjI1OworICAgIGRlbGV0ZSBfNDYyNjsKKyAgICBkZWxldGUgXzQ2Mjc7CisgICAgZGVs
ZXRlIF80NjI4OworICAgIGRlbGV0ZSBfNDYyOTsKKyAgICBkZWxldGUgXzQ2MzA7CisgICAgZGVs
ZXRlIF80NjMxOworICAgIGRlbGV0ZSBfNDYzMjsKKyAgICBkZWxldGUgXzQ2MzM7CisgICAgZGVs
ZXRlIF80NjM0OworICAgIGF1dG8qIF80NjM1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MzYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDYzNyA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjM4ID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2MzkgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY0MCA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjQx
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ2NDIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDY0MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NjQ0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ2NDUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDY0NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjQ3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NDggPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY0OSA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjUwID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NTEgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY1MiA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
NjUzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ2NTQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDY1NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NjU2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ2NTcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY1OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjU5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NjAgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY2MSA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjYyID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NjMgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY2
NCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80NjY1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ2NjYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDY2NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NjY4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ2NjkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY3MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjcxID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NzIgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY3MyA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njc0ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2NzUg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDY3NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80Njc3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ2NzggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDY3OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NjgwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2ODEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY4MiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NjgzID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2ODQgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY4NSA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njg2ID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2
ODcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDY4OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80Njg5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ2OTAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDY5MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NjkyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2OTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY5NCA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njk1ID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ2OTYgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDY5NyA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Njk4
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ2OTkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDcwMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NzAxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ3MDIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDcwMyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzA0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MDUgPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcwNiA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzA3ID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MDggPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcwOSA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
NzEwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ3MTEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDcxMiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NzEzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ3MTQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcxNSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzE2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgXzQ3MTQtPmFkZCgxODApOworICAgIF80NzE0LT5h
ZGQoMTkyKTsKKyAgICBfNDcxNC0+YWRkKDIwNCk7CisgICAgXzQ3MTQtPmFkZCgyMTYpOworICAg
IF80NzE0LT5hZGQoMjI4KTsKKyAgICBfNDcxNC0+YWRkKDI0MCk7CisgICAgXzQ3MTQtPmFkZCg5
NzQpOworICAgIF80NzE0LT5hZGQoMTYxMyk7CisgICAgXzQ3MTQtPmFkZCgxNDIpOworICAgIF80
NzE0LT5hZGQoMTQ5KTsKKyAgICBfNDcxNC0+YWRkKDE1Nik7CisgICAgXzQ3MTUtPmFkZCgxODAp
OworICAgIF80NzE1LT5hZGQoMTkyKTsKKyAgICBfNDcxNS0+YWRkKDIwNCk7CisgICAgXzQ3MTUt
PmFkZCgyMTYpOworICAgIF80NzE1LT5hZGQoMjI4KTsKKyAgICBfNDcxNS0+YWRkKDI0MCk7Cisg
ICAgXzQ3MTUtPmFkZCg5NzQpOworICAgIF80NzE1LT5hZGQoMTYxMyk7CisgICAgXzQ3MTUtPmFk
ZCgxNDIpOworICAgIF80NzE1LT5hZGQoMTQ5KTsKKyAgICBfNDcxNS0+YWRkKDE1Nik7CisgICAg
XzQ3MTMtPmFkZCgyMDQpOworICAgIF80NzEzLT5hZGQoMjE2KTsKKyAgICBfNDcxMy0+YWRkKDE1
Nik7CisgICAgXzQ3MTMtPmFkZCgyMjgpOworICAgIF80NzEzLT5hZGQoMTQyKTsKKyAgICBfNDcx
My0+YWRkKDE5Mik7CisgICAgXzQ3MTMtPmFkZCgxNjEzKTsKKyAgICBfNDcxMy0+YWRkKDE4MCk7
CisgICAgXzQ3MTMtPmFkZCgxNDkpOworICAgIF80NzEzLT5hZGQoMjQwKTsKKyAgICBfNDcxMy0+
YWRkKDk3NCk7CisgICAgXzQ3MTAtPmFkZCgyMDQpOworICAgIF80NzEwLT5hZGQoMjE2KTsKKyAg
ICBfNDcxMC0+YWRkKDE1Nik7CisgICAgXzQ3MTAtPmFkZCgyMjgpOworICAgIF80NzEwLT5hZGQo
MTQyKTsKKyAgICBfNDcxMC0+YWRkKDE5Mik7CisgICAgXzQ3MTAtPmFkZCgxNjEzKTsKKyAgICBf
NDcxMC0+YWRkKDE4MCk7CisgICAgXzQ3MTAtPmFkZCgxNDkpOworICAgIF80NzEwLT5hZGQoMjQw
KTsKKyAgICBfNDcxMC0+YWRkKDk3NCk7CisgICAgXzQ3MTEtPmFkZCgyMDQpOworICAgIF80NzEx
LT5hZGQoMjE2KTsKKyAgICBfNDcxMS0+YWRkKDIyOCk7CisgICAgXzQ3MTEtPmFkZCgyNDApOwor
ICAgIF80NzExLT5hZGQoMTQyKTsKKyAgICBfNDcxMS0+YWRkKDE5Mik7CisgICAgXzQ3MTEtPmFk
ZCgxNjEzKTsKKyAgICBfNDcxMS0+YWRkKDE4MCk7CisgICAgXzQ3MTEtPmFkZCgxNDkpOworICAg
IF80NzExLT5hZGQoMTU2KTsKKyAgICBfNDcxMS0+YWRkKDk3NCk7CisgICAgXzQ3MTEtPmFkZCgx
NjcpOworICAgIF80NzExLT5hZGQoMTEyMSk7CisgICAgXzQ3MTEtPmFkZCgyNTgzKTsKKyAgICBf
NDcxMS0+YWRkKDEwNCk7CisgICAgXzQ3MTEtPmFkZCgxNTIwKTsKKyAgICBfNDcxMS0+YWRkKDI3
NzkpOworICAgIF80NzEyLT5hZGQoMjA0KTsKKyAgICBfNDcxMi0+YWRkKDIxNik7CisgICAgXzQ3
MTItPmFkZCgyMjgpOworICAgIF80NzEyLT5hZGQoMjQwKTsKKyAgICBfNDcxMi0+YWRkKDE0Mik7
CisgICAgXzQ3MTItPmFkZCgxOTIpOworICAgIF80NzEyLT5hZGQoMTYxMyk7CisgICAgXzQ3MTIt
PmFkZCgxODApOworICAgIF80NzEyLT5hZGQoMTQ5KTsKKyAgICBfNDcxMi0+YWRkKDE1Nik7Cisg
ICAgXzQ3MTItPmFkZCg5NzQpOworICAgIF80NzEyLT5hZGQoMTY3KTsKKyAgICBfNDcxMi0+YWRk
KDExMjEpOworICAgIF80NzEyLT5hZGQoMjU4Myk7CisgICAgXzQ3MTItPmFkZCgxMDQpOworICAg
IF80NzEyLT5hZGQoMTUyMCk7CisgICAgXzQ3MTItPmFkZCgyNzc5KTsKKyAgICBfNDcxMy0+YWRk
KDIwNCk7CisgICAgXzQ3MTMtPmFkZCgxMTIxKTsKKyAgICBfNDcxMy0+YWRkKDk3NCk7CisgICAg
XzQ3MTMtPmFkZCgyMjgpOworICAgIF80NzEzLT5hZGQoMjQwKTsKKyAgICBfNDcxMy0+YWRkKDE0
Mik7CisgICAgXzQ3MTMtPmFkZCgxMDQpOworICAgIF80NzEzLT5hZGQoMTkyKTsKKyAgICBfNDcx
My0+YWRkKDE2MTMpOworICAgIF80NzEzLT5hZGQoMTgwKTsKKyAgICBfNDcxMy0+YWRkKDE2Nyk7
CisgICAgXzQ3MTMtPmFkZCgxNTIwKTsKKyAgICBfNDcxMy0+YWRkKDIxNik7CisgICAgXzQ3MTMt
PmFkZCgyNTgzKTsKKyAgICBfNDcxMy0+YWRkKDE0OSk7CisgICAgXzQ3MTMtPmFkZCgxNTYpOwor
ICAgIF80NzEzLT5hZGQoMjA2Nyk7CisgICAgXzQ3MTAtPmFkZCgyMDQpOworICAgIF80NzEwLT5h
ZGQoMTEyMSk7CisgICAgXzQ3MTAtPmFkZCg5NzQpOworICAgIF80NzEwLT5hZGQoMjI4KTsKKyAg
ICBfNDcxMC0+YWRkKDI0MCk7CisgICAgXzQ3MTAtPmFkZCgxNDIpOworICAgIF80NzEwLT5hZGQo
MTA0KTsKKyAgICBfNDcxMC0+YWRkKDE5Mik7CisgICAgXzQ3MTAtPmFkZCgxNjEzKTsKKyAgICBf
NDcxMC0+YWRkKDE4MCk7CisgICAgXzQ3MTAtPmFkZCgxNjcpOworICAgIF80NzEwLT5hZGQoMTUy
MCk7CisgICAgXzQ3MTAtPmFkZCgyMTYpOworICAgIF80NzEwLT5hZGQoMjU4Myk7CisgICAgXzQ3
MTAtPmFkZCgxNDkpOworICAgIF80NzEwLT5hZGQoMTU2KTsKKyAgICBfNDcxMC0+YWRkKDE1MTIp
OworICAgIF80NzA5LT5hZGQoMjA0KTsKKyAgICBfNDcwOS0+YWRkKDExMjEpOworICAgIF80NzA5
LT5hZGQoMjI4KTsKKyAgICBfNDcwOS0+YWRkKDE0Mik7CisgICAgXzQ3MDktPmFkZCgxMDQpOwor
ICAgIF80NzA5LT5hZGQoMTkyKTsKKyAgICBfNDcwOS0+YWRkKDE2MTMpOworICAgIF80NzA5LT5h
ZGQoMTgwKTsKKyAgICBfNDcwOS0+YWRkKDE1MTIpOworICAgIF80NzA5LT5hZGQoMTY3KTsKKyAg
ICBfNDcwOS0+YWRkKDE1MjApOworICAgIF80NzA5LT5hZGQoMjE2KTsKKyAgICBfNDcwOS0+YWRk
KDE1Nik7CisgICAgXzQ3MDktPmFkZCgyNTgzKTsKKyAgICBfNDcwOS0+YWRkKDE0OSk7CisgICAg
XzQ3MDktPmFkZCgyNDApOworICAgIF80NzA5LT5hZGQoOTc0KTsKKyAgICBfNDcwOS0+YWRkKDE3
MDgpOworICAgIF80NzA4LT5hZGQoMjA0KTsKKyAgICBfNDcwOC0+YWRkKDExMjEpOworICAgIF80
NzA4LT5hZGQoMjI4KTsKKyAgICBfNDcwOC0+YWRkKDE0Mik7CisgICAgXzQ3MDgtPmFkZCgxMDQp
OworICAgIF80NzA4LT5hZGQoMTkyKTsKKyAgICBfNDcwOC0+YWRkKDE2MTMpOworICAgIF80NzA4
LT5hZGQoMTgwKTsKKyAgICBfNDcwOC0+YWRkKDE1MTIpOworICAgIF80NzA4LT5hZGQoMTY3KTsK
KyAgICBfNDcwOC0+YWRkKDE1MjApOworICAgIF80NzA4LT5hZGQoMjE2KTsKKyAgICBfNDcwOC0+
YWRkKDE1Nik7CisgICAgXzQ3MDgtPmFkZCgyNTgzKTsKKyAgICBfNDcwOC0+YWRkKDE0OSk7Cisg
ICAgXzQ3MDgtPmFkZCgyNDApOworICAgIF80NzA4LT5hZGQoOTc0KTsKKyAgICBfNDcwOC0+YWRk
KDE3MDgpOworICAgIF80NzA0LT5hZGQoMjA0KTsKKyAgICBfNDcwNC0+YWRkKDExMjEpOworICAg
IF80NzA0LT5hZGQoMjI4KTsKKyAgICBfNDcwNC0+YWRkKDE0Mik7CisgICAgXzQ3MDQtPmFkZCgx
MDQpOworICAgIF80NzA0LT5hZGQoMTkyKTsKKyAgICBfNDcwNC0+YWRkKDE2MTMpOworICAgIF80
NzA0LT5hZGQoMTgwKTsKKyAgICBfNDcwNC0+YWRkKDE1MTIpOworICAgIF80NzA0LT5hZGQoMTY3
KTsKKyAgICBfNDcwNC0+YWRkKDE1MjApOworICAgIF80NzA0LT5hZGQoMjE2KTsKKyAgICBfNDcw
NC0+YWRkKDE1Nik7CisgICAgXzQ3MDQtPmFkZCgyNTgzKTsKKyAgICBfNDcwNC0+YWRkKDE3MDgp
OworICAgIF80NzA0LT5hZGQoMTQ5KTsKKyAgICBfNDcwNC0+YWRkKDI0MCk7CisgICAgXzQ3MDQt
PmFkZCg5NzQpOworICAgIF80NzA3LT5hZGQoMjA0KTsKKyAgICBfNDcwNy0+YWRkKDExMjEpOwor
ICAgIF80NzA3LT5hZGQoMjI4KTsKKyAgICBfNDcwNy0+YWRkKDE0Mik7CisgICAgXzQ3MDctPmFk
ZCgxMDQpOworICAgIF80NzA3LT5hZGQoMTkyKTsKKyAgICBfNDcwNy0+YWRkKDE2MTMpOworICAg
IF80NzA3LT5hZGQoMTgwKTsKKyAgICBfNDcwNy0+YWRkKDE1MTIpOworICAgIF80NzA3LT5hZGQo
MTY3KTsKKyAgICBfNDcwNy0+YWRkKDE1MjApOworICAgIF80NzA3LT5hZGQoMjE2KTsKKyAgICBf
NDcwNy0+YWRkKDE1Nik7CisgICAgXzQ3MDctPmFkZCgyNTgzKTsKKyAgICBfNDcwNy0+YWRkKDE3
MDgpOworICAgIF80NzA3LT5hZGQoMTQ5KTsKKyAgICBfNDcwNy0+YWRkKDI0MCk7CisgICAgXzQ3
MDctPmFkZCg5NzQpOworICAgIF80NzA2LT5hZGQoMjA0KTsKKyAgICBfNDcwNi0+YWRkKDExMjEp
OworICAgIF80NzA2LT5hZGQoMjI4KTsKKyAgICBfNDcwNi0+YWRkKDI0MCk7CisgICAgXzQ3MDYt
PmFkZCgxNDIpOworICAgIF80NzA2LT5hZGQoMTA0KTsKKyAgICBfNDcwNi0+YWRkKDE5Mik7Cisg
ICAgXzQ3MDYtPmFkZCgxNjEzKTsKKyAgICBfNDcwNi0+YWRkKDE4MCk7CisgICAgXzQ3MDYtPmFk
ZCgxNTEyKTsKKyAgICBfNDcwNi0+YWRkKDE2Nyk7CisgICAgXzQ3MDYtPmFkZCgxNTIwKTsKKyAg
ICBfNDcwNi0+YWRkKDIxNik7CisgICAgXzQ3MDYtPmFkZCgyNTgzKTsKKyAgICBfNDcwNi0+YWRk
KDE3MDgpOworICAgIF80NzA2LT5hZGQoMTQ5KTsKKyAgICBfNDcwNi0+YWRkKDE1Nik7CisgICAg
XzQ3MDYtPmFkZCg5NzQpOworICAgIF80NzA2LT5hZGQoMjQzKTsKKyAgICBfNDcwNi0+YWRkKDM1
Nik7CisgICAgXzQ3MDYtPmFkZCgyNDgpOworICAgIF80NzA2LT5hZGQoMzA5KTsKKyAgICBfNDcw
Ni0+YWRkKDM0NSk7CisgICAgXzQ3MDYtPmFkZCgzMzgpOworICAgIF80NzA2LT5hZGQoMjc3OCk7
CisgICAgXzQ3MDUtPmFkZCgyMDQpOworICAgIF80NzA1LT5hZGQoMTEyMSk7CisgICAgXzQ3MDUt
PmFkZCgyMjgpOworICAgIF80NzA1LT5hZGQoMjQwKTsKKyAgICBfNDcwNS0+YWRkKDE0Mik7Cisg
ICAgXzQ3MDUtPmFkZCgxMDQpOworICAgIF80NzA1LT5hZGQoMTkyKTsKKyAgICBfNDcwNS0+YWRk
KDE2MTMpOworICAgIF80NzA1LT5hZGQoMTgwKTsKKyAgICBfNDcwNS0+YWRkKDE1MTIpOworICAg
IF80NzA1LT5hZGQoMTY3KTsKKyAgICBfNDcwNS0+YWRkKDE1MjApOworICAgIF80NzA1LT5hZGQo
MjE2KTsKKyAgICBfNDcwNS0+YWRkKDI1ODMpOworICAgIF80NzA1LT5hZGQoMTcwOCk7CisgICAg
XzQ3MDUtPmFkZCgxNDkpOworICAgIF80NzA1LT5hZGQoMTU2KTsKKyAgICBfNDcwNS0+YWRkKDk3
NCk7CisgICAgXzQ3MDUtPmFkZCgyNDMpOworICAgIF80NzA1LT5hZGQoMzU2KTsKKyAgICBfNDcw
NS0+YWRkKDI0OCk7CisgICAgXzQ3MDUtPmFkZCgzMDkpOworICAgIF80NzA1LT5hZGQoMzQ1KTsK
KyAgICBfNDcwNS0+YWRkKDMzOCk7CisgICAgXzQ3MDUtPmFkZCgyNzc4KTsKKyAgICBfNDcwNC0+
YWRkKDIwNCk7CisgICAgXzQ3MDQtPmFkZCgxMTIxKTsKKyAgICBfNDcwNC0+YWRkKDIyOCk7Cisg
ICAgXzQ3MDQtPmFkZCgxNDIpOworICAgIF80NzA0LT5hZGQoMTA0KTsKKyAgICBfNDcwNC0+YWRk
KDMwOSk7CisgICAgXzQ3MDQtPmFkZCgxOTIpOworICAgIF80NzA0LT5hZGQoMTYxMyk7CisgICAg
XzQ3MDQtPmFkZCgxODApOworICAgIF80NzA0LT5hZGQoMTUxMik7CisgICAgXzQ3MDQtPmFkZCgz
NDUpOworICAgIF80NzA0LT5hZGQoOTc0KTsKKyAgICBfNDcwNC0+YWRkKDE2Nyk7CisgICAgXzQ3
MDQtPmFkZCgzMzgpOworICAgIF80NzA0LT5hZGQoMTUyMCk7CisgICAgXzQ3MDQtPmFkZCgyMTYp
OworICAgIF80NzA0LT5hZGQoMTU2KTsKKyAgICBfNDcwNC0+YWRkKDI0OCk7CisgICAgXzQ3MDQt
PmFkZCgyNDMpOworICAgIF80NzA0LT5hZGQoMjU4Myk7CisgICAgXzQ3MDQtPmFkZCgxNzA4KTsK
KyAgICBfNDcwNC0+YWRkKDM1Nik7CisgICAgXzQ3MDQtPmFkZCgxNDkpOworICAgIF80NzA0LT5h
ZGQoMjQwKTsKKyAgICBfNDcwNC0+YWRkKDE4ODQpOworICAgIF80NzA3LT5hZGQoMjA0KTsKKyAg
ICBfNDcwNy0+YWRkKDExMjEpOworICAgIF80NzA3LT5hZGQoMjI4KTsKKyAgICBfNDcwNy0+YWRk
KDE0Mik7CisgICAgXzQ3MDctPmFkZCgxMDQpOworICAgIF80NzA3LT5hZGQoMzA5KTsKKyAgICBf
NDcwNy0+YWRkKDE5Mik7CisgICAgXzQ3MDctPmFkZCgxNjEzKTsKKyAgICBfNDcwNy0+YWRkKDE4
MCk7CisgICAgXzQ3MDctPmFkZCgxNTEyKTsKKyAgICBfNDcwNy0+YWRkKDM0NSk7CisgICAgXzQ3
MDctPmFkZCg5NzQpOworICAgIF80NzA3LT5hZGQoMTY3KTsKKyAgICBfNDcwNy0+YWRkKDMzOCk7
CisgICAgXzQ3MDctPmFkZCgxNTIwKTsKKyAgICBfNDcwNy0+YWRkKDIxNik7CisgICAgXzQ3MDct
PmFkZCgxNTYpOworICAgIF80NzA3LT5hZGQoMjQ4KTsKKyAgICBfNDcwNy0+YWRkKDI0Myk7Cisg
ICAgXzQ3MDctPmFkZCgyNTgzKTsKKyAgICBfNDcwNy0+YWRkKDE3MDgpOworICAgIF80NzA3LT5h
ZGQoMzU2KTsKKyAgICBfNDcwNy0+YWRkKDE0OSk7CisgICAgXzQ3MDctPmFkZCgyNDApOworICAg
IF80NzA3LT5hZGQoMTk3Mik7CisgICAgXzQ3MDMtPmFkZCgyMDQpOworICAgIF80NzAzLT5hZGQo
MTEyMSk7CisgICAgXzQ3MDMtPmFkZCgyNDMpOworICAgIF80NzAzLT5hZGQoMjI4KTsKKyAgICBf
NDcwMy0+YWRkKDI0MCk7CisgICAgXzQ3MDMtPmFkZCgxNDIpOworICAgIF80NzAzLT5hZGQoMTA0
KTsKKyAgICBfNDcwMy0+YWRkKDMwOSk7CisgICAgXzQ3MDMtPmFkZCgxOTIpOworICAgIF80NzAz
LT5hZGQoMTYxMyk7CisgICAgXzQ3MDMtPmFkZCgxODApOworICAgIF80NzAzLT5hZGQoOTc0KTsK
KyAgICBfNDcwMy0+YWRkKDE1MTIpOworICAgIF80NzAzLT5hZGQoMzQ1KTsKKyAgICBfNDcwMy0+
YWRkKDE2Nyk7CisgICAgXzQ3MDMtPmFkZCgzMzgpOworICAgIF80NzAzLT5hZGQoMTUyMCk7Cisg
ICAgXzQ3MDMtPmFkZCgyMTYpOworICAgIF80NzAzLT5hZGQoMjQ4KTsKKyAgICBfNDcwMy0+YWRk
KDI1ODMpOworICAgIF80NzAzLT5hZGQoMTcwOCk7CisgICAgXzQ3MDMtPmFkZCgzNTYpOworICAg
IF80NzAzLT5hZGQoMTQ5KTsKKyAgICBfNDcwMy0+YWRkKDE1Nik7CisgICAgXzQ3MDItPmFkZCgy
MDQpOworICAgIF80NzAyLT5hZGQoMTEyMSk7CisgICAgXzQ3MDItPmFkZCgyNDMpOworICAgIF80
NzAyLT5hZGQoMjI4KTsKKyAgICBfNDcwMi0+YWRkKDI0MCk7CisgICAgXzQ3MDItPmFkZCgxNDIp
OworICAgIF80NzAyLT5hZGQoMTA0KTsKKyAgICBfNDcwMi0+YWRkKDMwOSk7CisgICAgXzQ3MDIt
PmFkZCgxOTIpOworICAgIF80NzAyLT5hZGQoMTYxMyk7CisgICAgXzQ3MDItPmFkZCgxODApOwor
ICAgIF80NzAyLT5hZGQoOTc0KTsKKyAgICBfNDcwMi0+YWRkKDE1MTIpOworICAgIF80NzAyLT5h
ZGQoMzQ1KTsKKyAgICBfNDcwMi0+YWRkKDE2Nyk7CisgICAgXzQ3MDItPmFkZCgzMzgpOworICAg
IF80NzAyLT5hZGQoMTUyMCk7CisgICAgXzQ3MDItPmFkZCgyMTYpOworICAgIF80NzAyLT5hZGQo
MjQ4KTsKKyAgICBfNDcwMi0+YWRkKDI1ODMpOworICAgIF80NzAyLT5hZGQoMTcwOCk7CisgICAg
XzQ3MDItPmFkZCgzNTYpOworICAgIF80NzAyLT5hZGQoMTQ5KTsKKyAgICBfNDcwMi0+YWRkKDE1
Nik7CisgICAgXzQ2OTItPmFkZCgyMDQpOworICAgIF80NjkyLT5hZGQoMTEyMSk7CisgICAgXzQ2
OTItPmFkZCgyMjgpOworICAgIF80NjkyLT5hZGQoMTQyKTsKKyAgICBfNDY5Mi0+YWRkKDEwNCk7
CisgICAgXzQ2OTItPmFkZCgzMDkpOworICAgIF80NjkyLT5hZGQoMTkyKTsKKyAgICBfNDY5Mi0+
YWRkKDE2MTMpOworICAgIF80NjkyLT5hZGQoMTgwKTsKKyAgICBfNDY5Mi0+YWRkKDE1MTIpOwor
ICAgIF80NjkyLT5hZGQoMzQ1KTsKKyAgICBfNDY5Mi0+YWRkKDE2Nyk7CisgICAgXzQ2OTItPmFk
ZCgzMzgpOworICAgIF80NjkyLT5hZGQoMTUyMCk7CisgICAgXzQ2OTItPmFkZCgyMTYpOworICAg
IF80NjkyLT5hZGQoMTU2KTsKKyAgICBfNDY5Mi0+YWRkKDI0Myk7CisgICAgXzQ2OTItPmFkZCgy
NTgzKTsKKyAgICBfNDY5Mi0+YWRkKDI0OCk7CisgICAgXzQ2OTItPmFkZCgzNTYpOworICAgIF80
NjkyLT5hZGQoMTQ5KTsKKyAgICBfNDY5Mi0+YWRkKDI0MCk7CisgICAgXzQ2OTItPmFkZCgxNzA4
KTsKKyAgICBfNDY5Mi0+YWRkKDk3NCk7CisgICAgXzQ3MDEtPmFkZCgyMDQpOworICAgIF80NzAx
LT5hZGQoMTEyMSk7CisgICAgXzQ3MDEtPmFkZCgyMjgpOworICAgIF80NzAxLT5hZGQoMTQyKTsK
KyAgICBfNDcwMS0+YWRkKDEwNCk7CisgICAgXzQ3MDEtPmFkZCgzMDkpOworICAgIF80NzAxLT5h
ZGQoMTkyKTsKKyAgICBfNDcwMS0+YWRkKDE2MTMpOworICAgIF80NzAxLT5hZGQoMTgwKTsKKyAg
ICBfNDcwMS0+YWRkKDE1MTIpOworICAgIF80NzAxLT5hZGQoMzQ1KTsKKyAgICBfNDcwMS0+YWRk
KDE2Nyk7CisgICAgXzQ3MDEtPmFkZCgzMzgpOworICAgIF80NzAxLT5hZGQoMTUyMCk7CisgICAg
XzQ3MDEtPmFkZCgyMTYpOworICAgIF80NzAxLT5hZGQoMTU2KTsKKyAgICBfNDcwMS0+YWRkKDI0
Myk7CisgICAgXzQ3MDEtPmFkZCgyNTgzKTsKKyAgICBfNDcwMS0+YWRkKDI0OCk7CisgICAgXzQ3
MDEtPmFkZCgzNTYpOworICAgIF80NzAxLT5hZGQoMTQ5KTsKKyAgICBfNDcwMS0+YWRkKDI0MCk7
CisgICAgXzQ3MDEtPmFkZCgxNzA4KTsKKyAgICBfNDcwMS0+YWRkKDk3NCk7CisgICAgXzQ3MDAt
PmFkZCgyMDQpOworICAgIF80NzAwLT5hZGQoMTEyMSk7CisgICAgXzQ3MDAtPmFkZCgyMjgpOwor
ICAgIF80NzAwLT5hZGQoMjQwKTsKKyAgICBfNDcwMC0+YWRkKDE0Mik7CisgICAgXzQ3MDAtPmFk
ZCgxMDQpOworICAgIF80NzAwLT5hZGQoMzA5KTsKKyAgICBfNDcwMC0+YWRkKDE5Mik7CisgICAg
XzQ3MDAtPmFkZCgxNjEzKTsKKyAgICBfNDcwMC0+YWRkKDE4MCk7CisgICAgXzQ3MDAtPmFkZCgx
NTEyKTsKKyAgICBfNDcwMC0+YWRkKDM0NSk7CisgICAgXzQ3MDAtPmFkZCgxNjcpOworICAgIF80
NzAwLT5hZGQoMzM4KTsKKyAgICBfNDcwMC0+YWRkKDE1MjApOworICAgIF80NzAwLT5hZGQoMjE2
KTsKKyAgICBfNDcwMC0+YWRkKDI0Myk7CisgICAgXzQ3MDAtPmFkZCgyNTgzKTsKKyAgICBfNDcw
MC0+YWRkKDI0OCk7CisgICAgXzQ3MDAtPmFkZCgzNTYpOworICAgIF80NzAwLT5hZGQoMTQ5KTsK
KyAgICBfNDcwMC0+YWRkKDE1Nik7CisgICAgXzQ3MDAtPmFkZCgxNzA4KTsKKyAgICBfNDcwMC0+
YWRkKDk3NCk7CisgICAgXzQ3MDAtPmFkZCgyMzgwKTsKKyAgICBfNDcwMC0+YWRkKDE3NjUpOwor
ICAgIF80NzAwLT5hZGQoMik7CisgICAgXzQ2OTktPmFkZCgyMDQpOworICAgIF80Njk5LT5hZGQo
MTEyMSk7CisgICAgXzQ2OTktPmFkZCgyMjgpOworICAgIF80Njk5LT5hZGQoMjQwKTsKKyAgICBf
NDY5OS0+YWRkKDE0Mik7CisgICAgXzQ2OTktPmFkZCgxMDQpOworICAgIF80Njk5LT5hZGQoMzA5
KTsKKyAgICBfNDY5OS0+YWRkKDE5Mik7CisgICAgXzQ2OTktPmFkZCgxNjEzKTsKKyAgICBfNDY5
OS0+YWRkKDE4MCk7CisgICAgXzQ2OTktPmFkZCgxNTEyKTsKKyAgICBfNDY5OS0+YWRkKDM0NSk7
CisgICAgXzQ2OTktPmFkZCgxNjcpOworICAgIF80Njk5LT5hZGQoMzM4KTsKKyAgICBfNDY5OS0+
YWRkKDE1MjApOworICAgIF80Njk5LT5hZGQoMjE2KTsKKyAgICBfNDY5OS0+YWRkKDI0Myk7Cisg
ICAgXzQ2OTktPmFkZCgyNTgzKTsKKyAgICBfNDY5OS0+YWRkKDI0OCk7CisgICAgXzQ2OTktPmFk
ZCgzNTYpOworICAgIF80Njk5LT5hZGQoMTQ5KTsKKyAgICBfNDY5OS0+YWRkKDE1Nik7CisgICAg
XzQ2OTktPmFkZCgxNzA4KTsKKyAgICBfNDY5OS0+YWRkKDk3NCk7CisgICAgXzQ2OTktPmFkZCgy
MzgwKTsKKyAgICBfNDY5OS0+YWRkKDE3NjUpOworICAgIF80Njk5LT5hZGQoMik7CisgICAgXzQ2
OTUtPmFkZCgyMDQpOworICAgIF80Njk1LT5hZGQoMTEyMSk7CisgICAgXzQ2OTUtPmFkZCgyMjgp
OworICAgIF80Njk1LT5hZGQoMTQyKTsKKyAgICBfNDY5NS0+YWRkKDEwNCk7CisgICAgXzQ2OTUt
PmFkZCgzMDkpOworICAgIF80Njk1LT5hZGQoMTkyKTsKKyAgICBfNDY5NS0+YWRkKDE2MTMpOwor
ICAgIF80Njk1LT5hZGQoMTgwKTsKKyAgICBfNDY5NS0+YWRkKDE1MTIpOworICAgIF80Njk1LT5h
ZGQoMzQ1KTsKKyAgICBfNDY5NS0+YWRkKDE2Nyk7CisgICAgXzQ2OTUtPmFkZCgzMzgpOworICAg
IF80Njk1LT5hZGQoMTUyMCk7CisgICAgXzQ2OTUtPmFkZCgyMTYpOworICAgIF80Njk1LT5hZGQo
MTU2KTsKKyAgICBfNDY5NS0+YWRkKDIpOworICAgIF80Njk1LT5hZGQoMjQzKTsKKyAgICBfNDY5
NS0+YWRkKDIzODApOworICAgIF80Njk1LT5hZGQoMjU4Myk7CisgICAgXzQ2OTUtPmFkZCgyNDgp
OworICAgIF80Njk1LT5hZGQoMzU2KTsKKyAgICBfNDY5NS0+YWRkKDE0OSk7CisgICAgXzQ2OTUt
PmFkZCgyNDApOworICAgIF80Njk1LT5hZGQoMTcwOCk7CisgICAgXzQ2OTUtPmFkZCgxNzY1KTsK
KyAgICBfNDY5NS0+YWRkKDk3NCk7CisgICAgXzQ2OTgtPmFkZCgyMDQpOworICAgIF80Njk4LT5h
ZGQoMTEyMSk7CisgICAgXzQ2OTgtPmFkZCgyMjgpOworICAgIF80Njk4LT5hZGQoMTQyKTsKKyAg
ICBfNDY5OC0+YWRkKDEwNCk7CisgICAgXzQ2OTgtPmFkZCgzMDkpOworICAgIF80Njk4LT5hZGQo
MTkyKTsKKyAgICBfNDY5OC0+YWRkKDE2MTMpOworICAgIF80Njk4LT5hZGQoMTgwKTsKKyAgICBf
NDY5OC0+YWRkKDE1MTIpOworICAgIF80Njk4LT5hZGQoMzQ1KTsKKyAgICBfNDY5OC0+YWRkKDE2
Nyk7CisgICAgXzQ2OTgtPmFkZCgzMzgpOworICAgIF80Njk4LT5hZGQoMTUyMCk7CisgICAgXzQ2
OTgtPmFkZCgyMTYpOworICAgIF80Njk4LT5hZGQoMTU2KTsKKyAgICBfNDY5OC0+YWRkKDIpOwor
ICAgIF80Njk4LT5hZGQoMjQzKTsKKyAgICBfNDY5OC0+YWRkKDIzODApOworICAgIF80Njk4LT5h
ZGQoMjU4Myk7CisgICAgXzQ2OTgtPmFkZCgyNDgpOworICAgIF80Njk4LT5hZGQoMzU2KTsKKyAg
ICBfNDY5OC0+YWRkKDE0OSk7CisgICAgXzQ2OTgtPmFkZCgyNDApOworICAgIF80Njk4LT5hZGQo
MTcwOCk7CisgICAgXzQ2OTgtPmFkZCgxNzY1KTsKKyAgICBfNDY5OC0+YWRkKDk3NCk7CisgICAg
XzQ2OTctPmFkZCgyMDQpOworICAgIF80Njk3LT5hZGQoMTEyMSk7CisgICAgXzQ2OTctPmFkZCgy
NTgzKTsKKyAgICBfNDY5Ny0+YWRkKDIyOCk7CisgICAgXzQ2OTctPmFkZCgyNDApOworICAgIF80
Njk3LT5hZGQoMTQyKTsKKyAgICBfNDY5Ny0+YWRkKDEwNCk7CisgICAgXzQ2OTctPmFkZCgzMDkp
OworICAgIF80Njk3LT5hZGQoMTkyKTsKKyAgICBfNDY5Ny0+YWRkKDE2MTMpOworICAgIF80Njk3
LT5hZGQoMTgwKTsKKyAgICBfNDY5Ny0+YWRkKDE1MTIpOworICAgIF80Njk3LT5hZGQoMzQ1KTsK
KyAgICBfNDY5Ny0+YWRkKDE2Nyk7CisgICAgXzQ2OTctPmFkZCgzMzgpOworICAgIF80Njk3LT5h
ZGQoMTUyMCk7CisgICAgXzQ2OTctPmFkZCgyMTYpOworICAgIF80Njk3LT5hZGQoMjQzKTsKKyAg
ICBfNDY5Ny0+YWRkKDIzODApOworICAgIF80Njk3LT5hZGQoMik7CisgICAgXzQ2OTctPmFkZCgy
NDgpOworICAgIF80Njk3LT5hZGQoMzU2KTsKKyAgICBfNDY5Ny0+YWRkKDE0OSk7CisgICAgXzQ2
OTctPmFkZCgxNTYpOworICAgIF80Njk3LT5hZGQoMTcwOCk7CisgICAgXzQ2OTctPmFkZCgxNzY1
KTsKKyAgICBfNDY5Ny0+YWRkKDk3NCk7CisgICAgXzQ2OTctPmFkZCgxNTE2KTsKKyAgICBfNDY5
Ny0+YWRkKDE3OSk7CisgICAgXzQ2OTctPmFkZCgxNzIzKTsKKyAgICBfNDY5Ny0+YWRkKDI3Nzcp
OworICAgIF80Njk2LT5hZGQoMjA0KTsKKyAgICBfNDY5Ni0+YWRkKDExMjEpOworICAgIF80Njk2
LT5hZGQoMjU4Myk7CisgICAgXzQ2OTYtPmFkZCgyMjgpOworICAgIF80Njk2LT5hZGQoMjQwKTsK
KyAgICBfNDY5Ni0+YWRkKDE0Mik7CisgICAgXzQ2OTYtPmFkZCgxMDQpOworICAgIF80Njk2LT5h
ZGQoMzA5KTsKKyAgICBfNDY5Ni0+YWRkKDE5Mik7CisgICAgXzQ2OTYtPmFkZCgxNjEzKTsKKyAg
ICBfNDY5Ni0+YWRkKDE4MCk7CisgICAgXzQ2OTYtPmFkZCgxNTEyKTsKKyAgICBfNDY5Ni0+YWRk
KDM0NSk7CisgICAgXzQ2OTYtPmFkZCgxNjcpOworICAgIF80Njk2LT5hZGQoMzM4KTsKKyAgICBf
NDY5Ni0+YWRkKDE1MjApOworICAgIF80Njk2LT5hZGQoMjE2KTsKKyAgICBfNDY5Ni0+YWRkKDI0
Myk7CisgICAgXzQ2OTYtPmFkZCgyMzgwKTsKKyAgICBfNDY5Ni0+YWRkKDIpOworICAgIF80Njk2
LT5hZGQoMjQ4KTsKKyAgICBfNDY5Ni0+YWRkKDM1Nik7CisgICAgXzQ2OTYtPmFkZCgxNDkpOwor
ICAgIF80Njk2LT5hZGQoMTU2KTsKKyAgICBfNDY5Ni0+YWRkKDE3MDgpOworICAgIF80Njk2LT5h
ZGQoMTc2NSk7CisgICAgXzQ2OTYtPmFkZCg5NzQpOworICAgIF80Njk2LT5hZGQoMTUxNik7Cisg
ICAgXzQ2OTYtPmFkZCgxNzkpOworICAgIF80Njk2LT5hZGQoMTcyMyk7CisgICAgXzQ2OTYtPmFk
ZCgyNzc3KTsKKyAgICBfNDY5NS0+YWRkKDIwNCk7CisgICAgXzQ2OTUtPmFkZCgxMTIxKTsKKyAg
ICBfNDY5NS0+YWRkKDIyOCk7CisgICAgXzQ2OTUtPmFkZCgxNDIpOworICAgIF80Njk1LT5hZGQo
MTA0KTsKKyAgICBfNDY5NS0+YWRkKDMwOSk7CisgICAgXzQ2OTUtPmFkZCgxOTIpOworICAgIF80
Njk1LT5hZGQoMTYxMyk7CisgICAgXzQ2OTUtPmFkZCgxNTE2KTsKKyAgICBfNDY5NS0+YWRkKDE4
MCk7CisgICAgXzQ2OTUtPmFkZCgxNzkpOworICAgIF80Njk1LT5hZGQoMTUxMik7CisgICAgXzQ2
OTUtPmFkZCgzNDUpOworICAgIF80Njk1LT5hZGQoMTY3KTsKKyAgICBfNDY5NS0+YWRkKDMzOCk7
CisgICAgXzQ2OTUtPmFkZCgxNTIwKTsKKyAgICBfNDY5NS0+YWRkKDIxNik7CisgICAgXzQ2OTUt
PmFkZCgxNTYpOworICAgIF80Njk1LT5hZGQoMTcyMyk7CisgICAgXzQ2OTUtPmFkZCgyKTsKKyAg
ICBfNDY5NS0+YWRkKDI0Myk7CisgICAgXzQ2OTUtPmFkZCgyMzgwKTsKKyAgICBfNDY5NS0+YWRk
KDI1ODMpOworICAgIF80Njk1LT5hZGQoMjQ4KTsKKyAgICBfNDY5NS0+YWRkKDM1Nik7CisgICAg
XzQ2OTUtPmFkZCg5NzQpOworICAgIF80Njk1LT5hZGQoMTQ5KTsKKyAgICBfNDY5NS0+YWRkKDI0
MCk7CisgICAgXzQ2OTUtPmFkZCgxNzA4KTsKKyAgICBfNDY5NS0+YWRkKDE3NjUpOworICAgIF80
Njk4LT5hZGQoMjA0KTsKKyAgICBfNDY5OC0+YWRkKDExMjEpOworICAgIF80Njk4LT5hZGQoMjI4
KTsKKyAgICBfNDY5OC0+YWRkKDE0Mik7CisgICAgXzQ2OTgtPmFkZCgxMDQpOworICAgIF80Njk4
LT5hZGQoMzA5KTsKKyAgICBfNDY5OC0+YWRkKDE5Mik7CisgICAgXzQ2OTgtPmFkZCgxNjEzKTsK
KyAgICBfNDY5OC0+YWRkKDE1MTYpOworICAgIF80Njk4LT5hZGQoMTgwKTsKKyAgICBfNDY5OC0+
YWRkKDE3OSk7CisgICAgXzQ2OTgtPmFkZCgxNTEyKTsKKyAgICBfNDY5OC0+YWRkKDM0NSk7Cisg
ICAgXzQ2OTgtPmFkZCgxNjcpOworICAgIF80Njk4LT5hZGQoMzM4KTsKKyAgICBfNDY5OC0+YWRk
KDE1MjApOworICAgIF80Njk4LT5hZGQoMjE2KTsKKyAgICBfNDY5OC0+YWRkKDE1Nik7CisgICAg
XzQ2OTgtPmFkZCgxNzIzKTsKKyAgICBfNDY5OC0+YWRkKDIpOworICAgIF80Njk4LT5hZGQoMjQz
KTsKKyAgICBfNDY5OC0+YWRkKDIzODApOworICAgIF80Njk4LT5hZGQoMjU4Myk7CisgICAgXzQ2
OTgtPmFkZCgyNDgpOworICAgIF80Njk4LT5hZGQoMzU2KTsKKyAgICBfNDY5OC0+YWRkKDk3NCk7
CisgICAgXzQ2OTgtPmFkZCgxNDkpOworICAgIF80Njk4LT5hZGQoMjQwKTsKKyAgICBfNDY5OC0+
YWRkKDE3MDgpOworICAgIF80Njk4LT5hZGQoMTc2NSk7CisgICAgXzQ2OTgtPmFkZCgxODM3KTsK
KyAgICBfNDY5NC0+YWRkKDIwNCk7CisgICAgXzQ2OTQtPmFkZCgxMTIxKTsKKyAgICBfNDY5NC0+
YWRkKDI1ODMpOworICAgIF80Njk0LT5hZGQoMjI4KTsKKyAgICBfNDY5NC0+YWRkKDI0MCk7Cisg
ICAgXzQ2OTQtPmFkZCgxNDIpOworICAgIF80Njk0LT5hZGQoMTA0KTsKKyAgICBfNDY5NC0+YWRk
KDMwOSk7CisgICAgXzQ2OTQtPmFkZCgxOTIpOworICAgIF80Njk0LT5hZGQoMTYxMyk7CisgICAg
XzQ2OTQtPmFkZCgxNTE2KTsKKyAgICBfNDY5NC0+YWRkKDE4MCk7CisgICAgXzQ2OTQtPmFkZCgx
NzkpOworICAgIF80Njk0LT5hZGQoMTUxMik7CisgICAgXzQ2OTQtPmFkZCgzNDUpOworICAgIF80
Njk0LT5hZGQoMTY3KTsKKyAgICBfNDY5NC0+YWRkKDMzOCk7CisgICAgXzQ2OTQtPmFkZCgxNTIw
KTsKKyAgICBfNDY5NC0+YWRkKDIxNik7CisgICAgXzQ2OTQtPmFkZCg5NjgpOworICAgIF80Njk0
LT5hZGQoMjQzKTsKKyAgICBfNDY5NC0+YWRkKDEwNzUpOworICAgIF80Njk0LT5hZGQoMik7Cisg
ICAgXzQ2OTQtPmFkZCgyNDgpOworICAgIF80Njk0LT5hZGQoMzU2KTsKKyAgICBfNDY5NC0+YWRk
KDE0OSk7CisgICAgXzQ2OTQtPmFkZCgxNTYpOworICAgIF80Njk0LT5hZGQoMTcwOCk7CisgICAg
XzQ2OTQtPmFkZCgxMTQ2KTsKKyAgICBfNDY5NC0+YWRkKDk3NCk7CisgICAgXzQ2OTQtPmFkZCgy
NzMpOworICAgIF80Njk0LT5hZGQoMjc3Nik7CisgICAgXzQ2OTMtPmFkZCgyMDQpOworICAgIF80
NjkzLT5hZGQoMTEyMSk7CisgICAgXzQ2OTMtPmFkZCgyNTgzKTsKKyAgICBfNDY5My0+YWRkKDIy
OCk7CisgICAgXzQ2OTMtPmFkZCgyNDApOworICAgIF80NjkzLT5hZGQoMTQyKTsKKyAgICBfNDY5
My0+YWRkKDEwNCk7CisgICAgXzQ2OTMtPmFkZCgzMDkpOworICAgIF80NjkzLT5hZGQoMTkyKTsK
KyAgICBfNDY5My0+YWRkKDE2MTMpOworICAgIF80NjkzLT5hZGQoMTUxNik7CisgICAgXzQ2OTMt
PmFkZCgxODApOworICAgIF80NjkzLT5hZGQoMTc5KTsKKyAgICBfNDY5My0+YWRkKDE1MTIpOwor
ICAgIF80NjkzLT5hZGQoMzQ1KTsKKyAgICBfNDY5My0+YWRkKDE2Nyk7CisgICAgXzQ2OTMtPmFk
ZCgzMzgpOworICAgIF80NjkzLT5hZGQoMTUyMCk7CisgICAgXzQ2OTMtPmFkZCgyMTYpOworICAg
IF80NjkzLT5hZGQoOTY4KTsKKyAgICBfNDY5My0+YWRkKDI0Myk7CisgICAgXzQ2OTMtPmFkZCgx
MDc1KTsKKyAgICBfNDY5My0+YWRkKDIpOworICAgIF80NjkzLT5hZGQoMjQ4KTsKKyAgICBfNDY5
My0+YWRkKDM1Nik7CisgICAgXzQ2OTMtPmFkZCgxNDkpOworICAgIF80NjkzLT5hZGQoMTU2KTsK
KyAgICBfNDY5My0+YWRkKDE3MDgpOworICAgIF80NjkzLT5hZGQoMTE0Nik7CisgICAgXzQ2OTMt
PmFkZCg5NzQpOworICAgIF80NjkzLT5hZGQoMjczKTsKKyAgICBfNDY5My0+YWRkKDI3NzYpOwor
ICAgIF80NjkyLT5hZGQoMjA0KTsKKyAgICBfNDY5Mi0+YWRkKDE4MCk7CisgICAgXzQ2OTItPmFk
ZCgxMTIxKTsKKyAgICBfNDY5Mi0+YWRkKDE1Nik7CisgICAgXzQ2OTItPmFkZCgxMTQ2KTsKKyAg
ICBfNDY5Mi0+YWRkKDE3OSk7CisgICAgXzQ2OTItPmFkZCgxNTEyKTsKKyAgICBfNDY5Mi0+YWRk
KDE1MjApOworICAgIF80NjkyLT5hZGQoMTA3NSk7CisgICAgXzQ2OTItPmFkZCgxNzA4KTsKKyAg
ICBfNDY5Mi0+YWRkKDk2OCk7CisgICAgXzQ2OTItPmFkZCgxNDkpOworICAgIF80NjkyLT5hZGQo
OTc0KTsKKyAgICBfNDY5Mi0+YWRkKDI3Myk7CisgICAgXzQ2OTItPmFkZCgyNTgzKTsKKyAgICBf
NDY5Mi0+YWRkKDIyOCk7CisgICAgXzQ2OTItPmFkZCgyNDApOworICAgIF80NjkyLT5hZGQoMTQy
KTsKKyAgICBfNDY5Mi0+YWRkKDEwNCk7CisgICAgXzQ2OTItPmFkZCgzMDkpOworICAgIF80Njky
LT5hZGQoMTkyKTsKKyAgICBfNDY5Mi0+YWRkKDE2MTMpOworICAgIF80NjkyLT5hZGQoMzQ1KTsK
KyAgICBfNDY5Mi0+YWRkKDE2Nyk7CisgICAgXzQ2OTItPmFkZCgzMzgpOworICAgIF80NjkyLT5h
ZGQoMjE2KTsKKyAgICBfNDY5Mi0+YWRkKDIpOworICAgIF80NjkyLT5hZGQoMjQzKTsKKyAgICBf
NDY5Mi0+YWRkKDE1MTYpOworICAgIF80NjkyLT5hZGQoMjQ4KTsKKyAgICBfNDY5Mi0+YWRkKDM1
Nik7CisgICAgXzQ3MDEtPmFkZCgyMDQpOworICAgIF80NzAxLT5hZGQoMTgwKTsKKyAgICBfNDcw
MS0+YWRkKDExMjEpOworICAgIF80NzAxLT5hZGQoMTU2KTsKKyAgICBfNDcwMS0+YWRkKDExNDYp
OworICAgIF80NzAxLT5hZGQoMTc5KTsKKyAgICBfNDcwMS0+YWRkKDE1MTIpOworICAgIF80NzAx
LT5hZGQoMTUyMCk7CisgICAgXzQ3MDEtPmFkZCgxMDc1KTsKKyAgICBfNDcwMS0+YWRkKDE3MDgp
OworICAgIF80NzAxLT5hZGQoOTY4KTsKKyAgICBfNDcwMS0+YWRkKDE0OSk7CisgICAgXzQ3MDEt
PmFkZCg5NzQpOworICAgIF80NzAxLT5hZGQoMjczKTsKKyAgICBfNDcwMS0+YWRkKDI1ODMpOwor
ICAgIF80NzAxLT5hZGQoMjI4KTsKKyAgICBfNDcwMS0+YWRkKDI0MCk7CisgICAgXzQ3MDEtPmFk
ZCgxNDIpOworICAgIF80NzAxLT5hZGQoMTA0KTsKKyAgICBfNDcwMS0+YWRkKDMwOSk7CisgICAg
XzQ3MDEtPmFkZCgxOTIpOworICAgIF80NzAxLT5hZGQoMTYxMyk7CisgICAgXzQ3MDEtPmFkZCgz
NDUpOworICAgIF80NzAxLT5hZGQoMTY3KTsKKyAgICBfNDcwMS0+YWRkKDMzOCk7CisgICAgXzQ3
MDEtPmFkZCgyMTYpOworICAgIF80NzAxLT5hZGQoMik7CisgICAgXzQ3MDEtPmFkZCgyNDMpOwor
ICAgIF80NzAxLT5hZGQoMTUxNik7CisgICAgXzQ3MDEtPmFkZCgyNDgpOworICAgIF80NzAxLT5h
ZGQoMzU2KTsKKyAgICBfNDcwMS0+YWRkKDE4NjMpOworICAgIF80NjkxLT5hZGQoMjA0KTsKKyAg
ICBfNDY5MS0+YWRkKDI3Myk7CisgICAgXzQ2OTEtPmFkZCgxMTIxKTsKKyAgICBfNDY5MS0+YWRk
KDExNDYpOworICAgIF80NjkxLT5hZGQoMjI4KTsKKyAgICBfNDY5MS0+YWRkKDI0MCk7CisgICAg
XzQ2OTEtPmFkZCgxNDIpOworICAgIF80NjkxLT5hZGQoMTA0KTsKKyAgICBfNDY5MS0+YWRkKDMw
OSk7CisgICAgXzQ2OTEtPmFkZCgxOTIpOworICAgIF80NjkxLT5hZGQoMTYxMyk7CisgICAgXzQ2
OTEtPmFkZCgxNTE2KTsKKyAgICBfNDY5MS0+YWRkKDE4MCk7CisgICAgXzQ2OTEtPmFkZCgxNzkp
OworICAgIF80NjkxLT5hZGQoMTUxMik7CisgICAgXzQ2OTEtPmFkZCgzNDUpOworICAgIF80Njkx
LT5hZGQoMTY3KTsKKyAgICBfNDY5MS0+YWRkKDMzOCk7CisgICAgXzQ2OTEtPmFkZCgxNTIwKTsK
KyAgICBfNDY5MS0+YWRkKDIxNik7CisgICAgXzQ2OTEtPmFkZCgyKTsKKyAgICBfNDY5MS0+YWRk
KDI0Myk7CisgICAgXzQ2OTEtPmFkZCgxMDc1KTsKKyAgICBfNDY5MS0+YWRkKDI1ODMpOworICAg
IF80NjkxLT5hZGQoMjQ4KTsKKyAgICBfNDY5MS0+YWRkKDM1Nik7CisgICAgXzQ2OTEtPmFkZCg5
NjgpOworICAgIF80NjkxLT5hZGQoMTQ5KTsKKyAgICBfNDY5MS0+YWRkKDE1Nik7CisgICAgXzQ2
OTEtPmFkZCg5NzQpOworICAgIF80NjkwLT5hZGQoMjA0KTsKKyAgICBfNDY5MC0+YWRkKDI3Myk7
CisgICAgXzQ2OTAtPmFkZCgxMTIxKTsKKyAgICBfNDY5MC0+YWRkKDExNDYpOworICAgIF80Njkw
LT5hZGQoMjI4KTsKKyAgICBfNDY5MC0+YWRkKDI0MCk7CisgICAgXzQ2OTAtPmFkZCgxNDIpOwor
ICAgIF80NjkwLT5hZGQoMTA0KTsKKyAgICBfNDY5MC0+YWRkKDMwOSk7CisgICAgXzQ2OTAtPmFk
ZCgxOTIpOworICAgIF80NjkwLT5hZGQoMTYxMyk7CisgICAgXzQ2OTAtPmFkZCgxNTE2KTsKKyAg
ICBfNDY5MC0+YWRkKDE4MCk7CisgICAgXzQ2OTAtPmFkZCgxNzkpOworICAgIF80NjkwLT5hZGQo
MTUxMik7CisgICAgXzQ2OTAtPmFkZCgzNDUpOworICAgIF80NjkwLT5hZGQoMTY3KTsKKyAgICBf
NDY5MC0+YWRkKDMzOCk7CisgICAgXzQ2OTAtPmFkZCgxNTIwKTsKKyAgICBfNDY5MC0+YWRkKDIx
Nik7CisgICAgXzQ2OTAtPmFkZCgyKTsKKyAgICBfNDY5MC0+YWRkKDI0Myk7CisgICAgXzQ2OTAt
PmFkZCgxMDc1KTsKKyAgICBfNDY5MC0+YWRkKDI1ODMpOworICAgIF80NjkwLT5hZGQoMjQ4KTsK
KyAgICBfNDY5MC0+YWRkKDM1Nik7CisgICAgXzQ2OTAtPmFkZCg5NjgpOworICAgIF80NjkwLT5h
ZGQoMTQ5KTsKKyAgICBfNDY5MC0+YWRkKDE1Nik7CisgICAgXzQ2OTAtPmFkZCg5NzQpOworICAg
IF80Njg2LT5hZGQoMjA0KTsKKyAgICBfNDY4Ni0+YWRkKDI3Myk7CisgICAgXzQ2ODYtPmFkZCgx
MTIxKTsKKyAgICBfNDY4Ni0+YWRkKDI1ODMpOworICAgIF80Njg2LT5hZGQoMjI4KTsKKyAgICBf
NDY4Ni0+YWRkKDE0Mik7CisgICAgXzQ2ODYtPmFkZCgxMDQpOworICAgIF80Njg2LT5hZGQoMzA5
KTsKKyAgICBfNDY4Ni0+YWRkKDE5Mik7CisgICAgXzQ2ODYtPmFkZCgxNjEzKTsKKyAgICBfNDY4
Ni0+YWRkKDE4MCk7CisgICAgXzQ2ODYtPmFkZCgxNzkpOworICAgIF80Njg2LT5hZGQoMTUxMik7
CisgICAgXzQ2ODYtPmFkZCgzNDUpOworICAgIF80Njg2LT5hZGQoMTY3KTsKKyAgICBfNDY4Ni0+
YWRkKDMzOCk7CisgICAgXzQ2ODYtPmFkZCgxNTIwKTsKKyAgICBfNDY4Ni0+YWRkKDIxNik7Cisg
ICAgXzQ2ODYtPmFkZCgxNTYpOworICAgIF80Njg2LT5hZGQoMik7CisgICAgXzQ2ODYtPmFkZCgy
NDMpOworICAgIF80Njg2LT5hZGQoMTA3NSk7CisgICAgXzQ2ODYtPmFkZCgxNTE2KTsKKyAgICBf
NDY4Ni0+YWRkKDI0OCk7CisgICAgXzQ2ODYtPmFkZCgzNTYpOworICAgIF80Njg2LT5hZGQoOTY4
KTsKKyAgICBfNDY4Ni0+YWRkKDE0OSk7CisgICAgXzQ2ODYtPmFkZCgyNDApOworICAgIF80Njg2
LT5hZGQoMTE0Nik7CisgICAgXzQ2ODYtPmFkZCg5NzQpOworICAgIF80Njg5LT5hZGQoMjA0KTsK
KyAgICBfNDY4OS0+YWRkKDI3Myk7CisgICAgXzQ2ODktPmFkZCgxMTIxKTsKKyAgICBfNDY4OS0+
YWRkKDI1ODMpOworICAgIF80Njg5LT5hZGQoMjI4KTsKKyAgICBfNDY4OS0+YWRkKDE0Mik7Cisg
ICAgXzQ2ODktPmFkZCgxMDQpOworICAgIF80Njg5LT5hZGQoMzA5KTsKKyAgICBfNDY4OS0+YWRk
KDE5Mik7CisgICAgXzQ2ODktPmFkZCgxNjEzKTsKKyAgICBfNDY4OS0+YWRkKDE4MCk7CisgICAg
XzQ2ODktPmFkZCgxNzkpOworICAgIF80Njg5LT5hZGQoMTUxMik7CisgICAgXzQ2ODktPmFkZCgz
NDUpOworICAgIF80Njg5LT5hZGQoMTY3KTsKKyAgICBfNDY4OS0+YWRkKDMzOCk7CisgICAgXzQ2
ODktPmFkZCgxNTIwKTsKKyAgICBfNDY4OS0+YWRkKDIxNik7CisgICAgXzQ2ODktPmFkZCgxNTYp
OworICAgIF80Njg5LT5hZGQoMik7CisgICAgXzQ2ODktPmFkZCgyNDMpOworICAgIF80Njg5LT5h
ZGQoMTA3NSk7CisgICAgXzQ2ODktPmFkZCgxNTE2KTsKKyAgICBfNDY4OS0+YWRkKDI0OCk7Cisg
ICAgXzQ2ODktPmFkZCgzNTYpOworICAgIF80Njg5LT5hZGQoOTY4KTsKKyAgICBfNDY4OS0+YWRk
KDE0OSk7CisgICAgXzQ2ODktPmFkZCgyNDApOworICAgIF80Njg5LT5hZGQoMTE0Nik7CisgICAg
XzQ2ODktPmFkZCg5NzQpOworICAgIF80Njg4LT5hZGQoMjA0KTsKKyAgICBfNDY4OC0+YWRkKDI3
Myk7CisgICAgXzQ2ODgtPmFkZCgxMTIxKTsKKyAgICBfNDY4OC0+YWRkKDIyOCk7CisgICAgXzQ2
ODgtPmFkZCgyNDApOworICAgIF80Njg4LT5hZGQoMTQyKTsKKyAgICBfNDY4OC0+YWRkKDEwNCk7
CisgICAgXzQ2ODgtPmFkZCgzMDkpOworICAgIF80Njg4LT5hZGQoMTkyKTsKKyAgICBfNDY4OC0+
YWRkKDE2MTMpOworICAgIF80Njg4LT5hZGQoMTUxNik7CisgICAgXzQ2ODgtPmFkZCgxODApOwor
ICAgIF80Njg4LT5hZGQoMTc5KTsKKyAgICBfNDY4OC0+YWRkKDE1MTIpOworICAgIF80Njg4LT5h
ZGQoMzQ1KTsKKyAgICBfNDY4OC0+YWRkKDE2Nyk7CisgICAgXzQ2ODgtPmFkZCgzMzgpOworICAg
IF80Njg4LT5hZGQoMTUyMCk7CisgICAgXzQ2ODgtPmFkZCgyMTYpOworICAgIF80Njg4LT5hZGQo
Mik7CisgICAgXzQ2ODgtPmFkZCgyNDMpOworICAgIF80Njg4LT5hZGQoMTA3NSk7CisgICAgXzQ2
ODgtPmFkZCgyNTgzKTsKKyAgICBfNDY4OC0+YWRkKDI0OCk7CisgICAgXzQ2ODgtPmFkZCgzNTYp
OworICAgIF80Njg4LT5hZGQoOTY4KTsKKyAgICBfNDY4OC0+YWRkKDE0OSk7CisgICAgXzQ2ODgt
PmFkZCgxNTYpOworICAgIF80Njg4LT5hZGQoMTE0Nik7CisgICAgXzQ2ODgtPmFkZCg5NzQpOwor
ICAgIF80Njg4LT5hZGQoMTU3MSk7CisgICAgXzQ2ODgtPmFkZCgyNzc1KTsKKyAgICBfNDY4Ny0+
YWRkKDIwNCk7CisgICAgXzQ2ODctPmFkZCgyNzMpOworICAgIF80Njg3LT5hZGQoMTEyMSk7Cisg
ICAgXzQ2ODctPmFkZCgyMjgpOworICAgIF80Njg3LT5hZGQoMjQwKTsKKyAgICBfNDY4Ny0+YWRk
KDE0Mik7CisgICAgXzQ2ODctPmFkZCgxMDQpOworICAgIF80Njg3LT5hZGQoMzA5KTsKKyAgICBf
NDY4Ny0+YWRkKDE5Mik7CisgICAgXzQ2ODctPmFkZCgxNjEzKTsKKyAgICBfNDY4Ny0+YWRkKDE1
MTYpOworICAgIF80Njg3LT5hZGQoMTgwKTsKKyAgICBfNDY4Ny0+YWRkKDE3OSk7CisgICAgXzQ2
ODctPmFkZCgxNTEyKTsKKyAgICBfNDY4Ny0+YWRkKDM0NSk7CisgICAgXzQ2ODctPmFkZCgxNjcp
OworICAgIF80Njg3LT5hZGQoMzM4KTsKKyAgICBfNDY4Ny0+YWRkKDE1MjApOworICAgIF80Njg3
LT5hZGQoMjE2KTsKKyAgICBfNDY4Ny0+YWRkKDIpOworICAgIF80Njg3LT5hZGQoMjQzKTsKKyAg
ICBfNDY4Ny0+YWRkKDEwNzUpOworICAgIF80Njg3LT5hZGQoMjU4Myk7CisgICAgXzQ2ODctPmFk
ZCgyNDgpOworICAgIF80Njg3LT5hZGQoMzU2KTsKKyAgICBfNDY4Ny0+YWRkKDk2OCk7CisgICAg
XzQ2ODctPmFkZCgxNDkpOworICAgIF80Njg3LT5hZGQoMTU2KTsKKyAgICBfNDY4Ny0+YWRkKDEx
NDYpOworICAgIF80Njg3LT5hZGQoOTc0KTsKKyAgICBfNDY4Ny0+YWRkKDE1NzEpOworICAgIF80
Njg3LT5hZGQoMjc3NSk7CisgICAgXzQ2ODYtPmFkZCgyMDQpOworICAgIF80Njg2LT5hZGQoMTEy
MSk7CisgICAgXzQ2ODYtPmFkZCgxNTYpOworICAgIF80Njg2LT5hZGQoMTgwKTsKKyAgICBfNDY4
Ni0+YWRkKDE3OSk7CisgICAgXzQ2ODYtPmFkZCgxNTEyKTsKKyAgICBfNDY4Ni0+YWRkKDE1MjAp
OworICAgIF80Njg2LT5hZGQoMTU3MSk7CisgICAgXzQ2ODYtPmFkZCgxMDc1KTsKKyAgICBfNDY4
Ni0+YWRkKDk2OCk7CisgICAgXzQ2ODYtPmFkZCgxNDkpOworICAgIF80Njg2LT5hZGQoMTE0Nik7
CisgICAgXzQ2ODYtPmFkZCg5NzQpOworICAgIF80Njg2LT5hZGQoMjczKTsKKyAgICBfNDY4Ni0+
YWRkKDIyOCk7CisgICAgXzQ2ODYtPmFkZCgyNDApOworICAgIF80Njg2LT5hZGQoMTQyKTsKKyAg
ICBfNDY4Ni0+YWRkKDEwNCk7CisgICAgXzQ2ODYtPmFkZCgzMDkpOworICAgIF80Njg2LT5hZGQo
MTkyKTsKKyAgICBfNDY4Ni0+YWRkKDE2MTMpOworICAgIF80Njg2LT5hZGQoMTUxNik7CisgICAg
XzQ2ODYtPmFkZCgzNDUpOworICAgIF80Njg2LT5hZGQoMTY3KTsKKyAgICBfNDY4Ni0+YWRkKDMz
OCk7CisgICAgXzQ2ODYtPmFkZCgyMTYpOworICAgIF80Njg2LT5hZGQoMik7CisgICAgXzQ2ODYt
PmFkZCgyNDMpOworICAgIF80Njg2LT5hZGQoMjU4Myk7CisgICAgXzQ2ODYtPmFkZCgyNDgpOwor
ICAgIF80Njg2LT5hZGQoMzU2KTsKKyAgICBfNDY4OS0+YWRkKDIwNCk7CisgICAgXzQ2ODktPmFk
ZCgxMTIxKTsKKyAgICBfNDY4OS0+YWRkKDE1Nik7CisgICAgXzQ2ODktPmFkZCgxODApOworICAg
IF80Njg5LT5hZGQoMTc5KTsKKyAgICBfNDY4OS0+YWRkKDE1MTIpOworICAgIF80Njg5LT5hZGQo
MTUyMCk7CisgICAgXzQ2ODktPmFkZCgxNTcxKTsKKyAgICBfNDY4OS0+YWRkKDEwNzUpOworICAg
IF80Njg5LT5hZGQoOTY4KTsKKyAgICBfNDY4OS0+YWRkKDE0OSk7CisgICAgXzQ2ODktPmFkZCgx
MTQ2KTsKKyAgICBfNDY4OS0+YWRkKDk3NCk7CisgICAgXzQ2ODktPmFkZCgyNzMpOworICAgIF80
Njg5LT5hZGQoMjI4KTsKKyAgICBfNDY4OS0+YWRkKDI0MCk7CisgICAgXzQ2ODktPmFkZCgxNDIp
OworICAgIF80Njg5LT5hZGQoMTA0KTsKKyAgICBfNDY4OS0+YWRkKDMwOSk7CisgICAgXzQ2ODkt
PmFkZCgxOTIpOworICAgIF80Njg5LT5hZGQoMTYxMyk7CisgICAgXzQ2ODktPmFkZCgxNTE2KTsK
KyAgICBfNDY4OS0+YWRkKDM0NSk7CisgICAgXzQ2ODktPmFkZCgxNjcpOworICAgIF80Njg5LT5h
ZGQoMzM4KTsKKyAgICBfNDY4OS0+YWRkKDIxNik7CisgICAgXzQ2ODktPmFkZCgyKTsKKyAgICBf
NDY4OS0+YWRkKDI0Myk7CisgICAgXzQ2ODktPmFkZCgyNTgzKTsKKyAgICBfNDY4OS0+YWRkKDI0
OCk7CisgICAgXzQ2ODktPmFkZCgzNTYpOworICAgIF80Njg5LT5hZGQoMTY4NSk7CisgICAgXzQ2
ODQtPmFkZCgyMDQpOworICAgIF80Njg0LT5hZGQoMjczKTsKKyAgICBfNDY4NC0+YWRkKDExNDYp
OworICAgIF80Njg0LT5hZGQoMTEyMSk7CisgICAgXzQ2ODQtPmFkZCgyMjgpOworICAgIF80Njg0
LT5hZGQoMjQwKTsKKyAgICBfNDY4NC0+YWRkKDE0Mik7CisgICAgXzQ2ODQtPmFkZCgxMDQpOwor
ICAgIF80Njg0LT5hZGQoMzA5KTsKKyAgICBfNDY4NC0+YWRkKDE5Mik7CisgICAgXzQ2ODQtPmFk
ZCg5NzQpOworICAgIF80Njg0LT5hZGQoMTA2NCk7CisgICAgXzQ2ODQtPmFkZCgxODApOworICAg
IF80Njg0LT5hZGQoMTc5KTsKKyAgICBfNDY4NC0+YWRkKDE1Nik7CisgICAgXzQ2ODQtPmFkZCgz
NDUpOworICAgIF80Njg0LT5hZGQoMTY3KTsKKyAgICBfNDY4NC0+YWRkKDMzOCk7CisgICAgXzQ2
ODQtPmFkZCgxMTMpOworICAgIF80Njg0LT5hZGQoMjE2KTsKKyAgICBfNDY4NC0+YWRkKDIpOwor
ICAgIF80Njg0LT5hZGQoMjQzKTsKKyAgICBfNDY4NC0+YWRkKDEwNzUpOworICAgIF80Njg0LT5h
ZGQoMjU4Myk7CisgICAgXzQ2ODQtPmFkZCgyNDgpOworICAgIF80Njg0LT5hZGQoMzU2KTsKKyAg
ICBfNDY4NC0+YWRkKDk2OCk7CisgICAgXzQ2ODQtPmFkZCgxNDkpOworICAgIF80Njg1LT5hZGQo
MjA0KTsKKyAgICBfNDY4NS0+YWRkKDI3Myk7CisgICAgXzQ2ODUtPmFkZCgxMTQ2KTsKKyAgICBf
NDY4NS0+YWRkKDExMjEpOworICAgIF80Njg1LT5hZGQoMjI4KTsKKyAgICBfNDY4NS0+YWRkKDI0
MCk7CisgICAgXzQ2ODUtPmFkZCgxNDIpOworICAgIF80Njg1LT5hZGQoMTA0KTsKKyAgICBfNDY4
NS0+YWRkKDMwOSk7CisgICAgXzQ2ODUtPmFkZCgxOTIpOworICAgIF80Njg1LT5hZGQoOTc0KTsK
KyAgICBfNDY4NS0+YWRkKDEwNjQpOworICAgIF80Njg1LT5hZGQoMTgwKTsKKyAgICBfNDY4NS0+
YWRkKDE3OSk7CisgICAgXzQ2ODUtPmFkZCgxNTYpOworICAgIF80Njg1LT5hZGQoMzQ1KTsKKyAg
ICBfNDY4NS0+YWRkKDE2Nyk7CisgICAgXzQ2ODUtPmFkZCgzMzgpOworICAgIF80Njg1LT5hZGQo
MTEzKTsKKyAgICBfNDY4NS0+YWRkKDIxNik7CisgICAgXzQ2ODUtPmFkZCgyKTsKKyAgICBfNDY4
NS0+YWRkKDI0Myk7CisgICAgXzQ2ODUtPmFkZCgxMDc1KTsKKyAgICBfNDY4NS0+YWRkKDI1ODMp
OworICAgIF80Njg1LT5hZGQoMjQ4KTsKKyAgICBfNDY4NS0+YWRkKDM1Nik7CisgICAgXzQ2ODUt
PmFkZCg5NjgpOworICAgIF80Njg1LT5hZGQoMTQ5KTsKKyAgICBfNDY4My0+YWRkKDIwNCk7Cisg
ICAgXzQ2ODMtPmFkZCgyNzMpOworICAgIF80NjgzLT5hZGQoMTEyMSk7CisgICAgXzQ2ODMtPmFk
ZCgxMDY0KTsKKyAgICBfNDY4My0+YWRkKDIyOCk7CisgICAgXzQ2ODMtPmFkZCgyNDApOworICAg
IF80NjgzLT5hZGQoMTQyKTsKKyAgICBfNDY4My0+YWRkKDEwNCk7CisgICAgXzQ2ODMtPmFkZCgz
MDkpOworICAgIF80NjgzLT5hZGQoMTkyKTsKKyAgICBfNDY4My0+YWRkKDExMyk7CisgICAgXzQ2
ODMtPmFkZCgxODApOworICAgIF80NjgzLT5hZGQoMTc5KTsKKyAgICBfNDY4My0+YWRkKDI1ODMp
OworICAgIF80NjgzLT5hZGQoMzQ1KTsKKyAgICBfNDY4My0+YWRkKDE2Nyk7CisgICAgXzQ2ODMt
PmFkZCgzMzgpOworICAgIF80NjgzLT5hZGQoMjE2KTsKKyAgICBfNDY4My0+YWRkKDI0Myk7Cisg
ICAgXzQ2ODMtPmFkZCgxMDc1KTsKKyAgICBfNDY4My0+YWRkKDIpOworICAgIF80NjgzLT5hZGQo
MjQ4KTsKKyAgICBfNDY4My0+YWRkKDM1Nik7CisgICAgXzQ2ODMtPmFkZCg5NjgpOworICAgIF80
NjgzLT5hZGQoMTQ5KTsKKyAgICBfNDY4My0+YWRkKDE1Nik7CisgICAgXzQ2ODMtPmFkZCgxMTQ2
KTsKKyAgICBfNDY4My0+YWRkKDk3NCk7CisgICAgXzQ2ODAtPmFkZCgyMDQpOworICAgIF80Njgw
LT5hZGQoMjczKTsKKyAgICBfNDY4MC0+YWRkKDExMjEpOworICAgIF80NjgwLT5hZGQoMTA2NCk7
CisgICAgXzQ2ODAtPmFkZCgyMjgpOworICAgIF80NjgwLT5hZGQoMjQwKTsKKyAgICBfNDY4MC0+
YWRkKDE0Mik7CisgICAgXzQ2ODAtPmFkZCgxMDQpOworICAgIF80NjgwLT5hZGQoMzA5KTsKKyAg
ICBfNDY4MC0+YWRkKDE5Mik7CisgICAgXzQ2ODAtPmFkZCgxMTMpOworICAgIF80NjgwLT5hZGQo
MTgwKTsKKyAgICBfNDY4MC0+YWRkKDE3OSk7CisgICAgXzQ2ODAtPmFkZCgyNTgzKTsKKyAgICBf
NDY4MC0+YWRkKDM0NSk7CisgICAgXzQ2ODAtPmFkZCgxNjcpOworICAgIF80NjgwLT5hZGQoMzM4
KTsKKyAgICBfNDY4MC0+YWRkKDIxNik7CisgICAgXzQ2ODAtPmFkZCgyNDMpOworICAgIF80Njgw
LT5hZGQoMTA3NSk7CisgICAgXzQ2ODAtPmFkZCgyKTsKKyAgICBfNDY4MC0+YWRkKDI0OCk7Cisg
ICAgXzQ2ODAtPmFkZCgzNTYpOworICAgIF80NjgwLT5hZGQoOTY4KTsKKyAgICBfNDY4MC0+YWRk
KDE0OSk7CisgICAgXzQ2ODAtPmFkZCgxNTYpOworICAgIF80NjgwLT5hZGQoMTE0Nik7CisgICAg
XzQ2ODAtPmFkZCg5NzQpOworICAgIF80NjgxLT5hZGQoMjA0KTsKKyAgICBfNDY4MS0+YWRkKDI3
Myk7CisgICAgXzQ2ODEtPmFkZCgxMTIxKTsKKyAgICBfNDY4MS0+YWRkKDEwNjQpOworICAgIF80
NjgxLT5hZGQoMjI4KTsKKyAgICBfNDY4MS0+YWRkKDE0Mik7CisgICAgXzQ2ODEtPmFkZCgxMDQp
OworICAgIF80NjgxLT5hZGQoMzA5KTsKKyAgICBfNDY4MS0+YWRkKDE5Mik7CisgICAgXzQ2ODEt
PmFkZCgxMTMpOworICAgIF80NjgxLT5hZGQoMTgwKTsKKyAgICBfNDY4MS0+YWRkKDE3OSk7Cisg
ICAgXzQ2ODEtPmFkZCgzNDUpOworICAgIF80NjgxLT5hZGQoMTY3KTsKKyAgICBfNDY4MS0+YWRk
KDMzOCk7CisgICAgXzQ2ODEtPmFkZCgyMTYpOworICAgIF80NjgxLT5hZGQoMTU2KTsKKyAgICBf
NDY4MS0+YWRkKDIpOworICAgIF80NjgxLT5hZGQoMjQzKTsKKyAgICBfNDY4MS0+YWRkKDEwNzUp
OworICAgIF80NjgxLT5hZGQoMjU4Myk7CisgICAgXzQ2ODEtPmFkZCgyNDgpOworICAgIF80Njgx
LT5hZGQoMzU2KTsKKyAgICBfNDY4MS0+YWRkKDk2OCk7CisgICAgXzQ2ODEtPmFkZCgxNDkpOwor
ICAgIF80NjgxLT5hZGQoMjQwKTsKKyAgICBfNDY4MS0+YWRkKDExNDYpOworICAgIF80NjgxLT5h
ZGQoOTc0KTsKKyAgICBfNDY4MS0+YWRkKDEyOCk7CisgICAgXzQ2ODEtPmFkZCgxMDI0KTsKKyAg
ICBfNDY4MS0+YWRkKDEzOSk7CisgICAgXzQ2ODEtPmFkZCgyNzc0KTsKKyAgICBfNDY4Mi0+YWRk
KDIwNCk7CisgICAgXzQ2ODItPmFkZCgyNzMpOworICAgIF80NjgyLT5hZGQoMTEyMSk7CisgICAg
XzQ2ODItPmFkZCgxMDY0KTsKKyAgICBfNDY4Mi0+YWRkKDIyOCk7CisgICAgXzQ2ODItPmFkZCgx
NDIpOworICAgIF80NjgyLT5hZGQoMTA0KTsKKyAgICBfNDY4Mi0+YWRkKDMwOSk7CisgICAgXzQ2
ODItPmFkZCgxOTIpOworICAgIF80NjgyLT5hZGQoMTEzKTsKKyAgICBfNDY4Mi0+YWRkKDE4MCk7
CisgICAgXzQ2ODItPmFkZCgxNzkpOworICAgIF80NjgyLT5hZGQoMzQ1KTsKKyAgICBfNDY4Mi0+
YWRkKDE2Nyk7CisgICAgXzQ2ODItPmFkZCgzMzgpOworICAgIF80NjgyLT5hZGQoMjE2KTsKKyAg
ICBfNDY4Mi0+YWRkKDE1Nik7CisgICAgXzQ2ODItPmFkZCgyKTsKKyAgICBfNDY4Mi0+YWRkKDI0
Myk7CisgICAgXzQ2ODItPmFkZCgxMDc1KTsKKyAgICBfNDY4Mi0+YWRkKDI1ODMpOworICAgIF80
NjgyLT5hZGQoMjQ4KTsKKyAgICBfNDY4Mi0+YWRkKDM1Nik7CisgICAgXzQ2ODItPmFkZCg5Njgp
OworICAgIF80NjgyLT5hZGQoMTQ5KTsKKyAgICBfNDY4Mi0+YWRkKDI0MCk7CisgICAgXzQ2ODIt
PmFkZCgxMTQ2KTsKKyAgICBfNDY4Mi0+YWRkKDk3NCk7CisgICAgXzQ2ODItPmFkZCgxMjgpOwor
ICAgIF80NjgyLT5hZGQoMTAyNCk7CisgICAgXzQ2ODItPmFkZCgxMzkpOworICAgIF80NjgyLT5h
ZGQoMjc3NCk7CisgICAgXzQ2ODMtPmFkZCgyMDQpOworICAgIF80NjgzLT5hZGQoMTEyMSk7Cisg
ICAgXzQ2ODMtPmFkZCgxMDY0KTsKKyAgICBfNDY4My0+YWRkKDE1Nik7CisgICAgXzQ2ODMtPmFk
ZCgxMjgpOworICAgIF80NjgzLT5hZGQoMTgwKTsKKyAgICBfNDY4My0+YWRkKDE3OSk7CisgICAg
XzQ2ODMtPmFkZCgxMDc1KTsKKyAgICBfNDY4My0+YWRkKDk2OCk7CisgICAgXzQ2ODMtPmFkZCgx
NDkpOworICAgIF80NjgzLT5hZGQoMTE0Nik7CisgICAgXzQ2ODMtPmFkZCg5NzQpOworICAgIF80
NjgzLT5hZGQoMjczKTsKKyAgICBfNDY4My0+YWRkKDIyOCk7CisgICAgXzQ2ODMtPmFkZCgxNDIp
OworICAgIF80NjgzLT5hZGQoMTA0KTsKKyAgICBfNDY4My0+YWRkKDM1Nik7CisgICAgXzQ2ODMt
PmFkZCgzMDkpOworICAgIF80NjgzLT5hZGQoMTkyKTsKKyAgICBfNDY4My0+YWRkKDExMyk7Cisg
ICAgXzQ2ODMtPmFkZCgzNDUpOworICAgIF80NjgzLT5hZGQoMTY3KTsKKyAgICBfNDY4My0+YWRk
KDMzOCk7CisgICAgXzQ2ODMtPmFkZCgyMTYpOworICAgIF80NjgzLT5hZGQoMik7CisgICAgXzQ2
ODMtPmFkZCgyNDMpOworICAgIF80NjgzLT5hZGQoMjU4Myk7CisgICAgXzQ2ODMtPmFkZCgyNDgp
OworICAgIF80NjgzLT5hZGQoMTM5KTsKKyAgICBfNDY4My0+YWRkKDEwMjQpOworICAgIF80Njgz
LT5hZGQoMjQwKTsKKyAgICBfNDY4My0+YWRkKDE0NjYpOworICAgIF80NjgwLT5hZGQoMjA0KTsK
KyAgICBfNDY4MC0+YWRkKDExMjEpOworICAgIF80NjgwLT5hZGQoMTA2NCk7CisgICAgXzQ2ODAt
PmFkZCgxNTYpOworICAgIF80NjgwLT5hZGQoMTI4KTsKKyAgICBfNDY4MC0+YWRkKDE4MCk7Cisg
ICAgXzQ2ODAtPmFkZCgxNzkpOworICAgIF80NjgwLT5hZGQoMTA3NSk7CisgICAgXzQ2ODAtPmFk
ZCg5NjgpOworICAgIF80NjgwLT5hZGQoMTQ5KTsKKyAgICBfNDY4MC0+YWRkKDExNDYpOworICAg
IF80NjgwLT5hZGQoOTc0KTsKKyAgICBfNDY4MC0+YWRkKDI3Myk7CisgICAgXzQ2ODAtPmFkZCgy
MjgpOworICAgIF80NjgwLT5hZGQoMTQyKTsKKyAgICBfNDY4MC0+YWRkKDEwNCk7CisgICAgXzQ2
ODAtPmFkZCgzNTYpOworICAgIF80NjgwLT5hZGQoMzA5KTsKKyAgICBfNDY4MC0+YWRkKDE5Mik7
CisgICAgXzQ2ODAtPmFkZCgxMTMpOworICAgIF80NjgwLT5hZGQoMzQ1KTsKKyAgICBfNDY4MC0+
YWRkKDE2Nyk7CisgICAgXzQ2ODAtPmFkZCgzMzgpOworICAgIF80NjgwLT5hZGQoMjE2KTsKKyAg
ICBfNDY4MC0+YWRkKDIpOworICAgIF80NjgwLT5hZGQoMjQzKTsKKyAgICBfNDY4MC0+YWRkKDI1
ODMpOworICAgIF80NjgwLT5hZGQoMjQ4KTsKKyAgICBfNDY4MC0+YWRkKDEzOSk7CisgICAgXzQ2
ODAtPmFkZCgxMDI0KTsKKyAgICBfNDY4MC0+YWRkKDI0MCk7CisgICAgXzQ2NzgtPmFkZCgyMDQp
OworICAgIF80Njc4LT5hZGQoMjczKTsKKyAgICBfNDY3OC0+YWRkKDExMjEpOworICAgIF80Njc4
LT5hZGQoMTA2NCk7CisgICAgXzQ2NzgtPmFkZCgyMjgpOworICAgIF80Njc4LT5hZGQoMTQyKTsK
KyAgICBfNDY3OC0+YWRkKDEwNCk7CisgICAgXzQ2NzgtPmFkZCgzMDkpOworICAgIF80Njc4LT5h
ZGQoMTkyKTsKKyAgICBfNDY3OC0+YWRkKDExMyk7CisgICAgXzQ2NzgtPmFkZCgxMjgpOworICAg
IF80Njc4LT5hZGQoMTgwKTsKKyAgICBfNDY3OC0+YWRkKDE3OSk7CisgICAgXzQ2NzgtPmFkZCgz
NDUpOworICAgIF80Njc4LT5hZGQoMTY3KTsKKyAgICBfNDY3OC0+YWRkKDMzOCk7CisgICAgXzQ2
NzgtPmFkZCgyMTYpOworICAgIF80Njc4LT5hZGQoMTU2KTsKKyAgICBfNDY3OC0+YWRkKDEzOSk7
CisgICAgXzQ2NzgtPmFkZCgyKTsKKyAgICBfNDY3OC0+YWRkKDI0Myk7CisgICAgXzQ2NzgtPmFk
ZCgxMDc1KTsKKyAgICBfNDY3OC0+YWRkKDI1ODMpOworICAgIF80Njc4LT5hZGQoMjQ4KTsKKyAg
ICBfNDY3OC0+YWRkKDM1Nik7CisgICAgXzQ2NzgtPmFkZCg5NjgpOworICAgIF80Njc4LT5hZGQo
MTAyNCk7CisgICAgXzQ2NzgtPmFkZCgxNDkpOworICAgIF80Njc4LT5hZGQoMjQwKTsKKyAgICBf
NDY3OC0+YWRkKDExNDYpOworICAgIF80Njc4LT5hZGQoOTc0KTsKKyAgICBfNDY3OS0+YWRkKDIw
NCk7CisgICAgXzQ2NzktPmFkZCgyNzMpOworICAgIF80Njc5LT5hZGQoMTEyMSk7CisgICAgXzQ2
NzktPmFkZCgxMDY0KTsKKyAgICBfNDY3OS0+YWRkKDIyOCk7CisgICAgXzQ2NzktPmFkZCgxNDIp
OworICAgIF80Njc5LT5hZGQoMTA0KTsKKyAgICBfNDY3OS0+YWRkKDMwOSk7CisgICAgXzQ2Nzkt
PmFkZCgxOTIpOworICAgIF80Njc5LT5hZGQoMTEzKTsKKyAgICBfNDY3OS0+YWRkKDEyOCk7Cisg
ICAgXzQ2NzktPmFkZCgxODApOworICAgIF80Njc5LT5hZGQoMTc5KTsKKyAgICBfNDY3OS0+YWRk
KDM0NSk7CisgICAgXzQ2NzktPmFkZCgxNjcpOworICAgIF80Njc5LT5hZGQoMzM4KTsKKyAgICBf
NDY3OS0+YWRkKDIxNik7CisgICAgXzQ2NzktPmFkZCgxNTYpOworICAgIF80Njc5LT5hZGQoMTM5
KTsKKyAgICBfNDY3OS0+YWRkKDIpOworICAgIF80Njc5LT5hZGQoMjQzKTsKKyAgICBfNDY3OS0+
YWRkKDEwNzUpOworICAgIF80Njc5LT5hZGQoMjU4Myk7CisgICAgXzQ2NzktPmFkZCgyNDgpOwor
ICAgIF80Njc5LT5hZGQoMzU2KTsKKyAgICBfNDY3OS0+YWRkKDk2OCk7CisgICAgXzQ2NzktPmFk
ZCgxMDI0KTsKKyAgICBfNDY3OS0+YWRkKDE0OSk7CisgICAgXzQ2NzktPmFkZCgyNDApOworICAg
IF80Njc5LT5hZGQoMTE0Nik7CisgICAgXzQ2NzktPmFkZCg5NzQpOworICAgIF80Njc3LT5hZGQo
MjA0KTsKKyAgICBfNDY3Ny0+YWRkKDI3Myk7CisgICAgXzQ2NzctPmFkZCgxMTIxKTsKKyAgICBf
NDY3Ny0+YWRkKDEwNjQpOworICAgIF80Njc3LT5hZGQoMjI4KTsKKyAgICBfNDY3Ny0+YWRkKDI0
MCk7CisgICAgXzQ2NzctPmFkZCgxNDIpOworICAgIF80Njc3LT5hZGQoMTA0KTsKKyAgICBfNDY3
Ny0+YWRkKDM1Nik7CisgICAgXzQ2NzctPmFkZCgzMDkpOworICAgIF80Njc3LT5hZGQoMTkyKTsK
KyAgICBfNDY3Ny0+YWRkKDExMyk7CisgICAgXzQ2NzctPmFkZCgxMjgpOworICAgIF80Njc3LT5h
ZGQoMTgwKTsKKyAgICBfNDY3Ny0+YWRkKDE3OSk7CisgICAgXzQ2NzctPmFkZCgyNTgzKTsKKyAg
ICBfNDY3Ny0+YWRkKDM0NSk7CisgICAgXzQ2NzctPmFkZCgxNjcpOworICAgIF80Njc3LT5hZGQo
MzM4KTsKKyAgICBfNDY3Ny0+YWRkKDIxNik7CisgICAgXzQ2NzctPmFkZCgyNDMpOworICAgIF80
Njc3LT5hZGQoMTA3NSk7CisgICAgXzQ2NzctPmFkZCgyKTsKKyAgICBfNDY3Ny0+YWRkKDI0OCk7
CisgICAgXzQ2NzctPmFkZCgxMzkpOworICAgIF80Njc3LT5hZGQoOTY4KTsKKyAgICBfNDY3Ny0+
YWRkKDEwMjQpOworICAgIF80Njc3LT5hZGQoMTQ5KTsKKyAgICBfNDY3Ny0+YWRkKDE1Nik7Cisg
ICAgXzQ2NzctPmFkZCgxMTQ2KTsKKyAgICBfNDY3Ny0+YWRkKDk3NCk7CisgICAgXzQ2NjgtPmFk
ZCgyMDQpOworICAgIF80NjY4LT5hZGQoMjczKTsKKyAgICBfNDY2OC0+YWRkKDExMjEpOworICAg
IF80NjY4LT5hZGQoMTA2NCk7CisgICAgXzQ2NjgtPmFkZCgyMjgpOworICAgIF80NjY4LT5hZGQo
MjQwKTsKKyAgICBfNDY2OC0+YWRkKDE0Mik7CisgICAgXzQ2NjgtPmFkZCgxMDQpOworICAgIF80
NjY4LT5hZGQoMzU2KTsKKyAgICBfNDY2OC0+YWRkKDMwOSk7CisgICAgXzQ2NjgtPmFkZCgxOTIp
OworICAgIF80NjY4LT5hZGQoMTEzKTsKKyAgICBfNDY2OC0+YWRkKDEyOCk7CisgICAgXzQ2Njgt
PmFkZCgxODApOworICAgIF80NjY4LT5hZGQoMTc5KTsKKyAgICBfNDY2OC0+YWRkKDI1ODMpOwor
ICAgIF80NjY4LT5hZGQoMzQ1KTsKKyAgICBfNDY2OC0+YWRkKDE2Nyk7CisgICAgXzQ2NjgtPmFk
ZCgzMzgpOworICAgIF80NjY4LT5hZGQoMjE2KTsKKyAgICBfNDY2OC0+YWRkKDI0Myk7CisgICAg
XzQ2NjgtPmFkZCgxMDc1KTsKKyAgICBfNDY2OC0+YWRkKDIpOworICAgIF80NjY4LT5hZGQoMjQ4
KTsKKyAgICBfNDY2OC0+YWRkKDEzOSk7CisgICAgXzQ2NjgtPmFkZCg5NjgpOworICAgIF80NjY4
LT5hZGQoMTAyNCk7CisgICAgXzQ2NjgtPmFkZCgxNDkpOworICAgIF80NjY4LT5hZGQoMTU2KTsK
KyAgICBfNDY2OC0+YWRkKDExNDYpOworICAgIF80NjY4LT5hZGQoOTc0KTsKKyAgICBfNDY3Ni0+
YWRkKDIwNCk7CisgICAgXzQ2NzYtPmFkZCgyNzMpOworICAgIF80Njc2LT5hZGQoMTEyMSk7Cisg
ICAgXzQ2NzYtPmFkZCgxMDY0KTsKKyAgICBfNDY3Ni0+YWRkKDIyOCk7CisgICAgXzQ2NzYtPmFk
ZCgxNDIpOworICAgIF80Njc2LT5hZGQoMTA0KTsKKyAgICBfNDY3Ni0+YWRkKDMwOSk7CisgICAg
XzQ2NzYtPmFkZCgxOTIpOworICAgIF80Njc2LT5hZGQoMTEzKTsKKyAgICBfNDY3Ni0+YWRkKDEy
OCk7CisgICAgXzQ2NzYtPmFkZCgxODApOworICAgIF80Njc2LT5hZGQoMTc5KTsKKyAgICBfNDY3
Ni0+YWRkKDM0NSk7CisgICAgXzQ2NzYtPmFkZCgxNjcpOworICAgIF80Njc2LT5hZGQoMzM4KTsK
KyAgICBfNDY3Ni0+YWRkKDIxNik7CisgICAgXzQ2NzYtPmFkZCgxNTYpOworICAgIF80Njc2LT5h
ZGQoMTM5KTsKKyAgICBfNDY3Ni0+YWRkKDIpOworICAgIF80Njc2LT5hZGQoMjQzKTsKKyAgICBf
NDY3Ni0+YWRkKDEwNzUpOworICAgIF80Njc2LT5hZGQoMjU4Myk7CisgICAgXzQ2NzYtPmFkZCgy
NDgpOworICAgIF80Njc2LT5hZGQoMzU2KTsKKyAgICBfNDY3Ni0+YWRkKDk2OCk7CisgICAgXzQ2
NzYtPmFkZCgxMDI0KTsKKyAgICBfNDY3Ni0+YWRkKDE0OSk7CisgICAgXzQ2NzYtPmFkZCgyNDAp
OworICAgIF80Njc2LT5hZGQoMTE0Nik7CisgICAgXzQ2NzYtPmFkZCg5NzQpOworICAgIF80Njc2
LT5hZGQoMjM4NCk7CisgICAgXzQ2NzYtPmFkZCgxMjczKTsKKyAgICBfNDY3NS0+YWRkKDIwNCk7
CisgICAgXzQ2NzUtPmFkZCgyNzMpOworICAgIF80Njc1LT5hZGQoMTEyMSk7CisgICAgXzQ2NzUt
PmFkZCgxMDY0KTsKKyAgICBfNDY3NS0+YWRkKDIyOCk7CisgICAgXzQ2NzUtPmFkZCgxNDIpOwor
ICAgIF80Njc1LT5hZGQoMTA0KTsKKyAgICBfNDY3NS0+YWRkKDMwOSk7CisgICAgXzQ2NzUtPmFk
ZCgxOTIpOworICAgIF80Njc1LT5hZGQoMTEzKTsKKyAgICBfNDY3NS0+YWRkKDEyOCk7CisgICAg
XzQ2NzUtPmFkZCgxODApOworICAgIF80Njc1LT5hZGQoMTc5KTsKKyAgICBfNDY3NS0+YWRkKDM0
NSk7CisgICAgXzQ2NzUtPmFkZCgxNjcpOworICAgIF80Njc1LT5hZGQoMzM4KTsKKyAgICBfNDY3
NS0+YWRkKDIxNik7CisgICAgXzQ2NzUtPmFkZCgxNTYpOworICAgIF80Njc1LT5hZGQoMTM5KTsK
KyAgICBfNDY3NS0+YWRkKDIpOworICAgIF80Njc1LT5hZGQoMjQzKTsKKyAgICBfNDY3NS0+YWRk
KDEwNzUpOworICAgIF80Njc1LT5hZGQoMjU4Myk7CisgICAgXzQ2NzUtPmFkZCgyNDgpOworICAg
IF80Njc1LT5hZGQoMzU2KTsKKyAgICBfNDY3NS0+YWRkKDk2OCk7CisgICAgXzQ2NzUtPmFkZCgx
MDI0KTsKKyAgICBfNDY3NS0+YWRkKDE0OSk7CisgICAgXzQ2NzUtPmFkZCgyNDApOworICAgIF80
Njc1LT5hZGQoMTE0Nik7CisgICAgXzQ2NzUtPmFkZCg5NzQpOworICAgIF80Njc1LT5hZGQoMjM4
NCk7CisgICAgXzQ2NzUtPmFkZCgxMjczKTsKKyAgICBfNDY3MS0+YWRkKDIwNCk7CisgICAgXzQ2
NzEtPmFkZCgyMzg0KTsKKyAgICBfNDY3MS0+YWRkKDExMjEpOworICAgIF80NjcxLT5hZGQoMTA2
NCk7CisgICAgXzQ2NzEtPmFkZCgxNTYpOworICAgIF80NjcxLT5hZGQoMTI3Myk7CisgICAgXzQ2
NzEtPmFkZCgxMjgpOworICAgIF80NjcxLT5hZGQoMTgwKTsKKyAgICBfNDY3MS0+YWRkKDE3OSk7
CisgICAgXzQ2NzEtPmFkZCgxMDc1KTsKKyAgICBfNDY3MS0+YWRkKDk2OCk7CisgICAgXzQ2NzEt
PmFkZCgxNDkpOworICAgIF80NjcxLT5hZGQoMTE0Nik7CisgICAgXzQ2NzEtPmFkZCg5NzQpOwor
ICAgIF80NjcxLT5hZGQoMjczKTsKKyAgICBfNDY3MS0+YWRkKDIyOCk7CisgICAgXzQ2NzEtPmFk
ZCgxNDIpOworICAgIF80NjcxLT5hZGQoMTA0KTsKKyAgICBfNDY3MS0+YWRkKDMwOSk7CisgICAg
XzQ2NzEtPmFkZCgxOTIpOworICAgIF80NjcxLT5hZGQoMTEzKTsKKyAgICBfNDY3MS0+YWRkKDM0
NSk7CisgICAgXzQ2NzEtPmFkZCgxNjcpOworICAgIF80NjcxLT5hZGQoMzM4KTsKKyAgICBfNDY3
MS0+YWRkKDIxNik7CisgICAgXzQ2NzEtPmFkZCgxMzkpOworICAgIF80NjcxLT5hZGQoMik7Cisg
ICAgXzQ2NzEtPmFkZCgyNDMpOworICAgIF80NjcxLT5hZGQoMjU4Myk7CisgICAgXzQ2NzEtPmFk
ZCgyNDgpOworICAgIF80NjcxLT5hZGQoMzU2KTsKKyAgICBfNDY3MS0+YWRkKDEwMjQpOworICAg
IF80NjcxLT5hZGQoMjQwKTsKKyAgICBfNDY3NC0+YWRkKDIwNCk7CisgICAgXzQ2NzQtPmFkZCgy
Mzg0KTsKKyAgICBfNDY3NC0+YWRkKDExMjEpOworICAgIF80Njc0LT5hZGQoMTA2NCk7CisgICAg
XzQ2NzQtPmFkZCgxNTYpOworICAgIF80Njc0LT5hZGQoMTI3Myk7CisgICAgXzQ2NzQtPmFkZCgx
MjgpOworICAgIF80Njc0LT5hZGQoMTgwKTsKKyAgICBfNDY3NC0+YWRkKDE3OSk7CisgICAgXzQ2
NzQtPmFkZCgxMDc1KTsKKyAgICBfNDY3NC0+YWRkKDk2OCk7CisgICAgXzQ2NzQtPmFkZCgxNDkp
OworICAgIF80Njc0LT5hZGQoMTE0Nik7CisgICAgXzQ2NzQtPmFkZCg5NzQpOworICAgIF80Njc0
LT5hZGQoMjczKTsKKyAgICBfNDY3NC0+YWRkKDIyOCk7CisgICAgXzQ2NzQtPmFkZCgxNDIpOwor
ICAgIF80Njc0LT5hZGQoMTA0KTsKKyAgICBfNDY3NC0+YWRkKDMwOSk7CisgICAgXzQ2NzQtPmFk
ZCgxOTIpOworICAgIF80Njc0LT5hZGQoMTEzKTsKKyAgICBfNDY3NC0+YWRkKDM0NSk7CisgICAg
XzQ2NzQtPmFkZCgxNjcpOworICAgIF80Njc0LT5hZGQoMzM4KTsKKyAgICBfNDY3NC0+YWRkKDIx
Nik7CisgICAgXzQ2NzQtPmFkZCgxMzkpOworICAgIF80Njc0LT5hZGQoMik7CisgICAgXzQ2NzQt
PmFkZCgyNDMpOworICAgIF80Njc0LT5hZGQoMjU4Myk7CisgICAgXzQ2NzQtPmFkZCgyNDgpOwor
ICAgIF80Njc0LT5hZGQoMzU2KTsKKyAgICBfNDY3NC0+YWRkKDEwMjQpOworICAgIF80Njc0LT5h
ZGQoMjQwKTsKKyAgICBfNDY3My0+YWRkKDIwNCk7CisgICAgXzQ2NzMtPmFkZCgyMzg0KTsKKyAg
ICBfNDY3My0+YWRkKDExMjEpOworICAgIF80NjczLT5hZGQoMTA2NCk7CisgICAgXzQ2NzMtPmFk
ZCgxNTYpOworICAgIF80NjczLT5hZGQoMTI3Myk7CisgICAgXzQ2NzMtPmFkZCgxMjgpOworICAg
IF80NjczLT5hZGQoMTgwKTsKKyAgICBfNDY3My0+YWRkKDE3OSk7CisgICAgXzQ2NzMtPmFkZCgx
MDc1KTsKKyAgICBfNDY3My0+YWRkKDk2OCk7CisgICAgXzQ2NzMtPmFkZCgxNDkpOworICAgIF80
NjczLT5hZGQoMTE0Nik7CisgICAgXzQ2NzMtPmFkZCg5NzQpOworICAgIF80NjczLT5hZGQoMjcz
KTsKKyAgICBfNDY3My0+YWRkKDIyOCk7CisgICAgXzQ2NzMtPmFkZCgyNDApOworICAgIF80Njcz
LT5hZGQoMTQyKTsKKyAgICBfNDY3My0+YWRkKDEwNCk7CisgICAgXzQ2NzMtPmFkZCgzMDkpOwor
ICAgIF80NjczLT5hZGQoMTkyKTsKKyAgICBfNDY3My0+YWRkKDExMyk7CisgICAgXzQ2NzMtPmFk
ZCgzNDUpOworICAgIF80NjczLT5hZGQoMTY3KTsKKyAgICBfNDY3My0+YWRkKDMzOCk7CisgICAg
XzQ2NzMtPmFkZCgyMTYpOworICAgIF80NjczLT5hZGQoMik7CisgICAgXzQ2NzMtPmFkZCgyNDMp
OworICAgIF80NjczLT5hZGQoMjU4Myk7CisgICAgXzQ2NzMtPmFkZCgyNDgpOworICAgIF80Njcz
LT5hZGQoMzU2KTsKKyAgICBfNDY3My0+YWRkKDEwMjQpOworICAgIF80NjczLT5hZGQoMTM5KTsK
KyAgICBfNDY3My0+YWRkKDEwMjgpOworICAgIF80NjczLT5hZGQoMTIzMSk7CisgICAgXzQ2NzMt
PmFkZCgyNzczKTsKKyAgICBfNDY3Mi0+YWRkKDIwNCk7CisgICAgXzQ2NzItPmFkZCgyMzg0KTsK
KyAgICBfNDY3Mi0+YWRkKDExMjEpOworICAgIF80NjcyLT5hZGQoMTA2NCk7CisgICAgXzQ2NzIt
PmFkZCgxNTYpOworICAgIF80NjcyLT5hZGQoMTI3Myk7CisgICAgXzQ2NzItPmFkZCgxMjgpOwor
ICAgIF80NjcyLT5hZGQoMTgwKTsKKyAgICBfNDY3Mi0+YWRkKDE3OSk7CisgICAgXzQ2NzItPmFk
ZCgxMDc1KTsKKyAgICBfNDY3Mi0+YWRkKDk2OCk7CisgICAgXzQ2NzItPmFkZCgxNDkpOworICAg
IF80NjcyLT5hZGQoMTE0Nik7CisgICAgXzQ2NzItPmFkZCg5NzQpOworICAgIF80NjcyLT5hZGQo
MjczKTsKKyAgICBfNDY3Mi0+YWRkKDIyOCk7CisgICAgXzQ2NzItPmFkZCgyNDApOworICAgIF80
NjcyLT5hZGQoMTQyKTsKKyAgICBfNDY3Mi0+YWRkKDEwNCk7CisgICAgXzQ2NzItPmFkZCgzMDkp
OworICAgIF80NjcyLT5hZGQoMTkyKTsKKyAgICBfNDY3Mi0+YWRkKDExMyk7CisgICAgXzQ2NzIt
PmFkZCgzNDUpOworICAgIF80NjcyLT5hZGQoMTY3KTsKKyAgICBfNDY3Mi0+YWRkKDMzOCk7Cisg
ICAgXzQ2NzItPmFkZCgyMTYpOworICAgIF80NjcyLT5hZGQoMik7CisgICAgXzQ2NzItPmFkZCgy
NDMpOworICAgIF80NjcyLT5hZGQoMjU4Myk7CisgICAgXzQ2NzItPmFkZCgyNDgpOworICAgIF80
NjcyLT5hZGQoMzU2KTsKKyAgICBfNDY3Mi0+YWRkKDEwMjQpOworICAgIF80NjcyLT5hZGQoMTM5
KTsKKyAgICBfNDY3Mi0+YWRkKDEwMjgpOworICAgIF80NjcyLT5hZGQoMTIzMSk7CisgICAgXzQ2
NzItPmFkZCgyNzczKTsKKyAgICBfNDY3MS0+YWRkKDIwNCk7CisgICAgXzQ2NzEtPmFkZCgyMzg0
KTsKKyAgICBfNDY3MS0+YWRkKDExMjEpOworICAgIF80NjcxLT5hZGQoMTA2NCk7CisgICAgXzQ2
NzEtPmFkZCgxNTYpOworICAgIF80NjcxLT5hZGQoMTI3Myk7CisgICAgXzQ2NzEtPmFkZCgyNDAp
OworICAgIF80NjcxLT5hZGQoMTI4KTsKKyAgICBfNDY3MS0+YWRkKDE4MCk7CisgICAgXzQ2NzEt
PmFkZCgxNzkpOworICAgIF80NjcxLT5hZGQoMTA3NSk7CisgICAgXzQ2NzEtPmFkZCg5NjgpOwor
ICAgIF80NjcxLT5hZGQoMTQ5KTsKKyAgICBfNDY3MS0+YWRkKDExNDYpOworICAgIF80NjcxLT5h
ZGQoOTc0KTsKKyAgICBfNDY3MS0+YWRkKDI3Myk7CisgICAgXzQ2NzEtPmFkZCgyMjgpOworICAg
IF80NjcxLT5hZGQoMTQyKTsKKyAgICBfNDY3MS0+YWRkKDEwNCk7CisgICAgXzQ2NzEtPmFkZCgx
MjMxKTsKKyAgICBfNDY3MS0+YWRkKDMwOSk7CisgICAgXzQ2NzEtPmFkZCgxOTIpOworICAgIF80
NjcxLT5hZGQoMTAyOCk7CisgICAgXzQ2NzEtPmFkZCgxMTMpOworICAgIF80NjcxLT5hZGQoMzQ1
KTsKKyAgICBfNDY3MS0+YWRkKDE2Nyk7CisgICAgXzQ2NzEtPmFkZCgzMzgpOworICAgIF80Njcx
LT5hZGQoMjE2KTsKKyAgICBfNDY3MS0+YWRkKDEzOSk7CisgICAgXzQ2NzEtPmFkZCgyKTsKKyAg
ICBfNDY3MS0+YWRkKDI0Myk7CisgICAgXzQ2NzEtPmFkZCgyNTgzKTsKKyAgICBfNDY3MS0+YWRk
KDI0OCk7CisgICAgXzQ2NzEtPmFkZCgzNTYpOworICAgIF80NjcxLT5hZGQoMTAyNCk7CisgICAg
XzQ2NzQtPmFkZCgyMDQpOworICAgIF80Njc0LT5hZGQoMjM4NCk7CisgICAgXzQ2NzQtPmFkZCgx
MTIxKTsKKyAgICBfNDY3NC0+YWRkKDEwNjQpOworICAgIF80Njc0LT5hZGQoMTU2KTsKKyAgICBf
NDY3NC0+YWRkKDEyNzMpOworICAgIF80Njc0LT5hZGQoMjQwKTsKKyAgICBfNDY3NC0+YWRkKDEy
OCk7CisgICAgXzQ2NzQtPmFkZCgxODApOworICAgIF80Njc0LT5hZGQoMTc5KTsKKyAgICBfNDY3
NC0+YWRkKDEwNzUpOworICAgIF80Njc0LT5hZGQoOTY4KTsKKyAgICBfNDY3NC0+YWRkKDE0OSk7
CisgICAgXzQ2NzQtPmFkZCgxMTQ2KTsKKyAgICBfNDY3NC0+YWRkKDk3NCk7CisgICAgXzQ2NzQt
PmFkZCgyNzMpOworICAgIF80Njc0LT5hZGQoMjI4KTsKKyAgICBfNDY3NC0+YWRkKDE0Mik7Cisg
ICAgXzQ2NzQtPmFkZCgxMDQpOworICAgIF80Njc0LT5hZGQoMTIzMSk7CisgICAgXzQ2NzQtPmFk
ZCgzMDkpOworICAgIF80Njc0LT5hZGQoMTkyKTsKKyAgICBfNDY3NC0+YWRkKDEwMjgpOworICAg
IF80Njc0LT5hZGQoMTEzKTsKKyAgICBfNDY3NC0+YWRkKDM0NSk7CisgICAgXzQ2NzQtPmFkZCgx
NjcpOworICAgIF80Njc0LT5hZGQoMzM4KTsKKyAgICBfNDY3NC0+YWRkKDIxNik7CisgICAgXzQ2
NzQtPmFkZCgxMzkpOworICAgIF80Njc0LT5hZGQoMik7CisgICAgXzQ2NzQtPmFkZCgyNDMpOwor
ICAgIF80Njc0LT5hZGQoMjU4Myk7CisgICAgXzQ2NzQtPmFkZCgyNDgpOworICAgIF80Njc0LT5h
ZGQoMzU2KTsKKyAgICBfNDY3NC0+YWRkKDEwMjQpOworICAgIF80Njc0LT5hZGQoMTM0NSk7Cisg
ICAgXzQ2NzAtPmFkZCgyMDQpOworICAgIF80NjcwLT5hZGQoMzU2KTsKKyAgICBfNDY3MC0+YWRk
KDExMjEpOworICAgIF80NjcwLT5hZGQoMTA2NCk7CisgICAgXzQ2NzAtPmFkZCgxNTYpOworICAg
IF80NjcwLT5hZGQoMTM5KTsKKyAgICBfNDY3MC0+YWRkKDEyOCk7CisgICAgXzQ2NzAtPmFkZCgx
ODApOworICAgIF80NjcwLT5hZGQoMTc5KTsKKyAgICBfNDY3MC0+YWRkKDEwNzUpOworICAgIF80
NjcwLT5hZGQoOTY4KTsKKyAgICBfNDY3MC0+YWRkKDE0OSk7CisgICAgXzQ2NzAtPmFkZCgxMTQ2
KTsKKyAgICBfNDY3MC0+YWRkKDk3NCk7CisgICAgXzQ2NzAtPmFkZCgyNzMpOworICAgIF80Njcw
LT5hZGQoMjI4KTsKKyAgICBfNDY3MC0+YWRkKDI0MCk7CisgICAgXzQ2NzAtPmFkZCgxNDIpOwor
ICAgIF80NjcwLT5hZGQoMTA0KTsKKyAgICBfNDY3MC0+YWRkKDEwMjQpOworICAgIF80NjcwLT5h
ZGQoMzA5KTsKKyAgICBfNDY3MC0+YWRkKDE5Mik7CisgICAgXzQ2NzAtPmFkZCgxMDI4KTsKKyAg
ICBfNDY3MC0+YWRkKDExMyk7CisgICAgXzQ2NzAtPmFkZCgzNDUpOworICAgIF80NjcwLT5hZGQo
MTY3KTsKKyAgICBfNDY3MC0+YWRkKDMzOCk7CisgICAgXzQ2NzAtPmFkZCgyMTYpOworICAgIF80
NjcwLT5hZGQoMik7CisgICAgXzQ2NzAtPmFkZCgyNDMpOworICAgIF80NjcwLT5hZGQoMjU4Myk7
CisgICAgXzQ2NzAtPmFkZCgyNDgpOworICAgIF80NjcwLT5hZGQoMjc3Mik7CisgICAgXzQ2Njkt
PmFkZCgyMDQpOworICAgIF80NjY5LT5hZGQoMzU2KTsKKyAgICBfNDY2OS0+YWRkKDExMjEpOwor
ICAgIF80NjY5LT5hZGQoMTA2NCk7CisgICAgXzQ2NjktPmFkZCgxNTYpOworICAgIF80NjY5LT5h
ZGQoMTM5KTsKKyAgICBfNDY2OS0+YWRkKDEyOCk7CisgICAgXzQ2NjktPmFkZCgxODApOworICAg
IF80NjY5LT5hZGQoMTc5KTsKKyAgICBfNDY2OS0+YWRkKDEwNzUpOworICAgIF80NjY5LT5hZGQo
OTY4KTsKKyAgICBfNDY2OS0+YWRkKDE0OSk7CisgICAgXzQ2NjktPmFkZCgxMTQ2KTsKKyAgICBf
NDY2OS0+YWRkKDk3NCk7CisgICAgXzQ2NjktPmFkZCgyNzMpOworICAgIF80NjY5LT5hZGQoMjI4
KTsKKyAgICBfNDY2OS0+YWRkKDI0MCk7CisgICAgXzQ2NjktPmFkZCgxNDIpOworICAgIF80NjY5
LT5hZGQoMTA0KTsKKyAgICBfNDY2OS0+YWRkKDEwMjQpOworICAgIF80NjY5LT5hZGQoMzA5KTsK
KyAgICBfNDY2OS0+YWRkKDE5Mik7CisgICAgXzQ2NjktPmFkZCgxMDI4KTsKKyAgICBfNDY2OS0+
YWRkKDExMyk7CisgICAgXzQ2NjktPmFkZCgzNDUpOworICAgIF80NjY5LT5hZGQoMTY3KTsKKyAg
ICBfNDY2OS0+YWRkKDMzOCk7CisgICAgXzQ2NjktPmFkZCgyMTYpOworICAgIF80NjY5LT5hZGQo
Mik7CisgICAgXzQ2NjktPmFkZCgyNDMpOworICAgIF80NjY5LT5hZGQoMjU4Myk7CisgICAgXzQ2
NjktPmFkZCgyNDgpOworICAgIF80NjY5LT5hZGQoMjc3Mik7CisgICAgXzQ2NjgtPmFkZCgyMDQp
OworICAgIF80NjY4LT5hZGQoMTEyMSk7CisgICAgXzQ2NjgtPmFkZCgxMDY0KTsKKyAgICBfNDY2
OC0+YWRkKDE1Nik7CisgICAgXzQ2NjgtPmFkZCgxMjgpOworICAgIF80NjY4LT5hZGQoMTgwKTsK
KyAgICBfNDY2OC0+YWRkKDE3OSk7CisgICAgXzQ2NjgtPmFkZCgxMDc1KTsKKyAgICBfNDY2OC0+
YWRkKDk2OCk7CisgICAgXzQ2NjgtPmFkZCgyNDApOworICAgIF80NjY4LT5hZGQoMTQ5KTsKKyAg
ICBfNDY2OC0+YWRkKDExNDYpOworICAgIF80NjY4LT5hZGQoOTc0KTsKKyAgICBfNDY2OC0+YWRk
KDI3Myk7CisgICAgXzQ2NjgtPmFkZCgyMjgpOworICAgIF80NjY4LT5hZGQoMTQyKTsKKyAgICBf
NDY2OC0+YWRkKDEwNCk7CisgICAgXzQ2NjgtPmFkZCgzNTYpOworICAgIF80NjY4LT5hZGQoMzA5
KTsKKyAgICBfNDY2OC0+YWRkKDE5Mik7CisgICAgXzQ2NjgtPmFkZCgxMDI4KTsKKyAgICBfNDY2
OC0+YWRkKDExMyk7CisgICAgXzQ2NjgtPmFkZCgzNDUpOworICAgIF80NjY4LT5hZGQoMTY3KTsK
KyAgICBfNDY2OC0+YWRkKDMzOCk7CisgICAgXzQ2NjgtPmFkZCgyMTYpOworICAgIF80NjY4LT5h
ZGQoMik7CisgICAgXzQ2NjgtPmFkZCgyNDMpOworICAgIF80NjY4LT5hZGQoMjU4Myk7CisgICAg
XzQ2NjgtPmFkZCgyNDgpOworICAgIF80NjY4LT5hZGQoMTM5KTsKKyAgICBfNDY2OC0+YWRkKDEw
MjQpOworICAgIF80Njc3LT5hZGQoMjA0KTsKKyAgICBfNDY3Ny0+YWRkKDExMjEpOworICAgIF80
Njc3LT5hZGQoMTA2NCk7CisgICAgXzQ2NzctPmFkZCgxNTYpOworICAgIF80Njc3LT5hZGQoMTI4
KTsKKyAgICBfNDY3Ny0+YWRkKDE4MCk7CisgICAgXzQ2NzctPmFkZCgxNzkpOworICAgIF80Njc3
LT5hZGQoMTA3NSk7CisgICAgXzQ2NzctPmFkZCg5NjgpOworICAgIF80Njc3LT5hZGQoMjQwKTsK
KyAgICBfNDY3Ny0+YWRkKDE0OSk7CisgICAgXzQ2NzctPmFkZCgxMTQ2KTsKKyAgICBfNDY3Ny0+
YWRkKDk3NCk7CisgICAgXzQ2NzctPmFkZCgyNzMpOworICAgIF80Njc3LT5hZGQoMjI4KTsKKyAg
ICBfNDY3Ny0+YWRkKDE0Mik7CisgICAgXzQ2NzctPmFkZCgxMDQpOworICAgIF80Njc3LT5hZGQo
MzU2KTsKKyAgICBfNDY3Ny0+YWRkKDMwOSk7CisgICAgXzQ2NzctPmFkZCgxOTIpOworICAgIF80
Njc3LT5hZGQoMTAyOCk7CisgICAgXzQ2NzctPmFkZCgxMTMpOworICAgIF80Njc3LT5hZGQoMzQ1
KTsKKyAgICBfNDY3Ny0+YWRkKDE2Nyk7CisgICAgXzQ2NzctPmFkZCgzMzgpOworICAgIF80Njc3
LT5hZGQoMjE2KTsKKyAgICBfNDY3Ny0+YWRkKDIpOworICAgIF80Njc3LT5hZGQoMjQzKTsKKyAg
ICBfNDY3Ny0+YWRkKDI1ODMpOworICAgIF80Njc3LT5hZGQoMjQ4KTsKKyAgICBfNDY3Ny0+YWRk
KDEzOSk7CisgICAgXzQ2NzctPmFkZCgxMDI0KTsKKyAgICBfNDY3Ny0+YWRkKDEzNzEpOworICAg
IF80NjY2LT5hZGQoMjA0KTsKKyAgICBfNDY2Ni0+YWRkKDExMjEpOworICAgIF80NjY2LT5hZGQo
MTA2NCk7CisgICAgXzQ2NjYtPmFkZCgxMjgpOworICAgIF80NjY2LT5hZGQoMTgwKTsKKyAgICBf
NDY2Ni0+YWRkKDE3OSk7CisgICAgXzQ2NjYtPmFkZCgyNTgzKTsKKyAgICBfNDY2Ni0+YWRkKDEw
NzUpOworICAgIF80NjY2LT5hZGQoOTY4KTsKKyAgICBfNDY2Ni0+YWRkKDE0OSk7CisgICAgXzQ2
NjYtPmFkZCgxMTQ2KTsKKyAgICBfNDY2Ni0+YWRkKDk3NCk7CisgICAgXzQ2NjYtPmFkZCgyNzMp
OworICAgIF80NjY2LT5hZGQoMjQzKTsKKyAgICBfNDY2Ni0+YWRkKDIyOCk7CisgICAgXzQ2NjYt
PmFkZCgyNDApOworICAgIF80NjY2LT5hZGQoMTQyKTsKKyAgICBfNDY2Ni0+YWRkKDEwNCk7Cisg
ICAgXzQ2NjYtPmFkZCgzNTYpOworICAgIF80NjY2LT5hZGQoMzA5KTsKKyAgICBfNDY2Ni0+YWRk
KDE5Mik7CisgICAgXzQ2NjYtPmFkZCgxMTMpOworICAgIF80NjY2LT5hZGQoMzQ1KTsKKyAgICBf
NDY2Ni0+YWRkKDE2Nyk7CisgICAgXzQ2NjYtPmFkZCgzMzgpOworICAgIF80NjY2LT5hZGQoMjE2
KTsKKyAgICBfNDY2Ni0+YWRkKDEwMjgpOworICAgIF80NjY2LT5hZGQoMik7CisgICAgXzQ2NjYt
PmFkZCgyNDgpOworICAgIF80NjY2LT5hZGQoMTM5KTsKKyAgICBfNDY2Ni0+YWRkKDEwMjQpOwor
ICAgIF80NjY2LT5hZGQoMTU2KTsKKyAgICBfNDY2Ny0+YWRkKDIwNCk7CisgICAgXzQ2NjctPmFk
ZCgxMTIxKTsKKyAgICBfNDY2Ny0+YWRkKDEwNjQpOworICAgIF80NjY3LT5hZGQoMTI4KTsKKyAg
ICBfNDY2Ny0+YWRkKDE4MCk7CisgICAgXzQ2NjctPmFkZCgxNzkpOworICAgIF80NjY3LT5hZGQo
MjU4Myk7CisgICAgXzQ2NjctPmFkZCgxMDc1KTsKKyAgICBfNDY2Ny0+YWRkKDk2OCk7CisgICAg
XzQ2NjctPmFkZCgxNDkpOworICAgIF80NjY3LT5hZGQoMTE0Nik7CisgICAgXzQ2NjctPmFkZCg5
NzQpOworICAgIF80NjY3LT5hZGQoMjczKTsKKyAgICBfNDY2Ny0+YWRkKDI0Myk7CisgICAgXzQ2
NjctPmFkZCgyMjgpOworICAgIF80NjY3LT5hZGQoMjQwKTsKKyAgICBfNDY2Ny0+YWRkKDE0Mik7
CisgICAgXzQ2NjctPmFkZCgxMDQpOworICAgIF80NjY3LT5hZGQoMzU2KTsKKyAgICBfNDY2Ny0+
YWRkKDMwOSk7CisgICAgXzQ2NjctPmFkZCgxOTIpOworICAgIF80NjY3LT5hZGQoMTEzKTsKKyAg
ICBfNDY2Ny0+YWRkKDM0NSk7CisgICAgXzQ2NjctPmFkZCgxNjcpOworICAgIF80NjY3LT5hZGQo
MzM4KTsKKyAgICBfNDY2Ny0+YWRkKDIxNik7CisgICAgXzQ2NjctPmFkZCgxMDI4KTsKKyAgICBf
NDY2Ny0+YWRkKDIpOworICAgIF80NjY3LT5hZGQoMjQ4KTsKKyAgICBfNDY2Ny0+YWRkKDEzOSk7
CisgICAgXzQ2NjctPmFkZCgxMDI0KTsKKyAgICBfNDY2Ny0+YWRkKDE1Nik7CisgICAgXzQ2NjUt
PmFkZCgyMDQpOworICAgIF80NjY1LT5hZGQoMTEyMSk7CisgICAgXzQ2NjUtPmFkZCgxMDY0KTsK
KyAgICBfNDY2NS0+YWRkKDEyOCk7CisgICAgXzQ2NjUtPmFkZCgxODApOworICAgIF80NjY1LT5h
ZGQoMTc5KTsKKyAgICBfNDY2NS0+YWRkKDI1ODMpOworICAgIF80NjY1LT5hZGQoMTA3NSk7Cisg
ICAgXzQ2NjUtPmFkZCg5NjgpOworICAgIF80NjY1LT5hZGQoMTQ5KTsKKyAgICBfNDY2NS0+YWRk
KDExNDYpOworICAgIF80NjY1LT5hZGQoOTc0KTsKKyAgICBfNDY2NS0+YWRkKDI3Myk7CisgICAg
XzQ2NjUtPmFkZCgyNDMpOworICAgIF80NjY1LT5hZGQoMjI4KTsKKyAgICBfNDY2NS0+YWRkKDI0
MCk7CisgICAgXzQ2NjUtPmFkZCgxNDIpOworICAgIF80NjY1LT5hZGQoMTA0KTsKKyAgICBfNDY2
NS0+YWRkKDM1Nik7CisgICAgXzQ2NjUtPmFkZCgzMDkpOworICAgIF80NjY1LT5hZGQoMTkyKTsK
KyAgICBfNDY2NS0+YWRkKDExMyk7CisgICAgXzQ2NjUtPmFkZCgzNDUpOworICAgIF80NjY1LT5h
ZGQoMTY3KTsKKyAgICBfNDY2NS0+YWRkKDMzOCk7CisgICAgXzQ2NjUtPmFkZCgyMTYpOworICAg
IF80NjY1LT5hZGQoMTAyOCk7CisgICAgXzQ2NjUtPmFkZCgyKTsKKyAgICBfNDY2NS0+YWRkKDI0
OCk7CisgICAgXzQ2NjUtPmFkZCgxMzkpOworICAgIF80NjY1LT5hZGQoMTAyNCk7CisgICAgXzQ2
NjUtPmFkZCgxNTYpOworICAgIF80NjYyLT5hZGQoMjA0KTsKKyAgICBfNDY2Mi0+YWRkKDExMjEp
OworICAgIF80NjYyLT5hZGQoMTA2NCk7CisgICAgXzQ2NjItPmFkZCgxMjgpOworICAgIF80NjYy
LT5hZGQoMTgwKTsKKyAgICBfNDY2Mi0+YWRkKDE3OSk7CisgICAgXzQ2NjItPmFkZCgyNTgzKTsK
KyAgICBfNDY2Mi0+YWRkKDEwNzUpOworICAgIF80NjYyLT5hZGQoOTY4KTsKKyAgICBfNDY2Mi0+
YWRkKDE0OSk7CisgICAgXzQ2NjItPmFkZCgxMTQ2KTsKKyAgICBfNDY2Mi0+YWRkKDk3NCk7Cisg
ICAgXzQ2NjItPmFkZCgyNzMpOworICAgIF80NjYyLT5hZGQoMjQzKTsKKyAgICBfNDY2Mi0+YWRk
KDIyOCk7CisgICAgXzQ2NjItPmFkZCgyNDApOworICAgIF80NjYyLT5hZGQoMTQyKTsKKyAgICBf
NDY2Mi0+YWRkKDEwNCk7CisgICAgXzQ2NjItPmFkZCgzNTYpOworICAgIF80NjYyLT5hZGQoMzA5
KTsKKyAgICBfNDY2Mi0+YWRkKDE5Mik7CisgICAgXzQ2NjItPmFkZCgxMTMpOworICAgIF80NjYy
LT5hZGQoMzQ1KTsKKyAgICBfNDY2Mi0+YWRkKDE2Nyk7CisgICAgXzQ2NjItPmFkZCgzMzgpOwor
ICAgIF80NjYyLT5hZGQoMjE2KTsKKyAgICBfNDY2Mi0+YWRkKDEwMjgpOworICAgIF80NjYyLT5h
ZGQoMik7CisgICAgXzQ2NjItPmFkZCgyNDgpOworICAgIF80NjYyLT5hZGQoMTM5KTsKKyAgICBf
NDY2Mi0+YWRkKDEwMjQpOworICAgIF80NjYyLT5hZGQoMTU2KTsKKyAgICBfNDY2My0+YWRkKDIw
NCk7CisgICAgXzQ2NjMtPmFkZCgxMTIxKTsKKyAgICBfNDY2My0+YWRkKDEwNjQpOworICAgIF80
NjYzLT5hZGQoMTI4KTsKKyAgICBfNDY2My0+YWRkKDE4MCk7CisgICAgXzQ2NjMtPmFkZCgxNzkp
OworICAgIF80NjYzLT5hZGQoMjU4Myk7CisgICAgXzQ2NjMtPmFkZCgxMDc1KTsKKyAgICBfNDY2
My0+YWRkKDk2OCk7CisgICAgXzQ2NjMtPmFkZCgxNDkpOworICAgIF80NjYzLT5hZGQoMTE0Nik7
CisgICAgXzQ2NjMtPmFkZCg5NzQpOworICAgIF80NjYzLT5hZGQoMjczKTsKKyAgICBfNDY2My0+
YWRkKDI0Myk7CisgICAgXzQ2NjMtPmFkZCgyMjgpOworICAgIF80NjYzLT5hZGQoMjQwKTsKKyAg
ICBfNDY2My0+YWRkKDE0Mik7CisgICAgXzQ2NjMtPmFkZCgxMDQpOworICAgIF80NjYzLT5hZGQo
MzU2KTsKKyAgICBfNDY2My0+YWRkKDMwOSk7CisgICAgXzQ2NjMtPmFkZCgxOTIpOworICAgIF80
NjYzLT5hZGQoMTEzKTsKKyAgICBfNDY2My0+YWRkKDM0NSk7CisgICAgXzQ2NjMtPmFkZCgxNjcp
OworICAgIF80NjYzLT5hZGQoMzM4KTsKKyAgICBfNDY2My0+YWRkKDIxNik7CisgICAgXzQ2NjMt
PmFkZCgxMDI4KTsKKyAgICBfNDY2My0+YWRkKDIpOworICAgIF80NjYzLT5hZGQoMjQ4KTsKKyAg
ICBfNDY2My0+YWRkKDEzOSk7CisgICAgXzQ2NjMtPmFkZCgxMDI0KTsKKyAgICBfNDY2My0+YWRk
KDE1Nik7CisgICAgXzQ2NjMtPmFkZCgxMDc5KTsKKyAgICBfNDY2My0+YWRkKDI3NzEpOworICAg
IF80NjY0LT5hZGQoMjA0KTsKKyAgICBfNDY2NC0+YWRkKDExMjEpOworICAgIF80NjY0LT5hZGQo
MTA2NCk7CisgICAgXzQ2NjQtPmFkZCgxMjgpOworICAgIF80NjY0LT5hZGQoMTgwKTsKKyAgICBf
NDY2NC0+YWRkKDE3OSk7CisgICAgXzQ2NjQtPmFkZCgyNTgzKTsKKyAgICBfNDY2NC0+YWRkKDEw
NzUpOworICAgIF80NjY0LT5hZGQoOTY4KTsKKyAgICBfNDY2NC0+YWRkKDE0OSk7CisgICAgXzQ2
NjQtPmFkZCgxMTQ2KTsKKyAgICBfNDY2NC0+YWRkKDk3NCk7CisgICAgXzQ2NjQtPmFkZCgyNzMp
OworICAgIF80NjY0LT5hZGQoMjQzKTsKKyAgICBfNDY2NC0+YWRkKDIyOCk7CisgICAgXzQ2NjQt
PmFkZCgyNDApOworICAgIF80NjY0LT5hZGQoMTQyKTsKKyAgICBfNDY2NC0+YWRkKDEwNCk7Cisg
ICAgXzQ2NjQtPmFkZCgzNTYpOworICAgIF80NjY0LT5hZGQoMzA5KTsKKyAgICBfNDY2NC0+YWRk
KDE5Mik7CisgICAgXzQ2NjQtPmFkZCgxMTMpOworICAgIF80NjY0LT5hZGQoMzQ1KTsKKyAgICBf
NDY2NC0+YWRkKDE2Nyk7CisgICAgXzQ2NjQtPmFkZCgzMzgpOworICAgIF80NjY0LT5hZGQoMjE2
KTsKKyAgICBfNDY2NC0+YWRkKDEwMjgpOworICAgIF80NjY0LT5hZGQoMik7CisgICAgXzQ2NjQt
PmFkZCgyNDgpOworICAgIF80NjY0LT5hZGQoMTM5KTsKKyAgICBfNDY2NC0+YWRkKDEwMjQpOwor
ICAgIF80NjY0LT5hZGQoMTU2KTsKKyAgICBfNDY2NC0+YWRkKDEwNzkpOworICAgIF80NjY0LT5h
ZGQoMjc3MSk7CisgICAgXzQ2NjUtPmFkZCgyMDQpOworICAgIF80NjY1LT5hZGQoMTEyMSk7Cisg
ICAgXzQ2NjUtPmFkZCgxMDY0KTsKKyAgICBfNDY2NS0+YWRkKDEyOCk7CisgICAgXzQ2NjUtPmFk
ZCgxODApOworICAgIF80NjY1LT5hZGQoMTc5KTsKKyAgICBfNDY2NS0+YWRkKDI1ODMpOworICAg
IF80NjY1LT5hZGQoMTU2KTsKKyAgICBfNDY2NS0+YWRkKDEwNzUpOworICAgIF80NjY1LT5hZGQo
MTA3OSk7CisgICAgXzQ2NjUtPmFkZCg5NjgpOworICAgIF80NjY1LT5hZGQoMTQ5KTsKKyAgICBf
NDY2NS0+YWRkKDExNDYpOworICAgIF80NjY1LT5hZGQoOTc0KTsKKyAgICBfNDY2NS0+YWRkKDI3
Myk7CisgICAgXzQ2NjUtPmFkZCgyNDMpOworICAgIF80NjY1LT5hZGQoMjI4KTsKKyAgICBfNDY2
NS0+YWRkKDI0MCk7CisgICAgXzQ2NjUtPmFkZCgxNDIpOworICAgIF80NjY1LT5hZGQoMTA0KTsK
KyAgICBfNDY2NS0+YWRkKDM1Nik7CisgICAgXzQ2NjUtPmFkZCgzMDkpOworICAgIF80NjY1LT5h
ZGQoMTkyKTsKKyAgICBfNDY2NS0+YWRkKDExMyk7CisgICAgXzQ2NjUtPmFkZCgzNDUpOworICAg
IF80NjY1LT5hZGQoMTY3KTsKKyAgICBfNDY2NS0+YWRkKDMzOCk7CisgICAgXzQ2NjUtPmFkZCgy
MTYpOworICAgIF80NjY1LT5hZGQoMTAyOCk7CisgICAgXzQ2NjUtPmFkZCgyKTsKKyAgICBfNDY2
NS0+YWRkKDI0OCk7CisgICAgXzQ2NjUtPmFkZCgxMzkpOworICAgIF80NjY1LT5hZGQoMTAyNCk7
CisgICAgXzQ2NjUtPmFkZCgxMTkzKTsKKyAgICBfNDY2Mi0+YWRkKDIwNCk7CisgICAgXzQ2NjIt
PmFkZCgxMTIxKTsKKyAgICBfNDY2Mi0+YWRkKDEwNjQpOworICAgIF80NjYyLT5hZGQoMTI4KTsK
KyAgICBfNDY2Mi0+YWRkKDE4MCk7CisgICAgXzQ2NjItPmFkZCgxNzkpOworICAgIF80NjYyLT5h
ZGQoMjU4Myk7CisgICAgXzQ2NjItPmFkZCgxNTYpOworICAgIF80NjYyLT5hZGQoMTA3NSk7Cisg
ICAgXzQ2NjItPmFkZCgxMDc5KTsKKyAgICBfNDY2Mi0+YWRkKDk2OCk7CisgICAgXzQ2NjItPmFk
ZCgxNDkpOworICAgIF80NjYyLT5hZGQoMTE0Nik7CisgICAgXzQ2NjItPmFkZCg5NzQpOworICAg
IF80NjYyLT5hZGQoMjczKTsKKyAgICBfNDY2Mi0+YWRkKDI0Myk7CisgICAgXzQ2NjItPmFkZCgy
MjgpOworICAgIF80NjYyLT5hZGQoMjQwKTsKKyAgICBfNDY2Mi0+YWRkKDE0Mik7CisgICAgXzQ2
NjItPmFkZCgxMDQpOworICAgIF80NjYyLT5hZGQoMzU2KTsKKyAgICBfNDY2Mi0+YWRkKDMwOSk7
CisgICAgXzQ2NjItPmFkZCgxOTIpOworICAgIF80NjYyLT5hZGQoMTEzKTsKKyAgICBfNDY2Mi0+
YWRkKDM0NSk7CisgICAgXzQ2NjItPmFkZCgxNjcpOworICAgIF80NjYyLT5hZGQoMzM4KTsKKyAg
ICBfNDY2Mi0+YWRkKDIxNik7CisgICAgXzQ2NjItPmFkZCgxMDI4KTsKKyAgICBfNDY2Mi0+YWRk
KDIpOworICAgIF80NjYyLT5hZGQoMjQ4KTsKKyAgICBfNDY2Mi0+YWRkKDEzOSk7CisgICAgXzQ2
NjItPmFkZCgxMDI0KTsKKyAgICBfNDY2MS0+YWRkKDIwNCk7CisgICAgXzQ2NjEtPmFkZCgxNTYp
OworICAgIF80NjYxLT5hZGQoMTM5KTsKKyAgICBfNDY2MS0+YWRkKDEyOCk7CisgICAgXzQ2NjEt
PmFkZCgxODApOworICAgIF80NjYxLT5hZGQoMTc5KTsKKyAgICBfNDY2MS0+YWRkKDI1ODMpOwor
ICAgIF80NjYxLT5hZGQoMTA3NSk7CisgICAgXzQ2NjEtPmFkZCgyKTsKKyAgICBfNDY2MS0+YWRk
KDk2OCk7CisgICAgXzQ2NjEtPmFkZCgxNDkpOworICAgIF80NjYxLT5hZGQoMTE0Nik7CisgICAg
XzQ2NjEtPmFkZCg5NzQpOworICAgIF80NjYxLT5hZGQoMjczKTsKKyAgICBfNDY2MS0+YWRkKDI0
Myk7CisgICAgXzQ2NjEtPmFkZCgyMjgpOworICAgIF80NjYxLT5hZGQoMjQwKTsKKyAgICBfNDY2
MS0+YWRkKDE0Mik7CisgICAgXzQ2NjEtPmFkZCgxMDQpOworICAgIF80NjYxLT5hZGQoMzU2KTsK
KyAgICBfNDY2MS0+YWRkKDMwOSk7CisgICAgXzQ2NjEtPmFkZCgxOTIpOworICAgIF80NjYxLT5h
ZGQoMTEzKTsKKyAgICBfNDY2MS0+YWRkKDM0NSk7CisgICAgXzQ2NjEtPmFkZCgxNjcpOworICAg
IF80NjYxLT5hZGQoMzM4KTsKKyAgICBfNDY2MS0+YWRkKDIxNik7CisgICAgXzQ2NjEtPmFkZCgy
NDgpOworICAgIF80NjU5LT5hZGQoMjA0KTsKKyAgICBfNDY1OS0+YWRkKDI3Myk7CisgICAgXzQ2
NTktPmFkZCgyMjgpOworICAgIF80NjU5LT5hZGQoMjQwKTsKKyAgICBfNDY1OS0+YWRkKDE0Mik7
CisgICAgXzQ2NTktPmFkZCgxMDQpOworICAgIF80NjU5LT5hZGQoMzA5KTsKKyAgICBfNDY1OS0+
YWRkKDE5Mik7CisgICAgXzQ2NTktPmFkZCgxNTYpOworICAgIF80NjU5LT5hZGQoMTEzKTsKKyAg
ICBfNDY1OS0+YWRkKDEyOCk7CisgICAgXzQ2NTktPmFkZCgxODApOworICAgIF80NjU5LT5hZGQo
MTc5KTsKKyAgICBfNDY1OS0+YWRkKDI1ODMpOworICAgIF80NjU5LT5hZGQoMzQ1KTsKKyAgICBf
NDY1OS0+YWRkKDE2Nyk7CisgICAgXzQ2NTktPmFkZCgzMzgpOworICAgIF80NjU5LT5hZGQoMjE2
KTsKKyAgICBfNDY1OS0+YWRkKDI0Myk7CisgICAgXzQ2NTktPmFkZCgxMDc1KTsKKyAgICBfNDY1
OS0+YWRkKDIpOworICAgIF80NjU5LT5hZGQoMjQ4KTsKKyAgICBfNDY1OS0+YWRkKDM1Nik7Cisg
ICAgXzQ2NTktPmFkZCg5NjgpOworICAgIF80NjU5LT5hZGQoMTQ5KTsKKyAgICBfNDY1OS0+YWRk
KDEzOSk7CisgICAgXzQ2NTktPmFkZCgxMTQ2KTsKKyAgICBfNDY1OS0+YWRkKDk3NCk7CisgICAg
XzQ2NTktPmFkZCgyNTMpOworICAgIF80NjU5LT5hZGQoOTkyKTsKKyAgICBfNDY1OS0+YWRkKDI3
NzApOworICAgIF80NjU5LT5hZGQoMjc2OSk7CisgICAgXzQ2NjAtPmFkZCgyMDQpOworICAgIF80
NjYwLT5hZGQoMjczKTsKKyAgICBfNDY2MC0+YWRkKDIyOCk7CisgICAgXzQ2NjAtPmFkZCgyNDAp
OworICAgIF80NjYwLT5hZGQoMTQyKTsKKyAgICBfNDY2MC0+YWRkKDEwNCk7CisgICAgXzQ2NjAt
PmFkZCgzMDkpOworICAgIF80NjYwLT5hZGQoMTkyKTsKKyAgICBfNDY2MC0+YWRkKDE1Nik7Cisg
ICAgXzQ2NjAtPmFkZCgxMTMpOworICAgIF80NjYwLT5hZGQoMTI4KTsKKyAgICBfNDY2MC0+YWRk
KDE4MCk7CisgICAgXzQ2NjAtPmFkZCgxNzkpOworICAgIF80NjYwLT5hZGQoMjU4Myk7CisgICAg
XzQ2NjAtPmFkZCgzNDUpOworICAgIF80NjYwLT5hZGQoMTY3KTsKKyAgICBfNDY2MC0+YWRkKDMz
OCk7CisgICAgXzQ2NjAtPmFkZCgyMTYpOworICAgIF80NjYwLT5hZGQoMjQzKTsKKyAgICBfNDY2
MC0+YWRkKDEwNzUpOworICAgIF80NjYwLT5hZGQoMik7CisgICAgXzQ2NjAtPmFkZCgyNDgpOwor
ICAgIF80NjYwLT5hZGQoMzU2KTsKKyAgICBfNDY2MC0+YWRkKDk2OCk7CisgICAgXzQ2NjAtPmFk
ZCgxNDkpOworICAgIF80NjYwLT5hZGQoMTM5KTsKKyAgICBfNDY2MC0+YWRkKDExNDYpOworICAg
IF80NjYwLT5hZGQoOTc0KTsKKyAgICBfNDY2MC0+YWRkKDI1Myk7CisgICAgXzQ2NjAtPmFkZCg5
OTIpOworICAgIF80NjYwLT5hZGQoMjc3MCk7CisgICAgXzQ2NjAtPmFkZCgyNzY5KTsKKyAgICBf
NDY2MS0+YWRkKDIwNCk7CisgICAgXzQ2NjEtPmFkZCg5OTIpOworICAgIF80NjYxLT5hZGQoMTU2
KTsKKyAgICBfNDY2MS0+YWRkKDEyOCk7CisgICAgXzQ2NjEtPmFkZCgxODApOworICAgIF80NjYx
LT5hZGQoMTc5KTsKKyAgICBfNDY2MS0+YWRkKDI1ODMpOworICAgIF80NjYxLT5hZGQoMjUzKTsK
KyAgICBfNDY2MS0+YWRkKDEwNzUpOworICAgIF80NjYxLT5hZGQoOTY4KTsKKyAgICBfNDY2MS0+
YWRkKDE0OSk7CisgICAgXzQ2NjEtPmFkZCgxMTQ2KTsKKyAgICBfNDY2MS0+YWRkKDk3NCk7Cisg
ICAgXzQ2NjEtPmFkZCgyNzMpOworICAgIF80NjYxLT5hZGQoMjI4KTsKKyAgICBfNDY2MS0+YWRk
KDE0Mik7CisgICAgXzQ2NjEtPmFkZCgxMDQpOworICAgIF80NjYxLT5hZGQoMzU2KTsKKyAgICBf
NDY2MS0+YWRkKDMwOSk7CisgICAgXzQ2NjEtPmFkZCgxOTIpOworICAgIF80NjYxLT5hZGQoMTEz
KTsKKyAgICBfNDY2MS0+YWRkKDI0MCk7CisgICAgXzQ2NjEtPmFkZCgxMDEwKTsKKyAgICBfNDY2
MS0+YWRkKDM0NSk7CisgICAgXzQ2NjEtPmFkZCgxNjcpOworICAgIF80NjYxLT5hZGQoMzM4KTsK
KyAgICBfNDY2MS0+YWRkKDIxNik7CisgICAgXzQ2NjEtPmFkZCgyNDMpOworICAgIF80NjYxLT5h
ZGQoMik7CisgICAgXzQ2NjEtPmFkZCgyNDgpOworICAgIF80NjYxLT5hZGQoMTM5KTsKKyAgICBf
NDY1OC0+YWRkKDIwNCk7CisgICAgXzQ2NTgtPmFkZCg5OTIpOworICAgIF80NjU4LT5hZGQoMTU2
KTsKKyAgICBfNDY1OC0+YWRkKDEyOCk7CisgICAgXzQ2NTgtPmFkZCgxODApOworICAgIF80NjU4
LT5hZGQoMTc5KTsKKyAgICBfNDY1OC0+YWRkKDI1ODMpOworICAgIF80NjU4LT5hZGQoMjUzKTsK
KyAgICBfNDY1OC0+YWRkKDEwNzUpOworICAgIF80NjU4LT5hZGQoOTY4KTsKKyAgICBfNDY1OC0+
YWRkKDE0OSk7CisgICAgXzQ2NTgtPmFkZCgxMTQ2KTsKKyAgICBfNDY1OC0+YWRkKDEzOSk7Cisg
ICAgXzQ2NTgtPmFkZCgyNzMpOworICAgIF80NjU4LT5hZGQoMjI4KTsKKyAgICBfNDY1OC0+YWRk
KDE0Mik7CisgICAgXzQ2NTgtPmFkZCgxMDQpOworICAgIF80NjU4LT5hZGQoMzU2KTsKKyAgICBf
NDY1OC0+YWRkKDMwOSk7CisgICAgXzQ2NTgtPmFkZCgxOTIpOworICAgIF80NjU4LT5hZGQoMTEz
KTsKKyAgICBfNDY1OC0+YWRkKDI0MCk7CisgICAgXzQ2NTgtPmFkZCg5MzUpOworICAgIF80NjU4
LT5hZGQoMzQ1KTsKKyAgICBfNDY1OC0+YWRkKDE2Nyk7CisgICAgXzQ2NTgtPmFkZCgzMzgpOwor
ICAgIF80NjU4LT5hZGQoMjE2KTsKKyAgICBfNDY1OC0+YWRkKDI0Myk7CisgICAgXzQ2NTgtPmFk
ZCgyKTsKKyAgICBfNDY1OC0+YWRkKDI0OCk7CisgICAgXzQ2NTgtPmFkZCgyODIpOworICAgIF80
NjU3LT5hZGQoMjA0KTsKKyAgICBfNDY1Ny0+YWRkKDI3Myk7CisgICAgXzQ2NTctPmFkZCg5MzUp
OworICAgIF80NjU3LT5hZGQoMjI4KTsKKyAgICBfNDY1Ny0+YWRkKDI0MCk7CisgICAgXzQ2NTct
PmFkZCgxNDIpOworICAgIF80NjU3LT5hZGQoOTkyKTsKKyAgICBfNDY1Ny0+YWRkKDMwOSk7Cisg
ICAgXzQ2NTctPmFkZCgxOTIpOworICAgIF80NjU3LT5hZGQoMTU2KTsKKyAgICBfNDY1Ny0+YWRk
KDExMyk7CisgICAgXzQ2NTctPmFkZCgxMjgpOworICAgIF80NjU3LT5hZGQoMTgwKTsKKyAgICBf
NDY1Ny0+YWRkKDE3OSk7CisgICAgXzQ2NTctPmFkZCgzNDUpOworICAgIF80NjU3LT5hZGQoMTY3
KTsKKyAgICBfNDY1Ny0+YWRkKDMzOCk7CisgICAgXzQ2NTctPmFkZCgyMTYpOworICAgIF80NjU3
LT5hZGQoMjUzKTsKKyAgICBfNDY1Ny0+YWRkKDEwNCk7CisgICAgXzQ2NTctPmFkZCgyKTsKKyAg
ICBfNDY1Ny0+YWRkKDI0Myk7CisgICAgXzQ2NTctPmFkZCgxMDc1KTsKKyAgICBfNDY1Ny0+YWRk
KDI1ODMpOworICAgIF80NjU3LT5hZGQoMjQ4KTsKKyAgICBfNDY1Ny0+YWRkKDM1Nik7CisgICAg
XzQ2NTctPmFkZCg5NjgpOworICAgIF80NjU3LT5hZGQoMjgyKTsKKyAgICBfNDY1Ny0+YWRkKDE0
OSk7CisgICAgXzQ2NTctPmFkZCgxMzkpOworICAgIF80NjU3LT5hZGQoMTE0Nik7CisgICAgXzQ2
NTctPmFkZCgyMzk5KTsKKyAgICBfNDY1Ny0+YWRkKDY1Myk7CisgICAgXzQ2NTctPmFkZCgyMzk4
KTsKKyAgICBfNDY1Ny0+YWRkKDI3NjgpOworICAgIF80NjU3LT5hZGQoMjc2Nyk7CisgICAgXzQ2
NTYtPmFkZCgyMDQpOworICAgIF80NjU2LT5hZGQoMjczKTsKKyAgICBfNDY1Ni0+YWRkKDkzNSk7
CisgICAgXzQ2NTYtPmFkZCgyMjgpOworICAgIF80NjU2LT5hZGQoMjQwKTsKKyAgICBfNDY1Ni0+
YWRkKDE0Mik7CisgICAgXzQ2NTYtPmFkZCg5OTIpOworICAgIF80NjU2LT5hZGQoMzA5KTsKKyAg
ICBfNDY1Ni0+YWRkKDE5Mik7CisgICAgXzQ2NTYtPmFkZCgxNTYpOworICAgIF80NjU2LT5hZGQo
MTEzKTsKKyAgICBfNDY1Ni0+YWRkKDEyOCk7CisgICAgXzQ2NTYtPmFkZCgxODApOworICAgIF80
NjU2LT5hZGQoMTc5KTsKKyAgICBfNDY1Ni0+YWRkKDM0NSk7CisgICAgXzQ2NTYtPmFkZCgxNjcp
OworICAgIF80NjU2LT5hZGQoMzM4KTsKKyAgICBfNDY1Ni0+YWRkKDIxNik7CisgICAgXzQ2NTYt
PmFkZCgyNTMpOworICAgIF80NjU2LT5hZGQoMTA0KTsKKyAgICBfNDY1Ni0+YWRkKDIpOworICAg
IF80NjU2LT5hZGQoMjQzKTsKKyAgICBfNDY1Ni0+YWRkKDEwNzUpOworICAgIF80NjU2LT5hZGQo
MjU4Myk7CisgICAgXzQ2NTYtPmFkZCgyNDgpOworICAgIF80NjU2LT5hZGQoMzU2KTsKKyAgICBf
NDY1Ni0+YWRkKDk2OCk7CisgICAgXzQ2NTYtPmFkZCgyODIpOworICAgIF80NjU2LT5hZGQoMTQ5
KTsKKyAgICBfNDY1Ni0+YWRkKDEzOSk7CisgICAgXzQ2NTYtPmFkZCgxMTQ2KTsKKyAgICBfNDY1
Ni0+YWRkKDIzOTkpOworICAgIF80NjU2LT5hZGQoNjUzKTsKKyAgICBfNDY1Ni0+YWRkKDIzOTgp
OworICAgIF80NjU2LT5hZGQoMjc2OCk7CisgICAgXzQ2NTYtPmFkZCgyNzY3KTsKKyAgICBfNDY1
Mi0+YWRkKDIwNCk7CisgICAgXzQ2NTItPmFkZCg5MzUpOworICAgIF80NjUyLT5hZGQoMTM5KTsK
KyAgICBfNDY1Mi0+YWRkKDk5Mik7CisgICAgXzQ2NTItPmFkZCgxNTYpOworICAgIF80NjUyLT5h
ZGQoMTI4KTsKKyAgICBfNDY1Mi0+YWRkKDE4MCk7CisgICAgXzQ2NTItPmFkZCgxNzkpOworICAg
IF80NjUyLT5hZGQoMjUzKTsKKyAgICBfNDY1Mi0+YWRkKDI4Mik7CisgICAgXzQ2NTItPmFkZCgx
MDc1KTsKKyAgICBfNDY1Mi0+YWRkKDIzOTkpOworICAgIF80NjUyLT5hZGQoNjUzKTsKKyAgICBf
NDY1Mi0+YWRkKDk2OCk7CisgICAgXzQ2NTItPmFkZCgxNDkpOworICAgIF80NjUyLT5hZGQoMTE0
Nik7CisgICAgXzQ2NTItPmFkZCgyNDApOworICAgIF80NjUyLT5hZGQoMjczKTsKKyAgICBfNDY1
Mi0+YWRkKDIzOTgpOworICAgIF80NjUyLT5hZGQoMjI4KTsKKyAgICBfNDY1Mi0+YWRkKDE0Mik7
CisgICAgXzQ2NTItPmFkZCgxMDQpOworICAgIF80NjUyLT5hZGQoMzU2KTsKKyAgICBfNDY1Mi0+
YWRkKDMwOSk7CisgICAgXzQ2NTItPmFkZCgxOTIpOworICAgIF80NjUyLT5hZGQoMTEzKTsKKyAg
ICBfNDY1Mi0+YWRkKDM0NSk7CisgICAgXzQ2NTItPmFkZCgxNjcpOworICAgIF80NjUyLT5hZGQo
MzM4KTsKKyAgICBfNDY1Mi0+YWRkKDIxNik7CisgICAgXzQ2NTItPmFkZCgyKTsKKyAgICBfNDY1
Mi0+YWRkKDI0Myk7CisgICAgXzQ2NTItPmFkZCgyNTgzKTsKKyAgICBfNDY1Mi0+YWRkKDI0OCk7
CisgICAgXzQ2NTItPmFkZCgyMzkzKTsKKyAgICBfNDY1NS0+YWRkKDIwNCk7CisgICAgXzQ2NTUt
PmFkZCg5MzUpOworICAgIF80NjU1LT5hZGQoNzc3KTsKKyAgICBfNDY1NS0+YWRkKDk5Mik7Cisg
ICAgXzQ2NTUtPmFkZCgxNTYpOworICAgIF80NjU1LT5hZGQoMTI4KTsKKyAgICBfNDY1NS0+YWRk
KDE4MCk7CisgICAgXzQ2NTUtPmFkZCgxNzkpOworICAgIF80NjU1LT5hZGQoMjUzKTsKKyAgICBf
NDY1NS0+YWRkKDI4Mik7CisgICAgXzQ2NTUtPmFkZCgxMDc1KTsKKyAgICBfNDY1NS0+YWRkKDIz
OTkpOworICAgIF80NjU1LT5hZGQoNjUzKTsKKyAgICBfNDY1NS0+YWRkKDk2OCk7CisgICAgXzQ2
NTUtPmFkZCgxNDkpOworICAgIF80NjU1LT5hZGQoMTE0Nik7CisgICAgXzQ2NTUtPmFkZCgyNDAp
OworICAgIF80NjU1LT5hZGQoMjczKTsKKyAgICBfNDY1NS0+YWRkKDIzOTgpOworICAgIF80NjU1
LT5hZGQoMjI4KTsKKyAgICBfNDY1NS0+YWRkKDE0Mik7CisgICAgXzQ2NTUtPmFkZCgxMDQpOwor
ICAgIF80NjU1LT5hZGQoMzU2KTsKKyAgICBfNDY1NS0+YWRkKDMwOSk7CisgICAgXzQ2NTUtPmFk
ZCgxOTIpOworICAgIF80NjU1LT5hZGQoMTEzKTsKKyAgICBfNDY1NS0+YWRkKDM0NSk7CisgICAg
XzQ2NTUtPmFkZCgxNjcpOworICAgIF80NjU1LT5hZGQoMzM4KTsKKyAgICBfNDY1NS0+YWRkKDIx
Nik7CisgICAgXzQ2NTUtPmFkZCgyKTsKKyAgICBfNDY1NS0+YWRkKDI0Myk7CisgICAgXzQ2NTUt
PmFkZCgyNTgzKTsKKyAgICBfNDY1NS0+YWRkKDI0OCk7CisgICAgXzQ2NTUtPmFkZCgxMzkpOwor
ICAgIF80NjU1LT5hZGQoNzk2KTsKKyAgICBfNDY1My0+YWRkKDIwNCk7CisgICAgXzQ2NTMtPmFk
ZCg5MzUpOworICAgIF80NjUzLT5hZGQoOTkyKTsKKyAgICBfNDY1My0+YWRkKDE1Nik7CisgICAg
XzQ2NTMtPmFkZCgxMjgpOworICAgIF80NjUzLT5hZGQoMTgwKTsKKyAgICBfNDY1My0+YWRkKDE3
OSk7CisgICAgXzQ2NTMtPmFkZCgyNTgzKTsKKyAgICBfNDY1My0+YWRkKDI1Myk7CisgICAgXzQ2
NTMtPmFkZCgyODIpOworICAgIF80NjUzLT5hZGQoMTA3NSk7CisgICAgXzQ2NTMtPmFkZCgyMzk5
KTsKKyAgICBfNDY1My0+YWRkKDY1Myk7CisgICAgXzQ2NTMtPmFkZCg5NjgpOworICAgIF80NjUz
LT5hZGQoMTQ5KTsKKyAgICBfNDY1My0+YWRkKDExNDYpOworICAgIF80NjUzLT5hZGQoNzA2KTsK
KyAgICBfNDY1My0+YWRkKDI3Myk7CisgICAgXzQ2NTMtPmFkZCgyMzk4KTsKKyAgICBfNDY1My0+
YWRkKDIyOCk7CisgICAgXzQ2NTMtPmFkZCgyNDApOworICAgIF80NjUzLT5hZGQoMTQyKTsKKyAg
ICBfNDY1My0+YWRkKDEwNCk7CisgICAgXzQ2NTMtPmFkZCgzMDkpOworICAgIF80NjUzLT5hZGQo
MTkyKTsKKyAgICBfNDY1My0+YWRkKDExMyk7CisgICAgXzQ2NTMtPmFkZCgzNDUpOworICAgIF80
NjUzLT5hZGQoMTY3KTsKKyAgICBfNDY1My0+YWRkKDMzOCk7CisgICAgXzQ2NTMtPmFkZCgyMTYp
OworICAgIF80NjUzLT5hZGQoMTM5KTsKKyAgICBfNDY1My0+YWRkKDI0Myk7CisgICAgXzQ2NTMt
PmFkZCgyKTsKKyAgICBfNDY1My0+YWRkKDI0OCk7CisgICAgXzQ2NTMtPmFkZCgzNTYpOworICAg
IF80NjUzLT5hZGQoMjc2Nik7CisgICAgXzQ2NTMtPmFkZCgyNzY1KTsKKyAgICBfNDY1NC0+YWRk
KDIwNCk7CisgICAgXzQ2NTQtPmFkZCg5MzUpOworICAgIF80NjU0LT5hZGQoOTkyKTsKKyAgICBf
NDY1NC0+YWRkKDE1Nik7CisgICAgXzQ2NTQtPmFkZCgxMjgpOworICAgIF80NjU0LT5hZGQoMTgw
KTsKKyAgICBfNDY1NC0+YWRkKDE3OSk7CisgICAgXzQ2NTQtPmFkZCgyNTgzKTsKKyAgICBfNDY1
NC0+YWRkKDI1Myk7CisgICAgXzQ2NTQtPmFkZCgyODIpOworICAgIF80NjU0LT5hZGQoMTA3NSk7
CisgICAgXzQ2NTQtPmFkZCgyMzk5KTsKKyAgICBfNDY1NC0+YWRkKDY1Myk7CisgICAgXzQ2NTQt
PmFkZCg5NjgpOworICAgIF80NjU0LT5hZGQoMTQ5KTsKKyAgICBfNDY1NC0+YWRkKDExNDYpOwor
ICAgIF80NjU0LT5hZGQoNzA2KTsKKyAgICBfNDY1NC0+YWRkKDI3Myk7CisgICAgXzQ2NTQtPmFk
ZCgyMzk4KTsKKyAgICBfNDY1NC0+YWRkKDIyOCk7CisgICAgXzQ2NTQtPmFkZCgyNDApOworICAg
IF80NjU0LT5hZGQoMTQyKTsKKyAgICBfNDY1NC0+YWRkKDEwNCk7CisgICAgXzQ2NTQtPmFkZCgz
MDkpOworICAgIF80NjU0LT5hZGQoMTkyKTsKKyAgICBfNDY1NC0+YWRkKDExMyk7CisgICAgXzQ2
NTQtPmFkZCgzNDUpOworICAgIF80NjU0LT5hZGQoMTY3KTsKKyAgICBfNDY1NC0+YWRkKDMzOCk7
CisgICAgXzQ2NTQtPmFkZCgyMTYpOworICAgIF80NjU0LT5hZGQoMTM5KTsKKyAgICBfNDY1NC0+
YWRkKDI0Myk7CisgICAgXzQ2NTQtPmFkZCgyKTsKKyAgICBfNDY1NC0+YWRkKDI0OCk7CisgICAg
XzQ2NTQtPmFkZCgzNTYpOworICAgIF80NjU0LT5hZGQoMjc2Nik7CisgICAgXzQ2NTQtPmFkZCgy
NzY1KTsKKyAgICBfNDY1NS0+YWRkKDIwNCk7CisgICAgXzQ2NTUtPmFkZCg5MzUpOworICAgIF80
NjU1LT5hZGQoNzc3KTsKKyAgICBfNDY1NS0+YWRkKDk5Mik7CisgICAgXzQ2NTUtPmFkZCgxNTYp
OworICAgIF80NjU1LT5hZGQoMTI4KTsKKyAgICBfNDY1NS0+YWRkKDE4MCk7CisgICAgXzQ2NTUt
PmFkZCgxNzkpOworICAgIF80NjU1LT5hZGQoNzA2KTsKKyAgICBfNDY1NS0+YWRkKDI1Myk7Cisg
ICAgXzQ2NTUtPmFkZCgyODIpOworICAgIF80NjU1LT5hZGQoMTA3NSk7CisgICAgXzQ2NTUtPmFk
ZCgyMzk5KTsKKyAgICBfNDY1NS0+YWRkKDY1Myk7CisgICAgXzQ2NTUtPmFkZCg5NjgpOworICAg
IF80NjU1LT5hZGQoMTQ5KTsKKyAgICBfNDY1NS0+YWRkKDI0MCk7CisgICAgXzQ2NTUtPmFkZCgx
MTQ2KTsKKyAgICBfNDY1NS0+YWRkKDI3Myk7CisgICAgXzQ2NTUtPmFkZCgyMzk4KTsKKyAgICBf
NDY1NS0+YWRkKDIyOCk7CisgICAgXzQ2NTUtPmFkZCgxNDIpOworICAgIF80NjU1LT5hZGQoMTA0
KTsKKyAgICBfNDY1NS0+YWRkKDM1Nik7CisgICAgXzQ2NTUtPmFkZCgzMDkpOworICAgIF80NjU1
LT5hZGQoMTkyKTsKKyAgICBfNDY1NS0+YWRkKDExMyk7CisgICAgXzQ2NTUtPmFkZCgzNDUpOwor
ICAgIF80NjU1LT5hZGQoMTY3KTsKKyAgICBfNDY1NS0+YWRkKDMzOCk7CisgICAgXzQ2NTUtPmFk
ZCgyMTYpOworICAgIF80NjU1LT5hZGQoMik7CisgICAgXzQ2NTUtPmFkZCgyNDMpOworICAgIF80
NjU1LT5hZGQoMjU4Myk7CisgICAgXzQ2NTUtPmFkZCgyNDgpOworICAgIF80NjU1LT5hZGQoMTM5
KTsKKyAgICBfNDY1NS0+YWRkKDc5Nik7CisgICAgXzQ2NTItPmFkZCgyMDQpOworICAgIF80NjUy
LT5hZGQoOTM1KTsKKyAgICBfNDY1Mi0+YWRkKDEzOSk7CisgICAgXzQ2NTItPmFkZCg5OTIpOwor
ICAgIF80NjUyLT5hZGQoMTU2KTsKKyAgICBfNDY1Mi0+YWRkKDEyOCk7CisgICAgXzQ2NTItPmFk
ZCgxODApOworICAgIF80NjUyLT5hZGQoMTc5KTsKKyAgICBfNDY1Mi0+YWRkKDcwNik7CisgICAg
XzQ2NTItPmFkZCgyNTMpOworICAgIF80NjUyLT5hZGQoMjgyKTsKKyAgICBfNDY1Mi0+YWRkKDEw
NzUpOworICAgIF80NjUyLT5hZGQoMjM5OSk7CisgICAgXzQ2NTItPmFkZCg2NTMpOworICAgIF80
NjUyLT5hZGQoOTY4KTsKKyAgICBfNDY1Mi0+YWRkKDE0OSk7CisgICAgXzQ2NTItPmFkZCgyNDAp
OworICAgIF80NjUyLT5hZGQoMTE0Nik7CisgICAgXzQ2NTItPmFkZCgyNzMpOworICAgIF80NjUy
LT5hZGQoMjM5OCk7CisgICAgXzQ2NTItPmFkZCgyMjgpOworICAgIF80NjUyLT5hZGQoMTQyKTsK
KyAgICBfNDY1Mi0+YWRkKDEwNCk7CisgICAgXzQ2NTItPmFkZCgzNTYpOworICAgIF80NjUyLT5h
ZGQoMzA5KTsKKyAgICBfNDY1Mi0+YWRkKDE5Mik7CisgICAgXzQ2NTItPmFkZCgxMTMpOworICAg
IF80NjUyLT5hZGQoMzQ1KTsKKyAgICBfNDY1Mi0+YWRkKDE2Nyk7CisgICAgXzQ2NTItPmFkZCgz
MzgpOworICAgIF80NjUyLT5hZGQoMjE2KTsKKyAgICBfNDY1Mi0+YWRkKDIpOworICAgIF80NjUy
LT5hZGQoMjQzKTsKKyAgICBfNDY1Mi0+YWRkKDI1ODMpOworICAgIF80NjUyLT5hZGQoMjQ4KTsK
KyAgICBfNDY1Mi0+YWRkKDIzOTMpOworICAgIF80NjUwLT5hZGQoMjA0KTsKKyAgICBfNDY1MC0+
YWRkKDkzNSk7CisgICAgXzQ2NTAtPmFkZCg5OTIpOworICAgIF80NjUwLT5hZGQoMzE4KTsKKyAg
ICBfNDY1MC0+YWRkKDE1Nik7CisgICAgXzQ2NTAtPmFkZCgxMjgpOworICAgIF80NjUwLT5hZGQo
MTgwKTsKKyAgICBfNDY1MC0+YWRkKDE3OSk7CisgICAgXzQ2NTAtPmFkZCgyNTgzKTsKKyAgICBf
NDY1MC0+YWRkKDcwNik7CisgICAgXzQ2NTAtPmFkZCgyNTMpOworICAgIF80NjUwLT5hZGQoMjgy
KTsKKyAgICBfNDY1MC0+YWRkKDEwNzUpOworICAgIF80NjUwLT5hZGQoMjM5OSk7CisgICAgXzQ2
NTAtPmFkZCg2NjEpOworICAgIF80NjUwLT5hZGQoOTY4KTsKKyAgICBfNDY1MC0+YWRkKDE0OSk7
CisgICAgXzQ2NTAtPmFkZCgxMTQ2KTsKKyAgICBfNDY1MC0+YWRkKDI3Myk7CisgICAgXzQ2NTAt
PmFkZCgyMzk4KTsKKyAgICBfNDY1MC0+YWRkKDIyOCk7CisgICAgXzQ2NTAtPmFkZCgxNDIpOwor
ICAgIF80NjUwLT5hZGQoMTA0KTsKKyAgICBfNDY1MC0+YWRkKDMwOSk7CisgICAgXzQ2NTAtPmFk
ZCgxOTIpOworICAgIF80NjUwLT5hZGQoMTEzKTsKKyAgICBfNDY1MC0+YWRkKDM0NSk7CisgICAg
XzQ2NTAtPmFkZCgxNjcpOworICAgIF80NjUwLT5hZGQoMzM4KTsKKyAgICBfNDY1MC0+YWRkKDIx
Nik7CisgICAgXzQ2NTAtPmFkZCgxMzkpOworICAgIF80NjUwLT5hZGQoMjQzKTsKKyAgICBfNDY1
MC0+YWRkKDIpOworICAgIF80NjUwLT5hZGQoMjQ4KTsKKyAgICBfNDY1MC0+YWRkKDM1Nik7Cisg
ICAgXzQ2NTAtPmFkZCgyNDApOworICAgIF80NjUwLT5hZGQoMjc2NCk7CisgICAgXzQ2NTEtPmFk
ZCgyMDQpOworICAgIF80NjUxLT5hZGQoOTM1KTsKKyAgICBfNDY1MS0+YWRkKDk5Mik7CisgICAg
XzQ2NTEtPmFkZCgzMTgpOworICAgIF80NjUxLT5hZGQoMTU2KTsKKyAgICBfNDY1MS0+YWRkKDEy
OCk7CisgICAgXzQ2NTEtPmFkZCgxODApOworICAgIF80NjUxLT5hZGQoMTc5KTsKKyAgICBfNDY1
MS0+YWRkKDI1ODMpOworICAgIF80NjUxLT5hZGQoNzA2KTsKKyAgICBfNDY1MS0+YWRkKDI1Myk7
CisgICAgXzQ2NTEtPmFkZCgyODIpOworICAgIF80NjUxLT5hZGQoMTA3NSk7CisgICAgXzQ2NTEt
PmFkZCgyMzk5KTsKKyAgICBfNDY1MS0+YWRkKDY2MSk7CisgICAgXzQ2NTEtPmFkZCg5NjgpOwor
ICAgIF80NjUxLT5hZGQoMTQ5KTsKKyAgICBfNDY1MS0+YWRkKDExNDYpOworICAgIF80NjUxLT5h
ZGQoMjczKTsKKyAgICBfNDY1MS0+YWRkKDIzOTgpOworICAgIF80NjUxLT5hZGQoMjI4KTsKKyAg
ICBfNDY1MS0+YWRkKDE0Mik7CisgICAgXzQ2NTEtPmFkZCgxMDQpOworICAgIF80NjUxLT5hZGQo
MzA5KTsKKyAgICBfNDY1MS0+YWRkKDE5Mik7CisgICAgXzQ2NTEtPmFkZCgxMTMpOworICAgIF80
NjUxLT5hZGQoMzQ1KTsKKyAgICBfNDY1MS0+YWRkKDE2Nyk7CisgICAgXzQ2NTEtPmFkZCgzMzgp
OworICAgIF80NjUxLT5hZGQoMjE2KTsKKyAgICBfNDY1MS0+YWRkKDEzOSk7CisgICAgXzQ2NTEt
PmFkZCgyNDMpOworICAgIF80NjUxLT5hZGQoMik7CisgICAgXzQ2NTEtPmFkZCgyNDgpOworICAg
IF80NjUxLT5hZGQoMzU2KTsKKyAgICBfNDY1MS0+YWRkKDI0MCk7CisgICAgXzQ2NTEtPmFkZCgy
NzY0KTsKKyAgICBfNDY0OS0+YWRkKDIwNCk7CisgICAgXzQ2NDktPmFkZCg5MzUpOworICAgIF80
NjQ5LT5hZGQoOTkyKTsKKyAgICBfNDY0OS0+YWRkKDE1Nik7CisgICAgXzQ2NDktPmFkZCgxMzkp
OworICAgIF80NjQ5LT5hZGQoMTI4KTsKKyAgICBfNDY0OS0+YWRkKDE4MCk7CisgICAgXzQ2NDkt
PmFkZCgxNzkpOworICAgIF80NjQ5LT5hZGQoNzA2KTsKKyAgICBfNDY0OS0+YWRkKDI1Myk7Cisg
ICAgXzQ2NDktPmFkZCgyODIpOworICAgIF80NjQ5LT5hZGQoMTA3NSk7CisgICAgXzQ2NDktPmFk
ZCg2NjEpOworICAgIF80NjQ5LT5hZGQoMjM5OSk7CisgICAgXzQ2NDktPmFkZCg5NjgpOworICAg
IF80NjQ5LT5hZGQoMTQ5KTsKKyAgICBfNDY0OS0+YWRkKDExNDYpOworICAgIF80NjQ5LT5hZGQo
MjczKTsKKyAgICBfNDY0OS0+YWRkKDIzOTgpOworICAgIF80NjQ5LT5hZGQoMjI4KTsKKyAgICBf
NDY0OS0+YWRkKDI0MCk7CisgICAgXzQ2NDktPmFkZCgxNDIpOworICAgIF80NjQ5LT5hZGQoMTA0
KTsKKyAgICBfNDY0OS0+YWRkKDM1Nik7CisgICAgXzQ2NDktPmFkZCgzMDkpOworICAgIF80NjQ5
LT5hZGQoMTkyKTsKKyAgICBfNDY0OS0+YWRkKDExMyk7CisgICAgXzQ2NDktPmFkZCgzNDUpOwor
ICAgIF80NjQ5LT5hZGQoMTY3KTsKKyAgICBfNDY0OS0+YWRkKDMzOCk7CisgICAgXzQ2NDktPmFk
ZCgyMTYpOworICAgIF80NjQ5LT5hZGQoMik7CisgICAgXzQ2NDktPmFkZCgyNDMpOworICAgIF80
NjQ5LT5hZGQoMjU4Myk7CisgICAgXzQ2NDktPmFkZCgyNDgpOworICAgIF80NjQ5LT5hZGQoMzE4
KTsKKyAgICBfNDY0OS0+YWRkKDIzOTUpOworICAgIF80NjM3LT5hZGQoMjA0KTsKKyAgICBfNDYz
Ny0+YWRkKDkzNSk7CisgICAgXzQ2MzctPmFkZCg5OTIpOworICAgIF80NjM3LT5hZGQoMTU2KTsK
KyAgICBfNDYzNy0+YWRkKDEzOSk7CisgICAgXzQ2MzctPmFkZCgxMjgpOworICAgIF80NjM3LT5h
ZGQoMTgwKTsKKyAgICBfNDYzNy0+YWRkKDE3OSk7CisgICAgXzQ2MzctPmFkZCg3MDYpOworICAg
IF80NjM3LT5hZGQoMjUzKTsKKyAgICBfNDYzNy0+YWRkKDI4Mik7CisgICAgXzQ2MzctPmFkZCgx
MDc1KTsKKyAgICBfNDYzNy0+YWRkKDY2MSk7CisgICAgXzQ2MzctPmFkZCgyMzk5KTsKKyAgICBf
NDYzNy0+YWRkKDk2OCk7CisgICAgXzQ2MzctPmFkZCgxNDkpOworICAgIF80NjM3LT5hZGQoMTE0
Nik7CisgICAgXzQ2MzctPmFkZCgyNzMpOworICAgIF80NjM3LT5hZGQoMjM5OCk7CisgICAgXzQ2
MzctPmFkZCgyMjgpOworICAgIF80NjM3LT5hZGQoMjQwKTsKKyAgICBfNDYzNy0+YWRkKDE0Mik7
CisgICAgXzQ2MzctPmFkZCgxMDQpOworICAgIF80NjM3LT5hZGQoMzU2KTsKKyAgICBfNDYzNy0+
YWRkKDMwOSk7CisgICAgXzQ2MzctPmFkZCgxOTIpOworICAgIF80NjM3LT5hZGQoMTEzKTsKKyAg
ICBfNDYzNy0+YWRkKDM0NSk7CisgICAgXzQ2MzctPmFkZCgxNjcpOworICAgIF80NjM3LT5hZGQo
MzM4KTsKKyAgICBfNDYzNy0+YWRkKDIxNik7CisgICAgXzQ2MzctPmFkZCgyKTsKKyAgICBfNDYz
Ny0+YWRkKDI0Myk7CisgICAgXzQ2MzctPmFkZCgyNTgzKTsKKyAgICBfNDYzNy0+YWRkKDI0OCk7
CisgICAgXzQ2MzctPmFkZCgzMTgpOworICAgIF80NjQ3LT5hZGQoMjA0KTsKKyAgICBfNDY0Ny0+
YWRkKDkzNSk7CisgICAgXzQ2NDctPmFkZCg5OTIpOworICAgIF80NjQ3LT5hZGQoMTU2KTsKKyAg
ICBfNDY0Ny0+YWRkKDMxOCk7CisgICAgXzQ2NDctPmFkZCgxMjgpOworICAgIF80NjQ3LT5hZGQo
MTgwKTsKKyAgICBfNDY0Ny0+YWRkKDE3OSk7CisgICAgXzQ2NDctPmFkZCgyNTgzKTsKKyAgICBf
NDY0Ny0+YWRkKDI3NjMpOworICAgIF80NjQ3LT5hZGQoNzA2KTsKKyAgICBfNDY0Ny0+YWRkKDI1
Myk7CisgICAgXzQ2NDctPmFkZCgyODIpOworICAgIF80NjQ3LT5hZGQoMTA3NSk7CisgICAgXzQ2
NDctPmFkZCg2NjEpOworICAgIF80NjQ3LT5hZGQoMjM5OSk7CisgICAgXzQ2NDctPmFkZCg5Njgp
OworICAgIF80NjQ3LT5hZGQoMTQ5KTsKKyAgICBfNDY0Ny0+YWRkKDExNDYpOworICAgIF80NjQ3
LT5hZGQoMjczKTsKKyAgICBfNDY0Ny0+YWRkKDIzOTgpOworICAgIF80NjQ3LT5hZGQoMjI4KTsK
KyAgICBfNDY0Ny0+YWRkKDE0Mik7CisgICAgXzQ2NDctPmFkZCgxMDQpOworICAgIF80NjQ3LT5h
ZGQoMzA5KTsKKyAgICBfNDY0Ny0+YWRkKDE5Mik7CisgICAgXzQ2NDctPmFkZCgxMTMpOworICAg
IF80NjQ3LT5hZGQoMzQ1KTsKKyAgICBfNDY0Ny0+YWRkKDE2Nyk7CisgICAgXzQ2NDctPmFkZCgz
MzgpOworICAgIF80NjQ3LT5hZGQoMjE2KTsKKyAgICBfNDY0Ny0+YWRkKDEzOSk7CisgICAgXzQ2
NDctPmFkZCgyNDMpOworICAgIF80NjQ3LT5hZGQoMik7CisgICAgXzQ2NDctPmFkZCgyNDgpOwor
ICAgIF80NjQ3LT5hZGQoMzU2KTsKKyAgICBfNDY0Ny0+YWRkKDI0MCk7CisgICAgXzQ2NDctPmFk
ZCgyNzYyKTsKKyAgICBfNDY0OC0+YWRkKDIwNCk7CisgICAgXzQ2NDgtPmFkZCg5MzUpOworICAg
IF80NjQ4LT5hZGQoOTkyKTsKKyAgICBfNDY0OC0+YWRkKDE1Nik7CisgICAgXzQ2NDgtPmFkZCgz
MTgpOworICAgIF80NjQ4LT5hZGQoMTI4KTsKKyAgICBfNDY0OC0+YWRkKDE4MCk7CisgICAgXzQ2
NDgtPmFkZCgxNzkpOworICAgIF80NjQ4LT5hZGQoMjU4Myk7CisgICAgXzQ2NDgtPmFkZCgyNzYz
KTsKKyAgICBfNDY0OC0+YWRkKDcwNik7CisgICAgXzQ2NDgtPmFkZCgyNTMpOworICAgIF80NjQ4
LT5hZGQoMjgyKTsKKyAgICBfNDY0OC0+YWRkKDEwNzUpOworICAgIF80NjQ4LT5hZGQoNjYxKTsK
KyAgICBfNDY0OC0+YWRkKDIzOTkpOworICAgIF80NjQ4LT5hZGQoOTY4KTsKKyAgICBfNDY0OC0+
YWRkKDE0OSk7CisgICAgXzQ2NDgtPmFkZCgxMTQ2KTsKKyAgICBfNDY0OC0+YWRkKDI3Myk7Cisg
ICAgXzQ2NDgtPmFkZCgyMzk4KTsKKyAgICBfNDY0OC0+YWRkKDIyOCk7CisgICAgXzQ2NDgtPmFk
ZCgxNDIpOworICAgIF80NjQ4LT5hZGQoMTA0KTsKKyAgICBfNDY0OC0+YWRkKDMwOSk7CisgICAg
XzQ2NDgtPmFkZCgxOTIpOworICAgIF80NjQ4LT5hZGQoMTEzKTsKKyAgICBfNDY0OC0+YWRkKDM0
NSk7CisgICAgXzQ2NDgtPmFkZCgxNjcpOworICAgIF80NjQ4LT5hZGQoMzM4KTsKKyAgICBfNDY0
OC0+YWRkKDIxNik7CisgICAgXzQ2NDgtPmFkZCgxMzkpOworICAgIF80NjQ4LT5hZGQoMjQzKTsK
KyAgICBfNDY0OC0+YWRkKDIpOworICAgIF80NjQ4LT5hZGQoMjQ4KTsKKyAgICBfNDY0OC0+YWRk
KDM1Nik7CisgICAgXzQ2NDgtPmFkZCgyNDApOworICAgIF80NjQ4LT5hZGQoMjc2Mik7CisgICAg
XzQ2NDYtPmFkZCgyMDQpOworICAgIF80NjQ2LT5hZGQoOTM1KTsKKyAgICBfNDY0Ni0+YWRkKDk5
Mik7CisgICAgXzQ2NDYtPmFkZCgxNTYpOworICAgIF80NjQ2LT5hZGQoMTI4KTsKKyAgICBfNDY0
Ni0+YWRkKDE4MCk7CisgICAgXzQ2NDYtPmFkZCgxNzkpOworICAgIF80NjQ2LT5hZGQoNzA2KTsK
KyAgICBfNDY0Ni0+YWRkKDI1Myk7CisgICAgXzQ2NDYtPmFkZCgyODIpOworICAgIF80NjQ2LT5h
ZGQoMTA3NSk7CisgICAgXzQ2NDYtPmFkZCg2NjEpOworICAgIF80NjQ2LT5hZGQoMjM5OSk7Cisg
ICAgXzQ2NDYtPmFkZCg5NjgpOworICAgIF80NjQ2LT5hZGQoMTM5KTsKKyAgICBfNDY0Ni0+YWRk
KDE0OSk7CisgICAgXzQ2NDYtPmFkZCgxMTQ2KTsKKyAgICBfNDY0Ni0+YWRkKDI3Myk7CisgICAg
XzQ2NDYtPmFkZCgyMzk4KTsKKyAgICBfNDY0Ni0+YWRkKDIyOCk7CisgICAgXzQ2NDYtPmFkZCgy
NDApOworICAgIF80NjQ2LT5hZGQoMTQyKTsKKyAgICBfNDY0Ni0+YWRkKDEwNCk7CisgICAgXzQ2
NDYtPmFkZCgzNTYpOworICAgIF80NjQ2LT5hZGQoMzA5KTsKKyAgICBfNDY0Ni0+YWRkKDE5Mik7
CisgICAgXzQ2NDYtPmFkZCgxMTMpOworICAgIF80NjQ2LT5hZGQoMzQ1KTsKKyAgICBfNDY0Ni0+
YWRkKDE2Nyk7CisgICAgXzQ2NDYtPmFkZCgzMzgpOworICAgIF80NjQ2LT5hZGQoMjE2KTsKKyAg
ICBfNDY0Ni0+YWRkKDIpOworICAgIF80NjQ2LT5hZGQoMjQzKTsKKyAgICBfNDY0Ni0+YWRkKDI1
ODMpOworICAgIF80NjQ2LT5hZGQoMjQ4KTsKKyAgICBfNDY0Ni0+YWRkKDMxOCk7CisgICAgXzQ2
NDYtPmFkZCgyMzk0KTsKKyAgICBfNDY0Ni0+YWRkKDIzOTYpOworICAgIF80NjQ2LT5hZGQoMjA0
KTsKKyAgICBfNDY0Ni0+YWRkKDkzNSk7CisgICAgXzQ2NDYtPmFkZCg5OTIpOworICAgIF80NjQ2
LT5hZGQoMTU2KTsKKyAgICBfNDY0Ni0+YWRkKDEyOCk7CisgICAgXzQ2NDYtPmFkZCgxODApOwor
ICAgIF80NjQ2LT5hZGQoMTc5KTsKKyAgICBfNDY0Ni0+YWRkKDcwNik7CisgICAgXzQ2NDYtPmFk
ZCgyNTMpOworICAgIF80NjQ2LT5hZGQoMjgyKTsKKyAgICBfNDY0Ni0+YWRkKDEwNzUpOworICAg
IF80NjQ2LT5hZGQoNjYxKTsKKyAgICBfNDY0Ni0+YWRkKDIzOTkpOworICAgIF80NjQ2LT5hZGQo
OTY4KTsKKyAgICBfNDY0Ni0+YWRkKDEzOSk7CisgICAgXzQ2NDYtPmFkZCgxNDkpOworICAgIF80
NjQ2LT5hZGQoMTE0Nik7CisgICAgXzQ2NDYtPmFkZCgyNzMpOworICAgIF80NjQ2LT5hZGQoMjM5
OCk7CisgICAgXzQ2NDYtPmFkZCgyMjgpOworICAgIF80NjQ2LT5hZGQoMjQwKTsKKyAgICBfNDY0
Ni0+YWRkKDE0Mik7CisgICAgXzQ2NDYtPmFkZCgxMDQpOworICAgIF80NjQ2LT5hZGQoMzU2KTsK
KyAgICBfNDY0Ni0+YWRkKDMwOSk7CisgICAgXzQ2NDYtPmFkZCgxOTIpOworICAgIF80NjQ2LT5h
ZGQoMTEzKTsKKyAgICBfNDY0Ni0+YWRkKDM0NSk7CisgICAgXzQ2NDYtPmFkZCgxNjcpOworICAg
IF80NjQ2LT5hZGQoMzM4KTsKKyAgICBfNDY0Ni0+YWRkKDIxNik7CisgICAgXzQ2NDYtPmFkZCgy
KTsKKyAgICBfNDY0Ni0+YWRkKDI0Myk7CisgICAgXzQ2NDYtPmFkZCgyNTgzKTsKKyAgICBfNDY0
Ni0+YWRkKDI0OCk7CisgICAgXzQ2NDYtPmFkZCgzMTgpOworICAgIF80NjQ2LT5hZGQoMjM5MSk7
CisgICAgXzQ2NDYtPmFkZCgyMzk0KTsKKyAgICBfNDY0Ni0+YWRkKDIzOTYpOworICAgIF80NjQz
LT5hZGQoMjA0KTsKKyAgICBfNDY0My0+YWRkKDkzNSk7CisgICAgXzQ2NDMtPmFkZCg5OTIpOwor
ICAgIF80NjQzLT5hZGQoMTU2KTsKKyAgICBfNDY0My0+YWRkKDMxOCk7CisgICAgXzQ2NDMtPmFk
ZCgxMjgpOworICAgIF80NjQzLT5hZGQoMTgwKTsKKyAgICBfNDY0My0+YWRkKDE3OSk7CisgICAg
XzQ2NDMtPmFkZCgyNTgzKTsKKyAgICBfNDY0My0+YWRkKDcwNik7CisgICAgXzQ2NDMtPmFkZCgy
NTMpOworICAgIF80NjQzLT5hZGQoMjgyKTsKKyAgICBfNDY0My0+YWRkKDI0MCk7CisgICAgXzQ2
NDMtPmFkZCgxMDc1KTsKKyAgICBfNDY0My0+YWRkKDY2MSk7CisgICAgXzQ2NDMtPmFkZCgyMzk5
KTsKKyAgICBfNDY0My0+YWRkKDk2OCk7CisgICAgXzQ2NDMtPmFkZCgxNDkpOworICAgIF80NjQz
LT5hZGQoMTE0Nik7CisgICAgXzQ2NDMtPmFkZCgyNzMpOworICAgIF80NjQzLT5hZGQoMjM5OCk7
CisgICAgXzQ2NDMtPmFkZCgyMjgpOworICAgIF80NjQzLT5hZGQoMTQyKTsKKyAgICBfNDY0My0+
YWRkKDEwNCk7CisgICAgXzQ2NDMtPmFkZCgzMDkpOworICAgIF80NjQzLT5hZGQoMTkyKTsKKyAg
ICBfNDY0My0+YWRkKDExMyk7CisgICAgXzQ2NDMtPmFkZCgzNDUpOworICAgIF80NjQzLT5hZGQo
MTY3KTsKKyAgICBfNDY0My0+YWRkKDMzOCk7CisgICAgXzQ2NDMtPmFkZCgyMTYpOworICAgIF80
NjQzLT5hZGQoMjM5NCk7CisgICAgXzQ2NDMtPmFkZCgxMzkpOworICAgIF80NjQzLT5hZGQoMjQz
KTsKKyAgICBfNDY0My0+YWRkKDIpOworICAgIF80NjQzLT5hZGQoMjQ4KTsKKyAgICBfNDY0My0+
YWRkKDM1Nik7CisgICAgXzQ2NDMtPmFkZCgyMzk2KTsKKyAgICBfNDY0My0+YWRkKDI3NjEpOwor
ICAgIF80NjQ1LT5hZGQoMjA0KTsKKyAgICBfNDY0NS0+YWRkKDkzNSk7CisgICAgXzQ2NDUtPmFk
ZCg5OTIpOworICAgIF80NjQ1LT5hZGQoMTU2KTsKKyAgICBfNDY0NS0+YWRkKDMxOCk7CisgICAg
XzQ2NDUtPmFkZCgxMjgpOworICAgIF80NjQ1LT5hZGQoMTgwKTsKKyAgICBfNDY0NS0+YWRkKDE3
OSk7CisgICAgXzQ2NDUtPmFkZCgyNTgzKTsKKyAgICBfNDY0NS0+YWRkKDcwNik7CisgICAgXzQ2
NDUtPmFkZCgyNTMpOworICAgIF80NjQ1LT5hZGQoMjgyKTsKKyAgICBfNDY0NS0+YWRkKDI0MCk7
CisgICAgXzQ2NDUtPmFkZCgxMDc1KTsKKyAgICBfNDY0NS0+YWRkKDY2MSk7CisgICAgXzQ2NDUt
PmFkZCgyMzk5KTsKKyAgICBfNDY0NS0+YWRkKDk2OCk7CisgICAgXzQ2NDUtPmFkZCgxNDkpOwor
ICAgIF80NjQ1LT5hZGQoMTE0Nik7CisgICAgXzQ2NDUtPmFkZCgyNzMpOworICAgIF80NjQ1LT5h
ZGQoMjM5OCk7CisgICAgXzQ2NDUtPmFkZCgyMjgpOworICAgIF80NjQ1LT5hZGQoMTQyKTsKKyAg
ICBfNDY0NS0+YWRkKDEwNCk7CisgICAgXzQ2NDUtPmFkZCgzMDkpOworICAgIF80NjQ1LT5hZGQo
MTkyKTsKKyAgICBfNDY0NS0+YWRkKDExMyk7CisgICAgXzQ2NDUtPmFkZCgzNDUpOworICAgIF80
NjQ1LT5hZGQoMTY3KTsKKyAgICBfNDY0NS0+YWRkKDMzOCk7CisgICAgXzQ2NDUtPmFkZCgyMTYp
OworICAgIF80NjQ1LT5hZGQoMjM5NCk7CisgICAgXzQ2NDUtPmFkZCgxMzkpOworICAgIF80NjQ1
LT5hZGQoMjQzKTsKKyAgICBfNDY0NS0+YWRkKDIpOworICAgIF80NjQ1LT5hZGQoMjQ4KTsKKyAg
ICBfNDY0NS0+YWRkKDM1Nik7CisgICAgXzQ2NDUtPmFkZCgyMzk2KTsKKyAgICBfNDY0NS0+YWRk
KDI3NjEpOworICAgIF80NjQxLT5hZGQoMjA0KTsKKyAgICBfNDY0MS0+YWRkKDE1Nik7CisgICAg
XzQ2NDEtPmFkZCg5MzUpOworICAgIF80NjQxLT5hZGQoOTkyKTsKKyAgICBfNDY0MS0+YWRkKDEy
OCk7CisgICAgXzQ2NDEtPmFkZCgxODApOworICAgIF80NjQxLT5hZGQoMTc5KTsKKyAgICBfNDY0
MS0+YWRkKDcwNik7CisgICAgXzQ2NDEtPmFkZCgyNTMpOworICAgIF80NjQxLT5hZGQoMjgyKTsK
KyAgICBfNDY0MS0+YWRkKDEwNzUpOworICAgIF80NjQxLT5hZGQoNjYxKTsKKyAgICBfNDY0MS0+
YWRkKDIzOTkpOworICAgIF80NjQxLT5hZGQoOTY4KTsKKyAgICBfNDY0MS0+YWRkKDE0OSk7Cisg
ICAgXzQ2NDEtPmFkZCgxMTQ2KTsKKyAgICBfNDY0MS0+YWRkKDI3Myk7CisgICAgXzQ2NDEtPmFk
ZCgyMzk4KTsKKyAgICBfNDY0MS0+YWRkKDIyOCk7CisgICAgXzQ2NDEtPmFkZCgyNDApOworICAg
IF80NjQxLT5hZGQoMTQyKTsKKyAgICBfNDY0MS0+YWRkKDEwNCk7CisgICAgXzQ2NDEtPmFkZCgz
NTYpOworICAgIF80NjQxLT5hZGQoMzA5KTsKKyAgICBfNDY0MS0+YWRkKDE5Mik7CisgICAgXzQ2
NDEtPmFkZCgxMTMpOworICAgIF80NjQxLT5hZGQoMzQ1KTsKKyAgICBfNDY0MS0+YWRkKDE2Nyk7
CisgICAgXzQ2NDEtPmFkZCgzMzgpOworICAgIF80NjQxLT5hZGQoMjE2KTsKKyAgICBfNDY0MS0+
YWRkKDIzOTQpOworICAgIF80NjQxLT5hZGQoMTM5KTsKKyAgICBfNDY0MS0+YWRkKDIpOworICAg
IF80NjQxLT5hZGQoMjQzKTsKKyAgICBfNDY0MS0+YWRkKDI1ODMpOworICAgIF80NjQxLT5hZGQo
MjQ4KTsKKyAgICBfNDY0MS0+YWRkKDMxOCk7CisgICAgXzQ2NDEtPmFkZCgyMzk2KTsKKyAgICBf
NDY0Mi0+YWRkKDIzOTIpOworICAgIF80NjQyLT5hZGQoMjU4Myk7CisgICAgXzQ2NDItPmFkZCgy
MDQpOworICAgIF80NjQyLT5hZGQoMTU2KTsKKyAgICBfNDY0Mi0+YWRkKDkzNSk7CisgICAgXzQ2
NDItPmFkZCg5OTIpOworICAgIF80NjQyLT5hZGQoMTI4KTsKKyAgICBfNDY0Mi0+YWRkKDE4MCk7
CisgICAgXzQ2NDItPmFkZCgxNzkpOworICAgIF80NjQyLT5hZGQoNzA2KTsKKyAgICBfNDY0Mi0+
YWRkKDI1Myk7CisgICAgXzQ2NDItPmFkZCgyODIpOworICAgIF80NjQyLT5hZGQoMTA3NSk7Cisg
ICAgXzQ2NDItPmFkZCg2NjEpOworICAgIF80NjQyLT5hZGQoMjM5OSk7CisgICAgXzQ2NDItPmFk
ZCg5NjgpOworICAgIF80NjQyLT5hZGQoMTQ5KTsKKyAgICBfNDY0Mi0+YWRkKDExNDYpOworICAg
IF80NjQyLT5hZGQoMjczKTsKKyAgICBfNDY0Mi0+YWRkKDIzOTgpOworICAgIF80NjQyLT5hZGQo
MjI4KTsKKyAgICBfNDY0Mi0+YWRkKDI0MCk7CisgICAgXzQ2NDItPmFkZCgxNDIpOworICAgIF80
NjQyLT5hZGQoMTA0KTsKKyAgICBfNDY0Mi0+YWRkKDM1Nik7CisgICAgXzQ2NDItPmFkZCgzMDkp
OworICAgIF80NjQyLT5hZGQoMTkyKTsKKyAgICBfNDY0Mi0+YWRkKDExMyk7CisgICAgXzQ2NDIt
PmFkZCgzNDUpOworICAgIF80NjQyLT5hZGQoMTY3KTsKKyAgICBfNDY0Mi0+YWRkKDMzOCk7Cisg
ICAgXzQ2NDItPmFkZCgyMTYpOworICAgIF80NjQyLT5hZGQoMjM5NCk7CisgICAgXzQ2NDItPmFk
ZCgxMzkpOworICAgIF80NjQyLT5hZGQoMik7CisgICAgXzQ2NDItPmFkZCgyNDMpOworICAgIF80
NjQyLT5hZGQoMjU4Myk7CisgICAgXzQ2NDItPmFkZCgyNDgpOworICAgIF80NjQyLT5hZGQoMzE4
KTsKKyAgICBfNDY0Mi0+YWRkKDIzOTYpOworICAgIF80NjQyLT5hZGQoMjM5Mik7CisgICAgXzQ2
NDEtPmFkZCgyMDQpOworICAgIF80NjQxLT5hZGQoOTM1KTsKKyAgICBfNDY0MS0+YWRkKDk5Mik7
CisgICAgXzQ2NDEtPmFkZCgxNTYpOworICAgIF80NjQxLT5hZGQoMzE4KTsKKyAgICBfNDY0MS0+
YWRkKDEyOCk7CisgICAgXzQ2NDEtPmFkZCgxODApOworICAgIF80NjQxLT5hZGQoMTc5KTsKKyAg
ICBfNDY0MS0+YWRkKDcwNik7CisgICAgXzQ2NDEtPmFkZCgyNTMpOworICAgIF80NjQxLT5hZGQo
MjgyKTsKKyAgICBfNDY0MS0+YWRkKDEwNzUpOworICAgIF80NjQxLT5hZGQoNjYxKTsKKyAgICBf
NDY0MS0+YWRkKDIzOTkpOworICAgIF80NjQxLT5hZGQoOTY4KTsKKyAgICBfNDY0MS0+YWRkKDE0
OSk7CisgICAgXzQ2NDEtPmFkZCgxMTQ2KTsKKyAgICBfNDY0MS0+YWRkKDI3Myk7CisgICAgXzQ2
NDEtPmFkZCgyMzk4KTsKKyAgICBfNDY0MS0+YWRkKDIyOCk7CisgICAgXzQ2NDEtPmFkZCgxNDIp
OworICAgIF80NjQxLT5hZGQoMTA0KTsKKyAgICBfNDY0MS0+YWRkKDMwOSk7CisgICAgXzQ2NDEt
PmFkZCgxOTIpOworICAgIF80NjQxLT5hZGQoMTEzKTsKKyAgICBfNDY0MS0+YWRkKDM0NSk7Cisg
ICAgXzQ2NDEtPmFkZCgxNjcpOworICAgIF80NjQxLT5hZGQoMjM5Mik7CisgICAgXzQ2NDEtPmFk
ZCgzMzgpOworICAgIF80NjQxLT5hZGQoMjE2KTsKKyAgICBfNDY0MS0+YWRkKDIzOTQpOworICAg
IF80NjQxLT5hZGQoMTM5KTsKKyAgICBfNDY0MS0+YWRkKDIpOworICAgIF80NjQxLT5hZGQoMjQz
KTsKKyAgICBfNDY0MS0+YWRkKDI1ODMpOworICAgIF80NjQxLT5hZGQoMjQ4KTsKKyAgICBfNDY0
MS0+YWRkKDM1Nik7CisgICAgXzQ2NDEtPmFkZCgyMzk2KTsKKyAgICBfNDY0MS0+YWRkKDI0MCk7
CisgICAgXzQ2NDEtPmFkZCg0NDEpOworICAgIF80NjQxLT5hZGQoMzkwKTsKKyAgICBfNDY0MC0+
YWRkKDIwNCk7CisgICAgXzQ2NDAtPmFkZCg5MzUpOworICAgIF80NjQwLT5hZGQoOTkyKTsKKyAg
ICBfNDY0MC0+YWRkKDE1Nik7CisgICAgXzQ2NDAtPmFkZCgzMTgpOworICAgIF80NjQwLT5hZGQo
MTI4KTsKKyAgICBfNDY0MC0+YWRkKDE4MCk7CisgICAgXzQ2NDAtPmFkZCgxNzkpOworICAgIF80
NjQwLT5hZGQoMjU4Myk7CisgICAgXzQ2NDAtPmFkZCg3MDYpOworICAgIF80NjQwLT5hZGQoMjUz
KTsKKyAgICBfNDY0MC0+YWRkKDI4Mik7CisgICAgXzQ2NDAtPmFkZCgxMDc1KTsKKyAgICBfNDY0
MC0+YWRkKDY2MSk7CisgICAgXzQ2NDAtPmFkZCgyMzk5KTsKKyAgICBfNDY0MC0+YWRkKDk2OCk7
CisgICAgXzQ2NDAtPmFkZCgxNDkpOworICAgIF80NjQwLT5hZGQoMTE0Nik7CisgICAgXzQ2NDAt
PmFkZCgyNzMpOworICAgIF80NjQwLT5hZGQoMjM5OCk7CisgICAgXzQ2NDAtPmFkZCgyMjgpOwor
ICAgIF80NjQwLT5hZGQoMTQyKTsKKyAgICBfNDY0MC0+YWRkKDEwNCk7CisgICAgXzQ2NDAtPmFk
ZCgzNTYpOworICAgIF80NjQwLT5hZGQoMzA5KTsKKyAgICBfNDY0MC0+YWRkKDE5Mik7CisgICAg
XzQ2NDAtPmFkZCgxMTMpOworICAgIF80NjQwLT5hZGQoMzQ1KTsKKyAgICBfNDY0MC0+YWRkKDM5
MCk7CisgICAgXzQ2NDAtPmFkZCgxNjcpOworICAgIF80NjQwLT5hZGQoMjQwKTsKKyAgICBfNDY0
MC0+YWRkKDMzOCk7CisgICAgXzQ2NDAtPmFkZCgyMTYpOworICAgIF80NjQwLT5hZGQoMjM5NCk7
CisgICAgXzQ2NDAtPmFkZCg0NDEpOworICAgIF80NjQwLT5hZGQoMjQzKTsKKyAgICBfNDY0MC0+
YWRkKDIpOworICAgIF80NjQwLT5hZGQoMjQ4KTsKKyAgICBfNDY0MC0+YWRkKDEzOSk7CisgICAg
XzQ2NDAtPmFkZCgyMzk2KTsKKyAgICBfNDY0MC0+YWRkKDI3NjApOworICAgIF80NjQ0LT5hZGQo
MjA0KTsKKyAgICBfNDY0NC0+YWRkKDkzNSk7CisgICAgXzQ2NDQtPmFkZCg5OTIpOworICAgIF80
NjQ0LT5hZGQoMTU2KTsKKyAgICBfNDY0NC0+YWRkKDMxOCk7CisgICAgXzQ2NDQtPmFkZCgxMjgp
OworICAgIF80NjQ0LT5hZGQoMTgwKTsKKyAgICBfNDY0NC0+YWRkKDE3OSk7CisgICAgXzQ2NDQt
PmFkZCgyNTgzKTsKKyAgICBfNDY0NC0+YWRkKDcwNik7CisgICAgXzQ2NDQtPmFkZCgyNTMpOwor
ICAgIF80NjQ0LT5hZGQoMjgyKTsKKyAgICBfNDY0NC0+YWRkKDEwNzUpOworICAgIF80NjQ0LT5h
ZGQoNjYxKTsKKyAgICBfNDY0NC0+YWRkKDIzOTkpOworICAgIF80NjQ0LT5hZGQoOTY4KTsKKyAg
ICBfNDY0NC0+YWRkKDE0OSk7CisgICAgXzQ2NDQtPmFkZCgxMTQ2KTsKKyAgICBfNDY0NC0+YWRk
KDI3Myk7CisgICAgXzQ2NDQtPmFkZCgyMzk4KTsKKyAgICBfNDY0NC0+YWRkKDIyOCk7CisgICAg
XzQ2NDQtPmFkZCgxNDIpOworICAgIF80NjQ0LT5hZGQoMTA0KTsKKyAgICBfNDY0NC0+YWRkKDM1
Nik7CisgICAgXzQ2NDQtPmFkZCgzMDkpOworICAgIF80NjQ0LT5hZGQoMTkyKTsKKyAgICBfNDY0
NC0+YWRkKDExMyk7CisgICAgXzQ2NDQtPmFkZCgzNDUpOworICAgIF80NjQ0LT5hZGQoMzkwKTsK
KyAgICBfNDY0NC0+YWRkKDE2Nyk7CisgICAgXzQ2NDQtPmFkZCgyNDApOworICAgIF80NjQ0LT5h
ZGQoMzM4KTsKKyAgICBfNDY0NC0+YWRkKDIxNik7CisgICAgXzQ2NDQtPmFkZCgyMzk0KTsKKyAg
ICBfNDY0NC0+YWRkKDQ0MSk7CisgICAgXzQ2NDQtPmFkZCgyNDMpOworICAgIF80NjQ0LT5hZGQo
Mik7CisgICAgXzQ2NDQtPmFkZCgyNDgpOworICAgIF80NjQ0LT5hZGQoMTM5KTsKKyAgICBfNDY0
NC0+YWRkKDIzOTYpOworICAgIF80NjQ0LT5hZGQoMjc2MCk7CisgICAgXzQ2MzgtPmFkZCgyMDQp
OworICAgIF80NjM4LT5hZGQoOTM1KTsKKyAgICBfNDYzOC0+YWRkKDk5Mik7CisgICAgXzQ2Mzgt
PmFkZCgxNTYpOworICAgIF80NjM4LT5hZGQoMzE4KTsKKyAgICBfNDYzOC0+YWRkKDEyOCk7Cisg
ICAgXzQ2MzgtPmFkZCgxODApOworICAgIF80NjM4LT5hZGQoMTc5KTsKKyAgICBfNDYzOC0+YWRk
KDcwNik7CisgICAgXzQ2MzgtPmFkZCgyNTMpOworICAgIF80NjM4LT5hZGQoMjgyKTsKKyAgICBf
NDYzOC0+YWRkKDI0MCk7CisgICAgXzQ2MzgtPmFkZCgxMDc1KTsKKyAgICBfNDYzOC0+YWRkKDY2
MSk7CisgICAgXzQ2MzgtPmFkZCgyMzk5KTsKKyAgICBfNDYzOC0+YWRkKDk2OCk7CisgICAgXzQ2
MzgtPmFkZCgxNDkpOworICAgIF80NjM4LT5hZGQoMTE0Nik7CisgICAgXzQ2MzgtPmFkZCgyNzMp
OworICAgIF80NjM4LT5hZGQoMjM5OCk7CisgICAgXzQ2MzgtPmFkZCgyMjgpOworICAgIF80NjM4
LT5hZGQoMTQyKTsKKyAgICBfNDYzOC0+YWRkKDEwNCk7CisgICAgXzQ2MzgtPmFkZCgzMDkpOwor
ICAgIF80NjM4LT5hZGQoMTkyKTsKKyAgICBfNDYzOC0+YWRkKDExMyk7CisgICAgXzQ2MzgtPmFk
ZCgzNDUpOworICAgIF80NjM4LT5hZGQoMjc1OSk7CisgICAgXzQ2MzgtPmFkZCgxNjcpOworICAg
IF80NjM4LT5hZGQoMzM4KTsKKyAgICBfNDYzOC0+YWRkKDIxNik7CisgICAgXzQ2MzgtPmFkZCgz
NTYpOworICAgIF80NjM4LT5hZGQoNDQxKTsKKyAgICBfNDYzOC0+YWRkKDEzOSk7CisgICAgXzQ2
MzgtPmFkZCgyKTsKKyAgICBfNDYzOC0+YWRkKDI0Myk7CisgICAgXzQ2MzgtPmFkZCgyNTgzKTsK
KyAgICBfNDYzOC0+YWRkKDI0OCk7CisgICAgXzQ2MzgtPmFkZCgyNzU4KTsKKyAgICBfNDYzOS0+
YWRkKDIwNCk7CisgICAgXzQ2MzktPmFkZCg5MzUpOworICAgIF80NjM5LT5hZGQoOTkyKTsKKyAg
ICBfNDYzOS0+YWRkKDE1Nik7CisgICAgXzQ2MzktPmFkZCgzMTgpOworICAgIF80NjM5LT5hZGQo
MTI4KTsKKyAgICBfNDYzOS0+YWRkKDE4MCk7CisgICAgXzQ2MzktPmFkZCgxNzkpOworICAgIF80
NjM5LT5hZGQoNzA2KTsKKyAgICBfNDYzOS0+YWRkKDI1Myk7CisgICAgXzQ2MzktPmFkZCgyODIp
OworICAgIF80NjM5LT5hZGQoMjQwKTsKKyAgICBfNDYzOS0+YWRkKDEwNzUpOworICAgIF80NjM5
LT5hZGQoNjYxKTsKKyAgICBfNDYzOS0+YWRkKDIzOTkpOworICAgIF80NjM5LT5hZGQoOTY4KTsK
KyAgICBfNDYzOS0+YWRkKDE0OSk7CisgICAgXzQ2MzktPmFkZCgxMTQ2KTsKKyAgICBfNDYzOS0+
YWRkKDI3Myk7CisgICAgXzQ2MzktPmFkZCgyMzk4KTsKKyAgICBfNDYzOS0+YWRkKDIyOCk7Cisg
ICAgXzQ2MzktPmFkZCgxNDIpOworICAgIF80NjM5LT5hZGQoMTA0KTsKKyAgICBfNDYzOS0+YWRk
KDMwOSk7CisgICAgXzQ2MzktPmFkZCgxOTIpOworICAgIF80NjM5LT5hZGQoMTEzKTsKKyAgICBf
NDYzOS0+YWRkKDM0NSk7CisgICAgXzQ2MzktPmFkZCgyNzU5KTsKKyAgICBfNDYzOS0+YWRkKDE2
Nyk7CisgICAgXzQ2MzktPmFkZCgzMzgpOworICAgIF80NjM5LT5hZGQoMjE2KTsKKyAgICBfNDYz
OS0+YWRkKDM1Nik7CisgICAgXzQ2MzktPmFkZCg0NDEpOworICAgIF80NjM5LT5hZGQoMTM5KTsK
KyAgICBfNDYzOS0+YWRkKDIpOworICAgIF80NjM5LT5hZGQoMjQzKTsKKyAgICBfNDYzOS0+YWRk
KDI1ODMpOworICAgIF80NjM5LT5hZGQoMjQ4KTsKKyAgICBfNDYzOS0+YWRkKDI3NTgpOworICAg
IF80NjQ5LT5hZGQoMjA0KTsKKyAgICBfNDY0OS0+YWRkKDkzNSk7CisgICAgXzQ2NDktPmFkZCg5
OTIpOworICAgIF80NjQ5LT5hZGQoMzE4KTsKKyAgICBfNDY0OS0+YWRkKDEyOCk7CisgICAgXzQ2
NDktPmFkZCgxODApOworICAgIF80NjQ5LT5hZGQoMTc5KTsKKyAgICBfNDY0OS0+YWRkKDI1ODMp
OworICAgIF80NjQ5LT5hZGQoMTU2KTsKKyAgICBfNDY0OS0+YWRkKDcwNik7CisgICAgXzQ2NDkt
PmFkZCgyNTMpOworICAgIF80NjQ5LT5hZGQoMjgyKTsKKyAgICBfNDY0OS0+YWRkKDEwNzUpOwor
ICAgIF80NjQ5LT5hZGQoNjYxKTsKKyAgICBfNDY0OS0+YWRkKDIzOTkpOworICAgIF80NjQ5LT5h
ZGQoOTY4KTsKKyAgICBfNDY0OS0+YWRkKDE0OSk7CisgICAgXzQ2NDktPmFkZCgxMTQ2KTsKKyAg
ICBfNDY0OS0+YWRkKDI3Myk7CisgICAgXzQ2NDktPmFkZCgyMzk4KTsKKyAgICBfNDY0OS0+YWRk
KDIyOCk7CisgICAgXzQ2NDktPmFkZCgyNDApOworICAgIF80NjQ5LT5hZGQoMTQyKTsKKyAgICBf
NDY0OS0+YWRkKDEwNCk7CisgICAgXzQ2NDktPmFkZCgzMDkpOworICAgIF80NjQ5LT5hZGQoMTky
KTsKKyAgICBfNDY0OS0+YWRkKDExMyk7CisgICAgXzQ2NDktPmFkZCgyMzk1KTsKKyAgICBfNDY0
OS0+YWRkKDM0NSk7CisgICAgXzQ2NDktPmFkZCgxNjcpOworICAgIF80NjQ5LT5hZGQoMzM4KTsK
KyAgICBfNDY0OS0+YWRkKDIxNik7CisgICAgXzQ2NDktPmFkZCg0NDEpOworICAgIF80NjQ5LT5h
ZGQoMTM5KTsKKyAgICBfNDY0OS0+YWRkKDI0Myk7CisgICAgXzQ2NDktPmFkZCgyKTsKKyAgICBf
NDY0OS0+YWRkKDI0OCk7CisgICAgXzQ2NDktPmFkZCgzNTYpOworICAgIF80NjQ5LT5hZGQoMjM5
Nyk7CisgICAgXzQ2MzctPmFkZCgyMDQpOworICAgIF80NjM3LT5hZGQoOTM1KTsKKyAgICBfNDYz
Ny0+YWRkKDk5Mik7CisgICAgXzQ2MzctPmFkZCgzMTgpOworICAgIF80NjM3LT5hZGQoMTI4KTsK
KyAgICBfNDYzNy0+YWRkKDE4MCk7CisgICAgXzQ2MzctPmFkZCgxNzkpOworICAgIF80NjM3LT5h
ZGQoMjU4Myk7CisgICAgXzQ2MzctPmFkZCgxNTYpOworICAgIF80NjM3LT5hZGQoNzA2KTsKKyAg
ICBfNDYzNy0+YWRkKDI1Myk7CisgICAgXzQ2MzctPmFkZCgyODIpOworICAgIF80NjM3LT5hZGQo
MTA3NSk7CisgICAgXzQ2MzctPmFkZCg2NjEpOworICAgIF80NjM3LT5hZGQoMjM5OSk7CisgICAg
XzQ2MzctPmFkZCg5NjgpOworICAgIF80NjM3LT5hZGQoMTQ5KTsKKyAgICBfNDYzNy0+YWRkKDEx
NDYpOworICAgIF80NjM3LT5hZGQoMjczKTsKKyAgICBfNDYzNy0+YWRkKDIzOTgpOworICAgIF80
NjM3LT5hZGQoMjI4KTsKKyAgICBfNDYzNy0+YWRkKDI0MCk7CisgICAgXzQ2MzctPmFkZCgxNDIp
OworICAgIF80NjM3LT5hZGQoMTA0KTsKKyAgICBfNDYzNy0+YWRkKDMwOSk7CisgICAgXzQ2Mzct
PmFkZCgxOTIpOworICAgIF80NjM3LT5hZGQoMTEzKTsKKyAgICBfNDYzNy0+YWRkKDM1Nik7Cisg
ICAgXzQ2MzctPmFkZCgzNDUpOworICAgIF80NjM3LT5hZGQoMTY3KTsKKyAgICBfNDYzNy0+YWRk
KDMzOCk7CisgICAgXzQ2MzctPmFkZCgyMTYpOworICAgIF80NjM3LT5hZGQoNDQxKTsKKyAgICBf
NDYzNy0+YWRkKDEzOSk7CisgICAgXzQ2MzctPmFkZCgyNDMpOworICAgIF80NjM3LT5hZGQoMik7
CisgICAgXzQ2MzctPmFkZCgyNDgpOworICAgIF80NjM3LT5hZGQoMzIzKTsKKyAgICBfNDYzNS0+
YWRkKDIwNCk7CisgICAgXzQ2MzUtPmFkZCg5MzUpOworICAgIF80NjM1LT5hZGQoOTkyKTsKKyAg
ICBfNDYzNS0+YWRkKDE1Nik7CisgICAgXzQ2MzUtPmFkZCgzNTYpOworICAgIF80NjM1LT5hZGQo
MTI4KTsKKyAgICBfNDYzNS0+YWRkKDE4MCk7CisgICAgXzQ2MzUtPmFkZCgxNzkpOworICAgIF80
NjM1LT5hZGQoMjU4Myk7CisgICAgXzQ2MzUtPmFkZCg3MDYpOworICAgIF80NjM1LT5hZGQoMjUz
KTsKKyAgICBfNDYzNS0+YWRkKDI4Mik7CisgICAgXzQ2MzUtPmFkZCgxMDc1KTsKKyAgICBfNDYz
NS0+YWRkKDY2MSk7CisgICAgXzQ2MzUtPmFkZCgyNzU3KTsKKyAgICBfNDYzNS0+YWRkKDk2OCk7
CisgICAgXzQ2MzUtPmFkZCgxNDkpOworICAgIF80NjM1LT5hZGQoMTE0Nik7CisgICAgXzQ2MzUt
PmFkZCgyNzMpOworICAgIF80NjM1LT5hZGQoMjQ4KTsKKyAgICBfNDYzNS0+YWRkKDIyOCk7Cisg
ICAgXzQ2MzUtPmFkZCgxNDIpOworICAgIF80NjM1LT5hZGQoMTA0KTsKKyAgICBfNDYzNS0+YWRk
KDMwOSk7CisgICAgXzQ2MzUtPmFkZCgxOTIpOworICAgIF80NjM1LT5hZGQoMTEzKTsKKyAgICBf
NDYzNS0+YWRkKDI0MCk7CisgICAgXzQ2MzUtPmFkZCgzNDUpOworICAgIF80NjM1LT5hZGQoMTY3
KTsKKyAgICBfNDYzNS0+YWRkKDMzOCk7CisgICAgXzQ2MzUtPmFkZCgyMTYpOworICAgIF80NjM1
LT5hZGQoNDQxKTsKKyAgICBfNDYzNS0+YWRkKDEzOSk7CisgICAgXzQ2MzUtPmFkZCgyNDMpOwor
ICAgIF80NjM1LT5hZGQoMik7CisgICAgXzQ2MzUtPmFkZCgyNzU2KTsKKyAgICBfNDYzNi0+YWRk
KDIwNCk7CisgICAgXzQ2MzYtPmFkZCg5MzUpOworICAgIF80NjM2LT5hZGQoOTkyKTsKKyAgICBf
NDYzNi0+YWRkKDE1Nik7CisgICAgXzQ2MzYtPmFkZCgzNTYpOworICAgIF80NjM2LT5hZGQoMTI4
KTsKKyAgICBfNDYzNi0+YWRkKDE4MCk7CisgICAgXzQ2MzYtPmFkZCgxNzkpOworICAgIF80NjM2
LT5hZGQoMjU4Myk7CisgICAgXzQ2MzYtPmFkZCg3MDYpOworICAgIF80NjM2LT5hZGQoMjUzKTsK
KyAgICBfNDYzNi0+YWRkKDI4Mik7CisgICAgXzQ2MzYtPmFkZCgxMDc1KTsKKyAgICBfNDYzNi0+
YWRkKDY2MSk7CisgICAgXzQ2MzYtPmFkZCgyNzU3KTsKKyAgICBfNDYzNi0+YWRkKDk2OCk7Cisg
ICAgXzQ2MzYtPmFkZCgxNDkpOworICAgIF80NjM2LT5hZGQoMTE0Nik7CisgICAgXzQ2MzYtPmFk
ZCgyNzMpOworICAgIF80NjM2LT5hZGQoMjQ4KTsKKyAgICBfNDYzNi0+YWRkKDIyOCk7CisgICAg
XzQ2MzYtPmFkZCgxNDIpOworICAgIF80NjM2LT5hZGQoMTA0KTsKKyAgICBfNDYzNi0+YWRkKDMw
OSk7CisgICAgXzQ2MzYtPmFkZCgxOTIpOworICAgIF80NjM2LT5hZGQoMTEzKTsKKyAgICBfNDYz
Ni0+YWRkKDI0MCk7CisgICAgXzQ2MzYtPmFkZCgzNDUpOworICAgIF80NjM2LT5hZGQoMTY3KTsK
KyAgICBfNDYzNi0+YWRkKDMzOCk7CisgICAgXzQ2MzYtPmFkZCgyMTYpOworICAgIF80NjM2LT5h
ZGQoNDQxKTsKKyAgICBfNDYzNi0+YWRkKDEzOSk7CisgICAgXzQ2MzYtPmFkZCgyNDMpOworICAg
IF80NjM2LT5hZGQoMik7CisgICAgXzQ2MzYtPmFkZCgyNzU2KTsKKyAgICBfNDY1OC0+YWRkKDIw
NCk7CisgICAgXzQ2NTgtPmFkZCg5MzUpOworICAgIF80NjU4LT5hZGQoOTkyKTsKKyAgICBfNDY1
OC0+YWRkKDE1Nik7CisgICAgXzQ2NTgtPmFkZCgyNDApOworICAgIF80NjU4LT5hZGQoMTI4KTsK
KyAgICBfNDY1OC0+YWRkKDE4MCk7CisgICAgXzQ2NTgtPmFkZCgxNzkpOworICAgIF80NjU4LT5h
ZGQoODkxKTsKKyAgICBfNDY1OC0+YWRkKDcwNik7CisgICAgXzQ2NTgtPmFkZCgyNTMpOworICAg
IF80NjU4LT5hZGQoMjgyKTsKKyAgICBfNDY1OC0+YWRkKDEwNzUpOworICAgIF80NjU4LT5hZGQo
NjYxKTsKKyAgICBfNDY1OC0+YWRkKDk2OCk7CisgICAgXzQ2NTgtPmFkZCgxNDkpOworICAgIF80
NjU4LT5hZGQoMTE0Nik7CisgICAgXzQ2NTgtPmFkZCgyNzMpOworICAgIF80NjU4LT5hZGQoMjI4
KTsKKyAgICBfNDY1OC0+YWRkKDE0Mik7CisgICAgXzQ2NTgtPmFkZCgxMDQpOworICAgIF80NjU4
LT5hZGQoMzA5KTsKKyAgICBfNDY1OC0+YWRkKDE5Mik7CisgICAgXzQ2NTgtPmFkZCgxMTMpOwor
ICAgIF80NjU4LT5hZGQoMzQ1KTsKKyAgICBfNDY1OC0+YWRkKDE2Nyk7CisgICAgXzQ2NTgtPmFk
ZCgzMzgpOworICAgIF80NjU4LT5hZGQoMjE2KTsKKyAgICBfNDY1OC0+YWRkKDQ0MSk7CisgICAg
XzQ2NTgtPmFkZCgxMzkpOworICAgIF80NjU4LT5hZGQoMik7CisgICAgXzQ2NTgtPmFkZCgyNDMp
OworICAgIF80NjU4LT5hZGQoMjU4Myk7CisgICAgXzQ2NTgtPmFkZCgyNDgpOworICAgIF80NjU4
LT5hZGQoMzU2KTsKKyAgICBfNDY1OC0+YWRkKDkxNSk7CisgICAgXzQ3MDAtPmFkZCgxNzkpOwor
ICAgIF80NzAwLT5hZGQoMTUxNik7CisgICAgXzQ3MDAtPmFkZCgxMDc1KTsKKyAgICBfNDcwMC0+
YWRkKDI3Myk7CisgICAgXzQ3MDAtPmFkZCg5NjgpOworICAgIF80NzAwLT5hZGQoMTE0Nik7Cisg
ICAgXzQ2OTktPmFkZCgxNzkpOworICAgIF80Njk5LT5hZGQoMTUxNik7CisgICAgXzQ2OTktPmFk
ZCgxMDc1KTsKKyAgICBfNDY5OS0+YWRkKDI3Myk7CisgICAgXzQ2OTktPmFkZCg5NjgpOworICAg
IF80Njk5LT5hZGQoMTE0Nik7CisgICAgXzQ2OTUtPmFkZCg5NjgpOworICAgIF80Njk1LT5hZGQo
MTE0Nik7CisgICAgXzQ2OTUtPmFkZCgxNTE2KTsKKyAgICBfNDY5NS0+YWRkKDE3OSk7CisgICAg
XzQ2OTUtPmFkZCgyNzMpOworICAgIF80Njk1LT5hZGQoMTA3NSk7CisgICAgXzQ2OTgtPmFkZCg5
NjgpOworICAgIF80Njk4LT5hZGQoMTE0Nik7CisgICAgXzQ2OTgtPmFkZCgxNTE2KTsKKyAgICBf
NDY5OC0+YWRkKDE3OSk7CisgICAgXzQ2OTgtPmFkZCgyNzMpOworICAgIF80Njk4LT5hZGQoMTA3
NSk7CisgICAgXzQ2OTctPmFkZCgyNzMpOworICAgIF80Njk3LT5hZGQoMTA3NSk7CisgICAgXzQ2
OTctPmFkZCgxMTQ2KTsKKyAgICBfNDY5Ny0+YWRkKDk2OCk7CisgICAgXzQ2OTYtPmFkZCgyNzMp
OworICAgIF80Njk2LT5hZGQoMTA3NSk7CisgICAgXzQ2OTYtPmFkZCgxMTQ2KTsKKyAgICBfNDY5
Ni0+YWRkKDk2OCk7CisgICAgXzQ2OTUtPmFkZCgxMDc1KTsKKyAgICBfNDY5NS0+YWRkKDk2OCk7
CisgICAgXzQ2OTUtPmFkZCgyNzMpOworICAgIF80Njk1LT5hZGQoMTE0Nik7CisgICAgXzQ2OTgt
PmFkZCgyNzMpOworICAgIF80Njk4LT5hZGQoOTY4KTsKKyAgICBfNDY5OC0+YWRkKDExNDYpOwor
ICAgIF80Njk4LT5hZGQoMTA3NSk7CisgICAgXzQ2NzYtPmFkZCgxMDI4KTsKKyAgICBfNDY3NS0+
YWRkKDEwMjgpOworICAgIF80NjcxLT5hZGQoMTAyOCk7CisgICAgXzQ2NzQtPmFkZCgxMDI4KTsK
KyAgICBfNDY1Ny0+YWRkKDQ0MSk7CisgICAgXzQ2NTctPmFkZCg2NjEpOworICAgIF80NjU3LT5h
ZGQoNzA2KTsKKyAgICBfNDY1Ni0+YWRkKDQ0MSk7CisgICAgXzQ2NTYtPmFkZCg2NjEpOworICAg
IF80NjU2LT5hZGQoNzA2KTsKKyAgICBfNDY1Mi0+YWRkKDcwNik7CisgICAgXzQ2NTItPmFkZCg2
NjEpOworICAgIF80NjUyLT5hZGQoNDQxKTsKKyAgICBfNDY1NS0+YWRkKDQ0MSk7CisgICAgXzQ2
NTUtPmFkZCg2NjEpOworICAgIF80NjU1LT5hZGQoNzA2KTsKKyAgICBfNDY1My0+YWRkKDQ0MSk7
CisgICAgXzQ2NTMtPmFkZCg2NjEpOworICAgIF80NjU0LT5hZGQoNDQxKTsKKyAgICBfNDY1NC0+
YWRkKDY2MSk7CisgICAgXzQ2NTUtPmFkZCg0NDEpOworICAgIF80NjU1LT5hZGQoNjYxKTsKKyAg
ICBfNDY1Mi0+YWRkKDY2MSk7CisgICAgXzQ2NTItPmFkZCg0NDEpOworICAgIF80NjUwLT5hZGQo
NDQxKTsKKyAgICBfNDY1MS0+YWRkKDQ0MSk7CisgICAgXzQ2NDktPmFkZCg0NDEpOworICAgIF80
NjM3LT5hZGQoNDQxKTsKKyAgICBfNDY0Ny0+YWRkKDQ0MSk7CisgICAgXzQ2NDgtPmFkZCg0NDEp
OworICAgIF80NjQ2LT5hZGQoNDQxKTsKKyAgICBfNDY0Ni0+YWRkKDQ0MSk7CisgICAgXzQ2NDMt
PmFkZCg0NDEpOworICAgIF80NjQ1LT5hZGQoNDQxKTsKKyAgICBfNDY0MS0+YWRkKDQ0MSk7Cisg
ICAgXzQ2NDItPmFkZCgyMDQpOworICAgIF80NjQyLT5hZGQoOTM1KTsKKyAgICBfNDY0Mi0+YWRk
KDk5Mik7CisgICAgXzQ2NDItPmFkZCgxNTYpOworICAgIF80NjQyLT5hZGQoMzE4KTsKKyAgICBf
NDY0Mi0+YWRkKDEyOCk7CisgICAgXzQ2NDItPmFkZCgxODApOworICAgIF80NjQyLT5hZGQoMTc5
KTsKKyAgICBfNDY0Mi0+YWRkKDcwNik7CisgICAgXzQ2NDItPmFkZCgyNTMpOworICAgIF80NjQy
LT5hZGQoMjgyKTsKKyAgICBfNDY0Mi0+YWRkKDI0MCk7CisgICAgXzQ2NDItPmFkZCgxMDc1KTsK
KyAgICBfNDY0Mi0+YWRkKDY2MSk7CisgICAgXzQ2NDItPmFkZCgyMzk5KTsKKyAgICBfNDY0Mi0+
YWRkKDk2OCk7CisgICAgXzQ2NDItPmFkZCgxNDkpOworICAgIF80NjQyLT5hZGQoMTE0Nik7Cisg
ICAgXzQ2NDItPmFkZCgyNzMpOworICAgIF80NjQyLT5hZGQoMjM5OCk7CisgICAgXzQ2NDItPmFk
ZCgyMjgpOworICAgIF80NjQyLT5hZGQoMTQyKTsKKyAgICBfNDY0Mi0+YWRkKDEwNCk7CisgICAg
XzQ2NDItPmFkZCgzMDkpOworICAgIF80NjQyLT5hZGQoMTkyKTsKKyAgICBfNDY0Mi0+YWRkKDEx
Myk7CisgICAgXzQ2NDItPmFkZCgzNDUpOworICAgIF80NjQyLT5hZGQoMzkwKTsKKyAgICBfNDY0
Mi0+YWRkKDE2Nyk7CisgICAgXzQ2NDItPmFkZCgzMzgpOworICAgIF80NjQyLT5hZGQoMjE2KTsK
KyAgICBfNDY0Mi0+YWRkKDIzOTQpOworICAgIF80NjQyLT5hZGQoNDQxKTsKKyAgICBfNDY0Mi0+
YWRkKDEzOSk7CisgICAgXzQ2NDItPmFkZCgyKTsKKyAgICBfNDY0Mi0+YWRkKDI0Myk7CisgICAg
XzQ2NDItPmFkZCgyMzk2KTsKKyAgICBfNDY0Mi0+YWRkKDI0OCk7CisgICAgXzQ2NDItPmFkZCgz
NTYpOworICAgIF80NjQyLT5hZGQoNDQxKTsKKyAgICBkZWxldGUgXzQ2MzU7CisgICAgZGVsZXRl
IF80NjM2OworICAgIGRlbGV0ZSBfNDYzNzsKKyAgICBkZWxldGUgXzQ2Mzg7CisgICAgZGVsZXRl
IF80NjM5OworICAgIGRlbGV0ZSBfNDY0MDsKKyAgICBkZWxldGUgXzQ2NDE7CisgICAgZGVsZXRl
IF80NjQyOworICAgIGRlbGV0ZSBfNDY0MzsKKyAgICBkZWxldGUgXzQ2NDQ7CisgICAgZGVsZXRl
IF80NjQ1OworICAgIGRlbGV0ZSBfNDY0NjsKKyAgICBkZWxldGUgXzQ2NDc7CisgICAgZGVsZXRl
IF80NjQ4OworICAgIGRlbGV0ZSBfNDY0OTsKKyAgICBkZWxldGUgXzQ2NTA7CisgICAgZGVsZXRl
IF80NjUxOworICAgIGRlbGV0ZSBfNDY1MjsKKyAgICBkZWxldGUgXzQ2NTM7CisgICAgZGVsZXRl
IF80NjU0OworICAgIGRlbGV0ZSBfNDY1NTsKKyAgICBkZWxldGUgXzQ2NTY7CisgICAgZGVsZXRl
IF80NjU3OworICAgIGRlbGV0ZSBfNDY1ODsKKyAgICBkZWxldGUgXzQ2NTk7CisgICAgZGVsZXRl
IF80NjYwOworICAgIGRlbGV0ZSBfNDY2MTsKKyAgICBkZWxldGUgXzQ2NjI7CisgICAgZGVsZXRl
IF80NjYzOworICAgIGRlbGV0ZSBfNDY2NDsKKyAgICBkZWxldGUgXzQ2NjU7CisgICAgZGVsZXRl
IF80NjY2OworICAgIGRlbGV0ZSBfNDY2NzsKKyAgICBkZWxldGUgXzQ2Njg7CisgICAgZGVsZXRl
IF80NjY5OworICAgIGRlbGV0ZSBfNDY3MDsKKyAgICBkZWxldGUgXzQ2NzE7CisgICAgZGVsZXRl
IF80NjcyOworICAgIGRlbGV0ZSBfNDY3MzsKKyAgICBkZWxldGUgXzQ2NzQ7CisgICAgZGVsZXRl
IF80Njc1OworICAgIGRlbGV0ZSBfNDY3NjsKKyAgICBkZWxldGUgXzQ2Nzc7CisgICAgZGVsZXRl
IF80Njc4OworICAgIGRlbGV0ZSBfNDY3OTsKKyAgICBkZWxldGUgXzQ2ODA7CisgICAgZGVsZXRl
IF80NjgxOworICAgIGRlbGV0ZSBfNDY4MjsKKyAgICBkZWxldGUgXzQ2ODM7CisgICAgZGVsZXRl
IF80Njg0OworICAgIGRlbGV0ZSBfNDY4NTsKKyAgICBkZWxldGUgXzQ2ODY7CisgICAgZGVsZXRl
IF80Njg3OworICAgIGRlbGV0ZSBfNDY4ODsKKyAgICBkZWxldGUgXzQ2ODk7CisgICAgZGVsZXRl
IF80NjkwOworICAgIGRlbGV0ZSBfNDY5MTsKKyAgICBkZWxldGUgXzQ2OTI7CisgICAgZGVsZXRl
IF80NjkzOworICAgIGRlbGV0ZSBfNDY5NDsKKyAgICBkZWxldGUgXzQ2OTU7CisgICAgZGVsZXRl
IF80Njk2OworICAgIGRlbGV0ZSBfNDY5NzsKKyAgICBkZWxldGUgXzQ2OTg7CisgICAgZGVsZXRl
IF80Njk5OworICAgIGRlbGV0ZSBfNDcwMDsKKyAgICBkZWxldGUgXzQ3MDE7CisgICAgZGVsZXRl
IF80NzAyOworICAgIGRlbGV0ZSBfNDcwMzsKKyAgICBkZWxldGUgXzQ3MDQ7CisgICAgZGVsZXRl
IF80NzA1OworICAgIGRlbGV0ZSBfNDcwNjsKKyAgICBkZWxldGUgXzQ3MDc7CisgICAgZGVsZXRl
IF80NzA4OworICAgIGRlbGV0ZSBfNDcwOTsKKyAgICBkZWxldGUgXzQ3MTA7CisgICAgZGVsZXRl
IF80NzExOworICAgIGRlbGV0ZSBfNDcxMjsKKyAgICBkZWxldGUgXzQ3MTM7CisgICAgZGVsZXRl
IF80NzE0OworICAgIGRlbGV0ZSBfNDcxNTsKKyAgICBkZWxldGUgXzQ3MTY7CisgICAgYXV0byog
XzQ3MTcgPSBuZXcgSGFzaFNldDw6OkpTQzo6REZHOjpOb2RlKj4oKTsKKyAgICBhdXRvKiBfNDcx
OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80NzE5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ3MjAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDcyMSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80NzIyID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ3MjMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcyNCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzI1ID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MjYgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDcyNyA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzI4ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3Mjkg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDczMCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80NzMxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ3MzIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDczMyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NzM0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MzUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDczNiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzM3ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3MzggPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDczOSA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzQwID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3
NDEgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDc0MiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IGF1dG8qIF80NzQzID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7
CisgICAgYXV0byogXzQ3NDQgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5z
aWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVk
Pj4oKTsKKyAgICBhdXRvKiBfNDc0NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFz
aDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5z
aWduZWQ+PigpOworICAgIGF1dG8qIF80NzQ2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NDcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwg
RGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc0OCA9IG5ldyBIYXNoU2V0PHVuc2ln
bmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzQ5ID0gbmV3IEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NTAgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc1MSA9IG5l
dyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzUy
ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byog
XzQ3NTMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBh
dXRvKiBfNDc1NCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46
Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOwor
ICAgIGF1dG8qIF80NzU1ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2ln
bmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+
KCk7CisgICAgYXV0byogXzQ3NTYgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4oKTsKKyAgICBhdXRvKiBfNDc1NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzU4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NTkgPSBuZXcgSGFzaFNldDx1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc2MCA9IG5ldyBIYXNoU2V0PHVu
c2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzYxID0gbmV3IEhhc2hT
ZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NjIgPSBuZXcg
SGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc2MyA9
IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80
NzY0ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0
byogXzQ3NjUgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAg
ICBhdXRvKiBfNDc2NiA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+Pigp
OworICAgIGF1dG8qIF80NzY3ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+KCk7CisgICAgYXV0byogXzQ3NjggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc2OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzcwID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NzEgPSBuZXcgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc3MiA9IG5ldyBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzczID0gbmV3IEhh
c2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3NzQgPSBu
ZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc3
NSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8q
IF80Nzc2ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFz
aCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAg
YXV0byogXzQ3NzcgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsK
KyAgICBhdXRvKiBfNDc3OCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNp
Z25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+
PigpOworICAgIGF1dG8qIF80Nzc5ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+KCk7CisgICAgYXV0byogXzQ3ODAgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc4MSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80NzgyID0gbmV3IEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3ODMgPSBuZXcgSGFzaFNldDx1
bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc4NCA9IG5ldyBIYXNo
U2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Nzg1ID0gbmV3
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3ODYg
PSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBf
NDc4NyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1
dG8qIF80Nzg4ID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7Cisg
ICAgYXV0byogXzQ3ODkgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4o
KTsKKyAgICBhdXRvKiBfNDc5MCA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PigpOworICAgIGF1dG8qIF80NzkxID0gbmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRI
YXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3OTIgPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc5MyA9IG5ldyBIYXNoU2V0PHVuc2lnbmVk
LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Nzk0ID0gbmV3IEhhc2hTZXQ8dW5z
aWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3OTUgPSBuZXcgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRvKiBfNDc5NiA9IG5ldyBI
YXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAgIGF1dG8qIF80Nzk3ID0g
bmV3IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCk7CisgICAgYXV0byogXzQ3
OTggPSBuZXcgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKTsKKyAgICBhdXRv
KiBfNDc5OSA9IG5ldyBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PigpOworICAg
IF80Nzk4LT5hZGQoMTgwKTsKKyAgICBfNDc5OC0+YWRkKDE5Mik7CisgICAgXzQ3OTgtPmFkZCgy
MDQpOworICAgIF80Nzk4LT5hZGQoMjE2KTsKKyAgICBfNDc5OC0+YWRkKDIyOCk7CisgICAgXzQ3
OTgtPmFkZCgyNDApOworICAgIF80Nzk4LT5hZGQoOTc0KTsKKyAgICBfNDc5OC0+YWRkKDE2MTMp
OworICAgIF80Nzk4LT5hZGQoMTQyKTsKKyAgICBfNDc5OC0+YWRkKDE0OSk7CisgICAgXzQ3OTgt
PmFkZCgxNTYpOworICAgIF80Nzk3LT5hZGQoMTgwKTsKKyAgICBfNDc5Ny0+YWRkKDE5Mik7Cisg
ICAgXzQ3OTctPmFkZCgyMDQpOworICAgIF80Nzk3LT5hZGQoMjE2KTsKKyAgICBfNDc5Ny0+YWRk
KDIyOCk7CisgICAgXzQ3OTctPmFkZCgyNDApOworICAgIF80Nzk3LT5hZGQoOTc0KTsKKyAgICBf
NDc5Ny0+YWRkKDE2MTMpOworICAgIF80Nzk3LT5hZGQoMTQyKTsKKyAgICBfNDc5Ny0+YWRkKDE0
OSk7CisgICAgXzQ3OTctPmFkZCgxNTYpOworICAgIF80Nzk2LT5hZGQoMjA0KTsKKyAgICBfNDc5
Ni0+YWRkKDIxNik7CisgICAgXzQ3OTYtPmFkZCgxNTYpOworICAgIF80Nzk2LT5hZGQoMjI4KTsK
KyAgICBfNDc5Ni0+YWRkKDE0Mik7CisgICAgXzQ3OTYtPmFkZCgxOTIpOworICAgIF80Nzk2LT5h
ZGQoMTYxMyk7CisgICAgXzQ3OTYtPmFkZCgxODApOworICAgIF80Nzk2LT5hZGQoMTQ5KTsKKyAg
ICBfNDc5Ni0+YWRkKDI0MCk7CisgICAgXzQ3OTYtPmFkZCg5NzQpOworICAgIF80NzkzLT5hZGQo
MjA0KTsKKyAgICBfNDc5My0+YWRkKDIxNik7CisgICAgXzQ3OTMtPmFkZCgxNTYpOworICAgIF80
NzkzLT5hZGQoMjI4KTsKKyAgICBfNDc5My0+YWRkKDE0Mik7CisgICAgXzQ3OTMtPmFkZCgxOTIp
OworICAgIF80NzkzLT5hZGQoMTYxMyk7CisgICAgXzQ3OTMtPmFkZCgxODApOworICAgIF80Nzkz
LT5hZGQoMTQ5KTsKKyAgICBfNDc5My0+YWRkKDI0MCk7CisgICAgXzQ3OTMtPmFkZCg5NzQpOwor
ICAgIF80Nzk0LT5hZGQoMjA0KTsKKyAgICBfNDc5NC0+YWRkKDIxNik7CisgICAgXzQ3OTQtPmFk
ZCgyMjgpOworICAgIF80Nzk0LT5hZGQoMjQwKTsKKyAgICBfNDc5NC0+YWRkKDE0Mik7CisgICAg
XzQ3OTQtPmFkZCgxOTIpOworICAgIF80Nzk0LT5hZGQoMTYxMyk7CisgICAgXzQ3OTQtPmFkZCgx
ODApOworICAgIF80Nzk0LT5hZGQoMTQ5KTsKKyAgICBfNDc5NC0+YWRkKDE1Nik7CisgICAgXzQ3
OTQtPmFkZCg5NzQpOworICAgIF80Nzk0LT5hZGQoMTY3KTsKKyAgICBfNDc5NC0+YWRkKDExMjEp
OworICAgIF80Nzk0LT5hZGQoNDU2KTsKKyAgICBfNDc5NC0+YWRkKDEwNCk7CisgICAgXzQ3OTQt
PmFkZCgxNTIwKTsKKyAgICBfNDc5NC0+YWRkKDE4MzgpOworICAgIF80Nzk1LT5hZGQoMjA0KTsK
KyAgICBfNDc5NS0+YWRkKDIxNik7CisgICAgXzQ3OTUtPmFkZCgyMjgpOworICAgIF80Nzk1LT5h
ZGQoMjQwKTsKKyAgICBfNDc5NS0+YWRkKDE0Mik7CisgICAgXzQ3OTUtPmFkZCgxOTIpOworICAg
IF80Nzk1LT5hZGQoMTYxMyk7CisgICAgXzQ3OTUtPmFkZCgxODApOworICAgIF80Nzk1LT5hZGQo
MTQ5KTsKKyAgICBfNDc5NS0+YWRkKDE1Nik7CisgICAgXzQ3OTUtPmFkZCg5NzQpOworICAgIF80
Nzk1LT5hZGQoMTY3KTsKKyAgICBfNDc5NS0+YWRkKDExMjEpOworICAgIF80Nzk1LT5hZGQoNDU2
KTsKKyAgICBfNDc5NS0+YWRkKDEwNCk7CisgICAgXzQ3OTUtPmFkZCgxNTIwKTsKKyAgICBfNDc5
NS0+YWRkKDE4MzgpOworICAgIF80Nzk2LT5hZGQoMjA0KTsKKyAgICBfNDc5Ni0+YWRkKDQ1Nik7
CisgICAgXzQ3OTYtPmFkZCgxMTIxKTsKKyAgICBfNDc5Ni0+YWRkKDIyOCk7CisgICAgXzQ3OTYt
PmFkZCgyNDApOworICAgIF80Nzk2LT5hZGQoMTQyKTsKKyAgICBfNDc5Ni0+YWRkKDEwNCk7Cisg
ICAgXzQ3OTYtPmFkZCgxOTIpOworICAgIF80Nzk2LT5hZGQoMTYxMyk7CisgICAgXzQ3OTYtPmFk
ZCgxODApOworICAgIF80Nzk2LT5hZGQoMTY3KTsKKyAgICBfNDc5Ni0+YWRkKDE1MjApOworICAg
IF80Nzk2LT5hZGQoMjE2KTsKKyAgICBfNDc5Ni0+YWRkKDE0OSk7CisgICAgXzQ3OTYtPmFkZCgx
NTYpOworICAgIF80Nzk2LT5hZGQoOTc0KTsKKyAgICBfNDc5Ni0+YWRkKDEzODEpOworICAgIF80
NzkzLT5hZGQoMjA0KTsKKyAgICBfNDc5My0+YWRkKDQ1Nik7CisgICAgXzQ3OTMtPmFkZCgxMTIx
KTsKKyAgICBfNDc5My0+YWRkKDIyOCk7CisgICAgXzQ3OTMtPmFkZCgyNDApOworICAgIF80Nzkz
LT5hZGQoMTQyKTsKKyAgICBfNDc5My0+YWRkKDEwNCk7CisgICAgXzQ3OTMtPmFkZCgxOTIpOwor
ICAgIF80NzkzLT5hZGQoMTYxMyk7CisgICAgXzQ3OTMtPmFkZCgxODApOworICAgIF80NzkzLT5h
ZGQoMTY3KTsKKyAgICBfNDc5My0+YWRkKDE1MjApOworICAgIF80NzkzLT5hZGQoMjE2KTsKKyAg
ICBfNDc5My0+YWRkKDE0OSk7CisgICAgXzQ3OTMtPmFkZCgxNTYpOworICAgIF80NzkzLT5hZGQo
OTc0KTsKKyAgICBfNDc5My0+YWRkKDE1MTIpOworICAgIF80NzkxLT5hZGQoMjA0KTsKKyAgICBf
NDc5MS0+YWRkKDQ1Nik7CisgICAgXzQ3OTEtPmFkZCgxMTIxKTsKKyAgICBfNDc5MS0+YWRkKDIy
OCk7CisgICAgXzQ3OTEtPmFkZCgxNDIpOworICAgIF80NzkxLT5hZGQoMTA0KTsKKyAgICBfNDc5
MS0+YWRkKDE5Mik7CisgICAgXzQ3OTEtPmFkZCgxNjEzKTsKKyAgICBfNDc5MS0+YWRkKDE4MCk7
CisgICAgXzQ3OTEtPmFkZCgxNTEyKTsKKyAgICBfNDc5MS0+YWRkKDE2Nyk7CisgICAgXzQ3OTEt
PmFkZCgxNTIwKTsKKyAgICBfNDc5MS0+YWRkKDIxNik7CisgICAgXzQ3OTEtPmFkZCgxNTYpOwor
ICAgIF80NzkxLT5hZGQoMTQ5KTsKKyAgICBfNDc5MS0+YWRkKDI0MCk7CisgICAgXzQ3OTEtPmFk
ZCg5NzQpOworICAgIF80NzkxLT5hZGQoMTcwOCk7CisgICAgXzQ3OTItPmFkZCgyMDQpOworICAg
IF80NzkyLT5hZGQoNDU2KTsKKyAgICBfNDc5Mi0+YWRkKDExMjEpOworICAgIF80NzkyLT5hZGQo
MjI4KTsKKyAgICBfNDc5Mi0+YWRkKDE0Mik7CisgICAgXzQ3OTItPmFkZCgxMDQpOworICAgIF80
NzkyLT5hZGQoMTkyKTsKKyAgICBfNDc5Mi0+YWRkKDE2MTMpOworICAgIF80NzkyLT5hZGQoMTgw
KTsKKyAgICBfNDc5Mi0+YWRkKDE1MTIpOworICAgIF80NzkyLT5hZGQoMTY3KTsKKyAgICBfNDc5
Mi0+YWRkKDE1MjApOworICAgIF80NzkyLT5hZGQoMjE2KTsKKyAgICBfNDc5Mi0+YWRkKDE1Nik7
CisgICAgXzQ3OTItPmFkZCgxNDkpOworICAgIF80NzkyLT5hZGQoMjQwKTsKKyAgICBfNDc5Mi0+
YWRkKDk3NCk7CisgICAgXzQ3OTItPmFkZCgxNzA4KTsKKyAgICBfNDc4Ny0+YWRkKDIwNCk7Cisg
ICAgXzQ3ODctPmFkZCg0NTYpOworICAgIF80Nzg3LT5hZGQoMTEyMSk7CisgICAgXzQ3ODctPmFk
ZCgyMjgpOworICAgIF80Nzg3LT5hZGQoMTQyKTsKKyAgICBfNDc4Ny0+YWRkKDEwNCk7CisgICAg
XzQ3ODctPmFkZCgxOTIpOworICAgIF80Nzg3LT5hZGQoMTYxMyk7CisgICAgXzQ3ODctPmFkZCgx
ODApOworICAgIF80Nzg3LT5hZGQoMTUxMik7CisgICAgXzQ3ODctPmFkZCgxNjcpOworICAgIF80
Nzg3LT5hZGQoMTUyMCk7CisgICAgXzQ3ODctPmFkZCgyMTYpOworICAgIF80Nzg3LT5hZGQoMTU2
KTsKKyAgICBfNDc4Ny0+YWRkKDE3MDgpOworICAgIF80Nzg3LT5hZGQoMTQ5KTsKKyAgICBfNDc4
Ny0+YWRkKDI0MCk7CisgICAgXzQ3ODctPmFkZCg5NzQpOworICAgIF80NzkwLT5hZGQoMjA0KTsK
KyAgICBfNDc5MC0+YWRkKDQ1Nik7CisgICAgXzQ3OTAtPmFkZCgxMTIxKTsKKyAgICBfNDc5MC0+
YWRkKDIyOCk7CisgICAgXzQ3OTAtPmFkZCgxNDIpOworICAgIF80NzkwLT5hZGQoMTA0KTsKKyAg
ICBfNDc5MC0+YWRkKDE5Mik7CisgICAgXzQ3OTAtPmFkZCgxNjEzKTsKKyAgICBfNDc5MC0+YWRk
KDE4MCk7CisgICAgXzQ3OTAtPmFkZCgxNTEyKTsKKyAgICBfNDc5MC0+YWRkKDE2Nyk7CisgICAg
XzQ3OTAtPmFkZCgxNTIwKTsKKyAgICBfNDc5MC0+YWRkKDIxNik7CisgICAgXzQ3OTAtPmFkZCgx
NTYpOworICAgIF80NzkwLT5hZGQoMTcwOCk7CisgICAgXzQ3OTAtPmFkZCgxNDkpOworICAgIF80
NzkwLT5hZGQoMjQwKTsKKyAgICBfNDc5MC0+YWRkKDk3NCk7CisgICAgXzQ3ODktPmFkZCgyMDQp
OworICAgIF80Nzg5LT5hZGQoNDU2KTsKKyAgICBfNDc4OS0+YWRkKDExMjEpOworICAgIF80Nzg5
LT5hZGQoMjI4KTsKKyAgICBfNDc4OS0+YWRkKDI0MCk7CisgICAgXzQ3ODktPmFkZCgxNDIpOwor
ICAgIF80Nzg5LT5hZGQoMTA0KTsKKyAgICBfNDc4OS0+YWRkKDE5Mik7CisgICAgXzQ3ODktPmFk
ZCgxNjEzKTsKKyAgICBfNDc4OS0+YWRkKDE4MCk7CisgICAgXzQ3ODktPmFkZCgxNTEyKTsKKyAg
ICBfNDc4OS0+YWRkKDE2Nyk7CisgICAgXzQ3ODktPmFkZCgxNTIwKTsKKyAgICBfNDc4OS0+YWRk
KDIxNik7CisgICAgXzQ3ODktPmFkZCgxNzA4KTsKKyAgICBfNDc4OS0+YWRkKDE0OSk7CisgICAg
XzQ3ODktPmFkZCgxNTYpOworICAgIF80Nzg5LT5hZGQoOTc0KTsKKyAgICBfNDc4OS0+YWRkKDI0
Myk7CisgICAgXzQ3ODktPmFkZCgzNTYpOworICAgIF80Nzg5LT5hZGQoMjQ4KTsKKyAgICBfNDc4
OS0+YWRkKDMwOSk7CisgICAgXzQ3ODktPmFkZCgzNDUpOworICAgIF80Nzg5LT5hZGQoMzM4KTsK
KyAgICBfNDc4OS0+YWRkKDE4MzcpOworICAgIF80Nzg4LT5hZGQoMjA0KTsKKyAgICBfNDc4OC0+
YWRkKDQ1Nik7CisgICAgXzQ3ODgtPmFkZCgxMTIxKTsKKyAgICBfNDc4OC0+YWRkKDIyOCk7Cisg
ICAgXzQ3ODgtPmFkZCgyNDApOworICAgIF80Nzg4LT5hZGQoMTQyKTsKKyAgICBfNDc4OC0+YWRk
KDEwNCk7CisgICAgXzQ3ODgtPmFkZCgxOTIpOworICAgIF80Nzg4LT5hZGQoMTYxMyk7CisgICAg
XzQ3ODgtPmFkZCgxODApOworICAgIF80Nzg4LT5hZGQoMTUxMik7CisgICAgXzQ3ODgtPmFkZCgx
NjcpOworICAgIF80Nzg4LT5hZGQoMTUyMCk7CisgICAgXzQ3ODgtPmFkZCgyMTYpOworICAgIF80
Nzg4LT5hZGQoMTcwOCk7CisgICAgXzQ3ODgtPmFkZCgxNDkpOworICAgIF80Nzg4LT5hZGQoMTU2
KTsKKyAgICBfNDc4OC0+YWRkKDk3NCk7CisgICAgXzQ3ODgtPmFkZCgyNDMpOworICAgIF80Nzg4
LT5hZGQoMzU2KTsKKyAgICBfNDc4OC0+YWRkKDI0OCk7CisgICAgXzQ3ODgtPmFkZCgzMDkpOwor
ICAgIF80Nzg4LT5hZGQoMzQ1KTsKKyAgICBfNDc4OC0+YWRkKDMzOCk7CisgICAgXzQ3ODgtPmFk
ZCgxODM3KTsKKyAgICBfNDc4Ny0+YWRkKDIwNCk7CisgICAgXzQ3ODctPmFkZCg0NTYpOworICAg
IF80Nzg3LT5hZGQoMTEyMSk7CisgICAgXzQ3ODctPmFkZCg5NzQpOworICAgIF80Nzg3LT5hZGQo
MjI4KTsKKyAgICBfNDc4Ny0+YWRkKDE0Mik7CisgICAgXzQ3ODctPmFkZCgxMDQpOworICAgIF80
Nzg3LT5hZGQoMzA5KTsKKyAgICBfNDc4Ny0+YWRkKDE5Mik7CisgICAgXzQ3ODctPmFkZCgxNjEz
KTsKKyAgICBfNDc4Ny0+YWRkKDE4MCk7CisgICAgXzQ3ODctPmFkZCgxNTEyKTsKKyAgICBfNDc4
Ny0+YWRkKDM0NSk7CisgICAgXzQ3ODctPmFkZCgxNjcpOworICAgIF80Nzg3LT5hZGQoMzM4KTsK
KyAgICBfNDc4Ny0+YWRkKDE1MjApOworICAgIF80Nzg3LT5hZGQoMjE2KTsKKyAgICBfNDc4Ny0+
YWRkKDE1Nik7CisgICAgXzQ3ODctPmFkZCgyNDgpOworICAgIF80Nzg3LT5hZGQoMjQzKTsKKyAg
ICBfNDc4Ny0+YWRkKDE3MDgpOworICAgIF80Nzg3LT5hZGQoMzU2KTsKKyAgICBfNDc4Ny0+YWRk
KDE0OSk7CisgICAgXzQ3ODctPmFkZCgyNDApOworICAgIF80Nzg3LT5hZGQoMTY4Nyk7CisgICAg
XzQ3OTAtPmFkZCgyMDQpOworICAgIF80NzkwLT5hZGQoNDU2KTsKKyAgICBfNDc5MC0+YWRkKDEx
MjEpOworICAgIF80NzkwLT5hZGQoOTc0KTsKKyAgICBfNDc5MC0+YWRkKDIyOCk7CisgICAgZGVs
ZXRlIF80NzE3OworICAgIGRlbGV0ZSBfNDcxODsKKyAgICBkZWxldGUgXzQ3MTk7CisgICAgZGVs
ZXRlIF80NzIwOworICAgIGRlbGV0ZSBfNDcyMTsKKyAgICBkZWxldGUgXzQ3MjI7CisgICAgZGVs
ZXRlIF80NzIzOworICAgIGRlbGV0ZSBfNDcyNDsKKyAgICBkZWxldGUgXzQ3MjU7CisgICAgZGVs
ZXRlIF80NzI2OworICAgIGRlbGV0ZSBfNDcyNzsKKyAgICBkZWxldGUgXzQ3Mjg7CisgICAgZGVs
ZXRlIF80NzI5OworICAgIGRlbGV0ZSBfNDczMDsKKyAgICBkZWxldGUgXzQ3MzE7CisgICAgZGVs
ZXRlIF80NzMyOworICAgIGRlbGV0ZSBfNDczMzsKKyAgICBkZWxldGUgXzQ3MzQ7CisgICAgZGVs
ZXRlIF80NzM1OworICAgIGRlbGV0ZSBfNDczNjsKKyAgICBkZWxldGUgXzQ3Mzc7CisgICAgZGVs
ZXRlIF80NzM4OworICAgIGRlbGV0ZSBfNDczOTsKKyAgICBkZWxldGUgXzQ3NDA7CisgICAgZGVs
ZXRlIF80NzQxOworICAgIGRlbGV0ZSBfNDc0MjsKKyAgICBkZWxldGUgXzQ3NDM7CisgICAgZGVs
ZXRlIF80NzQ0OworICAgIGRlbGV0ZSBfNDc0NTsKKyAgICBkZWxldGUgXzQ3NDY7CisgICAgZGVs
ZXRlIF80NzQ3OworICAgIGRlbGV0ZSBfNDc0ODsKKyAgICBkZWxldGUgXzQ3NDk7CisgICAgZGVs
ZXRlIF80NzUwOworICAgIGRlbGV0ZSBfNDc1MTsKKyAgICBkZWxldGUgXzQ3NTI7CisgICAgZGVs
ZXRlIF80NzUzOworICAgIGRlbGV0ZSBfNDc1NDsKKyAgICBkZWxldGUgXzQ3NTU7CisgICAgZGVs
ZXRlIF80NzU2OworICAgIGRlbGV0ZSBfNDc1NzsKKyAgICBkZWxldGUgXzQ3NTg7CisgICAgZGVs
ZXRlIF80NzU5OworICAgIGRlbGV0ZSBfNDc2MDsKKyAgICBkZWxldGUgXzQ3NjE7CisgICAgZGVs
ZXRlIF80NzYyOworICAgIGRlbGV0ZSBfNDc2MzsKKyAgICBkZWxldGUgXzQ3NjQ7CisgICAgZGVs
ZXRlIF80NzY1OworICAgIGRlbGV0ZSBfNDc2NjsKKyAgICBkZWxldGUgXzQ3Njc7CisgICAgZGVs
ZXRlIF80NzY4OworICAgIGRlbGV0ZSBfNDc2OTsKKyAgICBkZWxldGUgXzQ3NzA7CisgICAgZGVs
ZXRlIF80NzcxOworICAgIGRlbGV0ZSBfNDc3MjsKKyAgICBkZWxldGUgXzQ3NzM7CisgICAgZGVs
ZXRlIF80Nzc0OworICAgIGRlbGV0ZSBfNDc3NTsKKyAgICBkZWxldGUgXzQ3NzY7CisgICAgZGVs
ZXRlIF80Nzc3OworICAgIGRlbGV0ZSBfNDc3ODsKKyAgICBkZWxldGUgXzQ3Nzk7CisgICAgZGVs
ZXRlIF80NzgwOworICAgIGRlbGV0ZSBfNDc4MTsKKyAgICBkZWxldGUgXzQ3ODI7CisgICAgZGVs
ZXRlIF80NzgzOworICAgIGRlbGV0ZSBfNDc4NDsKKyAgICBkZWxldGUgXzQ3ODU7CisgICAgZGVs
ZXRlIF80Nzg2OworICAgIGRlbGV0ZSBfNDc4NzsKKyAgICBkZWxldGUgXzQ3ODg7CisgICAgZGVs
ZXRlIF80Nzg5OworICAgIGRlbGV0ZSBfNDc5MDsKKyAgICBkZWxldGUgXzQ3OTE7CisgICAgZGVs
ZXRlIF80NzkyOworICAgIGRlbGV0ZSBfNDc5MzsKKyAgICBkZWxldGUgXzQ3OTQ7CisgICAgZGVs
ZXRlIF80Nzk1OworICAgIGRlbGV0ZSBfNDc5NjsKKyAgICBkZWxldGUgXzQ3OTc7CisgICAgZGVs
ZXRlIF80Nzk4OworICAgIGRlbGV0ZSBfNDc5OTsKK30KKworaW50IG1haW4oaW50LCBjaGFyKiop
Cit7CisgICAgZG91YmxlIGJlZm9yZSA9IGN1cnJlbnRUaW1lKCk7ICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAxMDAwOyArK2kpCisgICAgICAgIGJlbmNobWFyaygpOworICAgIGRv
dWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lKCk7CisgICAgcHJpbnRmKCJUaGF0IHRvb2sgJWxmIHNl
Y29uZHMuXG4iLCBhZnRlciAtIGJlZm9yZSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS9nY2MtbG9vcHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL2djYy1sb29wcy5jcHAJKG5vbmV4aXN0
ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vZ2NjLWxvb3BzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5OSBAQAorI2luY2x1ZGUgPHN5cy90aW1lLmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8bnVt
ZXJpYz4KKworLy8vIFRoaXMgdGVzdCBjb250YWlucyBzb21lIG9mIHRoZSBsb29wcyBmcm9tIHRo
ZSBHQ0MgdmVjdHJvcml6ZXIgZXhhbXBsZSBwYWdlIFsxXS4KKy8vLyBEb3JpdCBOdXptYW4gd2hv
IGRldmVsb3BlZCB0aGUgZ2NjIHZlY3Rvcml6ZXIgc2FpZCB0aGF0IHdlIGNhbiB1c2UgdGhlbSBp
biBvdXIgdGVzdCBzdWl0ZS4KKy8vLworLy8vIFsxXSAtIGh0dHA6Ly9nY2MuZ251Lm9yZy9wcm9q
ZWN0cy90cmVlLXNzYS92ZWN0b3JpemF0aW9uLmh0bWwKKworI2RlZmluZSBOIDEwMjQKKyNkZWZp
bmUgTSAzMgorI2RlZmluZSBLIDQKKyNkZWZpbmUgQUxJR05FRDE2IF9fYXR0cmlidXRlX18oKGFs
aWduZWQoMTYpKSkKKwordW5zaWduZWQgc2hvcnQgdXNhW05dOworc2hvcnQgc2FbTl07CitzaG9y
dCBzYltOXTsKK3Nob3J0IHNjW05dOwordW5zaWduZWQgaW50ICAgdWFbTl07CitpbnQgICBpYVtO
XSBBTElHTkVEMTY7CitpbnQgICBpYltOXSBBTElHTkVEMTY7CitpbnQgICBpY1tOXSBBTElHTkVE
MTY7Cit1bnNpZ25lZCBpbnQgdWJbTl07Cit1bnNpZ25lZCBpbnQgdWNbTl07CitmbG9hdCBmYVtO
XSwgZmJbTl07CitmbG9hdCBkYVtOXSwgZGJbTl0sIGRjW05dLCBkZFtOXTsKK2ludCBkaltOXTsK
Kworc3RydWN0IEEgeworICBpbnQgY2FbTl07Cit9IHM7CisKK2ludCBhW04qMl0gQUxJR05FRDE2
OworaW50IGJbTioyXSBBTElHTkVEMTY7CitpbnQgY1tOKjJdIEFMSUdORUQxNjsKK2ludCBkW04q
Ml0gQUxJR05FRDE2OworCitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCit2b2lkIGV4YW1wbGUx
ICgpIHsKKyAgaW50IGk7CisKKyAgZm9yIChpPTA7IGk8MjU2OyBpKyspeworICAgIGFbaV0gPSBi
W2ldICsgY1tpXTsKKyAgfQorfQorCitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCit2b2lkIGV4
YW1wbGUyYSAoaW50IG4sIGludCB4KSB7CisgICBpbnQgaTsKKworICAgLyogZmVhdHVyZTogc3Vw
cG9ydCBmb3IgdW5rbm93biBsb29wIGJvdW5kICAqLworICAgLyogZmVhdHVyZTogc3VwcG9ydCBm
b3IgbG9vcCBpbnZhcmlhbnRzICAqLworICAgZm9yIChpPTA7IGk8bjsgaSsrKSB7CisgICAgICBi
W2ldID0geDsKKyAgIH0KK30KKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFt
cGxlMmIgKGludCBuLCBpbnQgeCkgeworICBpbnQgaSA9IDA7CisgICAvKiBmZWF0dXJlOiBnZW5l
cmFsIGxvb3AgZXhpdCBjb25kaXRpb24gICovCisgICAvKiBmZWF0dXJlOiBzdXBwb3J0IGZvciBi
aXR3aXNlIG9wZXJhdGlvbnMgICovCisgICB3aGlsZSAobi0tKXsKKyAgICAgIGFbaV0gPSBiW2ld
JmNbaV07IGkrKzsKKyAgIH0KK30KKworCit0eXBlZGVmIGludCBhaW50IF9fYXR0cmlidXRlX18g
KChfX2FsaWduZWRfXygxNikpKTsKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhh
bXBsZTMgKGludCBuLCBhaW50ICogX19yZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0IHEp
IHsKKworICAgLyogZmVhdHVyZTogc3VwcG9ydCBmb3IgKGFsaWduZWQpIHBvaW50ZXIgYWNjZXNz
ZXMuICAqLworICAgd2hpbGUgKG4tLSl7CisgICAgICAqcCsrID0gKnErKzsKKyAgIH0KK30KKwor
X19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFtcGxlNGEgKGludCBuLCBhaW50ICog
X19yZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0X18gcSkgeworICAgLyogZmVhdHVyZTog
c3VwcG9ydCBmb3IgKGFsaWduZWQpIHBvaW50ZXIgYWNjZXNzZXMgICovCisgICAvKiBmZWF0dXJl
OiBzdXBwb3J0IGZvciBjb25zdGFudHMgICovCisgICB3aGlsZSAobi0tKXsKKyAgICAgICpwKysg
PSAqcSsrICsgNTsKKyAgIH0KK30KKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBl
eGFtcGxlNGIgKGludCBuLCBhaW50ICogX19yZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0
X18gcSkgeworICAgaW50IGk7CisKKyAgIC8qIGZlYXR1cmU6IHN1cHBvcnQgZm9yIHJlYWQgYWNj
ZXNzZXMgd2l0aCBhIGNvbXBpbGUgdGltZSBrbm93biBtaXNhbGlnbm1lbnQgICovCisgICBmb3Ig
KGk9MDsgaTxuOyBpKyspeworICAgICAgYVtpXSA9IGJbaSsxXSArIGNbaSszXTsKKyAgIH0KK30K
KworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFtcGxlNGMgKGludCBuLCBhaW50
ICogX19yZXN0cmljdF9fIHAsIGFpbnQgKiBfX3Jlc3RyaWN0X18gcSkgeworICAgaW50IGk7Cisg
ICAgY29uc3QgaW50IE1BWCA9IDQ7CisgICAvKiBmZWF0dXJlOiBzdXBwb3J0IGZvciBpZi1jb252
ZXJzaW9uICAqLworICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgIGludCBqID0gYVtpXTsK
KyAgICAgIGJbaV0gPSAoaiA+IE1BWCA/IE1BWCA6IDApOworICAgfQorfQorCitfX2F0dHJpYnV0
ZV9fKChub2lubGluZSkpCit2b2lkICBleGFtcGxlNSAoaW50IG4sIHN0cnVjdCBBICpzKSB7Cisg
IGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgLyogZmVhdHVyZTogc3Vw
cG9ydCBmb3IgYWxpZ25hYmxlIHN0cnVjdCBhY2Nlc3MgICovCisgICAgcy0+Y2FbaV0gPSA1Owor
ICB9Cit9CisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgIGV4YW1wbGU3IChpbnQg
eCkgeworICAgaW50IGk7CisKKyAgIC8qIGZlYXR1cmU6IHN1cHBvcnQgZm9yIHJlYWQgYWNjZXNz
ZXMgd2l0aCBhbiB1bmtub3duIG1pc2FsaWdubWVudCAgKi8KKyAgIGZvciAoaT0wOyBpPE47IGkr
Kyl7CisgICAgICBhW2ldID0gYltpK3hdOworICAgfQorfQorCitpbnQgR1tNXVtOXTsKK19fYXR0
cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTggKGludCB4KSB7CisgICBpbnQgaSxq
OworCisgICAvKiBmZWF0dXJlOiBzdXBwb3J0IGZvciBtdWx0aWRpbWVuc2lvbmFsIGFycmF5cyAg
Ki8KKyAgIGZvciAoaT0wOyBpPE07IGkrKykgeworICAgICBmb3IgKGo9MDsgajxOOyBqKyspIHsK
KyAgICAgICBHW2ldW2pdID0geDsKKyAgICAgfQorICAgfQorfQorCisKK19fYXR0cmlidXRlX18o
KG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTkgKHVuc2lnbmVkICpyZXQpIHsKKyAgaW50IGk7CisK
KyAgLyogZmVhdHVyZTogc3VwcG9ydCBzdW1tYXRpb24gcmVkdWN0aW9uLgorICAgICBub3RlOiBp
biBjYXNlIG9mIGZsb2F0cyB1c2UgLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25zICAqLworICB1
bnNpZ25lZCBpbnQgZGlmZiA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICBk
aWZmICs9ICh1YltpXSAtIHVjW2ldKTsKKyAgfQorCisgICpyZXQgPSBkaWZmOworfQorCisKKy8q
IGZlYXR1cmU6IHN1cHBvcnQgZGF0YS10eXBlcyBvZiBkaWZmZXJlbnQgc2l6ZXMuCisgICBDdXJy
ZW50bHkgb25seSBhIHNpbmdsZSB2ZWN0b3Itc2l6ZSBwZXIgdGFyZ2V0IGlzIHN1cHBvcnRlZDsg
CisgICBpdCBjYW4gYWNjb21tb2RhdGUgbiBlbGVtZW50cyBzdWNoIHRoYXQgbiA9IHZlY3Rvci1z
aXplL2VsZW1lbnQtc2l6ZSAKKyAgIChlLmcsIDQgaW50cywgOCBzaG9ydHMsIG9yIDE2IGNoYXJz
IGZvciBhIHZlY3RvciBvZiBzaXplIDE2IGJ5dGVzKS4gCisgICBBIGNvbWJpbmF0aW9uIG9mIGRh
dGEtdHlwZXMgb2YgZGlmZmVyZW50IHNpemVzIGluIHRoZSBzYW1lIGxvb3AgCisgICByZXF1aXJl
cyBzcGVjaWFsIGhhbmRsaW5nLiBUaGlzIHN1cHBvcnQgaXMgbm93IHByZXNlbnQgaW4gbWFpbmxp
bmUsCisgICBhbmQgYWxzbyBpbmNsdWRlcyBzdXBwb3J0IGZvciB0eXBlIGNvbnZlcnNpb25zLiAg
Ki8KK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTEwYShzaG9ydCAqX19y
ZXN0cmljdF9fIHNhLCBzaG9ydCAqX19yZXN0cmljdF9fIHNiLCBzaG9ydCAqX19yZXN0cmljdF9f
IHNjLCBpbnQqIF9fcmVzdHJpY3RfXyBpYSwgaW50KiBfX3Jlc3RyaWN0X18gaWIsIGludCogX19y
ZXN0cmljdF9fIGljKSB7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKSB7Cisg
ICAgaWFbaV0gPSBpYltpXSArIGljW2ldOworICAgIHNhW2ldID0gc2JbaV0gKyBzY1tpXTsKKyAg
fQorfQorCitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCit2b2lkIGV4YW1wbGUxMGIoc2hvcnQg
Kl9fcmVzdHJpY3RfXyBzYSwgc2hvcnQgKl9fcmVzdHJpY3RfXyBzYiwgc2hvcnQgKl9fcmVzdHJp
Y3RfXyBzYywgaW50KiBfX3Jlc3RyaWN0X18gaWEsIGludCogX19yZXN0cmljdF9fIGliLCBpbnQq
IF9fcmVzdHJpY3RfXyBpYykgeworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IE47IGkrKykg
eworICAgIGlhW2ldID0gKGludCkgc2JbaV07CisgIH0KK30KKworLyogZmVhdHVyZTogc3VwcG9y
dCBzdHJpZGVkIGFjY2Vzc2VzIC0gdGhlIGRhdGEgZWxlbWVudHMKKyAgIHRoYXQgYXJlIHRvIGJl
IG9wZXJhdGVkIHVwb24gaW4gcGFyYWxsZWwgYXJlIG5vdCBjb25zZWN1dGl2ZSAtIHRoZXkKKyAg
IGFyZSBhY2Nlc3NlZCB3aXRoIGEgc3RyaWRlID4gMSAoaW4gdGhlIGV4YW1wbGUsIHRoZSBzdHJp
ZGUgaXMgMik6ICAqLworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBleGFtcGxlMTEo
KSB7CisgICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IE4vMjsgaSsrKXsKKyAgICBhW2ldID0g
YlsyKmkrMV0gKiBjWzIqaSsxXSAtIGJbMippXSAqIGNbMippXTsKKyAgICBkW2ldID0gYlsyKmld
ICogY1syKmkrMV0gKyBiWzIqaSsxXSAqIGNbMippXTsKKyAgfQorfQorCisKK19fYXR0cmlidXRl
X18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTEyKCkgeworICBmb3IgKGludCBpID0gMDsgaSA8
IE47IGkrKykgeworICAgIGFbaV0gPSBpOworICB9Cit9CisKK19fYXR0cmlidXRlX18oKG5vaW5s
aW5lKSkKK3ZvaWQgZXhhbXBsZTEzKGludCAqKkEsIGludCAqKkIsIGludCAqb3V0KSB7CisgIGlu
dCBpLGo7CisgIGZvciAoaSA9IDA7IGkgPCBNOyBpKyspIHsKKyAgICBpbnQgZGlmZiA9IDA7Cisg
ICAgZm9yIChqID0gMDsgaiA8IE47IGorPTgpIHsKKyAgICAgIGRpZmYgKz0gKEFbaV1bal0gLSBC
W2ldW2pdKTsKKyAgICB9CisgICAgb3V0W2ldID0gZGlmZjsKKyAgfQorfQorCitfX2F0dHJpYnV0
ZV9fKChub2lubGluZSkpCit2b2lkIGV4YW1wbGUxNChpbnQgKippbiwgaW50ICoqY29lZmYsIGlu
dCAqb3V0KSB7CisgIGludCBrLGosaT0wOworICBmb3IgKGsgPSAwOyBrIDwgSzsgaysrKSB7Cisg
ICAgaW50IHN1bSA9IDA7CisgICAgZm9yIChqID0gMDsgaiA8IE07IGorKykKKyAgICAgIGZvciAo
aSA9IDA7IGkgPCBOOyBpKyspCisgICAgICAgICAgc3VtICs9IGluW2kra11bal0gKiBjb2VmZltp
XVtqXTsKKworICAgIG91dFtrXSA9IHN1bTsKKyAgfQorCit9CisKKworX19hdHRyaWJ1dGVfXygo
bm9pbmxpbmUpKQordm9pZCBleGFtcGxlMjEoaW50ICpiLCBpbnQgbikgeworICBpbnQgaSwgYSA9
IDA7CisKKyAgZm9yIChpID0gbi0xOyBpID49IDA7IGktLSkKKyAgICBhICs9IGJbaV07CisKKyAg
YlswXSA9IGE7Cit9CisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTIz
ICh1bnNpZ25lZCBzaG9ydCAqc3JjLCB1bnNpZ25lZCBpbnQgKmRzdCkKK3sKKyAgaW50IGk7CisK
KyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgICpkc3QrKyA9ICpzcmMrKyA8PCA3Owor
fQorCisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKK3ZvaWQgZXhhbXBsZTI0IChzaG9ydCB4
LCBzaG9ydCB5KQoreworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICBp
Y1tpXSA9IGZhW2ldIDwgZmJbaV0gPyB4IDogeTsKK30KKworCitfX2F0dHJpYnV0ZV9fKChub2lu
bGluZSkpCit2b2lkIGV4YW1wbGUyNSAodm9pZCkKK3sKKyAgaW50IGk7CisgIGNoYXIgeCwgeTsK
KyAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICB4ID0gKGRhW2ldIDwgZGJb
aV0pOworICAgICAgeSA9IChkY1tpXSA8IGRkW2ldKTsKKyAgICAgIGRqW2ldID0geCAmIHk7Cisg
ICAgfQorfQorCit2b2lkIGluaXRfbWVtb3J5KHZvaWQgKnN0YXJ0LCB2b2lkKiBlbmQpIHsKKyAg
dW5zaWduZWQgY2hhciBzdGF0ZSA9IDE7CisgIHdoaWxlIChzdGFydCAhPSBlbmQpIHsKKyAgICBz
dGF0ZSAqPSA3OyBzdGF0ZSBePSAweDI3OyBzdGF0ZSArPSAxOworICAgICooKHVuc2lnbmVkIGNo
YXIqKXN0YXJ0KSA9IHN0YXRlOworICAgIHN0YXJ0ID0gKChjaGFyKilzdGFydCkgKyAxOworICB9
Cit9CisKK3ZvaWQgaW5pdF9tZW1vcnlfZmxvYXQoZmxvYXQgKnN0YXJ0LCBmbG9hdCogZW5kKSB7
CisgIGZsb2F0IHN0YXRlID0gMS4wOworICB3aGlsZSAoc3RhcnQgIT0gZW5kKSB7CisgICAgc3Rh
dGUgKj0gMS4xOworICAgICpzdGFydCA9IHN0YXRlOworICAgIHN0YXJ0Kys7CisgIH0KK30KKwor
dW5zaWduZWQgZGlnZXN0X21lbW9yeSh2b2lkICpzdGFydCwgdm9pZCogZW5kKSB7CisgIHVuc2ln
bmVkIHN0YXRlID0gMTsKKyAgd2hpbGUgKHN0YXJ0ICE9IGVuZCkgeworICAgIHN0YXRlICo9IDM7
CisgICAgc3RhdGUgXj0gKigodW5zaWduZWQgY2hhciopc3RhcnQpOworICAgIHN0YXRlID0gKHN0
YXRlID4+IDggIF4gc3RhdGUgPDwgOCk7CisgICAgc3RhcnQgPSAoKGNoYXIqKXN0YXJ0KSArIDE7
CisgIH0KKyAgcmV0dXJuIHN0YXRlOworfQorCitjbGFzcyBUaW1lciB7CisKK3B1YmxpYzoKKyAg
VGltZXIoY29uc3QgY2hhciogdGl0bGUsIGJvb2wgcHJpbnQpIHsKKyAgICBUaXRsZSA9IHRpdGxl
OworICAgIFByaW50ID0gcHJpbnQ7CisgICAgZ2V0dGltZW9mZGF5KCZTdGFydCwgMCk7CisgIH0K
KworICB+VGltZXIoKSB7CisgICAgZ2V0dGltZW9mZGF5KCZFbmQsIDApOworICAgIGxvbmcgbXRp
bWUsIHMsdXM7CisgICAgcyA9IEVuZC50dl9zZWMgIC0gU3RhcnQudHZfc2VjOworICAgIHVzID0g
RW5kLnR2X3VzZWMgLSBTdGFydC50dl91c2VjOworICAgIG10aW1lID0gKHMqMTAwMCArIHVzLzEw
MDAuMCkrMC41OworICAgIGlmIChQcmludCkKKyAgICAgIHN0ZDo6Y291dDw8VGl0bGU8PCIsICI8
PG10aW1lPDwiLCBtc2VjXG4iOworICB9CisKK3ByaXZhdGU6CisgIGNvbnN0IGNoYXIqIFRpdGxl
OworICBib29sIFByaW50OworICBzdHJ1Y3QgdGltZXZhbCBTdGFydCwgRW5kOworfTsKKworCisv
LyBXYXJtdXAgYW5kIHRoZW4gbWVhc3VyZS4KKyNkZWZpbmUgQkVOQ0goTkFNRSwgUlVOX0xJTkUs
IElURVIsIERJR0VTVF9MSU5FKSB7XAorICBSVU5fTElORTtcCisgIFRpbWVyIGF0aW1lcihOQU1F
LCBwcmludF90aW1lcyk7XAorICBmb3IgKGludCBpPTA7IGkgPCAoSVRFUik7ICsraSkgUlVOX0xJ
TkU7XAorICB1bnNpZ25lZCByID0gRElHRVNUX0xJTkU7XAorICByZXN1bHRzLnB1c2hfYmFjayhy
KTtcCisgfQorCitpbnQgbWFpbihpbnQgYXJnYyxjaGFyKiBhcmd2W10peworCisgIGJvb2wgcHJp
bnRfdGltZXMgPSBhcmdjID4gMTsKKworICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZD4gcmVzdWx0czsK
KyAgdW5zaWduZWQgZHVtbXkgPSAwOworI2lmZGVmIFNNQUxMX1BST0JMRU1fU0laRQorICBjb25z
dCBpbnQgTWkgPSAxPDwxMDsKKyNlbHNlCisgIGNvbnN0IGludCBNaSA9IDE8PDE4OworI2VuZGlm
CisgIGluaXRfbWVtb3J5KCZpYVswXSwgJmlhW05dKTsKKyAgaW5pdF9tZW1vcnkoJmliWzBdLCAm
aWJbTl0pOworICBpbml0X21lbW9yeSgmaWNbMF0sICZpY1tOXSk7CisgIGluaXRfbWVtb3J5KCZz
YVswXSwgJnNhW05dKTsKKyAgaW5pdF9tZW1vcnkoJnNiWzBdLCAmc2JbTl0pOworICBpbml0X21l
bW9yeSgmc2NbMF0sICZzY1tOXSk7CisgIGluaXRfbWVtb3J5KCZhWzBdLCAmYVtOKjJdKTsKKyAg
aW5pdF9tZW1vcnkoJmJbMF0sICZiW04qMl0pOworICBpbml0X21lbW9yeSgmY1swXSwgJmNbTioy
XSk7CisgIGluaXRfbWVtb3J5KCZ1YVswXSwgJnVhW05dKTsKKyAgaW5pdF9tZW1vcnkoJnViWzBd
LCAmdWJbTl0pOworICBpbml0X21lbW9yeSgmdWNbMF0sICZ1Y1tOXSk7CisgIGluaXRfbWVtb3J5
KCZHWzBdWzBdLCAmR1swXVtOXSk7CisgIGluaXRfbWVtb3J5X2Zsb2F0KCZmYVswXSwgJmZhW05d
KTsKKyAgaW5pdF9tZW1vcnlfZmxvYXQoJmZiWzBdLCAmZmJbTl0pOworICBpbml0X21lbW9yeV9m
bG9hdCgmZGFbMF0sICZkYVtOXSk7CisgIGluaXRfbWVtb3J5X2Zsb2F0KCZkYlswXSwgJmRiW05d
KTsKKyAgaW5pdF9tZW1vcnlfZmxvYXQoJmRjWzBdLCAmZGNbTl0pOworICBpbml0X21lbW9yeV9m
bG9hdCgmZGRbMF0sICZkZFtOXSk7CisKKyAgQkVOQ0goIkV4YW1wbGUxIiwgICBleGFtcGxlMSgp
LCBNaSoxMCwgZGlnZXN0X21lbW9yeSgmYVswXSwgJmFbMjU2XSkpOworICBCRU5DSCgiRXhhbXBs
ZTJhIiwgIGV4YW1wbGUyYShOLCAyKSwgTWkqNCwgZGlnZXN0X21lbW9yeSgmYlswXSwgJmJbTl0p
KTsKKyAgQkVOQ0goIkV4YW1wbGUyYiIsICBleGFtcGxlMmIoTiwgMiksIE1pKjIsIGRpZ2VzdF9t
ZW1vcnkoJmFbMF0sICZhW05dKSk7CisgIEJFTkNIKCJFeGFtcGxlMyIsICAgZXhhbXBsZTMoTiwg
aWEsIGliKSwgTWkqMiwgZGlnZXN0X21lbW9yeSgmaWFbMF0sICZpYVtOXSkpOworICBCRU5DSCgi
RXhhbXBsZTRhIiwgIGV4YW1wbGU0YShOLCBpYSwgaWIpLCBNaSoyLCBkaWdlc3RfbWVtb3J5KCZp
YVswXSwgJmlhW05dKSk7CisgIEJFTkNIKCJFeGFtcGxlNGIiLCAgZXhhbXBsZTRiKE4tMTAsIGlh
LCBpYiksIE1pKjIsIGRpZ2VzdF9tZW1vcnkoJmlhWzBdLCAmaWFbTl0pKTsKKyAgQkVOQ0goIkV4
YW1wbGU0YyIsICBleGFtcGxlNGMoTiwgaWEsIGliKSwgTWkqMiwgZGlnZXN0X21lbW9yeSgmaWJb
MF0sICZpYltOXSkpOworICBCRU5DSCgiRXhhbXBsZTciLCAgIGV4YW1wbGU3KDQpLCBNaSo0LCBk
aWdlc3RfbWVtb3J5KCZhWzBdLCAmYVtOXSkpOworICBCRU5DSCgiRXhhbXBsZTgiLCAgIGV4YW1w
bGU4KDgpLCBNaS80LCBkaWdlc3RfbWVtb3J5KCZHWzBdWzBdLCAmR1swXVtOXSkpOworICBCRU5D
SCgiRXhhbXBsZTkiLCAgIGV4YW1wbGU5KCZkdW1teSksIE1pKjIsIGR1bW15KTsKKyAgQkVOQ0go
IkV4YW1wbGUxMGEiLCBleGFtcGxlMTBhKHNhLHNiLHNjLGlhLGliLGljKSwgTWkqMiwgZGlnZXN0
X21lbW9yeSgmaWFbMF0sICZpYVtOXSkgKyBkaWdlc3RfbWVtb3J5KCZzYVswXSwgJnNhW05dKSk7
CisgIEJFTkNIKCJFeGFtcGxlMTBiIiwgZXhhbXBsZTEwYihzYSxzYixzYyxpYSxpYixpYyksIE1p
KjQsIGRpZ2VzdF9tZW1vcnkoJmlhWzBdLCAmaWFbTl0pKTsKKyAgQkVOQ0goIkV4YW1wbGUxMSIs
ICBleGFtcGxlMTEoKSwgTWkqMiwgZGlnZXN0X21lbW9yeSgmZFswXSwgJmRbTl0pKTsKKyAgQkVO
Q0goIkV4YW1wbGUxMiIsICBleGFtcGxlMTIoKSwgTWkqNCwgZGlnZXN0X21lbW9yeSgmYVswXSwg
JmFbTl0pKTsKKyAgLy9CRU5DSCgiRXhhbXBsZTIxIiwgIGV4YW1wbGUyMShpYSwgTiksIE1pKjQs
IGRpZ2VzdF9tZW1vcnkoJmlhWzBdLCAmaWFbTl0pKTsKKyAgQkVOQ0goIkV4YW1wbGUyMyIsICBl
eGFtcGxlMjModXNhLHVhKSwgTWkqOCwgZGlnZXN0X21lbW9yeSgmdXNhWzBdLCAmdXNhWzI1Nl0p
KTsKKyAgQkVOQ0goIkV4YW1wbGUyNCIsICBleGFtcGxlMjQoMiw0KSwgTWkqMiwgMCk7CisgIEJF
TkNIKCJFeGFtcGxlMjUiLCAgZXhhbXBsZTI1KCksIE1pKjIsIGRpZ2VzdF9tZW1vcnkoJmRqWzBd
LCAmZGpbTl0pKTsKKworICBzdGQ6OmNvdXQ8PHN0ZDo6aGV4OworICBzdGQ6OmNvdXQ8PCJSZXN1
bHRzOiAoIjw8c3RkOjphY2N1bXVsYXRlKHJlc3VsdHMuYmVnaW4oKSwgcmVzdWx0cy5lbmQoKSwg
MCk8PCIpOiI7CisgIGZvciAodW5zaWduZWQgaT0wOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkg
eworICAgIHN0ZDo6Y291dDw8IiAiPDxyZXN1bHRzW2ldOworICB9CisgIHN0ZDo6Y291dDw8Ilxu
IjsKKworICByZXR1cm4gMDsKK30KKworCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3F1aWNrc29ydC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0
U3RyZWFtMi93YXNtL3F1aWNrc29ydC5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3F1aWNrc29ydC5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTc0IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmlu
ZSAgbmlsCQkwCisjZGVmaW5lCSBmYWxzZQkJMAorI2RlZmluZSAgdHJ1ZQkJMQorI2RlZmluZSAg
YnViYmxlYmFzZQkxLjYxZgorI2RlZmluZSAgZG5mYmFzZSAJMy41ZgorI2RlZmluZSAgcGVybWJh
c2UgCTEuNzVmCisjZGVmaW5lICBxdWVlbnNiYXNlIDEuODNmCisjZGVmaW5lICB0b3dlcnNiYXNl
IDIuMzlmCisjZGVmaW5lICBxdWlja2Jhc2UgCTEuOTJmCisjZGVmaW5lICBpbnRtbWJhc2UgCTEu
NDZmCisjZGVmaW5lICB0cmVlYmFzZSAJMi41ZgorI2RlZmluZSAgbW1iYXNlIAkwLjBmCisjZGVm
aW5lICBmcG1tYmFzZSAJMi45MmYKKyNkZWZpbmUgIHB1enpsZWJhc2UJMC41ZgorI2RlZmluZSAg
ZmZ0YmFzZSAJMC4wZgorI2RlZmluZSAgZnBmZnRiYXNlIAk0LjQ0ZgorICAgIC8qIFRvd2VycyAq
LworI2RlZmluZSBtYXhjZWxscyAJIDE4CisKKyAgICAvKiBJbnRtbSwgTW0gKi8KKyNkZWZpbmUg
cm93c2l6ZSAJIDQwCisKKyAgICAvKiBQdXp6bGUgKi8KKyNkZWZpbmUgc2l6ZQkgCSA1MTEKKyNk
ZWZpbmUgY2xhc3NtYXggCSAzCisjZGVmaW5lIHR5cGVtYXggCSAxMgorI2RlZmluZSBkIAkJICAg
ICA4CisKKyAgICAvKiBCdWJibGUsIFF1aWNrICovCisjZGVmaW5lIHNvcnRlbGVtZW50cyA1MDAw
CisjZGVmaW5lIHNydGVsZW1lbnRzICA1MDAKKworICAgIC8qIGZmdCAqLworI2RlZmluZSBmZnRz
aXplIAkgMjU2IAorI2RlZmluZSBmZnRzaXplMiAJIDEyOSAgCisvKgordHlwZSAqLworICAgIC8q
IFBlcm0gKi8KKyNkZWZpbmUgcGVybXJhbmdlICAgICAxMAorCisgICAvKiB0cmVlICovCitzdHJ1
Y3Qgbm9kZSB7CisJc3RydWN0IG5vZGUgKmxlZnQsKnJpZ2h0OworCWludCB2YWw7Cit9OworCisg
ICAgLyogVG93ZXJzICovIC8qCisgICAgZGlzY3NpenJhbmdlID0gMS4ubWF4Y2VsbHM7ICovCisj
ZGVmaW5lICAgIHN0YWNrcmFuZ2UJMworLyogICAgY2VsbGN1cnNvciA9IDAuLm1heGNlbGxzOyAq
Lworc3RydWN0ICAgIGVsZW1lbnQgeworCWludCBkaXNjc2l6ZTsKKwlpbnQgbmV4dDsKK307Cisv
KiAgICBlbXNndHlwZSA9IHBhY2tlZCBhcnJheVsxLi4xNV0gb2YgY2hhcjsKKyovCisgICAgLyog
SW50bW0sIE1tICovIC8qCisgICAgaW5kZXggPSAxIC4uIHJvd3NpemU7CisgICAgaW50bWF0cml4
ID0gYXJyYXkgW2luZGV4LGluZGV4XSBvZiBpbnRlZ2VyOworICAgIHJlYWxtYXRyaXggPSBhcnJh
eSBbaW5kZXgsaW5kZXhdIG9mIHJlYWw7CisqLworICAgIC8qIFB1enpsZSAqLyAvKgorICAgIHBp
ZWNlY2xhc3MgPSAwLi5jbGFzc21heDsKKyAgICBwaWVjZXR5cGUgPSAwLi50eXBlbWF4OworICAg
IHBvc2l0aW9uID0gMC4uc2l6ZTsKKyovCisgICAgLyogQnViYmxlLCBRdWljayAqLyAvKgorICAg
IGxpc3RzaXplID0gMC4uc29ydGVsZW1lbnRzOworICAgIHNvcnRhcnJheSA9IGFycmF5IFtsaXN0
c2l6ZV0gb2YgaW50ZWdlcjsKKyovCisgICAgLyogRkZUICovCitzdHJ1Y3QgICAgY29tcGxleCB7
IGZsb2F0IHJwLCBpcDsgfSA7CisvKgorICAgIGNhcnJheSA9IGFycmF5IFsxLi5mZnRzaXplXSBv
ZiBjb21wbGV4IDsKKyAgICBjMmFycmF5ID0gYXJyYXkgWzEuLmZmdHNpemUyXSBvZiBjb21wbGV4
IDsKKyovCisKK2Zsb2F0IHZhbHVlLCBmaXhlZCwgZmxvYXRlZDsKKworICAgIC8qIGdsb2JhbCAq
LworbG9uZyAgICBzZWVkOyAgLyogY29udmVydGVkIHRvIGxvbmcgZm9yIDE2IGJpdCBXUiovCisK
KyAgICAvKiBQZXJtICovCitpbnQgICAgcGVybWFycmF5W3Blcm1yYW5nZSsxXTsKKy8qIGNvbnZl
cnRlZCBwY3RyIHRvIHVuc2lnbmVkIGludCBmb3IgMTYgYml0IFdSKi8KK3Vuc2lnbmVkIGludCAg
ICBwY3RyOworCisgICAgLyogdHJlZSAqLworc3RydWN0IG5vZGUgKnRyZWU7CisKKyAgICAvKiBU
b3dlcnMgKi8KK2ludAkgICBzdGFja1tzdGFja3JhbmdlKzFdOworc3RydWN0IGVsZW1lbnQgICAg
Y2VsbHNwYWNlW21heGNlbGxzKzFdOworaW50ICAgIGZyZWVsaXN0LCAgbW92ZXNkb25lOworCisg
ICAgLyogSW50bW0sIE1tICovCisKK2ludCAgIGltYVtyb3dzaXplKzFdW3Jvd3NpemUrMV0sIGlt
Yltyb3dzaXplKzFdW3Jvd3NpemUrMV0sIGltcltyb3dzaXplKzFdW3Jvd3NpemUrMV07CitmbG9h
dCBybWFbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBybWJbcm93c2l6ZSsxXVtyb3dzaXplKzFdLCBy
bXJbcm93c2l6ZSsxXVtyb3dzaXplKzFdOworCisgICAgLyogUHV6emxlICovCitpbnQJcGllY2Vj
b3VudFtjbGFzc21heCsxXSwJY2xhc3NbdHlwZW1heCsxXSwgcGllY2VtYXhbdHlwZW1heCsxXTsK
K2ludAlwdXp6bFtzaXplKzFdLCBwW3R5cGVtYXgrMV1bc2l6ZSsxXSwgbiwga291bnQ7CisKKyAg
ICAvKiBCdWJibGUsIFF1aWNrICovCitpbnQgc29ydGxpc3Rbc29ydGVsZW1lbnRzKzFdLCBiaWdn
ZXN0LCBsaXR0bGVzdCwgdG9wOworCisgICAgLyogRkZUICovCitzdHJ1Y3QgY29tcGxleCAgICB6
W2ZmdHNpemUrMV0sIHdbZmZ0c2l6ZSsxXSwgZVtmZnRzaXplMisxXTsKK2Zsb2F0ICAgIHpyLCB6
aTsKKwordm9pZCBJbml0cmFuZCAoKSB7CisgICAgc2VlZCA9IDc0NzU1TDsgICAvKiBjb25zdGFu
dCB0byBsb25nIFdSKi8KK30KKworaW50IFJhbmQgKCkgeworICAgIHNlZWQgPSAoc2VlZCAqIDEz
MDlMICsgMTM4NDlMKSAmIDY1NTM1TDsgIC8qIGNvbnN0YW50cyB0byBsb25nIFdSKi8KKyAgICBy
ZXR1cm4oIChpbnQpc2VlZCApOyAgICAgLyogdHlwZWNhc3QgYmFjayB0byBpbnQgV1IqLworfQor
CisKKyAgICAvKiBTb3J0cyBhbiBhcnJheSB1c2luZyBxdWlja3NvcnQgKi8KK3ZvaWQgSW5pdGFy
cigpIHsKKwlpbnQgaTsgLyogdGVtcCAqLworCWxvbmcgdGVtcDsgIC8qIG1hZGUgdGVtcCBhIGxv
bmcgZm9yIDE2IGJpdCBXUiovCisJSW5pdHJhbmQoKTsKKwliaWdnZXN0ID0gMDsgbGl0dGxlc3Qg
PSAwOworCWZvciAoIGkgPSAxOyBpIDw9IHNvcnRlbGVtZW50czsgaSsrICkgeworCSAgICB0ZW1w
ID0gUmFuZCgpOworCSAgICAvKiBjb252ZXJ0ZWQgY29uc3RhbnRzIHRvIGxvbmcgaW4gbmV4dCBz
dG10LCB0eXBlY2FzdCBiYWNrIHRvIGludCBXUiovCisJICAgIHNvcnRsaXN0W2ldID0gKGludCko
dGVtcCAtICh0ZW1wLzEwMDAwMEwpKjEwMDAwMEwgLSA1MDAwMEwpOworCSAgICBpZiAoIHNvcnRs
aXN0W2ldID4gYmlnZ2VzdCApIGJpZ2dlc3QgPSBzb3J0bGlzdFtpXTsKKwkgICAgZWxzZSBpZiAo
IHNvcnRsaXN0W2ldIDwgbGl0dGxlc3QgKSBsaXR0bGVzdCA9IHNvcnRsaXN0W2ldOworCX0KK30K
Kwordm9pZCBRdWlja3NvcnQoIGludCBhW10sIGludCBsLCBpbnQgcikgeworCS8qIHF1aWNrc29y
dCB0aGUgYXJyYXkgQSBmcm9tIHN0YXJ0IHRvIGZpbmlzaCAqLworCWludCBpLGoseCx3OworCisJ
aT1sOyBqPXI7CisJeD1hWyhsK3IpIC8gMl07CisJZG8geworCSAgICB3aGlsZSAoIGFbaV08eCAp
IGkgPSBpKzE7CisJICAgIHdoaWxlICggeDxhW2pdICkgaiA9IGotMTsKKwkgICAgaWYgKCBpPD1q
ICkgeworCQkJdyA9IGFbaV07CisJCQlhW2ldID0gYVtqXTsKKwkJCWFbal0gPSB3OworCQkJaSA9
IGkrMTsgICAgaj0gai0xOworCQl9CisJfSB3aGlsZSAoIGk8PWogKTsKKwlpZiAoIGwgPGogKSBR
dWlja3NvcnQoYSxsLGopOworCWlmICggaTxyICkgUXVpY2tzb3J0KGEsaSxyKTsKK30KKworCit2
b2lkIFF1aWNrIChpbnQgcnVuKSB7CisgICAgSW5pdGFycigpOworICAgIFF1aWNrc29ydChzb3J0
bGlzdCwxLHNvcnRlbGVtZW50cyk7CisgICAgaWYgKCAoc29ydGxpc3RbMV0gIT0gbGl0dGxlc3Qp
IHx8IChzb3J0bGlzdFtzb3J0ZWxlbWVudHNdICE9IGJpZ2dlc3QpICkJcHJpbnRmICggIiBFcnJv
ciBpbiBRdWljay5cbiIpOworCSAgcHJpbnRmKCIlZFxuIiwgc29ydGxpc3RbcnVuICsgMV0pOwor
fQorCitpbnQgbWFpbigpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKSBR
dWljayhpKTsKKwlyZXR1cm4gMDsKK30KKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL2J1aWxkLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0
U3RyZWFtMi93YXNtL3RzZi9idWlsZC5zaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvYnVpbGQuc2gJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NSBAQAorIyEvYmluL3NoCitlbWNjIFwKKyAgICAtbyB0c2YuaHRtbCAtbyB0c2YuanMgLU8y
IC1zIFdBU009MSAtcyBUT1RBTF9NRU1PUlk9NTI0Mjg4MDAgLWcxIFwKKyAgICAtSS4gLURUU0Zf
QlVJTERfU1lTVEVNPTEgXAorICAgIHRzZl9hc3ByaW50Zi5jXAorICAgIHRzZl9idWZmZXIuY1wK
KyAgICB0c2ZfZXJyb3IuY1wKKyAgICB0c2ZfcmVmbGVjdC5jXAorICAgIHRzZl9zdC5jXAorICAg
IHRzZl90eXBlLmNcCisgICAgdHNmX2lvLmNcCisgICAgdHNmX25hdGl2ZS5jXAorICAgIHRzZl9n
ZW5lcmF0b3IuY1wKKyAgICB0c2Zfc3RfdHlwZXRhYmxlLmNcCisgICAgdHNmX3BhcnNlci5jXAor
ICAgIHRzZl9idWZfd3JpdGVyLmNcCisgICAgdHNmX2J1Zl9yZWFkZXIuY1wKKyAgICB0c2ZfcHJp
bWl0aXZlLmNcCisgICAgdHNmX3R5cGVfdGFibGUuY1wKKyAgICB0c2ZfY29waWVyLmNcCisgICAg
dHNmX2Rlc3RydWN0b3IuY1wKKyAgICB0c2ZfZ3BjX2NvZGVfZ2VuLmNcCisgICAgZ3BjX2NvZGVf
Z2VuX3V0aWwuY1wKKyAgICBncGNfdGhyZWFkZWQuY1wKKyAgICBncGNfaW50YWJsZS5jXAorICAg
IGdwY19pbnN0cnVjdGlvbi5jXAorICAgIGdwY19wcm9ncmFtLmNcCisgICAgZ3BjX3Byb3RvLmNc
CisgICAgZ3BjX3N0YWNrX2hlaWdodC5jXAorICAgIHRzZl9zZXJpYWxfaW5fbWFuLmNcCisgICAg
dHNmX3NlcmlhbF9vdXRfbWFuLmNcCisgICAgdHNmX3R5cGVfaW5fbWFwLmNcCisgICAgdHNmX3R5
cGVfb3V0X21hcC5jXAorICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dC5jXAorICAgIHRzZl9zdHJl
YW1fZmlsZV9vdXRwdXQuY1wKKyAgICB0c2Zfc29ydC5jXAorICAgIHRzZl92ZXJzaW9uLmNcCisg
ICAgdHNmX25hbWVkX3R5cGUuY1wKKyAgICB0c2ZfaW9fdXRpbHMuY1wKKyAgICB0c2ZfemlwX2F0
dHIuY1wKKyAgICB0c2ZfemlwX3JlYWRlci5jXAorICAgIHRzZl96aXBfd3JpdGVyLmNcCisgICAg
dHNmX3ppcF9hYnN0cmFjdC5jXAorICAgIHRzZl9saW1pdHMuY1wKKyAgICB0c2ZfcmFfdHlwZV9t
YW4uY1wKKyAgICB0c2ZfYWRhcHRpdmVfcmVhZGVyLmNcCisgICAgdHNmX3NoYTEuY1wKKyAgICB0
c2Zfc2hhMV93cml0ZXIuY1wKKyAgICB0c2ZfZnNkYi5jXAorICAgIHRzZl9mc2RiX3Byb3RvY29s
LmNcCisgICAgdHNmX2RlZmluZV9oZWxwZXJzLmNcCisgICAgdHNmX2lyLmNcCisgICAgdHNmX2ly
X2RpZmZlcmVudC5jXAorICAgIHRzZl9pcl9zcGVlZC5jCisKClByb3BlcnR5IGNoYW5nZXMgb246
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9idWlsZC5zaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvY29uZmlnLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQyIEBACisv
KiBsaWJyYXJ5L2NvbmZpZy5oLiAgR2VuZXJhdGVkIGZyb20gY29uZmlnLmguaW4gYnkgY29uZmln
dXJlLiAgKi8KKy8qIGxpYnJhcnkvY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1
cmUuYWMgYnkgYXV0b2hlYWRlci4gICovCisKKy8qIERlZmluZSBpZiBidWlsZGluZyB1bml2ZXJz
YWwgKGludGVybmFsIGhlbHBlciBtYWNybykgKi8KKy8qICN1bmRlZiBBQ19BUFBMRV9VTklWRVJT
QUxfQlVJTEQgKi8KKworLyogZGVmaW5lcyBob3cgdG8gdGhyb3cgaW4gdGhlIG5vaW5saW5lIGF0
dHJpYnV0ZSAqLworI2RlZmluZSBBVFRSSUJVVEVfTk9JTkxJTkUgX19hdHRyaWJ1dGVfXygobm9p
bmxpbmUpKQorCisvKiBEZWZpbmVkIGlmIHlvdSBjYW4gZG8gbWlzYWxpZ25lZCBsb2FkcyBhbmQg
c3RvcmVzIG9uIGZsb2F0cyAqLworI2RlZmluZSBDQU5fRE9fRkxPQVRfTUlTQUxJR05FRF9MRFNU
IDEKKworLyogRGVmaW5lZCBpZiB5b3UgY2FuIGRvIG1pc2FsaWduZWQgbG9hZHMgYW5kIHN0b3Jl
cyAqLworI2RlZmluZSBDQU5fRE9fTUlTQUxJR05FRF9MRFNUIDEKKworLyogRGV0ZXJtaW5lcyB0
aGUgcHJlZml4IGZvciBpbmNsdWRpbmcgVFNGIGZpbGVzIGZyb20gZ2VuZXJhdGVkIGNvZGUgKi8K
KyNkZWZpbmUgQ09ERV9HRU5fSU5DTFVERV9QUkVGSVggInRzZi8iCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgYWNjZXB0JyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9BQ0NF
UFQgMAorCisvKiBEZWZpbmVkIGlmIHdlIGNhbiB0YWtlIGFkZHJlc3NlcyBvZiBsYWJlbHMgKi8K
Ky8vI2RlZmluZSBIQVZFX0FERFJFU1NfT0ZfTEFCRUwgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgPGFycGEvaW5ldC5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9B
UlBBX0lORVRfSCAxCisKKy8qIERlZmluZWQgaWYgd2UgYXJlIG9uIGEgYmlnIGVuZGlhbiBtYWNo
aW5lICovCisvKiAjdW5kZWYgSEFWRV9CSUdfRU5ESUFOICovCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgYmluZCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9CSU5EIDEK
KworLyogRGVmaWVuZCBpZiB5b3V2J2UgZ290IEJTRCBzb2NrZXRzICovCisvLyNkZWZpbmUgSEFW
RV9CU0RTT0NLUyAxCisKKy8qIERlZmluZWQgaWYgd2UgaGF2ZSBfX3N5bmNfYm9vbF9jb21wYXJl
X2FuZF9zd2FwICovCisvLyNkZWZpbmUgSEFWRV9CVUlMVElOX0NBUyAxCisKKy8qIERlZmluZWQg
aWYgd2UgaGF2ZSBfX3N5bmNfZmV0Y2hfYW5kX2FkZCAqLworLy8jZGVmaW5lIEhBVkVfQlVJTFRJ
Tl9YQUREIDEKKworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIGxpYmJ6aXAyICovCisvKiAjdW5kZWYg
SEFWRV9CWklQMiAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNvbm5lY3Qn
IGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfQ09OTkVDVCAxCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCisvLyNkZWZpbmUgSEFW
RV9ETEZDTl9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmb3JrJyBmdW5j
dGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX0ZPUksgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYGdldGFkZHJpbmZvJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX0dFVEFE
RFJJTkZPIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1l
JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUUgMQorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhvc3RieW5hbWVfcicgZnVuY3Rpb24uICovCisv
KiAjdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBnZXRvcHQnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0dFVE9QVCAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cGFnZXNpemUnIGZ1bmN0aW9uLiAq
LworI2RlZmluZSBIQVZFX0dFVFBBR0VTSVpFIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBnZXR0aW1lb2ZkYXknIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0dFVFRJTUVP
RkRBWSAxCisKKy8qIERldGVybWluZXMgaWYgd2UgaGF2ZSBJRUVFIGZsb2F0aW5nIHBvaW50ICov
CisjZGVmaW5lIEhBVkVfSUVFRV9GTE9BVCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSBgaW5ldF9udG9hJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9JTkVUX05UT0EgMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvcCcgZnVuY3Rpb24uICov
CisjZGVmaW5lIEhBVkVfSU5FVF9OVE9QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9JTlRUWVBFU19I
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtJyBsaWJyYXJ5ICgtbG0pLiAq
LworI2RlZmluZSBIQVZFX0xJQk0gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YGxpc3RlbicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9MSVNURU4gMQorCisvKiBEZWZp
bmVkIGlmIHdlIGFyZSBvbiBhIGxpdHRsZSBlbmRpYW4gbWFjaGluZSAqLworI2RlZmluZSBIQVZF
X0xJVFRMRV9FTkRJQU4gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2Fs
dGltZScgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfTE9DQUxUSU1FIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWVfcicgZnVuY3Rpb24uICovCisjZGVmaW5l
IEhBVkVfTE9DQUxUSU1FX1IgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxv
bmdqbXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfTE9OR0pNUCAxCisKKy8qIERlZmlu
ZWQgaWYgdGhlIE1BUF9BTk9OIGNvbnN0YW50IGlzIGRlZmluZWQuICovCisvLyNkZWZpbmUgSEFW
RV9NQVBfQU5PTiAxCisKKy8qIERlZmluZWQgaWYgdGhlIE1BUF9BTk9OWU1PVVMgY29uc3RhbnQg
aXMgZGVmaW5lZC4gKi8KKy8vI2RlZmluZSBIQVZFX01BUF9BTk9OWU1PVVMgMQorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZp
bmUgSEFWRV9NRU1PUllfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtk
dGVtcCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9NS0RURU1QIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZF
X01NQVAgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1wcm90ZWN0JyBmdW5j
dGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX01QUk9URUNUIDEKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGBtdW5tYXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfTVVOTUFQ
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYXRoY29uZicgZnVuY3Rpb24u
ICovCisvLyNkZWZpbmUgSEFWRV9QQVRIQ09ORiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgcHJlYWQnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUFJFQUQgMQorCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByZWFkdicgZnVuY3Rpb24uICovCisvKiAj
dW5kZWYgSEFWRV9QUkVBRFYgKi8KKworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIHB0aHJlYWRzICov
CisvLyNkZWZpbmUgSEFWRV9QVEhSRUFEIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBwd3JpdGUnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUFdSSVRFIDEKKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwd3JpdGV2JyBmdW5jdGlvbi4gKi8KKy8qICN1
bmRlZiBIQVZFX1BXUklURVYgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBx
c29ydCcgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfUVNPUlQgMQorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRkaXJfcicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFW
RV9SRUFERElSX1IgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWR2JyBm
dW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1JFQURWIDEKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGByZWdjb21wJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1JFR0NP
TVAgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2Vycm9yJyBmdW5jdGlv
bi4gKi8KKy8vI2RlZmluZSBIQVZFX1JFR0VSUk9SIDEKKworLyogRGVmaW5lZCBpZiB5b3UndmUg
Z290IHJlZ2V4IGZ1bmN0aW9ucyAqLworLy8jZGVmaW5lIEhBVkVfUkVHRVggMQorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2V4ZWMnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5l
IEhBVkVfUkVHRVhFQyAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVnZnJl
ZScgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9SRUdGUkVFIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIDxzY2hlZC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8vI2RlZmluZSBI
QVZFX1NDSEVEX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3lp
ZWxkJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1NDSEVEX1lJRUxEIDEKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRqbXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5l
IEhBVkVfU0VUSk1QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXR2YnVm
JyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TRVRWQlVGIDEKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfU09D
S0VUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVy
IGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgPHN0ZGlvLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NURElP
X0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIg
ZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgc3RwY3B5JyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TVFBDUFkgMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUu
ICovCisjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RSSU5HX0gg
MQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnNpZ25hbCcgZnVuY3Rpb24u
ICovCisvLyNkZWZpbmUgSEFWRV9TVFJTSUdOQUwgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19T
VEFUX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBo
ZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Vpby5oPiBoZWFkZXIgZmlsZS4gKi8KKy8vI2RlZmlu
ZSBIQVZFX1NZU19VSU9fSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGVt
cG5hbScgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9URU1QTkFNIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5l
IEhBVkVfVU5JU1REX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHZhc3By
aW50ZicgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfVkFTUFJJTlRGIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3cml0ZXYnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhB
VkVfV1JJVEVWIDEKKworLyogRGVmaW5lZCBpZiB3ZSBjYW4gdXNlIFg4NiBpbmxpbmUgYXNzZW1i
bHkgZm9yIGZlbmNlcyAqLworLy8jZGVmaW5lIEhBVkVfWDg2X0lOTElORV9BU01fRkVOQ0VTIDEK
KworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIFpMaWIgKi8KKy8vI2RlZmluZSBIQVZFX1pMSUIgMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYF9sb25nam1wJyBmdW5jdGlvbi4gKi8K
Ky8vI2RlZmluZSBIQVZFX19MT05HSk1QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBfc2V0am1wJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX19TRVRKTVAgKi8KKwor
LyogRGVmaW5lZCB3aGVuIHlvdSdyZSBvbiBhIHNlbnNpYmxlIE9TLCB1bmxpa2UgTmV0QlNELiAq
LworI2RlZmluZSBJTlRUWVBFU19XT1JLX1JJR0hUIDEKKworLyogRGVmaW5lIHRvIHRoZSBzdWIt
ZGlyZWN0b3J5IGluIHdoaWNoIGxpYnRvb2wgc3RvcmVzIHVuaW5zdGFsbGVkIGxpYnJhcmllcy4K
KyAgICovCisjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgorCisvKiBUZWxsIHlvdSB0aGUgbmF0
aXZlIGFsaWdubWVudCBvZiB5b3VyIHBsYXRmb3JtICovCisjZGVmaW5lIE5BVElWRV9BTElHTk1F
TlQgMTYKKworLyogTmFtZSBvZiBwYWNrYWdlICovCisjZGVmaW5lIFBBQ0tBR0UgInRzZiIKKwor
LyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2th
Z2Ugc2hvdWxkIGJlIHNlbnQuICovCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJwaXpsb0Bt
YWMuY29tIgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICov
CisjZGVmaW5lIFBBQ0tBR0VfTkFNRSAidHNmIgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFt
ZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfU1RSSU5H
ICJ0c2YgMS4xLjAiCisKKy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9m
IHRoaXMgcGFja2FnZS4gKi8KKyNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJ0c2YiCisKKy8qIERl
ZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tB
R0VfVVJMICIiCisKKy8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICov
CisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMS4xLjAiCisKKy8qIFRoZSBzaXplIG9mIGBkb3Vi
bGUnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9ET1VCTEUgOAor
CisvKiBUaGUgc2l6ZSBvZiBgZmxvYXQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVm
aW5lIFNJWkVPRl9GTE9BVCA0CisKKy8qIFRoZSBzaXplIG9mIGBsb25nJywgYXMgY29tcHV0ZWQg
Ynkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfTE9ORyA0CisKKy8qIFRoZSBzaXplIG9mIGBs
b25nIGRvdWJsZScsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX0xP
TkdfRE9VQkxFIDE2CisKKy8qIFRoZSBzaXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBi
eSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgOAorCisvKiBUaGUgc2l6ZSBv
ZiBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9PRkZf
VCA4CisKKy8qIFRoZSBzaXplIG9mIGBzaXplX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICov
CisjZGVmaW5lIFNJWkVPRl9TSVpFX1QgNAorCisvKiBUaGUgc2l6ZSBvZiBgdm9pZCAqJywgYXMg
Y29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfVk9JRF9QIDQKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCisjZGVmaW5l
IFNURENfSEVBREVSUyAxCisKKy8qIERldGVybWluZXMgd2hlcmUgdG8gcGxhY2UgdGVtcG9yYXJ5
IGZpbGVzICovCisjZGVmaW5lIFRNUF9ESVJFQ1RPUlkgIi90bXAiCisKKy8qIFZlcnNpb24gbnVt
YmVyIG9mIHBhY2thZ2UgKi8KKyNkZWZpbmUgVkVSU0lPTiAiMS4xLjAiCisKKy8qIFRTRiBtYWpv
ciB2ZXJzaW9uIG51bWJlciAqLworI2RlZmluZSBWRVJTSU9OX01BSk9SIDEKKworLyogVFNGIG1p
bm9yIHZlcnNpb24gbnVtYmVyICovCisjZGVmaW5lIFZFUlNJT05fTUlOT1IgMQorCisvKiBUU0Yg
cGF0Y2ggdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVkVSU0lPTl9QQVRDSCAwCisKKy8qIERl
ZmluZSBXT1JEU19CSUdFTkRJQU4gdG8gMSBpZiB5b3VyIHByb2Nlc3NvciBzdG9yZXMgd29yZHMg
d2l0aCB0aGUgbW9zdAorICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAobGlrZSBNb3Rvcm9sYSBh
bmQgU1BBUkMsIHVubGlrZSBJbnRlbCkuICovCisjaWYgZGVmaW5lZCBBQ19BUFBMRV9VTklWRVJT
QUxfQlVJTEQKKyMgaWYgZGVmaW5lZCBfX0JJR19FTkRJQU5fXworIyAgZGVmaW5lIFdPUkRTX0JJ
R0VORElBTiAxCisjIGVuZGlmCisjZWxzZQorIyBpZm5kZWYgV09SRFNfQklHRU5ESUFOCisvKiAj
ICB1bmRlZiBXT1JEU19CSUdFTkRJQU4gKi8KKyMgZW5kaWYKKyNlbmRpZgorCisvKiBFbmFibGUg
bGFyZ2UgaW5vZGUgbnVtYmVycyBvbiBNYWMgT1MgWCAxMC41LiAgKi8KKyNpZm5kZWYgX0RBUldJ
Tl9VU0VfNjRfQklUX0lOT0RFCisjIGRlZmluZSBfREFSV0lOX1VTRV82NF9CSVRfSU5PREUgMQor
I2VuZGlmCisKKy8qIE51bWJlciBvZiBiaXRzIGluIGEgZmlsZSBvZmZzZXQsIG9uIGhvc3RzIHdo
ZXJlIHRoaXMgaXMgc2V0dGFibGUuICovCisvKiAjdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMgKi8K
KworLyogRGVmaW5lIGZvciBsYXJnZSBmaWxlcywgb24gQUlYLXN0eWxlIGhvc3RzLiAqLworLyog
I3VuZGVmIF9MQVJHRV9GSUxFUyAqLworCisvKiBEZWZpbmUgdG8gZW1wdHkgaWYgYGNvbnN0JyBk
b2VzIG5vdCBjb25mb3JtIHRvIEFOU0kgQy4gKi8KKy8qICN1bmRlZiBjb25zdCAqLworCisvKiBE
ZWZpbmUgdG8gYF9faW5saW5lX18nIG9yIGBfX2lubGluZScgaWYgdGhhdCdzIHdoYXQgdGhlIEMg
Y29tcGlsZXIKKyAgIGNhbGxzIGl0LCBvciB0byBub3RoaW5nIGlmICdpbmxpbmUnIGlzIG5vdCBz
dXBwb3J0ZWQgdW5kZXIgYW55IG5hbWUuICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cworLyogI3Vu
ZGVmIGlubGluZSAqLworI2VuZGlmCisKKy8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29y
ZCBgdm9sYXRpbGUnIGRvZXMgbm90IHdvcmsuIFdhcm5pbmc6IHZhbGlkCisgICBjb2RlIHVzaW5n
IGB2b2xhdGlsZScgY2FuIGJlY29tZSBpbmNvcnJlY3Qgd2l0aG91dC4gRGlzYWJsZSB3aXRoIGNh
cmUuICovCisvKiAjdW5kZWYgdm9sYXRpbGUgKi8KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0
U3RyZWFtMi93YXNtL3RzZi9ncGMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvZ3BjLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNCwgMjAxNSBG
aWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGUF9HUENfSAorI2RlZmluZSBGUF9HUENfSAor
CisjaW5jbHVkZSAidHNmLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworLyogdGhpcyBlbnVtZXJh
dGlvbiBtdXN0IGNvbnRhaW4gdGhlIHNhbWUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBzYW1lIG9yZGVy
CisgKiBhcyBncGNfc3BlYy5pbi4gKi8KK2VudW0gZ3BjX2NlbGwgeworICAgIAorICAgIC8qIGZp
Z3VyZSB0aGlzIG1pZ2h0IGFzIHdlbGwgYmUgaGVyZSBmb3IgY29tcGxldGVuZXNzICovCisgICAg
R1BDX0lfTk9QLAorICAgIAorICAgIC8qIGxhYmVsIGluc3RydWN0aW9uLiAgdGhpcyBpcyB0cmFu
c2xhdGVkIGludG8gYSBub3AuICBidXQKKyAgICAgKiBpdCBjb250YWlucyBhIGxhYmVsICdudW1i
ZXInIGFzIGFuIG9wZXJhbmQuICB0aGVzZSBudW1iZXJzCisgICAgICogZG8gbm90IGhhdmUgdG8g
YmUgdW5pcXVlLiAgd2hlbmV2ZXIgYSBsYWJlbCBpcyB1c2VkLCBpdCB3aWxsIGJlCisgICAgICog
dHJhbnNsYXRlZCBpbnRvIGEganVtcCB0byB0aGUgbmVhcmVzdCBsYWJlbCBpbnN0cnVjdGlvbiB0
aGF0IGhhcworICAgICAqIHRoYXQgbGFiZWwgYXMgaXRzIG9wZXJhbmQsIGJ5IHNlYXJjaGluZyBl
aXRoZXIgaW4gdGhlIGZvcndhcmQgb3IKKyAgICAgKiBiYWNrd2FyZCBkaXJlY3Rpb24sIGRlcGVu
ZGluZyBvbiB3aGV0aGVyIG9yIG5vdCBpdCBpcyBhIGZvcndhcmQKKyAgICAgKiBvciBiYWNrd2Fy
ZCBqdW1wLiAqLworICAgIEdQQ19JX0xBQkVMLAorICAgIAorICAgIC8qIHdlIHdyYXAgdXAgdGhl
IHVzZWZ1bCBzdWJzZXQgb2YgdHNmX2ludGVybmFsLmgncyBjb252ZXJ0aW5nCisgICAgICogY29w
eSBtYWNyb3MgYW5kIHRoZW4gYWRkIGNvbnZlcnNpb24gdG8gdGhlbS4gIHRoZSBvcGVyYW5kcyBh
cmUKKyAgICAgKiBhcyBmb2xsb3dzOgorICAgICAqIENPUFlfeFRPeXpfSU5DYWJjIDxvZmZzZXQ+
CisgICAgICogVGhlIGVmZmVjdCBpcyB0aGF0IHRoZSBwb2ludGVyIGF0IHRoZSB0b3Agb2YgdGhl
IHN0YWNrIGhhcworICAgICAqIG9mZnNldCBhZGRlZCB0byBpdDsgaW4gdGhlIGNhc2Ugb2YgSU5D
RFNULCB0aGlzIHNlcnZlcyBhcyB0aGUKKyAgICAgKiBzb3VyY2UsIHdoaWxlIGZvciBJTkNTUkMg
aXQgc2VydmVzIGFzIHRoZSBkZXN0aW5hdGlvbi4gKi8KKyAgICBHUENfSV9DT1BZX0hUT05DX0lO
Q0RTVCwKKyAgICBHUENfSV9DT1BZX0hUT05TX0lOQ0RTVCwKKyAgICBHUENfSV9DT1BZX0hUT05M
X0lOQ0RTVCwKKyAgICBHUENfSV9DT1BZX0hUT05MTF9JTkNEU1QsCisgICAgR1BDX0lfQ09QWV9I
VE9ORl9JTkNEU1QsCisgICAgR1BDX0lfQ09QWV9IVE9ORF9JTkNEU1QsCisgICAgCisgICAgR1BD
X0lfQ09QWV9IVE9OQ0hPSUNFX1RPX1VJOF9JTkNEU1QsCisKKyAgICAvKiB0aGUgcnVsZXM6Cisg
ICAgICogLT4gaWYgd2UgZG8gbm90IGNoYW5nZSBzaXplIG9yIHJlZHVjZSBzaXplLCB3ZSBjYW4g
aWdub3JlIHRoZQorICAgICAqICAgIHNpemUuCisgICAgICogLT4gaWYgd2UgZXhwYW5kLCB0aGVu
IHRoZSBzaWduZWRuZXNzIG9mIHRoZSBvcmlnaW5hbCBkZXRlcm1pbmVzCisgICAgICogICAgd2hl
dGhlciBvciBub3Qgd2UgZG8gc2lnbiBleHBhbnNpb24uCisgICAgICogLT4gaWYgZXhwYW5kaW5n
IGZsb2F0cyB0byBpbnRzLCB0aGUgc2lnbmVkbmVzcyBvZiB0aGUgdGFyZ2V0CisgICAgICogICAg
bWF0dGVycyAodGhvdWdoIEknbSBub3Qgc3VyZSB3aHkgLSB0aGlzIGlzIG9ubHkgYSBjb25zZXJ2
YXRpdmUKKyAgICAgKiAgICBlc3RpbWF0ZSBiYXNlZCBvbiBsb29raW5nIGF0IHRoZSB0aGluZ3Mg
dGhhdCBnY2MgZG9lcyBmb3IKKyAgICAgKiAgICBmbG9hdCB0byBpbnQgY29udmVyc2lvbikuCisg
ICAgICovCisgICAgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDLAorICAgIEdQQ19JX0NP
UFlfTlRPSENfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSENfVE9fU19aX0lOQ1NSQywKKyAg
ICBHUENfSV9DT1BZX05UT0hDX1RPX1NfRV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IQ19U
T19MX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSENfVE9fTF9FX0lOQ1NSQywKKyAgICBH
UENfSV9DT1BZX05UT0hDX1RPX0xMX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSENfVE9f
TExfRV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IQ19UT19GX1pfSU5DU1JDLAorICAgIEdQ
Q19JX0NPUFlfTlRPSENfVE9fRl9FX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hDX1RPX0Rf
Wl9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IQ19UT19EX0VfSU5DU1JDLAorCisgICAgR1BD
X0lfQ09QWV9OVE9IU19UT19CSVRfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSFNfVE9fQ19J
TkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IU19JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9I
U19UT19MX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSFNfVE9fTF9FX0lOQ1NSQywKKyAg
ICBHUENfSV9DT1BZX05UT0hTX1RPX0xMX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSFNf
VE9fTExfRV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IU19UT19GX1pfSU5DU1JDLAorICAg
IEdQQ19JX0NPUFlfTlRPSFNfVE9fRl9FX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hTX1RP
X0RfWl9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IU19UT19EX0VfSU5DU1JDLAorICAgIAor
ICAgIEdQQ19JX0NPUFlfTlRPSExfVE9fQklUX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hM
X1RPX0NfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExfVE9fU19JTkNTUkMsCisgICAgR1BD
X0lfQ09QWV9OVE9ITF9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9ITF9UT19MTF9aX0lOQ1NS
QywKKyAgICBHUENfSV9DT1BZX05UT0hMX1RPX0xMX0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlf
TlRPSExfVE9fRl9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hMX1RPX0ZfRV9JTkNTUkMs
CisgICAgR1BDX0lfQ09QWV9OVE9ITF9UT19EX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRP
SExfVE9fRF9FX0lOQ1NSQywKKyAgICAKKyAgICBHUENfSV9DT1BZX05UT0hMTF9UT19CSVRfSU5D
U1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExMX1RPX0NfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlf
TlRPSExMX1RPX1NfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExMX1RPX0xfSU5DU1JDLAor
ICAgIEdQQ19JX0NPUFlfTlRPSExMX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hMTF9UT19G
X1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSExMX1RPX0ZfRV9JTkNTUkMsCisgICAgR1BD
X0lfQ09QWV9OVE9ITExfVE9fRF9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hMTF9UT19E
X0VfSU5DU1JDLAorICAgIAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fQklUX0lOQ1NSQywKKyAg
ICBHUENfSV9DT1BZX05UT0hGX1RPX0NfWl9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IRl9U
T19DX0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fU19aX0lOQ1NSQywKKyAgICBH
UENfSV9DT1BZX05UT0hGX1RPX1NfRV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IRl9UT19M
X1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fTF9FX0lOQ1NSQywKKyAgICBHUENf
SV9DT1BZX05UT0hGX1RPX0xMX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSEZfVE9fTExf
RV9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9OVE9IRl9JTkNTUkMsCisgICAgR1BDX0lfQ09QWV9O
VE9IRl9UT19EX0lOQ1NSQywKKyAgICAKKyAgICBHUENfSV9DT1BZX05UT0hEX1RPX0JJVF9JTkNT
UkMsCisgICAgR1BDX0lfQ09QWV9OVE9IRF9UT19DX1pfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlf
TlRPSERfVE9fQ19FX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hEX1RPX1NfWl9JTkNTUkMs
CisgICAgR1BDX0lfQ09QWV9OVE9IRF9UT19TX0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRP
SERfVE9fTF9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hEX1RPX0xfRV9JTkNTUkMsCisg
ICAgR1BDX0lfQ09QWV9OVE9IRF9UT19MTF9aX0lOQ1NSQywKKyAgICBHUENfSV9DT1BZX05UT0hE
X1RPX0xMX0VfSU5DU1JDLAorICAgIEdQQ19JX0NPUFlfTlRPSERfVE9fRl9JTkNTUkMsCisgICAg
R1BDX0lfQ09QWV9OVE9IRF9JTkNTUkMsCisgICAgCisgICAgLyogYmVsb3cgYXJlIGNvbnZlcnQg
YW5kIGNvcHkgcm91dGluZXMgYmV0d2VlbiB0d28gcG9pbnRlcnMgYW5kCisgICAgICogb2Zmc2V0
czsgdGhlc2UgYXJlIGRlc2lnbmVkIGZvciBwcmltaXRpdmVzLiAgdGhlIGRhdGEgaXMgY29waWVk
CisgICAgICogZnJvbSB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlIHRvcG1vc3QgcG9pbnRlciB0
byB0aGUgZ2l2ZW4gb2Zmc2V0CisgICAgICogZnJvbSB0aGUgc2Vjb25kLXRvLXRvcG1vc3QgcG9p
bnRlci4gIGNhbGwgdGhlc2UgZ3V5cyBsaWtlIHNvOgorICAgICAqIEdQQ19JX0NPUFlfeF9UT195
IDxkZXN0IG9mZnNldD4gPHNvdXJjZSBvZmZzZXQ+ICovCisgICAgR1BDX0lfQ09QWV9CSVQsIC8q
IG1ha2VzIG5vbi16ZXJvIHZhbHVlcyBvbmUgLSBnb29kIGZvciBjb252ZXJ0aW5nIHRvIGFuZAor
CQkgICAgICAgZnJvbSBiaXRzICovCisgICAgR1BDX0lfQ09QWV9CSVRfVE9fUywKKyAgICBHUENf
SV9DT1BZX0JJVF9UT19MLAorICAgIEdQQ19JX0NPUFlfQklUX1RPX0xMLAorICAgIEdQQ19JX0NP
UFlfQklUX1RPX0YsCisgICAgR1BDX0lfQ09QWV9CSVRfVE9fRCwKKyAgICAKKyAgICBHUENfSV9D
T1BZX0MsCisgICAgR1BDX0lfQ09QWV9DX1RPX1NfWiwKKyAgICBHUENfSV9DT1BZX0NfVE9fU19F
LAorICAgIEdQQ19JX0NPUFlfQ19UT19MX1osCisgICAgR1BDX0lfQ09QWV9DX1RPX0xfRSwKKyAg
ICBHUENfSV9DT1BZX0NfVE9fTExfWiwKKyAgICBHUENfSV9DT1BZX0NfVE9fTExfRSwKKyAgICBH
UENfSV9DT1BZX0NfVE9fRl9aLAorICAgIEdQQ19JX0NPUFlfQ19UT19GX0UsCisgICAgR1BDX0lf
Q09QWV9DX1RPX0RfWiwKKyAgICBHUENfSV9DT1BZX0NfVE9fRF9FLAorCisgICAgR1BDX0lfQ09Q
WV9TX1RPX0JJVCwKKyAgICBHUENfSV9DT1BZX1NfVE9fQywKKyAgICBHUENfSV9DT1BZX1MsCisg
ICAgR1BDX0lfQ09QWV9TX1RPX0xfWiwKKyAgICBHUENfSV9DT1BZX1NfVE9fTF9FLAorICAgIEdQ
Q19JX0NPUFlfU19UT19MTF9aLAorICAgIEdQQ19JX0NPUFlfU19UT19MTF9FLAorICAgIEdQQ19J
X0NPUFlfU19UT19GX1osCisgICAgR1BDX0lfQ09QWV9TX1RPX0ZfRSwKKyAgICBHUENfSV9DT1BZ
X1NfVE9fRF9aLAorICAgIEdQQ19JX0NPUFlfU19UT19EX0UsCisgICAgCisgICAgR1BDX0lfQ09Q
WV9MX1RPX0JJVCwKKyAgICBHUENfSV9DT1BZX0xfVE9fQywKKyAgICBHUENfSV9DT1BZX0xfVE9f
UywKKyAgICBHUENfSV9DT1BZX0wsCisgICAgR1BDX0lfQ09QWV9MX1RPX0xMX1osCisgICAgR1BD
X0lfQ09QWV9MX1RPX0xMX0UsCisgICAgR1BDX0lfQ09QWV9MX1RPX0ZfWiwKKyAgICBHUENfSV9D
T1BZX0xfVE9fRl9FLAorICAgIEdQQ19JX0NPUFlfTF9UT19EX1osCisgICAgR1BDX0lfQ09QWV9M
X1RPX0RfRSwKKyAgICAKKyAgICBHUENfSV9DT1BZX0xMX1RPX0JJVCwKKyAgICBHUENfSV9DT1BZ
X0xMX1RPX0MsCisgICAgR1BDX0lfQ09QWV9MTF9UT19TLAorICAgIEdQQ19JX0NPUFlfTExfVE9f
TCwKKyAgICBHUENfSV9DT1BZX0xMLAorICAgIEdQQ19JX0NPUFlfTExfVE9fRl9aLAorICAgIEdQ
Q19JX0NPUFlfTExfVE9fRl9FLAorICAgIEdQQ19JX0NPUFlfTExfVE9fRF9aLAorICAgIEdQQ19J
X0NPUFlfTExfVE9fRF9FLAorICAgIAorICAgIEdQQ19JX0NPUFlfRl9UT19CSVQsCisgICAgR1BD
X0lfQ09QWV9GX1RPX0NfWiwKKyAgICBHUENfSV9DT1BZX0ZfVE9fQ19FLAorICAgIEdQQ19JX0NP
UFlfRl9UT19TX1osCisgICAgR1BDX0lfQ09QWV9GX1RPX1NfRSwKKyAgICBHUENfSV9DT1BZX0Zf
VE9fTF9aLAorICAgIEdQQ19JX0NPUFlfRl9UT19MX0UsCisgICAgR1BDX0lfQ09QWV9GX1RPX0xM
X1osCisgICAgR1BDX0lfQ09QWV9GX1RPX0xMX0UsCisgICAgR1BDX0lfQ09QWV9GLAorICAgIEdQ
Q19JX0NPUFlfRl9UT19ELAorICAgIAorICAgIEdQQ19JX0NPUFlfRF9UT19CSVQsCisgICAgR1BD
X0lfQ09QWV9EX1RPX0NfWiwKKyAgICBHUENfSV9DT1BZX0RfVE9fQ19FLAorICAgIEdQQ19JX0NP
UFlfRF9UT19TX1osCisgICAgR1BDX0lfQ09QWV9EX1RPX1NfRSwKKyAgICBHUENfSV9DT1BZX0Rf
VE9fTF9aLAorICAgIEdQQ19JX0NPUFlfRF9UT19MX0UsCisgICAgR1BDX0lfQ09QWV9EX1RPX0xM
X1osCisgICAgR1BDX0lfQ09QWV9EX1RPX0xMX0UsCisgICAgR1BDX0lfQ09QWV9EX1RPX0YsCisg
ICAgR1BDX0lfQ09QWV9ELAorICAgIAorICAgIC8qIG5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gNjQt
Yml0IHNldCBvcGVyYXRpb25zLiAgdGhpcyBpcyB0aGUKKyAgICAgKiByZXN1bHQgb2YgY2VsbHMg
cG9zc2libHkgYmVpbmcgMzItYml0IGluc3RlYWQgb2YgNjQtYml0LiAqLworCisgICAgLyogc2V0
IG9wZXJhdGlvbnMuICB0aGVzZSB0YWtlIGEgY29uc3RhbnQgb2ZmIHRoZSBzdHJlYW0gYW5kCisg
ICAgICogc2hvdmUgaXQgaW50byB0aGUgcmVxdWVzdGVkIG9mZnNldCBmcm9tIHRoZSBwdHIKKyAg
ICAgKiBvbiB0b3Agb2YgdGhlIHN0YWNrLiAgdXNlIGl0IGxpa2Ugc286CisgICAgICogR1BDX0lf
U0VUX1hYIDxkZXN0IG9mZnNldD4gPGNvbnN0YW50PiAqLworICAgIEdQQ19JX1NFVF9DLAorICAg
IEdQQ19JX1NFVF9TLAorICAgIEdQQ19JX1NFVF9MLAorICAgIAorICAgIC8qIHNldCBvcGVyYXRp
b25zLiAgdGhlc2UgdGFrZSBhIGNvbnN0YW50IG9mZiB0aGUgc3RyZWFtIGFuZAorICAgICAqIHNo
b3ZlIGl0IGludG8gdGhlIHJlcXVlc3RlZCBvZmZzZXQgZnJvbSB0aGUgcHRyIHRoYXQgaXMKKyAg
ICAgKiBzZWNvbmQgZnJvbSB0b3Agb2YgdGhlIHN0YWNrLiAgdXNlIGl0IGxpa2Ugc286CisgICAg
ICogR1BDX0lfU0VUXzJORF9YWCA8ZGVzdCBvZmZzZXQ+IDxjb25zdGFudD4gKi8KKyAgICBHUENf
SV9TRVRfMk5EX0MsCisgICAgR1BDX0lfU0VUXzJORF9TLAorICAgIEdQQ19JX1NFVF8yTkRfTCwK
KyAgICAKKyAgICAvKiBub3RlIHRoYXQgdGhlIHJlYWQgaW5zdHJ1Y3Rpb25zIGJlbG93IGFsbCBp
bmNyZW1lbnQgdGhlCisgICAgICogY3VycmVudCBidWZmZXIgcG9pbnRlciByZWdpc3Rlci4gKi8K
KyAgICAKKyAgICAvKiBkbyBhIGJpdHZlY3RvciByZWFkLiAgdGhlIHRzZl9uYXRpdmVfYml0dmVj
dG9yX3Qgc3RydWN0dXJlIGlzCisgICAgICogYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0
b3Btb3N0IHBvaW50ZXIuICBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBHUENfSV9CSVRWRUNU
T1JfUkVBRCA8b2Zmc2V0PiAqLworICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFELAorICAgIAorICAg
IC8qIGJpdHZlY3RvciByZWFkIHRoYXQgY29udmVydHMgdGhlIGJpdHZlY3RvciB0byBzb21ldGhp
bmcgb3RoZXIgdGhhbgorICAgICAqIGEgYml0dmVjdG9yICovCisgICAgR1BDX0lfQklUVkVDVE9S
X1JFQURfVE9fQywKKyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19TLAorICAgIEdQQ19JX0JJ
VFZFQ1RPUl9SRUFEX1RPX0wsCisgICAgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fTEwsCisgICAg
R1BDX0lfQklUVkVDVE9SX1JFQURfVE9fRiwKKyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19E
LAorICAgIAorICAgIC8qIGJpdHZlY3RvciByZWFkIHRoYXQgY29udmVydHMgc29tZXRoaW5nIG90
aGVyIHRoYW4gYSBiaXR2ZWN0b3IgaW50bworICAgICAqIGEgYml0dmVjdG9yICovCisgICAgR1BD
X0lfQklUVkVDVE9SX1JFQURfRlJPTV9DLAorICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01f
UywKKyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0wsCisgICAgR1BDX0lfQklUVkVDVE9S
X1JFQURfRlJPTV9MTCwKKyAgICBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0YsCisgICAgR1BD
X0lfQklUVkVDVE9SX1JFQURfRlJPTV9ELAorICAgIAorICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFE
X0ZST01fVFNGX0lOVEVHRVJfQVJSQVksCisgICAgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9U
U0ZfTE9OR19BUlJBWSwKKworICAgIC8qIGRvIGEgYml0dmVjdG9yIHdyaXRlLiAgdGhlIHRzZl9u
YXRpdmVfYml0dmVjdG9yX3Qgc3RydWN0dXJlIGlzIGF0CisgICAgICogdGhlIGdpdmVuIG9mZnNl
dCBmcm9tIHRoZSB0b3Btb3N0IHBvaW50ZXIuICBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBH
UENfSV9CSVRWRUNUT1JfV1JJVEUgPG9mZnNldD4gKi8KKyAgICBHUENfSV9CSVRWRUNUT1JfV1JJ
VEUsCisgICAgCisgICAgLyogZG8gYSBieXRlIGFycmF5IHJlYWQuICB0aGUgdHNmX25hdGl2ZV9h
cnJheV90IHN0cnVjdHVyZSBpcyBhdCB0aGUKKyAgICAgKiBnaXZlbiBvZmZzZXQgZnJvbSB0aGUg
dG9wbW9zdCBwb2ludGVyLiAgdGhlIGxlbmd0aCBpcyBtdWx0aXBsaWVkCisgICAgICogYnkgdGhl
IGdpdmVuIG11bHRpcGxpZXIgdG8gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBhcnJheSBpbiBieXRl
cy4KKyAgICAgKiBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBHUENfSV9CWVRFX0FSUkFZX1JF
QUQgPG9mZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BDX0lfQllURV9BUlJBWV9SRUFELAor
ICAgIAorICAgIC8qIGRvIGEgYnl0ZSBhcnJheSB3cml0ZS4gIHRoZSB0c2ZfbmF0aXZlX2FycmF5
X3Qgc3RydWN0dXJlIGlzIGF0IHRoZQorICAgICAqIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0b3Bt
b3N0IHBvaW50ZXIuICB0aGUgbGVuZ3RoIGlzIG11bHRpcGxpZWQKKyAgICAgKiBieSB0aGUgZ2l2
ZW4gbXVsdGlwbGllciB0byBvYnRhaW4gdGhlIHNpemUgb2YgdGhlIGFycmF5IGluIGJ5dGVzLgor
ICAgICAqIGNhbGwgdGhpcyBsaWtlIHNvOgorICAgICAqIEdQQ19JX0JZVEVfQVJSQVlfV1JJVEUg
PG9mZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BDX0lfQllURV9BUlJBWV9XUklURSwKKyAg
ICAKKyAgICAvKiBXaGF0IGZvbGxvd3MgYXJlIGluc3RydWN0aW9ucyBmb3Igc3VwcG9ydGluZyBU
U0YgaW50ZWdlcnMuIFNlZSB0aGUKKyAgICAgKiBjb21tZW50IGFib3ZlIHRoZSBkZWNsYXJhdGlv
biBvZiBUU0ZfVEtfSU5URUdFUiBpbiB0c2YuaC4gKi8KKyAgICAKKyAgICAvKiBza2lwIGEgVFNG
IGludGVnZXIuICovCisgICAgR1BDX0lfVFNGX0lOVEVHRVJfU0tJUCwKKyAgICBHUENfSV9UU0Zf
VU5TSUdORURfU0tJUCwKKyAgICBHUENfSV9UU0ZfTE9OR19TS0lQLAorICAgIAorICAgIC8qIHJl
YWQgYSBUU0YgaW50ZWdlciBhbmQgY29udmVydCB0byBhIHZhcmlldHkgb2YgdGhpbmdzLiAqLwor
ICAgIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fQklULAorICAgIEdQQ19JX1RTRl9JTlRFR0VS
X1JFQURfVE9fQywKKyAgICBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX1MsCisgICAgR1BDX0lf
VFNGX0lOVEVHRVJfUkVBRCwKKyAgICBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0xMLAorICAg
IEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fRiwKKyAgICBHUENfSV9UU0ZfSU5URUdFUl9SRUFE
X1RPX0QsCisgICAgR1BDX0lfVFNGX1VOU0lHTkVEX1JFQURfU1VCMSwgLyogcmVhZHMgb250byB0
aGUgc3RhY2ssIG5vdCBpbnRvIG1lbW9yeS4gKi8KKyAgICBHUENfSV9UU0ZfTE9OR19SRUFEX1RP
X0JJVCwKKyAgICBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0MsCisgICAgR1BDX0lfVFNGX0xPTkdf
UkVBRF9UT19TLAorICAgIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fTCwKKyAgICBHUENfSV9UU0Zf
TE9OR19SRUFELAorICAgIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fRiwKKyAgICBHUENfSV9UU0Zf
TE9OR19SRUFEX1RPX0QsCisgICAgCisgICAgLyogaW5jcmVtZW50IHRoZSBzaXplIHJlZ2lzdGVy
IGZvciBhIFRTRiBpbnRlZ2VyLiAqLworICAgIEdQQ19JX1RTRl9JTlRFR0VSX1NJWkUsCisgICAg
R1BDX0lfVFNGX1VOU0lHTkVEX1BMVVMxX1NJWkUsCisgICAgR1BDX0lfVFNGX0xPTkdfU0laRSwK
KyAgICAKKyAgICAvKiB3cml0ZSBhIFRTRiBpbnRlZ2VyLiAqLworICAgIEdQQ19JX1RTRl9JTlRF
R0VSX1dSSVRFLAorICAgIEdQQ19JX1RTRl9VTlNJR05FRF9QTFVTMV9XUklURSwKKyAgICBHUENf
SV9UU0ZfTE9OR19XUklURSwKKyAgICAKKyAgICAvKiBzZXQgdGhlIHN0cmluZyB0byB0aGUgZW1w
dHkgc3RyaW5nLiAgdGhlIGNoYXIqIGlzIGF0IHRoZSBnaXZlbgorICAgICAqIG9mZnNldCBmcm9t
IHRoZSB0b3Btb3N0IHBvaW50ZXIuICovCisgICAgR1BDX0lfU1RSSU5HX1NFVEVNUFRZLAorICAg
IAorICAgIC8qIGRvIGEgc3RyaW5nIHJlYWQuICB0aGUgY2hhciogaXMgYXQgdGhlIGdpdmVuIG9m
ZnNldCBmcm9tIHRoZQorICAgICAqIHRvcG1vc3QgcG9pbnRlci4gKi8KKyAgICBHUENfSV9TVFJJ
TkdfUkVBRCwKKyAgICAKKyAgICAvKiBkbyBhIHN0cmluZyBza2lwLiAqLworICAgIEdQQ19JX1NU
UklOR19TS0lQLAorICAgIAorICAgIC8qIGNhbGN1bGF0ZSB0aGUgc2l6ZSBmb3IgYSBzdHJpbmcu
ICB0aGUgY2hhciogaXMgYXQgdGhlIGdpdmVuIG9mZnNldAorICAgICAqIGZyb20gdGhlIHRvcG1v
c3QgcG9pbnRlci4gKi8KKyAgICBHUENfSV9TVFJJTkdfU0laRSwKKyAgICAKKyAgICAvKiBkbyBh
IHN0cmluZyB3cml0ZS4gIHRoZSBjaGFyKiBpcyBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhl
CisgICAgICogdG9wbW9zdCBwb2ludGVyLiAqLworICAgIEdQQ19JX1NUUklOR19XUklURSwKKyAg
ICAKKyAgICAvKiBkbyBhIHN0cmluZyBjb3B5LiAgdGhlIHNlY29uZCB0byB0b3Btb3N0IHBvaW50
ZXIgcGx1cyB0aGUgCisgICAgICogZGVzdGluYXRpb24gb2Zmc2V0IHBvaW50cyB0byB0aGUgZGVz
dGluYXRpb24gY2hhciosIHdoaWxlIHRoZQorICAgICAqIHRvcG1vc3QgcG9pbnRlciBwbHVzIHNv
dXJjZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSBzb3VyY2UgY2hhciouCisgICAgICogY2FsbCB0aGlz
IGxpa2Ugc286CisgICAgICogR1BDX0lfU1RSSU5HX0NPUFkgPGRlc3Qgb2Zmc2V0PiA8c3JjIG9m
ZnNldD4gKi8KKyAgICBHUENfSV9TVFJJTkdfQ09QWSwKKworICAgIC8qIHNldCB0aGUgYnVmZmVy
IHRvIGEgYnVmZmVyIGp1c3QgY29udGFpbmluZyB2b2lkLiAgdGhlIHRzZl9idWZmZXJfdCoKKyAg
ICAgKiBpcyBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZybSB0aGUgdG9wbW9zdCBwb2ludGVyLiAqLwor
ICAgIEdQQ19JX0FOWV9TRVRFTVBUWSwKKyAgICAKKyAgICAvKiBkbyBhbiBhbnkgcmVhZC4gIHRo
ZSB0c2ZfYnVmZmVyX3QqIGlzIGF0IHRoZSBnaXZlbiBvZmZzZXQgZnJvbSB0aGUKKyAgICAgKiB0
b3Btb3N0IHBvaW50ZXIuICovCisgICAgR1BDX0lfQU5ZX1JFQUQsCisgICAgCisgICAgLyogZG8g
YW4gYW55IHNraXAuICovCisgICAgR1BDX0lfQU5ZX1NLSVAsCisgICAgCisgICAgLyogY2FsY3Vs
YXRlIHRoZSBzaXplIG9mIGFuIGFueS4gIHRoZSB0c2ZfYnVmZmVyX3QqIGlzIGF0IHRoZSBnaXZl
bgorICAgICAqIG9mZnNldCBmcm0gdGhlIHRvcG1vc3QgcG9pbnRlci4gKi8KKyAgICBHUENfSV9B
TllfU0laRSwKKyAgICAKKyAgICAvKiBkbyBhbiBhbnkgd3JpdGUuICB0aGUgdHNmX2J1ZmZlcl90
KiBpcyBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlCisgICAgICogdG9wbW9zdCBwb2ludGVy
LiAqLworICAgIEdQQ19JX0FOWV9XUklURSwKKyAgICAKKyAgICAvKiBkbyBhbiBhbnkgY29weS4g
IHRoZSBzZWNvbmQgdG8gdG9wbW9zdCBwb2ludGVyIHBsdXMgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICogb2Zmc2V0IHBvaW50cyB0byB0aGUgZGVzdGluYXRpb24gdHNmX2J1ZmZlcl90Kiwgd2hpbGUg
dGhlIHRvcG1vc3QKKyAgICAgKiBwb2ludGVyIHBsdXMgc291cmNlIG9mZnNldCBwb2ludHMgdG8g
dGhlIHNvdXJjZSB0c2ZfYnVmZmVyX3QqLiAgY2FsbAorICAgICAqIHRoaXMgbGlrZSBzbzoKKyAg
ICAgKiBHUENfSV9BTllfQ09QWSA8ZGVzdCBvZmZzZXQ+IDxzcmMgb2Zmc2V0PiAqLworICAgIEdQ
Q19JX0FOWV9DT1BZLAorICAgIAorICAgIC8qIGRvIGEgbWVtY3B5IGZyb20gb25lIGRhdGEgc3Ry
dWN0dXJlIHRvIGFub3RoZXIuICB0aGUKKyAgICAgKiBkZXN0aW5hdGlvbiBpcyBzZWNvbmQgdG8g
dG9wbW9zdCwgd2hpbGUgdGhlIHNvdXJjZSBpcyB0b3Btb3N0LgorICAgICAqIHRoZSBvcGVyYW5k
cyBhcmU6IG9mZnNldCBmcm9tIGRlc3RpbmF0aW9uLCBvZmZzZXQgZnJvbSBzb3VyY2UsIGFuZAor
ICAgICAqIHRoZSBzaXplLiAqLworICAgIEdQQ19JX01FTUNQWSwKKyAgICAKKyAgICAvKiBjb3B5
IGFuIGFycmF5LiAgdGhlIHNlY29uZCB0byB0b3Btb3N0IHBvaW50ZXIgcGx1cyB0aGUKKyAgICAg
KiBkZXN0aW5hdGlvbiBvZmZzZXQgcG9pbnRzIHRvIHRoZSBkZXN0aW5hdGlvbiB0c2ZfbmF0aXZl
X2FycmF5X3QsCisgICAgICogd2hpbGUgdGhlIHRvcG1vc3QgcG9pbnRlciBwbHVzIHNvdXJjZSBv
ZmZzZXQgcG9pbnRzIHRvIHRoZSBzb3VyY2UKKyAgICAgKiB0c2ZfbmF0aXZlX2FycmF5X3QuICB0
aGUgb3RoZXIgb3BlcmFuZCBpcyB0aGUgbXVsdGlwbGllciB0aGF0CisgICAgICogc3BlY2lmaWVz
IHRoZSBudW1iZXIgb2YgYnl0ZXMgZm9yIGVhY2ggYXJyYXkgZWxlbWVudC4gY2FsbCB0aGlzCisg
ICAgICogbGlrZSBzbzoKKyAgICAgKiBHUENfSV9DT1BZX0FSUkFZIDxkZXN0IG9mZnNldD4gPHNy
YyBvZmZzZXQ+IDxtdWx0aXBsaWVyPiAqLworICAgIEdQQ19JX0NPUFlfQVJSQVksCisgICAgCisg
ICAgLyogY29weSBhIGJpdHZlY3Rvci4gIHRoZSBzZWNvbmQgdG8gdG9wbW9zdCBwb2ludGVyIHBs
dXMgdGhlCisgICAgICogZGVzdGluYXRpb24gb2Zmc2V0IHBvaW50cyB0byB0aGUgZGVzdGluYXRp
b24gdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCwKKyAgICAgKiB3aGlsZSB0aGUgdG9wbW9zdCBwb2lu
dGVyIHBsdXMgc291cmNlIG9mZnNldCBwb2ludHMgdG8gdGhlIHNvdXJjZQorICAgICAqIHRzZl9u
YXRpdmVfYml0dmVjdG9yX3QuIGNhbGwgdGhpcyBsaWtlIHNvOgorICAgICAqIEdQQ19JX0NPUFlf
QVJSQVkgPGRlc3Qgb2Zmc2V0PiA8c3JjIG9mZnNldD4gKi8KKyAgICBHUENfSV9DT1BZX0JJVFZF
Q1RPUiwKKyAgICAKKyAgICAvKiBjb3B5IGJldHdlZW4gYml0dmVjdG9ycyBhbmQgb3RoZXIgdHlw
ZXMgb2YgYXJyYXlzICovCisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9DLAorICAgIEdQ
Q19JX0NPUFlfQklUVkVDVE9SX0ZST01fUywKKyAgICBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9N
X0wsCisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9MTCwKKyAgICBHUENfSV9DT1BZX0JJ
VFZFQ1RPUl9GUk9NX0YsCisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9ELAorICAgIEdQ
Q19JX0NPUFlfQklUVkVDVE9SX1RPX0MsCisgICAgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fUywK
KyAgICBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19MLAorICAgIEdQQ19JX0NPUFlfQklUVkVDVE9S
X1RPX0xMLAorICAgIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0YsCisgICAgR1BDX0lfQ09QWV9C
SVRWRUNUT1JfVE9fRCwKKyAgICAKKyAgICAvKiByZWFkIGEgOC1iaXQgdmFsdWUgYW5kIHBsYWNl
IGl0IG9uIHRoZSBzdGFjay4gIGlmIHRoZSB2YWx1ZSB3YXMKKyAgICAgKiAyNTUsIGl0IGlzIGlu
c3RlYWQgY29udmVydGVkIHRvIFVJTlQzMl9NQVguICovCisgICAgR1BDX0lfUkVBRENfVE9fQ0hP
SUNFLAorCisgICAgLyogcmVhZCBhIDMyLWJpdCB2YWx1ZSBhbmQgcGxhY2UgaXQgYXQgdGhlIHRv
cCBvZiB0aGUgc3RhY2suICovCisgICAgR1BDX0lfUkVBREwsCisgICAgCisgICAgLyogZG8gYW4g
YXJyYXkgbGVuZ3RoIHdyaXRlLiAgb3BlcmFuZCBpcyB0aGUgb2Zmc2V0IGZyb20gdGhlCisgICAg
ICogdG9wbW9zdCBwb2ludGVyIHRvIHRoZSAzMi1iaXQgYXJyYXkgbGVuZ3RoLiAgcmVsZXZhbnQK
KyAgICAgKiBib3VuZHMgY2hlY2tzIGFyZSBkb25lLiAqLworICAgIEdQQ19JX0FSUkFZX0xFTl9X
UklURV9GSUVMRCwKKyAgICAKKyAgICAvKiBkbyBhbiBhcnJheSBsZW5ndGggcmVhZC4gIG9wZXJh
bmQgaXMgdGhlIG9mZnNldCBmcm9tIHRoZQorICAgICAqIHRvcG1vc3QgcG9pbnRlciB0byB0aGUg
MzItYml0IGFycmF5IGxlbmd0aC4gIHJlbGV2YW50CisgICAgICogYm91bmRzIGNoZWNrcyBhcmUg
ZG9uZS4gKi8KKyAgICBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRCwKKyAgICAKKyAgICAvKiBk
byBhbiBhcnJheSBsZW5ndGggcmVhZC4gIHRoZSBhcnJheSBsZW5ndGggaXMgcHVzaGVkIG9udG8K
KyAgICAgKiB0aGUgc3RhY2suICByZWxldmFudCBib3VuZHMgY2hlY2tzIGFyZSBkb25lLiAqLwor
ICAgIEdQQ19JX0FSUkFZX0xFTl9SRUFEX0xPQ0FMLAorICAgIAorICAgIC8qIGRvIGFuIGFycmF5
IGxlbmd0aCByZWFkLiAgZGlzY2FyZCB0aGUgYXJyYXkgbGVuZ3RoLiAqLworICAgIEdQQ19JX0FS
UkFZX0xFTl9TS0lQLAorICAgIAorICAgIC8qIGlmIHRoZSA4LWJpdCB2YWx1ZSBwb2ludGVkIHRv
IGJ5IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGZyb20KKyAgICAgKiB0aGUgdG9wbW9zdCBwb2ludGVy
IGlzIG5vbi16ZXJvLCBzZXQgc2V0IHNwZWNpZmllZCBiaXQgaW4KKyAgICAgKiB0aGUgY3VycmVu
dCBidWZmZXIgbG9jYXRpb24uICBvdGhlcndpc2UgcmVzZXQgaXQuICB0aGUKKyAgICAgKiBidWZm
ZXIgcG9pbnRlciBpcyBub3QgYWR2YW5jZWQuICAgeW91IGNhbGwgdGhpcyB0aGluZyBhcworICAg
ICAqIGZvbGxvd3M6CisgICAgICogR1BDX0lfQklUX01BU0tfV1JJVEUgPGJpdCBpbmRleD4gPG9m
ZnNldD4gKi8KKyAgICBHUENfSV9CSVRfTUFTS19XUklURSwKKyAgICAKKyAgICAvKiBtYXNrIG91
dCB0aGUgcmVxdWVzdGVkIGJpdCBmcm9tIHRoZSBjdXJyZW50IGJ1ZmZlciBsb2NhdGlvbgorICAg
ICAqIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb2ludGVyLiAgaWYgc2V0LCB0aGVuIHNldCB0aGUg
OC1iaXQKKyAgICAgKiB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGZy
b20gdGhlIHRvcG1vc3QKKyAgICAgKiBwb2ludGVyIHRvIDE7IG90aGVyd2lzZSwgc2V0IGl0IHRv
IDAuICB0aGlzIGluc3RydWN0aW9uIGlzCisgICAgICogdXNlZCBhcyBmb2xsb3dzOgorICAgICAq
IEdQQ19JX0JJVF9NQVNLX1JFQUQgPGJpdCBpbmRleD4gPG9mZnNldD4gKi8KKyAgICBHUENfSV9C
SVRfTUFTS19SRUFELAorICAgIAorICAgIC8qIHNhbWUgYnV0IHN0b3JlIGl0IGluIHNvbWV0aGlu
ZyBvdGhlciB0aGFuIGEgYnl0ZS4gKi8KKyAgICBHUENfSV9CSVRfTUFTS19SRUFEX1RPX1MsCisg
ICAgR1BDX0lfQklUX01BU0tfUkVBRF9UT19MLAorICAgIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9f
TEwsCisgICAgR1BDX0lfQklUX01BU0tfUkVBRF9UT19GLAorICAgIEdQQ19JX0JJVF9NQVNLX1JF
QURfVE9fRCwKKyAgICAKKyAgICAvKiB3cml0ZSBhIGJpdCBzdG9yZWQgaW4gYSBieXRlLiAgdGhl
IGlkZWEgaXMgdGhhdCB0aGUgdmFsdWUKKyAgICAgKiBpcyAnbm9ybWFsaXplZCcsIG9yIGNvbnZl
cnRlZCB0byBlaXRoZXIgYSAxIG9yIDAgcHJpb3IgdG8KKyAgICAgKiBiZWluZyBwbGFjZWQgaW50
byB0aGUgYnVmZmVyLiAgdGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlCisgICAgICogb2Zmc2V0LiAq
LworICAgIEdQQ19JX0JJVF9XUklURSwKKyAgICAKKyAgICAvKiByZWFkIGEgYml0IHN0b3JlIGl0
IGluIGEgYnl0ZS4gIHRoZSBpZGVhIGlzIHRoYXQgdGhlIHZhbHVlIGlzCisgICAgICogJ25vcm1h
bGl6ZWQnLCBvciBjb252ZXJ0ZWQgdG8gZWl0aGVyIGEgMSBvciAwIHByaW9yIHRvIGJlaW5nCisg
ICAgICogcGxhY2VkIGludG8gdGhlIHVzZXIncyBkYXRhIHN0cnVjdHVyZS4gIHRoZSBvbmx5IGFy
Z3VtZW50IGlzCisgICAgICogdGhlIG9mZnNldC4gKi8KKyAgICBHUENfSV9CSVRfUkVBRCwKKyAg
ICAKKyAgICAvKiByZWFkIGEgYml0IHN0b3JlIGl0IGluIHNvbWV0aGluZyBvdGhlciB0aGFuIGEg
Ynl0ZS4gKi8KKyAgICBHUENfSV9CSVRfUkVBRF9UT19TLAorICAgIEdQQ19JX0JJVF9SRUFEX1RP
X0wsCisgICAgR1BDX0lfQklUX1JFQURfVE9fTEwsCisgICAgR1BDX0lfQklUX1JFQURfVE9fRiwK
KyAgICBHUENfSV9CSVRfUkVBRF9UT19ELAorICAgIAorICAgIC8qIHNraXAgc29tZSBudW1iZXIg
b2YgYnl0ZXMuIG9wZXJhbmQgaXMgdGhlIG51bWJlciBvZiBieXRlcy4gKi8KKyAgICBHUENfSV9T
S0lQLAorICAgIAorICAgIC8qIHNraXAgYW4gYXJyYXk7IHRoZSBvcGVyYW5kcyBhcmUgdGhlIHNp
emUgb2YgZWFjaCBlbGVtZW50LCBhbmQKKyAgICAgKiBhbiBvZmZzZXQgZnJvbSB0aGUgdG9wbW9z
dCBwb2ludGVyLiAgdGhlIGFycmF5IGxlbmd0aCBpcyBmb3VuZAorICAgICAqIGF0IHRoYXQgb2Zm
c2V0LiAgY2FsbCB0aGlzIGxpa2Ugc286CisgICAgICogR1BDX0lfQVJSQVlfQkNfQU5EX1NLSVBf
RklFTEQgPG9mZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BDX0lfQVJSQVlfQkNfQU5EX1NL
SVBfRklFTEQsCisgICAgCisgICAgLyogc2tpcCBhbiBhcnJheTsgdGhpcyBpbnN0cnVjdGlvbiBy
ZWFkcyB0aGUgYXJyYXkgbGVuZ3RoLCBkb2VzCisgICAgICogcmVsZXZhbnQgYm91bmRzIGNoZWNr
cywgYW5kIHNraXBzIHRoZSBhcnJheS4gIGFsbCBpdCBuZWVkcyB0bworICAgICAqIGtub3cgaXMg
dGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBieSBlYWNoIGFycmF5IGVsZW1lbnQuCisgICAg
ICogY2FsbCB0aGlzIGxpa2Ugc286CisgICAgICogR1BDX0lfQVJSQVlfU0tJUCA8Y29uc3RhbnQ+
ICovCisgICAgR1BDX0lfQVJSQVlfU0tJUCwKKyAgICAKKyAgICAvKiBza2lwIGEgYml0dmVjdG9y
OyB0aGUgb3BlcmFuZCBpcyB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcG1vc3QKKyAgICAgKiBwb2lu
dGVyIHdoZXJlIHRoZSBudW1iZXIgb2YgYml0cyBjYW4gYmUgZm91bmQuICovCisgICAgR1BDX0lf
QklUVkVDVE9SX0JDX0FORF9TS0lQX0ZJRUxELAorICAgIAorICAgIC8qIHNraXAgYSBiaXR2ZWN0
b3I7IHRoaXMgaW5zdHJ1Y3Rpb24gcmVhZHMgdGhlIGFycmF5IGxlbmd0aCwgZG9lcworICAgICAq
IHJlbGV2YW50IGJvdW5kcyBjaGVja3MsIGFuZCBza2lwcyB0aGUgYml0dmVjdG9yLiAgdGhpcwor
ICAgICAqIGluc3RydWN0aW9uIHRha2VzIG5vIG9wZXJhbmRzLiAqLworICAgIEdQQ19JX0JJVFZF
Q1RPUl9TS0lQLAorICAgIAorICAgIC8qIGluY3JlbWVudCB0aGUgc2l6ZSByZWdpc3RlciBieSB0
aGUgc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcy4gKi8KKyAgICBHUENfSV9JTkNfU0laRSwKKyAg
ICAKKyAgICAvKiBleGFtaW5lIHRoZSBhcnJheSBsZW5ndGggYXQgdGhlIGdpdmVuIG9mZnNldCBm
cm9tIHRoZSB0b3Btb3N0CisgICAgICogcG9pbnRlciwgYW5kIGluY3JlbWVudCB0aGUgc2l6ZSBy
ZWdpc3RlciBieSB0aGUgbnVtYmVyIG9mCisgICAgICogYnl0ZXMgdGhhdCB0aGlzIGFycmF5IGxl
bmd0aCB3b3VsZCBvY2N1cHkgaW4gdGhlIHN0cmVhbS4gKi8KKyAgICBHUENfSV9JTkNfU0laRV9B
UlJBWV9MRU4sCisgICAgCisgICAgLyogaW5jcmVtZW50IHRoZSBzaXplIHJlZ2lzdGVyIGJ5IHRo
ZSBzaXplIG9mIHRoZSBhcnJheSwgd2hlcmUgdGhlCisgICAgICogc2Vjb25kIG9wZXJhbmQgaXMg
dGhlIHNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbGVtZW50IGFuZCB0aGUKKyAgICAgKiBmaXJzdCBv
cGVyYW5kIGlzIGFuIG9mZnNldCB0byBhIHRzZl9uYXRpdmVfYXJyYXlfdCBzdHJ1Y3R1cmUuICov
CisgICAgR1BDX0lfSU5DX1NJWkVfQVJSQVksCisgICAgCisgICAgLyogaW5jcmVtZW50IHRoZSBz
aXplIHJlZ2lzdGVyIHRvIGFjY29tb2RhdGUgdGhlIG51bWJlciBvZiBiaXRzCisgICAgICogYXMg
c3BlY2lmaWVkIGJ5IHRoZSAzMi1iaXQgdmFsdWUgYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9tIHRo
ZQorICAgICAqIHRvcG1vc3QgcG9pbnRlci4gKi8KKyAgICBHUENfSV9JTkNfU0laRV9CSVRWRUNU
T1IsCisgICAgCisgICAgLyogYm91bmRzIGNoZWNrLiAgYm91bmRzIGNoZWNrIGZhaWx1cmUgbGVh
ZHMgdG8gdGVybWluYXRpb24gb2YKKyAgICAgKiB0aGUgaW50ZXJwcmV0ZXIgd2l0aCBhbiBlcnJv
ci4gIG9wZXJhbmQgaXMgdGhlIG51bWJlciBvZgorICAgICAqIGJ5dGVzIHdlIGV4cGVjdCB0byBi
ZSBhYmxlIHRvIHNlZS4gKi8KKyAgICBHUENfSV9CQywKKyAgICAKKyAgICAvKiBhcnJheSBib3Vu
ZHMgY2hlY2suICBib3VuZHMgY2hlY2sgZmFpbHVyZSBsZWFkcyB0byB0ZXJtaW5hdGlvbgorICAg
ICAqIG9mIHRoZSBpbnRlcnByZXRlciB3aXRoIGFuIGVycm9yLiAgb3BlcmFuZHMgYXJlIGEgc2l6
ZQorICAgICAqIGNvbnN0YW50IGFuZCB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcG1vc3QgcG9pbnRl
ciB0byB0aGUKKyAgICAgKiBsZW5ndGggb2YgdGhlIGFycmF5ICgzMi1iaXQpLiAgaWYgY29uc3Rh
bnQqYXJyYXlfbGVuIGJ5dGVzCisgICAgICogYXJlIG5vdCBhdmFpbGFibGUsIHRoZSBib3VuZHMg
Y2hlY2sgZmFpbHMuICBjYWxsIHRoaXMgbGlrZSBzbzoKKyAgICAgKiBHUENfSV9BUlJBWV9CQ19G
SUVMRCA8b2Zmc2V0PiA8bXVsdGlwbGllcj4gKi8KKyAgICBHUENfSV9BUlJBWV9CQ19GSUVMRCwK
KyAgICAKKyAgICAvKiBhcnJheSBib3VuZHMgY2hlY2suICBib3VuZHMgY2hlY2sgZmFpbHVyZSBs
ZWFkcyB0byB0ZXJtaW5hdGlvbgorICAgICAqIG9mIHRoZSBpbnRlcnByZXRlciB3aXRoIGFuIGVy
cm9yLiAgb3BlcmFuZCBpcyBhIHNpemUKKyAgICAgKiBjb25zdGFudC4gIHRoZSBhcnJheSBsZW5n
dGggaXMgdGhlIHRvcG1vc3Qgc3RhY2sgZWxlbWVudC4gIGlmCisgICAgICogY29uc3RhbnQqYXJy
YXlfbGVuIGJ5dGVzIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgYm91bmRzIGNoZWNrCisgICAgICog
ZmFpbHMuICovCisgICAgR1BDX0lfQVJSQVlfQkNfTE9DQUwsCisgICAgCisgICAgLyogYml0dmVj
dG9yIGJvdW5kcyBjaGVjay4gIGJvdW5kcyBjaGVjayBmYWlsdXJlIGxlYWRzIHRvIHRlcm1pbmF0
aW9uCisgICAgICogb2YgdGhlIGludGVycHJldGVyIHdpdGggYW4gZXJyb3IuICB0aGUgb3BlcmFu
ZCBpcyB0aGUgb2Zmc2V0CisgICAgICogZnJvbSB0aGUgdG9wbW9zdCBwb2ludGVyIHRvIGEgMzIt
Yml0IG51bWJlciBvZiBiaXRzLiAgaWYKKyAgICAgKiAobnVtX2JpdHMrNyk+PjMgYnl0ZXMgYXJl
IG5vdCBhdmFpbGFibGUsIHRoZSBib3VuZHMgY2hlY2sgZmFpbHMuCisgICAgICovCisgICAgR1BD
X0lfQklUVkVDVE9SX0JDX0ZJRUxELAorICAgIAorICAgIC8qIGJpdHZlY3RvciBib3VuZHMgY2hl
Y2suICBib3VuZHMgY2hlY2sgZmFpbHVyZSBsZWFkcyB0byB0ZXJtaW5hdGlvbgorICAgICAqIG9m
IHRoZSBpbnRlcnByZXRlciB3aXRoIGFuIGVycm9yLiAgdGhlIG51bWJlciBvZiBiaXRzIGlzIHRo
ZQorICAgICAqIHRvcG1vc3QgZWxlbWVudCBvbiB0aGUgc3RhY2suICBpZiAobnVtX2JpdHMrNyk+
PjMgYnl0ZXMgYXJlIG5vdAorICAgICAqIGF2YWlsYWJsZSwgdGhlIGJvdW5kcyBjaGVjayBmYWls
cy4KKyAgICAgKi8KKyAgICBHUENfSV9CSVRWRUNUT1JfQkNfTE9DQUwsCisgICAgCisgICAgLyog
bWFsbG9jIGEgYnVmZmVyLiAgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRlYWxsb2NhdGVkIHVwb24K
KyAgICAgKiBpbnRlcnByZXRlciBmYWlsdXJlIG9yIGlmIGl0IGlzIG5vdCByZXR1cm5lZC4gIGlm
IGFsbG9jYXRpb24KKyAgICAgKiBmYWlscywgdGhlIGludGVycHJldGVyIGZhaWxzLiAgdGhlIGFs
bG9jYXRpb24gc2l6ZSBpcyBkZXRlcm1pbmVkCisgICAgICogYnkgdGhlIHNpemUgcmVnaXN0ZXIu
ICBwZXJmb3JtaW5nIHRoaXMgYWxsb2NhdGlvbiBhdXRvbWF0aWNhbGx5IHNldHMKKyAgICAgKiB0
aGUgZW5kIHJlZ2lzdGVyIHNvIHRoYXQgYm91bmRzIGNoZWNrcyBjYW4gYmUgcGVyZm9ybWVkLiAq
LworICAgIEdQQ19JX01BTExPQ19CVUYsCisgICAgCisgICAgLyogcG9wIHRoZSBidWZmZXIgb2Zm
IHRoZSBzdGFjay4gIHRoZSBjdXJyZW50IHBvaW50ZXIsIHRoZSBidWZmZXIKKyAgICAgKiBwb2lu
dGVyLCB0aGUgZW5kIHBvaW50ZXIsIHRoZSBrZWVwIGJpdCwgYW5kIHRoZSB0eXBlcyBwb2ludGVy
IGFyZQorICAgICAqIGFsbCBzZXQuICBob3dldmVyLCBzaXplIGlzIG5vdCBzZXQgKHNvIHlvdSBj
YW5ub3QgZG8gYSBNQUxMT0NfQlVGCisgICAgICogYWZ0ZXIgdGhpcyBjYWxsKS4gKi8KKyAgICBH
UENfSV9QT1BfQlVGLAorICAgIAorICAgIC8qIGRlc3Ryb3kgYSBidWZmZXIuICovCisgICAgR1BD
X0lfREVTVFJPWV9CVUZGRVIsCisgICAgCisgICAgLyogY3JlYXRlIGFuIG91dHB1dCBtYXAuICov
CisgICAgR1BDX0lfTUFLRV9PVVRfTUFQLAorICAgIAorICAgIC8qIGV4YW1pbmUgdGhlIHNlY29u
ZC10by10b3AtbW9zdCBwb2ludGVyLiAgaWYgaXQgaXMgTlVMTCwgdGhlbiBwZXJmb3JtIGEKKyAg
ICAgKiByZWdpb24gYWxsb2MgYW5kIHJlcGxhY2UgdGhlIHNlY29uZC10by10b3AtbW9zdCBwb2lu
dGVyIHdpdGggdGhlIHJlc3VsdC4KKyAgICAgKiBpZiB0aGUgcmVnaW9uIHBvaW50ZXIgd2FzIE5V
TEwsIHRoZW4gaXQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgcmVzdWx0IGFzCisgICAgICogd2VsbCwg
YW5kIHRoZSByZWdpb24gaXMgcHV0IGludG8ga2VlcCBtb2RlLiAgdGhlIG9ubHkgb3BlcmFuZCBp
cyB0aGUKKyAgICAgKiBzaXplLiAqLworICAgIEdQQ19JX0FMTE9DX1JPT1RfTUFZQkVfMk5ELAor
ICAgIAorICAgIC8qIGFsbG9jYXRlIGFuZCBwdXNoLiAgdGhpcyBpcyBhIHJlZ2lvbiBhbGxvYy4g
IGZhaWx1cmUgaGVyZQorICAgICAqIGxlYWRzIHRvIHRlcm1pbmF0aW9uIG9mIHRoZSBpbnRlcnBy
ZXRlci4gIHRoZSBvcGVyYW5kIGlzCisgICAgICogdGhlIHNpemUuICovCisgICAgR1BDX0lfQUxM
T0MsCisgICAgCisgICAgLyogYWxsb2NhdGUgYW5kIHB1c2ggYXJyYXkuICB0aGlzIGlzIGEgcmVn
aW9uIGFsbG9jLiAgZmFpbHVyZSBoZXJlCisgICAgICogbGVhZHMgdG8gdGVybWluYXRpb24gb2Yg
dGhlIGludGVycHJldGVyLiAgdGhlIG9wZXJhbmRzIGFyZQorICAgICAqIHRoZSBlbGVtZW50IHNp
emUgYW5kIHRoZSBvZmZzZXQgZnJvbSB0aGUgdG9wbW9zdCBwb2ludGVyIHRvCisgICAgICogdGhl
IHRzZl9uYXRpdmVfYXJyYXlfdC4gIHRzZl9uYXRpdmVfYXJyYXlfdDo6bGVuIHNob3VsZCBiZSBz
ZXQKKyAgICAgKiBhbHJlYWR5LCBhbmQgaXMgdXNlZCB0byBkZXRlcm1pbmUgaG93IG1hbnkgYnl0
ZXMgdG8gYWxsb2MuCisgICAgICogdHNmX25hdGl2ZV9hcnJheV90OjpkYXRhIHdpbGwgYmUgc2V0
IHRvIHRoZSBzYW1lIHRoaW5nIHRoYXQKKyAgICAgKiBnZXRzIHB1c2hlZCAtLSB0aGF0IGlzLCB0
aGUgbmV3bHkgYWxsb2NhdGVkIGFycmF5LiAgY2FsbCB0aGlzIGxpa2UKKyAgICAgKiBzbzogCisg
ICAgICogR1BDX0lfQUxMT0NfQVJSQVkgPG9mZnNldD4gPG11bHRpcGxpZXI+ICovCisgICAgR1BD
X0lfQUxMT0NfQVJSQVksCisgICAgCisgICAgLyogYWxsb2NhdGUgYW5kIHB1c2ggYXJyYXkuICB0
aGlzIGlzIGEgcmVnaW9uIGFsbG9jLiAgZmFpbHVyZSBoZXJlCisgICAgICogbGVhZHMgdG8gdGVy
bWluYXRpb24gb2YgdGhlIGludGVycHJldGVyLiAgdGhlIG9wZXJhbmRzIGFyZQorICAgICAqIHRo
ZSBlbGVtZW50IHNpemUgYW5kIHRoZSBvZmZzZXQgZnJvbSB0aGUgc2Vjb25kIHRvIHRvcG1vc3Qg
cG9pbnRlciB0bworICAgICAqIHRoZSB0c2ZfbmF0aXZlX2FycmF5X3QuICB0c2ZfbmF0aXZlX2Fy
cmF5X3Q6OmxlbiBzaG91bGQgYmUgc2V0CisgICAgICogYWxyZWFkeSwgYW5kIGlzIHVzZWQgdG8g
ZGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIHRvIGFsbG9jLgorICAgICAqIHRzZl9uYXRpdmVfYXJy
YXlfdDo6ZGF0YSB3aWxsIGJlIHNldCB0byB0aGUgc2FtZSB0aGluZyB0aGF0CisgICAgICogZ2V0
cyBwdXNoZWQgLS0gdGhhdCBpcywgdGhlIG5ld2x5IGFsbG9jYXRlZCBhcnJheS4gIGNhbGwgdGhp
cyBsaWtlCisgICAgICogc286IAorICAgICAqIEdQQ19JX0FMTE9DX0FSUkFZIDxvZmZzZXQ+IDxt
dWx0aXBsaWVyPiAqLworICAgIEdQQ19JX0FMTE9DX0FSUkFZXzJORCwKKworICAgIC8qIGNhbGwg
YSBmdW5jdGlvbiBvZiB0aGUgZm9ybSB2b2lkKCopKHZvaWQqKSwgcGFzc2luZyBpdCB0aGUgZ2l2
ZW4KKyAgICAgKiBvZmZzZXQgZnJvbSB0aGUgdG9wbW9zdCBwb2ludGVyLiAgY2FsbCBpdCBsaWtl
IHNvOgorICAgICAqIEdQQ19JX0NBTEwgPG9mZnNldD4gPGZ1bmN0aW9uIHBvaW50ZXI+ICovCisg
ICAgR1BDX0lfQ0FMTCwKKworICAgIC8qIGFkZCBjYWxsYmFjayB0byBjdXJyZW50IHJlZ2lvbi4g
IGNhbGxiYWNrIG11c3QgYmUgb2YgdGhlIGZvcm0KKyAgICAgKiB2b2lkKCopKHZvaWQqKS4gIHRo
ZSBhcmd1bWVudCBpcyBjb21wdXRlZCBhcyBhbiBvZmZzZXQgZnJvbSB0aGUKKyAgICAgKiB0b3Bt
b3N0IHBvaW50ZXIuICBjYWxsIGl0IGxpa2Ugc286CisgICAgICogR1BDX0lfQUREX0NCQUNLIDxv
ZmZzZXQ+IDxmdW5jdGlvbiBwb2ludGVyPiAqLworICAgIEdQQ19JX0FERF9DQkFDSywKKyAgICAK
KyAgICAvKiBjYWxsIGZyZWUgd2l0aCB0aGUgdG9wIG9mIHRoZSBzdGFjay4gKi8KKyAgICBHUENf
SV9GUkVFX0lNTUVESUFURSwKKyAgICAKKyAgICAvKiBjYWxsIGZyZWUgd2l0aCB0aGUgdGhlIHBv
aW50ZXIgbG9hZGVkIGZyb20gc3RhY2sgdG9wICsgb2Zmc2V0LiAqLworICAgIEdQQ19JX0ZSRUUs
CisgICAgCisgICAgLyogc3RvcmUgdGhlIHRvcG1vc3QgcG9pbnRlciBhdCB0aGUgZ2l2ZW4gb2Zm
c2V0IGZyb20gdGhlIHNlY29uZC10by0KKyAgICAgKiB0b3Btb3N0IHBvaW50ZXIuICovCisgICAg
R1BDX0lfU1RPUkVfUFRSLAorICAgIAorICAgIC8qIHN0b3JlIHRoZSB0b3Btb3N0IHBvaW50ZXIg
YXQgdGhlIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0aGlyZC10by0KKyAgICAgKiB0b3Btb3N0IHBv
aW50ZXIuICovCisgICAgR1BDX0lfU1RPUkVfUFRSXzJORCwKKyAgICAKKyAgICAvKiBzdG9yZSB0
aGUgdG9wbW9zdCB2YWx1ZSBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlIHNlY29uZC10by0K
KyAgICAgKiB0b3Btb3N0IHBvaW50ZXIuICovCisgICAgR1BDX0lfU1RPUkVfVkFMLAorICAgIAor
ICAgIC8qIHB1c2ggYSBwb2ludGVyIG9udG8gdGhlIHN0YWNrLiAgb3BlcmFuZCBpcyBhbgorICAg
ICAqIG9mZnNldCBmcm9tIGN1cnJlbnQgdG9wLW1vc3QgcG9pbnRlciB3aGVyZSB0aGlzIHBvaW50
ZXIKKyAgICAgKiBjYW4gYmUgZm91bmQuICovCisgICAgR1BDX0lfUFVTSF9QVFIsCisgICAgCisg
ICAgLyogcHVzaCBhIHBvaW50ZXIgb250byB0aGUgc3RhY2suICBvcGVyYW5kIGlzIGFuCisgICAg
ICogb2Zmc2V0IGZyb20gY3VycmVudCBzZWNvbmQtdG8tdG9wLW1vc3QgcG9pbnRlciB3aGVyZSB0
aGlzIHBvaW50ZXIKKyAgICAgKiBjYW4gYmUgZm91bmQuICovCisgICAgR1BDX0lfUFVTSF9QVFJf
Mk5ELAorICAgIAorICAgIC8qIHB1c2ggYSBwb2ludGVyIG9udG8gdGhlIHN0YWNrLiAgb3BlcmFu
ZCBpcyBhbgorICAgICAqIG9mZnNldCBmcm9tIGN1cnJlbnQgdGhpcmQtdG8tdG9wLW1vc3QgcG9p
bnRlciB3aGVyZSB0aGlzIHBvaW50ZXIKKyAgICAgKiBjYW4gYmUgZm91bmQuICovCisgICAgR1BD
X0lfUFVTSF9QVFJfM1JELAorICAgIAorICAgIC8qIHB1c2ggYSAzMi1iaXQgdmFsdWUgb250byB0
aGUgc3RhY2suICBvcGVyYW5kIGlzIGFuCisgICAgICogb2Zmc2V0IGZyb20gY3VycmVudCB0b3At
bW9zdCBwb2ludGVyIHdoZXJlIHRoaXMKKyAgICAgKiB2YWx1ZSBjYW4gYmUgZm91bmQuICovCisg
ICAgR1BDX0lfUFVTSF9WQUwsCisKKyAgICAvKiBkdXAgdGhlIHNlY29uZC10by10b3Btb3N0IHBv
aW50ZXIgKi8KKyAgICBHUENfSV9EVVBfUFRSXzJORCwKKyAgICAKKyAgICAvKiBwb3AgYSBwb2lu
dGVyIG9yIHZhbHVlIGZyb20gdGhlIHN0YWNrLiAqLworICAgIEdQQ19JX1BPUCwKKyAgICAKKyAg
ICAvKiBwb3AgdHdvIHRoaW5ncyBvZmYgdGhlIHN0YWNrLiAqLworICAgIEdQQ19JX1RXT19QT1As
CisgICAgCisgICAgLyogcG9wIHRocmVlIHRoaW5ncyBvZmYgdGhlIHN0YWNrLiAqLworICAgIEdQ
Q19JX1RIUkVFX1BPUCwKKyAgICAKKyAgICAvKiBmaXJzdCwgc2F2ZSB0aGUgdG9wbW9zdCBwb2lu
dGVyIGluIGEgcmVnaXN0ZXIuICB0aGVuLCBhZGQgdGhlCisgICAgICogMzItYml0IHZhbHVlIHN0
b3JlZCBhdCBhbiBvZmZzZXQgZnJvbSB0aGUgc2Vjb25kIHRvCisgICAgICogdG9wbW9zdCBwb2lu
dGVyIG11bHRpcGxpZWQgYnkgdGhlIHN1cHBsaWVkIGNvbnN0YW50IHRvIHRoZSB0b3Btb3N0Cisg
ICAgICogcG9pbnRlci4gIGZpbmFsbHksIHB1c2ggdGhlIHNhdmVkIHBvaW50ZXIgb250byB0aGUg
c3RhY2suCisgICAgICogdGhpcyB3ZWlyZCBpbnN0cnVjdGlvbiBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICogR1BDX0lfTVVMQUREX1BUUiA8b2Zmc2V0PiA8Y29uc3RhbnQ+CisgICAgICogV2hhdCB0
aGUgaGVjayBkb2VzIHRoaXMgaW5zdHJ1Y3Rpb24gcmVhbGx5IGRvPyAgSXQgc2V0cyB5b3UgdXAK
KyAgICAgKiBmb3IgYSBwb2ludGVyIGxvb3AhICovCisgICAgR1BDX0lfUkVQVVNIX01VTEFERF9Q
VFIsCisgICAgCisgICAgLyogZmlyc3QsIHNhdmUgdGhlIHRvcG1vc3QgcG9pbnRlciBpbiBhIHJl
Z2lzdGVyLiAgdGhlbiwgYWRkIHRoZQorICAgICAqIDMyLWJpdCB2YWx1ZSBzdG9yZWQgYXQgYW4g
b2Zmc2V0IGZyb20gdGhlIHRoaXJkIHRvCisgICAgICogdG9wbW9zdCBwb2ludGVyIG11bHRpcGxp
ZWQgYnkgdGhlIHN1cHBsaWVkIGNvbnN0YW50IHRvIHRoZSB0b3Btb3N0CisgICAgICogcG9pbnRl
ci4gIGZpbmFsbHksIHB1c2ggdGhlIHNhdmVkIHBvaW50ZXIgb250byB0aGUgc3RhY2suCisgICAg
ICogdGhpcyB3ZWlyZCBpbnN0cnVjdGlvbiBsb29rcyBsaWtlIHRoaXM6CisgICAgICogR1BDX0lf
TVVMQUREX1BUUiA8b2Zmc2V0PiA8Y29uc3RhbnQ+ICovCisgICAgR1BDX0lfUkVQVVNIX01VTEFE
RF9QVFJfMk5ELAorICAgIAorICAgIC8qIGNvbXBhcmUgKGxlc3MtdGhhbikgdGhlIHRvcG1vc3Qg
cG9pbnRlciB0byB0aGUgbmV4dC10by10b3Btb3N0CisgICAgICogcG9pbnRlci4gIGlmIHRoZSBj
b21wYXJpc29uIGZhaWxzLCBqdW1wIHRvIHRoZSBnaXZlbiBsYWJlbC4KKyAgICAgKiB0aGlzIGlz
IGEgZm9yd2FyZCBqdW1wLiAqLworICAgIEdQQ19JX0NPTVBGQUlMSlVNUCwKKyAgICAKKyAgICAv
KiBjb21wYXJlIChsZXNzLXRoYW4pIHRoZSBzZWNvbmQgdG8gdG9wbW9zdCBwb2ludGVyIHRvIHRo
ZSB0aGlyZAorICAgICAqIHRvIHRvcG1vc3QgcG9pbnRlci4gIGlmIHRoZSBjb21wYXJpc29uIGZh
aWxzLCBqdW1wIHRvIHRoZSBnaXZlbgorICAgICAqIGxhYmVsLiAgdGhpcyBpcyBhIGZvcndhcmQg
anVtcC4gKi8KKyAgICBHUENfSV9DT01QRkFJTEpVTVBfMk5ELAorICAgIAorICAgIC8qIGFkZCB0
aGUgZ2l2ZW4gY29uc3RhbnQgdG8gdGhlIHRvcG1vc3QgcG9pbnRlciwgY29tcGFyZSBpdAorICAg
ICAqIChsZXNzLXRoYW4pIHRvIHRoZSBuZXh0LXRvLXRvcG1vc3QgcG9pbnRlciwgYW5kIGlmIHRo
ZQorICAgICAqIGNvbXBhcmlzb24gaXMgdHJ1ZSwganVtcCB0byB0aGUgZ2l2ZW4gbGFiZWwuICBu
b3RlIHRoYXQKKyAgICAgKiB0aGlzIGlzIGEgYmFja3dhcmQgYnJhbmNoLCBzbyB0aGUgbGFiZWwg
aXMgbG9va2VkIGZvcgorICAgICAqIGJhY2t3YXJkcywgbm90IGZvcndhcmRzLiAgaGVyZSdzIGhv
dyB0byBjYWxsIGl0OgorICAgICAqIEdQQ19JX0FERENPTVBKVU1QIDxjb25zdGFudD4gPGxhYmVs
PiAqLworICAgIEdQQ19JX0FERENPTVBKVU1QLAorICAgIAorICAgIC8qIGFkZCB0aGUgZGVzdGlu
YXRpb24gY29uc3RhbnQgdG8gdGhlIHNlY29uZC10by10b3Btb3N0IHBvaW50ZXIsCisgICAgICog
YWRkIHRoZSBzb3VyY2UgY29uc3RhbnQgdG8gdGhlIHRvcG1vc3QgcG9pbnRlciwgY29tcGFyZSB0
aGUKKyAgICAgKiBzZWNvbmQtdG8tdG9wbW9zdCBwb2ludGVyIHRvIHRoZSB0aGlyZC10by10b3Bt
b3N0IHBvaW50ZXIsIGFuZAorICAgICAqIGlmIHRoZSBjb21wYXJpc29uIGlzIHRydWUsIGp1bXAg
dG8gdGhlIGdpdmVuIGxhYmVsLiAgbm90ZSB0aGF0CisgICAgICogdGhpcyBpcyBhIGJhY2t3YXJk
IGJyYW5jaCwgc28gdGhlIGxhYmVsIGlzIGxvb2tlZCBmb3IgYmFja3dhcmRzLAorICAgICAqIG5v
dCBmb3J3YXJkcy4gIGhlcmUncyBob3cgdG8gY2FsbCBpdDoKKyAgICAgKiBHUENfSV9UV09fQURE
Q09NUEpVTVAgPGRlc3QgY29uc3Q+IDxzcmMgY29uc3Q+IDxsYWJlbD4gKi8KKyAgICBHUENfSV9U
V09fQUREQ09NUEpVTVAsCisgICAgCisgICAgLyogaWYgdGhlIHRvcG1vc3QgdmFsdWUgb24gdGhl
IHN0YWNrIGlzIHplcm8sIGp1bXAgZm9yd2FyZCB0bworICAgICAqIHRoZSBnaXZlbiBsYWJlbC4g
Ki8KKyAgICBHUENfSV9aRVJPSlVNUCwKKyAgICAKKyAgICAvKiBkZWNyZW1lbnQgdGhlIHZhbHVl
IGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLiAgaWYgaXQgaXMgbm9uLXplcm8sCisgICAgICoganVt
cCBiYWNrd2FyZCB0byB0aGUgZ2l2ZW4gbGFiZWwuICovCisgICAgR1BDX0lfREVDQ09NUEpVTVAs
CisgICAgCisgICAgLyogY29tcGFyZXMgdGhlIHRvcG1vc3QgZWxlbWVudCBvbiB0aGUgc3RhY2sg
dG8gdGhlIHN1cHBsaWVkIGNvbnN0YW50LgorICAgICAqIGlmIHRoZSB0b3Btb3N0IGVsZW1lbnQg
aXMgVUlOVDMyX01BWCwgbm90aGluZyBoYXBwZW5zLiAgaWYgdGhlCisgICAgICogdG9wbW9zdCBl
bGVtZW50IGlzIGxlc3MgdGhhbiB0aGUgc3VwcGxpZWQgY29uc3RhbnQsIG5vdGhpbmcgaGFwcGVu
cy4KKyAgICAgKiBvdGhlcndpc2UsIGl0IGlzIGFuIGVycm9yLCBhbmQgdGhlIGludGVycHJldGVy
IGZhaWxzIG91dC4gKi8KKyAgICBHUENfSV9DSEVDS0NIT0lDRSwKKyAgICAKKyAgICAvKiBwb3Ag
dGhlIDMyLWJpdCB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaworICAgICAqIGFuZCB1c2Ug
aXQgYXMgYW4gaW5kZXggaW50byB0aGUgZ2l2ZW4gdGFibGUsIGFuZCB0aGVuIHBsYWNlCisgICAg
ICogdGhlIGxvb2tlZCB1cCB2YWx1ZSBpbnRvIHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IHRo
ZSB0b3Btb3N0CisgICAgICogcG9pbnRlciBwbHVzIHRoZSBvZmZzZXQuICBoZXJlJ3MgdGhlIHdh
eSB5b3UgY2FsbCB0aGlzIGJlYXN0OgorICAgICAqIEdQQ19JX1RBQkxFU0VUX0xPQ0FMX1RPX0ZJ
RUxEIDxvZmZzZXQ+IDxudW0gdGFibGUgZW50cmllcz4KKyAgICAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZW50cnkgMD4gPGVudHJ5IDE+IC4uLgorICAgICAqIElmIHRoZSB2YWx1
ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBiZXlvbmQgdGhlIGJvdW5kcyBvZgorICAgICAq
IHRoaXMgdGFibGUsIHRoZW4gaXQgaXMgYW4gZXJyb3IgYW5kIHRoZSBpbnRlcnByZXRlciBpcwor
ICAgICAqIHRlcm1pbmF0ZWQuICBJZiB0aGUgdmFsdWUgaXMgVUlOVDMyX01BWCwgdGhlbiB0aGUg
bG9jYXRpb24gaXMKKyAgICAgKiBzZXQgdG8gVUlOVDMyX01BWC4gKi8KKyAgICBHUENfSV9UQUJM
RVNFVF9MT0NBTF9UT19GSUVMRCwKKyAgICAKKyAgICAvKiByZWFkIHRoZSAzMi1iaXQgdmFsdWUg
YXQgdGhlIGdpdmVuIHNvdXJjZSBvZmZzZXQgZnJvbSB0aGUKKyAgICAgKiB0b3Btb3N0IHBvaW50
ZXIgYW5kIHVzZSBpdCBhcyBhbiBpbmRleCBpbnRvIHRoZSBnaXZlbiB0YWJsZSwgYW5kCisgICAg
ICogdGhlbiBwbGFjZSB0aGUgbG9va2VkIHVwIHZhbHVlIGludG8gdGhlIGxvY2F0aW9uIHBvaW50
ZWQgdG8gYnkKKyAgICAgKiB0aGUgZGVzdGluYXRpb24gb2Zmc2V0IHBsdXMgdGhlIHNlY29uZCB0
byB0b3Btb3N0IHBvaW50ZXIuCisgICAgICogY2FsbCB0aGlzIGxpa2Ugc286CisgICAgICogR1BD
X0lfVEFCTEVTRVRfRklFTERfVE9fRklFTEQgPGRlc3Qgb2Zmc2V0PiA8c291cmNlIG9mZnNldD4K
KyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnVtIHRhYmxlIGVudHJpZXM+
IDxlbnRyeSAwPiAuLi4KKyAgICAgKiBJZiB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIG9mZnNldCBm
cm9tIHRoZSB0b3Btb3N0IHBvaW50ZXIgaXMKKyAgICAgKiBiZXlvbmQgdGhlIGJvdW5kcyBvZiB0
aGlzIHRhYmxlLCB0aGVuIGl0IGlzIGFuIGVycm9yIGFuZCB0aGUKKyAgICAgKiBpbnRlcnByZXRl
ciBpcyB0ZXJtaW5hdGVkLiAgSWYgdGhlIHZhbHVlIGlzIFVJTlQzMl9NQVgsIHRoZW4gdGhlCisg
ICAgICogbG9jYXRpb24gaXMgc2V0IHRvIFVJTlQzMl9NQVguICovCisgICAgR1BDX0lfVEFCTEVT
RVRfRklFTERfVE9fRklFTEQsCisgICAgCisgICAgLyogcmV0cmlldmUgdGhlIDMyLWJpdCB2YWx1
ZSBmcm9tIHRoZSBvZmZzZXQgb2ZmIG9mIHRoZSB0b3Btb3N0CisgICAgICogcG9pbnRlciBhbmQg
dXNlIGl0IGFzIGFuIGluZGV4IGludG8gdGhlIGdpdmVuIHRhYmxlLCBhbmQgdGhlbiBqdW1wCisg
ICAgICogdG8gdGhlIGxvY2F0aW9uIGxhYmVsZWQgYnkgdGhlIGxvb2tlZCB1cCB2YWx1ZS4gIFlv
dSBjYWxsIHRoaXMKKyAgICAgKiBiZWFzdCBsaWtlIHNvOgorICAgICAqIEdQQ19JX1RBQkxFSlVN
UF9GSUVMRCA8b2Zmc2V0PiA8bnVtIHRhYmxlIGVudHJpZXM+IDxlbnRyeSAwPiAuLi4KKyAgICAg
KiBJZiB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIG9mZnNldCBmcm9tIHRoZSB0b3Btb3N0IHBvaW50
ZXIgaXMKKyAgICAgKiBiZXlvbmQgdGhlIGJvdW5kcyBvZiB0aGlzIHRhYmxlLCB0aGVuIGl0IGlz
IGFuIGVycm9yIGFuZCB0aGUKKyAgICAgKiBpbnRlcnByZXRlciBpcyB0ZXJtaW5hdGVkLiAgSWYg
dGhlIHZhbHVlIGlzIFVJTlQzMl9NQVgsIHRoZW4gbm8KKyAgICAgKiBqdW1wIG9jY3Vycy4gKi8K
KyAgICBHUENfSV9UQUJMRUpVTVBfRklFTEQsCisgICAgCisgICAgLyogcG9wIHRoZSAzMi1iaXQg
dmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgYW5kCisgICAgICogdXNlIGl0IGFzIGFuIGlu
ZGV4IGludG8gdGhlIGdpdmVuIHRhYmxlLCBhbmQgdGhlbiBqdW1wIHRvIHRoZQorICAgICAqIGxv
Y2F0aW9uIGxhYmVsZWQgYnkgdGhlIGxvb2tlZCB1cCB2YWx1ZS4gIFlvdSBjYWxsIHRoaXMKKyAg
ICAgKiBiZWFzdCBsaWtlIHNvOgorICAgICAqIEdQQ19JX1RBQkxFSlVNUCA8bnVtIHRhYmxlIGVu
dHJpZXM+IDxlbnRyeSAwPiAuLi4KKyAgICAgKiBJZiB0aGUgdmFsdWUgYXQgdGhlIHRvcG1vc3Qg
cG9pbnRlciBpcyBiZXlvbmQgdGhlIGJvdW5kcyBvZgorICAgICAqIHRoaXMgdGFibGUsIHRoZW4g
aXQgaXMgYW4gZXJyb3IgYW5kIHRoZSBpbnRlcnByZXRlciBpcworICAgICAqIHRlcm1pbmF0ZWQu
ICBJZiB0aGUgdmFsdWUgaXMgVUlOVDMyX01BWCwgdGhlbiBubyBqdW1wIG9jY3Vycy4gKi8KKyAg
ICBHUENfSV9UQUJMRUpVTVBfTE9DQUwsCisgICAgCisgICAgLyoganVtcCB0byB0aGUgZ2l2ZW4g
bGFiZWwgdW5jb25kaXRpb25hbGx5LiAgdGhpcyBpcyBhIGZvcndhcmQganVtcCAqLworICAgIEdQ
Q19JX0pVTVAsCisgICAgCisgICAgLyogcmV0dXJucyBvbmUuICovCisgICAgR1BDX0lfUkVUVVJO
X09ORSwKKyAgICAKKyAgICAvKiByZXR1cm5zIHRoZSB0b3AgcG9pbnRlciB3aXRob3V0IGNsZWFy
aW5nIHRoZSByZWdpb24uICovCisgICAgR1BDX0lfUkVUVVJOX1RPUF9XSVRIX1JFR0lPTiwKKyAg
ICAKKyAgICAvKiBhc3N1bWVzIHRoYXQgdGhlIGJ1ZmZlciB0aGF0IHRoZSBjbGllbnQgc2VlcyBp
cyBpbiB0aGUgc3RhY2sgc2xvdCBqdXN0CisgICAgICogYmVsb3cgdGhlIHRvcCBvbmUuIGluaXRp
YWxpemVzIGl0IHdpdGggdGhlIHJlc3VsdGluZyBkYXRhIGJ1ZmZlciBhbmQgc2V0cworICAgICAq
IHRoZSB0eXBlcyB0byB0aGUgdHlwZV9pbl9tYW4gZW1wdHkgc2luZ2xldG9uLiAqLworICAgIEdQ
Q19JX1JFVFVSTl9PTkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUywKKyAgICAKKyAgICAvKiBh
c3N1bWVzIHRoYXQgdGhlIGJ1ZmZlciB0aGF0IHRoZSBjbGllbnQgc2VlcyBpcyBpbiB0aGUgc3Rh
Y2sgc2xvdCBqdXN0CisgICAgICogYmVsb3cgdGhlIHRvcCBvbmUuIGluaXRpYWxpemVzIGl0IHdp
dGggdGhlIHJlc3VsdGluZyBkYXRhIGJ1ZmZlciBhbmQgdGhlCisgICAgICogaW52ZXJzZSBvZiB0
aGUgY3VycmVudCBydW5uaW5nIG91dF9tYXAuICovCisgICAgR1BDX0lfUkVUVVJOX09ORV9JTklU
X0JVRl9XSVRIX1RZUEVTX0ZST01fT1VUX01BUCwKKyAgICAKKyAgICAvKiB0aGlzIGlzIG5vdCBh
IHJlYWwgaW5zdHJ1Y3Rpb24uICBkb24ndCB1c2UgaXQuICBidXQgbWFrZSBzdXJlIHRoYXQKKyAg
ICAgKiBpdCBpcyBhbHdheXMgYXQgdGhlIGVuZCBvZiB0aGlzIGVudW1lcmF0aW9uLiAqLworICAg
IEdQQ19JX0xBU1QKK307CisKK3R5cGVkZWYgdWludHB0cl90IGdwY19jZWxsX3Q7CisKKy8qIGEg
bGlzdCBvZiBjZWxsIHBvaW50ZXJzICovCitzdHJ1Y3QgZ3BjX2NlbGxfbGlzdCB7CisgICAgZ3Bj
X2NlbGxfdCAqY2VsbDsKKyAgICBzdHJ1Y3QgZ3BjX2NlbGxfbGlzdCAqbmV4dDsKK307CisKK3R5
cGVkZWYgc3RydWN0IGdwY19jZWxsX2xpc3QgZ3BjX2NlbGxfbGlzdF90OworCisvKiBjb250YWlu
cyBHUENfSV9MQUJFTCBpbnN0cnVjdGlvbnMuICovCitzdHJ1Y3QgZ3BjX3Byb3RvIHsKKyAgICB1
aW50MzJfdCBudW1fYXJnczsKKyAgICBncGNfY2VsbF90ICpzdHJlYW07CisgICAgdWludDMyX3Qg
c2l6ZTsgIC8qIG51bWJlciBvZiBjZWxscyBhbGxvY2F0ZWQgZm9yIHN0cmVhbS4gIHRoaXMgaXMg
YWxzbworICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbnVtYmVyIG9mIGNlbGxzIHRoYXQgaGF2
ZSBjb2RlIGluIHRoZW0uICovCit9OworCisvKiBkb2VzIG5vdCBjb250YWluIEdQQ19JX0xBQkVM
IGluc3RydWN0aW9ucy4gKi8KK3N0cnVjdCBncGNfaW50YWJsZSB7CisgICAgdWludDMyX3QgbnVt
X2FyZ3M7CisgICAgZ3BjX2NlbGxfdCAqc3RyZWFtOworICAgIHVpbnQzMl90IHNpemU7ICAvKiBu
dW1iZXIgb2YgY2VsbHMgYWxsb2NhdGVkIGZvciBzdHJlYW0uICB0aGlzIGlzIGFsc28KKyAgICAg
ICAgICAgICAgICAgICAgICogdGhlIG51bWJlciBvZiBjZWxscyB0aGF0IGhhdmUgY29kZSBpbiB0
aGVtLiAqLworCisgICAgdHNmX3N0X3RhYmxlICp0YXJnZXRzOworCisgICAgdHNmX3N0X3RhYmxl
ICpzdGFja19oZWlnaHRzOworICAgIGludHB0cl90IG1heF9oZWlnaHQ7Cit9OworCit0eXBlZGVm
IHN0cnVjdCBncGNfaW50YWJsZSBncGNfaW50YWJsZV90OworCisvKiB0aHJlYWRlZCBjb2RlICov
CitzdHJ1Y3QgZ3BjX3RocmVhZGVkIHsKKyAgICB1aW50MzJfdCBudW1fYXJnczsKKyAgICBncGNf
Y2VsbF90ICpzdHJlYW07CisgICAgdWludDMyX3Qgc2l6ZTsgIC8qIG51bWJlciBvZiBjZWxscyBh
bGxvY2F0ZWQgZm9yIHN0cmVhbS4gIHRoaXMgaXMgYWxzbworICAgICAgICAgICAgICAgICAgICAg
KiB0aGUgbnVtYmVyIG9mIGNlbGxzIHRoYXQgaGF2ZSBjb2RlIGluIHRoZW0uICovCisgICAgaW50
cHRyX3QgbWF4X2hlaWdodDsKK307CisKK3R5cGVkZWYgc3RydWN0IGdwY190aHJlYWRlZCBncGNf
dGhyZWFkZWRfdDsKKworLyogdGhlIHR5cGUgZm9yIGEgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRz
IHJ1bm5pbmcgYSBncGNfcHJvZ3JhbS4gKi8KK3R5cGVkZWYgdWludHB0cl90ICgqZ3BjX3Byb2dy
YW1fcnVubmVyX3QpKHZvaWQgKnBheWxvYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpyZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncGNfY2VsbF90ICphcmdzKTsKKworLyogdGhlIHR5cGUgb2YgYSBmdW5j
dGlvbiB0aGF0IGRlc3J0cm95cyB0aGUgcGF5bG9hZCBvZiBhIGdwY19wcm9ncmFtLiAqLwordHlw
ZWRlZiB2b2lkICgqZ3BjX3Byb2dyYW1fZGVzdHJveWVyX3QpKHZvaWQgKnBheWxvYWQpOworCisv
KiB0aGlzIGlzIHdoYXQgeW91IHVzZSB0byBydW4gYSBHUEMgcHJvZ3JhbS4gIGRlbGVnYXRlcyB0
byBvbmUKKyAqIG9mIHRoZSBleGVjdXRpb24gZW5naW5lcy4gKi8KK3N0cnVjdCBncGNfcHJvZ3Jh
bSB7CisgICAgdm9pZCAqcGF5bG9hZDsKKyAgICBncGNfcHJvZ3JhbV9ydW5uZXJfdCBydW5uZXI7
CisgICAgZ3BjX3Byb2dyYW1fZGVzdHJveWVyX3QgZGVzdHJveWVyOworfTsKKworLyogcmV0dXJu
cyB0aGUgc2l6ZSwgaW4gdGhlIG51bWJlciBvZiBzbG90cywgdGhhdCB0aGlzIGluc3RydWN0aW9u
CisgKiBvY2N1cGllcy4gIG5vdGUgdGhhdCBzb21lIGluc3RydWN0aW9ucyBhcmUgdmFyaWFibGUg
bGVuZ3RoLiAgZm9yCisgKiB0aGVzZSBpbnN0cnVjdGlvbnMsIHRoaXMgbWFjcm8gcmV0dXJucyBV
SU5UMzJfTUFYLgorICogRklYTUU6IHRoaXMgbWFjcm8gaXMgd3JvbmcuICB0aGUgbmggY29weSBv
cGNvZGVzIHRha2Ugb25lCisgKiBvcGVyYW5kLCBub3QgdHdvLiAqLwordWludDMyX3QgZ3BjX2lu
c3RydWN0aW9uX3N0YXRpY19zaXplKGdwY19jZWxsX3QgaW5zdCk7CisKKy8qIHJldHVybnMgdGhl
IGVmZmVjdCBvbiB0aGUgc3RhY2sgZnJvbSBleGVjdXRpbmcgdGhpcyBpbnN0cnVjdGlvbi4KKyAq
IGlmIDAgaXMgcmV0dXJuZWQsIHRoYXQgbWVhbnMgdGhhdCB0aGUgc3RhY2sgaGVpZ2h0IGlzIHVu
YWZmZWN0ZWQuICBpZgorICogYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQsIHRoZW4gdGhl
IHN0YWNrIHdpbGwgZ3JvdyBieSB0aGF0IGFtb3VudC4KKyAqIGlmIGEgbmVnYXRpdmUgbnVtYmVy
IGlzIHJldHVybmVkLCB0aGVuIHRoZSBzdGFjayB3aWxsIHNocmluayBieSB0aGF0CisgKiBhbW91
bnQuICovCitpbnQzMl90IGdwY19pbnN0cnVjdGlvbl9zdGFja19lZmZlY3RzKGdwY19jZWxsX3Qg
aW5zdCk7CisKKy8qIHJldHVybiBhIHN0cmluZyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBpbnN0cnVj
dGlvbi4gKi8KK2NvbnN0IGNoYXIgKmdwY19pbnN0cnVjdGlvbl90b19zdHJpbmcoZ3BjX2NlbGxf
dCBpbnN0KTsKKworLyogcmV0dXJucyB0aGUgc2l6ZSwgaW4gdGhlIG51bWJlciBvZiBzbG90cywg
dGhhdCB0aGlzIGluc3RydWN0aW9uCisgKiBvY2N1cGllcy4gIG5vdGUgdGhhdCBzb21lIGluc3Ry
dWN0aW9ucyBhcmUgdmFyaWFibGUgbGVuZ3RoLiAgZm9yCisgKiB0aGlzIHJlYXNvbiwgdGhpcyBt
YWNybyByZXF1aXJlcyB0aGF0IHlvdSBwYXNzIGluIGEgcG9pbnRlciB0bworICogYW4gaW5zdHJ1
Y3Rpb24gaW4gdGhlIGFjdHVhbCBzdHJlYW0sIHNvIHRoYXQgdGhlIGluc3RydWN0aW9uCisgKiBz
dHJlYW0gY2FuIGJlIHByb3Blcmx5IHF1ZXJpZWQuICovCit1aW50MzJfdCBncGNfaW5zdHJ1Y3Rp
b25fc2l6ZShncGNfY2VsbF90ICppbnN0cHRyKTsKKworLyogZnVuY3Rpb24gdG8gZXhlY3V0ZSBm
b3IganVtcCB0YXJnZXRzIHdpdGhpbiBpbnN0cnVjdGlvbnMgKi8KK3R5cGVkZWYgdHNmX2Jvb2xf
dCAoKmdwY190YXJnZXRfY2JhY2tfdCkoZ3BjX2NlbGxfdCAqY2VsbCx2b2lkICphcmcpOworCisv
KiBleGVjdXRlcyB0aGUgZ2l2ZW4ganVtcCB0YXJnZXQgY2FsbGJhY2sgZm9yIGFsbCBiYWNrIGJy
YW5jaGVzIGluCisgKiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb24uICovCit0c2ZfYm9vbF90IGdwY19p
bnN0cnVjdGlvbl9mb3JfYWxsX2JhY2tfYnJhbmNoZXMoZ3BjX2NlbGxfdCAqaW5zdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfdGFyZ2V0X2Ni
YWNrX3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqYXJnKTsKKworLyogZXhlY3V0ZXMgdGhlIGdpdmVuIGp1bXAgdGFyZ2V0IGNh
bGxiYWNrIGZvciBhbGwgZm9yd2FyZCBicmFuY2hlcyBpbgorICogdGhlIGdpdmVuIGluc3RydWN0
aW9uLiAqLwordHNmX2Jvb2xfdCBncGNfaW5zdHJ1Y3Rpb25fZm9yX2FsbF9mb3J3YXJkX2JyYW5j
aGVzKGdwY19jZWxsX3QgKmluc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3BjX3RhcmdldF9jYmFja190IGNiYWNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisKKy8q
IGV4ZWN1dGVzIHRoZSBnaXZlbiBqdW1wIHRhcmdldCBjYWxsYmFjayBmb3IgYWxsIGJyYW5jaGVz
IGluCisgKiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb24uICovCit0c2ZfYm9vbF90IGdwY19pbnN0cnVj
dGlvbl9mb3JfYWxsX2JyYW5jaGVzKGdwY19jZWxsX3QgKmluc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY190YXJnZXRfY2JhY2tfdCBjYmFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKwor
LyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb24gY2F1c2VzIHRoZSBw
cm9ncmFtIHRvCisgKiByZXR1cm4uICovCit0c2ZfYm9vbF90IGdwY19pbnN0cnVjdGlvbl9pc19y
ZXR1cm4oZ3BjX2NlbGxfdCBpbnN0KTsKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiB0aGUgZ2l2
ZW4gaW5zdHJ1Y3Rpb24gbWF5IGFsbG93IGNvbnRyb2wgZmxvdworICogdG8gY29udGludWUgdG8g
dGhlIGluc3RydWN0aW9uIGRpcmVjdGx5IGFmdGVyIGl0LiAgcmV0dXJucyB0c2ZfZmFsc2UKKyAq
IGZvciBpbnN0cnVjdGlvbnMgdGhhdCBkbyB1bmNvbmRpdGlvbmFsIGp1bXBzIGFuZCB0aGF0IHRl
cm1pbmF0ZSB0aGUKKyAqIHByb2dyYW0sIG9yIGZvciBhbnl0aGluZyBlbHNlIHRoYXQgd2lsbCBu
ZXZlciBsZWFkIHRvIGNvbnRyb2wgZmxvdworICogY29udGludWluZyB0byB0aGUgbmV4dCBpbnN0
cnVjdGlvbi4gKi8KK3RzZl9ib29sX3QgZ3BjX2luc3RydWN0aW9uX2lzX2NvbnRpbnVvdXMoZ3Bj
X2NlbGxfdCBpbnN0KTsKKworLyogY3JlYXRlIGEgcHJvdG90eXBlLiAgdGhpcyBpcyBqdXN0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGNyZWF0aW9uCisgKiBwcm9jZXNzLiAgaXQgaXMgdGhlbiB5b3Vy
IHJlc3BvbnNpYmlsaXR5IHRvIGRyb3AgaW4gdGhlIHByb3BlcgorICogb3Bjb2RlcyBhbmQgb3Bl
cmFuZHMuICovCitncGNfcHJvdG9fdCAqZ3BjX3Byb3RvX2NyZWF0ZSh1aW50MzJfdCBudW1fYXJn
cyk7CisKKy8qIGRlc3Ryb3kgYSBwcm90b3R5cGUuICovCit2b2lkIGdwY19wcm90b19kZXN0cm95
KGdwY19wcm90b190ICpwcm90byk7CisKKy8qIGdldCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyAq
LworI2RlZmluZSBncGNfcHJvdG9fZ2V0X251bV9hcmdzKHByb3RvKSBcCisgICAgICAgICAgICAo
KHByb3RvKS0+bnVtX2FyZ3MpCisKKy8qIHJlc2VydmUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Yg
YWRkaXRpb25hbCBzbG90cy4gKi8KK3RzZl9ib29sX3QgZ3BjX3Byb3RvX3Jlc2VydmUoZ3BjX3By
b3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1f
c2xvdHMpOworCisvKiBhcHBlbmQgYW4gaW5zdHJ1Y3Rpb24uICB5b3UgYXJlIHJlcXVpcmVkIHRv
IHN1cHBseSB0aGUgY29ycmVjdAorICogbnVtYmVyIG9mIG9wZXJhbmRzLiAqLwordHNmX2Jvb2xf
dCBncGNfcHJvdG9fYXBwZW5kKGdwY19wcm90b190ICpwcm90bywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfY2VsbF90IGluc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Li4uKTsKKworLyogYXBwZW5kIGEgdGFibGVzZXRfbG9jYWxfdG9fZmllbGQgaW5zdHJ1Y3Rpb24g
Ki8KK3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZF90YWJsZXNldF9sb2NhbF90b19maWVsZChn
cGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBudW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3BjX2NlbGxf
dCAqYXJncyk7CisKKy8qIGFwcGVuZCBhIHRhYmxlc2V0X2ZpZWxkX3RvX2ZpZWxkIGluc3RydWN0
aW9uICovCit0c2ZfYm9vbF90IGdwY19wcm90b19hcHBlbmRfdGFibGVzZXRfZmllbGRfdG9fZmll
bGQoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgZGVzdF9vZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBzcmNfb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdwY19jZWxsX3QgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdwY19jZWxsX3QgKmFyZ3MpOworCisvKiBhcHBlbmQgYSB0YWJs
ZWp1bXBfbG9jYWwgaW5zdHJ1Y3Rpb24gKi8KK3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZF90
YWJsZWp1bXBfbG9jYWwoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IG51bSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3BjX2NlbGxfdCAqYXJncyk7CisKKy8q
IGFwcGVuZCBhIHRhYmxlanVtcF9sb2NhbCBpbnN0cnVjdGlvbiAqLwordHNmX2Jvb2xfdCBncGNf
cHJvdG9fYXBwZW5kX3RhYmxlanVtcF9maWVsZChncGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3Qgb2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IG51
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3Bj
X2NlbGxfdCAqYXJncyk7CisKKy8qIHByaW50IHRoZSBwcm90b3R5cGUgdG8gdGhlIGdpdmVuIEZJ
TEUgc3RyZWFtLiAqLwordm9pZCBncGNfcHJvdG9fcHJpbnQoZ3BjX3Byb3RvX3QgKnByb3RvLAor
ICAgICAgICAgICAgICAgICAgICAgRklMRSAqb3V0KTsKKworLyogZGVidWdnaW5nIHN0dWZmICov
Cit2b2lkIGdwY19jb2RlX2dlbl9kZWJ1Zyhjb25zdCBjaGFyICp0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZ3BjX3Byb3RvX3QgKnByb3RvKTsKKworLyogY3JlYXRlIGFuIGludGVycHJl
dGFibGUgZnJvbSBhIHByb3RvdHlwZS4gKi8KK2dwY19pbnRhYmxlX3QgKmdwY19pbnRhYmxlX2Zy
b21fcHJvdG8oZ3BjX3Byb3RvX3QgKnByb3RvKTsKKworLyogY2xvbmUgYW4gaW50ZXJwcmV0YWJs
ZSAqLworZ3BjX2ludGFibGVfdCAqZ3BjX2ludGFibGVfY2xvbmUoZ3BjX2ludGFibGVfdCAqaW50
YWJsZSk7CisKKy8qIGRlc3Ryb3kgYW4gaW50ZXJwcmV0YWJsZS4gKi8KK3ZvaWQgZ3BjX2ludGFi
bGVfZGVzdHJveShncGNfaW50YWJsZV90ICppbnRhYmxlKTsKKworLyogZ2V0IHRoZSBudW1iZXIg
b2YgYXJndW1lbnRzICovCisjZGVmaW5lIGdwY19pbnRhYmxlX2dldF9udW1fYXJncyhpbnRhYmxl
KSBcCisgICAgICAgICAgICAoKGludGFibGUpLT5udW1fYXJncykKKworLyogZ2V0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGludGFibGUgc3RyZWFtICovCisjZGVmaW5lIGdwY19pbnRhYmxlX2dldF9z
dHJlYW0oaW50YWJsZSkgXAorICAgICAgICAgICAgKChpbnRhYmxlKS0+c3RyZWFtKQorCisvKiBn
ZXQgdGhlIGVuZCAoU1RMLXN0eWxlKSBvZiB0aGUgaW50YWJsZSBzdHJlYW0gKi8KKyNkZWZpbmUg
Z3BjX2ludGFibGVfZ2V0X3N0cmVhbV9lbmQoaW50YWJsZSkgXAorICAgICAgICAgICAgKChpbnRh
YmxlKS0+c3RyZWFtKyhpbnRhYmxlKS0+c2l6ZSkKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiB0
aGUgZ2l2ZW4gY2VsbCBhZGRyZXNzIGlzIGEganVtcCB0YXJnZXQgKi8KKyNkZWZpbmUgZ3BjX2lu
dGFibGVfaXNfdGFyZ2V0KGludGFibGUsYWRkcmVzcykgXAorICAgICAgICAgICAgKHRzZl9zdF9s
b29rdXAoKGludGFibGUpLT50YXJnZXRzLChjaGFyKilhZGRyZXNzLE5VTEwpKQorCisvKiByZXR1
cm5zIHRzZl90cnVlIGlmIHRoZSBnaXZlbiBjZWxsIGFkZHJlc3MgaXMgbGl2ZSBjb2RlICovCisj
ZGVmaW5lIGdwY19pbnRhYmxlX2lzX2xpdmUoaW50YWJsZSxhZGRyZXNzKSBcCisgICAgICAgICAg
ICAodHNmX3N0X2xvb2t1cCgoaW50YWJsZSktPnN0YWNrX2hlaWdodHMsKGNoYXIqKWFkZHJlc3Ms
TlVMTCkpCisKKy8qIHJldHVybnMgdGhlIHN0YWNrIGhlaWdodCBhdCB0aGUgZ2l2ZW4gcGllY2Ug
b2YgY29kZS4gIHdpbGwgcmV0dXJuCisgICAtMSBpZiB0aGUgY29kZSBpcyBub3QgbGl2ZS4gIG5v
dGUgdGhhdCB0aGUgZXJyb3IgY29kZSBpcyBub3Qgc2V0IGluCisgICBlaXRoZXIgY2FzZS4gKi8K
K2ludHB0cl90IGdwY19pbnRhYmxlX2dldF9oZWlnaHQoZ3BjX2ludGFibGVfdCAqcHJvZywKKwkJ
CQlncGNfY2VsbF90ICphZGRyZXNzKTsKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiBncGNfaW50
YWJsZV9ydW4gaXMgc3VwcG9ydGVkLiAqLwordHNmX2Jvb2xfdCBncGNfaW50YWJsZV9ydW5fc3Vw
cG9ydGVkKCk7CisKKy8qIGludGVycHJldCB0aGUgaW50YWJsZS4gKi8KK3VpbnRwdHJfdCBncGNf
aW50YWJsZV9ydW4oZ3BjX2ludGFibGVfdCAqcHJvZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqcmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90ICph
cmdzKTsKKworLyogd3JpdGUgdGhlIHByb2dyYW0gdXNpbmcgdGhlIGdpdmVuIHdyaXRlci4gKi8K
K3RzZl9ib29sX3QgZ3BjX2ludGFibGVfd3JpdGUoZ3BjX2ludGFibGVfdCAqcHJvZywKKwkJCSAg
ICAgdHNmX3dyaXRlcl90IHdyaXRlciwKKwkJCSAgICAgdm9pZCAqYXJnKTsKKworLyogTk9URTog
dGhlIGFsbF9yZXR1cm5zLCBwcmVkZWNlc3NvcnMsIGFuZCBtaW5fcmVtYWluaW5nIGFuYWx5c2Vz
IGFyZQorICogY3VycmVudGx5IHVudXNlZCBhbmQgc28gaGVuY2UgYXJlIGV4Y2x1ZGVkIGZyb20g
dGhlIE1ha2VmaWxlIGFuZCBmcm9tCisgKiB0aGUgZGlzdHJpYnV0aW9uLiAgVGhleSBhcmUsIGhv
d2V2ZXIsIGluY2x1ZGVkIGluIENWUywgbGVzdCB0aGV5IGV2ZXIKKyAqIGJlY29tZSB1c2VmdWwu
ICovCisKKy8qIGFuYWx5c2lzIHRvIGZpbmQgYWxsIHJldHVybnMuICByZXR1cm5zIGEgTlVMTC10
ZXJtaW5hdGVkIGFycmF5IG9mIHJldHVybgorICogcG9pbnRzIGluIHRoZSBnaXZlbiBwcm9ncmFt
LgorICoKKyAqIEZJWE1FOiB0aGlzIHJlYWxseSBzaG91bGQgbm90IGJlIGEgc2VwYXJhdGUgYW5h
bHlzaXMuICBpdCBzaG91bGQgYmUganVzdAorICogYW4gZXh0cmEgcmV0dXJuIGZyb20gZ3BjX2lu
dGFibGVfZ2V0X3ByZWRlY2Vzc29ycygpLiAqLworZ3BjX2NlbGxfdCAqKmdwY19pbnRhYmxlX2Zp
bmRfYWxsX3JldHVybnMoZ3BjX2ludGFibGVfdCAqcHJvZyk7CisKKy8qIGZpbmQgcHJlZGVjZXNz
b3JzLiAgcmV0dXJucyBhIGhhc2h0YWJsZSBtYXBwaW5nIGVhY2ggaW5zdHJ1Y3Rpb24gY2VsbAor
ICogdG8gYSBsaW5rZWQgbGlzdCBvZiBpdHMgcHJlZGVjZXNzb3JzLiAgdGhlIGxpbmtlZCBsaXN0
IGlzIHR5cGVkIGFzIGEKKyAqIGdwY19jZWxsX2xpc3RfdC4gKi8KK3RzZl9zdF90YWJsZSAqZ3Bj
X2ludGFibGVfZ2V0X3ByZWRlY2Vzc29ycyhncGNfaW50YWJsZV90ICpwcm9nKTsKKworLyogeW91
IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbiB0byBmcmVlIHVwIHRoZSBsaXN0IHJldHVybmVkIGJ5
IHRoZQorICogZ3BjX2ludGFibGVfZ2V0X3ByZWRlY2Vzc29ycygpIGZ1bmN0aW9uLiAqLwordm9p
ZCBncGNfaW50YWJsZV9kZXN0cm95X3ByZWRlY2Vzc29ycyh0c2Zfc3RfdGFibGUgKnByZWRzKTsK
KworLyogZ2l2ZXMgeW91IGEgdGFibGUgdGhhdCBtYXBzIGVhY2ggaW5zdHJ1Y3Rpb24gdG8gdGhl
IG1pbmltdW0gbnVtYmVyIG9mCisgKiBieXRlcyB0aGF0IHlvdSBhcmUgZ3VhcmFudGVlZCB0byBo
YXZlIGxlZnQgaW4gdGhlIGJ1ZmZlciwgYXNzdW1pbmcKKyAqIHRoYXQgdGhlIHByb2dyYW0gZG9l
cyBub3Qgb3ZlcnJ1biB0aGUgYnVmZmVyIGluIHRoZSBlbmQuICovCit0c2Zfc3RfdGFibGUgKmdw
Y19pbnRhYmxlX2dldF9taW5fcmVtYWluaW5nKGdwY19pbnRhYmxlX3QgKnByb2cpOworCisvKiBy
ZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW50YWJsZSBldmVyIGRvZXMgaW50ZWdlciB0byBmbG9h
dAorICogY29udmVyc2lvbi4gKi8KK3RzZl9ib29sX3QgZ3BjX2ludGFibGVfY2FuX2RvX2ludF90
b19mbG9hdF9jb252ZXJzaW9uKGdwY19pbnRhYmxlX3QgKnByb2cpOworCisvKiByZXR1cm5zIHRz
Zl90cnVlIGlmIHRoZSBnaXZlbiBpbnRhYmxlIGV2ZXIgY2FsbHMgZnVuY3Rpb25zIHRoYXQgcmVx
dWlyZQorICogYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgcG9pbnRlciByZWdpc3Rlci4gKi8KK3Rz
Zl9ib29sX3QgZ3BjX2ludGFibGVfY2FuX2NhbGxfYnVmZmVyX211dGF0b3JfZnVuY3Rpb25zKGdw
Y19pbnRhYmxlX3QgKnByb2cpOworCisvKiByZXR1cm5zIHRzZl90cnVlIGlmIHRoZSBnaXZlbiBp
bnRhYmxlIGV2ZXIgdXNlcyB0aGUgaW5fbWFwIChhbHNvCisgICBrbm93biBhcyB0eXBlcykuICBk
ZWZpbml0aW9ucyBvZiBpbl9tYXAgZG9uJ3QgY29uJ3QgLSBzbyB0aGlzIHdpbGwKKyAgIHJldHVy
biB0c2ZfZmFsc2UgaWYgdGhlIGludGFibGUgZGVmaW5lcyBidXQgZG9lcyBub3QgdXNlIHRoZQor
ICAgaW5fbWFwLiAqLwordHNmX2Jvb2xfdCBncGNfaW50YWJsZV9jYW5fdXNlX2luX21hcChncGNf
aW50YWJsZV90ICpwcm9nKTsKKworLyogcmV0dXJucyB0c2ZfdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW50
YWJsZSBldmVyIHVzZXMgdGhlIG91dF9tYXAuCisgICBkZWZpbml0aW9ucyBvZiBvdXRfbWFwIGRv
bid0IGNvbid0IC0gc28gdGhpcyB3aWxsIHJldHVybiB0c2ZfZmFsc2UKKyAgIGlmIHRoZSBpbnRh
YmxlIGRlZmluZXMgYnV0IGRvZXMgbm90IHVzZSB0aGUgb3V0X21hcC4gKi8KK3RzZl9ib29sX3Qg
Z3BjX2ludGFibGVfY2FuX3VzZV9vdXRfbWFwKGdwY19pbnRhYmxlX3QgKnByb2cpOworCisvKiBy
ZXR1cm5zIHRzZl90cnVlIGlmIGdwY190aHJlYWRlZF90IGlzIHN1cHBvcnRlZC4gKi8KK3RzZl9i
b29sX3QgZ3BjX3RocmVhZGVkX3N1cHBvcnRlZCgpOworCisvKiBjcmVhdGUgYSB0aHJlYWRlZCBw
cm9ncmFtIGZyb20gYW4gaW50YWJsZS4gIHRoaXMgbWF5IGZhaWwgaWYgR1BDCisgKiB3YXMgY29t
cGlsZWQgd2l0aCBhIGNvbXBpbGVyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWRkcmVzcy1v
Zi0KKyAqIGxhYmVsIGV4dGVuc2lvbi4gKi8KK2dwY190aHJlYWRlZF90ICpncGNfdGhyZWFkZWRf
ZnJvbV9pbnRhYmxlKGdwY19pbnRhYmxlX3QgKmludGFibGUpOworCisvKiBkZXN0cm95IGEgdGhy
ZWFkZWQgKi8KK3ZvaWQgZ3BjX3RocmVhZGVkX2Rlc3Ryb3koZ3BjX3RocmVhZGVkX3QgKnRocmVh
ZGVkKTsKKworLyogZ2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzICovCisjZGVmaW5lIGdwY190
aHJlYWRlZF9nZXRfbnVtX2FyZ3ModGhyZWFkZWQpIFwKKyAgICAgICAgICAgICgodGhyZWFkZWQp
LT5udW1fYXJncykKKworLyogcnVuIGEgdGhyZWFkZWQgKi8KK3VpbnRwdHJfdCBncGNfdGhyZWFk
ZWRfcnVuKGdwY190aHJlYWRlZF90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqcmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCAqYXJn
cyk7CisKKy8qIGNyZWF0ZSBhIHByb2dyYW0gdXNpbmcgdGhlIGVuZ2luZSBvZiB5b3VyIGNob2lj
ZS4gIGlmIHlvdSBwYXNzIGluCisgKiBUU0ZfRU5fREVGQVVMVCwgdGhlbiB0aGUgZGVmYXVsdCBl
bmdpbmUgaXMgdXNlZCAoYmFzZWQgb24gdGhlCisgKiBUU0ZfRU5HSU5FX0NPTkZJRyBlbnZpcm9u
bWVudCB2YXJpYWJsZTsgaWYgaXQgaXMgbm90IHNldCwgdGhlbgorICogdGhlIGRlZmF1bHQgaXMg
R1BJTlQpLiAgaWYgeW91IHBhc3MgaW4gVFNGX0VOX05PVF9TVVBQT1JURUQsIHRoZW4KKyAqIE5V
TEwgaXMgcmV0dXJuZWQgd2l0aG91dCB0aGUgZXJyb3IgYmVpbmcgc2V0ICh0aGlzIGFsbG93cyBm
b3IgZXJyb3IKKyAqIHByb3BhZ2F0aW9uKS4gKi8KK2dwY19wcm9ncmFtX3QgKmdwY19wcm9ncmFt
X2Zyb21fcHJvdG8oZ3BjX3Byb3RvX3QgKnByb3RvKTsKKworLyogc2FtZSBhcyBhYm92ZSBidXQg
Y3JlYXRlIGZyb20gYW4gaW50YWJsZS4gKi8KK2dwY19wcm9ncmFtX3QgKmdwY19wcm9ncmFtX2Zy
b21faW50YWJsZShncGNfaW50YWJsZV90ICppbnRhYmxlKTsKKworLyogZGVzdHJveSBhIHByb2dy
YW0gKi8KK3ZvaWQgZ3BjX3Byb2dyYW1fZGVzdHJveShncGNfcHJvZ3JhbV90ICpwcm9nKTsKKwor
LyogcnVuIGEgcHJvZ3JhbSAqLwordWludHB0cl90IGdwY19wcm9ncmFtX3J1bihncGNfcHJvZ3Jh
bV90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgKmFyZ3MpOworCisjZW5kaWYKKwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19jb2RlX2dlbl91dGls
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dw
Y19jb2RlX2dlbl91dGlsLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3dhc20vdHNmL2dwY19jb2RlX2dlbl91dGlsLmMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAg
UGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJncGNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2Zf
Zm9ybWF0LmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgor
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8
ZXJybm8uaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKworLyogY29kZSBnZW5lcmF0aW9uIGRlYnVn
Z2luZyAqLworCisvKiBOT1RFOiBJdCBpcyBub3cgdGhlIGNhc2UgdGhhdCB0aGUgY291bnQgbWF5
IGJlIGluY3JlbWVudGVkIG11bHRpcGxlIHRpbWVzLAorICogaW4gb3JkZXIgdG8gaW5zdXJlIHRo
YXQgZmlsZXMgYXJlIG5vdCBvdmVyd3JpdHRlbi4gIFRoaXMgYWxsb3dzIG11bHRpcGxlCisgKiBw
cm9jZXNzZXMgdG8gdXNlIHRoZSBzYW1lIGRpcmVjdG9yeSBmb3IgY29kZSBnZW4gZGVidWdnaW5n
LiAgSG93ZXZlciwgdGhlCisgKiBtdWx0aS1pbmNyZW1lbnQgYXBwcHJvYWNoIG1heSBiZSBvdmVy
a2lsbCwgc2luY2UgSSBjb3VsZCBoYXZlIHByb2JhYmx5IGp1c3QKKyAqIGFzIHdlbGwgaGF2ZSB1
c2VkIHRoZSBQSUQuICovCisKK3N0YXRpYyB2b2xhdGlsZSB1aW50MzJfdCBjb3VudD0wOworCitz
dGF0aWMgdHNmX29uY2VfdCBvbmNlX2NvbnRyb2wgPSBUU0ZfT05DRV9JTklUOworc3RhdGljIHRz
Zl9tdXRleF90IGNvdW50X2xvY2s7CisKK3N0YXRpYyB2b2lkIGNvdW50X2luaXQodm9pZCkgewor
ICAgIHRzZl9tdXRleF9pbml0KCZjb3VudF9sb2NrKTsKK30KKworc3RhdGljIHVpbnQzMl90IG5l
eHRfY291bnQoKSB7CisgICAgdWludDMyX3QgcmVzdWx0OworICAgIHRzZl9vbmNlKCZvbmNlX2Nv
bnRyb2wsIGNvdW50X2luaXQpOworICAgIHRzZl9tdXRleF9sb2NrKCZjb3VudF9sb2NrKTsKKyAg
ICByZXN1bHQ9Y291bnQrKzsKKyAgICB0c2ZfbXV0ZXhfdW5sb2NrKCZjb3VudF9sb2NrKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdwY19keW5jY19jb2RlX2dlbl9kZWJ1Zyhjb25z
dCBjaGFyICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
c3JjX2ZpbGVuYW1lKSB7CisgICAgY29uc3QgY2hhciAqdHNmX2NvZGVfZ2VuX2RlYnVnPWdldGVu
digiVFNGX0NPREVfR0VOX0RFQlVHIik7CisgICAgY29uc3QgY2hhciAqdHNmX2NvZGVfZ2VuX2Rl
YnVnX3BhdGg7CisgICAgY2hhciAqZGVzdF9maWxlbmFtZTsKKyAgICBpbnQgZmRfc3JjLGZkX3Ry
ZzsKKyAgICB1aW50MzJfdCBjdXJfY250OworICAgIAorICAgIGlmICh0c2ZfY29kZV9nZW5fZGVi
dWc9PU5VTEwgfHwgc3RyY2FzZWNtcCh0c2ZfY29kZV9nZW5fZGVidWcsIllFUyIpKSB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgdHNmX2NvZGVfZ2VuX2RlYnVnX3BhdGg9Z2V0
ZW52KCJUU0ZfQ09ERV9HRU5fREVCVUdfUEFUSCIpOworICAgIAorICAgIGlmICh0c2ZfY29kZV9n
ZW5fZGVidWdfcGF0aD09TlVMTCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGZkX3NyYz1vcGVuKHNyY19maWxlbmFtZSxPX1JET05MWSk7CisgICAgaWYgKGZkX3NyYzwwKSB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLyogbG9vcCB1bnRpbCB3ZSBoaXQg
YSBmaWxlbmFtZSB0aGF0IGlzbid0IGluIHVzZSAqLworICAgIGZvciAoY3VyX2NudD1jb3VudDs7
Y3VyX2NudD1uZXh0X2NvdW50KCkpIHsKKyAgICAgICAgZGVzdF9maWxlbmFtZT10c2ZfYXNwcmlu
dGYoIiVzLyIgZnVpMzIgIl8lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl9jb2RlX2dlbl9kZWJ1Z19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsK
KyAgICAgICAgaWYgKGRlc3RfZmlsZW5hbWU9PU5VTEwpIHsKKyAgICAgICAgICAgIGNsb3NlKGZk
X3NyYyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGZkX3RyZz1vcGVuKGRlc3RfZmlsZW5hbWUsT19DUkVBVHxPX0VYQ0x8T19XUk9OTFksMDYwMCk7
CisgICAgICAgIGZyZWUoZGVzdF9maWxlbmFtZSk7CisgICAgICAgIAorICAgICAgICBpZiAoZmRf
dHJnPj0wKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGVycm5vIT1FRVhJU1QpIHsKKyAgICAgICAgICAgIGNsb3NlKGZkX3NyYyk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZm9yICg7Oykgewor
ICAgICAgICBjaGFyIGJ1ZlsxMDI0XTsKKyAgICAgICAgaW50IHJlcz1yZWFkKGZkX3NyYyxidWYs
c2l6ZW9mKGJ1ZikpOworICAgICAgICBpZiAocmVzPD0wKSB7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBpZiAod3JpdGUoZmRfdHJnLGJ1ZixyZXMpIT1yZXMpIHsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGNsb3NlKGZkX3Ny
Yyk7CisgICAgY2xvc2UoZmRfdHJnKTsKK30KKwordm9pZCBncGNfY29kZV9nZW5fZGVidWcoY29u
c3QgY2hhciAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdwY19wcm90b190ICpwcm90
bykgeworICAgIGNvbnN0IGNoYXIgKnRzZl9jb2RlX2dlbl9kZWJ1Zz1nZXRlbnYoIlRTRl9DT0RF
X0dFTl9ERUJVRyIpOworICAgIGNvbnN0IGNoYXIgKnRzZl9jb2RlX2dlbl9kZWJ1Z19wYXRoOwor
ICAgIGNoYXIgKmRlc3RfZmlsZW5hbWU7CisgICAgRklMRSAqb3V0OworICAgIHVpbnQzMl90IGN1
cl9jbnQ7CisgICAgCisgICAgLyogcHJpbnRmKCJkdW1waW5nICVzXG4iLHR5cGUpOyAqLworCisg
ICAgaWYgKHRzZl9jb2RlX2dlbl9kZWJ1Zz09TlVMTCB8fCBzdHJjYXNlY21wKHRzZl9jb2RlX2dl
bl9kZWJ1ZywiWUVTIikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB0c2Zf
Y29kZV9nZW5fZGVidWdfcGF0aD1nZXRlbnYoIlRTRl9DT0RFX0dFTl9ERUJVR19QQVRIIik7Cisg
ICAgCisgICAgaWYgKHRzZl9jb2RlX2dlbl9kZWJ1Z19wYXRoPT1OVUxMKSB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgZm9yIChjdXJfY250PWNvdW50OztjdXJfY250PW5leHRf
Y291bnQoKSkgeworICAgICAgICBpbnQgZmQ7CisgICAgICAgIAorICAgICAgICBkZXN0X2ZpbGVu
YW1lPXRzZl9hc3ByaW50ZigiJXMvIiBmdWkzMiAiXyVzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX2NvZGVfZ2VuX2RlYnVnX3BhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGN1cl9jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGUpOworICAgICAgICBpZiAoZGVzdF9maWxlbmFtZT09TlVMTCkgeworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmZD1vcGVuKGRlc3Rf
ZmlsZW5hbWUsT19DUkVBVHxPX0VYQ0x8T19XUk9OTFksMDYwMCk7CisgICAgICAgIGZyZWUoZGVz
dF9maWxlbmFtZSk7CisKKyAgICAgICAgaWYgKGZkPj0wKSB7CisgICAgICAgICAgICBvdXQ9ZmRv
cGVuKGZkLCJ3Iik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvdXQ9PU5VTEwpIHsK
KwkJY2xvc2UoZmQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChlcnJubyE9RUVYSVNUKSB7CisgICAgICAgICAgICAvKiBwcmludGYoImVycm9yIG5v
dCBlZXhpc3RcbiIpOyAqLworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIGdwY19wcm90b19wcmludChwcm90byxvdXQpOworICAgIAorICAgIGZjbG9zZShv
dXQpOworfQorCisvKiBzdHVwaWQgc3R1ZmYgKi8KKwordm9pZCBncGNfdW5saW5rX2ZyZWUoY2hh
ciAqbmFtZSkgeworICAgIHVubGluayhuYW1lKTsKKyAgICBmcmVlKG5hbWUpOworfQorCit2b2lk
IGdwY19ybWRpcl9mcmVlKGNoYXIgKm5hbWUpIHsKKyAgICBybWRpcihuYW1lKTsKKyAgICBmcmVl
KG5hbWUpOworfQorCisvKiB0aGlzIGlzbid0IGEgcmVhbCBybSAtcmY7IGl0IG9ubHkgZ29lcyBk
b3duIG9uZSBsZXZlbC4gKi8KK3ZvaWQgZ3BjX3JtZGFzaHJmX2ZyZWUoY2hhciAqbmFtZSkgewor
ICAgIERJUiAqZGlyOworICAgIGRpcj1vcGVuZGlyKG5hbWUpOworICAgIGlmIChkaXIhPU5VTEwp
IHsKKwlmb3IgKDs7KSB7CisJICAgIHN0cnVjdCBkaXJlbnQgZW50cnksKnJlc3VsdD1OVUxMOwor
CSAgICBpbnQgcmVzPXJlYWRkaXJfcihkaXIsJmVudHJ5LCZyZXN1bHQpOworCSAgICBpZiAocmVz
IT0wIHx8IHJlc3VsdD09TlVMTCkgeworCQlicmVhazsKKwkgICAgfQorCSAgICBpZiAoc3RyY21w
KGVudHJ5LmRfbmFtZSwiLiIpICYmCisJCXN0cmNtcChlbnRyeS5kX25hbWUsIi4uIikpIHsKKwkJ
Y2hhciAqZmxubT10c2ZfYXNwcmludGYoIiVzLyVzIixuYW1lLGVudHJ5LmRfbmFtZSk7CisJCWlm
IChmbG5tIT1OVUxMKSB7CisJCSAgICB1bmxpbmsoZmxubSk7CisJCSAgICBmcmVlKGZsbm0pOwor
CQl9CisJICAgIH0KKwl9CisJY2xvc2VkaXIoZGlyKTsKKwlybWRpcihuYW1lKTsKKyAgICB9Cisg
ICAgZnJlZShuYW1lKTsKK30KKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dh
c20vdHNmL2dwY19pbnN0cnVjdGlvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
SmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb24uYwkobm9uZXhpc3RlbnQpCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uLmMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJncGNfaW50
ZXJuYWwuaCIKKworI2luY2x1ZGUgImdwY19pbnN0cnVjdGlvbl9zdGF0aWNfc2l6ZS5nZW4iCisj
aW5jbHVkZSAiZ3BjX2luc3RydWN0aW9uX3NpemUuZ2VuIgorI2luY2x1ZGUgImdwY19pbnN0cnVj
dGlvbl9zdGFja19lZmZlY3RzLmdlbiIKKyNpbmNsdWRlICJncGNfaW5zdHJ1Y3Rpb25fdG9fc3Ry
aW5nLmdlbiIKKworLyogc29tZSB0aGluZ3MgYXJlIHN0aWxsIG5vdCBoYW5kbGVkIGJ5IHRoZSBz
cGVjaWZpY2F0aW9uLi4uICovCisKK3RzZl9ib29sX3QgZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxf
YmFja19icmFuY2hlcyhncGNfY2VsbF90ICppbnN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdwY190YXJnZXRfY2JhY2tfdCBjYmFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsK
KyAgICBzd2l0Y2ggKCppbnN0KSB7CisgICAgICAgIGNhc2UgR1BDX0lfQUREQ09NUEpVTVA6Cisg
ICAgICAgICAgICByZXR1cm4gY2JhY2soaW5zdCsyLGFyZyk7CisgICAgICAgIGNhc2UgR1BDX0lf
VFdPX0FERENPTVBKVU1QOgorICAgICAgICAgICAgcmV0dXJuIGNiYWNrKGluc3QrMyxhcmcpOwor
ICAgICAgICBjYXNlIEdQQ19JX0RFQ0NPTVBKVU1QOgorICAgICAgICAgICAgcmV0dXJuIGNiYWNr
KGluc3QrMSxhcmcpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCBncGNfaW5zdHJ1
Y3Rpb25fZm9yX2FsbF9mb3J3YXJkX2JyYW5jaGVzKGdwY19jZWxsX3QgKmluc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX3RhcmdldF9j
YmFja190IGNiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIGdwY19jZWxsX3QgaTsKKworICAgIHN3aXRjaCAo
Kmluc3QpIHsKKyAgICAgICAgY2FzZSBHUENfSV9DT01QRkFJTEpVTVBfMk5EOgorICAgICAgICBj
YXNlIEdQQ19JX0NPTVBGQUlMSlVNUDoKKyAgICAgICAgY2FzZSBHUENfSV9aRVJPSlVNUDoKKyAg
ICAgICAgICAgIHJldHVybiBjYmFjayhpbnN0KzEsYXJnKTsKKyAgICAgICAgY2FzZSBHUENfSV9U
QUJMRUpVTVBfTE9DQUw6CisgICAgICAgICAgICBmb3IgKGk9MDtpPGluc3RbMV07KytpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjYmFjayhpbnN0KzIraSxhcmcpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1BDX0lfVEFCTEVKVU1QX0ZJRUxE
OgorICAgICAgICAgICAgZm9yIChpPTA7aTxpbnN0WzJdOysraSkgeworICAgICAgICAgICAgICAg
IGlmICghY2JhY2soaW5zdCszK2ksYXJnKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdQQ19JX0pVTVA6CisgICAgICAgICAgICByZXR1cm4gY2Jh
Y2soaW5zdCsxLGFyZyk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IGdwY19pbnN0
cnVjdGlvbl9mb3JfYWxsX2JyYW5jaGVzKGdwY19jZWxsX3QgKmluc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY190YXJnZXRfY2JhY2tfdCBjYmFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7
CisgICAgaWYgKCFncGNfaW5zdHJ1Y3Rpb25fZm9yX2FsbF9iYWNrX2JyYW5jaGVzKGluc3QsY2Jh
Y2ssYXJnKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICBpZiAoIWdw
Y19pbnN0cnVjdGlvbl9mb3JfYWxsX2ZvcndhcmRfYnJhbmNoZXMoaW5zdCxjYmFjayxhcmcpKSB7
CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsK
K30KKwordHNmX2Jvb2xfdCBncGNfaW5zdHJ1Y3Rpb25faXNfcmV0dXJuKGdwY19jZWxsX3QgaW5z
dCkgeworICAgIHN3aXRjaCAoaW5zdCkgeworICAgIGNhc2UgR1BDX0lfUkVUVVJOX09ORToKKyAg
ICBjYXNlIEdQQ19JX1JFVFVSTl9UT1BfV0lUSF9SRUdJT046CisgICAgY2FzZSBHUENfSV9SRVRV
Uk5fT05FX0lOSVRfQlVGX1dJVEhfRU1QVFlfVFlQRVM6CisgICAgY2FzZSBHUENfSV9SRVRVUk5f
T05FX0lOSVRfQlVGX1dJVEhfVFlQRVNfRlJPTV9PVVRfTUFQOgorICAgICAgICByZXR1cm4gdHNm
X3RydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cit9
CisKK3RzZl9ib29sX3QgZ3BjX2luc3RydWN0aW9uX2lzX2NvbnRpbnVvdXMoZ3BjX2NlbGxfdCBp
bnN0KSB7CisgICAgcmV0dXJuICFncGNfaW5zdHJ1Y3Rpb25faXNfcmV0dXJuKGluc3QpICYmCisg
ICAgICAgICAgIGluc3QgIT0gR1BDX0lfSlVNUDsKK30KKworCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX2Rpc3BhdGNoLmdlbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3Ry
dWN0aW9uX2Rpc3BhdGNoLmdlbgkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX2Rpc3BhdGNoLmdlbgkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI5MyBAQAorLyogZ2VuZXJhdGVkIGJ5IGdwY19nZW4ucmIgKi8KKyYm
SV9OT1AsCismJklfTEFCRUwsCismJklfQ09QWV9IVE9OQ19JTkNEU1QsCismJklfQ09QWV9IVE9O
U19JTkNEU1QsCismJklfQ09QWV9IVE9OTF9JTkNEU1QsCismJklfQ09QWV9IVE9OTExfSU5DRFNU
LAorJiZJX0NPUFlfSFRPTkZfSU5DRFNULAorJiZJX0NPUFlfSFRPTkRfSU5DRFNULAorJiZJX0NP
UFlfSFRPTkNIT0lDRV9UT19VSThfSU5DRFNULAorJiZJX0NPUFlfTlRPSENfVE9fQklUX0lOQ1NS
QywKKyYmSV9DT1BZX05UT0hDX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hDX1RPX1NfWl9JTkNTUkMs
CismJklfQ09QWV9OVE9IQ19UT19TX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSENfVE9fTF9aX0lO
Q1NSQywKKyYmSV9DT1BZX05UT0hDX1RPX0xfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IQ19UT19M
TF9aX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hDX1RPX0xMX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRP
SENfVE9fRl9aX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hDX1RPX0ZfRV9JTkNTUkMsCismJklfQ09Q
WV9OVE9IQ19UT19EX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSENfVE9fRF9FX0lOQ1NSQywKKyYm
SV9DT1BZX05UT0hTX1RPX0JJVF9JTkNTUkMsCismJklfQ09QWV9OVE9IU19UT19DX0lOQ1NSQywK
KyYmSV9DT1BZX05UT0hTX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hTX1RPX0xfWl9JTkNTUkMsCism
JklfQ09QWV9OVE9IU19UT19MX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSFNfVE9fTExfWl9JTkNT
UkMsCismJklfQ09QWV9OVE9IU19UT19MTF9FX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hTX1RPX0Zf
Wl9JTkNTUkMsCismJklfQ09QWV9OVE9IU19UT19GX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSFNf
VE9fRF9aX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hTX1RPX0RfRV9JTkNTUkMsCismJklfQ09QWV9O
VE9ITF9UT19CSVRfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExfVE9fQ19JTkNTUkMsCismJklfQ09Q
WV9OVE9ITF9UT19TX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hMX0lOQ1NSQywKKyYmSV9DT1BZX05U
T0hMX1RPX0xMX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkMsCismJklf
Q09QWV9OVE9ITF9UT19GX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExfVE9fRl9FX0lOQ1NSQywK
KyYmSV9DT1BZX05UT0hMX1RPX0RfWl9JTkNTUkMsCismJklfQ09QWV9OVE9ITF9UT19EX0VfSU5D
U1JDLAorJiZJX0NPUFlfTlRPSExMX1RPX0JJVF9JTkNTUkMsCismJklfQ09QWV9OVE9ITExfVE9f
Q19JTkNTUkMsCismJklfQ09QWV9OVE9ITExfVE9fU19JTkNTUkMsCismJklfQ09QWV9OVE9ITExf
VE9fTF9JTkNTUkMsCismJklfQ09QWV9OVE9ITExfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExMX1RP
X0ZfWl9JTkNTUkMsCismJklfQ09QWV9OVE9ITExfVE9fRl9FX0lOQ1NSQywKKyYmSV9DT1BZX05U
T0hMTF9UT19EX1pfSU5DU1JDLAorJiZJX0NPUFlfTlRPSExMX1RPX0RfRV9JTkNTUkMsCismJklf
Q09QWV9OVE9IRl9UT19CSVRfSU5DU1JDLAorJiZJX0NPUFlfTlRPSEZfVE9fQ19aX0lOQ1NSQywK
KyYmSV9DT1BZX05UT0hGX1RPX0NfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IRl9UT19TX1pfSU5D
U1JDLAorJiZJX0NPUFlfTlRPSEZfVE9fU19FX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hGX1RPX0xf
Wl9JTkNTUkMsCismJklfQ09QWV9OVE9IRl9UT19MX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSEZf
VE9fTExfWl9JTkNTUkMsCismJklfQ09QWV9OVE9IRl9UT19MTF9FX0lOQ1NSQywKKyYmSV9DT1BZ
X05UT0hGX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hGX1RPX0RfSU5DU1JDLAorJiZJX0NPUFlfTlRP
SERfVE9fQklUX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hEX1RPX0NfWl9JTkNTUkMsCismJklfQ09Q
WV9OVE9IRF9UT19DX0VfSU5DU1JDLAorJiZJX0NPUFlfTlRPSERfVE9fU19aX0lOQ1NSQywKKyYm
SV9DT1BZX05UT0hEX1RPX1NfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JD
LAorJiZJX0NPUFlfTlRPSERfVE9fTF9FX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hEX1RPX0xMX1pf
SU5DU1JDLAorJiZJX0NPUFlfTlRPSERfVE9fTExfRV9JTkNTUkMsCismJklfQ09QWV9OVE9IRF9U
T19GX0lOQ1NSQywKKyYmSV9DT1BZX05UT0hEX0lOQ1NSQywKKyYmSV9DT1BZX0JJVCwKKyYmSV9D
T1BZX0JJVF9UT19TLAorJiZJX0NPUFlfQklUX1RPX0wsCismJklfQ09QWV9CSVRfVE9fTEwsCism
JklfQ09QWV9CSVRfVE9fRiwKKyYmSV9DT1BZX0JJVF9UT19ELAorJiZJX0NPUFlfQywKKyYmSV9D
T1BZX0NfVE9fU19aLAorJiZJX0NPUFlfQ19UT19TX0UsCismJklfQ09QWV9DX1RPX0xfWiwKKyYm
SV9DT1BZX0NfVE9fTF9FLAorJiZJX0NPUFlfQ19UT19MTF9aLAorJiZJX0NPUFlfQ19UT19MTF9F
LAorJiZJX0NPUFlfQ19UT19GX1osCismJklfQ09QWV9DX1RPX0ZfRSwKKyYmSV9DT1BZX0NfVE9f
RF9aLAorJiZJX0NPUFlfQ19UT19EX0UsCismJklfQ09QWV9TX1RPX0JJVCwKKyYmSV9DT1BZX1Nf
VE9fQywKKyYmSV9DT1BZX1MsCismJklfQ09QWV9TX1RPX0xfWiwKKyYmSV9DT1BZX1NfVE9fTF9F
LAorJiZJX0NPUFlfU19UT19MTF9aLAorJiZJX0NPUFlfU19UT19MTF9FLAorJiZJX0NPUFlfU19U
T19GX1osCismJklfQ09QWV9TX1RPX0ZfRSwKKyYmSV9DT1BZX1NfVE9fRF9aLAorJiZJX0NPUFlf
U19UT19EX0UsCismJklfQ09QWV9MX1RPX0JJVCwKKyYmSV9DT1BZX0xfVE9fQywKKyYmSV9DT1BZ
X0xfVE9fUywKKyYmSV9DT1BZX0wsCismJklfQ09QWV9MX1RPX0xMX1osCismJklfQ09QWV9MX1RP
X0xMX0UsCismJklfQ09QWV9MX1RPX0ZfWiwKKyYmSV9DT1BZX0xfVE9fRl9FLAorJiZJX0NPUFlf
TF9UT19EX1osCismJklfQ09QWV9MX1RPX0RfRSwKKyYmSV9DT1BZX0xMX1RPX0JJVCwKKyYmSV9D
T1BZX0xMX1RPX0MsCismJklfQ09QWV9MTF9UT19TLAorJiZJX0NPUFlfTExfVE9fTCwKKyYmSV9D
T1BZX0xMLAorJiZJX0NPUFlfTExfVE9fRl9aLAorJiZJX0NPUFlfTExfVE9fRl9FLAorJiZJX0NP
UFlfTExfVE9fRF9aLAorJiZJX0NPUFlfTExfVE9fRF9FLAorJiZJX0NPUFlfRl9UT19CSVQsCism
JklfQ09QWV9GX1RPX0NfWiwKKyYmSV9DT1BZX0ZfVE9fQ19FLAorJiZJX0NPUFlfRl9UT19TX1os
CismJklfQ09QWV9GX1RPX1NfRSwKKyYmSV9DT1BZX0ZfVE9fTF9aLAorJiZJX0NPUFlfRl9UT19M
X0UsCismJklfQ09QWV9GX1RPX0xMX1osCismJklfQ09QWV9GX1RPX0xMX0UsCismJklfQ09QWV9G
LAorJiZJX0NPUFlfRl9UT19ELAorJiZJX0NPUFlfRF9UT19CSVQsCismJklfQ09QWV9EX1RPX0Nf
WiwKKyYmSV9DT1BZX0RfVE9fQ19FLAorJiZJX0NPUFlfRF9UT19TX1osCismJklfQ09QWV9EX1RP
X1NfRSwKKyYmSV9DT1BZX0RfVE9fTF9aLAorJiZJX0NPUFlfRF9UT19MX0UsCismJklfQ09QWV9E
X1RPX0xMX1osCismJklfQ09QWV9EX1RPX0xMX0UsCismJklfQ09QWV9EX1RPX0YsCismJklfQ09Q
WV9ELAorJiZJX1NFVF9DLAorJiZJX1NFVF9TLAorJiZJX1NFVF9MLAorJiZJX1NFVF8yTkRfQywK
KyYmSV9TRVRfMk5EX1MsCismJklfU0VUXzJORF9MLAorJiZJX0JJVFZFQ1RPUl9SRUFELAorJiZJ
X0JJVFZFQ1RPUl9SRUFEX1RPX0MsCismJklfQklUVkVDVE9SX1JFQURfVE9fUywKKyYmSV9CSVRW
RUNUT1JfUkVBRF9UT19MLAorJiZJX0JJVFZFQ1RPUl9SRUFEX1RPX0xMLAorJiZJX0JJVFZFQ1RP
Ul9SRUFEX1RPX0YsCismJklfQklUVkVDVE9SX1JFQURfVE9fRCwKKyYmSV9CSVRWRUNUT1JfUkVB
RF9GUk9NX0MsCismJklfQklUVkVDVE9SX1JFQURfRlJPTV9TLAorJiZJX0JJVFZFQ1RPUl9SRUFE
X0ZST01fTCwKKyYmSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0xMLAorJiZJX0JJVFZFQ1RPUl9SRUFE
X0ZST01fRiwKKyYmSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0QsCismJklfQklUVkVDVE9SX1JFQURf
RlJPTV9UU0ZfSU5URUdFUl9BUlJBWSwKKyYmSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9MT05H
X0FSUkFZLAorJiZJX0JJVFZFQ1RPUl9XUklURSwKKyYmSV9CWVRFX0FSUkFZX1JFQUQsCismJklf
QllURV9BUlJBWV9XUklURSwKKyYmSV9UU0ZfSU5URUdFUl9TS0lQLAorJiZJX1RTRl9VTlNJR05F
RF9TS0lQLAorJiZJX1RTRl9MT05HX1NLSVAsCismJklfVFNGX0lOVEVHRVJfUkVBRF9UT19CSVQs
CismJklfVFNGX0lOVEVHRVJfUkVBRF9UT19DLAorJiZJX1RTRl9JTlRFR0VSX1JFQURfVE9fUywK
KyYmSV9UU0ZfSU5URUdFUl9SRUFELAorJiZJX1RTRl9JTlRFR0VSX1JFQURfVE9fTEwsCismJklf
VFNGX0lOVEVHRVJfUkVBRF9UT19GLAorJiZJX1RTRl9JTlRFR0VSX1JFQURfVE9fRCwKKyYmSV9U
U0ZfVU5TSUdORURfUkVBRF9TVUIxLAorJiZJX1RTRl9MT05HX1JFQURfVE9fQklULAorJiZJX1RT
Rl9MT05HX1JFQURfVE9fQywKKyYmSV9UU0ZfTE9OR19SRUFEX1RPX1MsCismJklfVFNGX0xPTkdf
UkVBRF9UT19MLAorJiZJX1RTRl9MT05HX1JFQUQsCismJklfVFNGX0xPTkdfUkVBRF9UT19GLAor
JiZJX1RTRl9MT05HX1JFQURfVE9fRCwKKyYmSV9UU0ZfSU5URUdFUl9TSVpFLAorJiZJX1RTRl9V
TlNJR05FRF9QTFVTMV9TSVpFLAorJiZJX1RTRl9MT05HX1NJWkUsCismJklfVFNGX0lOVEVHRVJf
V1JJVEUsCismJklfVFNGX1VOU0lHTkVEX1BMVVMxX1dSSVRFLAorJiZJX1RTRl9MT05HX1dSSVRF
LAorJiZJX1NUUklOR19TRVRFTVBUWSwKKyYmSV9TVFJJTkdfUkVBRCwKKyYmSV9TVFJJTkdfU0tJ
UCwKKyYmSV9TVFJJTkdfU0laRSwKKyYmSV9TVFJJTkdfV1JJVEUsCismJklfU1RSSU5HX0NPUFks
CismJklfQU5ZX1NFVEVNUFRZLAorJiZJX0FOWV9SRUFELAorJiZJX0FOWV9TS0lQLAorJiZJX0FO
WV9TSVpFLAorJiZJX0FOWV9XUklURSwKKyYmSV9BTllfQ09QWSwKKyYmSV9NRU1DUFksCismJklf
Q09QWV9BUlJBWSwKKyYmSV9DT1BZX0JJVFZFQ1RPUiwKKyYmSV9DT1BZX0JJVFZFQ1RPUl9GUk9N
X0MsCismJklfQ09QWV9CSVRWRUNUT1JfRlJPTV9TLAorJiZJX0NPUFlfQklUVkVDVE9SX0ZST01f
TCwKKyYmSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0xMLAorJiZJX0NPUFlfQklUVkVDVE9SX0ZST01f
RiwKKyYmSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0QsCismJklfQ09QWV9CSVRWRUNUT1JfVE9fQywK
KyYmSV9DT1BZX0JJVFZFQ1RPUl9UT19TLAorJiZJX0NPUFlfQklUVkVDVE9SX1RPX0wsCismJklf
Q09QWV9CSVRWRUNUT1JfVE9fTEwsCismJklfQ09QWV9CSVRWRUNUT1JfVE9fRiwKKyYmSV9DT1BZ
X0JJVFZFQ1RPUl9UT19ELAorJiZJX1JFQURDX1RPX0NIT0lDRSwKKyYmSV9SRUFETCwKKyYmSV9B
UlJBWV9MRU5fV1JJVEVfRklFTEQsCismJklfQVJSQVlfTEVOX1JFQURfRklFTEQsCismJklfQVJS
QVlfTEVOX1JFQURfTE9DQUwsCismJklfQVJSQVlfTEVOX1NLSVAsCismJklfQklUX01BU0tfV1JJ
VEUsCismJklfQklUX01BU0tfUkVBRCwKKyYmSV9CSVRfTUFTS19SRUFEX1RPX1MsCismJklfQklU
X01BU0tfUkVBRF9UT19MLAorJiZJX0JJVF9NQVNLX1JFQURfVE9fTEwsCismJklfQklUX01BU0tf
UkVBRF9UT19GLAorJiZJX0JJVF9NQVNLX1JFQURfVE9fRCwKKyYmSV9CSVRfV1JJVEUsCismJklf
QklUX1JFQUQsCismJklfQklUX1JFQURfVE9fUywKKyYmSV9CSVRfUkVBRF9UT19MLAorJiZJX0JJ
VF9SRUFEX1RPX0xMLAorJiZJX0JJVF9SRUFEX1RPX0YsCismJklfQklUX1JFQURfVE9fRCwKKyYm
SV9TS0lQLAorJiZJX0FSUkFZX0JDX0FORF9TS0lQX0ZJRUxELAorJiZJX0FSUkFZX1NLSVAsCism
JklfQklUVkVDVE9SX0JDX0FORF9TS0lQX0ZJRUxELAorJiZJX0JJVFZFQ1RPUl9TS0lQLAorJiZJ
X0lOQ19TSVpFLAorJiZJX0lOQ19TSVpFX0FSUkFZX0xFTiwKKyYmSV9JTkNfU0laRV9BUlJBWSwK
KyYmSV9JTkNfU0laRV9CSVRWRUNUT1IsCismJklfQkMsCismJklfQVJSQVlfQkNfRklFTEQsCism
JklfQVJSQVlfQkNfTE9DQUwsCismJklfQklUVkVDVE9SX0JDX0ZJRUxELAorJiZJX0JJVFZFQ1RP
Ul9CQ19MT0NBTCwKKyYmSV9NQUxMT0NfQlVGLAorJiZJX1BPUF9CVUYsCismJklfREVTVFJPWV9C
VUZGRVIsCismJklfTUFLRV9PVVRfTUFQLAorJiZJX0FMTE9DX1JPT1RfTUFZQkVfMk5ELAorJiZJ
X0FMTE9DLAorJiZJX0FMTE9DX0FSUkFZLAorJiZJX0FMTE9DX0FSUkFZXzJORCwKKyYmSV9DQUxM
LAorJiZJX0FERF9DQkFDSywKKyYmSV9GUkVFX0lNTUVESUFURSwKKyYmSV9GUkVFLAorJiZJX1NU
T1JFX1BUUiwKKyYmSV9TVE9SRV9QVFJfMk5ELAorJiZJX1NUT1JFX1ZBTCwKKyYmSV9QVVNIX1BU
UiwKKyYmSV9QVVNIX1BUUl8yTkQsCismJklfUFVTSF9QVFJfM1JELAorJiZJX1BVU0hfVkFMLAor
JiZJX0RVUF9QVFJfMk5ELAorJiZJX1BPUCwKKyYmSV9UV09fUE9QLAorJiZJX1RIUkVFX1BPUCwK
KyYmSV9SRVBVU0hfTVVMQUREX1BUUiwKKyYmSV9SRVBVU0hfTVVMQUREX1BUUl8yTkQsCismJklf
Q09NUEZBSUxKVU1QLAorJiZJX0NPTVBGQUlMSlVNUF8yTkQsCismJklfQUREQ09NUEpVTVAsCism
JklfVFdPX0FERENPTVBKVU1QLAorJiZJX1pFUk9KVU1QLAorJiZJX0RFQ0NPTVBKVU1QLAorJiZJ
X0NIRUNLQ0hPSUNFLAorJiZJX1RBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxELAorJiZJX1RBQkxFU0VU
X0ZJRUxEX1RPX0ZJRUxELAorJiZJX1RBQkxFSlVNUF9GSUVMRCwKKyYmSV9UQUJMRUpVTVBfTE9D
QUwsCismJklfSlVNUCwKKyYmSV9SRVRVUk5fT05FLAorJiZJX1JFVFVSTl9UT1BfV0lUSF9SRUdJ
T04sCismJklfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRIX0VNUFRZX1RZUEVTLAorJiZJX1JFVFVS
Tl9PTkVfSU5JVF9CVUZfV0lUSF9UWVBFU19GUk9NX09VVF9NQVAKSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc2l6ZS5nZW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnN0cnVj
dGlvbl9zaXplLmdlbgkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX3NpemUuZ2VuCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTMgQEAKKy8qIGdlbmVyYXRlZCBieSBncGNfZ2VuLnJiICovCisjZGVmaW5lIElOVF9T
VFJFQU0oYXJnKSAoaW5zdFsxKyhhcmcpXSkKK3VpbnQzMl90IGdwY19pbnN0cnVjdGlvbl9zaXpl
KGdwY19jZWxsX3QgKmluc3QpIHsKKyAgICBzd2l0Y2ggKCppbnN0KSB7CisgICAgICAgIGNhc2Ug
R1BDX0lfVEFCTEVTRVRfTE9DQUxfVE9fRklFTEQ6IHJldHVybiAxKzIrSU5UX1NUUkVBTSgxKTsK
KyAgICAgICAgY2FzZSBHUENfSV9UQUJMRVNFVF9GSUVMRF9UT19GSUVMRDogcmV0dXJuIDErMytJ
TlRfU1RSRUFNKDIpOworICAgICAgICBjYXNlIEdQQ19JX1RBQkxFSlVNUF9GSUVMRDogcmV0dXJu
IDErMitJTlRfU1RSRUFNKDEpOworICAgICAgICBjYXNlIEdQQ19JX1RBQkxFSlVNUF9MT0NBTDog
cmV0dXJuIDErMStJTlRfU1RSRUFNKDApOworICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIGdwY19pbnN0cnVjdGlvbl9zdGF0aWNfc2l6ZSgqaW5zdCk7Cit9CisjdW5k
ZWYgSU5UX1NUUkVBTQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L2dwY19pbnN0cnVjdGlvbl9zdGFja19lZmZlY3RzLmdlbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX3N0YWNrX2VmZmVj
dHMuZ2VuCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3RhY2tfZWZmZWN0cy5nZW4JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyOTkgQEAKKy8qIGdlbmVyYXRlZCBieSBncGNfZ2VuLnJiICovCitpbnQzMl90IGdw
Y19pbnN0cnVjdGlvbl9zdGFja19lZmZlY3RzKGdwY19jZWxsX3QgaW5zdCkgeworICAgIHN3aXRj
aCAoaW5zdCkgeworICAgICAgICBjYXNlIEdQQ19JX05PUDogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfTEFCRUw6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTkNf
SU5DRFNUOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05TX0lOQ0RTVDog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9OTF9JTkNEU1Q6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTkxMX0lOQ0RTVDogcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9ORl9JTkNEU1Q6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfSFRPTkRfSU5DRFNUOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0hUT05DSE9JQ0VfVE9fVUk4X0lOQ0RTVDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX05UT0hDX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9O
VE9IQ19UT19TX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hDX1RPX1NfRV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRP
SENfVE9fTF9aX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9I
Q19UT19MX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hD
X1RPX0xMX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hD
X1RPX0xMX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hD
X1RPX0ZfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENf
VE9fRl9FX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19U
T19EX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RP
X0RfRV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9f
QklUX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19D
X0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19JTkNTUkM6
IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fTF9aX0lOQ1NSQzog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19MX0VfSU5DU1JDOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xMX1pfSU5DU1JDOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xMX0VfSU5DU1JDOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0ZfWl9JTkNTUkM6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fRl9FX0lOQ1NSQzogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19EX1pfSU5DU1JDOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0RfRV9JTkNTUkM6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fQklUX0lOQ1NSQzogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19DX0lOQ1NSQzogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19TX0lOQ1NSQzogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fTExfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fRl9aX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9OVE9ITF9UT19GX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX05UT0hMX1RPX0RfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfTlRPSExfVE9fRF9FX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9OVE9ITExfVE9fQklUX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9OVE9ITExfVE9fQ19JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfTlRPSExMX1RPX1NfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX05UT0hMTF9UT19MX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9OVE9ITExfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hMTF9UT19GX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hMTF9UT19GX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hMTF9UT19EX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hMTF9UT19EX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hGX1RPX0JJVF9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRP
SEZfVE9fQ19aX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9I
Rl9UT19DX0VfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hG
X1RPX1NfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZf
VE9fU19FX0lOQ1NSQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9U
T19MX1pfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RP
X0xfRV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9f
TExfWl9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9f
TExfRV9JTkNTUkM6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfSU5D
U1JDOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RPX0RfSU5DU1JD
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0JJVF9JTkNTUkM6
IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fQ19aX0lOQ1NSQzog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9UT19DX0VfSU5DU1JDOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX1NfWl9JTkNTUkM6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fU19FX0lOQ1NSQzogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JDOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0xfRV9JTkNTUkM6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fTExfWl9JTkNTUkM6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fTExfRV9JTkNTUkM6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfVE9fRl9JTkNTUkM6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERfSU5DU1JDOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0JJVDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9CSVRfVE9fUzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9fTDog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9fTEw6IHJldHVybiAwOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUX1RPX0Y6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfQklUX1RPX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
QzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX1NfWjogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX1NfRTogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9DX1RPX0xfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9DX1RPX0xfRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0xMX1o6
IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19UT19MTF9FOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0NfVE9fRl9aOiByZXR1cm4gMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX0NfVE9fRl9FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0NfVE9fRF9aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0NfVE9fRF9FOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fQklUOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9TOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fTF9aOiBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fTF9FOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fTExfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9TX1RPX0xMX0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
U19UT19GX1o6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19GX0U6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19EX1o6IHJldHVybiAwOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19EX0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfTF9UT19CSVQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9U
T19DOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fUzogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX0xfVE9fTExfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RP
X0xMX0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19GX1o6IHJldHVy
biAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19GX0U6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfTF9UT19EX1o6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfTF9UT19EX0U6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9f
QklUOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0M6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fUzogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9MTF9UT19MOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0xMOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0ZfWjogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX0U6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fRF9aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX0xMX1RPX0RfRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RP
X0JJVDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0NfWjogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0NfRTogcmV0dXJuIDA7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9GX1RPX1NfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9GX1RPX1NfRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xf
WjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xfRTogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xMX1o6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfRl9UT19MTF9FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19EOiByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fQklUOiByZXR1cm4gMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX0RfVE9fQ19aOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0RfVE9fQ19FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19a
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19FOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fTF9aOiByZXR1cm4gMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX0RfVE9fTF9FOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0RfVE9fTExfWjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RPX0xMX0U6
IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19GOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NF
VF9DOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9TRVRfUzogcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgR1BDX0lfU0VUX0w6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NFVF8y
TkRfQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfU0VUXzJORF9TOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9TRVRfMk5EX0w6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0JJVFZFQ1RPUl9SRUFEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNU
T1JfUkVBRF9UT19DOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVB
RF9UT19TOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19M
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19MTDogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fRjogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fRDogcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9DOiByZXR1cm4gMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1M6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQklUVkVDVE9SX1JFQURfRlJPTV9MTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
QklUVkVDVE9SX1JFQURfRlJPTV9GOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRW
RUNUT1JfUkVBRF9GUk9NX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RP
Ul9SRUFEX0ZST01fVFNGX0lOVEVHRVJfQVJSQVk6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fVFNGX0xPTkdfQVJSQVk6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9XUklURTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQllURV9BUlJBWV9SRUFEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CWVRFX0FS
UkFZX1dSSVRFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9TS0lQ
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfU0tJUDogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0tJUDogcmV0dXJuIDA7CisgICAgICAg
IGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19CSVQ6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fQzogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9UU0ZfSU5URUdFUl9SRUFEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5U
RUdFUl9SRUFEX1RPX0xMOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdF
Ul9SRUFEX1RPX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9JTlRFR0VSX1JF
QURfVE9fRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX1VOU0lHTkVEX1JFQURf
U1VCMTogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19CSVQ6
IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fQzogcmV0dXJu
IDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19TOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0w6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX1RTRl9MT05HX1JFQUQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RT
Rl9MT05HX1JFQURfVE9fRjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdf
UkVBRF9UT19EOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9TSVpF
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfUExVUzFfU0laRTog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0laRTogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfV1JJVEU6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX1RTRl9VTlNJR05FRF9QTFVTMV9XUklURTogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfVFNGX0xPTkdfV1JJVEU6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NU
UklOR19TRVRFTVBUWTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfU1RSSU5HX1JFQUQ6
IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19TS0lQOiByZXR1cm4gMDsKKyAg
ICAgICAgY2FzZSBHUENfSV9TVFJJTkdfU0laRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfU1RSSU5HX1dSSVRFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9TVFJJTkdfQ09Q
WTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1NFVEVNUFRZOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9BTllfUkVBRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfQU5ZX1NLSVA6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0FOWV9TSVpFOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfV1JJVEU6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0FOWV9DT1BZOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9NRU1DUFk6
IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQVJSQVk6IHJldHVybiAwOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0M6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfQklUVkVDVE9SX0ZST01fUzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9CSVRWRUNUT1JfRlJPTV9MOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJ
VFZFQ1RPUl9GUk9NX0xMOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZF
Q1RPUl9GUk9NX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9S
X0ZST01fRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9f
QzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fUzogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fTDogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fTEw6IHJldHVybiAwOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0Y6IHJldHVybiAwOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0Q6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX1JFQURDX1RPX0NIT0lDRTogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lfUkVBREw6
IHJldHVybiAxOworICAgICAgICBjYXNlIEdQQ19JX0FSUkFZX0xFTl9XUklURV9GSUVMRDogcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfTEVOX1JFQURfRklFTEQ6IHJldHVybiAw
OworICAgICAgICBjYXNlIEdQQ19JX0FSUkFZX0xFTl9SRUFEX0xPQ0FMOiByZXR1cm4gMTsKKyAg
ICAgICAgY2FzZSBHUENfSV9BUlJBWV9MRU5fU0tJUDogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQklUX01BU0tfV1JJVEU6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9N
QVNLX1JFQUQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9f
UzogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQklUX01BU0tfUkVBRF9UT19MOiByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0xMOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0Y6IHJldHVybiAwOworICAgICAg
ICBjYXNlIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fRDogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQklUX1dSSVRFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfUkVBRDog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQklUX1JFQURfVE9fUzogcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQklUX1JFQURfVE9fTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
R1BDX0lfQklUX1JFQURfVE9fTEw6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9S
RUFEX1RPX0Y6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9SRUFEX1RPX0Q6IHJl
dHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1NLSVA6IHJldHVybiAwOworICAgICAgICBjYXNl
IEdQQ19JX0FSUkFZX0JDX0FORF9TS0lQX0ZJRUxEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBH
UENfSV9BUlJBWV9TS0lQOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1Jf
QkNfQU5EX1NLSVBfRklFTEQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RP
Ul9TS0lQOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9JTkNfU0laRTogcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgR1BDX0lfSU5DX1NJWkVfQVJSQVlfTEVOOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9JTkNfU0laRV9BUlJBWTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BD
X0lfSU5DX1NJWkVfQklUVkVDVE9SOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9CQzog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfQkNfRklFTEQ6IHJldHVybiAwOwor
ICAgICAgICBjYXNlIEdQQ19JX0FSUkFZX0JDX0xPQ0FMOiByZXR1cm4gMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9CSVRWRUNUT1JfQkNfRklFTEQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X0JJVFZFQ1RPUl9CQ19MT0NBTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfTUFMTE9D
X0JVRjogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfUE9QX0JVRjogcmV0dXJuIC0xOwor
ICAgICAgICBjYXNlIEdQQ19JX0RFU1RST1lfQlVGRkVSOiByZXR1cm4gMTsKKyAgICAgICAgY2Fz
ZSBHUENfSV9NQUtFX09VVF9NQVA6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX0FMTE9D
X1JPT1RfTUFZQkVfMk5EOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9BTExPQzogcmV0
dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0NfQVJSQVk6IHJldHVybiAxOworICAgICAg
ICBjYXNlIEdQQ19JX0FMTE9DX0FSUkFZXzJORDogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BD
X0lfQ0FMTDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfQUREX0NCQUNLOiByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBHUENfSV9GUkVFX0lNTUVESUFURTogcmV0dXJuIDA7CisgICAgICAg
IGNhc2UgR1BDX0lfRlJFRTogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfU1RPUkVfUFRS
OiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9TVE9SRV9QVFJfMk5EOiByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBHUENfSV9TVE9SRV9WQUw6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQ
Q19JX1BVU0hfUFRSOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1BUUl8yTkQ6
IHJldHVybiAxOworICAgICAgICBjYXNlIEdQQ19JX1BVU0hfUFRSXzNSRDogcmV0dXJuIDE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfUFVTSF9WQUw6IHJldHVybiAxOworICAgICAgICBjYXNlIEdQQ19J
X0RVUF9QVFJfMk5EOiByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHUENfSV9QT1A6IHJldHVybiAt
MTsKKyAgICAgICAgY2FzZSBHUENfSV9UV09fUE9QOiByZXR1cm4gLTI7CisgICAgICAgIGNhc2Ug
R1BDX0lfVEhSRUVfUE9QOiByZXR1cm4gLTM7CisgICAgICAgIGNhc2UgR1BDX0lfUkVQVVNIX01V
TEFERF9QVFI6IHJldHVybiAxOworICAgICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxBRERfUFRS
XzJORDogcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09NUEZBSUxKVU1QOiByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBHUENfSV9DT01QRkFJTEpVTVBfMk5EOiByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9BRERDT01QSlVNUDogcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lf
VFdPX0FERENPTVBKVU1QOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9aRVJPSlVNUDog
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1BDX0lfREVDQ09NUEpVTVA6IHJldHVybiAwOworICAg
ICAgICBjYXNlIEdQQ19JX0NIRUNLQ0hPSUNFOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENf
SV9UQUJMRVNFVF9MT0NBTF9UT19GSUVMRDogcmV0dXJuIC0xOworICAgICAgICBjYXNlIEdQQ19J
X1RBQkxFU0VUX0ZJRUxEX1RPX0ZJRUxEOiByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHUENfSV9U
QUJMRUpVTVBfRklFTEQ6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1RBQkxFSlVNUF9M
T0NBTDogcmV0dXJuIC0xOworICAgICAgICBjYXNlIEdQQ19JX0pVTVA6IHJldHVybiAwOworICAg
ICAgICBjYXNlIEdQQ19JX1JFVFVSTl9PTkU6IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19J
X1JFVFVSTl9UT1BfV0lUSF9SRUdJT046IHJldHVybiAwOworICAgICAgICBjYXNlIEdQQ19JX1JF
VFVSTl9PTkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUzogcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgR1BDX0lfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRIX1RZUEVTX0ZST01fT1VUX01BUDogcmV0
dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgIH0KKyAgICB0c2ZfYWJvcnQoIklu
dmFsaWQgaW5zdHJ1Y3Rpb24iKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3RhdGljX3NpemUuZ2VuCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3Rh
dGljX3NpemUuZ2VuCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi9ncGNfaW5zdHJ1Y3Rpb25fc3RhdGljX3NpemUuZ2VuCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjk5IEBACisvKiBnZW5lcmF0ZWQgYnkgZ3BjX2dlbi5yYiAqLwordWludDMy
X3QgZ3BjX2luc3RydWN0aW9uX3N0YXRpY19zaXplKGdwY19jZWxsX3QgaW5zdCkgeworICAgIHN3
aXRjaCAoaW5zdCkgeworICAgICAgICBjYXNlIEdQQ19JX05PUDogcmV0dXJuIDErMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9MQUJFTDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0hUT05DX0lOQ0RTVDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05T
X0lOQ0RTVDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05MX0lOQ0RT
VDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05MTF9JTkNEU1Q6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9ORl9JTkNEU1Q6IHJldHVybiAx
KzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9ORF9JTkNEU1Q6IHJldHVybiAxKzE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9OQ0hPSUNFX1RPX1VJOF9JTkNEU1Q6IHJldHVybiAx
KzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDOiByZXR1cm4g
MSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfSU5DU1JDOiByZXR1cm4gMSsxOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fU19aX0lOQ1NSQzogcmV0dXJuIDErMTsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX1NfRV9JTkNTUkM6IHJldHVybiAxKzE7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19MX1pfSU5DU1JDOiByZXR1cm4gMSsx
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTF9FX0lOQ1NSQzogcmV0dXJuIDEr
MTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0xMX1pfSU5DU1JDOiByZXR1cm4g
MSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTExfRV9JTkNTUkM6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19GX1pfSU5DU1JDOiByZXR1
cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fRl9FX0lOQ1NSQzogcmV0
dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0RfWl9JTkNTUkM6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19EX0VfSU5DU1JDOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fQklUX0lOQ1NSQzog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0NfSU5DU1JDOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfSU5DU1JDOiByZXR1cm4g
MSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fTF9aX0lOQ1NSQzogcmV0dXJu
IDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xfRV9JTkNTUkM6IHJldHVy
biAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19MTF9aX0lOQ1NSQzogcmV0
dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xMX0VfSU5DU1JDOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fRl9aX0lOQ1NSQzog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0ZfRV9JTkNTUkM6
IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19EX1pfSU5DU1JD
OiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fRF9FX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX0JJVF9JTkNT
UkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19DX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX1NfSU5DU1JD
OiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfSU5DU1JDOiByZXR1
cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fTExfWl9JTkNTUkM6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19MTF9FX0lOQ1NSQzog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX0ZfWl9JTkNTUkM6
IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19GX0VfSU5DU1JD
OiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fRF9aX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX0RfRV9JTkNT
UkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fQklUX0lO
Q1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19DX0lO
Q1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19TX0lO
Q1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19MX0lO
Q1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9JTkNTUkM6
IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fRl9aX0lOQ1NS
QzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19GX0VfSU5D
U1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExMX1RPX0RfWl9J
TkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fRF9F
X0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RPX0JJ
VF9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9UT19D
X1pfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9f
Q19FX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hGX1RP
X1NfWl9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9U
T19TX0VfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZf
VE9fTF9aX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hG
X1RPX0xfRV9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9I
Rl9UT19MTF9aX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hGX1RPX0xMX0VfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
TlRPSEZfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZf
VE9fRF9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9U
T19CSVRfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSERf
VE9fQ19aX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hE
X1RPX0NfRV9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9I
RF9UT19TX1pfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRP
SERfVE9fU19FX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hEX1RPX0xfWl9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9O
VE9IRF9UT19MX0VfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
TlRPSERfVE9fTExfWl9JTkNTUkM6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQ09Q
WV9OVE9IRF9UT19MTF9FX0lOQ1NSQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX05UT0hEX1RPX0ZfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfTlRPSERfSU5DU1JDOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklU
OiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUX1RPX1M6IHJldHVybiAx
KzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9fTDogcmV0dXJuIDErMjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0JJVF9UT19MTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0JJVF9UT19GOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
QklUX1RPX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DOiByZXR1cm4g
MSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19UT19TX1o6IHJldHVybiAxKzI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX1NfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0NfVE9fTF9aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
Q19UT19MX0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0xMX1o6
IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0xMX0U6IHJldHVybiAx
KzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX0ZfWjogcmV0dXJuIDErMjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0NfVE9fRl9FOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfQ19UT19EX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9D
X1RPX0RfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fQklUOiBy
ZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19DOiByZXR1cm4gMSsyOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfUzogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX1NfVE9fTF9aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfU19U
T19MX0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RPX0xMX1o6IHJl
dHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RPX0xMX0U6IHJldHVybiAxKzI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RPX0ZfWjogcmV0dXJuIDErMjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX1NfVE9fRl9FOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfU19UT19EX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9TX1RP
X0RfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fQklUOiByZXR1
cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19DOiByZXR1cm4gMSsyOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19TOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fTExf
WjogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fTExfRTogcmV0dXJu
IDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fRl9aOiByZXR1cm4gMSsyOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19GX0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9MX1RPX0RfWjogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0xfVE9fRF9FOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fQklU
OiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fQzogcmV0dXJuIDEr
MjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX1M6IHJldHVybiAxKzI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9MTF9UT19MOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfTEw6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX1o6
IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX0U6IHJldHVybiAx
KzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19EX1o6IHJldHVybiAxKzI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19EX0U6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9GX1RPX0JJVDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0ZfVE9fQ19aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19DX0U6
IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX1NfWjogcmV0dXJuIDEr
MjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fU19FOiByZXR1cm4gMSsyOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfRl9UT19MX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9GX1RPX0xfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Zf
VE9fTExfWjogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fTExfRTog
cmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Y6IHJldHVybiAxKzI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9EX1RPX0JJVDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Rf
VE9fQ19aOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19DX0U6IHJl
dHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RPX1NfWjogcmV0dXJuIDErMjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19FOiByZXR1cm4gMSsyOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfRF9UT19MX1o6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9EX1RPX0xfRTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9f
TExfWjogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fTExfRTogcmV0
dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fRjogcmV0dXJuIDErMjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lf
U0VUX0M6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfU0VUX1M6IHJldHVybiAxKzI7
CisgICAgICAgIGNhc2UgR1BDX0lfU0VUX0w6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BD
X0lfU0VUXzJORF9DOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX1NFVF8yTkRfUzog
cmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9TRVRfMk5EX0w6IHJldHVybiAxKzI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQUQ6IHJldHVybiAxKzE7CisgICAgICAgIGNh
c2UgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBH
UENfSV9CSVRWRUNUT1JfUkVBRF9UT19TOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19J
X0JJVFZFQ1RPUl9SRUFEX1RPX0w6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklU
VkVDVE9SX1JFQURfVE9fTEw6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVD
VE9SX1JFQURfVE9fRjogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1Jf
UkVBRF9UT19EOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFE
X0ZST01fQzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9G
Uk9NX1M6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJP
TV9MOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01f
TEw6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9G
OiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fRDog
cmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9J
TlRFR0VSX0FSUkFZOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9S
RUFEX0ZST01fVFNGX0xPTkdfQVJSQVk6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lf
QklUVkVDVE9SX1dSSVRFOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JZVEVfQVJS
QVlfUkVBRDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9CWVRFX0FSUkFZX1dSSVRF
OiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9JTlRFR0VSX1NLSVA6IHJldHVy
biAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX1VOU0lHTkVEX1NLSVA6IHJldHVybiAxKzA7
CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0tJUDogcmV0dXJuIDErMDsKKyAgICAgICAg
Y2FzZSBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0JJVDogcmV0dXJuIDErMTsKKyAgICAgICAg
Y2FzZSBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0M6IHJldHVybiAxKzE7CisgICAgICAgIGNh
c2UgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TOiByZXR1cm4gMSsxOworICAgICAgICBjYXNl
IEdQQ19JX1RTRl9JTlRFR0VSX1JFQUQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lf
VFNGX0lOVEVHRVJfUkVBRF9UT19MTDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9U
U0ZfSU5URUdFUl9SRUFEX1RPX0Y6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNG
X0lOVEVHRVJfUkVBRF9UT19EOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9V
TlNJR05FRF9SRUFEX1NVQjE6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xP
TkdfUkVBRF9UT19CSVQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdf
UkVBRF9UT19DOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURf
VE9fUzogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0w6
IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRDogcmV0dXJuIDEr
MTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfTE9OR19SRUFEX1RPX0Y6IHJldHVybiAxKzE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19EOiByZXR1cm4gMSsxOworICAgICAg
ICBjYXNlIEdQQ19JX1RTRl9JTlRFR0VSX1NJWkU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2Ug
R1BDX0lfVFNGX1VOU0lHTkVEX1BMVVMxX1NJWkU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2Ug
R1BDX0lfVFNGX0xPTkdfU0laRTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0Zf
SU5URUdFUl9XUklURTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdO
RURfUExVUzFfV1JJVEU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdf
V1JJVEU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfU1RSSU5HX1NFVEVNUFRZOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19SRUFEOiByZXR1cm4gMSsxOwor
ICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19TS0lQOiByZXR1cm4gMSswOworICAgICAgICBjYXNl
IEdQQ19JX1NUUklOR19TSVpFOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NUUklO
R19XUklURTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9TVFJJTkdfQ09QWTogcmV0
dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfU0VURU1QVFk6IHJldHVybiAxKzE7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQU5ZX1JFQUQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BD
X0lfQU5ZX1NLSVA6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1NJWkU6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1dSSVRFOiByZXR1cm4gMSsxOworICAg
ICAgICBjYXNlIEdQQ19JX0FOWV9DT1BZOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19J
X01FTUNQWTogcmV0dXJuIDErMzsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0FSUkFZOiByZXR1
cm4gMSszOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SOiByZXR1cm4gMSsyOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZST01fQzogcmV0dXJuIDErMjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX1M6IHJldHVybiAxKzI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9MOiByZXR1cm4gMSsyOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZST01fTEw6IHJldHVybiAxKzI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9GOiByZXR1cm4gMSsyOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfQklUVkVDVE9SX0ZST01fRDogcmV0dXJuIDErMjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19DOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfQklUVkVDVE9SX1RPX1M6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9CSVRWRUNUT1JfVE9fTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0JJVFZFQ1RPUl9UT19MTDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJ
VFZFQ1RPUl9UT19GOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUVkVD
VE9SX1RPX0Q6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfUkVBRENfVE9fQ0hPSUNF
OiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1JFQURMOiByZXR1cm4gMSswOworICAg
ICAgICBjYXNlIEdQQ19JX0FSUkFZX0xFTl9XUklURV9GSUVMRDogcmV0dXJuIDErMTsKKyAgICAg
ICAgY2FzZSBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRDogcmV0dXJuIDErMTsKKyAgICAgICAg
Y2FzZSBHUENfSV9BUlJBWV9MRU5fUkVBRF9MT0NBTDogcmV0dXJuIDErMDsKKyAgICAgICAgY2Fz
ZSBHUENfSV9BUlJBWV9MRU5fU0tJUDogcmV0dXJuIDErMDsKKyAgICAgICAgY2FzZSBHUENfSV9C
SVRfTUFTS19XUklURTogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19S
RUFEOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fUzog
cmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0w6IHJldHVy
biAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQklUX01BU0tfUkVBRF9UT19MTDogcmV0dXJuIDEr
MjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0Y6IHJldHVybiAxKzI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQklUX01BU0tfUkVBRF9UT19EOiByZXR1cm4gMSsyOworICAgICAg
ICBjYXNlIEdQQ19JX0JJVF9XUklURTogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9C
SVRfUkVBRDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfUkVBRF9UT19TOiBy
ZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9SRUFEX1RPX0w6IHJldHVybiAxKzE7
CisgICAgICAgIGNhc2UgR1BDX0lfQklUX1JFQURfVE9fTEw6IHJldHVybiAxKzE7CisgICAgICAg
IGNhc2UgR1BDX0lfQklUX1JFQURfVE9fRjogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENf
SV9CSVRfUkVBRF9UT19EOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NLSVA6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfQkNfQU5EX1NLSVBfRklFTEQ6IHJl
dHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfU0tJUDogcmV0dXJuIDErMTsKKyAg
ICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfQkNfQU5EX1NLSVBfRklFTEQ6IHJldHVybiAxKzE7
CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1NLSVA6IHJldHVybiAxKzA7CisgICAgICAg
IGNhc2UgR1BDX0lfSU5DX1NJWkU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfSU5D
X1NJWkVfQVJSQVlfTEVOOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX0lOQ19TSVpF
X0FSUkFZOiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0lOQ19TSVpFX0JJVFZFQ1RP
UjogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CQzogcmV0dXJuIDErMTsKKyAgICAg
ICAgY2FzZSBHUENfSV9BUlJBWV9CQ19GSUVMRDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBH
UENfSV9BUlJBWV9CQ19MT0NBTDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRW
RUNUT1JfQkNfRklFTEQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9S
X0JDX0xPQ0FMOiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX01BTExPQ19CVUY6IHJl
dHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfUE9QX0JVRjogcmV0dXJuIDErMDsKKyAgICAg
ICAgY2FzZSBHUENfSV9ERVNUUk9ZX0JVRkZFUjogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBH
UENfSV9NQUtFX09VVF9NQVA6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0Nf
Uk9PVF9NQVlCRV8yTkQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0M6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfQUxMT0NfQVJSQVk6IHJldHVybiAxKzI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQUxMT0NfQVJSQVlfMk5EOiByZXR1cm4gMSsyOworICAgICAgICBj
YXNlIEdQQ19JX0NBTEw6IHJldHVybiAxKzI7CisgICAgICAgIGNhc2UgR1BDX0lfQUREX0NCQUNL
OiByZXR1cm4gMSsyOworICAgICAgICBjYXNlIEdQQ19JX0ZSRUVfSU1NRURJQVRFOiByZXR1cm4g
MSswOworICAgICAgICBjYXNlIEdQQ19JX0ZSRUU6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2Ug
R1BDX0lfU1RPUkVfUFRSOiByZXR1cm4gMSsxOworICAgICAgICBjYXNlIEdQQ19JX1NUT1JFX1BU
Ul8yTkQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfU1RPUkVfVkFMOiByZXR1cm4g
MSsxOworICAgICAgICBjYXNlIEdQQ19JX1BVU0hfUFRSOiByZXR1cm4gMSsxOworICAgICAgICBj
YXNlIEdQQ19JX1BVU0hfUFRSXzJORDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9Q
VVNIX1BUUl8zUkQ6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfUFVTSF9WQUw6IHJl
dHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfRFVQX1BUUl8yTkQ6IHJldHVybiAxKzA7Cisg
ICAgICAgIGNhc2UgR1BDX0lfUE9QOiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1RX
T19QT1A6IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfVEhSRUVfUE9QOiByZXR1cm4g
MSswOworICAgICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxBRERfUFRSOiByZXR1cm4gMSsyOwor
ICAgICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxBRERfUFRSXzJORDogcmV0dXJuIDErMjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT01QRkFJTEpVTVA6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09NUEZBSUxKVU1QXzJORDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9B
RERDT01QSlVNUDogcmV0dXJuIDErMjsKKyAgICAgICAgY2FzZSBHUENfSV9UV09fQUREQ09NUEpV
TVA6IHJldHVybiAxKzM7CisgICAgICAgIGNhc2UgR1BDX0lfWkVST0pVTVA6IHJldHVybiAxKzE7
CisgICAgICAgIGNhc2UgR1BDX0lfREVDQ09NUEpVTVA6IHJldHVybiAxKzE7CisgICAgICAgIGNh
c2UgR1BDX0lfQ0hFQ0tDSE9JQ0U6IHJldHVybiAxKzE7CisgICAgICAgIGNhc2UgR1BDX0lfVEFC
TEVTRVRfTE9DQUxfVE9fRklFTEQ6IHJldHVybiBVSU5UMzJfTUFYOworICAgICAgICBjYXNlIEdQ
Q19JX1RBQkxFU0VUX0ZJRUxEX1RPX0ZJRUxEOiByZXR1cm4gVUlOVDMyX01BWDsKKyAgICAgICAg
Y2FzZSBHUENfSV9UQUJMRUpVTVBfRklFTEQ6IHJldHVybiBVSU5UMzJfTUFYOworICAgICAgICBj
YXNlIEdQQ19JX1RBQkxFSlVNUF9MT0NBTDogcmV0dXJuIFVJTlQzMl9NQVg7CisgICAgICAgIGNh
c2UgR1BDX0lfSlVNUDogcmV0dXJuIDErMTsKKyAgICAgICAgY2FzZSBHUENfSV9SRVRVUk5fT05F
OiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1JFVFVSTl9UT1BfV0lUSF9SRUdJT046
IHJldHVybiAxKzA7CisgICAgICAgIGNhc2UgR1BDX0lfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRI
X0VNUFRZX1RZUEVTOiByZXR1cm4gMSswOworICAgICAgICBjYXNlIEdQQ19JX1JFVFVSTl9PTkVf
SU5JVF9CVUZfV0lUSF9UWVBFU19GUk9NX09VVF9NQVA6IHJldHVybiAxKzA7CisgICAgICAgIGRl
ZmF1bHQ6IGJyZWFrOworICAgIH0KKyAgICB0c2ZfYWJvcnQoIkludmFsaWQgaW5zdHJ1Y3Rpb24i
KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW5z
dHJ1Y3Rpb25fdG9fc3RyaW5nLmdlbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvZ3BjX2luc3RydWN0aW9uX3RvX3N0cmluZy5nZW4JKG5vbmV4aXN0
ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnN0cnVj
dGlvbl90b19zdHJpbmcuZ2VuCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjk5IEBACisvKiBn
ZW5lcmF0ZWQgYnkgZ3BjX2dlbi5yYiAqLworY29uc3QgY2hhciAqZ3BjX2luc3RydWN0aW9uX3Rv
X3N0cmluZyhncGNfY2VsbF90IGluc3QpIHsKKyAgICBzd2l0Y2ggKGluc3QpIHsKKyAgICAgICAg
Y2FzZSBHUENfSV9OT1A6IHJldHVybiAiTk9QIjsKKyAgICAgICAgY2FzZSBHUENfSV9MQUJFTDog
cmV0dXJuICJMQUJFTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9OQ19JTkNEU1Q6IHJl
dHVybiAiQ09QWV9IVE9OQ19JTkNEU1QiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTlNf
SU5DRFNUOiByZXR1cm4gIkNPUFlfSFRPTlNfSU5DRFNUIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0hUT05MX0lOQ0RTVDogcmV0dXJuICJDT1BZX0hUT05MX0lOQ0RTVCI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9IVE9OTExfSU5DRFNUOiByZXR1cm4gIkNPUFlfSFRPTkxMX0lOQ0RTVCI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9IVE9ORl9JTkNEU1Q6IHJldHVybiAiQ09QWV9IVE9O
Rl9JTkNEU1QiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfSFRPTkRfSU5DRFNUOiByZXR1cm4g
IkNPUFlfSFRPTkRfSU5DRFNUIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0hUT05DSE9JQ0Vf
VE9fVUk4X0lOQ0RTVDogcmV0dXJuICJDT1BZX0hUT05DSE9JQ0VfVE9fVUk4X0lOQ0RTVCI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDOiByZXR1cm4gIkNPUFlf
TlRPSENfVE9fQklUX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IQ19JTkNT
UkM6IHJldHVybiAiQ09QWV9OVE9IQ19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
TlRPSENfVE9fU19aX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RPX1NfWl9JTkNTUkMiOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fU19FX0lOQ1NSQzogcmV0dXJuICJDT1BZ
X05UT0hDX1RPX1NfRV9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9f
TF9aX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RPX0xfWl9JTkNTUkMiOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTF9FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RP
X0xfRV9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSENfVE9fTExfWl9JTkNT
UkM6IHJldHVybiAiQ09QWV9OVE9IQ19UT19MTF9aX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9OVE9IQ19UT19MTF9FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hDX1RPX0xMX0Vf
SU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0ZfWl9JTkNTUkM6IHJl
dHVybiAiQ09QWV9OVE9IQ19UT19GX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X05UT0hDX1RPX0ZfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IQ19UT19GX0VfSU5DU1JDIjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RPX0RfWl9JTkNTUkM6IHJldHVybiAiQ09Q
WV9OVE9IQ19UT19EX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hDX1RP
X0RfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IQ19UT19EX0VfSU5DU1JDIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0JJVF9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IU19U
T19CSVRfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0NfSU5DU1JD
OiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fQ19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfTlRPSFNfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfSU5DU1JDIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX05UT0hTX1RPX0xfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IU19UT19M
X1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hTX1RPX0xfRV9JTkNTUkM6
IHJldHVybiAiQ09QWV9OVE9IU19UT19MX0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX05UT0hTX1RPX0xMX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fTExfWl9JTkNT
UkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSFNfVE9fTExfRV9JTkNTUkM6IHJldHVy
biAiQ09QWV9OVE9IU19UT19MTF9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9O
VE9IU19UT19GX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fRl9aX0lOQ1NSQyI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19GX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlf
TlRPSFNfVE9fRl9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IU19UT19E
X1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9fRF9aX0lOQ1NSQyI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9OVE9IU19UT19EX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSFNfVE9f
RF9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19CSVRfSU5DU1JD
OiByZXR1cm4gIkNPUFlfTlRPSExfVE9fQklUX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9OVE9ITF9UT19DX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hMX1RPX0NfSU5DU1JDIjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMX1RPX1NfSU5DU1JDOiByZXR1cm4gIkNPUFlf
TlRPSExfVE9fU19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfSU5DU1JD
OiByZXR1cm4gIkNPUFlfTlRPSExfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05U
T0hMX1RPX0xMX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9fTExfWl9JTkNTUkMiOwor
ICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkM6IHJldHVybiAiQ09Q
WV9OVE9ITF9UT19MTF9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9U
T19GX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9fRl9aX0lOQ1NSQyI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19GX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExf
VE9fRl9FX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITF9UT19EX1pfSU5D
U1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9fRF9aX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9OVE9ITF9UT19EX0VfSU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExfVE9fRF9FX0lO
Q1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fQklUX0lOQ1NSQzogcmV0
dXJuICJDT1BZX05UT0hMTF9UT19CSVRfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X05UT0hMTF9UT19DX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hMTF9UT19DX0lOQ1NSQyI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fU19JTkNTUkM6IHJldHVybiAiQ09QWV9O
VE9ITExfVE9fU19JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExMX1RPX0xf
SU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExMX1RPX0xfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX05UT0hMTF9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9ITExfSU5DU1JDIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19GX1pfSU5DU1JDOiByZXR1cm4gIkNPUFlf
TlRPSExMX1RPX0ZfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSExMX1RP
X0ZfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9ITExfVE9fRl9FX0lOQ1NSQyI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9OVE9ITExfVE9fRF9aX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hM
TF9UT19EX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hMTF9UT19EX0Vf
SU5DU1JDOiByZXR1cm4gIkNPUFlfTlRPSExMX1RPX0RfRV9JTkNTUkMiOworICAgICAgICBjYXNl
IEdQQ19JX0NPUFlfTlRPSEZfVE9fQklUX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0JJ
VF9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fQ19aX0lOQ1NSQzog
cmV0dXJuICJDT1BZX05UT0hGX1RPX0NfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfTlRPSEZfVE9fQ19FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0NfRV9JTkNTUkMi
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fU19aX0lOQ1NSQzogcmV0dXJuICJD
T1BZX05UT0hGX1RPX1NfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZf
VE9fU19FX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX1NfRV9JTkNTUkMiOworICAgICAg
ICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fTF9aX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hG
X1RPX0xfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTlRPSEZfVE9fTF9FX0lO
Q1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0xfRV9JTkNTUkMiOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfTlRPSEZfVE9fTExfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRl9UT19MTF9a
X0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRl9UT19MTF9FX0lOQ1NSQzog
cmV0dXJuICJDT1BZX05UT0hGX1RPX0xMX0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX05UT0hGX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX0lOQ1NSQyI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ09QWV9OVE9IRl9UT19EX0lOQ1NSQzogcmV0dXJuICJDT1BZX05UT0hGX1RPX0Rf
SU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0JJVF9JTkNTUkM6IHJl
dHVybiAiQ09QWV9OVE9IRF9UT19CSVRfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X05UT0hEX1RPX0NfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19DX1pfSU5DU1JDIjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0NfRV9JTkNTUkM6IHJldHVybiAiQ09Q
WV9OVE9IRF9UT19DX0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RP
X1NfWl9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19TX1pfSU5DU1JDIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX1NfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9U
T19TX0VfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0xfWl9JTkNT
UkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX05UT0hEX1RPX0xfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19MX0VfSU5D
U1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX1RPX0xMX1pfSU5DU1JDOiByZXR1
cm4gIkNPUFlfTlRPSERfVE9fTExfWl9JTkNTUkMiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
TlRPSERfVE9fTExfRV9JTkNTUkM6IHJldHVybiAiQ09QWV9OVE9IRF9UT19MTF9FX0lOQ1NSQyI7
CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9OVE9IRF9UT19GX0lOQ1NSQzogcmV0dXJuICJDT1BZ
X05UT0hEX1RPX0ZfSU5DU1JDIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX05UT0hEX0lOQ1NS
QzogcmV0dXJuICJDT1BZX05UT0hEX0lOQ1NSQyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9C
SVQ6IHJldHVybiAiQ09QWV9CSVQiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQklUX1RPX1M6
IHJldHVybiAiQ09QWV9CSVRfVE9fUyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRfVE9f
TDogcmV0dXJuICJDT1BZX0JJVF9UT19MIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVF9U
T19MTDogcmV0dXJuICJDT1BZX0JJVF9UT19MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9C
SVRfVE9fRjogcmV0dXJuICJDT1BZX0JJVF9UT19GIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZ
X0JJVF9UT19EOiByZXR1cm4gIkNPUFlfQklUX1RPX0QiOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfQzogcmV0dXJuICJDT1BZX0MiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19UT19TX1o6
IHJldHVybiAiQ09QWV9DX1RPX1NfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9DX1RPX1Nf
RTogcmV0dXJuICJDT1BZX0NfVE9fU19FIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0NfVE9f
TF9aOiByZXR1cm4gIkNPUFlfQ19UT19MX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfQ19U
T19MX0U6IHJldHVybiAiQ09QWV9DX1RPX0xfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9D
X1RPX0xMX1o6IHJldHVybiAiQ09QWV9DX1RPX0xMX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfQ19UT19MTF9FOiByZXR1cm4gIkNPUFlfQ19UT19MTF9FIjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX0NfVE9fRl9aOiByZXR1cm4gIkNPUFlfQ19UT19GX1oiOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfQ19UT19GX0U6IHJldHVybiAiQ09QWV9DX1RPX0ZfRSI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9DX1RPX0RfWjogcmV0dXJuICJDT1BZX0NfVE9fRF9aIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX0NfVE9fRF9FOiByZXR1cm4gIkNPUFlfQ19UT19EX0UiOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfU19UT19CSVQ6IHJldHVybiAiQ09QWV9TX1RPX0JJVCI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9TX1RPX0M6IHJldHVybiAiQ09QWV9TX1RPX0MiOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfUzogcmV0dXJuICJDT1BZX1MiOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfU19UT19MX1o6IHJldHVybiAiQ09QWV9TX1RPX0xfWiI7CisgICAgICAgIGNhc2UgR1BDX0lf
Q09QWV9TX1RPX0xfRTogcmV0dXJuICJDT1BZX1NfVE9fTF9FIjsKKyAgICAgICAgY2FzZSBHUENf
SV9DT1BZX1NfVE9fTExfWjogcmV0dXJuICJDT1BZX1NfVE9fTExfWiI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9TX1RPX0xMX0U6IHJldHVybiAiQ09QWV9TX1RPX0xMX0UiOworICAgICAgICBj
YXNlIEdQQ19JX0NPUFlfU19UT19GX1o6IHJldHVybiAiQ09QWV9TX1RPX0ZfWiI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9TX1RPX0ZfRTogcmV0dXJuICJDT1BZX1NfVE9fRl9FIjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX1NfVE9fRF9aOiByZXR1cm4gIkNPUFlfU19UT19EX1oiOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfU19UT19EX0U6IHJldHVybiAiQ09QWV9TX1RPX0RfRSI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RPX0JJVDogcmV0dXJuICJDT1BZX0xfVE9fQklUIjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fQzogcmV0dXJuICJDT1BZX0xfVE9fQyI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RPX1M6IHJldHVybiAiQ09QWV9MX1RPX1MiOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfTDogcmV0dXJuICJDT1BZX0wiOworICAgICAgICBjYXNlIEdQ
Q19JX0NPUFlfTF9UT19MTF9aOiByZXR1cm4gIkNPUFlfTF9UT19MTF9aIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9DT1BZX0xfVE9fTExfRTogcmV0dXJuICJDT1BZX0xfVE9fTExfRSI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9MX1RPX0ZfWjogcmV0dXJuICJDT1BZX0xfVE9fRl9aIjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0xfVE9fRl9FOiByZXR1cm4gIkNPUFlfTF9UT19GX0UiOworICAg
ICAgICBjYXNlIEdQQ19JX0NPUFlfTF9UT19EX1o6IHJldHVybiAiQ09QWV9MX1RPX0RfWiI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MX1RPX0RfRTogcmV0dXJuICJDT1BZX0xfVE9fRF9FIjsK
KyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0JJVDogcmV0dXJuICJDT1BZX0xMX1RPX0JJ
VCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19DOiByZXR1cm4gIkNPUFlfTExfVE9f
QyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19TOiByZXR1cm4gIkNPUFlfTExfVE9f
UyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19MOiByZXR1cm4gIkNPUFlfTExfVE9f
TCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTDogcmV0dXJuICJDT1BZX0xMIjsKKyAgICAg
ICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0ZfWjogcmV0dXJuICJDT1BZX0xMX1RPX0ZfWiI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ09QWV9MTF9UT19GX0U6IHJldHVybiAiQ09QWV9MTF9UT19GX0Ui
OworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfTExfVE9fRF9aOiByZXR1cm4gIkNPUFlfTExfVE9f
RF9aIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0xMX1RPX0RfRTogcmV0dXJuICJDT1BZX0xM
X1RPX0RfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0JJVDogcmV0dXJuICJDT1BZ
X0ZfVE9fQklUIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fQ19aOiByZXR1cm4gIkNP
UFlfRl9UT19DX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19DX0U6IHJldHVybiAi
Q09QWV9GX1RPX0NfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX1NfWjogcmV0dXJu
ICJDT1BZX0ZfVE9fU19aIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fU19FOiByZXR1
cm4gIkNPUFlfRl9UT19TX0UiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19MX1o6IHJl
dHVybiAiQ09QWV9GX1RPX0xfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RPX0xfRTog
cmV0dXJuICJDT1BZX0ZfVE9fTF9FIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0ZfVE9fTExf
WjogcmV0dXJuICJDT1BZX0ZfVE9fTExfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9GX1RP
X0xMX0U6IHJldHVybiAiQ09QWV9GX1RPX0xMX0UiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
RjogcmV0dXJuICJDT1BZX0YiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRl9UT19EOiByZXR1
cm4gIkNPUFlfRl9UT19EIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fQklUOiByZXR1
cm4gIkNPUFlfRF9UT19CSVQiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19DX1o6IHJl
dHVybiAiQ09QWV9EX1RPX0NfWiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RPX0NfRTog
cmV0dXJuICJDT1BZX0RfVE9fQ19FIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0RfVE9fU19a
OiByZXR1cm4gIkNPUFlfRF9UT19TX1oiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlfRF9UT19T
X0U6IHJldHVybiAiQ09QWV9EX1RPX1NfRSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9EX1RP
X0xfWjogcmV0dXJuICJDT1BZX0RfVE9fTF9aIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0Rf
VE9fTF9FOiByZXR1cm4gIkNPUFlfRF9UT19MX0UiOworICAgICAgICBjYXNlIEdQQ19JX0NPUFlf
RF9UT19MTF9aOiByZXR1cm4gIkNPUFlfRF9UT19MTF9aIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0RfVE9fTExfRTogcmV0dXJuICJDT1BZX0RfVE9fTExfRSI7CisgICAgICAgIGNhc2UgR1BD
X0lfQ09QWV9EX1RPX0Y6IHJldHVybiAiQ09QWV9EX1RPX0YiOworICAgICAgICBjYXNlIEdQQ19J
X0NPUFlfRDogcmV0dXJuICJDT1BZX0QiOworICAgICAgICBjYXNlIEdQQ19JX1NFVF9DOiByZXR1
cm4gIlNFVF9DIjsKKyAgICAgICAgY2FzZSBHUENfSV9TRVRfUzogcmV0dXJuICJTRVRfUyI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfU0VUX0w6IHJldHVybiAiU0VUX0wiOworICAgICAgICBjYXNlIEdQ
Q19JX1NFVF8yTkRfQzogcmV0dXJuICJTRVRfMk5EX0MiOworICAgICAgICBjYXNlIEdQQ19JX1NF
VF8yTkRfUzogcmV0dXJuICJTRVRfMk5EX1MiOworICAgICAgICBjYXNlIEdQQ19JX1NFVF8yTkRf
TDogcmV0dXJuICJTRVRfMk5EX0wiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFE
OiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1Jf
UkVBRF9UT19DOiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX1RPX0MiOworICAgICAgICBjYXNlIEdQ
Q19JX0JJVFZFQ1RPUl9SRUFEX1RPX1M6IHJldHVybiAiQklUVkVDVE9SX1JFQURfVE9fUyI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfVE9fTDogcmV0dXJuICJCSVRWRUNUT1Jf
UkVBRF9UT19MIjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19MTDogcmV0
dXJuICJCSVRWRUNUT1JfUkVBRF9UT19MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9S
X1JFQURfVE9fRjogcmV0dXJuICJCSVRWRUNUT1JfUkVBRF9UT19GIjsKKyAgICAgICAgY2FzZSBH
UENfSV9CSVRWRUNUT1JfUkVBRF9UT19EOiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX1RPX0QiOwor
ICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fQzogcmV0dXJuICJCSVRWRUNU
T1JfUkVBRF9GUk9NX0MiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01f
UzogcmV0dXJuICJCSVRWRUNUT1JfUkVBRF9GUk9NX1MiOworICAgICAgICBjYXNlIEdQQ19JX0JJ
VFZFQ1RPUl9SRUFEX0ZST01fTDogcmV0dXJuICJCSVRWRUNUT1JfUkVBRF9GUk9NX0wiOworICAg
ICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fTEw6IHJldHVybiAiQklUVkVDVE9S
X1JFQURfRlJPTV9MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9G
OiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX0ZST01fRiI7CisgICAgICAgIGNhc2UgR1BDX0lfQklU
VkVDVE9SX1JFQURfRlJPTV9EOiByZXR1cm4gIkJJVFZFQ1RPUl9SRUFEX0ZST01fRCI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9UU0ZfSU5URUdFUl9BUlJBWTogcmV0
dXJuICJCSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9JTlRFR0VSX0FSUkFZIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX1RTRl9MT05HX0FSUkFZOiByZXR1cm4gIkJJVFZF
Q1RPUl9SRUFEX0ZST01fVFNGX0xPTkdfQVJSQVkiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZF
Q1RPUl9XUklURTogcmV0dXJuICJCSVRWRUNUT1JfV1JJVEUiOworICAgICAgICBjYXNlIEdQQ19J
X0JZVEVfQVJSQVlfUkVBRDogcmV0dXJuICJCWVRFX0FSUkFZX1JFQUQiOworICAgICAgICBjYXNl
IEdQQ19JX0JZVEVfQVJSQVlfV1JJVEU6IHJldHVybiAiQllURV9BUlJBWV9XUklURSI7CisgICAg
ICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfU0tJUDogcmV0dXJuICJUU0ZfSU5URUdFUl9TS0lQ
IjsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfU0tJUDogcmV0dXJuICJUU0ZfVU5T
SUdORURfU0tJUCI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfU0tJUDogcmV0dXJuICJU
U0ZfTE9OR19TS0lQIjsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0JJ
VDogcmV0dXJuICJUU0ZfSU5URUdFUl9SRUFEX1RPX0JJVCI7CisgICAgICAgIGNhc2UgR1BDX0lf
VFNGX0lOVEVHRVJfUkVBRF9UT19DOiByZXR1cm4gIlRTRl9JTlRFR0VSX1JFQURfVE9fQyI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TOiByZXR1cm4gIlRTRl9JTlRF
R0VSX1JFQURfVE9fUyI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRDogcmV0
dXJuICJUU0ZfSU5URUdFUl9SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfSU5URUdFUl9S
RUFEX1RPX0xMOiByZXR1cm4gIlRTRl9JTlRFR0VSX1JFQURfVE9fTEwiOworICAgICAgICBjYXNl
IEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fRjogcmV0dXJuICJUU0ZfSU5URUdFUl9SRUFEX1RP
X0YiOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fRDogcmV0dXJuICJU
U0ZfSU5URUdFUl9SRUFEX1RPX0QiOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9VTlNJR05FRF9S
RUFEX1NVQjE6IHJldHVybiAiVFNGX1VOU0lHTkVEX1JFQURfU1VCMSI7CisgICAgICAgIGNhc2Ug
R1BDX0lfVFNGX0xPTkdfUkVBRF9UT19CSVQ6IHJldHVybiAiVFNGX0xPTkdfUkVBRF9UT19CSVQi
OworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fQzogcmV0dXJuICJUU0ZfTE9O
R19SRUFEX1RPX0MiOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fUzogcmV0
dXJuICJUU0ZfTE9OR19SRUFEX1RPX1MiOworICAgICAgICBjYXNlIEdQQ19JX1RTRl9MT05HX1JF
QURfVE9fTDogcmV0dXJuICJUU0ZfTE9OR19SRUFEX1RPX0wiOworICAgICAgICBjYXNlIEdQQ19J
X1RTRl9MT05HX1JFQUQ6IHJldHVybiAiVFNGX0xPTkdfUkVBRCI7CisgICAgICAgIGNhc2UgR1BD
X0lfVFNGX0xPTkdfUkVBRF9UT19GOiByZXR1cm4gIlRTRl9MT05HX1JFQURfVE9fRiI7CisgICAg
ICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfUkVBRF9UT19EOiByZXR1cm4gIlRTRl9MT05HX1JFQURf
VE9fRCI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0lOVEVHRVJfU0laRTogcmV0dXJuICJUU0Zf
SU5URUdFUl9TSVpFIjsKKyAgICAgICAgY2FzZSBHUENfSV9UU0ZfVU5TSUdORURfUExVUzFfU0la
RTogcmV0dXJuICJUU0ZfVU5TSUdORURfUExVUzFfU0laRSI7CisgICAgICAgIGNhc2UgR1BDX0lf
VFNGX0xPTkdfU0laRTogcmV0dXJuICJUU0ZfTE9OR19TSVpFIjsKKyAgICAgICAgY2FzZSBHUENf
SV9UU0ZfSU5URUdFUl9XUklURTogcmV0dXJuICJUU0ZfSU5URUdFUl9XUklURSI7CisgICAgICAg
IGNhc2UgR1BDX0lfVFNGX1VOU0lHTkVEX1BMVVMxX1dSSVRFOiByZXR1cm4gIlRTRl9VTlNJR05F
RF9QTFVTMV9XUklURSI7CisgICAgICAgIGNhc2UgR1BDX0lfVFNGX0xPTkdfV1JJVEU6IHJldHVy
biAiVFNGX0xPTkdfV1JJVEUiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19TRVRFTVBUWTog
cmV0dXJuICJTVFJJTkdfU0VURU1QVFkiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19SRUFE
OiByZXR1cm4gIlNUUklOR19SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9TVFJJTkdfU0tJUDog
cmV0dXJuICJTVFJJTkdfU0tJUCI7CisgICAgICAgIGNhc2UgR1BDX0lfU1RSSU5HX1NJWkU6IHJl
dHVybiAiU1RSSU5HX1NJWkUiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19XUklURTogcmV0
dXJuICJTVFJJTkdfV1JJVEUiOworICAgICAgICBjYXNlIEdQQ19JX1NUUklOR19DT1BZOiByZXR1
cm4gIlNUUklOR19DT1BZIjsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfU0VURU1QVFk6IHJldHVy
biAiQU5ZX1NFVEVNUFRZIjsKKyAgICAgICAgY2FzZSBHUENfSV9BTllfUkVBRDogcmV0dXJuICJB
TllfUkVBRCI7CisgICAgICAgIGNhc2UgR1BDX0lfQU5ZX1NLSVA6IHJldHVybiAiQU5ZX1NLSVAi
OworICAgICAgICBjYXNlIEdQQ19JX0FOWV9TSVpFOiByZXR1cm4gIkFOWV9TSVpFIjsKKyAgICAg
ICAgY2FzZSBHUENfSV9BTllfV1JJVEU6IHJldHVybiAiQU5ZX1dSSVRFIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9BTllfQ09QWTogcmV0dXJuICJBTllfQ09QWSI7CisgICAgICAgIGNhc2UgR1BDX0lf
TUVNQ1BZOiByZXR1cm4gIk1FTUNQWSI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9BUlJBWTog
cmV0dXJuICJDT1BZX0FSUkFZIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUjog
cmV0dXJuICJDT1BZX0JJVFZFQ1RPUiI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNU
T1JfRlJPTV9DOiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX0ZST01fQyI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9TOiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX0ZST01f
UyI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9MOiByZXR1cm4gIkNP
UFlfQklUVkVDVE9SX0ZST01fTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1Jf
RlJPTV9MTDogcmV0dXJuICJDT1BZX0JJVFZFQ1RPUl9GUk9NX0xMIjsKKyAgICAgICAgY2FzZSBH
UENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0Y6IHJldHVybiAiQ09QWV9CSVRWRUNUT1JfRlJPTV9G
IjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0Q6IHJldHVybiAiQ09Q
WV9CSVRWRUNUT1JfRlJPTV9EIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9U
T19DOiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX1RPX0MiOworICAgICAgICBjYXNlIEdQQ19JX0NP
UFlfQklUVkVDVE9SX1RPX1M6IHJldHVybiAiQ09QWV9CSVRWRUNUT1JfVE9fUyI7CisgICAgICAg
IGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fTDogcmV0dXJuICJDT1BZX0JJVFZFQ1RPUl9U
T19MIjsKKyAgICAgICAgY2FzZSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19MTDogcmV0dXJuICJD
T1BZX0JJVFZFQ1RPUl9UT19MTCI7CisgICAgICAgIGNhc2UgR1BDX0lfQ09QWV9CSVRWRUNUT1Jf
VE9fRjogcmV0dXJuICJDT1BZX0JJVFZFQ1RPUl9UT19GIjsKKyAgICAgICAgY2FzZSBHUENfSV9D
T1BZX0JJVFZFQ1RPUl9UT19EOiByZXR1cm4gIkNPUFlfQklUVkVDVE9SX1RPX0QiOworICAgICAg
ICBjYXNlIEdQQ19JX1JFQURDX1RPX0NIT0lDRTogcmV0dXJuICJSRUFEQ19UT19DSE9JQ0UiOwor
ICAgICAgICBjYXNlIEdQQ19JX1JFQURMOiByZXR1cm4gIlJFQURMIjsKKyAgICAgICAgY2FzZSBH
UENfSV9BUlJBWV9MRU5fV1JJVEVfRklFTEQ6IHJldHVybiAiQVJSQVlfTEVOX1dSSVRFX0ZJRUxE
IjsKKyAgICAgICAgY2FzZSBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRDogcmV0dXJuICJBUlJB
WV9MRU5fUkVBRF9GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlfTEVOX1JFQURfTE9D
QUw6IHJldHVybiAiQVJSQVlfTEVOX1JFQURfTE9DQUwiOworICAgICAgICBjYXNlIEdQQ19JX0FS
UkFZX0xFTl9TS0lQOiByZXR1cm4gIkFSUkFZX0xFTl9TS0lQIjsKKyAgICAgICAgY2FzZSBHUENf
SV9CSVRfTUFTS19XUklURTogcmV0dXJuICJCSVRfTUFTS19XUklURSI7CisgICAgICAgIGNhc2Ug
R1BDX0lfQklUX01BU0tfUkVBRDogcmV0dXJuICJCSVRfTUFTS19SRUFEIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX1M6IHJldHVybiAiQklUX01BU0tfUkVBRF9UT19TIjsK
KyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0w6IHJldHVybiAiQklUX01BU0tf
UkVBRF9UT19MIjsKKyAgICAgICAgY2FzZSBHUENfSV9CSVRfTUFTS19SRUFEX1RPX0xMOiByZXR1
cm4gIkJJVF9NQVNLX1JFQURfVE9fTEwiOworICAgICAgICBjYXNlIEdQQ19JX0JJVF9NQVNLX1JF
QURfVE9fRjogcmV0dXJuICJCSVRfTUFTS19SRUFEX1RPX0YiOworICAgICAgICBjYXNlIEdQQ19J
X0JJVF9NQVNLX1JFQURfVE9fRDogcmV0dXJuICJCSVRfTUFTS19SRUFEX1RPX0QiOworICAgICAg
ICBjYXNlIEdQQ19JX0JJVF9XUklURTogcmV0dXJuICJCSVRfV1JJVEUiOworICAgICAgICBjYXNl
IEdQQ19JX0JJVF9SRUFEOiByZXR1cm4gIkJJVF9SRUFEIjsKKyAgICAgICAgY2FzZSBHUENfSV9C
SVRfUkVBRF9UT19TOiByZXR1cm4gIkJJVF9SRUFEX1RPX1MiOworICAgICAgICBjYXNlIEdQQ19J
X0JJVF9SRUFEX1RPX0w6IHJldHVybiAiQklUX1JFQURfVE9fTCI7CisgICAgICAgIGNhc2UgR1BD
X0lfQklUX1JFQURfVE9fTEw6IHJldHVybiAiQklUX1JFQURfVE9fTEwiOworICAgICAgICBjYXNl
IEdQQ19JX0JJVF9SRUFEX1RPX0Y6IHJldHVybiAiQklUX1JFQURfVE9fRiI7CisgICAgICAgIGNh
c2UgR1BDX0lfQklUX1JFQURfVE9fRDogcmV0dXJuICJCSVRfUkVBRF9UT19EIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9TS0lQOiByZXR1cm4gIlNLSVAiOworICAgICAgICBjYXNlIEdQQ19JX0FSUkFZ
X0JDX0FORF9TS0lQX0ZJRUxEOiByZXR1cm4gIkFSUkFZX0JDX0FORF9TS0lQX0ZJRUxEIjsKKyAg
ICAgICAgY2FzZSBHUENfSV9BUlJBWV9TS0lQOiByZXR1cm4gIkFSUkFZX1NLSVAiOworICAgICAg
ICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9CQ19BTkRfU0tJUF9GSUVMRDogcmV0dXJuICJCSVRWRUNU
T1JfQkNfQU5EX1NLSVBfRklFTEQiOworICAgICAgICBjYXNlIEdQQ19JX0JJVFZFQ1RPUl9TS0lQ
OiByZXR1cm4gIkJJVFZFQ1RPUl9TS0lQIjsKKyAgICAgICAgY2FzZSBHUENfSV9JTkNfU0laRTog
cmV0dXJuICJJTkNfU0laRSI7CisgICAgICAgIGNhc2UgR1BDX0lfSU5DX1NJWkVfQVJSQVlfTEVO
OiByZXR1cm4gIklOQ19TSVpFX0FSUkFZX0xFTiI7CisgICAgICAgIGNhc2UgR1BDX0lfSU5DX1NJ
WkVfQVJSQVk6IHJldHVybiAiSU5DX1NJWkVfQVJSQVkiOworICAgICAgICBjYXNlIEdQQ19JX0lO
Q19TSVpFX0JJVFZFQ1RPUjogcmV0dXJuICJJTkNfU0laRV9CSVRWRUNUT1IiOworICAgICAgICBj
YXNlIEdQQ19JX0JDOiByZXR1cm4gIkJDIjsKKyAgICAgICAgY2FzZSBHUENfSV9BUlJBWV9CQ19G
SUVMRDogcmV0dXJuICJBUlJBWV9CQ19GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lfQVJSQVlf
QkNfTE9DQUw6IHJldHVybiAiQVJSQVlfQkNfTE9DQUwiOworICAgICAgICBjYXNlIEdQQ19JX0JJ
VFZFQ1RPUl9CQ19GSUVMRDogcmV0dXJuICJCSVRWRUNUT1JfQkNfRklFTEQiOworICAgICAgICBj
YXNlIEdQQ19JX0JJVFZFQ1RPUl9CQ19MT0NBTDogcmV0dXJuICJCSVRWRUNUT1JfQkNfTE9DQUwi
OworICAgICAgICBjYXNlIEdQQ19JX01BTExPQ19CVUY6IHJldHVybiAiTUFMTE9DX0JVRiI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfUE9QX0JVRjogcmV0dXJuICJQT1BfQlVGIjsKKyAgICAgICAgY2Fz
ZSBHUENfSV9ERVNUUk9ZX0JVRkZFUjogcmV0dXJuICJERVNUUk9ZX0JVRkZFUiI7CisgICAgICAg
IGNhc2UgR1BDX0lfTUFLRV9PVVRfTUFQOiByZXR1cm4gIk1BS0VfT1VUX01BUCI7CisgICAgICAg
IGNhc2UgR1BDX0lfQUxMT0NfUk9PVF9NQVlCRV8yTkQ6IHJldHVybiAiQUxMT0NfUk9PVF9NQVlC
RV8yTkQiOworICAgICAgICBjYXNlIEdQQ19JX0FMTE9DOiByZXR1cm4gIkFMTE9DIjsKKyAgICAg
ICAgY2FzZSBHUENfSV9BTExPQ19BUlJBWTogcmV0dXJuICJBTExPQ19BUlJBWSI7CisgICAgICAg
IGNhc2UgR1BDX0lfQUxMT0NfQVJSQVlfMk5EOiByZXR1cm4gIkFMTE9DX0FSUkFZXzJORCI7Cisg
ICAgICAgIGNhc2UgR1BDX0lfQ0FMTDogcmV0dXJuICJDQUxMIjsKKyAgICAgICAgY2FzZSBHUENf
SV9BRERfQ0JBQ0s6IHJldHVybiAiQUREX0NCQUNLIjsKKyAgICAgICAgY2FzZSBHUENfSV9GUkVF
X0lNTUVESUFURTogcmV0dXJuICJGUkVFX0lNTUVESUFURSI7CisgICAgICAgIGNhc2UgR1BDX0lf
RlJFRTogcmV0dXJuICJGUkVFIjsKKyAgICAgICAgY2FzZSBHUENfSV9TVE9SRV9QVFI6IHJldHVy
biAiU1RPUkVfUFRSIjsKKyAgICAgICAgY2FzZSBHUENfSV9TVE9SRV9QVFJfMk5EOiByZXR1cm4g
IlNUT1JFX1BUUl8yTkQiOworICAgICAgICBjYXNlIEdQQ19JX1NUT1JFX1ZBTDogcmV0dXJuICJT
VE9SRV9WQUwiOworICAgICAgICBjYXNlIEdQQ19JX1BVU0hfUFRSOiByZXR1cm4gIlBVU0hfUFRS
IjsKKyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1BUUl8yTkQ6IHJldHVybiAiUFVTSF9QVFJfMk5E
IjsKKyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1BUUl8zUkQ6IHJldHVybiAiUFVTSF9QVFJfM1JE
IjsKKyAgICAgICAgY2FzZSBHUENfSV9QVVNIX1ZBTDogcmV0dXJuICJQVVNIX1ZBTCI7CisgICAg
ICAgIGNhc2UgR1BDX0lfRFVQX1BUUl8yTkQ6IHJldHVybiAiRFVQX1BUUl8yTkQiOworICAgICAg
ICBjYXNlIEdQQ19JX1BPUDogcmV0dXJuICJQT1AiOworICAgICAgICBjYXNlIEdQQ19JX1RXT19Q
T1A6IHJldHVybiAiVFdPX1BPUCI7CisgICAgICAgIGNhc2UgR1BDX0lfVEhSRUVfUE9QOiByZXR1
cm4gIlRIUkVFX1BPUCI7CisgICAgICAgIGNhc2UgR1BDX0lfUkVQVVNIX01VTEFERF9QVFI6IHJl
dHVybiAiUkVQVVNIX01VTEFERF9QVFIiOworICAgICAgICBjYXNlIEdQQ19JX1JFUFVTSF9NVUxB
RERfUFRSXzJORDogcmV0dXJuICJSRVBVU0hfTVVMQUREX1BUUl8yTkQiOworICAgICAgICBjYXNl
IEdQQ19JX0NPTVBGQUlMSlVNUDogcmV0dXJuICJDT01QRkFJTEpVTVAiOworICAgICAgICBjYXNl
IEdQQ19JX0NPTVBGQUlMSlVNUF8yTkQ6IHJldHVybiAiQ09NUEZBSUxKVU1QXzJORCI7CisgICAg
ICAgIGNhc2UgR1BDX0lfQUREQ09NUEpVTVA6IHJldHVybiAiQUREQ09NUEpVTVAiOworICAgICAg
ICBjYXNlIEdQQ19JX1RXT19BRERDT01QSlVNUDogcmV0dXJuICJUV09fQUREQ09NUEpVTVAiOwor
ICAgICAgICBjYXNlIEdQQ19JX1pFUk9KVU1QOiByZXR1cm4gIlpFUk9KVU1QIjsKKyAgICAgICAg
Y2FzZSBHUENfSV9ERUNDT01QSlVNUDogcmV0dXJuICJERUNDT01QSlVNUCI7CisgICAgICAgIGNh
c2UgR1BDX0lfQ0hFQ0tDSE9JQ0U6IHJldHVybiAiQ0hFQ0tDSE9JQ0UiOworICAgICAgICBjYXNl
IEdQQ19JX1RBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxEOiByZXR1cm4gIlRBQkxFU0VUX0xPQ0FMX1RP
X0ZJRUxEIjsKKyAgICAgICAgY2FzZSBHUENfSV9UQUJMRVNFVF9GSUVMRF9UT19GSUVMRDogcmV0
dXJuICJUQUJMRVNFVF9GSUVMRF9UT19GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lfVEFCTEVK
VU1QX0ZJRUxEOiByZXR1cm4gIlRBQkxFSlVNUF9GSUVMRCI7CisgICAgICAgIGNhc2UgR1BDX0lf
VEFCTEVKVU1QX0xPQ0FMOiByZXR1cm4gIlRBQkxFSlVNUF9MT0NBTCI7CisgICAgICAgIGNhc2Ug
R1BDX0lfSlVNUDogcmV0dXJuICJKVU1QIjsKKyAgICAgICAgY2FzZSBHUENfSV9SRVRVUk5fT05F
OiByZXR1cm4gIlJFVFVSTl9PTkUiOworICAgICAgICBjYXNlIEdQQ19JX1JFVFVSTl9UT1BfV0lU
SF9SRUdJT046IHJldHVybiAiUkVUVVJOX1RPUF9XSVRIX1JFR0lPTiI7CisgICAgICAgIGNhc2Ug
R1BDX0lfUkVUVVJOX09ORV9JTklUX0JVRl9XSVRIX0VNUFRZX1RZUEVTOiByZXR1cm4gIlJFVFVS
Tl9PTkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUyI7CisgICAgICAgIGNhc2UgR1BDX0lfUkVU
VVJOX09ORV9JTklUX0JVRl9XSVRIX1RZUEVTX0ZST01fT1VUX01BUDogcmV0dXJuICJSRVRVUk5f
T05FX0lOSVRfQlVGX1dJVEhfVFlQRVNfRlJPTV9PVVRfTUFQIjsKKyAgICAgICAgZGVmYXVsdDog
YnJlYWs7CisgICAgfQorICAgIHRzZl9hYm9ydCgiSW52YWxpZCBpbnN0cnVjdGlvbiIpOworfQpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRfY29tbW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dw
Y19pbnRfY29tbW9uLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL2dwY19pbnRfY29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklM
SVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworCisjZGVmaW5lIElOVF9QVVNIKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICArK3N0YWNrX3RvcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBJTlRfUE9QKCkgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLS1zdGFja190b3A7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUg
SU5UX1NUQUNLKGFyZykgICAgICAgICAgICAgICgqKHN0YWNrX3RvcC0oYXJnKSkpCisjZGVmaW5l
IElOVF9TVEFDS19QVFIoYXJnKSAgICAgICAgICAoKHVpbnQ4X3QqKSBJTlRfU1RBQ0soYXJnKSkK
KworI2RlZmluZSBJTlRfU1RBQ0tfU0VUKGFyZyx2YWwpICAgICAgKCooc3RhY2tfdG9wLShhcmcp
KT0odmFsKSkKKyNkZWZpbmUgSU5UX1NUQUNLX1BUUl9TRVQoYXJnLHZhbCkgIChJTlRfU1RBQ0tf
U0VUKGFyZywoZ3BjX2NlbGxfdCl2YWwpKQorCisjZGVmaW5lIElOVF9TVFJFQU0oYXJnKSAgICAg
ICAgICAgICAoaW5zdFthcmddKQorCisjZGVmaW5lIElOVF9GQUlMVVJFKCkgICAgICAgICAgICAg
ICBnb3RvIGZhaWx1cmUKKworI2RlZmluZSBJTlRfQ0xFQU5VUCgpICAgICAgICAgICAgICAgZG8g
e30gd2hpbGUoMCkKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L2dwY19pbnRhYmxlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0y
L3dhc20vdHNmL2dwY19pbnRhYmxlLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRhYmxlLmMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTUg
RmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJncGNfaW50ZXJuYWwuaCIKKyNpbmNsdWRl
ICJ0c2ZfZm9ybWF0LmgiCisKK3N0cnVjdCBhZGRyX2FycmF5IHsKKyAgICBncGNfY2VsbF90ICoq
YWRkcnM7CisgICAgdWludDMyX3QgbnVtOworfTsKKworc3RhdGljIHRzZl9ib29sX3Qgc3RfYWFf
YXBwZW5kKHRzZl9zdF90YWJsZSAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3BjX2NlbGxfdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2Nl
bGxfdCAqYWRkcikgeworICAgIHN0cnVjdCBhZGRyX2FycmF5ICphYTsKKyAgICBpZiAodHNmX3N0
X2xvb2t1cCh0YWJsZSwoY2hhciopa2V5LCh2b2lkKiopJmFhKSkgeworICAgICAgICBncGNfY2Vs
bF90ICoqbmV3X2FycmF5PQorICAgICAgICAgICAgcmVhbGxvYyhhYS0+YWRkcnMsc2l6ZW9mKGdw
Y19jZWxsX3QqKSooYWEtPm51bSsxKSk7CisgICAgICAgIGlmIChuZXdfYXJyYXk9PU5VTEwpIHsK
KyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCByZWFsbG9jIGdwY19jZWxsX3Qq
IGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGFhLT5hZGRycz1uZXdfYXJyYXk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWE9bWFsbG9j
KHNpemVvZihzdHJ1Y3QgYWRkcl9hcnJheSkpOworICAgICAgICBpZiAoYWE9PU5VTEwpIHsKKyAg
ICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2Mgc3RydWN0IGFkZHJfYXJy
YXkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
YWEtPmFkZHJzPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCopKTsKKyAgICAgICAgaWYgKGFhLT5h
ZGRycz09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxv
YyBncGNfY2VsbF90KiIpOworICAgICAgICAgICAgZnJlZShhYSk7CisgICAgICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIGFhLT5udW09MDsKKyAgICAgICAgCisg
ICAgICAgIGlmICh0c2Zfc3RfaW5zZXJ0KHRhYmxlLChjaGFyKilrZXksYWEpPDApIHsKKyAgICAg
ICAgICAgIHRzZl9zZXRfZXJybm8oInRzZl9zdF9pbnNlcnQgZmFpbGVkIik7CisgICAgICAgICAg
ICBmcmVlKGFhLT5hZGRycyk7CisgICAgICAgICAgICBmcmVlKGFhKTsKKyAgICAgICAgICAgIHJl
dHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgYWEtPmFkZHJzW2FhLT5udW0r
K109YWRkcjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyBpbnQgc3RfYWFfZnJl
ZSh2b2lkICprZXkgLyogd2UgaWdub3JlZCBpdCBhbnl3YXkgKi8sCisgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGFkZHJfYXJyYXkgKmFhLAorICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KmFyZykgeworICAgIGZyZWUoYWEtPmFkZHJzKTsKKyAgICBmcmVlKGFhKTsKKyAgICByZXR1cm4g
VFNGX1NUX0NPTlRJTlVFOworfQorCitzdGF0aWMgdHNmX2Jvb2xfdCBiYWNrX2JyYW5jaF9hY3Rp
b24oZ3BjX2NlbGxfdCAqY2VsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICphcmcpIHsKKyAgICB0c2Zfc3RfdGFibGUgKmJhY2tfbGFiZWxzPWFyZzsKKyAgICBn
cGNfY2VsbF90IGFkZHI7CisgICAgaWYgKCF0c2Zfc3RfbG9va3VwKGJhY2tfbGFiZWxzLAorICAg
ICAgICAgICAgICAgICAgICAgICAoY2hhciopKmNlbGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICh2b2lkKikmYWRkcikpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfSlVNUCwK
KyAgICAgICAgICAgICAgICAgICAgICAiQmFja3dhcmQgcmVmZXJlbmNlIHRvIHVua25vd24gbGFi
ZWw6ICIgZnVwdHIsCisgICAgICAgICAgICAgICAgICAgICAgKmNlbGwpOworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAqY2VsbD1hZGRyOworICAgIHJldHVybiB0c2ZfdHJ1
ZTsKK30KKworc3RhdGljIHRzZl9ib29sX3QgZm9yZV9icmFuY2hfYWN0aW9uKGdwY19jZWxsX3Qg
KmNlbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7
CisgICAgdHNmX3N0X3RhYmxlICpmb3JlX2xhYmVscz1hcmc7CisgICAgcmV0dXJuIHN0X2FhX2Fw
cGVuZChmb3JlX2xhYmVscywqY2VsbCxjZWxsKTsKK30KKworZ3BjX2ludGFibGVfdCAqZ3BjX2lu
dGFibGVfZnJvbV9wcm90byhncGNfcHJvdG9fdCAqcHJvdG8pIHsKKyAgICBncGNfaW50YWJsZV90
ICpyZXQ7CisgICAgZ3BjX2NlbGxfdCAqd3JpdGU7CisgICAgZ3BjX2NlbGxfdCAqcmVhZDsKKyAg
ICB0c2Zfc3RfdGFibGUgKmJhY2tfbGFiZWxzLCpmb3JlX2xhYmVsczsKKyAgICAKKyAgICByZXQ9
bWFsbG9jKHNpemVvZihncGNfaW50YWJsZV90KSk7CisgICAgaWYgKHJldD09TlVMTCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGdwY19pbnRhYmxlX3QiKTsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+bnVtX2FyZ3M9cHJvdG8t
Pm51bV9hcmdzOworICAgIAorICAgIHJldC0+dGFyZ2V0cz10c2Zfc3RfaW5pdF9wdHJ0YWJsZSgp
OworICAgIGlmIChyZXQtPnRhcmdldHM9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygi
Q291bGQgbm90IHRzZl9zdF9pbml0X3B0cnRhYmxlKCkiKTsKKyAgICAgICAgZnJlZShyZXQpOwor
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT5zdHJlYW09bWFsbG9j
KHNpemVvZihncGNfY2VsbF90KSpwcm90by0+c2l6ZSk7CisgICAgaWYgKHJldC0+c3RyZWFtPT1O
VUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2Mgc3RyZWFtIGZv
ciBncGNfaW50YWJsZV90Iik7CisgICAgICAgIHRzZl9zdF9mcmVlX3RhYmxlKHJldC0+dGFyZ2V0
cyk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IAorICAgIGJhY2tfbGFiZWxzPXRzZl9zdF9pbml0X3B0cnRhYmxlKCk7CisgICAgaWYgKGJhY2tf
bGFiZWxzPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2Zfc3Rf
aW5pdF9wdHJ0YWJsZSgpIik7CisgICAgICAgIHRzZl9zdF9mcmVlX3RhYmxlKHJldC0+dGFyZ2V0
cyk7CisgICAgICAgIGZyZWUocmV0LT5zdHJlYW0pOworICAgICAgICBmcmVlKHJldCk7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBmb3JlX2xhYmVscz10c2Zfc3RfaW5p
dF9wdHJ0YWJsZSgpOworICAgIGlmIChmb3JlX2xhYmVscz09TlVMTCkgeworICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2luaXRfcHRydGFibGUoKSIpOworICAgICAgICB0
c2Zfc3RfZnJlZV90YWJsZShyZXQtPnRhcmdldHMpOworICAgICAgICBmcmVlKHJldC0+c3RyZWFt
KTsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICB0c2Zfc3RfZnJlZV90YWJsZShiYWNrX2xh
YmVscyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICB3cml0ZT1yZXQt
PnN0cmVhbTsKKyAgICAKKyAgICBmb3IgKHJlYWQ9cHJvdG8tPnN0cmVhbTtyZWFkPHByb3RvLT5z
dHJlYW0rcHJvdG8tPnNpemU7KSB7CisgICAgICAgIGlmICgqcmVhZD09R1BDX0lfTEFCRUwpIHsK
KyAgICAgICAgICAgIHVpbnQzMl90IGk7CisgICAgICAgICAgICBzdHJ1Y3QgYWRkcl9hcnJheSAq
YWE7CisgICAgICAgICAgICBncGNfY2VsbF90ICp0b19kZWxldGU7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmICh0c2Zfc3RfaW5zZXJ0KGJhY2tfbGFiZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNoYXIqKXJlYWRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodm9pZCopd3JpdGUpPDApIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJD
b3VsZCBub3QgdHNmX3N0X2luc2VydCIpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdG9fZGVsZXRlID0gJnJl
YWRbMV07CisgICAgICAgICAgICBpZiAodHNmX3N0X2RlbGV0ZShmb3JlX2xhYmVscywgKGNoYXIq
Kil0b19kZWxldGUsICh2b2lkKiopJmFhKSkgeworICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8
YWEtPm51bTsrK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgKihhYS0+YWRkcnNbaV0pPShncGNf
Y2VsbF90KXdyaXRlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcmVlKGFh
LT5hZGRycyk7CisgICAgICAgICAgICAgICAgZnJlZShhYSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmICh0c2Zfc3RfaW5zZXJ0KHJldC0+dGFyZ2V0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKil3cml0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpPDApIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5v
KCJDb3VsZCBub3QgdHNmX3N0X2luc2VydCIpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbHVy
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVhZCs9MjsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQzMl90IG51bTsKKyAgICAgICAgICAgIGdw
Y19jZWxsX3QgKnByZV93cml0ZT13cml0ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbnVt
PWdwY19pbnN0cnVjdGlvbl9zaXplKHJlYWQpOworICAgICAgICAgICAgKndyaXRlKys9KnJlYWQr
KzsKKyAgICAgICAgICAgIHdoaWxlICgtLW51bT4wKSB7CisgICAgICAgICAgICAgICAgKndyaXRl
Kys9KnJlYWQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KCFncGNfaW5zdHJ1Y3Rpb25fZm9yX2FsbF9iYWNrX2JyYW5jaGVzKAorICAgICAgICAgICAgICAg
ICAgICAgcHJlX3dyaXRlLGJhY2tfYnJhbmNoX2FjdGlvbixiYWNrX2xhYmVscykpIHsKKyAgICAg
ICAgICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmICghZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxfZm9yd2FyZF9icmFuY2hlcygK
KyAgICAgICAgICAgICAgICAgICAgIHByZV93cml0ZSxmb3JlX2JyYW5jaF9hY3Rpb24sZm9yZV9s
YWJlbHMpKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmb3JlX2xhYmVscy0+bnVtX2VudHJpZXMh
PTApIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfSlVNUCwKKyAgICAgICAgICAg
ICAgICAgICAgICAiVGhlcmUgc3RpbGwgZXhpc3QgdW5mdWxmaWxsZWQgbGFiZWwgcmVmZXJlbmNl
cyIpOworICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgfQorICAgIAorICAgIHJldC0+c3RhY2tf
aGVpZ2h0cz0KKwlncGNfaW50YWJsZV9nZXRfc3RhY2tfaGVpZ2h0cyhyZXQsJihyZXQtPm1heF9o
ZWlnaHQpKTsKKyAgICBpZiAocmV0LT5zdGFja19oZWlnaHRzPT1OVUxMKSB7CisJZ290byBmYWls
dXJlOworICAgIH0KKyAgICAKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShiYWNrX2xhYmVscyk7Cisg
ICAgdHNmX3N0X2ZyZWVfdGFibGUoZm9yZV9sYWJlbHMpOworICAgIAorICAgIHJldC0+c2l6ZT13
cml0ZS1yZXQtPnN0cmVhbTsKKyAgICAKKyAgICByZXR1cm4gcmV0OworICAgIAorZmFpbHVyZToK
KyAgICB0c2Zfc3RfZnJlZV90YWJsZShyZXQtPnRhcmdldHMpOworICAgIGZyZWUocmV0LT5zdHJl
YW0pOworICAgIGZyZWUocmV0KTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShiYWNrX2xhYmVscyk7
CisgICAgdHNmX3N0X2ZvcmVhY2goZm9yZV9sYWJlbHMsKHRzZl9zdF9mdW5jX3Qpc3RfYWFfZnJl
ZSxOVUxMKTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShmb3JlX2xhYmVscyk7CisgICAgcmV0dXJu
IE5VTEw7Cit9CisKK3N0cnVjdCBjb3JyZWN0X2JyYW5jaF9jbG9zdXJlIHsKKyAgICBzaXplX3Qg
b2Zmc2V0OworICAgIHRzZl9zdF90YWJsZSAqdGFyZ2V0czsKK307CisKK3N0YXRpYyB0c2ZfYm9v
bF90IGNvcnJlY3RfYnJhbmNoKGdwY19jZWxsX3QgKmNlbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAgICBzdHJ1Y3QgY29ycmVjdF9icmFuY2hfY2xv
c3VyZSAqY2xvc3VyZT1hcmc7CisgICAgKmNlbGw9KGdwY19jZWxsX3QpKCgoZ3BjX2NlbGxfdCop
KmNlbGwpK2Nsb3N1cmUtPm9mZnNldCk7CisgICAgcmV0dXJuIHRzZl9zdF9pbnNlcnQoY2xvc3Vy
ZS0+dGFyZ2V0cywoY2hhciopY2VsbCxOVUxMKT49MDsKK30KKworZ3BjX2ludGFibGVfdCAqZ3Bj
X2ludGFibGVfY2xvbmUoZ3BjX2ludGFibGVfdCAqaW50YWJsZSkgeworICAgIGdwY19pbnRhYmxl
X3QgKnJldD1tYWxsb2Moc2l6ZW9mKGdwY19pbnRhYmxlX3QpKTsKKyAgICBncGNfY2VsbF90ICpj
dXI7CisgICAgc3RydWN0IGNvcnJlY3RfYnJhbmNoX2Nsb3N1cmUgY2xvc3VyZTsKKworICAgIGlm
IChyZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBn
cGNfaW50YWJsZV90Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBy
ZXQtPm51bV9hcmdzPWludGFibGUtPm51bV9hcmdzOworICAgIHJldC0+c2l6ZT1pbnRhYmxlLT5z
aXplOworICAgIAorICAgIHJldC0+c3RyZWFtPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkqcmV0
LT5zaXplKTsKKyAgICBpZiAocmV0LT5zdHJlYW09PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9l
cnJubygiQ291bGQgbm90IG1hbGxvYyBhcnJheSBvZiBncGNfY2VsbF90Iik7CisgICAgICAgIGZy
ZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIG1lbWNweShy
ZXQtPnN0cmVhbSxpbnRhYmxlLT5zdHJlYW0scmV0LT5zaXplKnNpemVvZihncGNfY2VsbF90KSk7
CisgICAgCisgICAgcmV0LT50YXJnZXRzPXRzZl9zdF9pbml0X3B0cnRhYmxlKCk7CisgICAgaWYg
KHJldC0+dGFyZ2V0cz09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
dHNmX3N0X2luaXRfcHRydGFibGUoKSIpOworICAgICAgICBmcmVlKHJldC0+c3RyZWFtKTsKKyAg
ICAgICAgZnJlZShyZXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAg
Y2xvc3VyZS5vZmZzZXQ9cmV0LT5zdHJlYW0taW50YWJsZS0+c3RyZWFtOworICAgIGNsb3N1cmUu
dGFyZ2V0cz1yZXQtPnRhcmdldHM7CisgICAgCisgICAgZm9yIChjdXI9cmV0LT5zdHJlYW07Cisg
ICAgICAgICBjdXI8cmV0LT5zdHJlYW0rcmV0LT5zaXplOworICAgICAgICAgY3VyKz1ncGNfaW5z
dHJ1Y3Rpb25fc2l6ZShjdXIpKSB7CisgICAgICAgIGlmICghZ3BjX2luc3RydWN0aW9uX2Zvcl9h
bGxfYnJhbmNoZXMoY3VyLGNvcnJlY3RfYnJhbmNoLCZjbG9zdXJlKSkgeworICAgICAgICAgICAg
dHNmX3NldF9lcnJubygiQ291bGQgbm90IHRzZl9zdF9pbnNlcnQiKTsKKyAgICAgICAgICAgIHRz
Zl9zdF9mcmVlX3RhYmxlKHJldC0+dGFyZ2V0cyk7CisgICAgICAgICAgICBmcmVlKHJldC0+c3Ry
ZWFtKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0LT5zdGFja19oZWlnaHRzPQorCWdwY19pbnRhYmxl
X2dldF9zdGFja19oZWlnaHRzKHJldCwmKHJldC0+bWF4X2hlaWdodCkpOworICAgIGlmIChyZXQt
PnN0YWNrX2hlaWdodHM9PU5VTEwpIHsKKwl0c2Zfc3RfZnJlZV90YWJsZShyZXQtPnRhcmdldHMp
OworCWZyZWUocmV0LT5zdHJlYW0pOworCWZyZWUocmV0KTsKKwlyZXR1cm4gTlVMTDsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCBncGNfaW50YWJsZV9kZXN0cm95KGdw
Y19pbnRhYmxlX3QgKmludGFibGUpIHsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShpbnRhYmxlLT50
YXJnZXRzKTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShpbnRhYmxlLT5zdGFja19oZWlnaHRzKTsK
KyAgICBmcmVlKGludGFibGUtPnN0cmVhbSk7CisgICAgZnJlZShpbnRhYmxlKTsKK30KKworc3Rh
dGljIHRzZl9ib29sX3QgY2Fub25pY2FsaXplX2JyYW5jaChncGNfY2VsbF90ICpjZWxsLAorCQkJ
CSAgICAgIHZvaWQgKmFyZykgeworICAgIGdwY19jZWxsX3QgKmJlZ2luPWFyZzsKKyAgICAqY2Vs
bD0oKGdwY19jZWxsX3QqKSpjZWxsKS1iZWdpbjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisK
K3RzZl9ib29sX3QgZ3BjX2ludGFibGVfd3JpdGUoZ3BjX2ludGFibGVfdCAqaW50YWJsZSwKKwkJ
CSAgICAgdHNmX3dyaXRlcl90IHdyaXRlciwKKwkJCSAgICAgdm9pZCAqYXJnKSB7CisgICAgZ3Bj
X2NlbGxfdCAqY3VyOworICAgIGZvciAoY3VyPWludGFibGUtPnN0cmVhbTsKKwkgY3VyPGludGFi
bGUtPnN0cmVhbStpbnRhYmxlLT5zaXplOworCSBjdXIrPWdwY19pbnN0cnVjdGlvbl9zaXplKGN1
cikpIHsKKwlzaXplX3Qgc2l6ZT1zaXplb2YoZ3BjX2NlbGxfdCkKKwkgICAgKiBncGNfaW5zdHJ1
Y3Rpb25fc2l6ZShjdXIpOworCWdwY19jZWxsX3QgKmJ1ZmZlcj1tYWxsb2Moc2l6ZSk7CisJdHNm
X2Jvb2xfdCByZXM7CisJaWYgKGJ1ZmZlcj09TlVMTCkgeworCSAgICB0c2Zfc2V0X2Vycm5vKCJD
b3VsZCBub3QgYWxsb2NhdGUgYnVmZmVyIik7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJfQor
CW1lbWNweShidWZmZXIsY3VyLHNpemUpOworCWdwY19pbnN0cnVjdGlvbl9mb3JfYWxsX2JyYW5j
aGVzKGJ1ZmZlciwKKwkJCQkJIGNhbm9uaWNhbGl6ZV9icmFuY2gsCisJCQkJCSBpbnRhYmxlLT5z
dHJlYW0pOworCXJlcz13cml0ZXIoYXJnLGJ1ZmZlcixzaXplKTsKKwlmcmVlKGJ1ZmZlcik7CisJ
aWYgKCFyZXMpIHsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKwl9CisgICAgfQorICAgIHJldHVy
biB0c2ZfdHJ1ZTsKK30KKworaW50cHRyX3QgZ3BjX2ludGFibGVfZ2V0X2hlaWdodChncGNfaW50
YWJsZV90ICpwcm9nLAorCQkJCWdwY19jZWxsX3QgKmFkZHJlc3MpIHsKKyAgICBpbnRwdHJfdCBy
ZXN1bHQ7CisgICAgaWYgKCF0c2Zfc3RfbG9va3VwKHByb2ctPnN0YWNrX2hlaWdodHMsCisJCSAg
ICAgICAoY2hhciopYWRkcmVzcywKKwkJICAgICAgICh2b2lkKikmcmVzdWx0KSkgeworCXJldHVy
biAtMTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmZGVmIEhBVkVfQUREUkVT
U19PRl9MQUJFTAorCit0c2ZfYm9vbF90IGdwY19pbnRhYmxlX3J1bl9zdXBwb3J0ZWQoKSB7Cisg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKK30KKwordWludHB0cl90IGdwY19pbnRhYmxlX3J1bihncGNf
aW50YWJsZV90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgKmFyZ3MpIHsKKyAgICB0c2Zf
c2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAiTm9uLXRo
cmVhZGVkIGludGVycHJldGF0aW9uIHN1cHBvcnQgd2FzIG5vdCBjb21waWxlZCBpbnRvICIKKyAg
ICAgICAgICAgICAgICAgICJ0aGUgVFNGIHBhY2thZ2UuICBUaGlzIGlzIGJlY2F1c2UgdGhlIHRo
cmVhZGVkIGludGVycHJldGVyICIKKyAgICAgICAgICAgICAgICAgICJ3YXMgY29tcGlsZWQgaW5z
dGVhZC4gIFBsZWFzZSB1c2UgdGhlIHRocmVhZGVkICIKKyAgICAgICAgICAgICAgICAgICJpbnRl
cnByZXRlci4iKTsKKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKwordHNmX2Jvb2xfdCBncGNf
aW50YWJsZV9ydW5fc3VwcG9ydGVkKCkgeworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworI2lu
Y2x1ZGUgImdwY19pbnRfY29tbW9uLmgiCisKKyNkZWZpbmUgSU5UX0JFR0lOKGluc3RfbmFtZSkg
XAorICAgIGNhc2UgR1BDXyMjaW5zdF9uYW1lOiAvKiBwcmludGYoIiVzXG4iLCNpbnN0X25hbWUp
OyAqLyArK2luc3Q7IHsKKworI2RlZmluZSBJTlRfRU5EKCkgXAorICAgIH0gZ290byBpbnRfbG9v
cDsKKworI2RlZmluZSBJTlRfQURWQU5DRShhbW91bnQpIFwKKyAgICAoaW5zdCs9KGFtb3VudCkp
CisKKyNkZWZpbmUgSU5UX0dPVE8odmFsdWUpIGRvIHsgICAgXAorICAgIHZvaWQgKnRtcD0odm9p
ZCopdmFsdWU7ICAgICBcCisgICAgaW5zdD10bXA7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBn
b3RvIGludF9sb29wOyAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKwordWludHB0cl90IGdw
Y19pbnRhYmxlX3J1bihncGNfaW50YWJsZV90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpyZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3Qg
KmFyZ3MpIHsKKyAgICBncGNfY2VsbF90ICppbnN0OworICAgIHVpbnQ4X3QgKmJ1Zj1OVUxMLAor
ICAgICAgICAgICAgKmN1cj1OVUxMLAorICAgICAgICAgICAgKmVuZD1OVUxMOworICAgIHVpbnQz
Ml90IHNpemU9MDsKKyAgICB0c2ZfYm9vbF90IGtlZXA9dHNmX2ZhbHNlOworICAgIHRzZl90eXBl
X2luX21hcF90ICp0eXBlcz1OVUxMOworICAgIAorICAgIHRzZl90eXBlX291dF9tYXBfdCAqb3V0
X21hcD1OVUxMOworICAgIAorICAgIHRzZl9ib29sX3Qga2VlcF9yZWdpb249dHNmX2ZhbHNlOwor
ICAgIAorICAgIGludDhfdCBpOF90bXA7CisgICAgdWludDhfdCB1aThfdG1wOworICAgIGludDE2
X3QgaTE2X3RtcDsKKyAgICB1aW50MTZfdCB1aTE2X3RtcDsKKyAgICBpbnQzMl90IGkzMl90bXA7
CisgICAgdWludDMyX3QgdWkzMl90bXA7CisgICAgaW50NjRfdCBpNjRfdG1wOworICAgIHVpbnQ2
NF90IHVpNjRfdG1wOworICAgIGZsb2F0IGZfdG1wOworICAgIGZsb2F0IGRfdG1wOworICAgIAor
ICAgIGdwY19jZWxsX3QgKnN0YWNrOworICAgIGdwY19jZWxsX3QgKnN0YWNrX3RvcDsKKyAgICAK
KyAgICB1aW50MzJfdCBpOworCisgICAgc3RhY2s9YWxsb2NhKHNpemVvZihncGNfY2VsbF90KSpw
cm9nLT5tYXhfaGVpZ2h0KTsKKyAgICBpZiAoc3RhY2s9PU5VTEwpIHsKKyAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IGFsbG9jYXRlIHN0YWNrIik7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICAKKyAgICBzdGFja190b3A9c3RhY2stMTsKKyAgICAKKyAgICBmb3IgKGk9MDtp
PHByb2ctPm51bV9hcmdzOysraSkgeworICAgICAgICBJTlRfUFVTSCgpOworICAgICAgICBJTlRf
U1RBQ0soMCk9YXJnc1tpXTsKKyAgICB9CisgICAgCisgICAgSU5UX0dPVE8ocHJvZy0+c3RyZWFt
KTsKKworaW50X2xvb3A6CisgICAgc3dpdGNoICgqaW5zdCkgeworI2luY2x1ZGUgImdwY19pbnRl
cnByZXRlci5nZW4iCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2ZfYWJvcnQoIkJh
ZCBpbnN0cnVjdGlvbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCitib3VuZHNfZXJy
b3I6CisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwiQm91bmRzIGNoZWNrIGZh
aWx1cmUiKTsKKworZmFpbHVyZToKKyAgICAvKiBlcnJvciEgKi8KKyAgICBpZiAoa2VlcCkgewor
ICAgICAgICBmcmVlKGJ1Zik7CisgICAgfQorICAgIGlmIChrZWVwX3JlZ2lvbikgeworICAgICAg
ICB0c2ZfcmVnaW9uX2ZyZWUocmVnaW9uKTsKKyAgICB9CisgICAgaWYgKG91dF9tYXAhPU5VTEwp
IHsKKyAgICAgICAgdHNmX3R5cGVfb3V0X21hcF9kZXN0cm95KG91dF9tYXApOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKworI2VuZGlmCisKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvZ3BjX2ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19pbnRlcm5hbC5oCShub25leGlzdGVudCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGUF9HUENf
SU5URVJOQUxfSAorI2RlZmluZSBGUF9HUENfSU5URVJOQUxfSAorCisjaW5jbHVkZSAidHNmX2lu
dGVybmFsLmgiCisjaW5jbHVkZSAiZ3BjLmgiCisKKy8qIHN0dXBpZCBzdHVmZiAqLwordm9pZCBn
cGNfdW5saW5rX2ZyZWUoY2hhciAqbmFtZSk7Cit2b2lkIGdwY19ybWRpcl9mcmVlKGNoYXIgKm5h
bWUpOwordm9pZCBncGNfcm1kYXNocmZfZnJlZShjaGFyICpuYW1lKTsKKworLyogZGVidWdnaW5n
IHN0dWZmICovCit2b2lkIGdwY19keW5jY19jb2RlX2dlbl9kZWJ1Zyhjb25zdCBjaGFyICp0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjX2ZpbGVuYW1l
KTsKKworLyogZmlndXJlIG91dCB0aGUgc3RhY2sgaGVpZ2h0IGZvciBlYWNoIGNlbGwgaW5zaWRl
IG9mIGFuIGludGFibGUuCisgKiBhbHNvIGdpdmVzIHlvdSB0aGUgbWF4aW11bSBzdGFjayBoZWln
aHQuICByZXR1cm5zIGEgaGFzaHRhYmxlCisgKiB0aGF0IG1hcHMgdGhlIGluc3RydWN0aW9uIGNl
bGwgYWRkcmVzcyB0byB0aGUgc3RhY2sgaGVpZ2h0LgorICogdGhlIG1heCBzdGFjayBoZWlnaHQg
aXMgc3RvcmVkIGluICptYXhfaGVpZ2h0IGlmIG1heF9oZWlnaHQhPU5VTEwuCisgKiBhbHNvIG5v
dGUgdGhhdCB0aGUgc3RhY2sgaGVpZ2h0IGF0IGEgY2VsbCBpcyB0aGUgaGVpZ2h0IHRoYXQgdGhl
CisgKiBzdGFjayB3b3VsZCBoYXZlIGhhZCB3aGVuIHlvdSB3ZXJlIGVudGVyaW5nIGludG8gdGhh
dCBpbnN0cnVjdGlvbiwKKyAqIG5vdCBleGl0aW5nIGl0LgorICoKKyAqIE5PVEU6IHdlIHJlcHJl
c2VudCBoZWlnaHRzIHVzaW5nIGludHB0cl90IGJlY2F1c2U6CisgKiAxKSB3ZSBuZWVkIHNpZ25l
ZCwgc2luY2Ugc3RhY2sgZWZmZWN0cyBjYW4gYmUgbmVnYXRpdmUsIGFuZAorICogMikgd2UgbmVl
ZCBpdCB0byBiZSBwb2ludGVyLXNpemUsIHNpbmNlIHdlIHVzZSBpdCBhcyBhIHZhbHVlIHRvIHRo
ZQorICogICAgaGFzaHRhYmxlLCBhbmQgaGFzaHRhYmxlIHZhbHVlcyBhcmUgdm9pZCouICovCit0
c2Zfc3RfdGFibGUgKmdwY19pbnRhYmxlX2dldF9zdGFja19oZWlnaHRzKGdwY19pbnRhYmxlX3Qg
KnByb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0
cl90ICptYXhfaGVpZ2h0KTsKKworLyogY29kZSBnZW5lcmF0aW9uIHRoaW5naWVzICovCisjZGVm
aW5lIGdwY19yZWFkX2JpdHZlY3Rvcl90b19hcnJheShuYnl0ZXMpIFwKKyAgICB1aW50MzJfdCBs
ZW47XAorICAgIHVpbnQzMl90IHNpemU7XAorICAgIHVpbnQzMl90IGk7XAorICAgIFwKKyAgICBj
b3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCxjdXIsZW5kLGJvdW5kc19lcnJvcik7XAorICAg
IGlmICh1aThfdG1wPT0yNTUpIHtcCisgICAgICAgIGNvcHlfbnRvaGxfaW5jc3JjX2JjKCh1aW50
OF90KikmbGVuLGN1cixcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCxib3VuZHNf
ZXJyb3IpO1wKKyAgICB9IGVsc2Uge1wKKyAgICAgICAgbGVuID0gdWk4X3RtcDtcCisgICAgfVwK
KyAgICBcCisgICAgYXJyYXktPmxlbj1sZW47XAorICAgIHNpemU9KChsZW4rNyk+PjMpO1wKKyAg
ICBcCisgICAgaWYgKGN1ciArIHNpemUgPiBlbmQpIHtcCisgICAgICAgIGdvdG8gYm91bmRzX2Vy
cm9yO1wKKyAgICB9XAorICAgIFwKKyAgICBhcnJheS0+ZGF0YT10c2ZfcmVnaW9uX2FsbG9jKHJl
Z2lvbixsZW4qbmJ5dGVzKTtcCisgICAgaWYgKGFycmF5LT5kYXRhPT1OVUxMKSB7XAorICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3JlZ2lvbl9hbGxvYygpIik7XAorICAgICAg
ICBJTlRfRkFJTFVSRSgpO1wKKyAgICB9XAorICAgIFwKKyAgICBmb3IgKGk9NztpPGxlbjtpKz04
KSB7XAorICAgICAgICB1aW50OF90IGJpdHM9KmN1cjtcCisgICAgICAgIGFycmF5LT5kYXRhW2kt
N109KChiaXRzPj4wKSYxKTtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktNl09KChiaXRzPj4xKSYx
KTtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktNV09KChiaXRzPj4yKSYxKTtcCisgICAgICAgIGFy
cmF5LT5kYXRhW2ktNF09KChiaXRzPj4zKSYxKTtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktM109
KChiaXRzPj40KSYxKTtcCisgICAgICAgIGFycmF5LT5kYXRhW2ktMl09KChiaXRzPj41KSYxKTtc
CisgICAgICAgIGFycmF5LT5kYXRhW2ktMV09KChiaXRzPj42KSYxKTtcCisgICAgICAgIGFycmF5
LT5kYXRhW2ktMF09KChiaXRzPj43KSYxKTtcCisgICAgICAgIGN1cisrO1wKKyAgICB9XAorICAg
IGk9bGVuJn43O1wKKyAgICBpZiAoaTxsZW4pIHtcCisgICAgICAgIHVpbnQ4X3QgYml0cz0qY3Vy
O1wKKyAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+PjApJjEpO1wKKyAgICAgICAgaWYg
KGk8bGVuKSB7XAorICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+PjEpJjEpO1wK
KyAgICAgICAgICAgIGlmIChpPGxlbikge1wKKyAgICAgICAgICAgICAgICBhcnJheS0+ZGF0YVtp
KytdPSgoYml0cz4+MikmMSk7XAorICAgICAgICAgICAgICAgIGlmIChpPGxlbikge1wKKyAgICAg
ICAgICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+PjMpJjEpO1wKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGk8bGVuKSB7XAorICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkt
PmRhdGFbaSsrXT0oKGJpdHM+PjQpJjEpO1wKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
PGxlbikge1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS0+ZGF0YVtpKytdPSgo
Yml0cz4+NSkmMSk7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpPGxlbikge1wK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJpdHM+
PjYpJjEpO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk8bGVuKSB7XAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPmRhdGFbaSsrXT0oKGJp
dHM+PjcpJjEpO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9XAorICAgICAgICAgICAgICAgICAgICAgICAgfVwKKyAgICAg
ICAgICAgICAgICAgICAgfVwKKyAgICAgICAgICAgICAgICB9XAorICAgICAgICAgICAgfVwKKyAg
ICAgICAgfVwKKyAgICAgICAgY3VyKys7XAorICAgIH0KKworI2RlZmluZSBncGNfcmVhZF9hcnJh
eV90b19iaXR2ZWN0b3Ioa2NvZGUsdG1wbmFtZSxuYml0Ynl0ZXMpIFwKKyAgICB1aW50MzJfdCBz
aXplO1wKKyAgICB1aW50MzJfdCBsZW47XAorICAgIHVpbnQ4X3QgKmJ2Y3VyO1wKKyAgICB1aW50
MzJfdCBuYnl0ZXM7XAorICAgIHVpbnQzMl90IG92ZXJmbG93O1wKKyAgICB1aW50MzJfdCBpO1wK
KyAgICBcCisgICAgY29weV9udG9oY19pbmNzcmNfYmMoJnVpOF90bXAsY3VyLGVuZCxib3VuZHNf
ZXJyb3IpO1wKKyAgICBpZiAodWk4X3RtcD09MjU1KSB7XAorICAgICAgICBjb3B5X250b2hsX2lu
Y3NyY19iYygodWludDhfdCopJmJpdHZlY3Rvci0+bnVtX2JpdHMsY3VyLFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kLGJvdW5kc19lcnJvcik7XAorICAgIH0gZWxzZSB7XAorICAg
ICAgICBiaXR2ZWN0b3ItPm51bV9iaXRzID0gdWk4X3RtcDtcCisgICAgfVwKKyAgICBcCisgICAg
bGVuPWJpdHZlY3Rvci0+bnVtX2JpdHM7XAorICAgIHNpemU9KChiaXR2ZWN0b3ItPm51bV9iaXRz
ICsgNyk+PjMpO1wKKyAgICBcCisgICAgaWYgKGN1ciArIGxlbipuYml0Ynl0ZXMgPiBlbmQpIHtc
CisgICAgICAgIGdvdG8gYm91bmRzX2Vycm9yO1wKKyAgICB9XAorICAgIFwKKyAgICBiaXR2ZWN0
b3ItPmJpdHM9dHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sc2l6ZSk7XAorICAgIGlmIChiaXR2ZWN0
b3ItPmJpdHM9PU5VTEwpIHtcCisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2Zf
cmVnaW9uX2FsbG9jKCkiKTtcCisgICAgICAgIElOVF9GQUlMVVJFKCk7XAorICAgIH1cCisgICAg
XAorICAgIGJ2Y3VyPWJpdHZlY3Rvci0+Yml0cztcCisgICAgbmJ5dGVzPWxlbj4+MztcCisgICAg
XAorICAgIHdoaWxlIChuYnl0ZXMtLT4wKSB7XAorICAgICAgICB1aW50OF90IGJpdHM9MDtcCisg
ICAgICAgIGZvciAoaT0wO2k8ODsrK2kpIHtcCisgICAgICAgICAgICBjb3B5X250b2gjI2tjb2Rl
IyNfaW5jc3JjKCh1aW50OF90KikmdG1wbmFtZSxjdXIpO1wKKyAgICAgICAgICAgIGlmICh0bXBu
YW1lKSBiaXRzfD0oMTw8aSk7XAorICAgICAgICB9XAorICAgICAgICAqYnZjdXIrKz1iaXRzO1wK
KyAgICB9XAorICAgIG92ZXJmbG93PWxlbiY3O1wKKyAgICBpZiAobGVuPjApIHtcCisgICAgICAg
IHVpbnQ4X3QgYml0cz0wO1wKKyAgICAgICAgZm9yIChpPTA7aTxsZW47KytpKSB7XAorICAgICAg
ICAgICAgY29weV9udG9oIyNrY29kZSMjX2luY3NyYygodWludDhfdCopJnRtcG5hbWUsY3VyKTtc
CisgICAgICAgICAgICBpZiAodG1wbmFtZSkgYml0c3w9KDE8PGkpO1wKKyAgICAgICAgfVwKKyAg
ICAgICAgKmJ2Y3VyPWJpdHM7XAorICAgIH0KKworI2RlZmluZSBncGNfcmVhZF9pbnRlZ2VyX2Fy
cmF5X3RvX2JpdHZlY3RvcihpbnRlZ2VyX3R5cGUpIFwKKyAgICB1aW50MzJfdCBsZW4sIGk7XAor
ICAgIFwKKyAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCwgY3VyLCBlbmQsIGJvdW5k
c19lcnJvcik7XAorICAgIGlmICh1aThfdG1wID09IDI1NSkge1wKKyAgICAgICAgY29weV9udG9o
bF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZiaXR2ZWN0b3ItPm51bV9iaXRzLCBjdXIsXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmQsIGJvdW5kc19lcnJvcik7XAorICAgIH0gZWxzZSB7
XAorICAgICAgICBiaXR2ZWN0b3ItPm51bV9iaXRzID0gdWk4X3RtcDtcCisgICAgfVwKKyAgICBc
CisgICAgbGVuID0gYml0dmVjdG9yLT5udW1fYml0cztcCisgICAgXAorICAgIGJpdHZlY3Rvci0+
Yml0cyA9IHRzZl9yZWdpb25fYWxsb2MocmVnaW9uLCAobGVuICsgNykgPj4gMyk7XAorICAgIGlm
IChiaXR2ZWN0b3ItPmJpdHMgPT0gTlVMTCkge1wKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IHRzZl9yZWdpb25fYWxsb2MoKSIpO1wKKyAgICAgICAgSU5UX0ZBSUxVUkUoKTtcCisg
ICAgfVwKKyAgICBcCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XAorICAgICAgICB0
c2ZfIyNpbnRlZ2VyX3R5cGUjI190IGludGVnZXI7XAorICAgICAgICByZWFkX3RzZl8jI2ludGVn
ZXJfdHlwZSMjX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7XAorICAg
ICAgICBpZiAoaW50ZWdlcikge1wKKyAgICAgICAgICAgIGJpdHZlY3Rvci0+Yml0c1tpID4+IDNd
IHw9ICgxIDw8IChpICYgNykpO1wKKyAgICAgICAgfSBlbHNlIHtcCisgICAgICAgICAgICBiaXR2
ZWN0b3ItPmJpdHNbaSA+PiAzXSAmPSB+KDEgPDwgKGkgJiA3KSk7XAorICAgICAgICB9XAorICAg
IH0KKworI2RlZmluZSBncGNfY29weV9hcnJheV90b19iaXR2ZWN0b3IoKSBcCisgICAgdWludDhf
dCAqZGVzdF9jdXI7XAorICAgIHVpbnQzMl90IGksajtcCisgICAgdWludDhfdCBjdXJfYml0cztc
CisgICAgXAorICAgIGRlc3QtPm51bV9iaXRzPXNyYy0+bGVuO1wKKyAgICBcCisgICAgZGVzdC0+
Yml0cz10c2ZfcmVnaW9uX2FsbG9jKHJlZ2lvbiwoZGVzdC0+bnVtX2JpdHMrNyk+PjMpO1wKKyAg
ICBpZiAoZGVzdC0+Yml0cz09TlVMTCkge1wKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IGFsbG9jYXRlIGJpdHZlY3RvciBmcm9tIHJlZ2lvbiIpO1wKKyAgICAgICAgSU5UX0ZBSUxV
UkUoKTtcCisgICAgfVwKKyAgICBcCisgICAgZGVzdF9jdXI9ZGVzdC0+Yml0cztcCisgICAgc3Jj
X2N1cj1zcmMtPmRhdGE7XAorICAgIGZvciAoaT1kZXN0LT5udW1fYml0cz4+MztpLS0+MDspIHtc
CisgICAgICAgIGN1cl9iaXRzPTA7XAorICAgICAgICBmb3IgKGo9MDtqPDg7KytqKSB7XAorICAg
ICAgICAgICAgaWYgKCpzcmNfY3VyKyspIHtcCisgICAgICAgICAgICAgICAgY3VyX2JpdHN8PSgx
PDxqKTtcCisgICAgICAgICAgICB9XAorICAgICAgICB9XAorICAgICAgICAqZGVzdF9jdXIrKz1j
dXJfYml0cztcCisgICAgfVwKKyAgICBpZiAoKGRlc3QtPm51bV9iaXRzJn43KTxkZXN0LT5udW1f
Yml0cykge1wKKyAgICAgICAgY3VyX2JpdHM9MDtcCisgICAgICAgIGZvciAoaT0oZGVzdC0+bnVt
X2JpdHMmfjcpLGo9MDtpPGRlc3QtPm51bV9iaXRzOysraSwrK2opIHtcCisgICAgICAgICAgICBp
ZiAoKnNyY19jdXIrKykge1wKKyAgICAgICAgICAgICAgICBjdXJfYml0c3w9KDE8PGopO1wKKyAg
ICAgICAgICAgIH1cCisgICAgICAgIH1cCisgICAgICAgICpkZXN0X2N1cj1jdXJfYml0cztcCisg
ICAgfQorCisjZGVmaW5lIGdwY19jb3B5X2JpdHZlY3Rvcl90b19hcnJheShuYml0Ynl0ZXMpIFwK
KyAgICBcCisgICAgdWludDMyX3QgaTtcCisgICAgdWludDMyX3QgbjtcCisgICAgdWludDhfdCBi
aXRzO1wKKyAgICBcCisgICAgZGVzdC0+bGVuPXNyYy0+bnVtX2JpdHM7XAorICAgIGRlc3QtPmRh
dGE9dHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sZGVzdC0+bGVuKm5iaXRieXRlcyk7XAorICAgIGlm
IChkZXN0LT5kYXRhPT1OVUxMKSB7XAorICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qg
YWxsb2NhdGUgYXJyYXkiKTtcCisgICAgICAgIElOVF9GQUlMVVJFKCk7XAorICAgIH1cCisgICAg
XAorICAgIGRlc3RfY3VyPWRlc3QtPmRhdGE7XAorICAgIFwKKyAgICBuPWRlc3QtPmxlbj4+Mztc
CisgICAgZm9yIChpPTA7aTxuOysraSkge1wKKyAgICAgICAgYml0cz1zcmMtPmJpdHNbaV07XAor
ICAgICAgICAqZGVzdF9jdXIrKz0oKGJpdHM+PjApJjEpO1wKKyAgICAgICAgKmRlc3RfY3VyKys9
KChiaXRzPj4xKSYxKTtcCisgICAgICAgICpkZXN0X2N1cisrPSgoYml0cz4+MikmMSk7XAorICAg
ICAgICAqZGVzdF9jdXIrKz0oKGJpdHM+PjMpJjEpO1wKKyAgICAgICAgKmRlc3RfY3VyKys9KChi
aXRzPj40KSYxKTtcCisgICAgICAgICpkZXN0X2N1cisrPSgoYml0cz4+NSkmMSk7XAorICAgICAg
ICAqZGVzdF9jdXIrKz0oKGJpdHM+PjYpJjEpO1wKKyAgICAgICAgKmRlc3RfY3VyKys9KChiaXRz
Pj43KSYxKTtcCisgICAgfVwKKyAgICBpZiAoKGRlc3QtPmxlbiZ+Nyk8ZGVzdC0+bGVuKSB7XAor
ICAgICAgICBiaXRzPXNyYy0+Yml0c1soZGVzdC0+bGVuLTEpPj4zXTtcCisgICAgICAgIGZvciAo
aT0oZGVzdC0+bGVuJn43KTtpPGRlc3QtPmxlbjsrK2kpIHtcCisgICAgICAgICAgICAqZGVzdF9j
dXIrKz1iaXRzJjE7XAorICAgICAgICAgICAgYml0cz4+PTE7XAorICAgICAgICB9XAorICAgIH0K
KworI2VuZGlmCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9n
cGNfaW50ZXJwcmV0ZXIuZ2VuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi9ncGNfaW50ZXJwcmV0ZXIuZ2VuCShub25leGlzdGVudCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfaW50ZXJwcmV0ZXIuZ2VuCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMxNCBAQAorLyogZ2VuZXJhdGVkIGJ5IGdwY19nZW4ucmIg
Ki8KKyNkZWZpbmUgSU5UX1NUUkVBTV9HT1RPKGFyZykgSU5UX0dPVE8oSU5UX1NUUkVBTShhcmcp
KQorSU5UX0JFR0lOKElfTk9QKQorICAgIHsKKyNsaW5lIDQ1ICJncGNfc3BlYy5pbiIKKyNsaW5l
IDggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9MQUJFTCkKKyAgICB7CisjbGluZSA0OSAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHRzZl9mX2Fib3J0KCJVbmNvbnZlcnRlZCBsYWJlbC4iKTsKKyNsaW5lIDE2ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQ09QWV9IVE9OQ19JTkNEU1QpCisgICAgeworI2xpbmUgNTQgImdwY19z
cGVjLmluIgorICAgICAgICBjb3B5X2h0b25jX2luY2RzdChjdXIsSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpOworI2xpbmUgMjQgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0hUT05TX0lO
Q0RTVCkKKyAgICB7CisjbGluZSA1OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfaHRvbnNf
aW5jZHN0KGN1cixJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisjbGluZSAzMiAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfSFRPTkxfSU5DRFNUKQorICAgIHsKKyNsaW5lIDY0ICJncGNf
c3BlYy5pbiIKKyAgICAgICAgY29weV9odG9ubF9pbmNkc3QoY3VyLElOVF9TVEFDS19QVFIoMCkg
KyBJTlRfU1RSRUFNKDApKTsKKyNsaW5lIDQwICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9IVE9OTExf
SU5DRFNUKQorICAgIHsKKyNsaW5lIDY5ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9odG9u
bGxfaW5jZHN0KGN1cixJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisjbGluZSA0
OCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfSFRPTkZfSU5DRFNUKQorICAgIHsKKyNsaW5lIDc0ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9odG9uZl9pbmNkc3QoY3VyLElOVF9TVEFDS19QVFIo
MCkgKyBJTlRfU1RSRUFNKDApKTsKKyNsaW5lIDU2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9IVE9O
RF9JTkNEU1QpCisgICAgeworI2xpbmUgNzkgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X2h0
b25kX2luY2RzdChjdXIsSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworI2xpbmUg
NjQgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0hUT05DSE9JQ0VfVE9fVUk4X0lOQ0RTVCkKKyAgICB7
CisjbGluZSA4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIC8qIGhlcmUsIHdlJ3JlIHJlYWxseSBq
dXN0IG1hc2tpbmcgb2ZmIHRoZSBoaWdoLW9yZGVyIDI0IGJpdHMuICovCisgICAgICAgIHVpMzJf
dG1wPSooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKTsKKyAg
ICAgICAgaWYgKHVpMzJfdG1wPT1VSU5UMzJfTUFYKSB7CisgICAgICAgICAgICB1aThfdG1wPTI1
NTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpOF90bXA9dWkzMl90bXA7CisgICAg
ICAgIH0KKyAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyNsaW5lIDc5
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDKQorICAgIHsKKyNsaW5l
IDk2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoJnVpOF90bXAsY3Vy
KTsKKyAgICAgICAgKih0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0o
MCkpPSh1aThfdG1wIT0wKTsKKyNsaW5lIDg4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19J
TkNTUkMpCisgICAgeworI2xpbmUgMTAyICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9o
Y19pbmNzcmMoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCksY3VyKTsKKyNsaW5lIDk2
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19UT19TX1pfSU5DU1JDKQorICAgIHsKKyNsaW5l
IDEwNyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjKCh1aW50OF90Kikm
dWk4X3RtcCxjdXIpOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJ
TlRfU1RSRUFNKDApKSk9dWk4X3RtcDsKKyNsaW5lIDEwNSAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
TlRPSENfVE9fU19FX0lOQ1NSQykKKyAgICB7CisjbGluZSAxMTMgImdwY19zcGVjLmluIgorICAg
ICAgICBjb3B5X250b2hjX2luY3NyYygodWludDhfdCopJmk4X3RtcCxjdXIpOworICAgICAgICAq
KChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT1pOF90bXA7Cisj
bGluZSAxMTQgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEp
OworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hDX1RPX0xfWl9JTkNTUkMpCisgICAg
eworI2xpbmUgMTE5ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoKHVp
bnQ4X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BU
UigwKSArIElOVF9TVFJFQU0oMCkpKT11aThfdG1wOworI2xpbmUgMTIzICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9OVE9IQ19UT19MX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDEyNSAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjKCh1aW50OF90KikmaThfdG1wLGN1cik7Cisg
ICAgICAgICooKGludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPWk4
X3RtcDsKKyNsaW5lIDEzMiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSENfVE9fTExfWl9JTkNT
UkMpCisgICAgeworI2xpbmUgMTMxICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19p
bmNzcmMoKHVpbnQ4X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ2NF90KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aThfdG1wOworI2xpbmUgMTQxICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfQ09QWV9OVE9IQ19UT19MTF9FX0lOQ1NSQykKKyAgICB7CisjbGluZSAxMzcg
ImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygodWludDhfdCopJmk4X3Rt
cCxjdXIpOworICAgICAgICAqKChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMCkpKT1pOF90bXA7CisjbGluZSAxNTAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hDX1RP
X0ZfWl9JTkNTUkMpCisgICAgeworI2xpbmUgMTQzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29w
eV9udG9oY19pbmNzcmMoKHVpbnQ4X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKGZsb2F0
KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aThfdG1wOworI2xpbmUgMTU5
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IQ19UT19GX0VfSU5DU1JDKQorICAgIHsKKyNsaW5l
IDE0OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjKCh1aW50OF90Kikm
aThfdG1wLGN1cik7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMCkpKT1pOF90bXA7CisjbGluZSAxNjggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hD
X1RPX0RfWl9JTkNTUkMpCisgICAgeworI2xpbmUgMTU1ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
Y29weV9udG9oY19pbmNzcmMoKHVpbnQ4X3QqKSZ1aThfdG1wLGN1cik7CisgICAgICAgICooKGRv
dWJsZSopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9dWk4X3RtcDsKKyNsaW5l
IDE3NyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSENfVE9fRF9FX0lOQ1NSQykKKyAgICB7Cisj
bGluZSAxNjEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygodWludDhf
dCopJmk4X3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSkpPWk4X3RtcDsKKyNsaW5lIDE4NiAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
TlRPSFNfVE9fQklUX0lOQ1NSQykKKyAgICB7CisjbGluZSAxNjcgImdwY19zcGVjLmluIgorICAg
ICAgICBjb3B5X250b2hzX2luY3NyYygodWludDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAg
ICoodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKT0odWkxNl90
bXAhPTApOworI2xpbmUgMTk1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IU19UT19DX0lOQ1NS
QykKKyAgICB7CisjbGluZSAxNzMgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hzX2lu
Y3NyYygodWludDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3QqKShJTlRf
U1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPSh1aW50OF90KXVpMTZfdG1wOworI2xpbmUg
MjA0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IU19JTkNTUkMpCisgICAgeworI2xpbmUgMTc5
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oc19pbmNzcmMoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMCksY3VyKTsKKyNsaW5lIDIxMiAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
TlRPSFNfVE9fTF9aX0lOQ1NSQykKKyAgICB7CisjbGluZSAxODQgImdwY19zcGVjLmluIgorICAg
ICAgICBjb3B5X250b2hzX2luY3NyYygodWludDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAg
ICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTE2X3Rt
cDsKKyNsaW5lIDIyMSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSFNfVE9fTF9FX0lOQ1NSQykK
KyAgICB7CisjbGluZSAxOTAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hzX2luY3Ny
YygodWludDhfdCopJmkxNl90bXAsY3VyKTsKKyAgICAgICAgKigoaW50MzJfdCopKElOVF9TVEFD
S19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9aTE2X3RtcDsKKyNsaW5lIDIzMCAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX0NPUFlfTlRPSFNfVE9fTExfWl9JTkNTUkMpCisgICAgeworI2xpbmUgMTk2ICJncGNf
c3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oc19pbmNzcmMoKHVpbnQ4X3QqKSZ1aTE2X3RtcCxj
dXIpOworICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFN
KDApKSk9dWkxNl90bXA7CisjbGluZSAyMzkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hTX1RP
X0xMX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDIwMiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNv
cHlfbnRvaHNfaW5jc3JjKCh1aW50OF90KikmaTE2X3RtcCxjdXIpOworICAgICAgICAqKChpbnQ2
NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT1pMTZfdG1wOworI2xpbmUg
MjQ4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IU19UT19GX1pfSU5DU1JDKQorICAgIHsKKyNs
aW5lIDIwOCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaHNfaW5jc3JjKCh1aW50OF90
KikmdWkxNl90bXAsY3VyKTsKKyAgICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSkpPXVpMTZfdG1wOworI2xpbmUgMjU3ICJncGNfaW50ZXJwcmV0ZXIuZ2Vu
IgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09Q
WV9OVE9IU19UT19GX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDIxNCAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIGNvcHlfbnRvaHNfaW5jc3JjKCh1aW50OF90KikmaTE2X3RtcCxjdXIpOworICAgICAg
ICAqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9aTE2X3RtcDsK
KyNsaW5lIDI2NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
MSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSFNfVE9fRF9aX0lOQ1NSQykKKyAg
ICB7CisjbGluZSAyMjAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hzX2luY3NyYygo
dWludDhfdCopJnVpMTZfdG1wLGN1cik7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19Q
VFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9dWkxNl90bXA7CisjbGluZSAyNzUgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVH
SU4oSV9DT1BZX05UT0hTX1RPX0RfRV9JTkNTUkMpCisgICAgeworI2xpbmUgMjI2ICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgY29weV9udG9oc19pbmNzcmMoKHVpbnQ4X3QqKSZpMTZfdG1wLGN1cik7
CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9
aTE2X3RtcDsKKyNsaW5lIDI4NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExfVE9fQklUX0lO
Q1NSQykKKyAgICB7CisjbGluZSAyMzIgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hs
X2luY3NyYygodWludDhfdCopJnVpMzJfdG1wLGN1cik7CisgICAgICAgICoodHNmX2Jvb2xfdCop
KElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKT0odWkzMl90bXAhPTApOworI2xpbmUg
MjkzICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITF9UT19DX0lOQ1NSQykKKyAgICB7CisjbGlu
ZSAyMzggImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWludDhfdCop
JnVpMzJfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSkpPSh1aW50OF90KXVpMzJfdG1wOworI2xpbmUgMzAyICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQ09QWV9OVE9ITF9UT19TX0lOQ1NSQykKKyAgICB7CisjbGluZSAyNDQgImdwY19zcGVj
LmluIgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWludDhfdCopJnVpMzJfdG1wLGN1cik7
CisgICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkp
KT0odWludDE2X3QpdWkzMl90bXA7CisjbGluZSAzMTEgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05U
T0hMX0lOQ1NSQykKKyAgICB7CisjbGluZSAyNTAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5
X250b2hsX2luY3NyYyhJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSxjdXIpOworI2xp
bmUgMzE5ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITF9UT19MTF9aX0lOQ1NSQykKKyAgICB7
CisjbGluZSAyNTUgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWlu
dDhfdCopJnVpMzJfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BU
UigwKSArIElOVF9TVFJFQU0oMCkpKT11aTMyX3RtcDsKKyNsaW5lIDMyOCAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfTlRPSExfVE9fTExfRV9JTkNTUkMpCisgICAgeworI2xpbmUgMjYxICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgY29weV9udG9obF9pbmNzcmMoKHVpbnQ4X3QqKSZpMzJfdG1wLGN1cik7
CisgICAgICAgICooKGludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkp
PWkzMl90bXA7CisjbGluZSAzMzcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hMX1RPX0ZfWl9J
TkNTUkMpCisgICAgeworI2xpbmUgMjY3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9o
bF9pbmNzcmMoKHVpbnQ4X3QqKSZ1aTMyX3RtcCxjdXIpOworICAgICAgICAqKChmbG9hdCopKElO
VF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9dWkzMl90bXA7CisjbGluZSAzNDYgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9DT1BZX05UT0hMX1RPX0ZfRV9JTkNTUkMpCisgICAgeworI2xpbmUgMjcz
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obF9pbmNzcmMoKHVpbnQ4X3QqKSZpMzJf
dG1wLGN1cik7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMCkpKT1pMzJfdG1wOworI2xpbmUgMzU1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITF9U
T19EX1pfSU5DU1JDKQorICAgIHsKKyNsaW5lIDI3OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNv
cHlfbnRvaGxfaW5jc3JjKCh1aW50OF90KikmdWkzMl90bXAsY3VyKTsKKyAgICAgICAgKigoZG91
YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTMyX3RtcDsKKyNsaW5l
IDM2NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExfVE9fRF9FX0lOQ1NSQykKKyAgICB7Cisj
bGluZSAyODUgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hsX2luY3NyYygodWludDhf
dCopJmkzMl90bXAsY3VyKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpKT1pMzJfdG1wOworI2xpbmUgMzczICJncGNfaW50ZXJwcmV0ZXIuZ2Vu
IgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09Q
WV9OVE9ITExfVE9fQklUX0lOQ1NSQykKKyAgICB7CisjbGluZSAyOTEgImdwY19zcGVjLmluIgor
ICAgICAgICBjb3B5X250b2hsbF9pbmNzcmMoKHVpbnQ4X3QqKSZ1aTY0X3RtcCxjdXIpOworICAg
ICAgICAqKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk9KHVp
NjRfdG1wIT0wKTsKKyNsaW5lIDM4MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0Nf
SU5DU1JDKQorICAgIHsKKyNsaW5lIDI5NyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRv
aGxsX2luY3NyYygodWludDhfdCopJnVpNjRfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPSh1aW50OF90KXVpNjRfdG1wOwor
I2xpbmUgMzkxICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgx
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9ITExfVE9fU19JTkNTUkMpCisgICAg
eworI2xpbmUgMzAzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obGxfaW5jc3JjKCh1
aW50OF90KikmdWk2NF90bXAsY3VyKTsKKyAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tf
UFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPSh1aW50MTZfdCl1aTY0X3RtcDsKKyNsaW5lIDQwMCAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0xfSU5DU1JDKQorICAgIHsKKyNsaW5lIDMw
OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGxsX2luY3NyYygodWludDhfdCopJnVp
NjRfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpKT0odWludDMyX3QpdWk2NF90bXA7CisjbGluZSA0MDkgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVH
SU4oSV9DT1BZX05UT0hMTF9JTkNTUkMpCisgICAgeworI2xpbmUgMzE1ICJncGNfc3BlYy5pbiIK
KyAgICAgICAgY29weV9udG9obGxfaW5jc3JjKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFN
KDApLGN1cik7CisjbGluZSA0MTcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hMTF9UT19GX1pf
SU5DU1JDKQorICAgIHsKKyNsaW5lIDMyMCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRv
aGxsX2luY3NyYygodWludDhfdCopJnVpNjRfdG1wLGN1cik7CisgICAgICAgICooKGZsb2F0Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTY0X3RtcDsKKyNsaW5lIDQyNiAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0ZfRV9JTkNTUkMpCisgICAgeworI2xpbmUg
MzI2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obGxfaW5jc3JjKCh1aW50OF90Kikm
aTY0X3RtcCxjdXIpOworICAgICAgICAqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKSk9aTY0X3RtcDsKKyNsaW5lIDQzNSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRP
SExMX1RPX0RfWl9JTkNTUkMpCisgICAgeworI2xpbmUgMzMyICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgY29weV9udG9obGxfaW5jc3JjKCh1aW50OF90KikmdWk2NF90bXAsY3VyKTsKKyAgICAgICAg
KigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT11aTY0X3RtcDsK
KyNsaW5lIDQ0NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
MSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSExMX1RPX0RfRV9JTkNTUkMpCisg
ICAgeworI2xpbmUgMzM4ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9obGxfaW5jc3Jj
KCh1aW50OF90KikmaTY0X3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RBQ0tf
UFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPWk2NF90bXA7CisjbGluZSA0NTMgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVH
SU4oSV9DT1BZX05UT0hGX1RPX0JJVF9JTkNTUkMpCisgICAgeworI2xpbmUgMzQ0ICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgY29weV9udG9oZl9pbmNzcmMoKHVpbnQ4X3QqKSZmX3RtcCxjdXIpOwor
ICAgICAgICAqKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk9
KGZfdG1wIT0wKTsKKyNsaW5lIDQ2MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSEZfVE9fQ19a
X0lOQ1NSQykKKyAgICB7CisjbGluZSAzNTAgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250
b2hmX2luY3NyYygodWludDhfdCopJmZfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ4X3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUg
NDcxICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRl9UT19DX0VfSU5DU1JDKQorICAgIHsKKyNs
aW5lIDM1NiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjKCh1aW50OF90
KikmZl90bXAsY3VyKTsKKyAgICAgICAgKigoaW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpKT0oaW50NjRfdClmX3RtcDsKKyNsaW5lIDQ4MCAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X0NPUFlfTlRPSEZfVE9fU19aX0lOQ1NSQykKKyAgICB7CisjbGluZSAzNjIgImdwY19zcGVjLmlu
IgorICAgICAgICBjb3B5X250b2hmX2luY3NyYygodWludDhfdCopJmZfdG1wLGN1cik7CisgICAg
ICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50
NjRfdClmX3RtcDsKKyNsaW5lIDQ4OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSEZfVE9fU19F
X0lOQ1NSQykKKyAgICB7CisjbGluZSAzNjggImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250
b2hmX2luY3NyYygodWludDhfdCopJmZfdG1wLGN1cik7CisgICAgICAgICooKGludDE2X3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUg
NDk4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRl9UT19MX1pfSU5DU1JDKQorICAgIHsKKyNs
aW5lIDM3NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjKCh1aW50OF90
KikmZl90bXAsY3VyKTsKKyAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUgNTA3ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9OVE9IRl9UT19MX0VfSU5DU1JDKQorICAgIHsKKyNsaW5lIDM4MCAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjKCh1aW50OF90KikmZl90bXAsY3VyKTsKKyAg
ICAgICAgKigoaW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9KGlu
dDY0X3QpZl90bXA7CisjbGluZSA1MTYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hGX1RPX0xM
X1pfSU5DU1JDKQorICAgIHsKKyNsaW5lIDM4NiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlf
bnRvaGZfaW5jc3JjKCh1aW50OF90KikmZl90bXAsY3VyKTsKKyAgICAgICAgKigodWludDY0X3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xp
bmUgNTI1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRl9UT19MTF9FX0lOQ1NSQykKKyAgICB7
CisjbGluZSAzOTIgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hmX2luY3NyYygodWlu
dDhfdCopJmZfdG1wLGN1cik7CisgICAgICAgICooKGludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSkpPShpbnQ2NF90KWZfdG1wOworI2xpbmUgNTM0ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQ09QWV9OVE9IRl9JTkNTUkMpCisgICAgeworI2xpbmUgMzk4ICJncGNfc3BlYy5pbiIK
KyAgICAgICAgY29weV9udG9oZl9pbmNzcmMoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0o
MCksY3VyKTsKKyNsaW5lIDU0MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSEZfVE9fRF9JTkNT
UkMpCisgICAgeworI2xpbmUgNDAzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oZl9p
bmNzcmMoKHVpbnQ4X3QqKSZmX3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RB
Q0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPWZfdG1wOworI2xpbmUgNTUxICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQ09QWV9OVE9IRF9UT19CSVRfSU5DU1JDKQorICAgIHsKKyNsaW5lIDQwOSAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGRfaW5jc3JjKCh1aW50OF90KikmZF90bXAsY3VyKTsK
KyAgICAgICAgKih0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkp
PShkX3RtcCE9MCk7CisjbGluZSA1NjAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hEX1RPX0Nf
Wl9JTkNTUkMpCisgICAgeworI2xpbmUgNDE1ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9u
dG9oZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOworICAgICAgICAqKCh1aW50OF90Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5l
IDU2OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSERfVE9fQ19FX0lOQ1NSQykKKyAgICB7Cisj
bGluZSA0MjEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hkX2luY3NyYygodWludDhf
dCopJmRfdG1wLGN1cik7CisgICAgICAgICooKGludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJ
TlRfU1RSRUFNKDApKSk9KGludDY0X3QpZF90bXA7CisjbGluZSA1NzggImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX05UT0hEX1RPX1NfWl9JTkNTUkMpCisgICAgeworI2xpbmUgNDI3ICJncGNfc3BlYy5p
biIKKyAgICAgICAgY29weV9udG9oZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOworICAg
ICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9KGlu
dDY0X3QpZF90bXA7CisjbGluZSA1ODcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hEX1RPX1Nf
RV9JTkNTUkMpCisgICAgeworI2xpbmUgNDMzICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9u
dG9oZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOworICAgICAgICAqKChpbnQxNl90Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5l
IDU5NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSERfVE9fTF9aX0lOQ1NSQykKKyAgICB7Cisj
bGluZSA0MzkgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hkX2luY3NyYygodWludDhf
dCopJmRfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5lIDYwNSAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfTlRPSERfVE9fTF9FX0lOQ1NSQykKKyAgICB7CisjbGluZSA0NDUgImdwY19zcGVj
LmluIgorICAgICAgICBjb3B5X250b2hkX2luY3NyYygodWludDhfdCopJmRfdG1wLGN1cik7Cisg
ICAgICAgICooKGludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPShp
bnQ2NF90KWRfdG1wOworI2xpbmUgNjE0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9OVE9IRF9UT19M
TF9aX0lOQ1NSQykKKyAgICB7CisjbGluZSA0NTEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5
X250b2hkX2luY3NyYygodWludDhfdCopJmRfdG1wLGN1cik7CisgICAgICAgICooKHVpbnQ2NF90
KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNs
aW5lIDYyMyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfTlRPSERfVE9fTExfRV9JTkNTUkMpCisgICAg
eworI2xpbmUgNDU3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oZF9pbmNzcmMoKHVp
bnQ4X3QqKSZkX3RtcCxjdXIpOworICAgICAgICAqKChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMCkpKT0oaW50NjRfdClkX3RtcDsKKyNsaW5lIDYzMiAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX0NPUFlfTlRPSERfVE9fRl9JTkNTUkMpCisgICAgeworI2xpbmUgNDYzICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgY29weV9udG9oZF9pbmNzcmMoKHVpbnQ4X3QqKSZkX3RtcCxjdXIpOwor
ICAgICAgICAqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9ZF90
bXA7CisjbGluZSA2NDEgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZB
TkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX05UT0hEX0lOQ1NSQykKKyAgICB7
CisjbGluZSA0NjkgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hkX2luY3NyYyhJTlRf
U1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSxjdXIpOworI2xpbmUgNjQ5ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQ09QWV9CSVQpCisgICAgeworI2xpbmUgNDc0ICJncGNfc3BlYy5pbiIKKyAgICAgICAg
dWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBz
cmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHRzZl9ib29sX3QqKShJTlRfU1RB
Q0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigodHNmX2Jvb2xfdCop
KElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xpbmUgNjYwICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfQ09QWV9CSVRfVE9fUykKKyAgICB7CisjbGluZSA0ODIgImdwY19zcGVjLmluIgor
ICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWlu
dHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWludDE2X3QqKShJ
TlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigodHNmX2Jv
b2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xpbmUgNjcxICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQ09QWV9CSVRfVE9fTCkKKyAgICB7CisjbGluZSA0OTAgImdwY19zcGVj
LmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAg
ICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWludDMy
X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigo
dHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xpbmUg
NjgyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9CSVRfVE9fTEwpCisgICAgeworI2xpbmUgNDk4ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICoo
KHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAg
ICAgKCooKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpIT0wKTsK
KyNsaW5lIDY5MyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
Mik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUX1RPX0YpCisgICAgeworI2xpbmUg
NTA2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJF
QU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAg
ICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAg
ICAgICAgKCooKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpIT0w
KTsKKyNsaW5lIDcwNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUX1RPX0QpCisgICAgeworI2xp
bmUgNTE0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9T
VFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7Cisg
ICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAg
ICAgICAgICAgICgqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQp
KSE9MCk7CisjbGluZSA3MTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0MpCisgICAgeworI2xpbmUg
NTIyICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJF
QU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAg
ICAgICooKHVpbnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAg
ICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNs
aW5lIDcyNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQ19UT19TX1opCisgICAgeworI2xpbmUgNTMw
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAg
ICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAg
ICAgICAgKigodWludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGlu
ZSA3MzcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0NfVE9fU19FKQorICAgIHsKKyNsaW5lIDUzOCAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDAp
OworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAq
KChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAg
ICAgKigoaW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDc0
OCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQ19UT19MX1opCisgICAgeworI2xpbmUgNTQ2ICJncGNf
c3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7Cisg
ICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVp
bnQzMl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAg
KigodWludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSA3NTkg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9DT1BZX0NfVE9fTF9FKQorICAgIHsKKyNsaW5lIDU1NCAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAg
ICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKChpbnQz
Ml90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigo
aW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDc3MCAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0NPUFlfQ19UT19MTF9aKQorICAgIHsKKyNsaW5lIDU2MiAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAg
ICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50NjRf
dCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVp
bnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgNzgxICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfQ09QWV9DX1RPX0xMX0UpCisgICAgeworI2xpbmUgNTcwICJncGNfc3BlYy5p
biIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAg
IHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGludDY0X3Qq
KShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKChpbnQ4
X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgNzkyICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfQ09QWV9DX1RPX0ZfWikKKyAgICB7CisjbGluZSA1NzggImdwY19zcGVjLmluIgor
ICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWlu
dHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZmxvYXQqKShJTlRf
U1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKCh1aW50OF90Kiko
SU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDgwMyAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfQ19UT19GX0UpCisgICAgeworI2xpbmUgNTg2ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJf
dCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNL
X1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50OF90KikoSU5UX1NU
QUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDgxNCAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NP
UFlfQ19UT19EX1opCisgICAgeworI2xpbmUgNTk0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWlu
dHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNf
b2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIo
MSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ4X3QqKShJTlRfU1RBQ0tf
UFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgODI1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9D
X1RPX0RfRSkKKyAgICB7CisjbGluZSA2MDIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRy
X3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZz
ZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigxKSAr
IGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50OF90KikoSU5UX1NUQUNLX1BUUigw
KSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDgzNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9
CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19C
SVQpCisgICAgeworI2xpbmUgNjEwICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRl
c3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlO
VF9TVFJFQU0oMSk7CisgICAgICAgICooKHRzZl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsg
ZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRS
KDApICsgc3JjX29mZnNldCkpIT0wKTsKKyNsaW5lIDg0NyAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
U19UT19DKQorICAgIHsKKyNsaW5lIDYxOCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJf
dCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNl
dD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNLX1BUUigxKSAr
IGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRS
KDApICsgc3JjX29mZnNldCkpOworI2xpbmUgODU4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TKQor
ICAgIHsKKyNsaW5lIDYyNiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29m
ZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RS
RUFNKDEpOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29m
ZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNy
Y19vZmZzZXQpKTsKKyNsaW5lIDg2OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19MX1opCisg
ICAgeworI2xpbmUgNjM0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zm
c2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJF
QU0oMSk7CisgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zm
c2V0KSkgPQorICAgICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3Jj
X29mZnNldCkpOworI2xpbmUgODgwICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0xfRSkKKyAg
ICB7CisjbGluZSA2NDIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZz
ZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVB
TSgxKTsKKyAgICAgICAgKigoaW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNl
dCkpID0KKyAgICAgICAgICAgICooKGludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29m
ZnNldCkpOworI2xpbmUgODkxICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0xMX1opCisgICAg
eworI2xpbmUgNjUwICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0
PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0o
MSk7CisgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0
KSkgPQorICAgICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29m
ZnNldCkpOworI2xpbmUgOTAyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRf
QURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0xMX0UpCisgICAg
eworI2xpbmUgNjU4ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0
PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0o
MSk7CisgICAgICAgICooKGludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQp
KSA9CisgICAgICAgICAgICAqKChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZz
ZXQpKTsKKyNsaW5lIDkxMyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19GX1opCisgICAgewor
I2xpbmUgNjY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlO
VF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7
CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQor
ICAgICAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkp
OworI2xpbmUgOTI0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5D
RSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9TX1RPX0ZfRSkKKyAgICB7CisjbGlu
ZSA2NzQgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NU
UkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAg
ICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAg
ICAgICAgICAqKChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNs
aW5lIDkzNSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19EX1opCisgICAgeworI2xpbmUgNjgy
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAg
ICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAg
ICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5l
IDk0NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfU19UT19EX0UpCisgICAgeworI2xpbmUgNjkwICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICoo
KGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAg
ICooKGludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgOTU3
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9MX1RPX0JJVCkKKyAgICB7CisjbGluZSA2OTggImdwY19z
cGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAg
ICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodHNm
X2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAg
ICgqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTApOworI2xp
bmUgOTY4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9MX1RPX0MpCisgICAgeworI2xpbmUgNzA2ICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICoo
KHVpbnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAg
ICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSA5
NzkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5U
X0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0xfVE9fUykKKyAgICB7CisjbGluZSA3MTQgImdwY19z
cGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAg
ICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWlu
dDE2X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAq
KCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSA5OTAg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9DT1BZX0wpCisgICAgeworI2xpbmUgNzIyICJncGNfc3BlYy5pbiIK
KyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVp
bnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVpbnQzMl90Kiko
SU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDMy
X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTAwMSAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX0NPUFlfTF9UT19MTF9aKQorICAgIHsKKyNsaW5lIDczMCAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1
aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50NjRfdCop
KElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQz
Ml90KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEwMTIgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9DT1BZX0xfVE9fTExfRSkKKyAgICB7CisjbGluZSA3MzggImdwY19zcGVjLmlu
IgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAg
dWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoaW50NjRfdCop
KElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKGludDMy
X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTAyMyAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX0NPUFlfTF9UT19GX1opCisgICAgeworI2xpbmUgNzQ2ICJncGNfc3BlYy5pbiIK
KyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVp
bnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5U
X1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDMyX3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTAzNCAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX0NPUFlfTF9UT19GX0UpCisgICAgeworI2xpbmUgNzU0ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRw
dHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NU
QUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50MzJfdCopKElO
VF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMDQ1ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9MX1RPX0RfWikKKyAgICB7CisjbGluZSA3NjIgImdwY19zcGVjLmluIgorICAgICAg
ICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90
IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNL
X1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDMyX3QqKShJTlRf
U1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTA1NiAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X0NPUFlfTF9UT19EX0UpCisgICAgeworI2xpbmUgNzcwICJncGNfc3BlYy5pbiIKKyAgICAgICAg
dWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBz
cmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19Q
VFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKGludDMyX3QqKShJTlRfU1RB
Q0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTA2NyAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NP
UFlfTExfVE9fQklUKQorICAgIHsKKyNsaW5lIDc3OCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVp
bnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3Jj
X29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNL
X1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKCooKHVpbnQ2NF90KikoSU5U
X1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKSE9MCk7CisjbGluZSAxMDc4ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQ09QWV9MTF9UT19DKQorICAgIHsKKyNsaW5lIDc4NiAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRy
X3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NU
QUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigodWludDY0X3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTA4OSAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0NPUFlfTExfVE9fUykKKyAgICB7CisjbGluZSA3OTQgImdwY19zcGVjLmluIgorICAgICAg
ICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90
IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigodWludDE2X3QqKShJTlRfU1RB
Q0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKCh1aW50NjRfdCopKElO
VF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMTAwICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9MTF9UT19MKQorICAgIHsKKyNsaW5lIDgwMiAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qg
c3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFD
S19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ2NF90KikoSU5U
X1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDExMTEgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX0xMKQorICAgIHsKKyNsaW5lIDgxMCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRw
dHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29m
ZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19QVFIo
MSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNL
X1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDExMjIgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZ
X0xMX1RPX0ZfWikKKyAgICB7CisjbGluZSA4MTggImdwY19zcGVjLmluIgorICAgICAgICB1aW50
cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19v
ZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDEp
ICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19Q
VFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMTMzICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9M
TF9UT19GX0UpCisgICAgeworI2xpbmUgODI2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0
cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zm
c2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigxKSAr
IGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50NjRfdCopKElOVF9TVEFDS19QVFIo
MCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMTQ0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9MTF9U
T19EX1opCisgICAgeworI2xpbmUgODM0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90
IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0
PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBk
ZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigw
KSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDExNTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0xMX1RP
X0RfRSkKKyAgICB7CisjbGluZSA4NDIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3Qg
ZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9
SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigxKSArIGRl
c3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKigoaW50NjRfdCopKElOVF9TVEFDS19QVFIoMCkg
KyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMTY2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9GX1RPX0JJ
VCkKKyAgICB7CisjbGluZSA4NTAgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVz
dF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5U
X1NUUkVBTSgxKTsKKyAgICAgICAgKigodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMSkgKyBk
ZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICgqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkg
KyBzcmNfb2Zmc2V0KSkhPTAuKTsKKyNsaW5lIDExNzcgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0Zf
VE9fQ19aKQorICAgIHsKKyNsaW5lIDg1OCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJf
dCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNl
dD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNLX1BUUigxKSAr
IGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigoZmxvYXQqKShJTlRfU1RB
Q0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTE4OCAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NP
UFlfRl9UT19DX0UpCisgICAgeworI2xpbmUgODY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWlu
dHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNf
b2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGludDhfdCopKElOVF9TVEFDS19QVFIo
MSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGZsb2F0KikoSU5U
X1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDExOTkgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX0ZfVE9fU19aKQorICAgIHsKKyNsaW5lIDg3NCAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qg
c3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFD
S19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGZsb2F0
KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEyMTAgImdwY19pbnRl
cnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRf
QkVHSU4oSV9DT1BZX0ZfVE9fU19FKQorICAgIHsKKyNsaW5lIDg4MiAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50
cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKChpbnQxNl90KikoSU5U
X1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigo
ZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTIyMSAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0NPUFlfRl9UT19MX1opCisgICAgeworI2xpbmUgODkwICJncGNfc3BlYy5p
biIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAg
IHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVpbnQzMl90
KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0
X3QpKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTIz
MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRl9UT19MX0UpCisgICAgeworI2xpbmUgODk4ICJncGNf
c3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7Cisg
ICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGlu
dDMyX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAo
aW50NjRfdCkqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGlu
ZSAxMjQzICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9GX1RPX0xMX1opCisgICAgeworI2xpbmUgOTA2
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAg
ICooKHVpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAg
ICAgICAgKGludDY0X3QpKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkp
OworI2xpbmUgMTI1NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRl9UT19MTF9FKQorICAgIHsKKyNs
aW5lIDkxNCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRf
U1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOwor
ICAgICAgICAqKChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQor
ICAgICAgICAgICAgKGludDY0X3QpKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29m
ZnNldCkpOworI2xpbmUgMTI2NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRikKKyAgICB7CisjbGlu
ZSA5MjIgImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NU
UkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAg
ICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAg
ICAgICAgICAqKChmbG9hdCopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGlu
ZSAxMjc2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsK
K0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9GX1RPX0QpCisgICAgeworI2xpbmUgOTMwICJn
cGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7
CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICoo
KGRvdWJsZSopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAg
ICooKGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEyODcg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fQklUKQorICAgIHsKKyNsaW5lIDkzOCAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAg
ICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAqKCh0c2Zf
Ym9vbF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAg
KCooKGRvdWJsZSopKElOVF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSkhPTAuKTsKKyNsaW5l
IDEyOTggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fQ19aKQorICAgIHsKKyNsaW5lIDk0NiAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFNKDAp
OworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAgICAgICAq
KCh1aW50OF90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAg
ICAgKGludDY0X3QpKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsK
KyNsaW5lIDEzMDkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNF
KDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fQ19FKQorICAgIHsKKyNsaW5l
IDk1NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29mZnNldD1JTlRfU1RS
RUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RSRUFNKDEpOworICAg
ICAgICAqKChpbnQ4X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAg
ICAgICAgICAoaW50NjRfdCkqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNl
dCkpOworI2xpbmUgMTMyMCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FE
VkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRF9UT19TX1opCisgICAgewor
I2xpbmUgOTYyICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlO
VF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7
CisgICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkg
PQorICAgICAgICAgICAgKGludDY0X3QpKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIHNy
Y19vZmZzZXQpKTsKKyNsaW5lIDEzMzEgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9fU19FKQor
ICAgIHsKKyNsaW5lIDk3MCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBkZXN0X29m
ZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1JTlRfU1RS
RUFNKDEpOworICAgICAgICAqKChpbnQxNl90KikoSU5UX1NUQUNLX1BUUigxKSArIGRlc3Rfb2Zm
c2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigw
KSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEzNDIgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9DT1BZX0RfVE9f
TF9aKQorICAgIHsKKyNsaW5lIDk3OCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBk
ZXN0X29mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICB1aW50cHRyX3Qgc3JjX29mZnNldD1J
TlRfU1RSRUFNKDEpOworICAgICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBk
ZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGRvdWJsZSopKElOVF9TVEFD
S19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMzUzICJncGNfaW50ZXJwcmV0ZXIuZ2Vu
IgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09Q
WV9EX1RPX0xfRSkKKyAgICB7CisjbGluZSA5ODYgImdwY19zcGVjLmluIgorICAgICAgICB1aW50
cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludHB0cl90IHNyY19v
ZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoaW50MzJfdCopKElOVF9TVEFDS19QVFIo
MSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgIChpbnQ2NF90KSooKGRvdWJsZSopKElO
VF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxMzY0ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfQ09QWV9EX1RPX0xMX1opCisgICAgeworI2xpbmUgOTk0ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRwdHJf
dCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKHVpbnQ2NF90KikoSU5UX1NU
QUNLX1BUUigxKSArIGRlc3Rfb2Zmc2V0KSkgPQorICAgICAgICAgICAgKGludDY0X3QpKigoZG91
YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIHNyY19vZmZzZXQpKTsKKyNsaW5lIDEzNzUgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9DT1BZX0RfVE9fTExfRSkKKyAgICB7CisjbGluZSAxMDAyICJncGNfc3BlYy5p
biIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAg
IHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGludDY0X3Qq
KShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAoaW50NjRf
dCkqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTM4
NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfRF9UT19GKQorICAgIHsKKyNsaW5lIDEwMTAgImdwY19z
cGVjLmluIgorICAgICAgICB1aW50cHRyX3QgZGVzdF9vZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAg
ICAgICAgdWludHB0cl90IHNyY19vZmZzZXQ9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgKigoZmxv
YXQqKShJTlRfU1RBQ0tfUFRSKDEpICsgZGVzdF9vZmZzZXQpKSA9CisgICAgICAgICAgICAqKChk
b3VibGUqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworI2xpbmUgMTM5NyAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0NPUFlfRCkKKyAgICB7CisjbGluZSAxMDE4ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIHVpbnRw
dHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgICooKGRvdWJsZSopKElOVF9T
VEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpID0KKyAgICAgICAgICAgICooKGRvdWJsZSopKElO
VF9TVEFDS19QVFIoMCkgKyBzcmNfb2Zmc2V0KSk7CisjbGluZSAxNDA4ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfU0VUX0MpCisgICAgeworI2xpbmUgMTAyNiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQz
Ml90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICAqKCh1aW50OF90KikoSU5UX1NUQUNL
X1BUUigwKSArIG9mZnNldCkpPUlOVF9TVFJFQU0oMSk7CisjbGluZSAxNDE3ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfU0VUX1MpCisgICAgeworI2xpbmUgMTAzMiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVp
bnQzMl90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9T
VEFDS19QVFIoMCkgKyBvZmZzZXQpKT1JTlRfU1RSRUFNKDEpOworI2xpbmUgMTQyNiAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX1NFVF9MKQorICAgIHsKKyNsaW5lIDEwMzggImdwY19zcGVjLmluIgorICAgICAg
ICB1aW50MzJfdCBvZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgKigodWludDMyX3QqKShJ
TlRfU1RBQ0tfUFRSKDApICsgb2Zmc2V0KSk9SU5UX1NUUkVBTSgxKTsKKyNsaW5lIDE0MzUgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9TRVRfMk5EX0MpCisgICAgeworI2xpbmUgMTA0NCAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHVpbnQzMl90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAgICAgICAqKCh1aW50
OF90KikoSU5UX1NUQUNLX1BUUigxKSArIG9mZnNldCkpPUlOVF9TVFJFQU0oMSk7CisjbGluZSAx
NDQ0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfU0VUXzJORF9TKQorICAgIHsKKyNsaW5lIDEwNTAgImdwY19z
cGVjLmluIgorICAgICAgICB1aW50MzJfdCBvZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAg
KigodWludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgb2Zmc2V0KSk9SU5UX1NUUkVBTSgxKTsK
KyNsaW5lIDE0NTMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNF
KDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9TRVRfMk5EX0wpCisgICAgeworI2xpbmUgMTA1
NiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG9mZnNldD1JTlRfU1RSRUFNKDApOwor
ICAgICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBvZmZzZXQpKT1JTlRfU1RS
RUFNKDEpOworI2xpbmUgMTQ2MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEKQorICAg
IHsKKyNsaW5lIDEwNjIgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rv
cl90ICpiaXR2ZWN0b3I9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCopKElO
VF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgCisgICAgICAgIHVpbnQz
Ml90IHNpemU7CisgICAgICAgIAorICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3Rt
cCwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7CisgICAgICAgIGlmICh1aThfdG1wID09IDI1NSkg
eworICAgICAgICAgICAgY29weV9udG9obF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZiaXR2ZWN0b3It
Pm51bV9iaXRzLCBjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQsIGJv
dW5kc19lcnJvcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBiaXR2ZWN0b3ItPm51
bV9iaXRzID0gdWk4X3RtcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2l6ZSA9ICgo
Yml0dmVjdG9yLT5udW1fYml0cyArIDcpID4+IDMpOworICAgICAgICAKKyAgICAgICAgaWYgKGN1
ciArIHNpemUgPiBlbmQpIHsKKyAgICAgICAgICAgIGdvdG8gYm91bmRzX2Vycm9yOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBiaXR2ZWN0b3ItPmJpdHMgPSB0c2ZfY29uZF9hbGxvYyhy
ZWdpb24sIHNpemUpOworICAgICAgICBpZiAoYml0dmVjdG9yLT5iaXRzID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7Cisg
ICAgICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBt
ZW1jcHkoYml0dmVjdG9yLT5iaXRzLCBjdXIsIHNpemUpOworICAgICAgICBjdXIgKz0gc2l6ZTsK
KyNsaW5lIDE0OTYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNF
KDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfUkVBRF9UT19DKQorICAgIHsK
KyNsaW5lIDEwOTMgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX3VpbnQ4X2FycmF5
X3QgKmFycmF5PQorICAgICAgICAgICAgKHRzZl9uYXRpdmVfdWludDhfYXJyYXlfdCopKElOVF9T
VEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgZ3BjX3JlYWRfYml0dmVjdG9y
X3RvX2FycmF5KDEpCisjbGluZSAxNTA2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURf
VE9fUykKKyAgICB7CisjbGluZSAxMTAwICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2
ZV91aW50MTZfYXJyYXlfdCAqYXJyYXk9CisgICAgICAgICAgICAodHNmX25hdGl2ZV91aW50MTZf
YXJyYXlfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgZ3Bj
X3JlYWRfYml0dmVjdG9yX3RvX2FycmF5KDIpCisjbGluZSAxNTE2ICJncGNfaW50ZXJwcmV0ZXIu
Z2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElf
QklUVkVDVE9SX1JFQURfVE9fTCkKKyAgICB7CisjbGluZSAxMTA3ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgdHNmX25hdGl2ZV91aW50MzJfYXJyYXlfdCAqYXJyYXk9CisgICAgICAgICAgICAodHNm
X25hdGl2ZV91aW50MzJfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDAp
KTsKKyAgICAgICAgZ3BjX3JlYWRfYml0dmVjdG9yX3RvX2FycmF5KDQpCisjbGluZSAxNTI2ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURfVE9fTEwpCisgICAgeworI2xpbmUgMTExNCAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfdWludDY0X2FycmF5X3QgKmFycmF5PQor
ICAgICAgICAgICAgKHRzZl9uYXRpdmVfdWludDY0X2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIGdwY19yZWFkX2JpdHZlY3Rvcl90b19hcnJheSg4
KQorI2xpbmUgMTUzNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX1RPX0YpCisgICAg
eworI2xpbmUgMTEyMSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfZmxvYXRfYXJy
YXlfdCAqYXJyYXk9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9mbG9hdF9hcnJheV90KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBncGNfcmVhZF9iaXR2ZWN0
b3JfdG9fYXJyYXkoNCkKKyNsaW5lIDE1NDYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfUkVB
RF9UT19EKQorICAgIHsKKyNsaW5lIDExMjggImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0
aXZlX2RvdWJsZV9hcnJheV90ICphcnJheT0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2RvdWJs
ZV9hcnJheV90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBn
cGNfcmVhZF9iaXR2ZWN0b3JfdG9fYXJyYXkoOCkKKyNsaW5lIDE1NTYgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9CSVRWRUNUT1JfUkVBRF9GUk9NX0MpCisgICAgeworI2xpbmUgMTEzNSAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAg
ICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0o
MCkpOworICAgICAgICBncGNfcmVhZF9hcnJheV90b19iaXR2ZWN0b3IoYyx1aThfdG1wLDEpCisj
bGluZSAxNTY2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgx
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURfRlJPTV9TKQorICAgIHsK
KyNsaW5lIDExNDIgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90
ICpiaXR2ZWN0b3I9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCopKElOVF9T
VEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgZ3BjX3JlYWRfYXJyYXlfdG9f
Yml0dmVjdG9yKHMsdWkxNl90bXAsMikKKyNsaW5lIDE1NzYgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRW
RUNUT1JfUkVBRF9GUk9NX0wpCisgICAgeworI2xpbmUgMTE0OSAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAgICh0c2Zf
bmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOwor
ICAgICAgICBncGNfcmVhZF9hcnJheV90b19iaXR2ZWN0b3IobCx1aTMyX3RtcCw0KQorI2xpbmUg
MTU4NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJ
TlRfRU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX0ZST01fTEwpCisgICAgeworI2xp
bmUgMTE1NiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJp
dHZlY3Rvcj0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNL
X1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBncGNfcmVhZF9hcnJheV90b19iaXR2
ZWN0b3IobGwsdWk2NF90bXAsOCkKKyNsaW5lIDE1OTYgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNU
T1JfUkVBRF9GUk9NX0YpCisgICAgeworI2xpbmUgMTE2MyAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAgICh0c2ZfbmF0
aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAg
ICAgICBncGNfcmVhZF9hcnJheV90b19iaXR2ZWN0b3IoZixmX3RtcCw0KQorI2xpbmUgMTYwNiAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX0ZST01fRCkKKyAgICB7CisjbGluZSAxMTcw
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqYml0dmVjdG9y
PQorICAgICAgICAgICAgKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIGdwY19yZWFkX2FycmF5X3RvX2JpdHZlY3Rvcihk
LGRfdG1wLDEpCisjbGluZSAxNjE2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1JFQURfRlJP
TV9UU0ZfSU5URUdFUl9BUlJBWSkKKyAgICB7CisjbGluZSAxMTc3ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqYml0dmVjdG9yPQorICAgICAgICAgICAgKHRz
Zl9uYXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7
CisgICAgICAgIGdwY19yZWFkX2ludGVnZXJfYXJyYXlfdG9fYml0dmVjdG9yKGludGVnZXIpICAg
IAorI2xpbmUgMTYyNiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JJVFZFQ1RPUl9SRUFEX0ZST01fVFNGX0xP
TkdfQVJSQVkpCisgICAgeworI2xpbmUgMTE4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9u
YXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2Jp
dHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBn
cGNfcmVhZF9pbnRlZ2VyX2FycmF5X3RvX2JpdHZlY3Rvcihsb25nKSAgICAKKyNsaW5lIDE2MzYg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfV1JJVEUpCisgICAgeworI2xpbmUgMTE5MSAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAg
ICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpOworICAgICAgICAKKyAgICAgICAgdWludDMyX3Qgc2l6ZTsKKyAgICAgICAg
CisgICAgICAgIGlmIChiaXR2ZWN0b3ItPm51bV9iaXRzPj0yNTUpIHsKKyAgICAgICAgICAgIHVp
OF90bXA9MjU1OworICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsK
KyAgICAgICAgICAgIGNvcHlfaHRvbmxfaW5jZHN0KGN1ciwodWludDhfdCopJmJpdHZlY3Rvci0+
bnVtX2JpdHMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdWk4X3RtcD1iaXR2ZWN0
b3ItPm51bV9iaXRzOworICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1w
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2l6ZT0oKGJpdHZlY3Rvci0+bnVtX2Jp
dHMrNyk+PjMpOworICAgICAgICBtZW1jcHkoY3VyLGJpdHZlY3Rvci0+Yml0cyxzaXplKTsKKyAg
ICAgICAgY3VyKz1zaXplOworI2xpbmUgMTY2MCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9
CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JZVEVfQVJSQVlf
UkVBRCkKKyAgICB7CisjbGluZSAxMjEyICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2
ZV9hcnJheV90ICphcnJheT0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2FycmF5X3QqKShJTlRf
U1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIAorICAgICAgICB1aW50MzJf
dCBzaXplOworICAgICAgICAKKyAgICAgICAgY29weV9udG9oY19pbmNzcmNfYmMoJnVpOF90bXAs
Y3VyLGVuZCxib3VuZHNfZXJyb3IpOworICAgICAgICBpZiAodWk4X3RtcD09MjU1KSB7CisgICAg
ICAgICAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhfdCopJmFycmF5LT5sZW4sY3VyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLGJvdW5kc19lcnJvcik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhcnJheS0+bGVuID0gdWk4X3RtcDsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgc2l6ZT1hcnJheS0+bGVuKklOVF9TVFJFQU0oMSk7CisgICAg
ICAgIAorICAgICAgICBpZiAoY3VyICsgc2l6ZSA+IGVuZCkgeworICAgICAgICAgICAgZ290byBi
b3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGFycmF5LT5kYXRhPXRz
Zl9jb25kX2FsbG9jKHJlZ2lvbixzaXplKTsKKyAgICAgICAgaWYgKGFycmF5LT5kYXRhPT1OVUxM
KSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2NvbmRfYWxsb2Mo
KSIpOworICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgbWVtY3B5KGFycmF5LT5kYXRhLGN1cixzaXplKTsKKyAgICAgICAgY3VyKz1zaXplOwor
I2xpbmUgMTY5NCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
Mik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0JZVEVfQVJSQVlfV1JJVEUpCisgICAgeworI2xp
bmUgMTI0MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfYXJyYXlfdCAqYXJyYXk9
CisgICAgICAgICAgICAodHNmX25hdGl2ZV9hcnJheV90KikoSU5UX1NUQUNLX1BUUigwKSArIElO
VF9TVFJFQU0oMCkpOworICAgICAgICAKKyAgICAgICAgdWludDMyX3Qgc2l6ZTsKKyAgICAgICAg
CisgICAgICAgIGlmIChhcnJheS0+bGVuPj0yNTUpIHsKKyAgICAgICAgICAgIHVpOF90bXA9MjU1
OworICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyAgICAgICAg
ICAgIGNvcHlfaHRvbmxfaW5jZHN0KGN1ciwodWludDhfdCopJmFycmF5LT5sZW4pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdWk4X3RtcD1hcnJheS0+bGVuOworICAgICAgICAgICAg
Y29weV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgc2l6ZT1hcnJheS0+bGVuKklOVF9TVFJFQU0oMSk7CisgICAgICAgIAorICAgICAgICBt
ZW1jcHkoY3VyLGFycmF5LT5kYXRhLHNpemUpOworICAgICAgICBjdXIrPXNpemU7CisjbGluZSAx
NzE5ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfVFNGX0lOVEVHRVJfU0tJUCkKKyAgICB7CisjbGluZSAxMjY1
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludDhfdCAqbmV3X2N1ciA9IGN1ciArIHNpemVfb2Zf
ZW5jb2RlZF90c2ZfaW50ZWdlcigqY3VyKTsKKyAgICAgICAgaWYgKG5ld19jdXIgPiBlbmQpIHsK
KyAgICAgICAgICAgIGdvdG8gYm91bmRzX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGN1ciA9
IG5ld19jdXI7CisjbGluZSAxNzMxICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVFNGX1VOU0lHTkVEX1NLSVAp
CisgICAgeworI2xpbmUgMTI3NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQ4X3QgKm5ld19j
dXIgPSBjdXIgKyBzaXplX29mX2VuY29kZWRfdHNmX3Vuc2lnbmVkKCpjdXIpOworICAgICAgICBp
ZiAobmV3X2N1ciA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAg
ICAgIH0KKyAgICAgICAgY3VyID0gbmV3X2N1cjsKKyNsaW5lIDE3NDMgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9UU0ZfTE9OR19TS0lQKQorICAgIHsKKyNsaW5lIDEyODMgImdwY19zcGVjLmluIgorICAgICAg
ICB1aW50OF90ICpuZXdfY3VyID0gY3VyICsgc2l6ZV9vZl9lbmNvZGVkX3RzZl9sb25nKCpjdXIp
OworICAgICAgICBpZiAobmV3X2N1ciA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNf
ZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgY3VyID0gbmV3X2N1cjsKKyNsaW5lIDE3NTUgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9UU0ZfSU5URUdFUl9SRUFEX1RPX0JJVCkKKyAgICB7CisjbGluZSAxMjky
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50MzJfdCBpbnRlZ2VyOworICAgICAgICByZWFkX3Rz
Zl9pbnRlZ2VyX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7CisgICAg
ICAgICoodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSA9ICEh
aW50ZWdlcjsKKyNsaW5lIDE3NjUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfSU5URUdFUl9SRUFEX1RP
X0MpCisgICAgeworI2xpbmUgMTI5OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGludDMyX3QgaW50
ZWdlcjsKKyAgICAgICAgcmVhZF90c2ZfaW50ZWdlcl9pbmNzcmMoJmludGVnZXIsIGN1ciwgZW5k
LCBib3VuZHNfZXJyb3IpOworICAgICAgICAqKGludDhfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJ
TlRfU1RSRUFNKDApKSA9IGludGVnZXI7CisjbGluZSAxNzc1ICJncGNfaW50ZXJwcmV0ZXIuZ2Vu
IgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVFNG
X0lOVEVHRVJfUkVBRF9UT19TKQorICAgIHsKKyNsaW5lIDEzMDYgImdwY19zcGVjLmluIgorICAg
ICAgICBpbnQzMl90IGludGVnZXI7CisgICAgICAgIHJlYWRfdHNmX2ludGVnZXJfaW5jc3JjKCZp
bnRlZ2VyLCBjdXIsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgKihpbnQxNl90KikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpID0gaW50ZWdlcjsKKyNsaW5lIDE3ODUgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9UU0ZfSU5URUdFUl9SRUFEKQorICAgIHsKKyNsaW5lIDEzMTMgImdwY19z
cGVjLmluIgorICAgICAgICBpbnQzMl90ICppbnRlZ2VyID0gKGludDMyX3QqKShJTlRfU1RBQ0tf
UFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHJlYWRfdHNmX2ludGVnZXJfaW5jc3Jj
KGludGVnZXIsIGN1ciwgZW5kLCBib3VuZHNfZXJyb3IpOworI2xpbmUgMTc5NCAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX1RTRl9JTlRFR0VSX1JFQURfVE9fTEwpCisgICAgeworI2xpbmUgMTMxOSAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIGludDMyX3QgaW50ZWdlcjsKKyAgICAgICAgcmVhZF90c2ZfaW50ZWdl
cl9pbmNzcmMoJmludGVnZXIsIGN1ciwgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAqKGlu
dDY0X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkgPSBpbnRlZ2VyOworI2xp
bmUgMTgwNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9JTlRFR0VSX1JFQURfVE9fRikKKyAgICB7Cisj
bGluZSAxMzI2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50MzJfdCBpbnRlZ2VyOworICAgICAg
ICByZWFkX3RzZl9pbnRlZ2VyX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJv
cik7CisgICAgICAgICooZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkg
PSBpbnRlZ2VyOworI2xpbmUgMTgxNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9JTlRFR0VSX1JFQURf
VE9fRCkKKyAgICB7CisjbGluZSAxMzMzICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50MzJfdCBp
bnRlZ2VyOworICAgICAgICByZWFkX3RzZl9pbnRlZ2VyX2luY3NyYygmaW50ZWdlciwgY3VyLCBl
bmQsIGJvdW5kc19lcnJvcik7CisgICAgICAgICooZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpID0gaW50ZWdlcjsKKyNsaW5lIDE4MjQgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9U
U0ZfVU5TSUdORURfUkVBRF9TVUIxKQorICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMTM0
MCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl91bnNpZ25lZF90IHZhbHVlOworICAgICAgICBy
ZWFkX3RzZl91bnNpZ25lZF9pbmNzcmMoJnZhbHVlLCBjdXIsIGVuZCwgYm91bmRzX2Vycm9yKTsK
KyAgICAgICAgSU5UX1NUQUNLX1NFVCgwLCB2YWx1ZSAtIDEpOworI2xpbmUgMTgzNSAiZ3BjX2lu
dGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lO
VF9CRUdJTihJX1RTRl9MT05HX1JFQURfVE9fQklUKQorICAgIHsKKyNsaW5lIDEzNDcgImdwY19z
cGVjLmluIgorICAgICAgICBpbnQ2NF90IGludGVnZXI7CisgICAgICAgIHJlYWRfdHNmX2xvbmdf
aW5jc3JjKCZpbnRlZ2VyLCBjdXIsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgKih0c2Zf
Ym9vbF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpID0gISFpbnRlZ2VyOwor
I2xpbmUgMTg0NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
MSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9MT05HX1JFQURfVE9fQykKKyAgICB7Cisj
bGluZSAxMzU0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50NjRfdCBpbnRlZ2VyOworICAgICAg
ICByZWFkX3RzZl9sb25nX2luY3NyYygmaW50ZWdlciwgY3VyLCBlbmQsIGJvdW5kc19lcnJvcik7
CisgICAgICAgICooaW50OF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpID0g
aW50ZWdlcjsKKyNsaW5lIDE4NTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfTE9OR19SRUFEX1RPX1Mp
CisgICAgeworI2xpbmUgMTM2MSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGludDY0X3QgaW50ZWdl
cjsKKyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJmludGVnZXIsIGN1ciwgZW5kLCBib3Vu
ZHNfZXJyb3IpOworICAgICAgICAqKGludDE2X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NU
UkVBTSgwKSkgPSBpbnRlZ2VyOworI2xpbmUgMTg2NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9MT05H
X1JFQURfVE9fTCkKKyAgICB7CisjbGluZSAxMzY4ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50
NjRfdCBpbnRlZ2VyOworICAgICAgICByZWFkX3RzZl9sb25nX2luY3NyYygmaW50ZWdlciwgY3Vy
LCBlbmQsIGJvdW5kc19lcnJvcik7CisgICAgICAgICooaW50MzJfdCopKElOVF9TVEFDS19QVFIo
MCkgKyBJTlRfU1RSRUFNKDApKSA9IGludGVnZXI7CisjbGluZSAxODc1ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfVFNGX0xPTkdfUkVBRCkKKyAgICB7CisjbGluZSAxMzc1ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgaW50NjRfdCAqaW50ZWdlciA9IChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMCkpOworICAgICAgICByZWFkX3RzZl9sb25nX2luY3NyYyhpbnRlZ2VyLCBjdXIsIGVu
ZCwgYm91bmRzX2Vycm9yKTsKKyNsaW5lIDE4ODQgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfTE9OR19S
RUFEX1RPX0YpCisgICAgeworI2xpbmUgMTM4MSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGludDY0
X3QgaW50ZWdlcjsKKyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJmludGVnZXIsIGN1ciwg
ZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAqKGZsb2F0KikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpID0gaW50ZWdlcjsKKyNsaW5lIDE4OTQgImdwY19pbnRlcnByZXRlci5n
ZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9U
U0ZfTE9OR19SRUFEX1RPX0QpCisgICAgeworI2xpbmUgMTM4OCAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIGludDY0X3QgaW50ZWdlcjsKKyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJmludGVn
ZXIsIGN1ciwgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAqKGRvdWJsZSopKElOVF9TVEFD
S19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSA9IGludGVnZXI7CisjbGluZSAxOTA0ICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfVFNGX0lOVEVHRVJfU0laRSkKKyAgICB7CisjbGluZSAxMzk1ICJncGNfc3BlYy5p
biIKKyAgICAgICAgaW50MzJfdCAqaW50ZWdlciA9IChpbnQzMl90KikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBzaXplICs9IHNpemVfb2ZfdHNmX2ludGVnZXIo
KmludGVnZXIpOworI2xpbmUgMTkxMyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RTRl9VTlNJR05FRF9QTFVT
MV9TSVpFKQorICAgIHsKKyNsaW5lIDE0MDEgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfdW5z
aWduZWRfdCAqaW50ZWdlciA9ICh0c2ZfdW5zaWduZWRfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJ
TlRfU1RSRUFNKDApKTsKKyAgICAgICAgc2l6ZSArPSBzaXplX29mX3RzZl9pbnRlZ2VyKCppbnRl
Z2VyICsgMSk7CisjbGluZSAxOTIyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVFNGX0xPTkdfU0laRSkKKyAg
ICB7CisjbGluZSAxNDA3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50NjRfdCAqaW50ZWdlciA9
IChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBz
aXplICs9IHNpemVfb2ZfdHNmX2xvbmcoKmludGVnZXIpOworI2xpbmUgMTkzMSAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX1RTRl9JTlRFR0VSX1dSSVRFKQorICAgIHsKKyNsaW5lIDE0MTMgImdwY19zcGVjLmlu
IgorICAgICAgICBpbnQzMl90ICppbnRlZ2VyID0gKGludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIGN1ciArPSB3cml0ZV90c2ZfaW50ZWdlcihjdXIs
ICppbnRlZ2VyKTsKKyNsaW5lIDE5NDAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfVU5TSUdORURfUExV
UzFfV1JJVEUpCisgICAgeworI2xpbmUgMTQxOSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl91
bnNpZ25lZF90ICppbnRlZ2VyID0gKHRzZl91bnNpZ25lZF90KikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMCkpOworICAgICAgICBjdXIgKz0gd3JpdGVfdHNmX3Vuc2lnbmVkKGN1ciwg
KmludGVnZXIgKyAxKTsKKyNsaW5lIDE5NDkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQor
ICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UU0ZfTE9OR19XUklU
RSkKKyAgICB7CisjbGluZSAxNDI1ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaW50NjRfdCAqaW50
ZWdlciA9IChpbnQ2NF90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpOworICAg
ICAgICBjdXIgKz0gd3JpdGVfdHNmX2xvbmcoY3VyLCAqaW50ZWdlcik7CisjbGluZSAxOTU4ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfU1RSSU5HX1NFVEVNUFRZKQorICAgIHsKKyNsaW5lIDE0MzEgImdwY19z
cGVjLmluIgorICAgICAgICBjaGFyICoqc3RyPShjaGFyKiopKElOVF9TVEFDS19QVFIoMCkgKyBJ
TlRfU1RSRUFNKDApKTsKKyAgICAgICAgaWYgKHJlZ2lvbiAhPSBOVUxMKSB7CisgICAgICAgICAg
ICAvKiBJZiB3ZSdyZSB1c2luZyByZWdpb25zIHRoZW4gd2UgY2FuIGJlIHN1cmUgdGhhdCBub2Jv
ZHkgd2lsbCBhdHRlbXB0IHRvIGZyZWUKKyAgICAgICAgICAgICAgIHRoaXMuIFRoYXQgbWVhbnMg
d2UgY2FuIGRvIHRoZSBlZmZpY2llbnQgdGhpbmcgYW5kIGp1c3QgdXNlIGEgc3RyaW5nIGNvbnN0
YW50LiAqLworICAgICAgICAgICAgKnN0ciA9ICIiOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLyogRGVzdHJ1Y3RpbmcgYSBzdHJpbmcgbWVhbnMgZnJlZWluZyBpdC4gVGhhdCBtZWFu
cyB3ZSBoYXZlIHRvIG1hbGxvYyB0aGUgZW1wdHkKKyAgICAgICAgICAgICAgIHN0cmluZy4gKi8K
KyAgICAgICAgICAgICpzdHIgPSBzdHJkdXAoIiIpOworICAgICAgICAgICAgaWYgKCEqc3RyKSB7
CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHN0cmR1cCB0aGUgZW1w
dHkgc3RyaW5nIik7CisgICAgICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorI2xpbmUgMTk3OSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9Cisg
ICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1NUUklOR19SRUFEKQor
ICAgIHsKKyNsaW5lIDE0NDkgImdwY19zcGVjLmluIgorICAgICAgICBjaGFyICoqc3RyOworICAg
ICAgICBzaXplX3Qgc2l6ZTsKKyAgICAgICAgCisgICAgICAgIC8qIEZpcnN0IGZpZ3VyZSBvdXQg
dGhlIHNpemUgb2YgdGhlIHN0cmluZy4gKi8KKyAgICAgICAgc2l6ZSA9IHNraXBfc3RyaW5nKChj
b25zdCBjaGFyKiljdXIsIChjb25zdCBjaGFyICopZW5kKTsKKyAgICAgICAgaWYgKCFzaXplKSB7
CisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgLyogTm93IGFsbG9jYXRlIHRoZSBzdHJpbmcgYW5kIGNvcHkgdGhlIGNvbnRlbnRzLiAq
LworICAgICAgICBzdHIgPSAoY2hhcioqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgw
KSk7CisgICAgICAgICpzdHIgPSB0c2ZfY29uZF9hbGxvYyhyZWdpb24sIHNpemUpOworICAgICAg
ICBpZiAoKnN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgdHNmX2NvbmRfYWxsb2MoKSBzdHJpbmciKTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7
CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KCpzdHIsIGN1ciwgc2l6ZSk7CisgICAgICAgIGN1
ciArPSBzaXplOworI2xpbmUgMjAwNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1NUUklOR19TS0lQKQorICAg
IHsKKyNsaW5lIDE0NzEgImdwY19zcGVjLmluIgorICAgICAgICAvKiBJdCB3b3VsZCBoYXZlIGJl
ZW4gZWFzaWVyIHRvIGlubGluZSB0aGUgYm9keSBvZiBza2lwX3N0cmluZyBoZXJlLCBidXQgd2Ug
ZG9uJ3QgZG8KKyAgICAgICAgICAgdGhhdCBiZWNhdXNlIGl0IHJldmVhbGVkIGNvbXBpbGVyIGJ1
Z3MgaW4gc29tZSBvbGQgR0NDLiAqLworICAgICAgICBzaXplX3QgbnVtX3NraXBwZWQgPSBza2lw
X3N0cmluZygoY29uc3QgY2hhciopY3VyLCAoY29uc3QgY2hhciopZW5kKTsKKyAgICAgICAgaWYg
KCFudW1fc2tpcHBlZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAg
IH0KKyAgICAgICAgY3VyICs9IG51bV9za2lwcGVkOworI2xpbmUgMjAxOCAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX1NUUklOR19TSVpFKQorICAgIHsKKyNsaW5lIDE0ODIgImdwY19zcGVjLmluIgorICAgICAg
ICBjaGFyICoqc3RyPShjaGFyKiopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsK
KyAgICAgICAgc2l6ZSs9c3RybGVuKCpzdHIpKzE7CisjbGluZSAyMDI3ICJncGNfaW50ZXJwcmV0
ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lO
KElfU1RSSU5HX1dSSVRFKQorICAgIHsKKyNsaW5lIDE0ODggImdwY19zcGVjLmluIgorICAgICAg
ICBjaGFyICoqc3RyPShjaGFyKiopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsK
KyNpZmRlZiBIQVZFX1NUUENQWQorICAgICAgICBjdXI9KCh1aW50OF90KilzdHBjcHkoKGNoYXIq
KWN1ciwqc3RyKSkrMTsKKyNlbHNlCisgICAgICAgIHN0cmNweSgoY2hhciopY3VyLCpzdHIpOwor
ICAgICAgICBjdXIrPXN0cmxlbigqc3RyKSsxOworI2VuZGlmCisjbGluZSAyMDQxICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfU1RSSU5HX0NPUFkpCisgICAgeworI2xpbmUgMTQ5OSAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIGNoYXIgKipkZXN0ID0gKGNoYXIqKikoSU5UX1NUQUNLX1BUUigxKSArIElOVF9TVFJF
QU0oMCkpOworICAgICAgICBjaGFyICoqc3JjID0gKGNoYXIqKikoSU5UX1NUQUNLX1BUUigwKSAr
IElOVF9TVFJFQU0oMSkpOworICAgICAgICAqZGVzdCA9IHRzZl9jb25kX2FsbG9jKHJlZ2lvbiwg
c3RybGVuKCpzcmMpICsgMSk7CisgICAgICAgIGlmICgqZGVzdCA9PSBOVUxMKSB7CisgICAgICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2NvbmRfYWxsb2MoKSBzdHJpbmciKTsK
KyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KCpk
ZXN0LCAqc3JjKTsKKyNsaW5lIDIwNTYgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9BTllfU0VURU1QVFkpCisg
ICAgeworI2xpbmUgMTUxMSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9idWZmZXJfdCAqKmRl
c3Q9KHRzZl9idWZmZXJfdCoqKQorICAgICAgICAgICAgKElOVF9TVEFDS19QVFIoMCkgKyBJTlRf
U1RSRUFNKDApKTsKKyAgICAgICAgKmRlc3Q9dHNmX2J1ZmZlcl9nZXRfZW1wdHlfc2luZ2xldG9u
KCk7CisjbGluZSAyMDY2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURW
QU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQU5ZX1JFQUQpCisgICAgeworI2xpbmUg
MTUxOCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9idWZmZXJfdCAqKmRlc3QgPSAodHNmX2J1
ZmZlcl90KiopCisgICAgICAgICAgICAoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkp
OworICAgICAgICAKKyAgICAgICAgKmRlc3QgPSB0c2ZfYnVmZmVyX3JlYWRfZnJvbV9idWYodHlw
ZXMsICZjdXIsIGVuZCwgcmVnaW9uKTsKKyAgICAgICAgaWYgKCpkZXN0ID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0KKyNsaW5lIDIwODAgImdwY19pbnRl
cnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRf
QkVHSU4oSV9BTllfU0tJUCkKKyAgICB7CisjbGluZSAxNTI5ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgaWYgKCF0c2ZfYnVmZmVyX3NraXBfaW5fYnVmKHR5cGVzLCZjdXIsZW5kKSkgeworICAgICAg
ICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgfQorI2xpbmUgMjA5MCAiZ3BjX2ludGVycHJl
dGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJ
TihJX0FOWV9TSVpFKQorICAgIHsKKyNsaW5lIDE1MzYgImdwY19zcGVjLmluIgorICAgICAgICB0
c2ZfYnVmZmVyX3QgKipzcmM9KHRzZl9idWZmZXJfdCoqKQorICAgICAgICAgICAgKElOVF9TVEFD
S19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgCisgICAgICAgIHNpemUrPXRzZl9i
dWZmZXJfY2FsY19zaXplKCpzcmMpOworI2xpbmUgMjEwMSAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0FOWV9X
UklURSkKKyAgICB7CisjbGluZSAxNTQ0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX2J1ZmZl
cl90ICoqc3JjPSh0c2ZfYnVmZmVyX3QqKikKKyAgICAgICAgICAgIChJTlRfU1RBQ0tfUFRSKDAp
ICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIAorICAgICAgICBpZiAoIXRzZl9idWZmZXJfd3Jp
dGVfdG9fYnVmKCpzcmMsb3V0X21hcCwmY3VyKSkgeworICAgICAgICAgICAgSU5UX0ZBSUxVUkUo
KTsKKyAgICAgICAgfQorI2xpbmUgMjExNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9Cisg
ICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0FOWV9DT1BZKQorICAg
IHsKKyNsaW5lIDE1NTQgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfYnVmZmVyX3QgKipkZXN0
PSh0c2ZfYnVmZmVyX3QqKikKKyAgICAgICAgICAgIChJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NU
UkVBTSgwKSk7CisgICAgICAgIHRzZl9idWZmZXJfdCAqKnNyYz0odHNmX2J1ZmZlcl90KiopCisg
ICAgICAgICAgICAoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICAK
KyAgICAgICAgKmRlc3Q9dHNmX2J1ZmZlcl9jbG9uZV9pbigqc3JjLHJlZ2lvbik7CisgICAgICAg
IGlmICgqZGVzdD09TlVMTCkgeworICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAg
fQorI2xpbmUgMjEzMCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX01FTUNQWSkKKyAgICB7CisjbGluZSAxNTY3
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IGRlc3Rfb2Zmc2V0PUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIHVpbnRwdHJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAg
IG1lbWNweShJTlRfU1RBQ0tfUFRSKDEpK2Rlc3Rfb2Zmc2V0LAorICAgICAgICAgICAgICAgSU5U
X1NUQUNLX1BUUigwKStzcmNfb2Zmc2V0LAorICAgICAgICAgICAgICAgSU5UX1NUUkVBTSgyKSk7
CisjbGluZSAyMTQyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5D
RSgzKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9BUlJBWSkKKyAgICB7CisjbGluZSAx
NTc2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9hcnJheV90ICpkZXN0PQorICAg
ICAgICAgICAgKHRzZl9uYXRpdmVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RS
RUFNKDApKTsKKyAgICAgICAgdHNmX25hdGl2ZV9hcnJheV90ICpzcmM9CisgICAgICAgICAgICAo
dHNmX25hdGl2ZV9hcnJheV90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOwor
ICAgICAgICB1aW50MzJfdCBlbGVfc2l6ZT1JTlRfU1RSRUFNKDIpOworICAgICAgICAKKyAgICAg
ICAgZGVzdC0+bGVuPXNyYy0+bGVuOworICAgICAgICAKKyAgICAgICAgZGVzdC0+ZGF0YSA9IHRz
Zl9jb25kX2FsbG9jKHJlZ2lvbiwgZGVzdC0+bGVuICogZWxlX3NpemUpOworICAgICAgICBpZiAo
ZGVzdC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgYWxsb2NhdGUgYXJyYXkgZnJvbSByZWdpb24iKTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJF
KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1lbWNweShkZXN0LT5kYXRhLCBzcmMt
PmRhdGEsIGRlc3QtPmxlbiAqIGVsZV9zaXplKTsKKyNsaW5lIDIxNjQgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDMpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX0JJVFZFQ1RPUikKKyAgICB7CisjbGluZSAxNTk1ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqZGVzdCA9CisgICAgICAgICAgICAodHNmX25hdGl2
ZV9iaXR2ZWN0b3JfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAg
ICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqc3JjID0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZl
X2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAg
ICAKKyAgICAgICAgZGVzdC0+bnVtX2JpdHMgPSBzcmMtPm51bV9iaXRzOworICAgICAgICAKKyAg
ICAgICAgZGVzdC0+Yml0cyA9IHRzZl9jb25kX2FsbG9jKHJlZ2lvbiwgKGRlc3QtPm51bV9iaXRz
ICsgNykgPj4gMyk7CisgICAgICAgIGlmIChkZXN0LT5iaXRzID09IE5VTEwpIHsKKyAgICAgICAg
ICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBiaXR2ZWN0b3IgZnJvbSByZWdp
b24iKTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIG1lbWNweShkZXN0LT5iaXRzLCBzcmMtPmJpdHMsIChkZXN0LT5udW1fYml0cyArIDcp
ID4+IDMpOworI2xpbmUgMjE4NSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX0ZST01f
QykKKyAgICB7CisjbGluZSAxNjEzICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9i
aXR2ZWN0b3JfdCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90Kiko
SU5UX1NUQUNLX1BUUigxKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICB0c2ZfbmF0aXZlX3Vp
bnQ4X2FycmF5X3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQ4X2FycmF5X3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSk7CisgICAgICAgIHVpbnQ4X3QgKnNy
Y19jdXI7CisgICAgICAgIGdwY19jb3B5X2FycmF5X3RvX2JpdHZlY3RvcigpCisjbGluZSAyMTk4
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfQ09QWV9CSVRWRUNUT1JfRlJPTV9TKQorICAgIHsKKyNsaW5lIDE2
MjMgImdwY19zcGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90ICpkZXN0PQor
ICAgICAgICAgICAgKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsg
SU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHRzZl9uYXRpdmVfdWludDE2X2FycmF5X3QgKnNyYz0K
KyAgICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQxNl9hcnJheV90KikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICB1aW50MTZfdCAqc3JjX2N1cjsKKyAgICAgICAg
Z3BjX2NvcHlfYXJyYXlfdG9fYml0dmVjdG9yKCkKKyNsaW5lIDIyMTEgImdwY19pbnRlcnByZXRl
ci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4o
SV9DT1BZX0JJVFZFQ1RPUl9GUk9NX0wpCisgICAgeworI2xpbmUgMTYzMyAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmRlc3Q9CisgICAgICAgICAgICAodHNm
X25hdGl2ZV9iaXR2ZWN0b3JfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RSRUFNKDApKTsK
KyAgICAgICAgdHNmX25hdGl2ZV91aW50MzJfYXJyYXlfdCAqc3JjPQorICAgICAgICAgICAgKHRz
Zl9uYXRpdmVfdWludDMyX2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgx
KSk7CisgICAgICAgIHVpbnQzMl90ICpzcmNfY3VyOworICAgICAgICBncGNfY29weV9hcnJheV90
b19iaXR2ZWN0b3IoKQorI2xpbmUgMjIyNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9Cisg
ICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9S
X0ZST01fTEwpCisgICAgeworI2xpbmUgMTY0MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9u
YXRpdmVfYml0dmVjdG9yX3QgKmRlc3Q9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0
b3JfdCopKElOVF9TVEFDS19QVFIoMSkgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgdHNmX25h
dGl2ZV91aW50NjRfYXJyYXlfdCAqc3JjPQorICAgICAgICAgICAgKHRzZl9uYXRpdmVfdWludDY0
X2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSk7CisgICAgICAgIHVp
bnQ2NF90ICpzcmNfY3VyOworICAgICAgICBncGNfY29weV9hcnJheV90b19iaXR2ZWN0b3IoKQor
I2xpbmUgMjIzNyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0Uo
Mik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX0ZST01fRikKKyAgICB7
CisjbGluZSAxNjUzICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3Jf
dCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNL
X1BUUigxKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICB0c2ZfbmF0aXZlX2Zsb2F0X2FycmF5
X3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2Zsb2F0X2FycmF5X3QqKShJTlRfU1RB
Q0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSk7CisgICAgICAgIGZsb2F0ICpzcmNfY3VyOworICAg
ICAgICBncGNfY29weV9hcnJheV90b19iaXR2ZWN0b3IoKQorI2xpbmUgMjI1MCAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX0NPUFlfQklUVkVDVE9SX0ZST01fRCkKKyAgICB7CisjbGluZSAxNjYzICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqZGVzdD0KKyAgICAgICAgICAg
ICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigxKSArIElOVF9TVFJFQU0o
MCkpOworICAgICAgICB0c2ZfbmF0aXZlX2RvdWJsZV9hcnJheV90ICpzcmM9CisgICAgICAgICAg
ICAodHNmX25hdGl2ZV9kb3VibGVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RS
RUFNKDEpKTsKKyAgICAgICAgZG91YmxlICpzcmNfY3VyOworICAgICAgICBncGNfY29weV9hcnJh
eV90b19iaXR2ZWN0b3IoKQorI2xpbmUgMjI2MyAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9
CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVD
VE9SX1RPX0MpCisgICAgeworI2xpbmUgMTY3MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9u
YXRpdmVfdWludDhfYXJyYXlfdCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQ4
X2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHRz
Zl9uYXRpdmVfYml0dmVjdG9yX3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZl
Y3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICB1aW50
OF90ICpkZXN0X2N1cjsKKyAgICAgICAgZ3BjX2NvcHlfYml0dmVjdG9yX3RvX2FycmF5KDEpCisj
bGluZSAyMjc2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgy
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09QWV9CSVRWRUNUT1JfVE9fUykKKyAgICB7Cisj
bGluZSAxNjgzICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV91aW50MTZfYXJyYXlf
dCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX3VpbnQxNl9hcnJheV90KikoSU5UX1NU
QUNLX1BUUigxKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICB0c2ZfbmF0aXZlX2JpdHZlY3Rv
cl90ICpzcmM9CisgICAgICAgICAgICAodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCopKElOVF9TVEFD
S19QVFIoMCkgKyBJTlRfU1RSRUFNKDEpKTsKKyAgICAgICAgdWludDE2X3QgKmRlc3RfY3VyOwor
ICAgICAgICBncGNfY29weV9iaXR2ZWN0b3JfdG9fYXJyYXkoMikKKyNsaW5lIDIyODkgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9DT1BZX0JJVFZFQ1RPUl9UT19MKQorICAgIHsKKyNsaW5lIDE2OTMgImdwY19z
cGVjLmluIgorICAgICAgICB0c2ZfbmF0aXZlX3VpbnQzMl9hcnJheV90ICpkZXN0PQorICAgICAg
ICAgICAgKHRzZl9uYXRpdmVfdWludDMyX2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5U
X1NUUkVBTSgwKSk7CisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKnNyYz0KKyAgICAg
ICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMSkpOworICAgICAgICB1aW50MzJfdCAqZGVzdF9jdXI7CisgICAgICAgIGdwY19jb3B5
X2JpdHZlY3Rvcl90b19hcnJheSg0KQorI2xpbmUgMjMwMiAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlf
QklUVkVDVE9SX1RPX0xMKQorICAgIHsKKyNsaW5lIDE3MDMgImdwY19zcGVjLmluIgorICAgICAg
ICB0c2ZfbmF0aXZlX3VpbnQ2NF9hcnJheV90ICpkZXN0PQorICAgICAgICAgICAgKHRzZl9uYXRp
dmVfdWludDY0X2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7Cisg
ICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0
aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAg
ICAgICB1aW50NjRfdCAqZGVzdF9jdXI7CisgICAgICAgIGdwY19jb3B5X2JpdHZlY3Rvcl90b19h
cnJheSg4KQorI2xpbmUgMjMxNSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5U
X0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX1RPX0Yp
CisgICAgeworI2xpbmUgMTcxMyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfZmxv
YXRfYXJyYXlfdCAqZGVzdD0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2Zsb2F0X2FycmF5X3Qq
KShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHRzZl9uYXRpdmVf
Yml0dmVjdG9yX3QgKnNyYz0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpOworICAgICAgICBmbG9hdCAqZGVzdF9j
dXI7CisgICAgICAgIGdwY19jb3B5X2JpdHZlY3Rvcl90b19hcnJheSg0KQorI2xpbmUgMjMyOCAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0NPUFlfQklUVkVDVE9SX1RPX0QpCisgICAgeworI2xpbmUgMTcyMyAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfZG91YmxlX2FycmF5X3QgKmRlc3Q9Cisg
ICAgICAgICAgICAodHNmX25hdGl2ZV9kb3VibGVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMSkg
KyBJTlRfU1RSRUFNKDApKTsKKyAgICAgICAgdHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCAqc3JjPQor
ICAgICAgICAgICAgKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgxKSk7CisgICAgICAgIGRvdWJsZSAqZGVzdF9jdXI7CisgICAgICAgIGdwY19j
b3B5X2JpdHZlY3Rvcl90b19hcnJheSg4KQorI2xpbmUgMjM0MSAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JF
QURDX1RPX0NIT0lDRSkKKyAgICBJTlRfUFVTSCgpOworICAgIHsKKyNsaW5lIDE3MzMgImdwY19z
cGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygmdWk4X3RtcCxjdXIpOworICAgICAg
ICBpZiAodWk4X3RtcD09MjU1KSB7CisgICAgICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsVUlOVDMy
X01BWCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsdWk4
X3RtcCk7CisgICAgICAgIH0KKyNsaW5lIDIzNTUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9SRUFETCkKKyAg
ICBJTlRfUFVTSCgpOworICAgIHsKKyNsaW5lIDE3NDMgImdwY19zcGVjLmluIgorICAgICAgICBj
b3B5X250b2hsX2luY3NyYygodWludDhfdCopJnVpMzJfdG1wLGN1cik7CisgICAgICAgIElOVF9T
VEFDS19TRVQoMCx1aTMyX3RtcCk7CisjbGluZSAyMzY1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQVJSQVlf
TEVOX1dSSVRFX0ZJRUxEKQorICAgIHsKKyNsaW5lIDE3NDkgImdwY19zcGVjLmluIgorICAgICAg
ICB1aTMyX3RtcD0qKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDAp
KSk7CisgICAgICAgIGlmICh1aTMyX3RtcD49MjU1KSB7CisgICAgICAgICAgICB1aThfdG1wPTI1
NTsKKyAgICAgICAgICAgIGNvcHlfaHRvbmNfaW5jZHN0KGN1ciwmdWk4X3RtcCk7CisgICAgICAg
ICAgICBjb3B5X2h0b25sX2luY2RzdChjdXIsKHVpbnQ4X3QqKSZ1aTMyX3RtcCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB1aThfdG1wPXVpMzJfdG1wOworICAgICAgICAgICAgY29w
eV9odG9uY19pbmNkc3QoY3VyLCZ1aThfdG1wKTsKKyAgICAgICAgfQorI2xpbmUgMjM4MSAiZ3Bj
X2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkK
K0lOVF9CRUdJTihJX0FSUkFZX0xFTl9SRUFEX0ZJRUxEKQorICAgIHsKKyNsaW5lIDE3NjIgImdw
Y19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCxjdXIsZW5k
LGJvdW5kc19lcnJvcik7CisgICAgICAgIGlmICh1aThfdG1wPT0yNTUpIHsKKyAgICAgICAgICAg
IGNvcHlfbnRvaGxfaW5jc3JjX2JjKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApLGN1
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCxib3VuZHNfZXJyb3IpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRS
KDApICsgSU5UX1NUUkVBTSgwKSkpID0gdWk4X3RtcDsKKyAgICAgICAgfQorI2xpbmUgMjM5NSAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX0FSUkFZX0xFTl9SRUFEX0xPQ0FMKQorICAgIElOVF9QVVNIKCk7Cisg
ICAgeworI2xpbmUgMTc3MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3Jj
X2JjKCZ1aThfdG1wLGN1cixlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAgICAgaWYgKHVpOF90bXA9
PTI1NSkgeworICAgICAgICAgICAgY29weV9udG9obF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZ1aTMy
X3RtcCxjdXIsZW5kLGJvdW5kc19lcnJvcik7CisgICAgICAgICAgICBJTlRfU1RBQ0tfU0VUKDAs
dWkzMl90bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSU5UX1NUQUNLX1NFVCgw
LHVpOF90bXApOworICAgICAgICB9CisjbGluZSAyNDEwICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgor
ICAgIH0KKyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQVJSQVlf
TEVOX1NLSVApCisgICAgeworI2xpbmUgMTc4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGNvcHlf
bnRvaGNfaW5jc3JjX2JjKCZ1aThfdG1wLGN1cixlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAgICAg
aWYgKHVpOF90bXA9PTI1NSkgeworICAgICAgICAgICAgaWYgKGN1cis0PmVuZCkgeworICAgICAg
ICAgICAgICAgIGdvdG8gYm91bmRzX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y3VyKz00OworICAgICAgICB9CisjbGluZSAyNDI0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUX01BU0tf
V1JJVEUpCisgICAgeworI2xpbmUgMTc5NSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpMzJfdG1w
PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIGlmICgqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BU
UigwKSArIElOVF9TVFJFQU0oMSkpKSkgeworICAgICAgICAgICAgKmN1cnw9KDE8PHVpMzJfdG1w
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpjdXImPX4oMTw8dWkzMl90bXApOwor
ICAgICAgICB9CisjbGluZSAyNDM3ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJ
TlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUX01BU0tfUkVBRCkKKyAg
ICB7CisjbGluZSAxODA1ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKCpjdXImKDE8PElOVF9T
VFJFQU0oMCkpKSB7CisgICAgICAgICAgICAqKCh0c2ZfYm9vbF90KikoSU5UX1NUQUNLX1BUUigw
KSArIElOVF9TVFJFQU0oMSkpKSA9IHRzZl90cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgKigodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDEpKSkg
PSB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyNsaW5lIDI0NDkgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRf
TUFTS19SRUFEX1RPX1MpCisgICAgeworI2xpbmUgMTgxNCAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IGlmICgqY3VyJigxPDxJTlRfU1RSRUFNKDApKSkgeworICAgICAgICAgICAgKigodWludDE2X3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSkpID0gMTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICooKHVpbnQxNl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMSkpKSA9IDA7CisgICAgICAgIH0KKyNsaW5lIDI0NjEgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRf
TUFTS19SRUFEX1RPX0wpCisgICAgeworI2xpbmUgMTgyMyAiZ3BjX3NwZWMuaW4iCisgICAgICAg
IGlmICgqY3VyJigxPDxJTlRfU1RSRUFNKDApKSkgeworICAgICAgICAgICAgKigodWludDMyX3Qq
KShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgxKSkpID0gMTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJF
QU0oMSkpKSA9IDA7CisgICAgICAgIH0KKyNsaW5lIDI0NzMgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRf
TUFTS19SRUFEX1RPX0xMKQorICAgIHsKKyNsaW5lIDE4MzIgImdwY19zcGVjLmluIgorICAgICAg
ICBpZiAoKmN1ciYoMTw8SU5UX1NUUkVBTSgwKSkpIHsKKyAgICAgICAgICAgICooKHVpbnQ2NF90
KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpKSA9IDE7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAqKCh1aW50NjRfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RS
RUFNKDEpKSkgPSAwOworICAgICAgICB9CisjbGluZSAyNDg1ICJncGNfaW50ZXJwcmV0ZXIuZ2Vu
IgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklU
X01BU0tfUkVBRF9UT19GKQorICAgIHsKKyNsaW5lIDE4NDEgImdwY19zcGVjLmluIgorICAgICAg
ICBpZiAoKmN1ciYoMTw8SU5UX1NUUkVBTSgwKSkpIHsKKyAgICAgICAgICAgICooKGZsb2F0Kiko
SU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpKSA9IDEuOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgKigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgx
KSkpID0gMC47CisgICAgICAgIH0KKyNsaW5lIDI0OTcgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfTUFT
S19SRUFEX1RPX0QpCisgICAgeworI2xpbmUgMTg1MCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlm
ICgqY3VyJigxPDxJTlRfU1RSRUFNKDApKSkgeworICAgICAgICAgICAgKigoZG91YmxlKikoSU5U
X1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkpKSA9IDEuOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgKigoZG91YmxlKikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMSkp
KSA9IDAuOworICAgICAgICB9CisjbGluZSAyNTA5ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUX1dSSVRF
KQorICAgIHsKKyNsaW5lIDE4NTkgImdwY19zcGVjLmluIgorICAgICAgICB1aThfdG1wPSooKHRz
Zl9ib29sX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPworICAgICAgICAg
ICAgICAgIHRzZl90cnVlOnRzZl9mYWxzZTsKKyAgICAgICAgY29weV9odG9uY19pbmNkc3QoY3Vy
LCZ1aThfdG1wKTsKKyNsaW5lIDI1MTkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAg
IElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRCkKKyAgICB7
CisjbGluZSAxODY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoJnVp
OF90bXAsY3VyKTsKKyAgICAgICAgKigodHNmX2Jvb2xfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJ
TlRfU1RSRUFNKDApKSk9CisgICAgICAgICAgICB1aThfdG1wP3RzZl90cnVlOnRzZl9mYWxzZTsK
KyNsaW5lIDI1MjkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNF
KDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRF9UT19TKQorICAgIHsKKyNsaW5l
IDE4NzMgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hjX2luY3NyYygmdWk4X3RtcCxj
dXIpOworICAgICAgICAqKCh1aW50MTZfdCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFN
KDApKSk9CisgICAgICAgICAgICB1aThfdG1wPzE6MDsKKyNsaW5lIDI1MzkgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVH
SU4oSV9CSVRfUkVBRF9UT19MKQorICAgIHsKKyNsaW5lIDE4ODAgImdwY19zcGVjLmluIgorICAg
ICAgICBjb3B5X250b2hjX2luY3NyYygmdWk4X3RtcCxjdXIpOworICAgICAgICAqKCh1aW50MzJf
dCopKElOVF9TVEFDS19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk9CisgICAgICAgICAgICB1aThf
dG1wPzE6MDsKKyNsaW5lIDI1NDkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRF9UT19MTCkKKyAg
ICB7CisjbGluZSAxODg3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMo
JnVpOF90bXAsY3VyKTsKKyAgICAgICAgKigodWludDY0X3QqKShJTlRfU1RBQ0tfUFRSKDApICsg
SU5UX1NUUkVBTSgwKSkpPQorICAgICAgICAgICAgdWk4X3RtcD8xOjA7CisjbGluZSAyNTU5ICJn
cGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQo
KQorSU5UX0JFR0lOKElfQklUX1JFQURfVE9fRikKKyAgICB7CisjbGluZSAxODk0ICJncGNfc3Bl
Yy5pbiIKKyAgICAgICAgY29weV9udG9oY19pbmNzcmMoJnVpOF90bXAsY3VyKTsKKyAgICAgICAg
KigoZmxvYXQqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSkpPQorICAgICAgICAg
ICAgdWk4X3RtcD8xLjowLjsKKyNsaW5lIDI1NjkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRfUkVBRF9U
T19EKQorICAgIHsKKyNsaW5lIDE5MDEgImdwY19zcGVjLmluIgorICAgICAgICBjb3B5X250b2hj
X2luY3NyYygmdWk4X3RtcCxjdXIpOworICAgICAgICAqKChkb3VibGUqKShJTlRfU1RBQ0tfUFRS
KDApICsgSU5UX1NUUkVBTSgwKSkpPQorICAgICAgICAgICAgdWk4X3RtcD8xLjowLjsKKyNsaW5l
IDI1NzkgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9TS0lQKQorICAgIHsKKyNsaW5lIDE5MDggImdwY19zcGVj
LmluIgorICAgICAgICBjdXIrPUlOVF9TVFJFQU0oMCk7CisjbGluZSAyNTg3ICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQVJSQVlfQkNfQU5EX1NLSVBfRklFTEQpCisgICAgeworI2xpbmUgMTkxMyAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIHVpbnRwdHJfdCBvZmZzZXQ9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAg
dWludDMyX3QgZWxlX3NpemU9SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgdWludDMyX3Qgc2l6ZT1l
bGVfc2l6ZSogKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgb2Zmc2V0KSk7CisgICAg
ICAgIGlmIChjdXIgKyBzaXplID4gZW5kKSB7CisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJv
cjsKKyAgICAgICAgfQorICAgICAgICBjdXIrPXNpemU7CisjbGluZSAyNjAxICJncGNfaW50ZXJw
cmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JF
R0lOKElfQVJSQVlfU0tJUCkKKyAgICB7CisjbGluZSAxOTI0ICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgdWludDMyX3QgYXJyYXlfbGVuOworICAgICAgICB1aW50MzJfdCBzaXplOworICAgICAgICAK
KyAgICAgICAgY29weV9udG9oY19pbmNzcmNfYmMoJnVpOF90bXAsY3VyLGVuZCxib3VuZHNfZXJy
b3IpOworICAgICAgICBpZiAodWk4X3RtcD09MjU1KSB7CisgICAgICAgICAgICBjb3B5X250b2hs
X2luY3NyY19iYygodWludDhfdCopJmFycmF5X2xlbixjdXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGFycmF5X2xlbiA9IHVpOF90bXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHNpemU9YXJyYXlfbGVuKklOVF9TVFJFQU0oMCk7CisgICAgICAgIAorICAgICAgICBpZiAoY3Vy
ICsgc2l6ZSA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGN1cis9c2l6ZTsKKyNsaW5lIDI2MjYgImdwY19pbnRlcnBy
ZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVH
SU4oSV9CSVRWRUNUT1JfQkNfQU5EX1NLSVBfRklFTEQpCisgICAgeworI2xpbmUgMTk0NiAiZ3Bj
X3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IHNpemU9KCooKHVpbnQzMl90KikoSU5UX1NUQUNL
X1BUUigwKSArIElOVF9TVFJFQU0oMCkpKSArIDcpPj4zOworICAgICAgICBpZiAoY3VyK3NpemU+
ZW5kKSB7CisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsKKyAgICAgICAgfQorICAgICAg
ICBjdXIrPXNpemU7CisjbGluZSAyNjM4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQklUVkVDVE9SX1NLSVAp
CisgICAgeworI2xpbmUgMTk1NSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG51bV9i
aXRzOworICAgICAgICB1aW50MzJfdCBzaXplOworICAgICAgICAKKyAgICAgICAgY29weV9udG9o
Y19pbmNzcmNfYmMoJnVpOF90bXAsY3VyLGVuZCxib3VuZHNfZXJyb3IpOworICAgICAgICBpZiAo
dWk4X3RtcD09MjU1KSB7CisgICAgICAgICAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhf
dCopJm51bV9iaXRzLGN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCxi
b3VuZHNfZXJyb3IpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbnVtX2JpdHMgPSB1
aThfdG1wOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzaXplPSgobnVtX2JpdHMgKyA3
KT4+Myk7CisgICAgICAgIAorICAgICAgICBpZiAoY3VyICsgc2l6ZSA+IGVuZCkgeworICAgICAg
ICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGN1
cis9c2l6ZTsKKyNsaW5lIDI2NjMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9JTkNfU0laRSkKKyAgICB7Cisj
bGluZSAxOTc3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgc2l6ZSs9SU5UX1NUUkVBTSgwKTsKKyNs
aW5lIDI2NzEgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEp
OworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9JTkNfU0laRV9BUlJBWV9MRU4pCisgICAgeworI2xp
bmUgMTk4MiAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmICgqKCh1aW50MzJfdCopKElOVF9TVEFD
S19QVFIoMCkgKyBJTlRfU1RSRUFNKDApKSk+PTI1NSkgeworICAgICAgICAgICAgc2l6ZSs9NTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNpemUrPTE7CisgICAgICAgIH0KKyNsaW5l
IDI2ODMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9JTkNfU0laRV9BUlJBWSkKKyAgICB7CisjbGluZSAxOTkx
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX25hdGl2ZV9hcnJheV90ICphcnJheT0KKyAgICAg
ICAgICAgICh0c2ZfbmF0aXZlX2FycmF5X3QqKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVB
TSgwKSk7CisgICAgICAgIHVpbnQzMl90IGVsZV9zaXplPUlOVF9TVFJFQU0oMSk7CisgICAgICAg
IAorICAgICAgICBpZiAoYXJyYXktPmxlbj49MjU1KSB7CisgICAgICAgICAgICBzaXplKz01Owor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZSs9MTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgc2l6ZSs9ZWxlX3NpemUqYXJyYXktPmxlbjsKKyNsaW5lIDI3MDEgImdwY19p
bnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJ
TlRfQkVHSU4oSV9JTkNfU0laRV9CSVRWRUNUT1IpCisgICAgeworI2xpbmUgMjAwNiAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIHRzZl9uYXRpdmVfYml0dmVjdG9yX3QgKmJpdHZlY3Rvcj0KKyAgICAg
ICAgICAgICh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9T
VFJFQU0oMCkpOworICAgICAgICAKKyAgICAgICAgaWYgKGJpdHZlY3Rvci0+bnVtX2JpdHM+PTI1
NSkgeworICAgICAgICAgICAgc2l6ZSs9NTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNpemUrPTE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNpemUrPSgoYml0dmVjdG9y
LT5udW1fYml0cys3KT4+Myk7CisjbGluZSAyNzE4ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQkMpCisgICAg
eworI2xpbmUgMjAyMCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmIChjdXIrSU5UX1NUUkVBTSgw
KSA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyNs
aW5lIDI3MjggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEp
OworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9BUlJBWV9CQ19GSUVMRCkKKyAgICB7CisjbGluZSAy
MDI3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IG9mZnNldD1JTlRfU1RSRUFNKDAp
OworICAgICAgICB1aW50MzJfdCBlbGVfc2l6ZT1JTlRfU1RSRUFNKDEpOworICAgICAgICBpZiAo
Y3VyICsgZWxlX3NpemUqICooKHVpbnQzMl90KikoSU5UX1NUQUNLX1BUUigwKSArIG9mZnNldCkp
ID4gZW5kKSB7CisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsKKyAgICAgICAgfQorI2xp
bmUgMjc0MCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMik7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0FSUkFZX0JDX0xPQ0FMKQorICAgIHsKKyNsaW5lIDIw
MzYgImdwY19zcGVjLmluIgorICAgICAgICBpZiAoY3VyICsgSU5UX1NUUkVBTSgwKSAqIElOVF9T
VEFDSygwKSA+IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAg
IH0KKyNsaW5lIDI3NTAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZB
TkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfQkNfRklFTEQpCisgICAg
eworI2xpbmUgMjA0MyAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmIChjdXIgKyAoKCooKHVpbnQz
Ml90KikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkpKSArIDcpPj4zKSA+IGVuZCkg
eworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyNsaW5lIDI3NjAg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VO
RCgpCitJTlRfQkVHSU4oSV9CSVRWRUNUT1JfQkNfTE9DQUwpCisgICAgeworI2xpbmUgMjA1MCAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIGlmIChjdXIgKyAoKElOVF9TVEFDSygwKSArIDcpPj4zKSA+
IGVuZCkgeworICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyNsaW5l
IDI3NzAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDApOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9NQUxMT0NfQlVGKQorICAgIHsKKyNsaW5lIDIwNTcgImdw
Y19zcGVjLmluIgorICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZlciA9ICh0c2ZfYnVmZmVyX3Qq
KUlOVF9TVEFDS19QVFIoMSk7CisgICAgICAgIGlmIChzaXplID4gYnVmZmVyLT5zaXplKSB7Cisg
ICAgICAgICAgICBidWYgPSB0c2ZfY29uZF9hbGxvYyhyZWdpb24sIHNpemUpOworICAgICAgICAg
ICAgaWYgKGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IHRzZl9jb25kX2FsbG9jIGJ1ZmZlciIpOworICAgICAgICAgICAgICAgIElOVF9GQUlM
VVJFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBrZWVwID0gdHNmX3RydWU7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWYgPSBidWZmZXItPmRhdGE7CisgICAgICAgIH0K
KyAgICAgICAgY3VyID0gYnVmOworICAgICAgICBlbmQgPSBidWYgKyBzaXplOworI2xpbmUgMjc5
MCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRf
RU5EKCkKK0lOVF9CRUdJTihJX1BPUF9CVUYpCisgICAgeworI2xpbmUgMjA3NCAiZ3BjX3NwZWMu
aW4iCisgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmZmVyPSh0c2ZfYnVmZmVyX3QqKUlOVF9TVEFD
S19QVFIoMCk7CisgICAgICAgIAorICAgICAgICBidWY9YnVmZmVyLT5kYXRhOworICAgICAgICBj
dXI9YnVmOworICAgICAgICBlbmQ9YnVmK2J1ZmZlci0+c2l6ZTsKKyAgICAgICAga2VlcD10c2Zf
ZmFsc2U7CisgICAgICAgIHR5cGVzPWJ1ZmZlci0+dHlwZXM7CisjbGluZSAyODA0ICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfUE9QKCk7CisgICAgSU5UX0FEVkFOQ0UoMCk7
CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0RFU1RST1lfQlVGRkVSKQorICAgIElOVF9QVVNIKCk7
CisgICAgeworI2xpbmUgMjA4NSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHRzZl9idWZmZXJfdCAq
KmFyZyA9ICh0c2ZfYnVmZmVyX3QqKikoSU5UX1NUQUNLX1BUUigwKSArIElOVF9TVFJFQU0oMCkp
OworICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3koKmFyZyk7CisjbGluZSAyODE1ICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5U
X0JFR0lOKElfTUFLRV9PVVRfTUFQKQorICAgIHsKKyNsaW5lIDIwOTEgImdwY19zcGVjLmluIgor
ICAgICAgICBvdXRfbWFwPXRzZl90eXBlX291dF9tYXBfY3JlYXRlKCk7CisgICAgICAgIGlmIChv
dXRfbWFwPT1OVUxMKSB7CisgICAgICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9Cisj
bGluZSAyODI2ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgw
KTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUxMT0NfUk9PVF9NQVlCRV8yTkQpCisgICAgewor
I2xpbmUgMjA5OSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmIChJTlRfU1RBQ0tfUFRSKDEpPT1O
VUxMKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uPT1OVUxMKSB7CisgICAgICAgICAgICAgICAg
cmVnaW9uPXRzZl9yZWdpb25fY3JlYXRlKElOVF9TVFJFQU0oMCkpOworICAgICAgICAgICAgICAg
IGlmIChyZWdpb249PU5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygi
Q291bGQgbm90IHRzZl9yZWdpb25fY3JlYXRlKCkiKTsKKyAgICAgICAgICAgICAgICAgICAgSU5U
X0ZBSUxVUkUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAga2VlcF9yZWdp
b249dHNmX3RydWU7CisgICAgICAgICAgICAgICAgSU5UX1NUQUNLX1BUUl9TRVQoMSxyZWdpb24p
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2b2lkICpkYXRhPXRzZl9y
ZWdpb25fYWxsb2MocmVnaW9uLElOVF9TVFJFQU0oMCkpOworICAgICAgICAgICAgICAgIGlmIChk
YXRhPT1OVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCB0c2ZfcmVnaW9uX2FsbG9jKCkiKTsKKyAgICAgICAgICAgICAgICAgICAgSU5UX0ZBSUxVUkUo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSU5UX1NUQUNLX1BUUl9TRVQo
MSxkYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2xpbmUgMjg1MSAiZ3BjX2ludGVy
cHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9C
RUdJTihJX0FMTE9DKQorICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMjEyMSAiZ3BjX3Nw
ZWMuaW4iCisgICAgICAgIHZvaWQgKnRtcCA9IHRzZl9jb25kX2FsbG9jKHJlZ2lvbiwgSU5UX1NU
UkVBTSgwKSk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VUKDAsIHRtcCk7CisgICAgICAgIGlm
IChJTlRfU1RBQ0tfUFRSKDApID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8o
IkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7CisgICAgICAgICAgICBJTlRfRkFJTFVSRSgp
OworICAgICAgICB9CisjbGluZSAyODY1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUxMT0NfQVJSQVkpCisg
ICAgSU5UX1BVU0goKTsKKyAgICB7CisjbGluZSAyMTMxICJncGNfc3BlYy5pbiIKKyAgICAgICAg
dHNmX25hdGl2ZV9hcnJheV90ICphcnJheT0KKyAgICAgICAgICAgICh0c2ZfbmF0aXZlX2FycmF5
X3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSk7CisgICAgICAgIHVpbnQzMl90
IGVsZV9zaXplID0gSU5UX1NUUkVBTSgxKTsKKyAgICAgICAgCisgICAgICAgIGFycmF5LT5kYXRh
ID0gdHNmX2NvbmRfYWxsb2MocmVnaW9uLCBlbGVfc2l6ZSAqIGFycmF5LT5sZW4pOworICAgICAg
ICAKKyAgICAgICAgaWYgKGFycmF5LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7CisgICAgICAgICAgICBJTlRf
RkFJTFVSRSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NF
VCgwLCBhcnJheS0+ZGF0YSk7CisjbGluZSAyODg1ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUxMT0NfQVJS
QVlfMk5EKQorICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMjE0NyAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHRzZl9uYXRpdmVfYXJyYXlfdCAqYXJyYXkgPQorICAgICAgICAgICAgKHRzZl9u
YXRpdmVfYXJyYXlfdCopKElOVF9TVEFDS19QVFIoMikgKyBJTlRfU1RSRUFNKDApKTsKKyAgICAg
ICAgdWludDMyX3QgZWxlX3NpemUgPSBJTlRfU1RSRUFNKDEpOworICAgICAgICAKKyAgICAgICAg
YXJyYXktPmRhdGEgPSB0c2ZfY29uZF9hbGxvYyhyZWdpb24sZWxlX3NpemUgKiBhcnJheS0+bGVu
KTsKKyAgICAgICAgaWYgKGFycmF5LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYygpIik7CisgICAgICAgICAgICBJTlRf
RkFJTFVSRSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NF
VCgwLCBhcnJheS0+ZGF0YSk7CisjbGluZSAyOTA0ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ0FMTCkKKyAg
ICB7CisjbGluZSAyMTYyICJncGNfc3BlYy5pbiIKKyAgICAgICAgKCh2b2lkKCopKHZvaWQqKSlJ
TlRfU1RSRUFNKDEpKShJTlRfU1RBQ0tfUFRSKDApICsgSU5UX1NUUkVBTSgwKSk7CisjbGluZSAy
OTEyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyKTsKK0lO
VF9FTkQoKQorSU5UX0JFR0lOKElfQUREX0NCQUNLKQorICAgIHsKKyNsaW5lIDIxNjcgImdwY19z
cGVjLmluIgorICAgICAgICBpZiAoIXRzZl9yZWdpb25fYWRkX2NiYWNrKHJlZ2lvbiwKKyAgICAJ
CQkgICAgICAodm9pZCopSU5UX1NUUkVBTSgxKSwKKyAgICAJCQkgICAgICBJTlRfU1RBQ0tfUFRS
KDApICsgSU5UX1NUUkVBTSgwKSkpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxk
IG5vdCB0c2ZfcmVnaW9uX2FkZF9jYmFjaygpIik7CisgICAgCUlOVF9GQUlMVVJFKCk7CisgICAg
ICAgIH0KKyNsaW5lIDI5MjUgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9B
RFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9GUkVFX0lNTUVESUFURSkKKyAgICB7
CisjbGluZSAyMTc3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgZnJlZShJTlRfU1RBQ0tfUFRSKDAp
KTsKKyNsaW5lIDI5MzMgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZB
TkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9GUkVFKQorICAgIHsKKyNsaW5lIDIxODIg
ImdwY19zcGVjLmluIgorICAgICAgICB2b2lkICoqYXJnID0gKHZvaWQqKikoSU5UX1NUQUNLX1BU
UigwKSArIElOVF9TVFJFQU0oMCkpOworICAgICAgICBmcmVlKCphcmcpOworI2xpbmUgMjk0MiAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX1NUT1JFX1BUUikKKyAgICB7CisjbGluZSAyMTg4ICJncGNfc3BlYy5p
biIKKyAgICAgICAgKigodWludHB0cl90KikoSU5UX1NUQUNLX1BUUigxKSArIElOVF9TVFJFQU0o
MCkpKSA9IElOVF9TVEFDSygwKTsKKyNsaW5lIDI5NTAgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9TVE9SRV9Q
VFJfMk5EKQorICAgIHsKKyNsaW5lIDIxOTMgImdwY19zcGVjLmluIgorICAgICAgICAqKCh1aW50
cHRyX3QqKShJTlRfU1RBQ0tfUFRSKDIpICsgSU5UX1NUUkVBTSgwKSkpID0gSU5UX1NUQUNLKDAp
OworI2xpbmUgMjk1OCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFO
Q0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1NUT1JFX1ZBTCkKKyAgICB7CisjbGluZSAy
MTk4ICJncGNfc3BlYy5pbiIKKyAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDEp
ICsgSU5UX1NUUkVBTSgwKSkpID0KKyAgICAgICAgICAgICh1aW50MzJfdClJTlRfU1RBQ0soMCk7
CisjbGluZSAyOTY3ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5D
RSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfUFVTSF9QVFIpCisgICAgSU5UX1BVU0goKTsK
KyAgICB7CisjbGluZSAyMjA0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IHRtcD0q
KCh1aW50cHRyX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NUUkVBTSgwKSkpOworICAgICAg
ICBJTlRfU1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5lIDI5NzcgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9QVVNI
X1BUUl8yTkQpCisgICAgSU5UX1BVU0goKTsKKyAgICB7CisjbGluZSAyMjEwICJncGNfc3BlYy5p
biIKKyAgICAgICAgdWludHB0cl90IHRtcD0qKCh1aW50cHRyX3QqKShJTlRfU1RBQ0tfUFRSKDIp
ICsgSU5UX1NUUkVBTSgwKSkpOworICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5l
IDI5ODcgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOwor
SU5UX0VORCgpCitJTlRfQkVHSU4oSV9QVVNIX1BUUl8zUkQpCisgICAgSU5UX1BVU0goKTsKKyAg
ICB7CisjbGluZSAyMjE2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludHB0cl90IHRtcD0qKCh1
aW50cHRyX3QqKShJTlRfU1RBQ0tfUFRSKDMpICsgSU5UX1NUUkVBTSgwKSkpOworICAgICAgICBJ
TlRfU1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5lIDI5OTcgImdwY19pbnRlcnByZXRlci5nZW4iCisg
ICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9QVVNIX1ZB
TCkKKyAgICBJTlRfUFVTSCgpOworICAgIHsKKyNsaW5lIDIyMjIgImdwY19zcGVjLmluIgorICAg
ICAgICB1aW50MzJfdCB0bXA9KigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDEpICsgSU5UX1NU
UkVBTSgwKSkpOworICAgICAgICBJTlRfU1RBQ0tfU0VUKDAsdG1wKTsKKyNsaW5lIDMwMDcgImdw
Y19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDEpOworSU5UX0VORCgp
CitJTlRfQkVHSU4oSV9EVVBfUFRSXzJORCkKKyAgICBJTlRfUFVTSCgpOworICAgIHsKKyNsaW5l
IDIyMjggImdwY19zcGVjLmluIgorICAgICAgICB1aW50cHRyX3QgdG1wPSh1aW50cHRyX3QpSU5U
X1NUQUNLX1BUUigyKTsKKyAgICAgICAgSU5UX1NUQUNLX1NFVCgwLHRtcCk7CisjbGluZSAzMDE3
ICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9F
TkQoKQorSU5UX0JFR0lOKElfUE9QKQorICAgIHsKKyNsaW5lIDIyMzQgImdwY19zcGVjLmluIgor
I2xpbmUgMzAyNCAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX1BPUCgpOwor
ICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UV09fUE9QKQorICAg
IHsKKyNsaW5lIDIyMzggImdwY19zcGVjLmluIgorI2xpbmUgMzAzMiAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX1BPUCgpOworICAgIElOVF9QT1AoKTsKKyAgICBJTlRfQURW
QU5DRSgwKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfVEhSRUVfUE9QKQorICAgIHsKKyNsaW5l
IDIyNDIgImdwY19zcGVjLmluIgorI2xpbmUgMzA0MSAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAg
ICB9CisgICAgSU5UX1BPUCgpOworICAgIElOVF9QT1AoKTsKKyAgICBJTlRfUE9QKCk7CisgICAg
SU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JFUFVTSF9NVUxBRERfUFRS
KQorICAgIElOVF9QVVNIKCk7CisgICAgeworI2xpbmUgMjI0NiAiZ3BjX3NwZWMuaW4iCisgICAg
ICAgIHZvaWQgKnRtcD1JTlRfU1RBQ0tfUFRSKDEpOworICAgICAgICB1aTMyX3RtcD1JTlRfU1RS
RUFNKDApOworICAgICAgICBJTlRfU1RBQ0tfUFRSX1NFVCgxLElOVF9TVEFDS19QVFIoMSkrCisg
ICAgICAgICAgICAoKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDIpICsgdWkzMl90bXApKQor
ICAgICAgICAgICAgICpJTlRfU1RSRUFNKDEpKSk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VU
KDAsdG1wKTsKKyNsaW5lIDMwNTggImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElO
VF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9SRVBVU0hfTVVMQUREX1BUUl8y
TkQpCisgICAgSU5UX1BVU0goKTsKKyAgICB7CisjbGluZSAyMjU2ICJncGNfc3BlYy5pbiIKKyAg
ICAgICAgdm9pZCAqdG1wPUlOVF9TVEFDS19QVFIoMSk7CisgICAgICAgIHVpMzJfdG1wPUlOVF9T
VFJFQU0oMCk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VUKDEsSU5UX1NUQUNLX1BUUigxKSsK
KyAgICAgICAgICAgICgqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMykgKyB1aTMyX3RtcCkp
CisgICAgICAgICAgICAgKklOVF9TVFJFQU0oMSkpKTsKKyAgICAgICAgSU5UX1NUQUNLX1BUUl9T
RVQoMCx0bXApOworI2xpbmUgMzA3MiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAg
SU5UX0FEVkFOQ0UoMik7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX0NPTVBGQUlMSlVNUCkKKyAg
ICB7CisjbGluZSAyMjY2ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKElOVF9TVEFDS19QVFIo
MCkgPj0gSU5UX1NUQUNLX1BUUigxKSkgeworICAgICAgICAgICAgSU5UX1NUUkVBTV9HT1RPKDAp
OworICAgICAgICB9CisjbGluZSAzMDgyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAg
ICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQ09NUEZBSUxKVU1QXzJO
RCkKKyAgICB7CisjbGluZSAyMjczICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKElOVF9TVEFD
S19QVFIoMSkgPj0gSU5UX1NUQUNLX1BUUigyKSkgeworICAgICAgICAgICAgSU5UX1NUUkVBTV9H
T1RPKDApOworICAgICAgICB9CisjbGluZSAzMDkyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAg
IH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfQUREQ09NUEpV
TVApCisgICAgeworI2xpbmUgMjI4MCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IGNv
bnN0YW50PUlOVF9TVFJFQU0oMCk7CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NF
VCgwLElOVF9TVEFDS19QVFIoMCkrY29uc3RhbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKElO
VF9TVEFDS19QVFIoMCkgPCBJTlRfU1RBQ0tfUFRSKDEpKSB7CisgICAgICAgICAgICBJTlRfU1RS
RUFNX0dPVE8oMSk7CisgICAgICAgIH0KKyNsaW5lIDMxMDYgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDIpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9UV09f
QUREQ09NUEpVTVApCisgICAgeworI2xpbmUgMjI5MSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVp
bnQzMl90IGRlc3RfY29uc3Q9SU5UX1NUUkVBTSgwKTsKKyAgICAgICAgdWludDMyX3Qgc3JjX2Nv
bnN0PUlOVF9TVFJFQU0oMSk7CisgICAgICAgIAorICAgICAgICBJTlRfU1RBQ0tfUFRSX1NFVCgx
LElOVF9TVEFDS19QVFIoMSkrZGVzdF9jb25zdCk7CisgICAgICAgIElOVF9TVEFDS19QVFJfU0VU
KDAsSU5UX1NUQUNLX1BUUigwKStzcmNfY29uc3QpOworICAgICAgICAKKyAgICAgICAgaWYgKElO
VF9TVEFDS19QVFIoMSkgPCBJTlRfU1RBQ0tfUFRSKDIpKSB7CisgICAgICAgICAgICBJTlRfU1RS
RUFNX0dPVE8oMik7CisgICAgICAgIH0KKyNsaW5lIDMxMjIgImdwY19pbnRlcnByZXRlci5nZW4i
CisgICAgfQorICAgIElOVF9BRFZBTkNFKDMpOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9aRVJP
SlVNUCkKKyAgICB7CisjbGluZSAyMzA0ICJncGNfc3BlYy5pbiIKKyAgICAgICAgaWYgKElOVF9T
VEFDSygwKT09MCkgeworICAgICAgICAgICAgSU5UX1NUUkVBTV9HT1RPKDApOworICAgICAgICB9
CisjbGluZSAzMTMyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5D
RSgxKTsKK0lOVF9FTkQoKQorSU5UX0JFR0lOKElfREVDQ09NUEpVTVApCisgICAgeworI2xpbmUg
MjMxMSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIGlmICgtLUlOVF9TVEFDSygwKSE9MCkgeworICAg
ICAgICAgICAgSU5UX1NUUkVBTV9HT1RPKDApOworICAgICAgICB9CisjbGluZSAzMTQyICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfQ0hFQ0tDSE9JQ0UpCisgICAgeworI2xpbmUgMjMxOCAiZ3BjX3NwZWMuaW4i
CisgICAgICAgIHVpbnRwdHJfdCBudW1fY2hvaWNlcz0odHNmX2Nob2ljZV90KUlOVF9TVFJFQU0o
MCk7CisgICAgICAgIGlmIChJTlRfU1RBQ0soMCkhPVVJTlQzMl9NQVggJiYgSU5UX1NUQUNLKDAp
Pj1udW1fY2hvaWNlcykgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9F
UlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY2hvaWNlIHZhbHVlIik7
CisgICAgICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9CisjbGluZSAzMTU1ICJncGNf
aW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgxKTsKK0lOVF9FTkQoKQor
SU5UX0JFR0lOKElfVEFCTEVTRVRfTE9DQUxfVE9fRklFTEQpCisgICAgeworI2xpbmUgMjMyOCAi
Z3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG9mZnNldD1JTlRfU1RSRUFNKDApOworICAg
ICAgICB1aW50MzJfdCBudW09SU5UX1NUUkVBTSgxKTsKKyAgICAgICAgaWYgKElOVF9TVEFDSygw
KT09VUlOVDMyX01BWCkgeworICAgICAgICAgICAgKigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRS
KDEpICsgb2Zmc2V0KSk9VUlOVDMyX01BWDsKKyAgICAgICAgfSBlbHNlIGlmIChJTlRfU1RBQ0so
MCk+PW51bSkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxEIGJvdW5k
cyBlcnJvcjogZ290ICIgZnVpMzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBidXQgaGFk
IGFuIHVwcGVyIGJvdW5kIG9mICIgZnVpMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1
aW50MzJfdClJTlRfU1RBQ0soMCksbnVtKTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIo
MSkgKyBvZmZzZXQpKT0KKyAgICAgICAgICAgICAgICBJTlRfU1RSRUFNKDIrSU5UX1NUQUNLKDAp
KTsKKyAgICAgICAgfQorI2xpbmUgMzE3NiAiZ3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9Cisg
ICAgSU5UX1BPUCgpOworICAgIElOVF9BRFZBTkNFKDIrSU5UX1NUUkVBTSgxKSk7CitJTlRfRU5E
KCkKK0lOVF9CRUdJTihJX1RBQkxFU0VUX0ZJRUxEX1RPX0ZJRUxEKQorICAgIHsKKyNsaW5lIDIz
NDYgImdwY19zcGVjLmluIgorICAgICAgICB1aW50MzJfdCBkZXN0X29mZnNldD1JTlRfU1RSRUFN
KDApOworICAgICAgICB1aW50MzJfdCBzcmNfb2Zmc2V0PUlOVF9TVFJFQU0oMSk7CisgICAgICAg
IHVpbnQzMl90IG51bT1JTlRfU1RSRUFNKDIpOworICAgICAgICAKKyAgICAgICAgdWludDMyX3Qg
dmFsdWU9KigodWludDMyX3QqKShJTlRfU1RBQ0tfUFRSKDApICsgc3JjX29mZnNldCkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKHZhbHVlPT1VSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAqKCh1
aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpPVVJTlQzMl9NQVg7Cisg
ICAgICAgIH0gZWxzZSBpZiAodmFsdWU+PW51bSkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRBQkxFU0VU
X0ZJRUxEX1RPX0ZJRUxEIGJvdW5kcyBlcnJvcjogZ290ICIgZnVpMzIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiBidXQgaGFkIGFuIHVwcGVyIGJvdW5kIG9mICIgZnVpMzIsdmFsdWUsbnVt
KTsKKyAgICAgICAgICAgIElOVF9GQUlMVVJFKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAqKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMSkgKyBkZXN0X29mZnNldCkpPQorICAg
ICAgICAgICAgICAgIElOVF9TVFJFQU0oMyt2YWx1ZSk7CisgICAgICAgIH0KKyNsaW5lIDMyMDEg
ImdwY19pbnRlcnByZXRlci5nZW4iCisgICAgfQorICAgIElOVF9BRFZBTkNFKDMrSU5UX1NUUkVB
TSgyKSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1RBQkxFSlVNUF9GSUVMRCkKKyAgICB7Cisj
bGluZSAyMzY3ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0PUlOVF9TVFJF
QU0oMCk7CisgICAgICAgIHVpbnQzMl90IG51bT1JTlRfU1RSRUFNKDEpOworICAgICAgICB1aW50
MzJfdCB2YWx1ZT0qKCh1aW50MzJfdCopKElOVF9TVEFDS19QVFIoMCkgKyBvZmZzZXQpKTsKKyAg
ICAgICAgaWYgKHZhbHVlPT1VSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAvKiBkbyBub3RoaW5n
ICovCisgICAgICAgIH0gZWxzZSBpZiAodmFsdWU+PW51bSkgeworICAgICAgICAgICAgdHNmX3Nl
dF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRB
QkxFSlVNUCBib3VuZHMgZXJyb3I6IGdvdCAiIGZ1aTMyICIgYnV0IGhhZCBhbiAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ1cHBlciBib3VuZCBvZiAiIGZ1aTMyLHZhbHVlLG51bSk7Cisg
ICAgICAgICAgICBJTlRfRkFJTFVSRSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
SU5UX1NUUkVBTV9HT1RPKDIrdmFsdWUpOworICAgICAgICB9CisjbGluZSAzMjIxICJncGNfaW50
ZXJwcmV0ZXIuZ2VuIgorICAgIH0KKyAgICBJTlRfQURWQU5DRSgyK0lOVF9TVFJFQU0oMSkpOwor
SU5UX0VORCgpCisjdW5kZWYgSU5UX1NUUkVBTV9HT1RPCisjZGVmaW5lIElOVF9TVFJFQU1fR09U
TyhhcmcpIGRvIHtcCisgICAgSU5UX1BPUCgpO1wKKyAgICBJTlRfR09UTyhJTlRfU1RSRUFNKGFy
ZykpO1wKK30gd2hpbGUgKDApCitJTlRfQkVHSU4oSV9UQUJMRUpVTVBfTE9DQUwpCisgICAgewor
I2xpbmUgMjM4NCAiZ3BjX3NwZWMuaW4iCisgICAgICAgIHVpbnQzMl90IG51bT1JTlRfU1RSRUFN
KDApOworICAgICAgICB1aW50cHRyX3QgdmFsdWU9SU5UX1NUQUNLKDApOworICAgICAgICBpZiAo
dmFsdWU9PVVJTlQzMl9NQVgpIHsKKyAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi8KKyAgICAg
ICAgfSBlbHNlIGlmICh2YWx1ZT49bnVtKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRT
Rl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVEFCTEVKVU1QIGJv
dW5kcyBlcnJvcjogZ290ICIgZnVpMzIgIiBidXQgaGFkIGFuICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgInVwcGVyIGJvdW5kIG9mICIgZnVpMzIsKHVpbnQzMl90KUlOVF9TVEFDSygwKSxu
dW0pOworICAgICAgICAgICAgSU5UX0ZBSUxVUkUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIElOVF9TVFJFQU1fR09UTygxK3ZhbHVlKTsKKyAgICAgICAgfQorI2xpbmUgMzI0NSAi
Z3BjX2ludGVycHJldGVyLmdlbiIKKyAgICB9CisgICAgSU5UX1BPUCgpOworICAgIElOVF9BRFZB
TkNFKDErSU5UX1NUUkVBTSgwKSk7CitJTlRfRU5EKCkKKyN1bmRlZiBJTlRfU1RSRUFNX0dPVE8K
KyNkZWZpbmUgSU5UX1NUUkVBTV9HT1RPKGFyZykgSU5UX0dPVE8oSU5UX1NUUkVBTShhcmcpKQor
SU5UX0JFR0lOKElfSlVNUCkKKyAgICB7CisjbGluZSAyNDAwICJncGNfc3BlYy5pbiIKKyAgICAg
ICAgSU5UX1NUUkVBTV9HT1RPKDApOworI2xpbmUgMzI1NiAiZ3BjX2ludGVycHJldGVyLmdlbiIK
KyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMSk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JFVFVS
Tl9PTkUpCisgICAgeworI2xpbmUgMjQwNSAiZ3BjX3NwZWMuaW4iCisgICAgICAgIElOVF9DTEVB
TlVQKCk7CisgICAgICAgIHJldHVybiAxOworI2xpbmUgMzI2NSAiZ3BjX2ludGVycHJldGVyLmdl
biIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJX1JF
VFVSTl9UT1BfV0lUSF9SRUdJT04pCisgICAgeworI2xpbmUgMjQxMSAiZ3BjX3NwZWMuaW4iCisg
ICAgICAgIHVpbnRwdHJfdCByZXN1bHQ9SU5UX1NUQUNLKDApOworICAgICAgICBJTlRfQ0xFQU5V
UCgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworI2xpbmUgMzI3NSAiZ3BjX2ludGVycHJldGVy
LmdlbiIKKyAgICB9CisgICAgSU5UX0FEVkFOQ0UoMCk7CitJTlRfRU5EKCkKK0lOVF9CRUdJTihJ
X1JFVFVSTl9PTkVfSU5JVF9CVUZfV0lUSF9FTVBUWV9UWVBFUykKKyAgICB7CisjbGluZSAyNDE4
ICJncGNfc3BlYy5pbiIKKyAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIgPSAodHNmX2J1ZmZl
cl90KilJTlRfU1RBQ0tfUFRSKDEpOworICAgICAgICBidWZmZXItPnR5cGVzID0gdHNmX3R5cGVf
aW5fbWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKTsKKyAgICAgICAgYnVmZmVyLT5kYXRhID0gYnVm
OworICAgICAgICBidWZmZXItPnNpemUgPSBzaXplOworICAgICAgICBidWZmZXItPmtlZXAgPSBr
ZWVwOworICAgICAgICBrZWVwID0gdHNmX2ZhbHNlOworICAgICAgICBJTlRfQ0xFQU5VUCgpOwor
ICAgICAgICByZXR1cm4gMTsKKyNsaW5lIDMyOTAgImdwY19pbnRlcnByZXRlci5nZW4iCisgICAg
fQorICAgIElOVF9BRFZBTkNFKDApOworSU5UX0VORCgpCitJTlRfQkVHSU4oSV9SRVRVUk5fT05F
X0lOSVRfQlVGX1dJVEhfVFlQRVNfRlJPTV9PVVRfTUFQKQorICAgIHsKKyNsaW5lIDI0MzAgImdw
Y19zcGVjLmluIgorICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZlciA9ICh0c2ZfYnVmZmVyX3Qq
KUlOVF9TVEFDS19QVFIoMSk7CisgICAgICAgIGlmIChyZWdpb24gPT0gTlVMTCkgeworICAgICAg
ICAgICAgYnVmZmVyLT50eXBlcyA9IHRzZl90eXBlX2luX21hcF9mcm9tX3R5cGVfb3V0X21hcChv
dXRfbWFwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlci0+dHlwZXMgPSB0
c2ZfdHlwZV9pbl9tYXBfZnJvbV90eXBlX291dF9tYXBfaW4ob3V0X21hcCwgcmVnaW9uKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoYnVmZmVyLT50eXBlcyA9PSBOVUxMKSB7CisgICAgICAgICAg
ICBJTlRfQ0xFQU5VUCgpOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlci0+ZGF0YSA9IGJ1ZjsK
KyAgICAgICAgYnVmZmVyLT5zaXplID0gc2l6ZTsKKyAgICAgICAgYnVmZmVyLT5rZWVwID0ga2Vl
cDsKKyAgICAgICAga2VlcCA9IHRzZl9mYWxzZTsKKyAgICAgICAgSU5UX0NMRUFOVVAoKTsKKyAg
ICAgICAgcmV0dXJuIDE7CisjbGluZSAzMzEyICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorICAgIH0K
KyAgICBJTlRfQURWQU5DRSgwKTsKK0lOVF9FTkQoKQorI3VuZGVmIElOVF9TVFJFQU1fR09UTwpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19wcm9ncmFtLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY19w
cm9ncmFtLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dh
c20vdHNmL2dwY19wcm9ncmFtLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAg
UElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImdwY19pbnRlcm5hbC5oIgorCitncGNfcHJvZ3JhbV90ICpncGNfcHJv
Z3JhbV9mcm9tX3Byb3RvKGdwY19wcm90b190ICpwcm90bykgeworICAgIGdwY19pbnRhYmxlX3Qg
KmludGFibGU7CisgICAgZ3BjX3Byb2dyYW1fdCAqcmV0OworICAgIAorICAgIGludGFibGUgPSBn
cGNfaW50YWJsZV9mcm9tX3Byb3RvKHByb3RvKTsKKyAgICAKKyAgICBpZiAoaW50YWJsZSA9PSBO
VUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQgPSBncGNf
cHJvZ3JhbV9mcm9tX2ludGFibGUoaW50YWJsZSk7CisKKyAgICBncGNfaW50YWJsZV9kZXN0cm95
KGludGFibGUpOworICAgIAorICAgIHJldHVybiByZXQ7Cit9CisKK2dwY19wcm9ncmFtX3QgKmdw
Y19wcm9ncmFtX2Zyb21faW50YWJsZShncGNfaW50YWJsZV90ICppbnRhYmxlKSB7CisgICAgZ3Bj
X3Byb2dyYW1fdCAqcmV0OworCisgICAgcmV0ID0gbWFsbG9jKHNpemVvZihncGNfcHJvZ3JhbV90
KSk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxk
IG5vdCBtYWxsb2MgZ3BjX3Byb2dyYW1fdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisgICAgCisgICAgaWYgKGdwY190aHJlYWRlZF9zdXBwb3J0ZWQoKSkgeworICAgICAgICByZXQt
PnBheWxvYWQ9Z3BjX3RocmVhZGVkX2Zyb21faW50YWJsZShpbnRhYmxlKTsKKyAgICAgICAgaWYg
KHJldC0+cGF5bG9hZD09TlVMTCkgeworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0LT5ydW5uZXI9KGdwY19wcm9n
cmFtX3J1bm5lcl90KWdwY190aHJlYWRlZF9ydW47CisgICAgICAgIHJldC0+ZGVzdHJveWVyPShn
cGNfcHJvZ3JhbV9kZXN0cm95ZXJfdClncGNfdGhyZWFkZWRfZGVzdHJveTsKKyAgICB9IGVsc2Ug
eworICAgICAgICByZXQtPnBheWxvYWQ9Z3BjX2ludGFibGVfY2xvbmUoaW50YWJsZSk7CisgICAg
ICAgIGlmIChyZXQtPnBheWxvYWQ9PU5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldC0+cnVubmVyPShn
cGNfcHJvZ3JhbV9ydW5uZXJfdClncGNfaW50YWJsZV9ydW47CisgICAgICAgIHJldC0+ZGVzdHJv
eWVyPShncGNfcHJvZ3JhbV9kZXN0cm95ZXJfdClncGNfaW50YWJsZV9kZXN0cm95OworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIGdwY19wcm9ncmFtX2Rlc3Ryb3koZ3Bj
X3Byb2dyYW1fdCAqcHJvZykgeworICAgIChwcm9nLT5kZXN0cm95ZXIpKHByb2ctPnBheWxvYWQp
OworICAgIGZyZWUocHJvZyk7Cit9CisKK3VpbnRwdHJfdCBncGNfcHJvZ3JhbV9ydW4oZ3BjX3By
b2dyYW1fdCAqcHJvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90ICphcmdzKSB7CisgICAgcmV0dXJu
IChwcm9nLT5ydW5uZXIpKHByb2ctPnBheWxvYWQsIHJlZ2lvbiwgYXJncyk7Cit9CisKSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfcHJvdG8uYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX3Byb3RvLmMJ
KG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dw
Y19wcm90by5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAg
UElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiZ3BjX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCitncGNfcHJv
dG9fdCAqZ3BjX3Byb3RvX2NyZWF0ZSh1aW50MzJfdCBudW1fYXJncykgeworICAgIGdwY19wcm90
b190ICpyZXQ9bWFsbG9jKHNpemVvZihncGNfcHJvdG9fdCkpOworICAgIGlmIChyZXQ9PU5VTEwp
IHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBncGNfcHJvdG9fdCIp
OworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT5udW1fYXJncz1u
dW1fYXJnczsKKyAgICByZXQtPnN0cmVhbT1OVUxMOworICAgIHJldC0+c2l6ZT0wOworICAgIAor
ICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgZ3BjX3Byb3RvX2Rlc3Ryb3koZ3BjX3Byb3RvX3Qg
KnByb3RvKSB7CisgICAgaWYgKHByb3RvLT5zdHJlYW0hPU5VTEwpIHsKKyAgICAgICAgZnJlZShw
cm90by0+c3RyZWFtKTsKKyAgICB9CisgICAgZnJlZShwcm90byk7Cit9CisKK3RzZl9ib29sX3Qg
Z3BjX3Byb3RvX3Jlc2VydmUoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBudW1fc2xvdHMpIHsKKyAgICBpZiAocHJvdG8tPnN0cmVhbT09
TlVMTCkgeworICAgICAgICBwcm90by0+c3RyZWFtPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkq
bnVtX3Nsb3RzKTsKKyAgICAgICAgaWYgKHByb3RvLT5zdHJlYW09PU5VTEwpIHsKKyAgICAgICAg
ICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgZ3BjX2NlbGxfdCBhcnJheSIpOwor
ICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGdwY19jZWxsX3QgKm5ld19hcnJheT0KKyAgICAgICAgICAgIHJlYWxsb2MocHJvdG8t
PnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdwY19jZWxsX3QpCisgICAgICAg
ICAgICAgICAgICAgICogKHByb3RvLT5zaXplK251bV9zbG90cykpOworICAgICAgICBpZiAobmV3
X2FycmF5PT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgcmVh
bGxvYyBncGNfY2VsbF90IGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHByb3RvLT5zdHJlYW09bmV3X2FycmF5OworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZChn
cGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxf
dCBpbnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikgeworICAgIHZhX2xpc3Qg
bHN0OworICAgIHVpbnQzMl90IHNpemU9Z3BjX2luc3RydWN0aW9uX3N0YXRpY19zaXplKGluc3Qp
OworICAgIAorICAgIHZhX3N0YXJ0KGxzdCxpbnN0KTsKKworICAgIGlmIChzaXplPT1VSU5UMzJf
TUFYKSB7CisgICAgICAgIGdwY19jZWxsX3QgbGVuPQorICAgICAgICAgICAgdmFfYXJnKGxzdCxn
cGNfY2VsbF90KTsKKworICAgICAgICBpZiAoIWdwY19wcm90b19yZXNlcnZlKHByb3RvLDIrbGVu
KSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1pbnN0OworICAgICAgICBwcm90
by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPWxlbjsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChs
ZW4tLT4wKSB7CisgICAgICAgICAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPQorICAg
ICAgICAgICAgICAgIHZhX2FyZyhsc3QsZ3BjX2NlbGxfdCk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKCFncGNfcHJv
dG9fcmVzZXJ2ZShwcm90byxzaXplKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
IH0KKyAgICAKKyAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPWluc3Q7CisgICAgCisg
ICAgd2hpbGUgKC0tc2l6ZT4wKSB7CisgICAgICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUr
K109CisgICAgICAgICAgICB2YV9hcmcobHN0LGdwY19jZWxsX3QpOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgZ3BjX3Byb3RvX2FwcGVuZF90YWJs
ZXNldF9sb2NhbF90b19maWVsZChncGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2Nl
bGxfdCBudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ3BjX2NlbGxfdCAqYXJncykgeworICAgIHVpbnQzMl90IGk7CisKKyAgICBp
ZiAoIWdwY19wcm90b19yZXNlcnZlKHByb3RvLDMrbnVtKSkgeworICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPUdQ
Q19JX1RBQkxFU0VUX0xPQ0FMX1RPX0ZJRUxEOworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNp
emUrK109b2Zmc2V0OworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109bnVtOworICAg
IAorICAgIGZvciAoaT0wO2k8bnVtOysraSkgeworICAgICAgICBwcm90by0+c3RyZWFtW3Byb3Rv
LT5zaXplKytdPWFyZ3NbaV07CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30K
KwordHNmX2Jvb2xfdCBncGNfcHJvdG9fYXBwZW5kX3RhYmxlc2V0X2ZpZWxkX3RvX2ZpZWxkKGdw
Y19wcm90b190ICpwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncGNfY2VsbF90IGRlc3Rfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3Qgc3JjX29mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNf
Y2VsbF90IG51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBncGNfY2VsbF90ICphcmdzKSB7CisgICAgdWludDMyX3QgaTsKKworICAg
IGlmICghZ3BjX3Byb3RvX3Jlc2VydmUocHJvdG8sNCtudW0pKSB7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109
R1BDX0lfVEFCTEVTRVRfRklFTERfVE9fRklFTEQ7CisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+
c2l6ZSsrXT1kZXN0X29mZnNldDsKKyAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXplKytdPXNy
Y19vZmZzZXQ7CisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1udW07CisgICAgCisg
ICAgZm9yIChpPTA7aTxudW07KytpKSB7CisgICAgICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNp
emUrK109YXJnc1tpXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0
c2ZfYm9vbF90IGdwY19wcm90b19hcHBlbmRfdGFibGVqdW1wX2xvY2FsKGdwY19wcm90b190ICpw
cm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2Nl
bGxfdCBudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdwY19jZWxsX3QgKmFyZ3MpIHsKKyAgICB1aW50MzJfdCBpOworCisgICAgaWYgKCFncGNf
cHJvdG9fcmVzZXJ2ZShwcm90bywyK251bSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1HUENfSV9UQUJM
RUpVTVBfTE9DQUw7CisgICAgcHJvdG8tPnN0cmVhbVtwcm90by0+c2l6ZSsrXT1udW07CisgICAg
CisgICAgZm9yIChpPTA7aTxudW07KytpKSB7CisgICAgICAgIHByb3RvLT5zdHJlYW1bcHJvdG8t
PnNpemUrK109YXJnc1tpXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQor
Cit0c2ZfYm9vbF90IGdwY19wcm90b19hcHBlbmRfdGFibGVqdW1wX2ZpZWxkKGdwY19wcm90b190
ICpwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Bj
X2NlbGxfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdwY19jZWxsX3QgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBncGNfY2VsbF90ICphcmdzKSB7CisgICAgdWludDMyX3QgaTsKKworICAg
IGlmICghZ3BjX3Byb3RvX3Jlc2VydmUocHJvdG8sMytudW0pKSB7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109
R1BDX0lfVEFCTEVKVU1QX0ZJRUxEOworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109
b2Zmc2V0OworICAgIHByb3RvLT5zdHJlYW1bcHJvdG8tPnNpemUrK109bnVtOworICAgIAorICAg
IGZvciAoaT0wO2k8bnVtOysraSkgeworICAgICAgICBwcm90by0+c3RyZWFtW3Byb3RvLT5zaXpl
KytdPWFyZ3NbaV07CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordm9p
ZCBncGNfcHJvdG9fcHJpbnQoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAg
ICAgRklMRSAqb3V0KSB7CisgICAgdWludDMyX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcHJv
dG8tPnNpemU7KSB7CisgICAgICAgIHVpbnQzMl90IHNpemUgPSBncGNfaW5zdHJ1Y3Rpb25fc2l6
ZShwcm90by0+c3RyZWFtICsgaSk7CisgICAgICAgIGlmIChwcm90by0+c3RyZWFtW2ldID09IEdQ
Q19JX0xBQkVMKSB7CisgICAgICAgICAgICBmcHJpbnRmKG91dCwgZnVpNjQgIjoiLCAodWludDY0
X3QpcHJvdG8tPnN0cmVhbVtpICsgMV0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dWludDMyX3QgajsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU9CisgICAgICAgICAgICAg
ICAgZ3BjX2luc3RydWN0aW9uX3RvX3N0cmluZyhwcm90by0+c3RyZWFtW2ldKTsKKyAgICAgICAg
ICAgIGlmIChzdHJsZW4obmFtZSkgPCAzNSkgeworICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7
IGogPCAzNSAtIHN0cmxlbihuYW1lKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmlu
dGYob3V0LCAiICIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZwcmludGYob3V0LCAiJXMiLCBuYW1lKTsKKyAgICAgICAgICAgIGZvciAoaiA9IDE7IGog
PCBzaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIlx0IiBmdWk2NCwg
KHVpbnQ2NF90KXByb3RvLT5zdHJlYW1baSArIGpdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBmcHJpbnRmKG91dCwgIlxuIik7CisgICAgICAgIGkgKz0gc2l6ZTsKKyAgICB9
Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfc3Rh
Y2tfaGVpZ2h0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dh
c20vdHNmL2dwY19zdGFja19oZWlnaHQuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX3N0YWNrX2hlaWdodC5jCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiZ3BjX2ludGVybmFsLmgiCisKKyNkZWZp
bmUgQyhleHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghKGV4cCkp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGdvdG8gZmFpbHVyZTsgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorfSB3aGlsZSAoMCkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGdwY19jZWxs
X3QgKmNlbGw7CisgICAgaW50cHRyX3QgaGVpZ2h0OworfSB3b3JrbGlzdF9pdGVtX3Q7CisKKyNp
bmNsdWRlICJncGNfd29ya2xpc3QuaCIKKworc3RhdGljIGlubGluZSB0c2ZfYm9vbF90IHBvcCh3
b3JrbGlzdF90ICp3b3JrbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2Nl
bGxfdCAqKmNlbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90ICpoZWln
aHQpIHsKKyAgICB3b3JrbGlzdF9pdGVtX3QgKml0ZW09d29ya2xpc3RfcG9wKHdvcmtsaXN0KTsK
KyAgICBpZiAoaXRlbT09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0K
KyAgICAKKyAgICAqY2VsbD1pdGVtLT5jZWxsOworICAgICpoZWlnaHQ9aXRlbS0+aGVpZ2h0Owor
ICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSB0c2ZfYm9vbF90
IHB1c2god29ya2xpc3RfdCAqd29ya2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBncGNfY2VsbF90ICpjZWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cHRy
X3QgaGVpZ2h0KSB7CisgICAgd29ya2xpc3RfaXRlbV90ICppdGVtPXdvcmtsaXN0X3B1c2god29y
a2xpc3QpOworICAgIGlmIChpdGVtPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgfQorICAgIAorICAgIGl0ZW0tPmNlbGw9Y2VsbDsKKyAgICBpdGVtLT5oZWlnaHQ9aGVp
Z2h0OworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RydWN0IGJyYW5jaF9hY3Rp
b25fY2xvc3VyZSB7CisgICAgd29ya2xpc3RfdCAqd29ya2xpc3Q7CisgICAgaW50cHRyX3QgaGVp
Z2h0OworfTsKKworc3RhdGljIHRzZl9ib29sX3QgYnJhbmNoX2FjdGlvbihncGNfY2VsbF90ICpj
ZWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAgICBz
dHJ1Y3QgYnJhbmNoX2FjdGlvbl9jbG9zdXJlICpjbG9zdXJlPWFyZzsKKyAgICByZXR1cm4gcHVz
aChjbG9zdXJlLT53b3JrbGlzdCwoZ3BjX2NlbGxfdCopKmNlbGwsY2xvc3VyZS0+aGVpZ2h0KTsK
K30KKwordHNmX3N0X3RhYmxlICpncGNfaW50YWJsZV9nZXRfc3RhY2tfaGVpZ2h0cyhncGNfaW50
YWJsZV90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnRwdHJfdCAqbWF4X2hlaWdodCkgeworICAgIHRzZl9zdF90YWJsZSAqcmV0PXRzZl9zdF9p
bml0X3B0cnRhYmxlKCk7CisgICAgZ3BjX2NlbGxfdCAqY3VyOworICAgIGludHB0cl90IGhlaWdo
dDsKKyAgICB3b3JrbGlzdF90IHdvcmtsaXN0OworICAgIAorICAgIGlmIChyZXQ9PU5VTEwpIHsK
KyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHRzZl9zdF9pbml0X251bXRhYmxlKCki
KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghd29ya2xpc3Rf
aW5pdCgmd29ya2xpc3QpKSB7CisgICAgICAgIHRzZl9zdF9mcmVlX3RhYmxlKHJldCk7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBDKHB1c2goJndvcmtsaXN0LAorICAg
ICAgICAgICBncGNfaW50YWJsZV9nZXRfc3RyZWFtKHByb2cpLAorICAgICAgICAgICBncGNfaW50
YWJsZV9nZXRfbnVtX2FyZ3MocHJvZykpKTsKKyAgICAKKyAgICBpZiAobWF4X2hlaWdodCE9TlVM
TCkgeworICAgICAgICAqbWF4X2hlaWdodD0wOworICAgIH0KKyAgICAKKyAgICB3aGlsZSAocG9w
KCZ3b3JrbGlzdCwmY3VyLCZoZWlnaHQpKSB7CisgICAgICAgIGludHB0cl90IGdvdF9oZWlnaHQ7
CisgICAgICAgIAorICAgICAgICBpZiAodHNmX3N0X2xvb2t1cChyZXQsKGNoYXIqKWN1ciwodm9p
ZCoqKSZnb3RfaGVpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGdvdF9oZWlnaHQgIT0gaGVpZ2h0
KSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9TRU1BTlRJQywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3RhY2sgaGVpZ2h0IGlzIGRpZmZlcmVudCBv
biB0d28gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBhcHByb2Fj
aGVzIHRvIHRoZSBzYW1lIHBpZWNlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJv
ZiBjb2RlIik7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29udGludWU7ICAgLyogd2UndmUgc2VlbiBpdCBzbyB3ZSBkb24ndCBuZWVk
IHRvIGRvIGFueXRoaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBlbHNlLiAqLworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodHNmX3N0X2FkZF9kaXJlY3QocmV0LChjaGFy
KiljdXIsKHZvaWQqKWhlaWdodCk8MCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IHRzZl9zdF9hZGRfZGlyZWN0KCkiKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1heF9oZWlnaHQhPU5VTEwgJiYgaGVp
Z2h0PiptYXhfaGVpZ2h0KSB7CisgICAgICAgICAgICAqbWF4X2hlaWdodD1oZWlnaHQ7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGhlaWdodCs9Z3BjX2luc3RydWN0aW9uX3N0YWNrX2Vm
ZmVjdHMoKmN1cik7CisgICAgICAgIAorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgYnJh
bmNoX2FjdGlvbl9jbG9zdXJlIGNsb3N1cmU7CisgICAgICAgICAgICBjbG9zdXJlLndvcmtsaXN0
PSZ3b3JrbGlzdDsKKyAgICAgICAgICAgIGNsb3N1cmUuaGVpZ2h0PWhlaWdodDsKKyAgICAgICAg
ICAgIEMoZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxfYnJhbmNoZXMoY3VyLGJyYW5jaF9hY3Rpb24s
JmNsb3N1cmUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGdwY19pbnN0cnVj
dGlvbl9pc19jb250aW51b3VzKCpjdXIpKSB7CisgICAgICAgICAgICBDKHB1c2goJndvcmtsaXN0
LGN1citncGNfaW5zdHJ1Y3Rpb25fc2l6ZShjdXIpLGhlaWdodCkpOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHdvcmtsaXN0X2RvbmUoJndvcmtsaXN0KTsKKyAgICAKKyAgICByZXR1cm4g
cmV0OworICAgIAorZmFpbHVyZToKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShyZXQpOworICAgIHdv
cmtsaXN0X2RvbmUoJndvcmtsaXN0KTsKKyAgICAKKyAgICByZXR1cm4gTlVMTDsKK30KKworCklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvZ3BjX3RocmVhZGVkLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL2dwY190
aHJlYWRlZC5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi9ncGNfdGhyZWFkZWQuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklM
SVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImdwY19pbnRlcm5hbC5oIgorI2luY2x1ZGUgInRzZl9mb3JtYXQu
aCIKKworI2lmZGVmIEhBVkVfQUREUkVTU19PRl9MQUJFTAorCisjaWZkZWYgSEFWRV9QVEhSRUFE
CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKK3RzZl9ib29sX3QgZ3BjX3RocmVhZGVk
X3N1cHBvcnRlZCgpIHsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB2b2lkKiBj
b25zdCAqIGluc3RydWN0aW9uX2Rpc3BhdGNoID0gTlVMTDsKKworc3RhdGljIHRzZl9vbmNlX3Qg
b25jZV9jb250cm9sID0gVFNGX09OQ0VfSU5JVDsKKworc3RhdGljIHZvaWQgaW5pdF9pbnN0cnVj
dGlvbl9kaXNwYXRjaCgpIHsKKyAgICBncGNfdGhyZWFkZWRfcnVuKE5VTEwsIE5VTEwsIDApOwor
fQorCitzdGF0aWMgdHNmX2Jvb2xfdCBjb3JyZWN0X2JyYW5jaChncGNfY2VsbF90ICpjZWxsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7CisgICAgKCpjZWxs
KSA9IChncGNfY2VsbF90KSgoKGdwY19jZWxsX3QqKSAqIGNlbGwpICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzaXplX3QpYXJnKTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK2dw
Y190aHJlYWRlZF90ICpncGNfdGhyZWFkZWRfZnJvbV9pbnRhYmxlKGdwY19pbnRhYmxlX3QgKmlu
dGFibGUpIHsKKyAgICBncGNfdGhyZWFkZWRfdCAqcmV0OworICAgIGdwY19jZWxsX3QgKndyaXRl
OworICAgIAorICAgIHRzZl9vbmNlKCZvbmNlX2NvbnRyb2wsIGluaXRfaW5zdHJ1Y3Rpb25fZGlz
cGF0Y2gpOworICAgIAorICAgIHJldCA9IG1hbGxvYyhzaXplb2YoZ3BjX3RocmVhZGVkX3QpKTsK
KyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90
IG1hbGxvYyBncGNfdGhyZWFkZWRfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cisg
ICAgCisgICAgcmV0LT5udW1fYXJncyA9IGludGFibGUtPm51bV9hcmdzOworICAgIHJldC0+c2l6
ZSA9IGludGFibGUtPnNpemU7CisgICAgcmV0LT5tYXhfaGVpZ2h0ID0gaW50YWJsZS0+bWF4X2hl
aWdodDsKKyAgICAKKyAgICByZXQtPnN0cmVhbSA9IG1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkg
KiByZXQtPnNpemUpOworICAgIGlmIChyZXQtPnN0cmVhbSA9PSBOVUxMKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2Mgc3RyZWFtIGZvciBncGNfdGhyZWFkZWRfdCIp
OworICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAK
KyAgICBtZW1jcHkocmV0LT5zdHJlYW0sIGludGFibGUtPnN0cmVhbSwgc2l6ZW9mKGdwY19jZWxs
X3QpICogcmV0LT5zaXplKTsKKyAgICAKKyAgICBmb3IgKHdyaXRlID0gcmV0LT5zdHJlYW07Cisg
ICAgICAgICB3cml0ZSA8IHJldC0+c3RyZWFtICsgcmV0LT5zaXplOykgeworICAgICAgICB1aW50
MzJfdCBzaXplID0gZ3BjX2luc3RydWN0aW9uX3NpemUod3JpdGUpOworICAgICAgICAKKyAgICAg
ICAgZ3BjX2luc3RydWN0aW9uX2Zvcl9hbGxfYnJhbmNoZXMoCisgICAgICAgICAgICB3cml0ZSwg
Y29ycmVjdF9icmFuY2gsICh2b2lkKikocmV0LT5zdHJlYW0gLSBpbnRhYmxlLT5zdHJlYW0pKTsK
KworICAgICAgICAqd3JpdGUgPSAoZ3BjX2NlbGxfdClpbnN0cnVjdGlvbl9kaXNwYXRjaFsqd3Jp
dGVdOworICAgICAgICAKKyAgICAgICAgd3JpdGUgKz0gc2l6ZTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHJldDsKK30KKwordm9pZCBncGNfdGhyZWFkZWRfZGVzdHJveShncGNfdGhyZWFkZWRf
dCAqdGhyZWFkZWQpIHsKKyAgICBmcmVlKHRocmVhZGVkLT5zdHJlYW0pOworICAgIGZyZWUodGhy
ZWFkZWQpOworfQorCisjZGVmaW5lIElOVF9CRUdJTihpbnN0X25hbWUpIFwKKyAgICBpbnN0X25h
bWU6IC8qIHByaW50ZigiJXNcbiIsI2luc3RfbmFtZSk7ICovICsraW5zdDsgeworCisjZGVmaW5l
IElOVF9FTkQoKSBcCisgICAgfSBnb3RvICoodm9pZCopKmluc3Q7CisKKyNkZWZpbmUgSU5UX0FE
VkFOQ0UoYW1vdW50KSBcCisgICAgKGluc3QgKz0gKGFtb3VudCkpCisKKyNkZWZpbmUgSU5UX0dP
VE8odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkICp0bXAg
PSAodm9pZCopdmFsdWU7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGluc3QgPSB0bXA7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byAqKHZvaWQqKSppbnN0
OyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNpbmNsdWRlICJn
cGNfaW50X2NvbW1vbi5oIgorCit1aW50cHRyX3QgZ3BjX3RocmVhZGVkX3J1bihncGNfdGhyZWFk
ZWRfdCAqcHJvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgKmFyZ3MpIHsKKyAgICBzdGF0aWMg
dm9pZCAqaW5zdHJ1Y3Rpb25zW109eworI2luY2x1ZGUgImdwY19pbnN0cnVjdGlvbl9kaXNwYXRj
aC5nZW4iCisgICAgfTsKKworICAgIHVpbnRwdHJfdCAqaW5zdDsKKyAgICB1aW50OF90ICpidWYg
PSBOVUxMLAorICAgICAgICAgICAgKmN1ciA9IE5VTEwsCisgICAgICAgICAgICAqZW5kID0gTlVM
TDsKKyAgICB1aW50MzJfdCBzaXplID0gMDsKKyAgICB0c2ZfYm9vbF90IGtlZXAgPSB0c2ZfZmFs
c2U7CisgICAgdHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzID0gTlVMTDsKKyAgICAKKyAgICB0c2Zf
dHlwZV9vdXRfbWFwX3QgKm91dF9tYXAgPSBOVUxMOworCisgICAgdHNmX2Jvb2xfdCBrZWVwX3Jl
Z2lvbiA9IHRzZl9mYWxzZTsKKyAgICAKKyAgICBpbnQ4X3QgaThfdG1wOworICAgIHVpbnQ4X3Qg
dWk4X3RtcDsKKyAgICBpbnQxNl90IGkxNl90bXA7CisgICAgdWludDE2X3QgdWkxNl90bXA7Cisg
ICAgaW50MzJfdCBpMzJfdG1wOworICAgIHVpbnQzMl90IHVpMzJfdG1wOworICAgIGludDY0X3Qg
aTY0X3RtcDsKKyAgICB1aW50NjRfdCB1aTY0X3RtcDsKKyAgICBmbG9hdCBmX3RtcDsKKyAgICBk
b3VibGUgZF90bXA7CisgICAgCisgICAgdWludHB0cl90ICpzdGFjazsKKyAgICB1aW50cHRyX3Qg
KnN0YWNrX3RvcDsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGlmIChwcm9nID09
IE5VTEwpIHsKKyAgICAgICAgLyogdGhpcyBpcyBvdXIgc3BlY2lhbCBzaWduYWwgKi8KKyAgICAg
ICAgaW5zdHJ1Y3Rpb25fZGlzcGF0Y2ggPSBpbnN0cnVjdGlvbnM7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICAKKyAgICBzdGFjayA9IGFsbG9jYShzaXplb2YodWludHB0cl90KSAqIHBy
b2ctPm1heF9oZWlnaHQpOworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBzdGFjayIpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgCisgICAgc3RhY2tfdG9wID0gc3RhY2sgLSAxOworICAgIAorICAgIGZvciAo
aSA9IDA7IGkgPCBwcm9nLT5udW1fYXJnczsgKytpKSB7CisgICAgICAgIElOVF9QVVNIKCk7Cisg
ICAgICAgIElOVF9TVEFDSygwKSA9IGFyZ3NbaV07CisgICAgfQorICAgIAorICAgIElOVF9HT1RP
KHByb2ctPnN0cmVhbSk7CisKKyNpbmNsdWRlICJncGNfaW50ZXJwcmV0ZXIuZ2VuIgorCitib3Vu
ZHNfZXJyb3I6CisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwgIkJvdW5kcyBj
aGVjayBmYWlsdXJlIik7CisKK2ZhaWx1cmU6CisgICAgLyogZXJyb3IhICovCisgICAgaWYgKGtl
ZXApIHsKKyAgICAgICAgZnJlZShidWYpOworICAgIH0KKyAgICBpZiAoa2VlcF9yZWdpb24pIHsK
KyAgICAgICAgdHNmX3JlZ2lvbl9mcmVlKHJlZ2lvbik7CisgICAgfQorICAgIGlmIChvdXRfbWFw
ICE9IE5VTEwpIHsKKyAgICAgICAgdHNmX3R5cGVfb3V0X21hcF9kZXN0cm95KG91dF9tYXApOwor
ICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKwordHNmX2Jvb2xfdCBncGNfdGhyZWFk
ZWRfc3VwcG9ydGVkKCkgeworICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKK2dwY190aHJlYWRl
ZF90ICpncGNfdGhyZWFkZWRfZnJvbV9pbnRhYmxlKGdwY19pbnRhYmxlX3QgKmludGFibGUpIHsK
KyAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAg
ICAiVGhyZWFkZWQgaW50ZXJwcmV0YXRpb24gc3VwcG9ydCB3YXMgbm90IGNvbXBpbGVkIGludG8g
IgorICAgICAgICAgICAgICAgICAgInRoZSBUU0YgcGFja2FnZS4gIFRoaXMgaXMgYmVjYXVzZSB0
aGUgYWRkcmVzcy1vZi1sYWJlbCAiCisgICAgICAgICAgICAgICAgICAiZXh0ZW5zaW9uIHdhcyBu
b3Qgc3VwcG9ydGVkIGJ5IHlvdXIgY29tcGlsZXIuIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisK
K3ZvaWQgZ3BjX3RocmVhZGVkX2Rlc3Ryb3koZ3BjX3RocmVhZGVkX3QgKnRocmVhZGVkKSB7Cisg
ICAgdHNmX2Fib3J0KCJDYWxsIHRvIGdwY190aHJlYWRlZF9kZXN0cm95KCkgaW4gYSBwcm9ncmFt
IHRoYXQgc2hvdWxkICIKKyAgICAgICAgICAgICAgIm5ldmVyIGhhdmUgYmVlbiBhYmxlIHRvIGNy
ZWF0ZSBhIGdwY190aHJlYWRlZF90LCBiZWNhdXNlICIKKyAgICAgICAgICAgICAgInRocmVhZGVk
IGludGVycHJldGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cit9CisKK3VpbnRwdHJfdCBncGNf
dGhyZWFkZWRfcnVuKGdwY190aHJlYWRlZF90ICpwcm9nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqcmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxf
dCAqYXJncykgeworICAgIHRzZl9hYm9ydCgiQ2FsbCB0byBncGNfdGhyZWFkZWRfcnVuKCkgaW4g
YSBwcm9ncmFtIHRoYXQgc2hvdWxkICIKKyAgICAgICAgICAgICAgIm5ldmVyIGhhdmUgYmVlbiBh
YmxlIHRvIGNyZWF0ZSBhIGdwY190aHJlYWRlZF90LCBiZWNhdXNlICIKKyAgICAgICAgICAgICAg
InRocmVhZGVkIGludGVycHJldGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cit9CisKKyNlbmRp
ZgorCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi9ncGNfd29y
a2xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvZ3BjX3dvcmtsaXN0LmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3dhc20vdHNmL2dwY193b3JrbGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJ
TElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJncGNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0
LmgiCisKK3N0cnVjdCB3b3JrbGlzdCB7CisgICAgd29ya2xpc3RfaXRlbV90ICphcnJheTsKKyAg
ICB3b3JrbGlzdF9pdGVtX3QgKmN1cjsKKyAgICBzaXplX3Qgc2l6ZTsKK307CisKK3R5cGVkZWYg
c3RydWN0IHdvcmtsaXN0IHdvcmtsaXN0X3Q7CisKK3N0YXRpYyBpbmxpbmUgdHNmX2Jvb2xfdCB3
b3JrbGlzdF9pbml0KHdvcmtsaXN0X3QgKndvcmtsaXN0KSB7CisgICAgd29ya2xpc3QtPmFycmF5
ID0gTlVMTDsKKyAgICB3b3JrbGlzdC0+Y3VyID0gTlVMTDsKKyAgICB3b3JrbGlzdC0+c2l6ZSA9
IDA7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgd29ya2xp
c3RfZG9uZSh3b3JrbGlzdF90ICp3b3JrbGlzdCkgeworICAgIGlmICh3b3JrbGlzdC0+YXJyYXkg
IT0gTlVMTCkgeworICAgICAgICBmcmVlKHdvcmtsaXN0LT5hcnJheSk7CisgICAgfQorfQorCitz
dGF0aWMgaW5saW5lIHdvcmtsaXN0X2l0ZW1fdCAqd29ya2xpc3RfcHVzaCh3b3JrbGlzdF90ICp3
b3JrbGlzdCkgeworICAgIHdvcmtsaXN0X2l0ZW1fdCAqcmV0OworICAgIAorICAgIGlmICh3b3Jr
bGlzdC0+Y3VyID09IHdvcmtsaXN0LT5hcnJheSt3b3JrbGlzdC0+c2l6ZSkgeworICAgICAgICBp
ZiAod29ya2xpc3QtPmFycmF5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHdvcmtsaXN0LT5hcnJh
eSA9IG1hbGxvYyhzaXplb2Yod29ya2xpc3RfaXRlbV90KSk7CisgICAgICAgICAgICBpZiAod29y
a2xpc3QtPmFycmF5ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJD
b3VsZCBub3QgbWFsbG9jIHdvcmtsaXN0IGFycmF5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3b3JrbGlzdC0+Y3VyID0gd29ya2xp
c3QtPmFycmF5OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd29ya2xpc3RfaXRlbV90
ICpuZXdfYXJyYXkgPSByZWFsbG9jKHdvcmtsaXN0LT5hcnJheSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yod29ya2xpc3RfaXRlbV90KSAq
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgKyB3
b3JrbGlzdC0+c2l6ZSkpOworICAgICAgICAgICAgaWYgKG5ld19hcnJheSA9PSBOVUxMKSB7Cisg
ICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHJlYWxsb2Mgd29ya2xpc3Qg
YXJyYXkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHdvcmtsaXN0LT5jdXIgKz0gbmV3X2FycmF5LXdvcmtsaXN0LT5hcnJheTsKKyAg
ICAgICAgICAgIHdvcmtsaXN0LT5hcnJheSA9IG5ld19hcnJheTsKKyAgICAgICAgfQorICAgICAg
ICB3b3JrbGlzdC0+c2l6ZSsrOworICAgIH0KKyAgICAKKyAgICByZXQgPSB3b3JrbGlzdC0+Y3Vy
OworICAgIHdvcmtsaXN0LT5jdXIrKzsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5s
aW5lIHdvcmtsaXN0X2l0ZW1fdCAqd29ya2xpc3RfcG9wKHdvcmtsaXN0X3QgKndvcmtsaXN0KSB7
CisgICAgaWYgKHdvcmtsaXN0LT5jdXIgPT0gd29ya2xpc3QtPmFycmF5KSB7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiAtLXdvcmtsaXN0LT5jdXI7Cit9CisKKwpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2YuaAkobm9uZXhp
c3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDExLCAyMDE0LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
RklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpM
TyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisvKgorICogU3R1ZmYgdG8ga25vdzoKKyAqCisgKiBNZW1vcnkgbWFuYWdlbWVudCBjb252ZW50
aW9uczogdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQsIGFsbCBvYmplY3RzCisgKiBhbGxvY2F0ZWQg
YnkgZnVuY3Rpb25zIHRoYXQgeW91IGNhbGwgYmVjb21lIHlvdXIgcmVzcG9uc2liaWxpdHkgYWZ0
ZXIKKyAqIGEgc3VjY2Vzc2Z1bCByZXR1cm4uICBhbHNvLCB1bmxlc3Mgb3RoZXJ3aXNlIHN0YXRl
ZCwgcGFzc2luZyBhbgorICogb2JqZWN0IGFzIGEgZmlyc3QgYXJndW1lbnQgdG8gYSBmdW5jdGlv
biBkb2VzIG5vdCBjbGVhciB5b3VyIG93bmVyc2hpcAorICogb2YgdGhhdCBvYmplY3QuICBhbmQg
dW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQsIG9iamVjdHMgcGFzc2VkIGFzIGFueXRoaW5nCisgKiBi
dXQgdGhlIGZpcnN0IGFyZ3VtZW50IGJlY29tZSB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBm
dW5jdGlvbiwKKyAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhhdCBmdW5jdGlvbiBy
ZXR1cm5zIHN1Y2Nlc3NmdWxseS4KKyAqCisgKiBFcnJvciBtYW5hZ2VtZW50IGNvbnZlbnRpb25z
OiBtb3N0IGZ1bmN0aW9ucyByZXR1cm4gcG9pbnRlcnMgb3IgYm9vbGVhbnMuCisgKiBpbiB0aGUg
Y2FzZSBvZiBwb2ludGVycywgaWYgdGhlIHBvaW50ZXIgcmV0dXJuZWQgaXMgTlVMTCwgdGhlbiB5
b3UgbXVzdAorICogY2hlY2sgZm9yIGVycm9ycy4gIGluIHRoZSBjYXNlIG9mIGJvb2xlYW5zLCB5
b3UgbXVzdCBjaGVjayBpZiB0aGUKKyAqIHJldHVybiB2YWx1ZSBpcyB0c2ZfZmFsc2UuCisgKgor
ICogRXJyb3IgcHJvcGFnYXRpb246IHRob3NlIGZ1bmN0aW9ucyB0aGF0IGNsYWltIHRvIGJlIGNh
cGFibGUgb2YgZXJyb3IKKyAqIHByb3BhZ2F0aW9uIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGFz
IGlmIHdpdGggYW4gZXJyb3Igd2l0aG91dCBhY3R1YWxseQorICogc2V0dGluZyB0aGUgZXJyb3Ig
aWYgb25lIG9mIHRoZWlyIG9iamVjdCBhcmd1bWVudHMgaXMgTlVMTC4gIFRoaXMgYWxsb3dzCisg
KiB5b3UgdG8gZG86CisgKiBpZiAoIXRzZl9kb19vcGVyYXRpb24ob2JqZWN0MSxvYmoyLCAuLi4s
IHRzZl9kb19vcF90aGF0X2ZhaWxzKCksLi4uKSkgeworICogICAgICAvLyBwcm9jZXNzIGVycm9y
LgorICogfQorICogLi4uIGFuZCBzYWZlbHkgZXhwZWN0IHRoYXQgdGhpcyB3aWxsIGNvcnJlY3Rs
eSBjYXRjaCBlcnJvcnMgZnJvbQorICogdHNmX2RvX29wX3RoYXRfZmFpbHMoKSBpbiBhZGRpdGlv
biB0byBjYXRjaGluZyBlcnJvcnMgZnJvbQorICogdHNmX2RvX29wZXJhdGlvbigpLgorICoKKyAq
IENvZGUgZ2VuZXJhdGlvbi9uYXRpdmUgY29kZSBzdXBwb3J0L3N0cnVjdCBtYXBwaW5nOiB0aGlz
IGZ1bmN0aW9uYWxpdHkgaXMKKyAqIGNhcHR1cmVkIHVuZGVyIHRoZSAndHNmX25hdGl2ZScgbmFt
ZXNwYWNlLCBidXQgaXQgZG9lcyBub3QgYWN0dWFsbHkgaGF2ZQorICogYW55IHN0cnVjdCBvciBj
bGFzcyBvciBvYmplY3Qgb2YgaXRzIG93bi4gIEluc3RlYWQsIHRoaXMgZnVuY3Rpb25hbGl0eSdz
CisgKiBzdGF0ZSBpcyBzcHJlYWQgYWNyb3NzIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uICBGaWVs
ZHMgdGhhdCBoYXZlIHRoZSBzb2xlCisgKiBwdXJwb3NlIG9mIHN1cHBvcnRpbmcgY29kZSBnZW5l
cmF0aW9uIG9yIHN0cnVjdCBtYXBwaW5nIGFyZSBtYXJrZWQgYXMKKyAqIHN1Y2ggd2l0aCBhIGNv
bW1lbnQuCisgKi8KKworI2lmbmRlZiBGUF9UU0ZfSAorI2RlZmluZSBGUF9UU0ZfSAorCisjaW5j
bHVkZSAidHNmX2NvbmZpZy5oIgorI2luY2x1ZGUgInRzZl9hdG9taWNzLmgiCisjaW5jbHVkZSAi
dHNmX3N0LmgiCisjaW5jbHVkZSAidHNmX3JlZ2lvbi5oIgorI2luY2x1ZGUgInRzZl90eXBlcy5o
IgorI2luY2x1ZGUgInRzZl96aXBfYWJzdHJhY3QuaCIKKyNpbmNsdWRlICJ0c2Zfc2hhMS5oIgor
CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRh
cmcuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCisjaWYgMAorLyogaGFjayB0byBwcmV2ZW50IGVtYWNzIGZyb20gYmVp
bmcgY29uZnVzZWQgKi8KK30KKyNlbmRpZgorCisvKiBtYWNybyB5b3UnbGwgZmluZCB1c2VmdWwg
Ki8KKyNkZWZpbmUgdHNmX29mZnNldG9mKHR5cGUsZWxlbWVudCkgKChzaXplX3QpKCYoKCh0eXBl
KilOVUxMKS0+ZWxlbWVudCkpKQorCisvKiBhbnkgZXJyb3JzIGluIHRoaXMgZW51bWVyYXRpb24g
bXVzdCBhbHNvIGJlIHBsYWNlZCBpbiB0c2ZfZXJyb3IuYydzCisgKiBpbml0X2Vycm9yX2FycmF5
KCkgZnVuY3Rpb24uICovCitlbnVtIHRzZl9lcnJvciB7CisgICAgVFNGX0VfRVJSTk8sICAgICAg
ICAgICAgLyogc3lzdGVtIGVycm9yOyBleGFtaW5lIGVycm5vIHZhbHVlIHJldHVybmVkCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogZnJvbSB0c2ZfZ2V0X3N5c3RlbV9lcnJubygpICov
CisgICAgVFNGX0VfWkxJQl9FUlJPUiwgICAgICAgLyogWkxpYiBlcnJvcjsgZXhhbWluZSB0aGUg
ZXJyb3IgY29kZSByZXR1cm5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZyb20g
dHNmX2dldF96bGliX2Vycm9yX2NvZGUoKSBhbmQgYWxzbyB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiBlcnJvciBtZXNzYWdlIHJldHVybmVkIGZyb20KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiB0c2ZfZ2V0X3psaWJfZXJyb3JfbXNnKCkgKi8KKyAgICBUU0ZfRV9M
SUJCWklQMl9FUlJPUiwgICAvKiBsaWJiemlwMiBlcnJvcjsgZXhhbWluZSB0aGUgZXJyb3IgY29k
ZSByZXR1cm5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZyb20gdHNmX2dldF9s
aWJiemlwMl9lcnJvcl9jb2RlKCkgYW5kIGFsc28gdGhlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICogZXJyb3IgbWVzc2FnZSByZXR1cm5lZCBmcm9tCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICogdHNmX2dldF9saWJiemlwMl9lcnJvcl9tc2coKS4gIG5vdGUgdGhhdCB0aGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsYXR0ZXIgZnVuY3Rpb24gcmV0dXJucyB0
ZXh0dWFsIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2VsZWN0ZWQg
YnkgVFNGIGFuZCBub3QgYnkgbGliYnppcDIuICB0aGVzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIG1lc3NhZ2VzIHdlcmUgd3JpdHRlbiBieSBtZSBiYXNlZCBvbiB0aGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBsaWJiemlwMiBtYW51YWwuICovCisgICAgVFNGX0Vf
SU5WQUxJRF9BUkcsICAgICAgLyogaW52YWxpZCBhcmd1bWVudCAqLworICAgIFRTRl9FX0JBRF9T
VEFURSwgICAgICAgIC8qIGJhZCBzdGF0ZSAtIHRoZSBnaXZlbiBvcGVyYXRpb24gZG9lc24ndCBt
YWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2Vuc2UgZm9yIHRoZSBjdXJyZW50
IHN0YXRlIG9mIHRoZSBvYmplY3QuICovCisgICAgVFNGX0VfU1RSX09WRVJGTE9XLCAgICAgLyog
c3RyaW5nIG92ZXJmbG93LiAgc3RyaW5ncyB1c2VkIGFzIGVsZW1lbnQgbmFtZXMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBpbiBzdHJ1Y3RzIGFuZCBjaG9pY2VzIGNhbm5vdCBiZSBs
b25nZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRTRl9TVFJfU0laRSAo
aW5jbHVkaW5nIG51bGwgYnl0ZSkuICBjb21tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICogc3RyaW5ncyBhbHNvIGhhdmUgc29tZSBsaW1pdC4gKi8KKyAgICBUU0ZfRV9QQVJTRV9F
UlJPUiwgICAgICAvKiBwYXJzZSBlcnJvciAqLworICAgIFRTRl9FX1VORVhQRUNURURfVFlQRSwg
IC8qIGRpZCBub3QgcGFyc2UgdGhlIHR5cGUgdGhhdCBJIGV4cGVjdGVkIHRvCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogcGFyc2UuICB0aGlzIG1heSBoYXBwZW4gaWYgeW91J3JlIGFz
a2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZXJpYWwgaW4gbWFuIHRv
IHJlLXJlYWQgc29tZSBkYXRhIHRoYXQgaXQncworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqIGFscmVhZHkgcmVhZC4gIHlvdSBjYW4gZG8gdGhpcyBieSB1c2luZyBpdHMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBtYXJrIGFuZCBzZWVrIG1lY2hhbmlzbS4gKi8KKyAgICBU
U0ZfRV9FTEVNRU5UX05VTEwsICAgICAvKiBlbGVtZW50IGluIGNvbnRhaW5lciBpcyBudWxsICov
CisgICAgVFNGX0VfTkFNRV9DT0xMSVNJT04sICAgLyogbmFtZSBjb2xsaXNpb24gLSB0aGUgbmFt
ZSBpcyBhbHJlYWR5IHVzZWQhICovCisgICAgVFNGX0VfRU9GLCAgICAgICAgICAgICAgLyogZW5k
IG9mIGZpbGUgb3IgZW5kIG9mIHN0cmVhbSAqLworICAgIFRTRl9FX1VORVhQRUNURURfRU9GLCAg
IC8qIHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgb3IgZW5kIG9mIHN0cmVhbS4gIHdoZW4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5lZCBmcm9tIGEgcmVhZGVyLCB0aGlzIGVy
cm9yIG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgRU9GIGhh
cHBlbmVkIGJlZm9yZSBhbnkgZGF0YSB3YXMgcmVhZC4gKi8KKyAgICBUU0ZfRV9FUlJPTkVPVVNf
RU9GLCAgICAvKiBlcnJvbmVvdXMgZW5kIG9mIGZpbGUgb3IgZW5kIG9mIHN0cmVhbS4gIHdoZW4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5lZCBmcm9tIGEgcmVhZGVyLCB0
aGlzIGVycm9yIG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUg
RU9GIGhhcHBlbmVkIGFmdGVyIHNvbWUgZGF0YSB3YXMgYWxyZWFkeQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqIHJlYWQuICB0byBldmVyeW9uZSBlbHNlLCB0aGlzIGVycm9yIHNob3Vs
ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGhhdmUgdGhlIHNhbWUgZXhhY3QgbWVh
bmluZyBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRTRl9FX1VORVhQRUNURURf
RU9GICovCisgICAgVFNGX0VfTk9fRU9GLCAgICAgICAgICAgLyogZXhwZWN0ZWQgYW4gRU9GIGJ1
dCBkaWRuJ3QgZ2V0IG9uZS4gKi8KKyAgICBUU0ZfRV9CQURfVFlQRSwgICAgICAgICAvKiBwYXJh
bWV0ZXIgaGFzIHRoZSB3cm9uZyB0c2ZfdHlwZSAtIHRocm93bgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIHdoZW4gdGhlIHR5cGUgZm9yIGEgdHlwZWQgb2JqZWN0IChzdWNoIGFzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYSByZWZsZWN0IG9iamVjdCkgaXMgbm90IHdo
YXQgaXMgZXhwZWN0ZWQuICovCisgICAgVFNGX0VfQkFEX1RZUEVfS0lORCwgICAgLyogcGFyYW1l
dGVyIGhhcyB0aGUgd3JvbmcgdHNmX3R5cGVfa2luZCAtCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICogdGhyb3duIHdoZW4geW91IHBhc3MgdGhlIHdyb25nIHR5cGUgb2JqZWN0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogaW50byBhIGZ1bmN0aW9uLiAqLworICAgIFRTRl9F
X0VMRV9OT1RfRk9VTkQsICAgIC8qIGVsZW1lbnQgbm90IGZvdW5kICovCisgICAgVFNGX0VfTk9f
U1RSVUNUX01BUCwgICAgLyogdGhlIGdpdmVuIHR5cGUgbGFja3MgYSBzdHJ1Y3QgbWFwcGluZyAq
LworICAgIFRTRl9FX0JBRF9TVFJVQ1RfTUFQLCAgIC8qIHRoZSBzdHJ1Y3R1cmUgbWFwcGluZyBv
ZmZzZXQgb3Igc2l6ZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGludmFsaWQg
YmVjYXVzZSBpdCBkb2VzIG5vdCBhZ3JlZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIG9mZnNldHMgYW5kL29yIHNpemVzIG9mIHRoZSBvdGhlciBlbGVtZW50cy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBub3RlIHRoYXQgdGhpcyBpcyBjdXJyZW50bHkg
dW51c2VkLCBidXQgd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBrZWVwIGl0IGhl
cmUgdG8gcmVzZXJ2ZSBzcGFjZS4gKi8KKyAgICBUU0ZfRV9UWVBFX01JU01BVENILCAgICAvKiB0
eXBlIG1pc21hdGNoICovCisgICAgVFNGX0VfQkFEX0NIT0lDRV9WQUxVRSwgLyogYmFkIGNob2lj
ZSB2YWx1ZS4gIG5vdGUgdGhhdCBpZiBhIGJhZCBjaG9pY2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiB2YWx1ZSBhcHBlYXJzIHdoaWxlIHBhcnNpbmcsIHlvdSB3aWxsIGdldCBhCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogVFNGX0VfUEFSU0VfRVJST1IgaW5zdGVhZC4g
IGFsc28sIHRoZXJlIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZSB0aW1l
cyB3aGVuIHlvdSBkb24ndCBnZXQgdGhpcyBlcnJvciBldmVuCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICogdGhvdWdoIHlvdSBzaG91bGQgaGF2ZS4gIHNvIGJlIGhhcHB5IHdoZW4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB5b3Ugc2VlIGl0IGFuZCBkb24ndCBjcnkgdG8g
bWUgYWJvdXQgaXQgaWYgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZG9uJ3Qu
ICovCisgICAgVFNGX0VfQ09NUEFSRV9GQUlMLCAgICAgLyogYSBjb21wYXJpc29uIGZhaWxlZC4g
Ki8KKyAgICBUU0ZfRV9DT01QSUxFX0VSUk9SLCAgICAvKiBjb21waWxhdGlvbiBlcnJvciBpbiBk
eW5jYyAqLworICAgIFRTRl9FX0RFQVRIX0JZX1NJR05BTCwgIC8qIGNoaWxkIHByb2Nlc3MgZGll
ZCBiZWNhdXNlIGl0IHJlY2VpdmVkIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBz
aWduYWwgKGFnYWluLCB0aGlzJ2xsIGhhcHBlbiBiZWNhdXNlIG9mCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICogZHluY2MpLiAqLworICAgIFRTRl9FX0RMT0FESU5HX0VSUk9SLCAgIC8q
IGR5bmFtaWMgbG9hZGluZyBlcnJvciBpbiBkeW5jYyAqLworICAgIFRTRl9FX0JBRF9KVU1QLCAg
ICAgICAgIC8qIGp1bXAgdG8gYmFkIGxhYmVsIGluIEdQQyBwcm90b3R5cGUgKi8KKyAgICBUU0Zf
RV9TRU1BTlRJQywgICAgICAgICAvKiB2aW9sYXRpb24gb2YgR1BDIHNlbWFudGljcyAqLworICAg
IFRTRl9FX0NBU19GQUlMLCAgICAgICAgIC8qIGEgY29tcGFyZS1hbmQtc3dhcC1saWtlIG9wZXJh
dGlvbiBmYWlsZWQuICovCisgICAgVFNGX0VfSE9TVE5BTUUsICAgICAgICAgLyogaG9zdG5hbWUg
bG9va3VwIGZhaWx1cmUuICovCisgICAgVFNGX0VfTk9UX0FMTE9XRUQsICAgICAgLyogeW91IGdl
dCB0aGlzIGVycm9yIGlmIHlvdSBoYWQgc3BlY2lmaWVkIHRoYXQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiBhIGNlcnRhaW4gYWN0aW9uIHdhcyBub3QgYWxsb3dlZCwgYnV0IGZvcgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdoYXRldmVyIHJlYXNvbiBUU0Ygd291bGQg
aGF2ZSBoYWQgdG8gcGVyZm9ybQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoYXQg
YWN0aW9uLiAqLworICAgIFRTRl9FX05PVF9JTVBMRU1FTlRFRCwgIC8qIG5vdCBpbXBsZW1lbnRl
ZC4gIHRoaXMgZGlmZmVycyBmcm9tIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
IHN1cHBvcnRlZCBpbiB0aGF0IHNvbWV0aGluZyB0aGF0IGlzICdub3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiBpbXBsZW1lbnRlZCcgaXMgYWN0dWFsbHkgYWR2ZXJ0aXNlZCBhcyBi
ZWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1cHBvcnRlZCAoYW5kIGltcGxl
bWVudGVkKSwgYnV0IEkganVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGhhdmVu
J3QgbW92ZWQgbXkgYXNzIHRvIGltcGxlbWVudCBpdC4gIHlvdQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIHNob3VsZCBvbmx5IHNlZSAnbm90IGltcGxlbWVudGVkJyBlcnJvcnMgaW4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkZXZlbG9wbWVudCB2ZXJzaW9ucy4gKi8K
KyAgICBUU0ZfRV9OT1RfU1VQUE9SVEVELCAgICAvKiBub3Qgc3VwcG9ydGVkLiAgdGhpcyBkaWZm
ZXJzIGZyb20gbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaW1wbGVtZW50ZWQg
aW4gdGhhdCAnbm90IHN1cHBvcnRlZCcgcmVmZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICogdG8gZnVuY3Rpb25hbGl0eSB0aGF0IGlzIHByZXNlbnQgYnV0IGNhbm5vdAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqIGJlIHVzZWQgZHVlIHRvIHNvbWUgbGltaXRhdGlvbnMg
b2YgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN5c3RlbS4gKi8KKyAgICBU
U0ZfRV9FWFRFUk5BTCwgICAgICAgICAvKiBzb21lIGV4dGVybmFsIGVycm9yIChsaWtlIGEgY29u
ZGl0aW9uIGluCisJCQkgICAgICogaW4gYSBjYWxsYmFjayBwcm92aWRlZCBieSBzb21lb25lIGVs
c2UpLgorCQkJICAgICAqIHRoZSBDKysgYmluZGluZyB1c2VzIHRoaXMgZm9yCisJCQkgICAgICog
c3RkOjpleGNlcHRpb24gb2JqZWN0cyBjYXVnaHQgaW4gY2FsbGJhY2tzLiAqLworICAgIFRTRl9F
X0lOVEVSTkFMLCAgICAgICAgIC8qIGludGVybmFsIGVycm9yIC0gc2hvdWxkIG5ldmVyIGhhcHBl
bi4gKi8KKyAgICBUU0ZfRV9MQVNUICAgICAgICAgICAgICAvKiBwbGFjZWhvbGRlciAqLworfTsK
KwordHlwZWRlZiBlbnVtIHRzZl9lcnJvciB0c2ZfZXJyb3JfdDsKKworLyogc3RhbmRhcmQgc3Ry
aW5nIHNpemUgd2l0aGluIHRzZiAqLworI2RlZmluZSBUU0ZfU1RSX1NJWkUgICAgICAgICAgICAx
MjgKKworLyogbWF4IHNpemUgZm9yIGNvbW1lbnQgc3RyaW5ncyAqLworI2RlZmluZSBUU0ZfTUFY
X0NPTU1FTlRfU0laRSAgICA0MDk2CisKKy8qIG1heCBzaXplIGZvciB0eXBlIG5hbWUgKi8KKyNk
ZWZpbmUgVFNGX01BWF9OQU1FX1NJWkUgICAgICAgMjU2CisKKy8qIGRlZmF1bHQgYnVmZmVyIHNp
emUgKi8KKyNkZWZpbmUgVFNGX0RFRl9CVUZfU0laRSAgICAgICAgNDA5NgorCisvKiBkZWZhdWx0
IGJ1ZmZlciBzaXplIGZvciBuZXR3b3JrIGNvbm5lY3Rpb25zICovCisjZGVmaW5lIFRTRl9ERUZf
TkVUX0JVRl9TSVpFICAgICgxNDYwKjMyKQorCisvKiBJbnN0YW5jZW9mIHJ1bGVzOgorICogLT4g
Vk9JRCB0eXBlLiAgZXZlcnl0aGluZyBpcyBpbnN0YW5jZW9mIFZPSUQsIGJ1dCBWT0lEIGlzIGlu
c3RhY2VvZgorICogICAgVk9JRCBvbmx5LgorICogLT4gSU5UIHR5cGVzLiAgQW4gSU5UIHR5cGUg
aXMgaW5zdGFuY2VvZiBhbnkgSU5UIHR5cGUgdGhhdCBpcworICogICAgY29tcG9zZWQgb2YgYXQg
bGVhc3QgYXMgbWFueSBiaXRzIGFzIGl0LiAgRm9yIGV4YW1wbGUsIElOVDgKKyAqICAgIGlzIGlu
c3RhbmNlb2YgSU5UOCwgSU5UMTYsIElOVDMyLCBhbmQgSU5UNjQuICBJTlQgdHlwZXMgYXJlCisg
KiAgICBub3QgaW5zdGFuY2VvZiBhbnkgVUlOVCB0eXBlcy4gIElOVCB0eXBlcyBhcmUgaW5zdGFu
Y2VvZgorICogICAgdGhvc2UgRlAgdHlwZXMgdGhhdCBoYXZlIGEgbWFudGlzc2EgdGhhdCBpcyBt
YWRlIHVwIG9mIGF0CisgKiAgICBsZWFzdCBhcyBtYW55IGJpdHMgYXMgaXQuCisgKiAtPiBVSU5U
IHR5cGVzLiAgQSBVSU5UIHR5cGUgaXMgaW5zdGFuY2VvZiBhbnkgVUlOVCB0eXBlIHRoYXQgaXMK
KyAqICAgIGNvbXBvc2VkIG9mIGF0IGxlYXN0IGFzIG1hbnkgYml0cyBhcyBpdC4gIEFsc28sIGEg
VUlOVCB0eXBlCisgKiAgICBpcyBpbnN0YW5jZW9mIGFueSBJTlQgdHlwZSB0aGF0IGhhcyBhdCBs
ZWFzdCBvbmUgbW9yZSBiaXRzCisgKiAgICB0aGFuIGl0IChzbyBVSU5UMTYgd2lsbCBiZSBpbnN0
YW5jZW9mIElOVDMyIGFuZCBJTlQ2NCwgYnV0CisgKiAgICBub3QgSU5UMTYpLiAgVUlOVCB0eXBl
cyBhcmUgaW5zdGFuY2VvZiB0aG9zZSBGUCB0eXBlcyB0aGF0CisgKiAgICBoYXZlIGEgbWFudGlz
c2EgdGhhdCBpcyBtYWRlIHVwIG9mIGF0IGxlYXN0IG9uZSBtb3JlIGJpdHMgYXMKKyAqICAgIGl0
LgorICogLT4gSU5URUdFUi4gIFRoaXMgYmVoYXZlcyBsaWtlIGEgMzItYml0IHNpZ25lZCBpbnRl
Z2VyLCBidXQgaXQKKyAqICAgIGlzIHN0b3JlZCB3aXRoIHNvbWUgYmFzaWMgY29tcGFjdGlvbiB1
bmRlciB0aGUgYXNzdW1wdGlvbgorICogICAgdGhhdCBpdCBpcyB1c3VhbGx5IHNtYWxsaXNoLgor
ICogLT4gTE9ORy4gIFNhbWUgYXMgSU5URUdFUiwgYnV0IGdpdmVzIHlvdSA2NCBiaXRzLgorICog
LT4gRlAgdHlwZXMuICBBbiBGUCB0eXBlIGlzIGluc3RhbmNlb2YgYW55IEZQIHR5cGUgdGhhdCBo
YXMgYXQKKyAqICAgIGxlYXN0IGFzIGxhcmdlIG9mIGEgbWFudGlzc2EsIGFuZCBhdCBsZWFzdCBh
cyBsYXJnZSBvZiBhbgorICogICAgZXhwb25lbnQuICBTbyBGTE9BVCBpcyBpbnN0YW5jZW9mIEZM
T0FUIGFuZCBET1VCTEUsIHdoaWxlCisgKiAgICBET1VCTEUgaXMgb25seSBpbnN0YW5jZW9mIERP
VUJMRS4KKyAqIC0+IEFSUkFZLiAgaWYgQSBhbmQgQiBhcmUgYXJyYXkgdHlwZXMsIHRoZW4gQSBp
cyBpbnN0YW5jZW9mIEIKKyAqICAgIGlmIGVsZW1lbnRfdHlwZShBKSBpcyBpbnN0YW5jZW9mIGVs
ZW1lbnRfdHlwZShCKS4KKyAqIC0+IFNUUlVDVC4gIG9uZSBzdHJ1Y3QgaXMgaW5zdGFuY2VvZiBh
bm90aGVyIGlmIGl0IGNvbnRhaW5zIGFsbAorICogICAgb2YgdGhlIG1hbmRhdG9yeSBlbGVtZW50
cyBvZiB0aGUgb3RoZXIgc3RydWN0LCBhbmQgaWYgZWFjaAorICogICAgc3VjaCBlbGVtZW50IGlz
IGluc3RhbmNlb2YgaXRzIHJlc3BlY3RpdmUgZWxlbWVudCBpbiB0aGUgb3RoZXIKKyAqICAgIHN0
cnVjdC4gIG5vdGUgdGhhdCBpZiBhIHN0cnVjdCBjb250YWlucyBhbiBvcHRpb25hbCBmaWVsZCBm
b3IKKyAqICAgIGFub3RoZXIgc3RydWN0J3MgbWFuZGF0b3J5IGZpZWxkLCB0aGlzIHdpbGwgdmlv
bGF0ZSB0aGUKKyAqICAgIGluc3RhbmNlb2YgcmVsYXRpb24uCisgKiAtPiBCSVQuICBhIEJJVCBp
cyBvbmx5IGluc3RhbmNlb2YgQklULiAgdGhlIGp1c3RpZmljYXRpb24gaXMgdGhhdAorICogICAg
ZGVzcGl0ZSB0aGUgbmFtZSwgd2hpY2ggd291bGQgc2VlbSB0byBpbXBseSB0aGF0IGEgQklUIGlz
IGEKKyAqICAgIHR5cGUgb2YgaW50ZWdlciwgYSBCSVQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBp
biBzdWNoIGEKKyAqICAgIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IHdheSB0aGF0IGl0IHdvdWxk
IG5vdCBtYWtlIHNlbnNlIGZvcgorICogICAgYSBCSVQgdG8gYmUgaW5zdGFuY2VvZiBhbnkgaW50
ZWdlci4KKyAqIC0+IENIT0lDRS4gIGlmIEEgYW5kIEIgYXJlIGNob2ljZSB0eXBlcywgdGhlbiBB
IGlzIGluc3RhbmNlb2YgQgorICogICAgaWYgZm9yIHRob3NlIGVsZW1lbnQgbmFtZXMgdGhhdCBB
IGFuZCBCIGhhdmUgaW4gY29tbW9uLCBBJ3MKKyAqICAgIGVsZW1lbnQgaXMgaW5zdGFuY2VvZiBC
J3MgZWxlbWVudC4KKyAqIC0+IFNUUklORy4gIGEgU1RSSU5HIGlzIG9ubHkgaW5zdGFuY2VvZiBT
VFJJTkcuCisgKiAtPiBBTlkuICBhIEFOWSBpcyBvbmx5IGluc3RhbmNlb2YgQU5ZLiAgdGhpcyBp
cyBvZgorICogICAgY291cnNlIHF1aXRlIGlyb25pYywgc2luY2UgQU5ZIHR5cGVzIGFyZSBvdXIg
bWFpbiBzb3VyY2Ugb2YKKyAqICAgIHBvbHltb3JocGlzbS4gOi0pCisgKgorICogTm90ZSB0aGF0
IGlmIHlvdSBjaGFuZ2UgdGhpcyBlbnVtZXJhdGlvbiwgeW91IG11c3QgY2hhbmdlIHNvbWUgb2Yg
dGhlCisgKiAjZGVmaW5lJ3MgZnVydGhlciBkb3duIGluIHRoaXMgZmlsZS4KKyAqLworZW51bSB0
c2ZfdHlwZV9raW5kIHsKKyAgICBUU0ZfVEtfVk9JRCAgICAgPSAwLAorICAgIAorICAgIC8qIGlu
dHMgYW5kIGZsb2F0cyBhcmUgcHJpbWl0aXZlcy4gIGJpdHMgYXJlIG5vdC4gKi8KKyAgICAKKyAg
ICBUU0ZfVEtfSU5UOCAgICAgPSAxLAorICAgIFRTRl9US19VSU5UOCAgICA9IDIsCisgICAgVFNG
X1RLX0lOVDE2ICAgID0gMywKKyAgICBUU0ZfVEtfVUlOVDE2ICAgPSA0LAorICAgIFRTRl9US19J
TlQzMiAgICA9IDUsCisgICAgVFNGX1RLX1VJTlQzMiAgID0gNiwKKyAgICBUU0ZfVEtfSU5UNjQg
ICAgPSA3LAorICAgIFRTRl9US19VSU5UNjQgICA9IDgsCisgICAgLyogcmVzZXJ2ZSA5LTEzIGZv
ciBiaXphcnJlIGludGVnZXIgdHlwZXMuICovCisgICAgCisgICAgLyogVGhpcyBpcyBhIDMyLWJp
dCBpbnRlZ2VyIChUU0ZfVEtfSU5URUdFUikgb3IgNjQtYml0IGludGVnZXIKKyAgICAgKiAoVFNG
X1RLX0xPTkcpIHRoYXQgd2UgY29tcGFjdCBkb3duIHRvIDEgYnl0ZSBpZiBwb3NzaWJsZSB3aGVu
ZXZlciB3ZQorICAgICAqIHRyYW5zbWl0IGl0LiBUaGUgcnVsZXMgZm9yIGludGVnZXIgY29tcGFj
dGlvbiBnaXZlbiBhbiBpbnRlZ2VyIFggYXJlOgorICAgICAqIAorICAgICAqIC0gSWYgLTY0IDw9
IFggPCA2NCwgZW5jb2RlIGFzIG9uZSBieXRlIGNvbnRhaW5pbmcgWCB3aXRoIHRoZSBoaWdoIGJp
dAorICAgICAqICAgb2YgdGhhdCBieXRlIHNldCB0byAwLiBFbHNlOgorICAgICAqIC0gTGV0IFgn
ID0gKFggPCAwKSA/IFggKyA2NCA6IFggLSA2NC4gSWYgLTE2MTkyIDw9IFggPCAxNjE5MiwgZW5j
b2RlCisgICAgICogICBhcyBvbmUgYnl0ZSBjb250YWluaW5nIChYJyA+PiA4KSAtIDEgd2l0aCB0
aGUgaGlnaCBiaXQgb2YgdGhhdCBieXRlCisgICAgICogICBzZXQgdG8gMSBmb2xsb3dlZCBieSBh
IHNlY29uZCBieXRlIGNvbnRhaW5pbmcgWCcgJiAyNTUuIEVsc2U6CisgICAgICogLSBMZXQgWCcg
PSAoWCA8IDApID8gWCArIDE2MTkyIDogWCAtIDE2MTkyLiBJZiAtODQwNDgwMCA8PSBYIDwgODQw
NDgwMCwKKyAgICAgKiAgIGVuY29kZSBhcyBvbmUgYnl0ZSBjb250YWluaW5nIDI1NCBmb2xsb3dl
ZCBieSB0aHJlZSBieXRlcyBjb250YWluaW5nCisgICAgICogICBYJy4gRWxzZToKKyAgICAgKiAt
IEVuY29kZSBhcyAyNTUgZm9sbG93ZWQgYnkgZWl0aGVyIGZvdXIgYnl0ZXMgKFRTRl9US19JTlRF
R0VSKSBvcgorICAgICAqICAgZWlnaHQgYnl0ZXMgKFRTRl9US19MT05HKSBjb250YWluaW4gWC4K
KyAgICAgKgorICAgICAqIE5vdGUgdGhhdCBhcyB3aXRoIGV2ZXJ5dGhpbmcgZWxzZSBpbiBUU0Ys
IHRoZSBwcm90b2NvbCBpcyBkZWZpbmVkIGFzCisgICAgICogYmlnIGVuZGlhbi4gKi8KKyAgICBU
U0ZfVEtfSU5URUdFUiAgPSAxNCwKKyAgICBUU0ZfVEtfTE9ORyAgICAgPSAxNSwKKyAgICAvKiBy
ZXNlcnZlIDE2LTE5IGZvciBtb3JlIGJpemFycmUgaW50ZWdlciB0eXBlcy4gKi8KKworICAgIFRT
Rl9US19GTE9BVCAgICA9IDIwLAorICAgIFRTRl9US19ET1VCTEUgICA9IDIxLAorICAgIC8qIHJl
c2VydmUgMjItMzkgZm9yIGJpemFycmUgZmxvYXQgdHlwZXMuICByZWNvbW1lbmQgdGhhdCBpZgor
ICAgICAqIHdlIGV2ZXIgaGF2ZSBhIGN1c3RvbWl6YWJsZSBmbG9hdCwgaXQgc2hvdWxkIGJlIDMw
LiAqLworCisgICAgVFNGX1RLX0JJVCAgICAgID0gNDAsCisgICAgCisgICAgVFNGX1RLX1NUUklO
RyAgID0gNDUsCisKKyAgICBUU0ZfVEtfQVJSQVkgICAgPSA1MCwKKyAgICBUU0ZfVEtfU1RSVUNU
ICAgPSA1MSwKKyAgICBUU0ZfVEtfQ0hPSUNFICAgPSA1MiwKKyAgICAKKyAgICBUU0ZfVEtfQU5Z
ICAgICAgPSA2MCwKK307CisKK3R5cGVkZWYgdWludDhfdCB0c2ZfdHlwZV9raW5kX3Q7CisKK3N0
cnVjdCB0c2ZfdHlwZTsKK3R5cGVkZWYgc3RydWN0IHRzZl90eXBlIHRzZl90eXBlX3Q7CisKK3N0
cnVjdCB0c2ZfbmFtZWRfdHlwZTsKK3R5cGVkZWYgc3RydWN0IHRzZl9uYW1lZF90eXBlIHRzZl9u
YW1lZF90eXBlX3Q7CisKKy8qIG9yZGVyZWQgdGFibGUgb2YgdHlwZXMga2V5ZWQgYnkgaW50IGFu
ZCBzdHJpbmcgKi8KK3N0cnVjdCB0c2ZfdHlwZV90YWJsZTsKK3R5cGVkZWYgc3RydWN0IHRzZl90
eXBlX3RhYmxlIHRzZl90eXBlX3RhYmxlX3Q7CisKKy8qIHNoYXJlZCB0YWJsZSBvZiB0eXBlcyBr
ZXllZCBvbmx5IGJ5IGludCAqLworc3RydWN0IHRzZl90eXBlX2luX21hcDsKK3R5cGVkZWYgc3Ry
dWN0IHRzZl90eXBlX2luX21hcCB0c2ZfdHlwZV9pbl9tYXBfdDsKKwordHlwZWRlZiB0c2Zfc3Rf
dGFibGUgdHNmX3R5cGVfb3V0X21hcF90OworCitzdHJ1Y3QgdHNmX3JhX3R5cGVfaW5mbzsKK3N0
cnVjdCB0c2ZfcmFfdGNfbm9kZTsKK3N0cnVjdCB0c2ZfcmFfdHlwZV9tYW47CisKK3R5cGVkZWYg
c3RydWN0IHRzZl9yYV90eXBlX2luZm8gdHNmX3JhX3R5cGVfaW5mb190OwordHlwZWRlZiBzdHJ1
Y3QgdHNmX3JhX3RjX25vZGUgdHNmX3JhX3RjX25vZGVfdDsKK3R5cGVkZWYgc3RydWN0IHRzZl9y
YV90eXBlX21hbiB0c2ZfcmFfdHlwZV9tYW5fdDsKKworc3RydWN0IHRzZl9idWZmZXI7Cit0eXBl
ZGVmIHN0cnVjdCB0c2ZfYnVmZmVyIHRzZl9idWZmZXJfdDsKKworLyogdHlwZSB1c2VkIGZvciBh
cnJheXMgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdHMgd2l0aGluIG91ciBuYXRpdmUKKyAqIHN0cnVj
dHVyZSBtYXBwaW5nLiAgeW91IGRvIG5vdCBoYXZlIHRvIGV2ZXIgdG91Y2ggdGhpcyB0eXBlLiAg
YnV0CisgKiBpZiB5b3UgZG8gc3RydWN0IG1hcHBpbmcgKHdoaWNoIHN1cmVseSB5b3Ugd2lsbCEp
LCB0aGVuIHlvdXIKKyAqIGFycmF5cyBzaG91bGQgcmVzZW1ibGUgdGhpcyBoZXJlIHRzZl9uYXRp
dmVfYXJyYXkuICovCitzdHJ1Y3QgdHNmX25hdGl2ZV9hcnJheSB7CisgICAgdm9pZCAqZGF0YTsK
KyAgICB1aW50MzJfdCBsZW47Cit9OworCit0eXBlZGVmIHN0cnVjdCB0c2ZfbmF0aXZlX2FycmF5
IHRzZl9uYXRpdmVfYXJyYXlfdDsKKworLyogdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGZvciBwcmlt
aXRpdmUgYXJyYXlzICovCisjZGVmaW5lIFRTRl9ERUZJTkVfTkFUSVZFX0FSUkFZKHR5cGUsc3Vm
Zml4KSBcCisgICAgc3RydWN0IHRzZl9uYXRpdmVfIyN0eXBlIyNfYXJyYXkge1wKKyAgICAgICAg
dHlwZSMjc3VmZml4ICpkYXRhO1wKKyAgICAgICAgdWludDMyX3QgbGVuO1wKKyAgICB9O1wKKyAg
ICBcCisgICAgdHlwZWRlZiBzdHJ1Y3QgdHNmX25hdGl2ZV8jI3R5cGUjI19hcnJheSB0c2ZfbmF0
aXZlXyMjdHlwZSMjX2FycmF5X3QKKworVFNGX0RFRklORV9OQVRJVkVfQVJSQVkoaW50OCxfdCk7
CitUU0ZfREVGSU5FX05BVElWRV9BUlJBWShpbnQxNixfdCk7CitUU0ZfREVGSU5FX05BVElWRV9B
UlJBWShpbnQzMixfdCk7CitUU0ZfREVGSU5FX05BVElWRV9BUlJBWShpbnQ2NCxfdCk7CitUU0Zf
REVGSU5FX05BVElWRV9BUlJBWSh1aW50OCxfdCk7CitUU0ZfREVGSU5FX05BVElWRV9BUlJBWSh1
aW50MTYsX3QpOworVFNGX0RFRklORV9OQVRJVkVfQVJSQVkodWludDMyLF90KTsKK1RTRl9ERUZJ
TkVfTkFUSVZFX0FSUkFZKHVpbnQ2NCxfdCk7CitUU0ZfREVGSU5FX05BVElWRV9BUlJBWShmbG9h
dCwpOworVFNGX0RFRklORV9OQVRJVkVfQVJSQVkoZG91YmxlLCk7CisKKy8qIHNwZWNpYWwgdHlw
ZSB1c2VkIGZvciBhcnJheXMgb2YgdW5rbm93biB0eXBlICovCitzdHJ1Y3QgdHNmX25hdGl2ZV92
b2lkX2FycmF5IHsKKyAgICB1aW50MzJfdCBsZW47Cit9OworCit0eXBlZGVmIHN0cnVjdCB0c2Zf
bmF0aXZlX3ZvaWRfYXJyYXkgdHNmX25hdGl2ZV92b2lkX2FycmF5X3Q7CisKKy8qIHNwZWNpYWwg
dHlwZSB1c2VkIGZvciBhcnJheXMgb2YgYml0cyByZWZlcmVuY2VkIGZyb20gc3RydWN0cworICog
d2l0aGluIG91ciBuYXRpdmUgc3RydWN0dXJlIG1hcHBpbmcuICovCitzdHJ1Y3QgdHNmX25hdGl2
ZV9iaXR2ZWN0b3IgeworICAgIHVpbnQ4X3QgKmJpdHM7ICAvKiBhcnJheSBvZiBsZW5ndGggKG51
bV9iaXRzKzcpPj4zICovCisgICAgdWludDMyX3QgbnVtX2JpdHM7Cit9OworCit0eXBlZGVmIHN0
cnVjdCB0c2ZfbmF0aXZlX2JpdHZlY3RvciB0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90OworCisvKiB0
eXBlIG9mIHRoZSBjaG9pY2UgaXRzZWxmIHdpdGhpbiBjaG9pY2UgdHlwZXMuICovCit0eXBlZGVm
IHVpbnQzMl90IHRzZl9jaG9pY2VfdDsKKworc3RydWN0IHRzZl9yZWZsZWN0OwordHlwZWRlZiBz
dHJ1Y3QgdHNmX3JlZmxlY3QgdHNmX3JlZmxlY3RfdDsKKworc3RydWN0IHRzZl9nZW5ydHI7Citz
dHJ1Y3QgdHNmX3BhcnNlcjsKK3N0cnVjdCB0c2ZfY29waWVyOworc3RydWN0IHRzZl9kZXN0cnVj
dG9yOwordHlwZWRlZiBzdHJ1Y3QgdHNmX2dlbnJ0ciB0c2ZfZ2VucnRyX3Q7Cit0eXBlZGVmIHN0
cnVjdCB0c2ZfcGFyc2VyIHRzZl9wYXJzZXJfdDsKK3R5cGVkZWYgc3RydWN0IHRzZl9jb3BpZXIg
dHNmX2NvcGllcl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2Rlc3RydWN0b3IgdHNmX2Rlc3RydWN0
b3JfdDsKKworLyogZnVuY3Rpb24gY2FsbGJhY2sgdXNlZCBmb3IgcmVhZGluZy4gIHJldHVybiB0
c2ZfdHJ1ZSBvbiBzdWNjZXNzIGFuZAorICogdHNmX2ZhbHNlIG9uIGVycm9yLiAgb24gZXJyb3Is
IHVzZSB0c2Zfc2V0X2Vycm9yKCkgYW5kIHRzZl9zZXRfZXJybm8oKQorICogdG8gaW5kaWNhdGUg
d2hhdCBlcnJvciBvY2N1cnJlZCAodGhpcyBwYXJ0IGlzIG5vdCBvcHRpb25hbCAtIHlvdQorICog
Y2Fubm90IHJldHVybiB0c2ZfZmFsc2Ugd2l0aG91dCBmaXJzdCBjYWxsaW5nIHRzZl9zZXRfZXJy
b3IoKSBvcgorICogdHNmX3NldF9lcnJubygpKS4gIGFuIGFsbC1vci1ub3RoaW5nIHJlYWQgaXMg
ZXhwZWN0ZWQsIHNvIGlmIHlvdSdyZQorICogaW1wbGVtZW50aW5nIHRoaXMgYXMgYSByZWFkIG9u
IGEgc29ja2V0IG9yIHBpcGUsIHlvdSBtYXkgaGF2ZSB0bworICogbG9vcCBhIGNvdXBsZSBvZiB0
aW1lcy4gKi8KK3R5cGVkZWYgdHNmX2Jvb2xfdCAoKnRzZl9yZWFkZXJfdCkodm9pZCAqYXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8qIGZ1bmN0aW9uIGNh
bGxiYWNrIHVzZWQgZm9yIHdyaXRlLiAgcmV0dXJuIHRzZl90cnVlIG9uIHN1Y2Nlc3MgYW5kCisg
KiB0c2ZfZmFsc2Ugb24gZXJyb3IuICBvbiBlcnJvciwgdXNlIHRzZl9zZXRfZXJyb3IoKSBhbmQg
dHNmX3NldF9lcnJubygpCisgKiB0byBpbmRpY2F0ZSB3aGF0IGVycm9yIG9jY3VycmVkICh0aGlz
IHBhcnQgaXMgbm90IG9wdGlvbmFsIC0geW91CisgKiBjYW5ub3QgcmV0dXJuIHRzZl9mYWxzZSB3
aXRob3V0IGZpcnN0IGNhbGxpbmcgdHNmX3NldF9lcnJvcigpIG9yCisgKiB0c2Zfc2V0X2Vycm5v
KCkpLiAgYW4gYWxsLW9yLW5vdGhpbmcgd3JpdGUgaXMgZXhwZWN0ZWQsIHNvIGlmIHlvdSdyZQor
ICogaW1wbGVtZW50aW5nIHRoaXMgYXMgYSB3cml0ZSBvbiBhIHNvY2tldCBvciBwaXBlLCB5b3Ug
bWF5IGhhdmUgdG8KKyAqIGxvb3AgYSBjb3VwbGUgb2YgdGltZXMuICovCit0eXBlZGVmIHRzZl9i
b29sX3QgKCp0c2Zfd3JpdGVyX3QpKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBsZW4pOworCisvKiBmdW5jdGlvbiBjYWxsYmFjayB1c2VkIGZvciBy
ZWFkaW5nLiAgcmV0dXJucyBub24tbmVnYXRpdmUgY291bnQgb2YKKyAqIHRoZSBudW1iZXIgb2Yg
Ynl0ZXMgcmVhZCBvbiBzdWNjZXNzIGFuZCAtMSBvbiBlcnJvci4gIG9uIGVycm9yLCB1c2UKKyAq
IHRzZl9zZXRfZXJyb3IoKSBhbmQgZnJpZW5kcy4gIHRoZSBjYWxsZXIgZXhwZWN0cyByZWFkLWFz
LW11Y2gtYXMtCisgKiB5b3UtY2FuIHNlbWFudGljcywgc28gdGhpcyBmdW5jdGlvbiBzaG91bGQg
bmV2ZXIgYmxvY2sgaWYgc29tZSBkYXRhCisgKiBpcyBhbHJlYWR5IGF2YWlsYWJsZS4gKi8KK3R5
cGVkZWYgaW50MzJfdCAoKnRzZl9wYXJ0aWFsX3JlYWRlcl90KSh2b2lkICphcmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKK3N0cnVjdCB0c2Zf
bGltaXRzIHsKKyAgICAvKiBtYXhpbXVtIG51bWJlciBvZiB0eXBlcyBhY2NlcHRlZCBpbiBhIHN0
cmVhbSBmaWxlIGluIGJldHdlZW4gcmVzZXQKKyAgICAgKiB0eXBlcyBjYWxscy4gKi8KKyAgICB1
aW50MzJfdCBtYXhfdHlwZXM7CisgICAgCisgICAgLyogYnl0ZSBzaXplIGxpbWl0cyAqLworICAg
IAorICAgIC8qIG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIHNlcmlhbGl6ZWQgdHlwZSAqLwor
ICAgIHVpbnQzMl90IG1heF90eXBlX3NpemU7CisgICAgCisgICAgLyogbWF4aW11bSBzaXplIHRo
YXQgYWxsIHR5cGVzIHJlYWQgZHVyaW5nIGEgc2Vzc2lvbiBjYW4gaGF2ZSBwdXQKKyAgICAgKiB0
b2dldGhlci4gKi8KKyAgICB1aW50MzJfdCBtYXhfdG90YWxfdHlwZV9zaXplOworICAgIAorICAg
IC8qIG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIGJ1ZmZlciAqLworICAgIHVpbnQzMl90IG1h
eF9idWZfc2l6ZTsKKyAgICAKKyAgICAvKiBjb250YWluZXIgZGVwdGggbGltaXQgKi8KKyAgICB1
aW50MzJfdCBkZXB0aF9saW1pdDsKKyAgICAKKyAgICAvKiB3aGV0aGVyIG9yIG5vdCB0byBhbGxv
dyBjb21tZW50cyAqLworICAgIHRzZl9ib29sX3QgYWxsb3dfY29tbWVudHM7CisgICAgCisgICAg
LyogYWxsb3dpbmcgaW5kaXZpZHVhbCB0eXBlcy4gIGFjY2VzcyB0aGlzIGFzIGEgcmVndWxhciBi
aXR2ZWN0b3IuICovCisgICAgdWludDhfdCBhbGxvd190eXBlX2tpbmRbMzJdOworICAgIAorICAg
IC8qIHR5cGUtc3BlY2lmaWMgbGltaXRzICovCisgICAgCisgICAgLyogbWF4aW11bSBhcnJheSBs
ZW5ndGggKi8KKyAgICB1aW50MzJfdCBtYXhfYXJyYXlfbGVuZ3RoOyAgLyogdW5pbXBsZW1lbnRl
ZCAqLworICAgIAorICAgIC8qIG1heGltdW0gc3RydWN0IHNpemUsIGluIG51bWJlciBvZiBlbGVt
ZW50cyAqLworICAgIHVpbnQzMl90IG1heF9zdHJ1Y3Rfc2l6ZTsKKyAgICAKKyAgICAvKiBtYXhp
bXVtIGNob2ljZSBzaXplLCBpbiBudW1iZXIgb2YgZWxlbWVudHMgKi8KKyAgICB1aW50MzJfdCBt
YXhfY2hvaWNlX3NpemU7CisgICAgCisgICAgLyogbWF4aW11bSBzdHJpbmcgc2l6ZSAqLworICAg
IHVpbnQzMl90IG1heF9zdHJpbmdfc2l6ZTsgICAvKiB1bmltcGxlbWVudGVkICovCit9OworCit0
eXBlZGVmIHN0cnVjdCB0c2ZfbGltaXRzIHRzZl9saW1pdHNfdDsKKworc3RydWN0IHRzZl9zZXJp
YWxfaW5fbWFuOworc3RydWN0IHRzZl9zZXJpYWxfb3V0X21hbjsKKwordHlwZWRlZiBzdHJ1Y3Qg
dHNmX3NlcmlhbF9pbl9tYW4gdHNmX3NlcmlhbF9pbl9tYW5fdDsKK3R5cGVkZWYgc3RydWN0IHRz
Zl9zZXJpYWxfb3V0X21hbiB0c2Zfc2VyaWFsX291dF9tYW5fdDsKKworLyogY2FsbGJhY2sgdGhh
dCBnZXRzIGNhbGxlZCBieSB0aGUgaW5wdXQgbWFuYWdlciB3aGVuIGEgbmV3IHR5cGUgY29tZXMK
KyAqIGluLiAqLwordHlwZWRlZiB2b2lkICgqdHNmX3R5cGVfY2JhY2tfdCkodHNmX3NlcmlhbF9p
bl9tYW5fdCAqaW5fbWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7
CisKK3R5cGVkZWYgdWludDMyX3QgdHNmX3NlcmlhbF9pbl9tYW5fc3RhdGVfdDsKKworLyogc2l6
ZSBhd2FyZSAtIGRlbGVnYXRlcyB0byBhbm90aGVyIHJlYWRlciwgY291bnRzIHRoZSBieXRlcyBy
ZWFkLAorICogYW5kIGZpcmVzIGEgVFNGX0VfTk9UX0FMTE9XRUQgZXJyb3Igd2hlbiB0aGUgbGlt
aXQgcmVhY2hlcyAwLiAgbmFtZQorICogc2hvdWxkIGJlIGEgc2hvcnQgKHByZWZlcnJhYmx5IG9u
ZS13b3JkKSBkZXNjcmlwdGlvbiBvZiB3aGF0IHlvdSdyZQorICogcmVhZGluZzsgaXQnbGwgYmUg
dXNlZCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdHNm
X3JlYWRlcl90IHJlYWRlcjsKKyAgICB2b2lkICphcmc7CisgICAgdWludDMyX3QgbGltaXQ7Cisg
ICAgY29uc3QgY2hhciAqbmFtZTsKK30gdHNmX3NpemVfYXdhcmVfcmRyX3Q7CisKKy8qIGxpZ2h0
LXdlaWdodCByZXByZXNlbnRhdGlvbiBvZiBhIGJ1ZmZlciBmb3Igd3JpdGluZy4gKi8KK3R5cGVk
ZWYgc3RydWN0IHsKKyAgICB1aW50OF90ICpiYXNlOworICAgIHVpbnQ4X3QgKmN1cjsKKyAgICB1
aW50OF90ICplbmQ7Cit9IHRzZl9yZXNpemFibGVfYnVmZmVyX3Q7CisKKy8qIGxpZ2h0LXdlaWdo
dCByZXByZXNlbnRhdGlvbiBvZiBhIGJ1ZmZlciAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVp
bnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICplbmQ7Cit9IHRzZl9saWdodF9idWZmZXJfdDsKKwor
dHlwZWRlZiBzdHJ1Y3QgeworICAgIHRzZl9yZWFkZXJfdCByZWFkZXI7CisgICAgdm9pZCAqYXJn
OworfSB0c2ZfY29tcGFyaW5nX3dyaXRlcl90OworCitzdHJ1Y3QgdHNmX3NoYTFfd3RyOwordHlw
ZWRlZiBzdHJ1Y3QgdHNmX3NoYTFfd3RyIHRzZl9zaGExX3d0cl90OworCitzdHJ1Y3QgdHNmX2J1
Zl9yZHI7CitzdHJ1Y3QgdHNmX2J1Zl93dHI7Cit0eXBlZGVmIHN0cnVjdCB0c2ZfYnVmX3JkciB0
c2ZfYnVmX3Jkcl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2J1Zl93dHIgdHNmX2J1Zl93dHJfdDsK
KworLyogdGhlIHpsaWIgcmRyL3d0ciBjYW4gYWxzbyBkbyBiemlwMi4gKi8KKworc3RydWN0IHRz
Zl96aXBfd3RyX2F0dHIgeworICAgIHRzZl96aXBfbW9kZV90IG1vZGU7CisgICAgCisgICAgdWlu
dDMyX3QgYnVmX3NpemU7CisgICAgCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAg
ICAgICAgICAgdHNmX2Jvb2xfdCBhZHZhbmNlZF9pbml0OworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpbnQgbGV2ZWw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBtZXRob2Q7Cisg
ICAgICAgICAgICBpbnQgd2luZG93Qml0czsKKyAgICAgICAgICAgIGludCBtZW1MZXZlbDsKKyAg
ICAgICAgICAgIGludCBzdHJhdGVneTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHJl
c2VydmVkMTsKKyAgICAgICAgICAgIGludCByZXNlcnZlZDI7CisgICAgICAgICAgICBpbnQgcmVz
ZXJ2ZWQzOworICAgICAgICB9IHo7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQg
YmxvY2tTaXplMTAwazsKKyAgICAgICAgICAgIGludCB2ZXJib3NpdHk7CisgICAgICAgICAgICBp
bnQgd29ya0ZhY3RvcjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHJlc2VydmVkMTsK
KyAgICAgICAgICAgIGludCByZXNlcnZlZDI7CisgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQzOwor
ICAgICAgICB9IGI7CisgICAgfSB1OworfTsKKworc3RydWN0IHRzZl96aXBfcmRyX2F0dHIgewor
ICAgIHN0cnVjdCB7CisgICAgICAgIHRzZl9ib29sX3QgYWxsb3c7CisgICAgICAgIAorICAgICAg
ICB1aW50MzJfdCBidWZfc2l6ZTsKKyAgICAgICAgdHNmX2Jvb2xfdCBhZHZhbmNlZF9pbml0Owor
ICAgICAgICBpbnQgd2luZG93Qml0czsKKyAgICAgICAgCisgICAgICAgIGludCByZXNlcnZlZDE7
CisgICAgICAgIGludCByZXNlcnZlZDI7CisgICAgICAgIGludCByZXNlcnZlZDM7CisgICAgfSB6
OworICAgIHN0cnVjdCB7CisgICAgICAgIHRzZl9ib29sX3QgYWxsb3c7CisgICAgICAgIAorICAg
ICAgICB1aW50MzJfdCBidWZfc2l6ZTsKKyAgICAgICAgaW50IHZlcmJvc2l0eTsKKyAgICAgICAg
aW50IHNtYWxsOworICAgICAgICAKKyAgICAgICAgaW50IHJlc2VydmVkMTsKKyAgICAgICAgaW50
IHJlc2VydmVkMjsKKyAgICAgICAgaW50IHJlc2VydmVkMzsKKyAgICB9IGI7Cit9OworCit0eXBl
ZGVmIHN0cnVjdCB0c2ZfemlwX3d0cl9hdHRyIHRzZl96aXBfd3RyX2F0dHJfdDsKK3R5cGVkZWYg
c3RydWN0IHRzZl96aXBfcmRyX2F0dHIgdHNmX3ppcF9yZHJfYXR0cl90OworCitzdHJ1Y3QgdHNm
X3ppcF9yZHI7CitzdHJ1Y3QgdHNmX3ppcF93dHI7Cit0eXBlZGVmIHN0cnVjdCB0c2ZfemlwX3Jk
ciB0c2ZfemlwX3Jkcl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX3ppcF93dHIgdHNmX3ppcF93dHJf
dDsKKworc3RydWN0IHRzZl9hZHB0X3JkcjsKK3R5cGVkZWYgc3RydWN0IHRzZl9hZHB0X3JkciB0
c2ZfYWRwdF9yZHJfdDsKKworLyogeW91J3JlIHJlc3BvbnNpYmxlIGZvciBhbGxvY2F0aW5nIHRo
ZXNlIGd1eXMgeW91cnNlbGYuICBidXQgdGhhdCBkb2VzCisgKiBub3QgbWVhbiB0aGF0IHlvdSBj
YW4gZWRpdCB0aGVtISAgdHJlYXQgdGhpcyBhcyBhbiBvcGFxdWUhICBhbHNvIG5vdGUKKyAqIHRo
YXQgdGhlIHN0YXRlIGlzIGVmZmVjdGl2ZWx5IGEgcG9pbnRlciwgc28gdGhpcyBtYXJrIGlzIHVu
ZGVmaW5lZCBpZgorICogc2VyaWFsaXplZC4uLiBzbyB5b3UgY2Fubm90IHVzZSB0aGVzZSB0aGlu
Z3MgdG8gYnVpbGQgYW4gZXh0ZXJuYWwKKyAqIGluZGV4LiAgc29ycnkuICovCitzdHJ1Y3QgdHNm
X3N0cmVhbV9maWxlX21hcmsgeworICAgIHRzZl9vZmZfdCBvZmZzZXQ7CisgICAgdHNmX3Nlcmlh
bF9pbl9tYW5fc3RhdGVfdCBzdGF0ZTsKK307CisKK3R5cGVkZWYgc3RydWN0IHRzZl9zdHJlYW1f
ZmlsZV9tYXJrIHRzZl9zdHJlYW1fZmlsZV9tYXJrX3Q7CisKK3N0cnVjdCB0c2Zfc3RyZWFtX2Zp
bGVfaW5wdXQ7CitzdHJ1Y3QgdHNmX3N0cmVhbV9maWxlX291dHB1dDsKK3R5cGVkZWYgc3RydWN0
IHRzZl9zdHJlYW1fZmlsZV9pbnB1dCB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdDsKK3R5cGVkZWYg
c3RydWN0IHRzZl9zdHJlYW1fZmlsZV9vdXRwdXQgdHNmX3N0cmVhbV9maWxlX291dHB1dF90Owor
CitlbnVtIHRzZl9mc2RiX2tpbmQgeworICAgIFRTRl9GU0RCX0xPQ0FMLAorICAgIFRTRl9GU0RC
X1JFTU9URQorfTsKKwordHlwZWRlZiBlbnVtIHRzZl9mc2RiX2tpbmQgdHNmX2ZzZGJfa2luZF90
OworCitzdHJ1Y3QgdHNmX2ZzZGtfY29ubmVjdGlvbjsKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2Ri
X2Nvbm5lY3Rpb24gdHNmX2ZzZGJfY29ubmVjdGlvbl90OworCitzdHJ1Y3QgdHNmX2ZzZGI7Cit0
eXBlZGVmIHN0cnVjdCB0c2ZfZnNkYiB0c2ZfZnNkYl90OworCitzdHJ1Y3QgdHNmX2ZzZGJfaW47
CitzdHJ1Y3QgdHNmX2ZzZGJfb3V0OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2ZzZGJfaW4gdHNmX2Zz
ZGJfaW5fdDsKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX291dCB0c2ZfZnNkYl9vdXRfdDsKKwor
LyogZ2V0IGFuIGVycm9yIGNvZGUuICB0aGlzIGlzIHRoZSBlcnJvciBjb2RlIGZyb20gdGhlIGxh
c3QgZnVuY3Rpb24gdGhhdAorICogZmFpbGVkIGluIHRoZSBjdXJyZW50IHRocmVhZC4gIGZ1bmN0
aW9ucyBpbiB0aGUgVFNGIEFQSSBhbHdheXMgdGVsbCB5b3UKKyAqIHdoZXRoZXIgb3Igbm90IHRo
ZXkgZmFpbGVkLCB1c3VhbGx5IGJ5IHJldHVybmluZyBOVUxMIChpZiB0aGUgZnVuY3Rpb24KKyAq
IHJldHVybnMgcG9pbnRlcnMpLCB0c2ZfZmFsc2UgKGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRz
Zl9ib29sX3QpLCBvciAtMQorICogKGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIHNvbWUgc29ydCBv
ZiBpbnRlZ2VyKS4gIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24KKyAqIG1hZGUgd2hlbiBubyBlcnJv
ciBoYXMgb2NjdXJyZWQgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvciAocmVhZDoKKyAqIHNl
Z2ZhdWx0KS4gKi8KK3RzZl9lcnJvcl90ICAgICB0c2ZfZ2V0X2Vycm9yX2NvZGUodm9pZCk7CisK
Ky8qIGdpdmVuIGFuIGVycm9yIGNvZGUsIHRlbGxzIHlvdSB3aGF0IHRoZSBkZWZhdWx0IG1lc3Nh
Z2UgaXMuICB0aGUgc3RyaW5nCisgKiByZXR1cm5lZCBoZXJlIGlzIHRydWx5IGEgY29uc3RhbnQs
IHNvIHlvdSBjYW4gc2FmZWx5IHJlZmVyIHRvIGl0CisgKiBpbmRlZmluaXRlbHkuICBub3RlIHRo
YXQgaWYgeW91IHdhbnQgYSBtb3JlIGRlc2NyaXB0aXZlIG1lc3NhZ2UgZm9yIGFuCisgKiBlcnJv
ciB0aGF0IGp1c3Qgb2NjdXJyZWQsIHVzZSB0c2ZfZ2V0X2Vycm9yKCkuICB0c2ZfZ2V0X2Vycm9y
KCkgd2lsbAorICogYWxtb3N0IGFsd2F5cyByZXR1cm4gYSBzdHJpbmcgdGhhdCBjb250YWlucyBt
b3JlIGluZm9ybWF0aW9uIHRoYW4gdXNpbmcKKyAqIHRzZl9nZXRfbWVzc2FnZV9mb3JfZXJyb3Jf
Y29kZSh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSkuICBub3RlIHRoYXQgdGhpcworICogZnVuY3Rpb24g
ZG9lcyBub3QgY2hlY2sgaWYgY29kZSBpcyBhIHZhbGlkIFRTRiBlcnJvciBjb2RlOyBpZiBpdCBp
c24ndCwKKyAqIGJhZCB0aGluZ3Mgd2lsbCBoYXBwZW4uICovCitjb25zdCBjaGFyKiAgICAgdHNm
X2dldF9tZXNzYWdlX2Zvcl9lcnJvcl9jb2RlKHRzZl9lcnJvcl90IGNvZGUpOworCisvKiBnZXQg
dGhlIHN5c3RlbSBlcnJubyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgZXJyb3IuICB0aGUg
cmV0dXJuCisgKiB2YWx1ZSBpcyB1bmRlZmluZWQgaWYgdGhlIGxhc3QgZnVuY3Rpb24gdGhhdCBm
YWlsZWQgZGlkIG5vdCBmYWlsIGR1ZSB0bworICogYSBzeXN0ZW0gZXJyb3IuICovCitpbnQgICAg
ICAgICAgICAgdHNmX2dldF9zeXN0ZW1fZXJybm8odm9pZCk7CisKKy8qIGdldCB0aGUgWkxpYiBl
cnJvciBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBlcnJvci4gIHRoZSByZXR1cm4K
KyAqIHZhbHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5jdGlvbiB0aGF0IGZhaWxlZCBk
aWQgbm90IGZhaWwgZHVlIHRvCisgKiBhIFpMaWIgZXJyb3IuICovCitpbnQgICAgICAgICAgICAg
dHNmX2dldF96bGliX2Vycm9yX2NvZGUodm9pZCk7CisKKy8qIGdldCB0aGUgWkxpYiBlcnJvciBt
ZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBlcnJvci4gIHRoZSByZXR1cm4KKyAq
IHZhbHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5jdGlvbiB0aGF0IGZhaWxlZCBkaWQg
bm90IGZhaWwgZHVlIHRvCisgKiBhIFpMaWIgZXJyb3IuICAoTk9URTogaWYgYSBaTGliIGVycm9y
IGFjdHVhbGx5IGRpZCBoYXBwZW4sIHRoaXMgd2lsbAorICogbm90IGJlIE5VTEwuKSovCitjb25z
dCBjaGFyKiAgICAgdHNmX2dldF96bGliX2Vycm9yX21zZyh2b2lkKTsKKworLyogZ2V0IHRoZSBs
aWJiemlwMiBlcnJvciBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBlcnJvci4gIHRo
ZSByZXR1cm4KKyAqIHZhbHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5jdGlvbiB0aGF0
IGZhaWxlZCBkaWQgbm90IGZhaWwgZHVlIHRvCisgKiBhIGxpYmJ6aXAyIGVycm9yLiAqLworaW50
ICAgICAgICAgICAgIHRzZl9nZXRfbGliYnppcDJfZXJyb3JfY29kZSh2b2lkKTsKKworLyogZ2V0
IHRoZSBsaWJiemlwMiBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBl
cnJvci4gIHRoZQorICogcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZCBpZiB0aGUgbGFzdCBmdW5j
dGlvbiB0aGF0IGZhaWxlZCBkaWQgbm90IGZhaWwKKyAqIGR1ZSB0byBhIGxpYmJ6aXAyIGVycm9y
LiovCitjb25zdCBjaGFyKiAgICAgdHNmX2dldF9saWJiemlwMl9lcnJvcl9tc2codm9pZCk7CisK
Ky8qIGdldCB0aGUgc2lnbmFsIHRoYXQga2lsbGVkIHRoZSBjaGlsZCBwcm9jZXNzIChvbmx5IGZv
cgorICogVFNGX0VfREVBVEhfQllfU0lHTkFMKS4gIHRoZSByZXR1cm4gdmFsdWUgaXMgdW5kZWZp
bmVkIGlmIHRoZSBsYXN0CisgKiBmdW5jdGlvbiB0aGF0IGZhaWxlZCBkaWQgbm90IGZhaWwgZHVl
IHRvIFRTRl9FX0RFQVRIX0JZX1NJR05BTC4gKi8KK2ludCAgICAgICAgICAgICB0c2ZfZ2V0X2Rl
YWRseV9zaWduYWwodm9pZCk7CisKKy8qIGdldCBhIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvci4g
IHRoZSBzdHJpbmcgdGhhdCBpcyByZXR1cm5lZAorICogaXMgbm90IG93bmVkIGJ5IHlvdTsgaXQg
aXMgb25seSB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxsIHRvCisgKiBhbnkgdHNmIGZ1bmN0aW9u
IG90aGVyIHRoYW4gdHNmX2dldF9lcnJvcl9jb2RlKCksIHRzZl9nZXRfZXJyb3IoKSwKKyAqIGFu
ZCB0aGUgb3RoZXIgZXJyb3ItZ2V0dGluZyBmdW5jdGlvbnMgYWJvdmUuICAoSWYgdGhlIGxpYnJh
cnkgaXMKKyAqIGNvbXBpbGVkIHdpdGggdGhyZWFkLXNhZmV0eSB0aGVuIHRoZSBwcmV2aW91cyBz
dGF0ZW1lbnQgcmVmZXJzIHRvCisgKiB0aGUgbmV4dCBjYWxsIGJ5IHRoZSBzYW1lIHRocmVhZCwg
cmF0aGVyIHRoYW4gdGhlIG5leHQgY2FsbAorICogZ2xvYmFsbHkuKSAgY2FsbHMgdG8gdGhpcyBm
dW5jdGlvbiBtYWRlIHdoZW4gbm8gZXJyb3IgaGFzCisgKiBvY2N1cnJlZCAod2l0aGluIHRoaXMg
dGhyZWFkKSByZXN1bHQgaW4gdW5kZWZpbmVkIGJlaGF2aW9yCisgKiAocXVpdGUgcG9zc2libHkg
YW5kIHZlcnkgbGlrZWx5IGEgc2VnZmF1bHQgaW5zaWRlIHRzZl9nZXRfZXJyb3IoKSkuICovCitj
b25zdCBjaGFyKiAgICAgdHNmX2dldF9lcnJvcih2b2lkKTsKKworLyogZ2V0IGp1c3QgdGhlIG1l
c3NhZ2UgZm9yIHRoZSBjdXJyZW50IGVycm9yIGNvZGUuICB0aGlzIHdpbGwgYWx3YXlzCisgKiBi
ZSB0aGUgcHJlZml4IG9mIHdoYXQgdHNmX2dldF9lcnJvcigpIHJldHVybnMuICovCisjZGVmaW5l
ICAgICAgICAgdHNmX2dldF9lcnJvcl9wcmVmaXgoKSBcCisgICAgKHRzZl9nZXRfbWVzc2FnZV9m
b3JfZXJyb3JfY29kZSh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSkpCisKKy8qIGdldCBqdXN0IHRoZSBt
ZXNzYWdlIHRoYXQgaXMgYWNxdWlyZWQgZnJvbSB0aGUgc291cmNlIG9mIHRoZSBlcnJvci4KKyAq
IGZvciBlcnJubywgdGhpcyBpcyBzdHJlcnJvcihlcnJubyk7ICwgYW5kIHNvIG9uLiAgdGhpcyB3
aWxsIGJlIE5VTEwgZm9yCisgKiBlcnJvcnMgaW4gd2hpY2ggdGhpcyBkb2VzIG5vdCBhcHBseS4g
IGlmIHRoZSBlcnJvciBpcyBzZXQgdXNpbmcgdGhlCisgKiBvcmRpbmFyeSBmdW5jdGlvbnMgaW4g
dGhpcyBoZWFkZXIgZmlsZSwgdGhpcyBzdHJpbmcgd2lsbCBmYWxsIHNvbWV3aGVyZQorICogaW4g
dGhlIHN0cmluZyByZXR1cm5lZCBieSB0c2ZfZ2V0X2Vycm9yKCkgLSBidXQgdG8gYmUgc2FmZSB5
b3Ugc2hvdWxkCisgKiBub3QgcmVseSBvbiB0aGlzIGZhY3QuICovCitjb25zdCBjaGFyKiAgICAg
dHNmX2dldF9lcnJvcl9pbmZpeCh2b2lkKTsKKworLyogZ2V0IGp1c3QgdGhlIG1lc3NhZ2UgdGhh
dCB3YXMgc3VwcGxpZWQgYnkgdGhlIHVzZXIuICB0aGlzIHdpbGwgYmUKKyAqIE5VTEwgaWYgdGhl
IHVzZXIgZGlkIG5vdCBzdXBwbHkgYW55dGhpbmcuICBpZiBub24tbnVsbCwgdGhpcyB3aWxsCisg
KiBhbHdheXMgYmUgdGhlIHN1ZmZpeCBvZiB3aGF0IHRzZl9nZXRfZXJyb3IoKSByZXR1cm5zLiAq
LworY29uc3QgY2hhciogICAgIHRzZl9nZXRfZXJyb3Jfc3VmZml4KHZvaWQpOworCisvKiBzcGVj
aWZ5IHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQuICBmb3JtYXQgbWF5IGJlIE5VTEwsIGluIHdoaWNo
IGNhc2UKKyAqIHRoZSBvbmx5IGVycm9yIHN0cmluZyBpcyB0aGUgb25lIHRoYXQgY29tZXMgd2l0
aCB0aGUgZ2l2ZW4gZXJyb3IKKyAqIGNvZGUuICovCit2b2lkICAgICAgICAgICAgdHNmX3NldF9l
cnJvcih0c2ZfZXJyb3JfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKwor
Lyogc3BlY2lmeSB0aGF0IGEgc3lzdGVtIGVycm9yIG9jdXJyZWQuICBpZiBmb3JtYXQgaXMgTlVM
TCwgdGhlbiB0aGUKKyAqIGVycm9yIG1lc3NhZ2UgY29udGFpbnMgdGhlIHN0cmluZyAiU3lzdGVt
IGVycm9yIiBhbmQgdGhlIHN0cmVycm9yCisgKiBmb3IgdGhlIGdpdmVuIGVycm5vLiAgaWYgZm9y
bWF0IGlzIG5vbi1OVUxMLCB0aGVuIHlvdXIgdGV4dAorICogZ2V0cyBhcHBlbmRlZCBhdCB0aGUg
ZW5kIG9mIHRoYXQuICovCit2b2lkICAgICAgICAgICAgdHNmX3NldF9zcGVjaWZpY19lcnJubyhp
bnQgY3VyX2Vycm5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqZm9ybWF0LC4uLik7CisKKy8qIHNwZWNpZnkgdGhhdCBhIHN5c3RlbSBlcnJvciBv
Y3VycmVkLiAgZXhhY3RseSBsaWtlCisgKiB0c2Zfc2V0X3NwZWNpZmljX2Vycm5vKCkgZXhjZXB0
IHRoYXQgdGhlIGdsb2JhbCBlcnJubyBpcyB1c2VkCisgKiBpbnN0ZWFkIG9mIHRoZSBnaXZlbiBl
cnJuby4gKi8KK3ZvaWQgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKGNvbnN0IGNoYXIgKmZvcm1h
dCwuLi4pOworCisvKiBzcGVjaWZ5IHRoYXQgc29tZSBjaGlsZCBwcm9jZXNzIGRpZWQgd2l0aCB0
aGUgZ2l2ZW4gc2lnbmFsLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9zZXRfZGVhZGx5X3NpZ25h
bChpbnQgZGVhZGx5X3NpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqZm9ybWF0LC4uLik7CisKKy8qIHNwZWNpZnkgdGhhdCBhIFpMaWIgZXJy
b3Igb2NjdXJyZWQuICBpZiBmb3JtYXQgaXMgTlVMTCwgdGhlbiB0aGUKKyAqIGVycm9yIG1lc3Nh
Z2UgY29udGFpbnMgdGhlIHN0cmluZyAiWkxpYiBlcnJvciIgYW5kIHRoZSBlcnJvciBtZXNzYWdl
CisgKiB5b3UgcHJvdmlkZS4gIElmIHRoZSBmb3JtYXQgaXMgbm90IE5VTEwsIHRoZSB0ZXh0IHNw
ZWNpZmllZCBieSB0aGUKKyAqIGZvcm1hdCBpcyBhcHBlbmRlZCB0byB0aGF0LgorICoKKyAqIE5v
dGUgdGhhdCBpZiBaTGliIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluLCB0aGlzIGZ1bmN0aW9u
IHdpbGwKKyAqIG1lYW4gYW4gaW1tZWRpYXRlIGFib3J0LiAqLwordm9pZCAgICAgICAgICAgIHRz
Zl9zZXRfemxpYl9lcnJvcihpbnQgZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JfbXNnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC4uLik7CisKKy8qIHNwZWNpZnkgdGhhdCBhIGxpYmJ6aXAyIGVycm9yIG9j
Y3VycmVkLiAgaWYgZm9ybWF0IGlzIE5VTEwsIHRoZW4gdGhlCisgKiBlcnJvciBtZXNzYWdlIGNv
bnRhaW5zIHRoZSBzdHJpbmcgImxpYmJ6aXAyIGVycm9yIiBhbmQgYW4gZXJyb3IgbWVzc2FnZQor
ICogdGhhdCBpcyBhcHByb3ByaWF0ZSB0byB0aGUgZXJyb3IgY29kZS4gIElmIHRoZSBmb3JtYXQg
aXMgbm90IE5VTEwsIHRoZQorICogdGV4dCBzcGVjaWZpZWQgYnkgdGhlIGZvcm1hdCBpcyBhcHBl
bmRlZCB0byB0aGF0LgorICoKKyAqIE5vdGUgdGhhdCBpZiBsaWJiemlwMiBzdXBwb3J0IGlzIG5v
dCBjb21waWxlZCBpbiwgdGhpcyBmdW5jdGlvbiB3aWxsCisgKiBtZWFuIGFuIGltbWVkaWF0ZSBh
Ym9ydC4gKi8KK3ZvaWQgICAgICAgICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKGludCBlcnJv
cl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsK
KworLyogcmV0dXJucyB0aGUgbGlicmFyeSdzIHZlcnNpb24gc3RyaW5nLiAqLworY29uc3QgY2hh
ciogICAgIHRzZl92ZXJzaW9uKHZvaWQpOworCisvKiByZXR1cm5zIHRoZSBsaWJyYXJ5J3MgbWFq
b3IgdmVyc2lvbiBudW1iZXIuICovCitpbnQgICAgICAgICAgICAgdHNmX3ZlcnNpb25fbWFqb3Io
dm9pZCk7CisKKy8qIHJldHVybnMgdGhlIGxpYnJhcnkncyBtaW5vciB2ZXJzaW9uIG51bWJlci4g
Ki8KK2ludCAgICAgICAgICAgICB0c2ZfdmVyc2lvbl9taW5vcih2b2lkKTsKKworLyogcmV0dXJu
cyB0aGUgbGlicmFyeSdzIHBhdGNoIHZlcnNpb24gbnVtYmVyLiAqLworaW50ICAgICAgICAgICAg
IHRzZl92ZXJzaW9uX3BhdGNoKHZvaWQpOworCisvKiBjcmVhdGVzIGRlZmF1bHQgbGltaXRzICov
Cit0c2ZfbGltaXRzX3QqICAgdHNmX2xpbWl0c19jcmVhdGUodm9pZCk7CisKKy8qIGRlc3Ryb3lz
IGxpbWl0cywgYnV0IG9ubHkgaWYgdGhleSdyZSBub3QgTlVMTCAqLwordm9pZCAgICAgICAgICAg
IHRzZl9saW1pdHNfZGVzdHJveSh0c2ZfbGltaXRzX3QgKmxpbWl0cyk7CisKKy8qIGNsb25lcyBs
aW1pdHMuICByZXR1cm5zIE5VTEwgaWYgdGhlIHR5cGUgaXQncyBnaXZlbiBpcyBOVUxMLiAgdGhp
cworICogY291bnRzIGFzIGVycm9yIHByb3BhZ2F0aW9uLiAqLwordHNmX2xpbWl0c190KiAgIHRz
Zl9saW1pdHNfY2xvbmUodHNmX2xpbWl0c190ICpsaW1pdHMpOworCisvKiBzZXQgdGhlIGFsbG93
IGJpdCBvZiB0aGUgcGFydGljdWxhciBraW5kIHR5cGUgKi8KK3N0YXRpYyBUU0ZfaW5saW5lCit2
b2lkICAgICAgICAgICAgdHNmX2xpbWl0c19zZXRfYWxsb3dfdHlwZV9raW5kKHRzZl9saW1pdHNf
dCAqbGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgbGltaXRzLT5hbGxvd190eXBlX2tp
bmRba2luZF9jb2RlPj4zXXw9KDE8PChraW5kX2NvZGUmNykpOworfQorCisvKiByZXNldCB0aGUg
YWxsb3cgYml0IG9mIHRoZSBwYXJ0aWN1bGFyIGtpbmQgdHlwZSAqLworc3RhdGljIFRTRl9pbmxp
bmUKK3ZvaWQgICAgICAgICAgICB0c2ZfbGltaXRzX3Jlc2V0X2FsbG93X3R5cGVfa2luZCh0c2Zf
bGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgbGltaXRzLT5hbGxv
d190eXBlX2tpbmRba2luZF9jb2RlPj4zXSY9figxPDwoa2luZF9jb2RlJjcpKTsKK30KKworLyog
ZGV0ZXJtaW5lIGlmIHRoZSBhbGxvdyBiaXQgb2YgdGhlIHBhcnRpY3VsYXIga2luZCB0eXBlIGlz
IHNldC4gIGFsd2F5cworICogcmV0dXJucyB0c2ZfdHJ1ZSBpZiBsaW1pdHMgaXMgTlVMTC4gKi8K
K3N0YXRpYyBUU0ZfaW5saW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX2xpbWl0c19pc190eXBlX2tp
bmRfYWxsb3dlZCh0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAg
ICBpZiAobGltaXRzPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIChsaW1pdHMtPmFsbG93X3R5cGVfa2luZFtraW5kX2NvZGU+PjNdJigxPDwoa2lu
ZF9jb2RlJjcpKSkKKyAgICAgICAgICAgP3RzZl90cnVlOnRzZl9mYWxzZTsKK30KKworLyogZ2l2
ZW4gYSBraW5kIGNvZGUsIGdpdmVzIHlvdSB0aGUgdGV4dHVhbCB0c2YgbmFtZSBmb3IgaXQuICov
CitzdGF0aWMgVFNGX2lubGluZQorY29uc3QgY2hhciogICAgIHRzZl90eXBlX2tpbmRfdHNmX25h
bWUodHNmX3R5cGVfa2luZF90IGtpbmRfY29kZSkgeworICAgIHN3aXRjaCAoa2luZF9jb2RlKSB7
CisgICAgY2FzZSBUU0ZfVEtfSU5UODogICAgcmV0dXJuICJUU0ZfVEtfSU5UOCI7CisgICAgY2Fz
ZSBUU0ZfVEtfVUlOVDg6ICAgcmV0dXJuICJUU0ZfVEtfVUlOVDgiOworICAgIGNhc2UgVFNGX1RL
X0lOVDE2OiAgIHJldHVybiAiVFNGX1RLX0lOVDE2IjsKKyAgICBjYXNlIFRTRl9US19VSU5UMTY6
ICByZXR1cm4gIlRTRl9US19VSU5UMTYiOworICAgIGNhc2UgVFNGX1RLX0lOVDMyOiAgIHJldHVy
biAiVFNGX1RLX0lOVDMyIjsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICByZXR1cm4gIlRTRl9U
S19VSU5UMzIiOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OiAgIHJldHVybiAiVFNGX1RLX0lOVDY0
IjsKKyAgICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gIlRTRl9US19VSU5UNjQiOworICAg
IGNhc2UgVFNGX1RLX0lOVEVHRVI6IHJldHVybiAiVFNGX1RLX0lOVEVHRVIiOworICAgIGNhc2Ug
VFNGX1RLX0xPTkc6ICAgIHJldHVybiAiVFNGX1RLX0xPTkciOworICAgIGNhc2UgVFNGX1RLX0ZM
T0FUOiAgIHJldHVybiAiVFNGX1RLX0ZMT0FUIjsKKyAgICBjYXNlIFRTRl9US19ET1VCTEU6ICBy
ZXR1cm4gIlRTRl9US19ET1VCTEUiOworICAgIGNhc2UgVFNGX1RLX0FSUkFZOiAgIHJldHVybiAi
VFNGX1RLX0FSUkFZIjsKKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6ICByZXR1cm4gIlRTRl9US19T
VFJVQ1QiOworICAgIGNhc2UgVFNGX1RLX0JJVDogICAgIHJldHVybiAiVFNGX1RLX0JJVCI7Cisg
ICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOiAgcmV0dXJuICJUU0ZfVEtfQ0hPSUNFIjsKKyAgICBjYXNl
IFRTRl9US19WT0lEOiAgICByZXR1cm4gIlRTRl9US19WT0lEIjsKKyAgICBjYXNlIFRTRl9US19T
VFJJTkc6ICByZXR1cm4gIlRTRl9US19TVFJJTkciOworICAgIGNhc2UgVFNGX1RLX0FOWTogICAg
IHJldHVybiAiVFNGX1RLX0FOWSI7CisgICAgZGVmYXVsdDogICAgICAgICAgICAgcmV0dXJuICJ1
bmtub3duIjsKKyAgICB9Cit9CisKKy8qIHRlbGxzIHlvdSBpZiBhIGtpbmQgY29kZSByZXByZXNl
bnRzIGEgcHJpbWl0aXZlIHR5cGUgKi8KK3N0YXRpYyBUU0ZfaW5saW5lCit0c2ZfYm9vbF90ICAg
ICAgdHNmX3R5cGVfa2luZF9pc19wcmltaXRpdmUodHNmX3R5cGVfa2luZF90IGtpbmRfY29kZSkg
eworICAgIHJldHVybiBraW5kX2NvZGU+PVRTRl9US19JTlQ4ICYmIGtpbmRfY29kZTw9VFNGX1RL
X0RPVUJMRTsKK30KKworLyogZ2l2ZW4gYSBwcmltaXRpdmUga2luZCBjb2RlLCBpdCByZXR1cm5z
IHRvIHlvdSB0aGUgc2l6ZSBpbiBieXRlcy4gIHRoaXMKKyAqIGlzIHRoZSBuYXRpdmUgc2l6ZSBv
ZiB0aGUgdHlwZSwgYW5kIGZvciBldmVyeXRoaW5nIGJ1dCBUU0ZfVEtfSU5URUdFUgorICogYW5k
IFRTRl9US19MT05HLCBpdCdzIGFsc28gdGhlIGVuY29kZWQgc2l6ZS4gKi8KK3N0YXRpYyBUU0Zf
aW5saW5lCit1aW50MzJfdCAgICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfc2l6ZV9vZih0
c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAg
ICBjYXNlIFRTRl9US19JTlQ4OiAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRTRl9US19VSU5UODog
ICByZXR1cm4gMTsKKyAgICBjYXNlIFRTRl9US19JTlQxNjogICByZXR1cm4gMjsKKyAgICBjYXNl
IFRTRl9US19VSU5UMTY6ICByZXR1cm4gMjsKKyAgICBjYXNlIFRTRl9US19JTlQzMjogICByZXR1
cm4gNDsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICByZXR1cm4gNDsKKyAgICBjYXNlIFRTRl9U
S19JTlRFR0VSOiByZXR1cm4gNDsKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICByZXR1cm4gODsK
KyAgICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gODsKKyAgICBjYXNlIFRTRl9US19MT05H
OiAgICByZXR1cm4gODsKKyAgICBjYXNlIFRTRl9US19GTE9BVDogICByZXR1cm4gNDsKKyAgICBj
YXNlIFRTRl9US19ET1VCTEU6ICByZXR1cm4gODsKKyAgICBkZWZhdWx0OiAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIHJldHVybnMgYSByYW5nZSBsb3dlciBib3VuZCBJRCAq
Lworc3RhdGljIFRTRl9pbmxpbmUKK2ludDMyX3QgICAgICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVf
a2luZF9sb3dlcl9ib3VuZCh0c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgc3dpdGNo
IChraW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19JTlQ4OiAgICByZXR1cm4gLTE7CisgICAg
Y2FzZSBUU0ZfVEtfVUlOVDg6ICAgcmV0dXJuIDA7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAg
cmV0dXJuIC0zOworICAgIGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAwOworICAgIGNhc2Ug
VFNGX1RLX0lOVDMyOiAgIHJldHVybiAtNTsKKyAgICBjYXNlIFRTRl9US19JTlRFR0VSOiByZXR1
cm4gLTU7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOiAgcmV0dXJuIDA7CisgICAgY2FzZSBUU0Zf
VEtfSU5UNjQ6ICAgcmV0dXJuIC03OworICAgIGNhc2UgVFNGX1RLX1VJTlQ2NDogIHJldHVybiAw
OworICAgIGNhc2UgVFNGX1RLX0xPTkc6ICAgIHJldHVybiAtNzsKKyAgICBjYXNlIFRTRl9US19G
TE9BVDogICByZXR1cm4gLTk7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOiAgcmV0dXJuIC0xMDsK
KyAgICBkZWZhdWx0OiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIHJldHVy
bnMgYSByYW5nZSB1cHBlciBib3VuZCBJRCAqLworc3RhdGljIFRTRl9pbmxpbmUKK2ludDMyX3Qg
ICAgICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF91cHBlcl9ib3VuZCh0c2ZfdHlwZV9raW5k
X3Qga2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9U
S19JTlQ4OiAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRTRl9US19VSU5UODogICByZXR1cm4gMjsK
KyAgICBjYXNlIFRTRl9US19JTlQxNjogICByZXR1cm4gMzsKKyAgICBjYXNlIFRTRl9US19VSU5U
MTY6ICByZXR1cm4gNDsKKyAgICBjYXNlIFRTRl9US19JTlQzMjogICByZXR1cm4gNTsKKyAgICBj
YXNlIFRTRl9US19JTlRFR0VSOiByZXR1cm4gNTsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICBy
ZXR1cm4gNjsKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICByZXR1cm4gNzsKKyAgICBjYXNlIFRT
Rl9US19VSU5UNjQ6ICByZXR1cm4gODsKKyAgICBjYXNlIFRTRl9US19MT05HOiAgICByZXR1cm4g
ODsKKyAgICBjYXNlIFRTRl9US19GTE9BVDogICByZXR1cm4gOTsKKyAgICBjYXNlIFRTRl9US19E
T1VCTEU6ICByZXR1cm4gMTA7CisgICAgZGVmYXVsdDogICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCisvKiByZXR1cm5zIHRoZSBwcmVjaXNpb24gb2YgYSBwcmltaXRpdmUgdHlwZSAq
Lworc3RhdGljIFRTRl9pbmxpbmUKK2ludDMyX3QgICAgICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVf
a2luZF9wcmVjaXNpb24odHNmX3R5cGVfa2luZF90IGtpbmRfY29kZSkgeworICAgIHN3aXRjaCAo
a2luZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfSU5UODogICAgcmV0dXJuIDg7CisgICAgY2Fz
ZSBUU0ZfVEtfVUlOVDg6ICAgcmV0dXJuIDg7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAgcmV0
dXJuIDE2OworICAgIGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAxNjsKKyAgICBjYXNlIFRT
Rl9US19JTlQzMjogICByZXR1cm4gMzI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOiAgcmV0dXJu
IDMyOworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6IHJldHVybiAzMjsKKyAgICBjYXNlIFRTRl9U
S19JTlQ2NDogICByZXR1cm4gNjQ7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OiAgcmV0dXJuIDY0
OworICAgIGNhc2UgVFNGX1RLX0xPTkc6ICAgIHJldHVybiA2NDsKKyAgICBjYXNlIFRTRl9US19G
TE9BVDogICByZXR1cm4gMjM7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOiAgcmV0dXJuIDUyOwor
ICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworLyogZ2l2ZW4g
YSBwcmltaXRpdmUga2luZCBjb2RlLCB0ZWxscyB5b3UgaWYgaXQgaXMgZmxvYXRpbmcgcG9pbnQu
ICovCitzdGF0aWMgVFNGX2lubGluZQordHNmX2Jvb2xfdCAgICAgIHRzZl9wcmltaXRpdmVfdHlw
ZV9raW5kX2lzX2Zsb2F0KHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICByZXR1cm4g
a2luZF9jb2RlPT1UU0ZfVEtfRkxPQVQgfHwga2luZF9jb2RlPT1UU0ZfVEtfRE9VQkxFOworfQor
CisvKiBzYW1lIGFzIGFib3ZlLiAqLworI2RlZmluZSAgICAgICAgIHRzZl90eXBlX2tpbmRfaXNf
ZmxvYXQoa2luZF9jb2RlKSBcCisgICAgICAgICAgICAgICAgICAgICh0c2ZfcHJpbWl0aXZlX3R5
cGVfa2luZF9pc19mbG9hdChraW5kX2NvZGUpKQorCisvKiBnaXZlbiBhIHByaW1pdGl2ZSBraW5k
IGNvZGUsIHRlbGxzIHlvdSBpZiBpdCBpcyBmbG9hdGluZyBwb2ludC4gKi8KK3N0YXRpYyBUU0Zf
aW5saW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNfaW50KHRz
Zl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfa2luZF9pc19w
cmltaXRpdmUoa2luZF9jb2RlKSAmJgorICAgICAgICAgICAhdHNmX3R5cGVfa2luZF9pc19mbG9h
dChraW5kX2NvZGUpOworfQorCisvKiBzYW1lIGFzIGFib3ZlLiAqLworI2RlZmluZSAgICAgICAg
IHRzZl90eXBlX2tpbmRfaXNfaW50KGtpbmRfY29kZSkgXAorICAgICAgICAgICAgICAgICAgICAo
dHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNfaW50KGtpbmRfY29kZSkpCisKKy8qIGdpdmVuIGEg
cHJpbWl0aXZlIGtpbmQgY29kZSwgdGVsbHMgeW91IGlmIGl0IGlzIHNpZ25lZC4gKi8KK3N0YXRp
YyBUU0ZfaW5saW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNf
c2lnbmVkKHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29k
ZSkgeworICAgIGNhc2UgVFNGX1RLX0lOVDg6CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6CisgICAg
Y2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAgY2FzZSBUU0Zf
VEtfSU5URUdFUjoKKyAgICBjYXNlIFRTRl9US19MT05HOiAgICByZXR1cm4gdHNmX3RydWU7Cisg
ICAgZGVmYXVsdDogICAgICAgICAgICAgcmV0dXJuIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX2lz
X2Zsb2F0KGtpbmRfY29kZSk7CisgICAgfQorfQorCisvKiBzYW1lIGFzIGFib3ZlLiAqLworI2Rl
ZmluZSAgICAgICAgIHRzZl90eXBlX2tpbmRfaXNfc2lnbmVkKGtpbmRfY29kZSkgXAorICAgICAg
ICAgICAgICAgICAgICAodHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaXNfc2lnbmVkKGtpbmRfY29k
ZSkpCisKKy8qIGdpdmVuIGEgcHJpbWl0aXZlIGtpbmQgY29kZSwgZ2l2ZXMgeW91IHRoZSB0ZXh0
dWFsIG5hbWUgb2YgdGhlCisgKiBDIHR5cGUuICovCitzdGF0aWMgVFNGX2lubGluZQorY29uc3Qg
Y2hhciogICAgIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX2NfbmFtZSh0c2ZfdHlwZV9raW5kX3Qg
a2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19J
TlQ4OiAgICByZXR1cm4gImludDhfdCI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDg6ICAgcmV0dXJu
ICJ1aW50OF90IjsKKyAgICBjYXNlIFRTRl9US19JTlQxNjogICByZXR1cm4gImludDE2X3QiOwor
ICAgIGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAidWludDE2X3QiOworICAgIGNhc2UgVFNG
X1RLX0lOVDMyOiAgIHJldHVybiAiaW50MzJfdCI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOiAg
cmV0dXJuICJ1aW50MzJfdCI7CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6ICAgcmV0dXJuICJpbnQ2
NF90IjsKKyAgICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gInVpbnQ2NF90IjsKKyAgICBj
YXNlIFRTRl9US19JTlRFR0VSOiByZXR1cm4gInRzZl9pbnRlZ2VyX3QiOworICAgIGNhc2UgVFNG
X1RLX0xPTkc6ICAgIHJldHVybiAidHNmX2xvbmdfdCI7CisgICAgY2FzZSBUU0ZfVEtfRkxPQVQ6
ICAgcmV0dXJuICJmbG9hdCI7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOiAgcmV0dXJuICJkb3Vi
bGUiOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIHJldHVybiAidW5rbm93biI7CisgICAgfQor
fQorCisvKiBnaXZlbiBhIHByaW1pdGl2ZSBraW5kIGNvZGUsIGdpdmVzIHlvdSB0aGUgdGV4dHVh
bCBuYW1lIG9mIHRoZSB0eXBlCisgKiB1c2luZyBsb3dlciBjYXNlLiAqLworc3RhdGljIFRTRl9p
bmxpbmUKK2NvbnN0IGNoYXIqICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9sY19uYW1lKHRz
Zl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29kZSkgeworICAg
IGNhc2UgVFNGX1RLX0lOVDg6ICAgIHJldHVybiAiaW50OCI7CisgICAgY2FzZSBUU0ZfVEtfVUlO
VDg6ICAgcmV0dXJuICJ1aW50OCI7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAgcmV0dXJuICJp
bnQxNiI7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDE2OiAgcmV0dXJuICJ1aW50MTYiOworICAgIGNh
c2UgVFNGX1RLX0lOVDMyOiAgIHJldHVybiAiaW50MzIiOworICAgIGNhc2UgVFNGX1RLX1VJTlQz
MjogIHJldHVybiAidWludDMyIjsKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICByZXR1cm4gImlu
dDY0IjsKKyAgICBjYXNlIFRTRl9US19VSU5UNjQ6ICByZXR1cm4gInVpbnQ2NCI7CisgICAgY2Fz
ZSBUU0ZfVEtfSU5URUdFUjogcmV0dXJuICJpbnRlZ2VyIjsKKyAgICBjYXNlIFRTRl9US19MT05H
OiAgICByZXR1cm4gImxvbmciOworICAgIGNhc2UgVFNGX1RLX0ZMT0FUOiAgIHJldHVybiAiZmxv
YXQiOworICAgIGNhc2UgVFNGX1RLX0RPVUJMRTogIHJldHVybiAiZG91YmxlIjsKKyAgICBkZWZh
dWx0OiAgICAgICAgICAgICByZXR1cm4gInVua25vd24iOworICAgIH0KK30KKworLyogZ2l2ZW4g
YSBraW5kIGNvZGUsIGdpdmVzIHlvdSB0aGUgdGV4dHVhbCBsb3dlci1jYXNlIG5hbWUgKi8KK3N0
YXRpYyBUU0ZfaW5saW5lCitjb25zdCBjaGFyKiAgICAgdHNmX3R5cGVfa2luZF9sY19uYW1lKHRz
Zl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29kZSkgeworICAg
IGNhc2UgVFNGX1RLX0FSUkFZOiAgcmV0dXJuICJhcnJheSI7CisgICAgY2FzZSBUU0ZfVEtfU1RS
VUNUOiByZXR1cm4gInN0cnVjdCI7CisgICAgY2FzZSBUU0ZfVEtfQklUOiAgICByZXR1cm4gImJp
dCI7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOiByZXR1cm4gImNob2ljZSI7CisgICAgY2FzZSBU
U0ZfVEtfVk9JRDogICByZXR1cm4gInZvaWQiOworICAgIGNhc2UgVFNGX1RLX1NUUklORzogcmV0
dXJuICJzdHJpbmciOworICAgIGNhc2UgVFNGX1RLX0FOWTogICAgcmV0dXJuICJhbnkiOworICAg
IGRlZmF1bHQ6ICAgICAgICAgICAgcmV0dXJuIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX2xjX25h
bWUoa2luZF9jb2RlKTsKKyAgICB9Cit9CisKKy8qIGdpdmVuIGEgcHJpbWl0aXZlIGtpbmQgY29k
ZSwgZ2l2ZXMgeW91IHRoZSBudG9oL2h0b24gbmFtZSB0aGF0CisgKiB3ZSB1c2UgZm9yIGl0LiAq
Lworc3RhdGljIFRTRl9pbmxpbmUKK2NvbnN0IGNoYXIqICAgICB0c2ZfcHJpbWl0aXZlX3R5cGVf
a2luZF9uaF9uYW1lKHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtp
bmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RLX0lOVDg6ICAgIHJldHVybiAiYyI7CisgICAgY2Fz
ZSBUU0ZfVEtfVUlOVDg6ICAgcmV0dXJuICJjIjsKKyAgICBjYXNlIFRTRl9US19JTlQxNjogICBy
ZXR1cm4gInMiOworICAgIGNhc2UgVFNGX1RLX1VJTlQxNjogIHJldHVybiAicyI7CisgICAgY2Fz
ZSBUU0ZfVEtfSU5UMzI6ICAgcmV0dXJuICJsIjsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6ICBy
ZXR1cm4gImwiOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OiAgIHJldHVybiAibGwiOworICAgIGNh
c2UgVFNGX1RLX1VJTlQ2NDogIHJldHVybiAibGwiOworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6
IHJldHVybiAibCI7CisgICAgY2FzZSBUU0ZfVEtfTE9ORzogICAgcmV0dXJuICJsbCI7CisgICAg
Y2FzZSBUU0ZfVEtfRkxPQVQ6ICAgcmV0dXJuICJmIjsKKyAgICBjYXNlIFRTRl9US19ET1VCTEU6
ICByZXR1cm4gImQiOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIHJldHVybiAidW5rbm93biI7
CisgICAgfQorfQorCisvKiBkb2VzIGEgcHJpbWl0aXZlIGluc3RhbmNlIG9mLiAgb25lIHByaW1p
dGl2ZSBpcyBpbnN0YW5jZSBvZiBhbm90aGVyCisgKiBpZiB0aGUgZG9tYWluIG9mIHRoZSBmaXJz
dCBpcyBjb250YWluZWQgaW4gdGhlIGRvbWFpbiBvZiB0aGUgc2Vjb25kLgorICogaWYgeW91IHdp
c2ggdG8gYXNzaWduIG9uZSBwcmltaXRpdmUgdG8gYW5vdGhlciwgdGhlbiB0byBhdm9pZAorICog
YSBsb3NzIG9mIHNpZ25pZmljYW50IG9yIGFuIG92ZXJmbG93LCB5b3UgbXVzdCBlbnN1cmUgdGhh
dCB0aGUKKyAqIHNvdXJjZSBpcyBpbnN0YW5jZSBvZiB0aGUgZGVzdGluYXRpb24uICovCit0c2Zf
Ym9vbF90ICAgICAgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfaW5zdGFuY2VvZih0c2ZfdHlwZV9r
aW5kX3Qgb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX3R5cGVfa2luZF90IHR3byk7CisKKy8qIHJldHVybnMgYSBwcmltaXRpdmUgdHlw
ZSBraW5kIHRoYXQgbWF0Y2hlcyB0aGUgcmVxdWlyZXMgc3BlY2lmaWNhdGlvbi4gKi8KK3RzZl90
eXBlX2tpbmRfdCB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9mb3Jfc3BlYyhpbnQzMl90IGxvd2Vy
X2JvdW5kLAorCQkJCQkJIGludDMyX3QgdXBwZXJfYm91bmQsCisJCQkJCQkgaW50MzJfdCBwcmVj
aXNpb24pOworCisvKiByZXR1cm5zIHRoZSBzbWFsbGVzdCBjb21tb24gc3VidHlwZSBvZiB0aGUg
dHdvIHR5cGVzLCBvciB2b2lkIGlmCisgKiBhIGNvbW1vbiBzdWJ0eXBlIGRvZXMgbm90IGV4aXN0
LiAqLwordHNmX3R5cGVfa2luZF90IHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX21peCh0c2ZfdHlw
ZV9raW5kX3Qgb25lLAorCQkJCQkgICAgdHNmX3R5cGVfa2luZF90IHR3byk7CisKKy8qIHRlbGxz
IHlvdSBpZiB0eXBlcyB3aXRoIHRoZSBnaXZlbiBraW5kIHR5cGUgYXJlIGNvbnRhaW5lcnMuICov
CitzdGF0aWMgVFNGX2lubGluZQordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX2tpbmRfaXNfY29u
dGFpbmVyKHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGUpIHsKKyAgICBzd2l0Y2ggKGtpbmRfY29k
ZSkgeworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAg
ICBjYXNlIFRTRl9US19DSE9JQ0U6IHJldHVybiB0c2ZfdHJ1ZTsKKyAgICBkZWZhdWx0OiAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorfQorCisvKiB0ZWxscyB5b3UgaWYgdHlw
ZXMgd2l0aCB0aGUgZ2l2ZW4ga2luZCB0eXBlIGNhbiBzdG9yZSBjb21tZW50cy4gKi8KK3N0YXRp
YyBUU0ZfaW5saW5lCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfa2luZF9pc19jb21tZW50YWJs
ZSh0c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgcmV0dXJuIHRzZl90eXBlX2tpbmRf
aXNfY29udGFpbmVyKGtpbmRfY29kZSk7Cit9CisKKy8qIGNyZWF0ZSBhIHR5cGUgdGFibGUgKHlv
dSBzaG91bGQgYWxtb3N0IG5ldmVyIGhhdmUgdG8gZG8gdGhpcworICogZGlyZWN0bHkuKSAqLwor
dHNmX3R5cGVfdGFibGVfdCogdHNmX3R5cGVfdGFibGVfY3JlYXRlKHZvaWQpOworCisvKiBjb3B5
IHRoZSBjb250ZW50cyBvZiBvbmUgdHlwZSB0YWJsZSBpbnRvIGFub3RoZXIgKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfdHlwZV90YWJsZV9jb3B5KHRzZl90eXBlX3RhYmxlX3QgKmRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV90ICpzcmMpOwor
CisvKiBkZXN0cm95IGEgdHlwZSB0YWJsZSAqLwordm9pZCAgICAgICAgICAgIHRzZl90eXBlX3Rh
YmxlX2Rlc3Ryb3kodHNmX3R5cGVfdGFibGVfdCAqdHQpOworCisvKiB3cml0ZSB0aGUgdHlwZSB0
YWJsZSAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX3RhYmxlX3dyaXRlKHRzZl90eXBlX3Rh
YmxlX3QgKnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl93cml0
ZXJfdCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
YXJnKTsKKworLyogYXBwZW5kIGEgdHlwZSB0byB0aGUgdHlwZSB0YWJsZSAqLwordHNmX2Jvb2xf
dCAgICAgIHRzZl90eXBlX3RhYmxlX2FwcGVuZCh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSk7CisKKy8q
IHJlbW92ZSBhIHR5cGUgZnJvbSB0aGUgdHlwZSB0YWJsZS4gbm90ZSB0aGF0IHRoaXMgY2hhbmdl
cyB0aGUKKyAqIGluZGV4aW5nIG9mIHRoZSB0eXBlIHRhYmxlIGlmIHRoaXMgaXNuJ3QgdGhlIGxh
c3QgZWxlbWVudC4KKyAqIHRoZSBvbmx5IGVycm9yIHRoYXQgdGhpcyBjb3VsZCByZXBvcnQgaXMg
VFNGX0VfRUxFX05PVF9GT1VORAorICogaWYgdGhlIGVsZW1lbnQgd2Fzbid0IGluIHRoZSB0YWJs
ZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfdHlwZV90YWJsZV9yZW1vdmUodHNmX3R5cGVfdGFi
bGVfdCAqdHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKm5hbWUpOworCisvKiBmaW5kIGEgbmFtZWQgdHlwZSBub2RlIGluIHRoZSB0YWJsZSB1c2lu
ZyB0aGUgbmFtZS4gKi8KK3RzZl9uYW1lZF90eXBlX3QqIHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlf
bmFtZSh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKKworLyogZmluZCBhIG5hbWVkIHR5
cGUgbm9kZSBpbiB0aGUgdGFibGUgdXNpbmcgdGhlIGluZGV4LiAqLwordHNmX25hbWVkX3R5cGVf
dCogdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRleCh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5k
ZXgpOworCisvKiBnZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHlwZSB0YWJsZS4g
Ki8KK3VpbnQzMl90ICAgICAgICB0c2ZfdHlwZV90YWJsZV9nZXRfbnVtX2VsZW1lbnRzKHRzZl90
eXBlX3RhYmxlX3QgKnR0KTsKKworLyogZ2V0IHRoZSBoYXNoIGZvciBhIHR5cGUgdGFibGUuICB5
b3UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGlzIGlzIGp1c3QKKyAqIHRoZSBzdW0gb2YgdGhlIGhh
c2ggY29kZXMgb2YgdGhlIGNvbnN0aXR1ZW50IHRzZl9uYW1lZF90eXBlX3Qgb2JqZWN0cy4KKyAq
IGhlbmNlLCB5b3UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgd2hhdCB0aGUgaGFzaCBjb2RlIGlzIGFm
dGVyIGFuCisgKiBhcHBwZW5kIG9wZXJhdGlvbi4gKi8KK2ludCAgICAgICAgICAgICB0c2ZfdHlw
ZV90YWJsZV9nZXRfaGFzaCh0c2ZfdHlwZV90YWJsZV90ICp0dCk7CisKKy8qIGRldGVybWluZSBp
cyB0aGUgdHlwZSB0YWJsZSBjb250YWlucyBhbnkgZHluYW1pYyB0eXBlcy4gKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfdHlwZV90YWJsZV9jb250YWluc19keW5hbWljKHRzZl90eXBlX3RhYmxlX3Qg
KnR0KTsKKworLyogY29tcGFyZSB0d28gdHlwZSB0YWJsZXMuICovCit0c2ZfYm9vbF90ICAgICAg
dHNmX3R5cGVfdGFibGVfY29tcGFyZSh0c2ZfdHlwZV90YWJsZV90ICphLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfdCAqYik7CisKKy8qIGNy
ZWF0ZSBhIHRhYmxlIG9mIHR5cGVzLiAqLwordHNmX3R5cGVfaW5fbWFwX3QqIHRzZl90eXBlX2lu
X21hcF9jcmVhdGUodm9pZCk7CisKKy8qIGNyZWF0ZSBhIHRhYmxlIG9mIHR5cGVzIGluc2lkZSBv
ZiB0aGUgcHJvdmlkZWQgcmVnaW9uLiAqLwordHNmX3R5cGVfaW5fbWFwX3QqIHRzZl90eXBlX2lu
X21hcF9jcmVhdGVfaW4odm9pZCAqcmVnaW9uKTsKKworLyogcmV0dXJuIHRoZSBnbG9iYWwgZW1w
dHkgdGFibGUgb2YgdHlwZXMuICB0aGlzIG9uZSBzaG91bGQgbmV2ZXIKKyAqIGJlIG1vZGlmaWVk
LiAqLwordHNmX3R5cGVfaW5fbWFwX3QqIHRzZl90eXBlX2luX21hcF9nZXRfZW1wdHlfc2luZ2xl
dG9uKHZvaWQpOworCisvKiBjbG9uZSBhIHRhYmxlIG9mIHR5cGVzLiAqLwordHNmX3R5cGVfaW5f
bWFwX3QqIHRzZl90eXBlX2luX21hcF9jbG9uZSh0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMpOwor
CisvKiBjbG9uZSBhIHRhYmxlIG9mIHR5cGVzLCBjcmVhdGluZyB0aGUgbmV3IG9uZSBpbiBhIHJl
Z2lvbi4gKi8KK3RzZl90eXBlX2luX21hcF90KiB0c2ZfdHlwZV9pbl9tYXBfY2xvbmVfaW4odHNm
X3R5cGVfaW5fbWFwX3QgKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpyZWdpb24pOworCisvKiBkZXN0cm95IGEgdGFibGUgb2YgdHlwZXMu
ICBoYXMgbm8gZWZmZWN0IGlmIHBhc3NlZCB0aGUKKyAqIGVtcHR5IHNpbmdsZXRvbi4gIGNhbm5v
dCBiZSB1c2VkIG9uIHJlZ2lvbi1hbGxvY2F0ZWQgdGFibGVzLiAqLwordm9pZCAgICAgICAgICAg
IHRzZl90eXBlX2luX21hcF9kZXN0cm95KHRzZl90eXBlX2luX21hcF90ICp0eXBlcyk7CisKKy8q
IHByZXBhcmUgc29tZSBudW1iZXIgb2Ygc2xvdHMgZm9yIHR5cGVzIGluIHRoZSB0YWJsZS4gIGEg
Y2FsbCB0byB0aGlzCisgKiBmdW5jdGlvbiBzZXJ2ZXMgYXMgYSBoaW50IGFuZCBzbyBkb2VzIG5v
dCBoYXZlIGFueSBndWFyYW50ZWVkIGVmZmVjdC4KKyAqIGFzIHN1Y2gsIHN1Y2Nlc3MgaW4gdGhp
cyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHRha2VuIHRvIG1lYW4gdGhhdAorICogdGhlIHN1YnNl
cXVlbnQgYXBwZW5kIG9wZXJhdGlvbnMgYXJlIGd1YXJhbnRlZWQgdG8gc3VjY2VlZCBhbmQKKyAq
IGZhaWx1cmUgaW4gdGhpcyBvcGVyYXRpb24gc2hvdWxkIG5vdCBiZSB0YWtlbiB0byBtZWFuIHRo
YXQgYW55CisgKiBudW1iZXIgb2Ygc3Vic2VxdWVudCBhcHBlbmRzIHNob3VsZCBmYWlsLgorICoK
KyAqIChJbiBvdGhlciB3b3JkcywgdGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgc2FmZWx5IGlnbm9y
ZWQuICBJdCBpcyB0aGVyZQorICogdG8gYWlkIGluIGRlYnVnZ2luZyBvbmx5LikgKi8KK3RzZl9i
b29sX3QgICAgICB0c2ZfdHlwZV9pbl9tYXBfcHJlcGFyZSh0c2ZfdHlwZV9pbl9tYXBfdCAqdHlw
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnVt
KTsKKworLyogYXBwZW5kIGEgdHlwZSB0byB0aGUgdGFibGUuICB0aGUgaW5kZXggd2lsbCBiZSB0
aGUgbnVtYmVyIG9mCisgKiB0eXBlcyBwcmlvciB0byB0aGUgYXBwZW5kLiAqLwordHNmX2Jvb2xf
dCAgICAgIHRzZl90eXBlX2luX21hcF9hcHBlbmQodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSk7
CisKKy8qIHJldHVybnMgdGhlIG51bWJlciBvZiB0eXBlcyBpbiB0aGUgdGFibGUuICovCit1aW50
MzJfdCAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2dldF9udW1fdHlwZXModHNmX3R5cGVfaW5fbWFw
X3QgKnR5cGVzKTsKKworLyogcmV0dXJucyB0aGUgdHlwZSBhdCB0aGUgZ2l2ZW4gaW5kZXggaW4g
dGhlIHRhYmxlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl90eXBlX2luX21hcF9nZXRfdHlwZSh0
c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4KTsKKworLyogcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUg
dHlwZSB0YWJsZSB0byB0aGUgc3BlY2lmaWVkIG5ldyBzaXplLgorICogdW5wcmVkaWN0YWJseSBo
b3JyaWJsZSB0aGluZ3Mgd2lsbCBoYXBwZW4gaWYgdGhlIG5ldyBzaXplIGlzCisgKiBncmVhdGVy
IHRoYW4gdGhlIGN1cnJlbnQgc2l6ZS4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfdHlwZV9pbl9t
YXBfdHJ1bmNhdGUodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdfc2l6ZSk7CisKKy8qIGNvbXBhcmUg
dHdvIHR5cGUgdGFibGVzLiAgdHdvIHR5cGUgdGFibGVzIGFyZSBlcXVhbCBpZiB0aGV5CisgKiBo
YXZlIHRoZSBzYW1lIG51bWJlciBvZiB0eXBlcywgYW5kIGZvciBlYWNoIGluZGV4LCBvZiB0aGUg
dHlwZXMKKyAqIGF0IHRoYXQgaW5kZXggYXJlIHRoZSBzYW1lIGFjY29yZGluZyB0byB0c2ZfdHlw
ZV9jb21wYXJlKCkuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfaW5fbWFwX2NvbXBhcmUo
dHNmX3R5cGVfaW5fbWFwX3QgKmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX3R5cGVfaW5fbWFwX3QgKmIpOworCisvKiBjcmVhdGVzIGEgbmV3IGVtcHR5IHR5
cGUgbWFwLiAqLwordHNmX3R5cGVfb3V0X21hcF90KiB0c2ZfdHlwZV9vdXRfbWFwX2NyZWF0ZSh2
b2lkKTsKKworLyogZGVzdHJveSBhIHR5cGUgbWFwLiAqLwordm9pZCAgICAgICAgICAgIHRzZl90
eXBlX291dF9tYXBfZGVzdHJveSh0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwKTsKKworLyog
bG9vayB1cCBhIHR5cGUgY29kZSBhc3NlcnRpbmcgdGhhdCBpdCBtdXN0IGJlIGZvdW5kLiAgYW4g
ZXJyb3IgaXMKKyAqIHJldHVybmVkIGlmIGl0IGlzIG5vdCBmb3VuZC4gKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2ZfdHlwZV9vdXRfbWFwX2ZpbmRfdHlwZV9jb2RlKHRzZl90eXBlX291dF9tYXBfdCAq
dHlwZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgKnR5cGVfY29kZSk7CisKKy8qIGxvb2sgdXAgYSB0eXBlIGNv
ZGUsIHBvdGVudGlhbGx5IGNyZWF0aW5nIGEgbmV3IG9uZS4gIGZhaWxzIG9ubHkgaWYKKyAqIGEg
dHlwZSBjb2RlIGhhZCB0byBiZSBjcmVhdGVkIEFORCB0aGF0IGNyZWF0aW9uIGZhaWxlZC4gKi8K
K3RzZl9ib29sX3QgICAgICB0c2ZfdHlwZV9vdXRfbWFwX2dldF90eXBlX2NvZGUodHNmX3R5cGVf
b3V0X21hcF90ICp0eXBlX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnR5cGVfY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCAqY3JlYXRlZCk7CisK
Ky8qIGRlc3Ryb3kgYSB0eXBlIG91dCBtYXAgYW5kIHByb2R1Y2UgYSB0eXBlIGluIG1hcCB0aGlu
Z3kgZnJvbSBpdC4gKi8KK3RzZl90eXBlX2luX21hcF90KiB0c2ZfdHlwZV9pbl9tYXBfZnJvbV90
eXBlX291dF9tYXAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwKTsKKworLyogZGVzdHJveSBhIHR5cGUg
b3V0IG1hcCBhbmQgcHJvZHVjZSBhIHR5cGUgaW4gbWFwIHRoaW5neSBmcm9tIGl0LgorICogY3Jl
YXRlcyB0aGUgdHlwZSBpbiB0aGluZ3kgaW4gdGhlIHByb3ZpZGVkIHJlZ2lvbi4gKi8KK3RzZl90
eXBlX2luX21hcF90KiB0c2ZfdHlwZV9pbl9tYXBfZnJvbV90eXBlX291dF9tYXBfaW4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRf
bWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqcmVnaW9uKTsKKworLyogY3JlYXRlIGFuIGVtcHR5IHJhbmRvbS1hY2Nl
c3MgdHlwZSBtYW5hZ2VyLiAqLwordHNmX3JhX3R5cGVfbWFuX3QqIHRzZl9yYV90eXBlX21hbl9j
cmVhdGUodm9pZCk7CisKKy8qIHBhcnNlIGEgcmFuZG9tLWFjY2VzcyB0eXBlIG1hbmFnZXIuICov
Cit0c2ZfcmFfdHlwZV9tYW5fdCogdHNmX3JhX3R5cGVfbWFuX3JlYWQodHNmX3JlYWRlcl90IHJl
YWRlciwKKwkJCQkJdm9pZCAqYXJnKTsKKworLyogZGVzdHJveSBhIHJhbmRvbS1hY2Nlc3MgdHlw
ZSBtYW5hZ2VyLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9yYV90eXBlX21hbl9kZXN0cm95KHRz
Zl9yYV90eXBlX21hbl90ICptYW4pOworCisvKiB3cml0ZSB0aGUgc3R1ZmYgaW4gdGhlIHR5cGUg
bWFuYWdlciBvdXQgdG8gc29tZXdoZXJlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9yYV90eXBl
X21hbl93cml0ZSh0c2ZfcmFfdHlwZV9tYW5fdCAqbWFuLAorCQkJCSAgICAgIHRzZl93cml0ZXJf
dCB3cml0ZXIsCisJCQkJICAgICAgdm9pZCAqYXJnKTsKKworLyogaW5zZXQgYSB0eXBlIGludG8g
dGhlIHR5cGUgbWFuYWdlci4gIGRvIHRoaXMgb25seSBpZiB5b3Uga25vdworICAgdGhhdCB0aGUg
dHlwZSBpcyBub3QgYWxyZWFkeSBpbiB0aGUgdHlwZSBtYW5hZ2VyLiAqLwordHNmX2Jvb2xfdCAg
ICAgIHRzZl9yYV90eXBlX21hbl9pbnNlcnQodHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkg
ICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKwkJCQkgICAgICAgdWludDMyX3QgdHlwZV9jb2RlLAor
CQkJCSAgICAgICB1aW50NjRfdCByZWZfY291bnQpOworCisvKiByZW1vdmUgYSB0eXBlIGZyb20g
dGhlIHR5cGUgbWFuYWdlci4gIGRvIHRoaXMgb25seSBpZiB5b3Uga25vdworICAgdGhhdCB0aGUg
dHlwZSBpcyBpbiB0aGUgdHlwZSBtYW5hZ2VyLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9yYV90
eXBlX21hbl9yZW1vdmUodHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkgICAgICAgdHNmX3R5
cGVfdCAqdHlwZSk7CisKKy8qIGZpbmQgYSB0eXBlIGluIHRoZSB0eXBlIG1hbmFnZXIgdXNpbmcg
dGhlIHR5cGUgY29kZS4gIGlmIGl0J3MKKyAgIG5vdCBmb3VuZCwgTlVMTCB3aWxsIGJlIHJldG9y
bmVkIGFuZCBhbiBlcnJvciBjb2RlIHdpbGwgYmUgc2V0LiAqLwordHNmX3R5cGVfdCogICAgIHRz
Zl9yYV90eXBlX21hbl9maW5kKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJICAgICB1aW50
MzJfdCB0eXBlX2NvZGUpOworCisvKiBkZXRlcm1pbmUgaWYgdGhlIHR5cGUgbWFuYWdlciBoYXMg
dGhlIGdpdmVuIHR5cGUuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3JhX3R5cGVfbWFuX2hhc190
eXBlKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSB0c2ZfdHlwZV90ICp0eXBlKTsKKwor
LyogZ2V0IHRoZSB0eXBlIGNvZGUgZm9yIGEgdHlwZS4gIG9ubHkgY2FsbCB0aGlzIGlmIHlvdSBr
bm93IHRoYXQKKyAgIHRoZSB0eXBlIG1hbmFnZXIgaGFzIHRoZSB0eXBlLiAqLwordWludDMyX3Qg
ICAgICAgIHRzZl9yYV90eXBlX21hbl9nZXRfdHlwZV9jb2RlKHRzZl9yYV90eXBlX21hbl90ICpt
YW4sCisJCQkJCSAgICAgIHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBpbmNyZWFzZSB0aGUgcmVm
ZXJlbmNlIGNvdW50IGZvciB0aGUgZ2l2ZW4gdHlwZS4gIGlmIHRoZSB0eXBlCisgICBpcyBub3Qg
aW4gdGhlIHR5cGUgbWFuYWdlciwgaXQgaXMgYWRkZWQgdG8gdGhlIHR5cGUgbWFuYWdlciwKKyAg
IGFzc2lnbmVkIGEgdHlwZSBjb2RlLCBhbmQgZ2l2ZW4gYSByZWZlcmVuY2UgY291bnQgb2YgMS4g
Ki8KK3RzZl9ib29sX3QgICAgICB0c2ZfcmFfdHlwZV9tYW5fZ2V0X3JlZmVyZW5jZSh0c2ZfcmFf
dHlwZV9tYW5fdCAqbWFuLAorCQkJCQkgICAgICB0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogZGVj
cmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYSBnaXZlbiB0eXBlLiAgaWYgdGhlIHJlZmVy
ZW5jZQorICAgY291bnQgZHJvcHMgdG8gMCwgdGhlIHR5cGUgaXMgcmVtb3ZlZC4gKi8KK3ZvaWQg
ICAgICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlX3JlZmVyZW5jZSh0c2ZfcmFfdHlwZV9t
YW5fdCAqbWFuLAorCQkJCQkJIHRzZl90eXBlX3QgKnR5cGUpOworCit1aW50MzJfdCAgICAgICAg
dHNmX3JhX3R5cGVfbWFuX251bV90eXBlcyh0c2ZfcmFfdHlwZV9tYW5fdCAqbWFuKTsKKworLyog
ZGV0ZXJtaW5lIGlmIHRoZSB0eXBlIG1hbmFnZXIgY29udGFpbnMgYWxsIG9mIHRoZSB0eXBlcyB1
c2VkIGJ5CisgICB0aGUgZ2l2ZW4gYnVmZmVyLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9yYV90
eXBlX21hbl9oYXNfYnVmX3R5cGVzKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSAgICAg
IHRzZl9idWZmZXJfdCAqYnVmKTsKKworLyogaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCBm
b3IgdGhlIHR5cGVzIGluIHRoZSBnaXZlbiBidWZmZXIuCisgICBjcmVhdGVzIGFueSB0eXBlcyB0
aGF0IGRvbid0IGV4aXN0LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9yYV90eXBlX21hbl9nZXRf
YnVmX3JlZmVyZW5jZXModHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkJCSAgIHRzZl9idWZm
ZXJfdCAqYnVmKTsKKworLyogZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIHR5
cGVzIGluIHRoZSBnaXZlbiBidWZmZXIuICovCit2b2lkICAgICAgICAgICAgdHNmX3JhX3R5cGVf
bWFuX3JlbW92ZV9idWZfcmVmZXJlbmNlcyh0c2ZfcmFfdHlwZV9tYW5fdCAqbWFuLAorCQkJCQkJ
ICAgICAgdHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiB0
eXBlIGNvZGVzIG9uIHRoZSBmcmVlLWxpc3QuICovCit1aW50MzJfdCAgICAgICAgdHNmX3JhX3R5
cGVfbWFuX2dldF90eXBlX2NvZGVfZnJlZV9saXN0X3NpemUoCisJCQkJCQkgICAgIHRzZl9yYV90
eXBlX21hbl90ICptYW4pOworCisvKiBjcmVhdGUgYSB0eXBlIG9iamVjdC4gIHRoaXMgZnVuY3Rp
b24gd2lsbCBub3QgYWNjZXB0IFRTRl9US19BUlJBWS4KKyAqIGlmIHlvdSB3YW50IHRvIGNyZWF0
ZSBhIHR5cGUgd2l0aCBraW5kIGNjb2RlIFRTRl9US19BUlJBWSwgdXNlCisgKiB0c2ZfdHlwZV9j
cmVhdGVfYXJyYXkoKS4KKyAqCisgKiB0aGlzIGNhbiBvbmx5IGZhaWwgZHVlIHRvIG1lbW9yeSBh
bGxvY2F0aW9uIGZhaWx1cmUgb3IgaWYgdGhlIGtpbmRfY29kZQorICogaXMgaW52YWxpZC4gKi8K
K3RzZl90eXBlX3QqICAgICB0c2ZfdHlwZV9jcmVhdGUodHNmX3R5cGVfa2luZF90IGtpbmRfY29k
ZSk7CisKKy8qIGNyZWF0ZSBhbiBhcnJheSB0eXBlIG9iamVjdC4KKyAqCisgKiB0aGlzIGNhbiBv
bmx5IGZhaWwgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgb3IgaWYgZWxlbWVudF90
eXBlIGlzCisgKiBOVUxMLCBpbiB3aGljaCBjYXNlIGl0IHJldHVybnMgd2l0aG91dCBzZXR0aW5n
IGVycm9yLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl90eXBlX2NyZWF0ZV9hcnJheSh0c2ZfdHlw
ZV90ICplbGVtZW50X3R5cGUpOworCisvKiBjcmVhdGUgYSBzdHJ1Y3QgdHlwZSBhbGwgYXQgb25j
ZS4gIG5vdGUgdGhhdCB5b3UgY2FuIHVzZQorICogdHNmX3R5cGVfY3JlYXRlKCkgaW4gY29tYmlu
YXRpb24gd2l0aCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kKCkgdG8gZG8KKyAqIHdoYXQgdGhpcyBt
ZXRob2QgZG9lcy4gIGFsc28sIHlvdSBjYW4gc2FmZWx5IHVzZQorICogdHNmX3N0cnVjdF90eXBl
X2FwcGVuZCgpIG9uIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhpcyBtZXRob2QuCisgKgorICog
dGhlIHdheSB5b3Ugd291bGQgYWN0dWFsbHkgdXNlIHRoaXMgaXMgdG8gcGFzcyBzdHJ1Y3QgZWxl
bWVudCBuYW1lcworICogcGFpcmVkIHdpdGggdHlwZXMuICBmb3IgZXhhbXBsZToKKyAqCisgKiB0
c2ZfdHlwZV90ICpteV90eXBlID0KKyAqICAgICB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0KCJ4IiwK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfRkxP
QVQpLAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX3R5cGVfY3JlYXRlKFRTRl9US19GTE9BVCksCisgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAqCisgKiBub3RlIHRoYXQgeW91IG11c3QgcGFz
cyBOVUxMIGFmdGVyIHRoZSBsYXN0IHBhaXIuICBvdGhlcndpc2UgeW91J2xsCisgKiBnZXQgcmFu
ZG9tIGNyYXNoZXMgYW5kIHN0dWZmLgorICoKKyAqIHRoZSB0eXBlcyBwYXNzZWQgdG8gdGhpcyBm
dW5jdGlvbiBiZWNvbWUgb3duZWQgYnkgdGhlIGZ1bmN0aW9uCisgKiByZWdhcmRsZXNzIG9mIHN1
Y2Nlc3Mgb3IgZXJyb3IuICovCit0c2ZfdHlwZV90KiAgICAgdHNmX3R5cGVfY3JlYXRlX3N0cnVj
dChjb25zdCBjaGFyICpmaXJzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLi4uKTsKKworLyogdGhlIHNhbWUgYXMgdGhlIGFib3ZlIGJ1dCB0YWlsb3JlZCB0
byBhbGxvdyB5b3UgdG8gdXNlIGl0IG1vcmUgZWFzaWx5CisgKiBmcm9tIHlvdXIgb3duIHN1YnJ1
dGluZXMgdGhhdCB1c2UgdmFyaWFibGUgYXJncy4gKi8KK3RzZl90eXBlX3QqICAgICB0c2ZfdHlw
ZV9jcmVhdGVfc3RydWN0dihjb25zdCBjaGFyICpmaXJzdF9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgbHN0KTsKKworLyogY3JlYXRlIGEgY2hv
aWNlIHR5cGUgYWxsIGF0IG9uY2UuICBub3RlIHRoYXQgeW91IGNhbiB1c2UKKyAqIHRzZl90eXBl
X2NyZWF0ZSgpIGluIGNvbWJpbmF0aW9uIHdpdGggdHNmX2Nob2ljZV90eXBlX2FwcGVuZCgpIHRv
IGRvCisgKiB3aGF0IHRoaXMgbWV0aG9kIGRvZXMuICBhbHNvLCB5b3UgY2FuIHNhZmVseSB1c2UK
KyAqIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmQoKSBvbiB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRo
aXMgbWV0aG9kLgorICoKKyAqIHRoZSB3YXkgeW91IHdvdWxkIGFjdHVhbGx5IHVzZSB0aGlzIGlz
IHRvIHBhc3Mgc3RydWN0IGVsZW1lbnQgbmFtZXMKKyAqIHBhaXJlZCB3aXRoIHR5cGVzLiAgZm9y
IGV4YW1wbGU6CisgKgorICogdHNmX3R5cGVfdCAqbXlfdHlwZSA9CisgKiAgICAgdHNmX3R5cGVf
Y3JlYXRlX2Nob2ljZSgieCIsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV9jcmVhdGUoVFNGX1RLX0ZMT0FUKSwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5
IiwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtf
RkxPQVQpLAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgKgorICogbm90
ZSB0aGF0IHlvdSBtdXN0IHBhc3MgTlVMTCBhZnRlciB0aGUgbGFzdCBwYWlyLiAgb3RoZXJ3aXNl
IHlvdSdsbAorICogZ2V0IHJhbmRvbSBjcmFzaGVzIGFuZCBzdHVmZi4KKyAqCisgKiB0aGUgdHlw
ZXMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gYmVjb21lIG93bmVkIGJ5IHRoZSBmdW5jdGlvbgor
ICogcmVnYXJkbGVzcyBvZiBzdWNjZXNzIG9yIGVycm9yLiAqLwordHNmX3R5cGVfdCogICAgIHRz
Zl90eXBlX2NyZWF0ZV9jaG9pY2UoY29uc3QgY2hhciAqZmlyc3RfbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisKKy8qIHRoZSBzYW1lIGFzIHRoZSBh
Ym92ZSBidXQgdGFpbG9yZWQgdG8gYWxsb3cgeW91IHRvIHVzZSBpdCBtb3JlIGVhc2lseQorICog
ZnJvbSB5b3VyIG93biBzdWJydXRpbmVzIHRoYXQgdXNlIHZhcmlhYmxlIGFyZ3MuICovCit0c2Zf
dHlwZV90KiAgICAgdHNmX3R5cGVfY3JlYXRlX2Nob2ljZXYoY29uc3QgY2hhciAqZmlyc3RfbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGxzdCk7
CisKKy8qIHJlYWQgYSB0eXBlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl90eXBlX3JlYWQodHNm
X3JlYWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFy
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzKTsK
KworLyogd3JpdGUgYSB0eXBlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX3dyaXRlKHRz
Zl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRl
cl90IHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOwor
CisvKiBkdXBsaWNhdGUgYSB0eXBlLiAgdGhpcyBnaXZlcyB5b3UgYSBjb3B5IG9mIHRoZSB0eXBl
IHRoYXQgbXVzdCBiZQorICogc2VwYXJhdGVseSBkZXN0cm95ZWQuICBzbywgaWYgeW91IHdpc2gg
dG8gcmV0YWluIHRoZSB0eXBlIGFmdGVyIGEKKyAqIGNhbGwgdG8gYSBmdW5jdGlvbiB0aGF0IG1p
Z2h0IGRlc3Ryb3kgaXQsIGNhbGwgdGhpcyBmaXJzdC4gIHRoaXMKKyAqIHdpbGwgb25seSByZXR1
cm4gTlVMTCBpZiB0aGUgdHlwZSB5b3UgcGFzcyBpdCBpcyBOVUxMLCBmb3IgdGhlCisgKiBwdXJw
b3NlIG9mIGVycm9yIHByb3BhZ2F0aW9uLiAgdGhpcyB3aWxsIG5ldmVyIGNyZWF0ZSBhbiBlcnJv
ci4gKi8KK3RzZl90eXBlX3QqICAgICB0c2ZfdHlwZV9kdXAodHNmX3R5cGVfdCAqdHlwZSk7CisK
Ky8qIGRlc3Ryb3kgYSB0eXBlIG9iamVjdC4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfdHlwZV9k
ZXN0cm95KHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBnZXQgdGhlIHNpemUgaW4gYnl0ZXMgb2Yg
dGhlIHR5cGUuICBub3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gY2Fubm90CisgKiBmYWlsLiAgbm90
ZSBmdXJ0aGVyIHRoYXQgdGhlIHNpemUgaXMgbGF6aWx5IGNvbXB1dGVkLCBzbyB0aGUgZmlyc3Qg
dGltZQorICogeW91IGNhbGwgdGhpcywgaXQgd2lsbCBiZSBleHBlbnNpdmUsIGJ1dCBpdCB3aWxs
IGJlY29tZSBjaGVhcCBmb3IgYWxsCisgKiBzdWJzZXF1ZW50IGNhbGxzLiAqLwordWludDMyX3Qg
ICAgICAgIHRzZl90eXBlX2dldF9ieXRlX3NpemUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHZl
cmlmeSBhIHR5cGUgYWdhaW5zdCBzb21lIGxpbWl0czsgdGhpcyBpcyBhIGZhaXJseSBjb3N0bHkg
cHJvY2VzcywKKyAqIHByb2JhYmx5IGF0IGxlYXN0IGFzIGV4cGVuc2l2ZSBhcyB3cml0aW5nIG9y
IHJlYWRpbmcgYSB0eXBlLiAgdHNmX3RydWUKKyAqIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlz
IE9LLiAgaWYgdHNmX2ZhbHNlIGlzIHJldHVybmVkLAorICogVFNGX0VfTk9UX0FMTE9XRUQgaXMg
c2V0LiAgaWYgbGltaXRzIGlzIE5VTEwsIGFsbCB0eXBlcyBzaG91bGQKKyAqIHZlcmlmeSAqLwor
dHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX3ZlcmlmeSh0c2ZfdHlwZV90ICp0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cyk7CisKKy8qIGdl
dCBhIGhhc2ggY29kZSBmb3IgYSB0eXBlLiBub3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gaGFzaCB0
eXBlcywgeW91CisgKiBtYXkgYmVuZWZpdCBmcm9tIG1lbW9pemluZyB0aGUgdHlwZSBmaXJzdDsg
dGhlbiB5b3UgY2FuIHVzZSBhIHBvaW50ZXIKKyAqIGhhc2guICovCitpbnQgICAgICAgICAgICAg
dHNmX3R5cGVfZ2V0X2hhc2godHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIG1lbW9pemUgdGhlIGdp
dmVuIHR5cGUgYW5kIHJldHVybiB0aGUgbWVtbyBtYXN0ZXIuICB0aGUgbWVtbyBtYXN0ZXIKKyAq
IGZvciB0d28gdHlwZXMgZm9yIGVoaWNoIHRzZl90eXBlX2NvbXBhcmUgcmV0dXJucyB0cnVlIHNo
b3VsZCBiZQorICogaWRlbnRpY2FsLCBpLmUuIHBvaW50IHRvIHRoZSBzYW1lIHRzZl90eXBlIG9i
amVjdC4gIHRoaXMgZG9lcyBub3QKKyAqIGNvbnN1bWUgdGhlIHR5cGUgeW91IHBhc3MgaXQuICB0
aGUgcmV0dXJuZWQgdHlwZSBpcyBub3Qgb3duZWQgYnkgeW91CisgKiBhbmQgaXMgb25seSBndWFy
YW50ZWVkIHRvIHN0YXkgYWxpdmUgYXMgbG9uZyBhcyB5b3UgZG9uJ3QgZGVzdHJveQorICogdGhl
IHR5cGUgeW91IHBhc3NlZC4gIHRoZXJlZm9yZSB5b3UgbWlnaHQgd2FudCB0byBkbzoKKyAqCisg
KiBtZW1vX3R5cGUgPSB0c2ZfdHlwZV9kdXAodHNmX3R5cGVfbWVtbyh0eXBlKSk7CisgKgorICog
aWYgeW91IHdhbnQgdG8gYmUgc2FmZS4gIGlmIHlvdSB3YW50IHRvIHJlbGlucXVpc2ggb3duZXJz
aGlwIG9mIHRoZQorICogb3JpZ2luYWwgdHlwZSBhbmQgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG1l
bW8sIHlvdSBwcm9iYWJseSB3YW50OgorICoKKyAqIG1lbW9fdHlwZSA9IHRzZl90eXBlX2R1cCh0
c2ZfdHlwZV9tZW1vKHR5cGUpKTsKKyAqIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgKgorICog
bm90ZSB0aGF0IGl0J3MgcG9zc2libGUgZm9yIHRzZl90eXBlX21lbW8oKSB0byBzaW1wbHkgcmV0
dXJuIHRoZQorICogdHlwZSBpdCB3YXMgcGFzc2VkLCBpZiB0aGF0IGlzIHRoZSBvbmx5IGV4dGFu
dCB0eXBlIHRoYXQgbG9va3MgbGlrZQorICogdGhhdC4gYWxzbyBub3RlIHRoYXQgbWVtb2l6YXRp
b24gaWdub3JlcyB0aGUgbmF0aXZlIG1hcHBpbmcsIHNvCisgKiB1c2luZyB0aGUgYWJvdmUgbWVt
by1hbmQtcmVsaW5xdWlzaCBkYW5jZSBpcyBub3QgdXNlZnVsIGZvciB0eXBlcworICogdGhhdCBo
YXZlIG5hdGl2ZSBtYXBwaW5nLiBob3dldmVyLCBpdCdzIHN0aWxsIHVzZWZ1bCB0byBtZW1vaXpl
IHN1Y2gKKyAqIHR5cGVzIGlmIHlvdSB3YW50IHRvIHNwZWVkIHVwIGhhc2hpbmcgYW5kIGNvbXBh
cmluZy4gKi8KK3RzZl90eXBlX3QqICAgICB0c2ZfdHlwZV9tZW1vKHRzZl90eXBlX3QgKnR5cGUp
OworCisvKiBkZXRlcm1pbmUgaWYgdGhlIHR5cGUgaXMgZHluYW1pYyAodGhhdCBpcywgaWYgaXQg
aGFzIGFueSBhbmllcyBpbgorICAgaXQpICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfaXNf
ZHluYW1pYyh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogY29tcGFyZSB0d28gdHlwZXMuICBuZWl0
aGVyIHR5cGUgYmVjb21lcyBvd25lZCBieSB0aGUgZnVuY3Rpb247IGJvdGgKKyAqIGFyZSBzdGls
bCB5b3VyIHJlc3BvbnNpYmlsaXR5IGFmdGVyIHRoZSBjYWxsLiAgcmV0dXJucyB0c2ZfdHJ1ZQor
ICogaWYgdGhlIHR5cGVzIGFyZSBlcXVhbCwgdHNmX2ZhbHNlIG90aGVyd2lzZS4gKi8KK3RzZl9i
b29sX3QgICAgICB0c2ZfdHlwZV9jb21wYXJlKHRzZl90eXBlX3QgKmEsIHRzZl90eXBlX3QgKmIp
OworCisvKiBkZXRlcm1pbmVzIGlmIHRoZSBmaXJzdCB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRo
ZSBzZWNvbmQgdHlwZS4KKyAqIHRoZSBpbnN0YW5jZW9mIHJlbGF0aW9uc2hpcCBpcyBkZWZpbmVk
IGluIGEgYmlnIGNvbW1lbnQgdXAgYWJvdmUKKyAqIHRoZSBkZWZpbml0aW9uIG9mIHRoZSB0c2Zf
dHlwZV9raW5kIGVudW1lcmF0aW9uLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX2luc3Rh
bmNlb2YodHNmX3R5cGVfdCAqb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHNmX3R5cGVfdCAqdHdvKTsKKworLyogZ2V0IHRoZSBraW5kIGNvZGUgZm9yIGEgdHlwZSBv
YmplY3QuICovCit0c2ZfdHlwZV9raW5kX3QgdHNmX3R5cGVfZ2V0X2tpbmRfY29kZSh0c2ZfdHlw
ZV90ICp0eXBlKTsKKworLyogaWYgdGhlIHNpemUgb2YgdGhlIHR5cGUgaXMga25vd24gc3RhdGlj
YWxseSwgaXQgcmV0dXJucyBpdC4gIG90aGVyd2lzZSwKKyAqIGl0IHJldHVybnMgVUlOVDMyX01B
WC4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfdHlwZV9nZXRfc3RhdGljX3NpemUodHNmX3R5cGVf
dCAqdHlwZSk7CisKKy8qIHRlbGxzIHlvdSB0aGUgY29tbWVudCBvbiB0aGUgdHlwZS4gIG1heSBi
ZSBOVUxMIGlmIHRoZXJlIGlzIG5vIGNvbW1lbnQKKyAqIG9yIGlmIHRoZSB0eXBlIGlzIG5vdCBj
b21tZW50YWJsZS4gKi8KK2NvbnN0IGNoYXIqICAgICB0c2ZfdHlwZV9nZXRfY29tbWVudCh0c2Zf
dHlwZV90ICp0eXBlKTsKKworLyogdGVsbHMgeW91IGlmIHRoZSB0eXBlIGhhcyBhIGNvbW1lbnQg
Ki8KK3RzZl9ib29sX3QgICAgICB0c2ZfdHlwZV9oYXNfY29tbWVudCh0c2ZfdHlwZV90ICp0eXBl
KTsKKworLyogc2V0cyB0aGUgY29tbWVudCBvbiB0aGUgdHlwZS4gIHdpbGwgcmV0dXJuIFRTRl9F
X0JBRF9UWVBFX0tJTkQgaWYgdGhlCisgKiB0eXBlIGlzIG5vdCBjb21tZW50YWJsZS4gKi8KK3Rz
Zl9ib29sX3QgICAgICB0c2ZfdHlwZV9zZXRfY29tbWVudCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21tZW50KTsK
KworLyogdGVsbHMgeW91IHRoZSBuYW1lIG9mIHRoZSB0eXBlLiAgbWF5IGJlIE5VTEwgaWYgdGhl
cmUgaXMgbm8gbmFtZSBvciBpZgorICogdGhlIHR5cGUgaXMgbm90IGNvbW1lbnRhYmxlLiAqLwor
Y29uc3QgY2hhciogICAgIHRzZl90eXBlX2dldF9uYW1lKHRzZl90eXBlX3QgKnR5cGUpOworCisv
KiB0ZWxscyB5b3UgaWYgdGhlIHR5cGUgaGFzIGEgbmFtZS4gKi8KK3RzZl9ib29sX3QgICAgICB0
c2ZfdHlwZV9oYXNfbmFtZSh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogc2V0cyB0aGUgbmFtZSBv
ZiB0aGUgdHlwZS4gIHdpbGwgcmV0dXJuIFRTRl9FX0JBRF9UWVBFX0tJTkQgaWYgdGhlCisgKiB0
eXBlIGlzIG5vdCBjb21tZW50YWJsZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfdHlwZV9zZXRf
bmFtZSh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpuYW1lKTsKKworLyogdGVsbHMgeW91IGlmIHRoZSB2ZXJzaW9uIGlzIG5v
bi16ZXJvIChpLmUuIG5vdCBlcXVhbCB0byAwLjAuMCkgKi8KK3RzZl9ib29sX3QgICAgICB0c2Zf
dHlwZV9oYXNfdmVyc2lvbih0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogdGVsbHMgeW91IHRoZSBy
YXcgdmVyc2lvbiBvZiB0aGUgdHlwZS4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfdHlwZV9nZXRf
cmF3X3ZlcnNpb24odHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHRlbGxzIHlvdSB0aGUgbWFqb3Ig
dmVyc2lvbiBvZiB0aGUgdHlwZS4gKi8KK3VpbnQxNl90ICAgICAgICB0c2ZfdHlwZV9nZXRfbWFq
b3JfdmVyc2lvbih0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogdGVsbHMgeW91IHRoZSBtaW5vciB2
ZXJzaW9uIG9mIHRoZSB0eXBlLiAqLwordWludDhfdCAgICAgICAgIHRzZl90eXBlX2dldF9taW5v
cl92ZXJzaW9uKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiB0ZWxscyB5b3UgdGhlIHBhdGNoIHZl
cnNpb24gb2YgdGhlIHR5cGUuICovCit1aW50OF90ICAgICAgICAgdHNmX3R5cGVfZ2V0X3BhdGNo
X3ZlcnNpb24odHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHNldHMgdGhlIHJhdyB2ZXJzaW9uIG9m
IHRoZSB0eXBlLiAgd2lsbCByZXR1cm4gVFNGX0VfQkFEX1RZUEVfS0lORCBpZiB0aGUKKyAqIHR5
cGUgaXMgbm90IGNvbW1lbnRhYmxlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl90eXBlX3NldF9y
YXdfdmVyc2lvbih0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgdmVyc2lvbik7CisKKy8qIHNldHMgdGhlIHZlcnNpb24g
b2YgdGhlIHR5cGUuICB3aWxsIHJldHVybiBUU0ZfRV9CQURfVFlQRV9LSU5EIGlmIHRoZQorICog
dHlwZSBpcyBub3QgY29tbWVudGFibGUuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3R5cGVfc2V0
X3ZlcnNpb24odHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDE2X3QgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90IHBhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyogZ2V0
IHRoZSBlbGVtZW50IHR5cGUgb2YgYW4gYXJyYXkgdHlwZSBvYmplY3QuICB0aGUgcmV0dXJuZWQK
KyAqIG9iamVjdCBpcyBub3Qgb3duZWQgYnkgeW91OyBpdCBpcyBvd25lZCBieSB0aGUgYXJyYXkg
dHlwZS4gKi8KK3RzZl90eXBlX3QqICAgICB0c2ZfYXJyYXlfdHlwZV9nZXRfZWxlbWVudF90eXBl
KHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBhcHBlbmQgYSBuZXcgZmllbGQgdG8gYSBzdHJ1Y3Qg
dHlwZS4gIHRoZSBzdHJpbmcgYXJndW1lbnQKKyAqIGRvZXMgbm90IGJlY29tZSBvd25lZCBieSB0
aGUgZnVuY3Rpb247IGl0IGlzIHN0aWxsIHlvdXIKKyAqIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUg
aXQuICBub3RlIHRoYXQgdGhlIHN0cmluZyBjYW5ub3QKKyAqIGV4Y2VlZCBUU0ZfU1RSX1NJWkU7
IGlmIGl0IGRvZXMsIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgKiB0aGlzIHdpbGwgcHJv
cGFnYXRlIGVycm9ycyBvbiB0aGUgKmVsZV90eXBlLgorICoKKyAqIHRoaXMgb25seSBmYWlscyBp
ZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscywgaWYgdGhlIG5hbWUgc3RyaW5nCisgKiBpcyB0b28g
bG9uZywgb3IgZWxlX3R5cGUgaXMgTlVMTC4gKi8KK3RzZl9ib29sX3QgICAgICB0c2Zfc3RydWN0
X3R5cGVfYXBwZW5kKHRzZl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKmVsZV90eXBlKTsKKworLyogc2V0IHRoZSAnb3B0
aW9uYWwnIGF0dHJpYnV0ZSBvZiBhIHN0cnVjdHVyZSBmaWVsZC4gKi8KK3RzZl9ib29sX3QgICAg
ICB0c2Zfc3RydWN0X3R5cGVfc2V0X29wdGlvbmFsKHRzZl90eXBlX3QgKip0eXBlLAorCQkJCQkg
ICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAgICAgdHNmX2Jvb2xfdCBvcHRpb25hbCk7CisK
Ky8qIHNldCB0aGUgY29tbWVudCBmb3IgYSBzdHJ1Y3R1cmUgZmllbGQuICovCit0c2ZfYm9vbF90
ICAgICAgdHNmX3N0cnVjdF90eXBlX3NldF9jb21tZW50KHRzZl90eXBlX3QgKip0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpjb21tZW50KTsKKworLyogcmVtb3ZlIGEgc3RydWN0IGZpZWxkLiBub3RlIHRoYXQgdGhpcyBj
aGFuZ2VzIHRoZSBvcmRlcmluZyBvZgorICogZmllbGRzLiAqLwordHNmX2Jvb2xfdCAgICAgIHRz
Zl9zdHJ1Y3RfdHlwZV9yZW1vdmUodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKKworLyogZmluZCBhbiBl
bGVtZW50IGluIGEgc3RydWN0IHR5cGUuICB0aGlzIHNlYXJjaCBzaG91bGQgYmUKKyAqIGZhc3Qs
IGFzIGl0IHVzZXMgYSBoYXNodGFibGUuICovCit0c2ZfdHlwZV90KiAgICAgdHNmX3N0cnVjdF90
eXBlX2ZpbmQodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKKworLyogZmluZCB0aGUgcGFpciBlbGVtZW50IGlu
IGEgc3RydWN0IHR5cGU7IHRoZSBwYWlyCisgKiBlbGVtZW50IGNvbnRhaW5zIG1vcmUgaW5mby4g
IHRoaXMgc2VhcmNoIHNob3VsZCBiZSBmYXN0LAorICogYXMgaXQgdXNlcyBhIGhhc2h0YWJsZS4g
Ki8KK3RzZl9uYW1lZF90eXBlX3QqIHRzZl9zdHJ1Y3RfdHlwZV9maW5kX25vZGUodHNmX3R5cGVf
dCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqbmFtZSk7CisKKy8qIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0
aGUgc3RydWN0LiAqLwordWludDMyX3QgICAgICAgIHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2Vs
ZW1lbnRzKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBnZXQgdGhlIGl0aCBlbGVtZW50IGluIHRo
ZSBzdHJ1Y3QgKi8KK3RzZl9uYW1lZF90eXBlX3QgKnRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVu
dCh0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4KTsKKworLyogZ2V0IHRoZSBuYW1lIG9mIHRoZSBpdGgg
ZWxlbWVudCBpbiB0aGUgc3RydWN0ICovCitjb25zdCBjaGFyKiAgICAgdHNmX3N0cnVjdF90eXBl
X2dldF9lbGVtZW50X25hbWUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCk7CisKKy8qIGdldCB0
aGUgdHlwZSBvZiB0aGUgaXRoIGVsZW1lbnQgaW4gdGhlIHN0cnVjdCAqLwordHNmX3R5cGVfdCog
ICAgIHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudF90eXBlKHRzZl90eXBlX3QgKnR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
aW5kZXgpOworCisvKiBhcHBlbmQgYSBuZXcgZmllbGQgdG8gYSBjaG9pY2UgdHlwZS4gIHRoZSBz
dHJpbmcgYXJndW1lbnQKKyAqIGRvZXMgbm90IGJlY29tZSBvd25lZCBieSB0aGUgZnVuY3Rpb247
IGl0IGlzIHN0aWxsIHlvdXIKKyAqIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgaXQuICBub3RlIHRo
YXQgdGhlIHN0cmluZyBjYW5ub3QKKyAqIGV4Y2VlZCBUU0ZfU1RSX1NJWkU7IGlmIGl0IGRvZXMs
IGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgKiB0aGlzIHdpbGwgcHJvcGFnYXRlIGVycm9y
cyBvbiB0aGUgKmVsZV90eXBlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9jaG9pY2VfdHlwZV9h
cHBlbmQodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX3R5cGVfdCAqZWxlX3R5cGUpOworCisvKiBzZXQgdGhlIGNvbW1lbnQgZm9y
IGEgY2hvaWNlIGZpZWxkLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9jaG9pY2VfdHlwZV9zZXRf
Y29tbWVudCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29tbWVudCk7CisKKy8qIGZpbmQgYW4g
ZWxlbWVudCBpbiBhIGNob2ljZSB0eXBlLiAgdGhpcyBzZWFyY2ggc2hvdWxkIGJlCisgKiBmYXN0
LCBhcyBpdCB1c2VzIGEgaGFzaHRhYmxlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl9jaG9pY2Vf
dHlwZV9maW5kKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CisKKy8qIGZpbmQgdGhlIHBhaXIgZWxlbWVudCBp
biBhIGNob2ljZSB0eXBlOyB0aGUgcGFpcgorICogZWxlbWVudCBjb250YWlucyBtb3JlIGluZm8u
ICB0aGlzIHNlYXJjaCBzaG91bGQgYmUgZmFzdCwKKyAqIGFzIGl0IHVzZXMgYSBoYXNodGFibGUu
ICovCit0c2ZfbmFtZWRfdHlwZV90KiB0c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2RlKHRzZl90eXBl
X3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKm5hbWUpOworCisvKiByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4g
dGhlIGNob2ljZS4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9l
bGVtZW50cyh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogZ2V0IHRoZSBpdGggZWxlbWVudCBpbiB0
aGUgY2hvaWNlICovCit0c2ZfbmFtZWRfdHlwZV90KiB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1l
bnQodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBpbmRleCk7CisKKy8qIGdldCB0aGUgbmFtZSBvZiB0aGUgaXRo
IGVsZW1lbnQgaW4gdGhlIGNob2ljZSAqLworY29uc3QgY2hhciogICAgIHRzZl9jaG9pY2VfdHlw
ZV9nZXRfZWxlbWVudF9uYW1lKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgpOworCQkgICAgIAor
LyogZ2V0IHRoZSB0eXBlIG9mIHRoZSBpdGggZWxlbWVudCBpbiB0aGUgY2hvaWNlICovCit0c2Zf
dHlwZV90KiAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9lbGVtZW50X3R5cGUodHNmX3R5cGVfdCAq
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBpbmRleCk7CisKKy8qIHJldHVybnMgdHJ1ZSBpZiB0aGUgY2hvaWNlIGhhcyBhbnkg
bm9uLXZvaWQgdHlwZXMuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV90eXBlX2hhc19u
b25fdm9pZCh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogcmV0dXJucyB0cnVlIGlmOgorICogLT4g
dGhlIGxhdHRlciBjaG9pY2UgdHlwZSBoYXMgYXQgbGVhc3QgYXMgbWFueSBlbGVtZW50cyBhcyB0
aGUKKyAqICAgIGZpcnN0LCBhbmQKKyAqIC0+IGZvciBlYWNoIG9mIHRoZSBlbGVtZW50cyBpbiB0
aGUgZmlyc3QgY2hvaWNlIHR5cGUsIHRoZSBlbGVtZW50CisgKiAgICBpbiB0aGUgc2Vjb25kIGNo
b2ljZSB0eXBlIHRoYXQgaGFzIHRoZSBzYW1lIGluZGV4IGFsc28gaGFzIHRoZQorICogICAgc2Ft
ZSBuYW1lLgorICoKKyAqIG5vdGUgdGhhdCB0aGUgZWxlbWVudCB0eXBlcyBkbyBub3QgaGF2ZSB0
byBtYXRjaCBmb3IgdGhpcworICogcHJlZGljYXRlIHRvIGhvbGQuICBob3dldmVyLCBpZiB5b3Ug
YXJlIGludGVyZXN0ZWQgaW4gYWRkaW5nIGFuCisgKiBpbnN0YW5jZW9mIGNvbnN0cmFpbnQgZm9y
IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHRoZSB0d28KKyAqIGNob2ljZSB0eXBlcywg
eW91IGNhbiBkbyBzbyBieSBwZXJmb3JtaW5nIGFuIGluc3RhbmNlb2YgdGVzdCBvbgorICogYSBh
bmQgYi4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfY2hvaWNlX3R5cGVfdXNlc19zYW1lX2luZGlj
ZXModHNmX3R5cGVfdCAqYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3R5cGVfdCAqYik7CisKKy8qIGNyZWF0ZXMgYSBuYW1lZCB0eXBlIG9i
amVjdCB3aXRoIHRoZSBnaXZlbiBuYW1lLCB0eXBlLCBhbmQgaW5kZXguCisgKiBmYWlsdXJlIHRv
IGNyZWF0ZSB0aGlzIHRoaW5nIHJlc3VsdHMgaW4gdGhlIHR5cGUgYmVpbmcgZGVzdHJveWVkLgor
ICogdGhlIGhhc19vZmZzZXQgZmllbGQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgb2Zmc2V0IGZpZWxk
IGlzIHNldCB0byAwLAorICogYW5kIHRoZSBjb21tZW50IGZpZWxkIGlzIHNldCB0byBOVUxMLiAq
LwordHNmX25hbWVkX3R5cGVfdCogdHNmX25hbWVkX3R5cGVfY3JlYXRlKGNvbnN0IGNoYXIgKm5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAq
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBp
bmRleCk7CisKKy8qIGRlc3Ryb3kgYSBuYW1lZCB0eXBlIG9iamVjdC4gIGRlc3Ryb3lzIHRoZSB0
eXBlLiAgZnJlZXMgdGhlCisgKiBjb21tZW50IGlmIHRoZXJlIGlzIG9uZS4gKi8KK3ZvaWQgICAg
ICAgICAgICB0c2ZfbmFtZWRfdHlwZV9kZXN0cm95KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpOwor
CisvKiByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSB0eXBlIGluIHRoZSBub2RlLiAgd2hhdCBnZXRz
IHJldHVybmVkCisgKiBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNvbnN0YW50IHN0cmluZyB0aGF0
IHlvdSBkbyBub3Qgb3duLiAqLworY29uc3QgY2hhciogICAgIHRzZl9uYW1lZF90eXBlX2dldF9u
YW1lKHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpOworCisvKiByZXR1cm5zIHRoZSB0eXBlIHRoYXQg
dGhlIG5vZGUgaG9sZHMuICB3aGF0IGdldHMgcmV0dXJuZWQgaXMKKyAqIG9mIHR5cGUgdHNmX3R5
cGVfdCogYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzIGNvbnN0YW50IHRoYXQgeW91CisgKiBkbyBu
b3Qgb3duLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl9uYW1lZF90eXBlX2dldF90eXBlKHRzZl9u
YW1lZF90eXBlX3QgKm5vZGUpOworCisvKiByZXR1cm5zIHRoZSBpbmRleCBvZiBhIG5hbWVkIHR5
cGUgbm9kZSB3aXRoaW4gaXRzIHN0cnVjdHVyZQorICogdHlwZS4gKi8KK3VpbnQzMl90ICAgICAg
ICB0c2ZfbmFtZWRfdHlwZV9nZXRfaW5kZXgodHNmX25hbWVkX3R5cGVfdCAqbm9kZSk7CisJCSAg
ICAgCisvKiBzZXQgdGhlIG9wdGlvbmFsIGF0dHJpYnV0ZSAqLwordHNmX2Jvb2xfdCAgICAgIHRz
Zl9uYW1lZF90eXBlX2dldF9vcHRpb25hbCh0c2ZfbmFtZWRfdHlwZV90ICpub2RlKTsKKworLyog
c2V0IHRoZSBvcHRpb25hbCBhdHRyaWJ1dGUgKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfbmFtZWRf
dHlwZV9zZXRfb3B0aW9uYWwodHNmX25hbWVkX3R5cGVfdCAqbm9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCBvcHRpb25hbCk7CisKKy8q
IHJldHVybnMgdGhlIGNvbW1lbnQgb2YgYSBuYW1lcyB0eXBlLiAgbWF5IGJlIE5VTEwsIGluZGlj
YXRpbmcgdGhhdAorICogbm8gY29tbWVudCB3YXMgZXZlciBzZXQgKi8KK2NvbnN0IGNoYXIqICAg
ICB0c2ZfbmFtZWRfdHlwZV9nZXRfY29tbWVudCh0c2ZfbmFtZWRfdHlwZV90ICpub2RlKTsKKwor
LyogdGVsbHMgeW91IGlmIHRoZSBuYW1lZCB0eXBlIGhhcyBhIGNvbW1lbnQgKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfbmFtZWRfdHlwZV9oYXNfY29tbWVudCh0c2ZfbmFtZWRfdHlwZV90ICpub2Rl
KTsKKworLyogc2V0IHRoZSBjb21tZW50IG9uIGEgbmFtZWQgdHlwZS4gIGRlbGV0ZXMgdGhlIG9s
ZCBvbmUgaWYKKyAqIG5lY2Vzc2FyeS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfbmFtZWRfdHlw
ZV9zZXRfY29tbWVudCh0c2ZfbmFtZWRfdHlwZV90ICpub2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpOworCisvKiBnZXQg
dGhlIGhhc2ggY29kZSBmb3IgdGhlIG5hbWVkIHR5cGUuICB5b3UgYXJlIGd1YXJhbnRlZWQgdGhh
dCB0eXBlcworICogb2YgdHlwZSBUU0ZfVEtfU1RSVUNUIGFuZCBUU0ZfVEtfQ0hPSUNFIHdpbGwg
dXNlIHRoZSBzdW0gb2YgdGhlc2UgaGFzaAorICogY29kZXMgYXMgcGFydCBvZiBjb21wdXRpbmcg
dGhlaXIgb3duIGhhc2ggY29kZS4gIHlvdSdyZSBndWFyYW50ZWVkCisgKiB0aGF0IHRzZl90eXBl
X3RhYmxlX3RhYmxlX3Qgd2lsbCB1c2UgdGhlIHN1bSBvZiB0aGVzZSBoYXNoIGNvZGVzIGFzCisg
KiBwYXJ0IG9mIGNvbXB1dGluZyB0aGVpciBvd24gaGFzaCBjb2RlLiAqLworaW50ICAgICAgICAg
ICAgIHRzZl9uYW1lZF90eXBlX2dldF9oYXNoKHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpOworCisv
KiBjcmVhdGUgYSBidWZmZXIuICB0aGUgdHlwZSBpcyBkdXBlZCBieSB0aGUgYnVmZmVyLiAgdGhl
IHR5cGVzIHRhYmxlCisgKiBiZWNvbWVzIG93bmVkLiAgYW5kLCB0byBtYWtlIHRoaW5ncyBtb3Jl
IGludGVyZXN0aW5nLCB0aGUgYm9vbGVhbgorICogYXJndW1lbnQgZGV0ZXJtaW5lcyBpZiB0aGUg
dm9pZCogaXMgb3duZWQgYnkgdGhlIGJ1ZmZlci4gIGlmIGl0IGlzCisgKiBvd25lZCBieSB0aGUg
YnVmZmVyLCB0aGVuIGlmIHRoaXMgZnVuY3Rpb24gZmFpbHMsIHRoZSBidWZmZXIgd2lsbCBiZQor
ICogZnJlZWQuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2J1ZmZlcl9jcmVhdGUodHNmX3R5cGVf
dCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9t
YXBfdCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3Qga2VlcCk7CisKKy8qIGNy
ZWF0ZSBhIGJ1ZmZlciBpbiBhIHJlZ2lvbi4gIGV4YWN0bHkgbGlrZSB0c2ZfYnVmZmVyX2NyZWF0
ZSgpCisgKiBleGNlcHQgdGhhdCB0aGUgYnVmZmVyIGlzIGNyZWF0ZWQgaW4gYSByZWdpb24uICBp
dCBpcyBhc3N1bWVkCisgKiB0aGF0IHRoZSB2b2lkKiBkYXRhIGlzIGFsbG9jYXRlZCBpbiB0aGUg
c2FtZSByZWdpb24gYW5kIHRoYXQKKyAqIHRzZl90eXBlX2luX21hcF90KiBpcywgdG9vLiAgbm90
ZSB0aGF0IHRoZSB0c2ZfYm9vbF90IGFyZ3VtZW50CisgKiBpcyBvbWl0dGVkIHNpbmNlIHRzZl9i
dWZmZXJfZGVzdHJveSgpIGlzIG5vdCBhcHBsaWNhYmxlIHRvCisgKiByZWdpb24tYWxsb2NhdGVk
IGJ1ZmZlcnMuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2J1ZmZlcl9jcmVhdGVfaW4odHNmX3R5
cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV9pbl9tYXBfdCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlZ2lv
bik7CisKKy8qIGdldCB0aGUgZW1wdHkgYnVmZmVyIHNpbmdsZXRvbi4gKi8KK3RzZl9idWZmZXJf
dCogICB0c2ZfYnVmZmVyX2dldF9lbXB0eV9zaW5nbGV0b24odm9pZCk7CisKKy8qIGNsb25lIHRo
ZSBidWZmZXIuICB0aGUgcmVzdWx0aW5nIGJ1ZmZlciBoYXMgdGhlIGtlZXAgYml0IHNldCB0bwor
ICogdHJ1ZS4gIG5vdGUgdGhhdCB0aGlzIGlzIGEgZGVlcCBjbG9uZSwgc28gdGhhdCB0aGUgYWN0
dWFsIGRhdGEKKyAqIGl0c2VsZiBpcyBhbHNvIGNvcGllZC4gIHRoaXMgbWVhbnMgdGhhdCB0aGlz
IG9wZXJhdGlvbiwgYW5kIGFueQorICogb3BlcmF0aW9ucyBvbiB0aGUgbmV3IGJ1ZmZlciBoYXZl
IG5vIGVmZmVjdCBvbiB0aGUgb3JpZ2luYWwgYnVmZmVyLiAqLwordHNmX2J1ZmZlcl90KiAgIHRz
Zl9idWZmZXJfY2xvbmUodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBjbG9uZSB0aGUgYnVmZmVy
IGludG8gdGhlIGdpdmVuIHJlZ2lvbi4gIGV4YWN0bHkgbGlrZQorICogdHNmX2J1ZmZlcl9jbG9u
ZSgpIGV4Y2VwdCBmb3IgdGhlIHJlZ2lvbiBwYXJ0LiAqLwordHNmX2J1ZmZlcl90KiAgIHRzZl9i
dWZmZXJfY2xvbmVfaW4odHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpyZWdpb24pOworCisvKiBkdXBsaWNhdGUgYSBidWZmZXIuICB0
aGlzIHdpbGwgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBnaXZlbiBidWZmZXIKKyAqIHVudGlsIHlv
dSBjYWxsIHRzZl9idWZmZXJfZGVzdHJveSBvbiBpdC4gIGlmIHRoZSBidWZmZXIgd2FzIGhlYXAt
CisgKiBhbGxvY2F0ZWQgYW5kIGhhcyB0aGUga2VlcCBiaXQgc2V0IHRvIHRydWUsIHRoaXMgb3Bl
cmF0aW9uIHdpbGwgYmUKKyAqIHZlcnkgZmFzdCAtIGl0IHdpbGwgaW5jcmVtZW50IGEgY291bnQg
YW5kIG1heWJlIGRvIHNvbWUgc2ltcGxlCisgKiBsb2NraW5nL3VubG9ja2luZy4gIGlmIHRoZSBi
dWZmZXIgd2FzIHJlZ2lvbiBhbGxvY2F0ZWQgb3IgaWYgdGhlCisgKiBrZWVwIGJpdCB3YXMgc2V0
IHRvIGZhbHNlLCB0aGVuIHRoaXMgaGFzIHRoZSBzYW1lIGNvc3QgYXMKKyAqIHRzZl9idWZmZXJf
Y2xvbmUoKS4gIGFzIHN1Y2gsIHlvdSBtdXN0IGRvIGVycm9yIGNoZWNraW5nIGFmdGVyIGEKKyAq
IGEgY2FsbCB0byB0c2ZfYnVmZmVyX2R1cCgpLiAqLwordHNmX2J1ZmZlcl90KiAgIHRzZl9idWZm
ZXJfZHVwKHRzZl9idWZmZXJfdCAqYnVmKTsKKworLyogZGVzdHJveSBhIGJ1ZmZlci4gIGNhbm5v
dCBiZSB1c2VkIG9uIHJlZ2lvbiBhbGxvY2F0ZWQgYnVmZmVycy4gKi8KK3ZvaWQgICAgICAgICAg
ICB0c2ZfYnVmZmVyX2Rlc3Ryb3kodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiB0ZWxscyB5b3Ug
dGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAqLwordWludDMyX3QgICAgICAgIHRzZl9idWZmZXJfZ2V0
X3NpemUodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBnaXZlcyB5b3UgdGhlIGRhdGEgcGF5bG9h
ZCBvZiB0aGUgYnVmZmVyICovCitjb25zdCB2b2lkKiAgICAgdHNmX2J1ZmZlcl9nZXRfZGF0YSh0
c2ZfYnVmZmVyX3QgKmJ1Zik7CisKKy8qIHJlYWQgYSBidWZmZXIgZnJvbSBhbm90aGVyIGJ1ZmZl
ciBhbmQgYXNzb2NpYXRlIGl0IHdpdGggdGhlIGdpdmVuCisgKiB0eXBlLiAgdGhpcyBpcyBhbHNv
IGEgYml0IG9mIGEgdHJ1c3RlZCByb3V0aW5lLi4uCisgKiBpZiB0aGUgcmVnaW9uIHBvaW50ZXIg
aXMgbm9uLU5VTEwsIHRoZW4gdGhlIHJlc3VsdGluZyBidWZmZXIgd2lsbAorICogYmUgcmVnaW9u
LWFsbG9jYXRlZC4gIG90aGVyd2lzZSBpdCB3aWxsIGJlIG1hbGxvYy1hbGxvY2F0ZWQgYW5kCisg
KiB5b3Ugd2lsbCBiZSBleHBlY3RlZCB0byBjYWxsIHRzZl9idWZmZXJfZGVzdHJveSgpIGF0IHNv
bWUgcG9pbnQuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2J1ZmZlcl9yZWFkX2Zyb21fYnVmKHRz
Zl90eXBlX2luX21hcF90ICplbmNsb3NpbmdfdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKipjdXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKTsKKworLyogc2tpcCBhIGJ1ZmZlciAoaW4g
YSBidWZmZXIsIG5vdCBvbiBkaXNrKS4gIHRha2VzIGNhcmUgb2Ygc2tpcHBpbmcgdGhlCisgICB0
cmFuc2xhdGlvbiB0YWJsZSBpZiBkZWFsaW5nIHdpdGggYSBkeW5hbWljIHR5cGUuICovCit0c2Zf
Ym9vbF90ICAgICAgdHNmX2J1ZmZlcl9za2lwX2luX2J1Zih0c2ZfdHlwZV9pbl9tYXBfdCAqZW5j
bG9zaW5nX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKmVuZCk7CisKKy8qIGNhbGN1bGF0ZSB0aGUgc2l6ZSB0aGF0IHdvdWxkIGJlIHJlcXVpcmVk
IHRvIHdyaXRlIHRoaXMgYnVmZmVyIGludG8KKyAqIGFub3RoZXIgYnVmZmVyLiAqLwordWludDMy
X3QgICAgICAgIHRzZl9idWZmZXJfY2FsY19zaXplKHRzZl9idWZmZXJfdCAqYnVmKTsKKworLyog
d3JpdGUgYSBidWZmZXIgaW50byBhbm90aGVyIGJ1ZmZlciAqLwordHNmX2Jvb2xfdCAgICAgIHRz
Zl9idWZmZXJfd3JpdGVfdG9fYnVmKHRzZl9idWZmZXJfdCAqYnVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX291dF9tYXBfdCAqdHlwZV9tYXAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqKnRhcmdldCk7
CisKKy8qIHdyaXRlIGEgYnVmZmVyIGFuZCBpdHMgdHlwZXMgdG8gdGhlIGdpdmVuIHdyaXRlci4g
IHRoaXMgaXMgbm90IGFuCisgKiBvcHRpbWl6ZWQgb3BlcmF0aW9uLCBidXQgaXQgc2hvdWxkIGJl
IGZpbmUgaWYgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcidzCisgKiBkYXRhIGlzIGxhcmdlIGNvbXBh
cmVkIHRvIHRoZSBzaXplIG9mIHRoZSB0eXBlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9idWZm
ZXJfd3JpdGVfd2hvbGUodHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKworLyogcmVhZCBhIGJ1ZmZlciBhbmQg
aXRzIHR5cGVzIGZyb20gdGhlIGdpdmVuIHJlYWRlci4gKi8KK3RzZl9idWZmZXJfdCogICB0c2Zf
YnVmZmVyX3JlYWRfd2hvbGUodHNmX3JlYWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cyk7CisKKy8qIGdldCB0aGUgU0hBMSBo
YXNoIG9mIHRoZSB3aG9sZSBidWZmZXIgKGluY2x1ZGluZyB0eXBlcykuICB0aGlzIGlzIG5vdAor
ICogYW4gb3B0aW1pemVkIG9wZXJhdGlvbi4gIG5vdGUgdGhhdCB0aGUgcmVzdWx0IGlzIHBsYWNl
ZCBpbiB0aGUKKyAqIHVpbnQzMl90KiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYmlnIGVub3VnaCB0
byBob2xkIDUgdWludDMyX3Qncy4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfYnVmZmVyX2NhbGNf
c2hhMSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCAqcmVzdWx0KTsKKworLyogY29tcGFyZSB0d28gYnVmZmVycy4gIHR3byBi
dWZmZXJzIGFyZSBlcXVhbCBpZiB0aGV5IGNvbnRhaW4gZXhhY3RseQorICogdGhlIHNhbWUgcGF5
bG9hZCBieXRlcywgaWYgdGhlaXIgdHlwZXMgYXJlIHRoZSBzYW1lIGFjY29yZGluZyB0bworICog
dHNmX3R5cGVfY29tcGFyZSgpLCBhbmQgaWYgdGhlaXIgdHlwZSB0YWJsZXMgYXJlIHRoZSBzYW1l
IGFjY29yZGluZworICogdG8gdHNmX3R5cGVfaW5fbWFwX2NvbXBhcmUoKS4gKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfYnVmZmVyX2NvbXBhcmUodHNmX2J1ZmZlcl90ICphLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmIpOworCisvKiBnaXZlbiBhIGJ1
ZmZlciwgZ2l2ZXMgeW91IHRoZSB0eXBlLiAqLwordHNmX3R5cGVfdCogICAgIHRzZl9idWZmZXJf
Z2V0X3R5cGUodHNmX2J1ZmZlcl90ICpidWYpOworCisvKiBnaXZlbiBhIGJ1ZmZlciwgdGVsbHMg
eW91IGlmIGl0cyB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIGFub3RoZXIgdHlwZSAqLwordHNmX2Jv
b2xfdCAgICAgIHRzZl9idWZmZXJfaW5zdGFuY2VvZih0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSk7CisKKy8q
IGdpdmVuIGEgYnVmZmVyLCBnaXZlcyB5b3UgdGhlIHNoYXJlZCB0eXBlcy4gKi8KK3RzZl90eXBl
X2luX21hcF90KiB0c2ZfYnVmZmVyX2dldF9zaGFyZWRfdHlwZXModHNmX2J1ZmZlcl90ICpidWYp
OworCisvKiBnZXQgdGhlIHNpemUgb2YgYSBiaXR2ZWN0b3IgdGhhdCBoYXMgc29tZSBudW1iZXIg
b2YgYml0cy4gKi8KK3N0YXRpYyBUU0ZfaW5saW5lCitzaXplX3QgICAgICAgICAgdHNmX3NpemVv
Zl9iaXR2ZWN0b3IodWludDMyX3QgbnVtX2JpdHMpIHsKKyAgICByZXR1cm4gKG51bV9iaXRzICsg
NykgPj4gMzsKK30KKworLyogc2V0IGEgYml0IGluIGEgYml0dmVjdG9yLiAqLworc3RhdGljIFRT
Rl9pbmxpbmUKK3ZvaWQgICAgICAgICAgICB0c2ZfYml0dmVjdG9yX3NldCh0c2ZfbmF0aXZlX2Jp
dHZlY3Rvcl90ICpiaXR2ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGJpdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
Ym9vbF90IHZhbHVlKSB7CisgICAgdWludDhfdCAqYnl0ZSA9IGJpdHZlY3Rvci0+Yml0cyArIChi
aXRfaW5kZXggPj4gMyk7CisgICAgdWludDhfdCBiaXRfbWFzayA9IDEgPDwgKGJpdF9pbmRleCAm
IDcpOworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgKmJ5dGUgfD0gYml0X21hc2s7CisgICAgZWxz
ZQorICAgICAgICAqYnl0ZSAmPSB+Yml0X21hc2s7Cit9CisKKy8qIGdldCBhIGJpdCBmcm9tIGEg
Yml0dmVjdG9yLiAqLworc3RhdGljIFRTRl9pbmxpbmUKK3RzZl9ib29sX3QgICAgICB0c2ZfYml0
dmVjdG9yX2dldCh0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90ICpiaXR2ZWN0b3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJpdF9pbmRleCkgeworICAgIHVpbnQ4X3Qg
KmJ5dGUgPSBiaXR2ZWN0b3ItPmJpdHMgKyAoYml0X2luZGV4ID4+IDMpOworICAgIHVpbnQ4X3Qg
Yml0X21hc2sgPSAxIDw8IChiaXRfaW5kZXggJiA3KTsKKyAgICByZXR1cm4gKCpieXRlICYgYml0
X21hc2spICE9IDA7Cit9CisKKy8qIGNyZWF0ZSBhbiBzZXJpYWwgaW5wdXQgbWFuYWdlci4gIGEg
c2VyaWFsIGlucHV0IG1hbmFnZXIgZXhwZWN0cyB6ZXJvIG9yCisgKiBtb3JlIHR5cGUgaGVhZGVy
cyB0byBwcmVjZWRlIGRhdGEuICBpbnN0YW5jZXMgb2YgdGhpcyB0eXBlIGFyZSBub3QKKyAqIHRo
cmVhZC1zYWZlOyBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIGZyb20gbXVsdGlwbGUgdGhyZWFkcyB0
aGVuIHlvdSBuZWVkCisgKiB0byB1c2UgbG9ja2luZyBhcm91bmQgYWxsIGNhbGxzLiAqLwordHNm
X3NlcmlhbF9pbl9tYW5fdCogdHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKHRzZl9yZWFkZXJfdCBy
ZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl9saW1pdHNfdCAqbGltaXRzKTsKKworLyogZGVzdHJveSBhbiBpbnB1dCBtYW5hZ2VyLiAqLwor
dm9pZCAgICAgICAgICAgIHRzZl9zZXJpYWxfaW5fbWFuX2Rlc3Ryb3kodHNmX3NlcmlhbF9pbl9t
YW5fdCAqaW5fbWFuKTsKKworLyogZm9yY2UgdGhlIHNlcmlhbCBpbnB1dCBtYW5hZ2VyIHRvIHJl
YWQgYSBUU0ZfU1BfQ19SRVNFVF9UWVBFUyBjb21tYW5kLgorICogaWYgdGhpcyBjb21tYW5kIGlz
IG5vdCB3aGF0IGlzIGZvdW5kIGluIHRoZSBpbnB1dCBzdHJlYW0sIGFuIGVycm9yIGlzCisgKiBy
ZXBvcnRlZC4gIHByb3ZpZGVkIHRoYXQgYSBUU0ZfU1BfQ19SRVNFVF9UWVBFUyBjb21tYW5kIGlz
IGluIGZhY3QKKyAqIGZvdW5kLCB0aGUgdHlwZSBtYXBwaW5nIHdpbGwgYmUgcmVzZXQuCisgKgor
ICogd2lsbCBzZXQgZXJyb3IgdG8gVFNGX0VfVU5FWFBFQ1RFRF9FT0YgaWYgdGhlcmUgd2VyZW4n
dCBlbm91Z2ggYnl0ZXMgZm9yCisgKiBhIFRTRl9TUF9DX1JFU0VUX1RZUEVTIGNvbW1hbmQuCisg
KgorICogd2lsbCBzZXQgZXJyb3IgdG8gVFNGX0VfUEFSU0VfRVJST1IgaWYgdGhlIGJ5dGVzIHJl
YWQgd2VyZSBub3QgdGhlCisgKiBjdXJyZWN0IG9uZXMgKGVmZmVjdGl2ZWx5LCB0aGlzIGlzIGNv
bXBsYWluaW5nIG9mIGEgYmFkIG1hZ2ljIG51bWJlcikuKi8KK3RzZl9ib29sX3QgICAgICB0c2Zf
c2VyaWFsX2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzKHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21h
bik7CisKKy8qIHRha2UgdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvciBhbmQgcmVhZCB0aGUgcmVz
ZXQgdHlwZXMgY29tbWFuZCBmcm9tCisgKiBpdC4gIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMg
YSByZXNldCB0eXBlcyBjb21tYW5kIGFuZCBmYWxzZSBvbgorICogZXJyb3IuICByZXR1cm5zIHRo
ZSBzYW1lIGVycm9ycyBhcyB0c2Zfc2VyaWFsX2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzKCkKKyAq
IHVubGVzcyBzb21ldGhpbmcgcmVhbGx5IHdlaXJkIGhhcHBlbnMuICovCit0c2ZfYm9vbF90ICAg
ICAgdHNmX3NlcmlhbF9pbl9tYW5fcmVhZF9yZXNldF90eXBlc19mcm9tX2ZkKGludCBmZCk7CisK
Ky8qIHRha2UgdGhlIGdpdmVuIGZpbGUsIG9wZW4gaXQsIGFuZCBpbnZva2UKKyAqIHRzZl9zZXJp
YWxfaW5fbWFuX3JlYWRfcmVzZXRfdHlwZXNfZnJvbV9mZCBvbiBpdC4gKi8KK3RzZl9ib29sX3Qg
ICAgICB0c2Zfc2VyaWFsX2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzX2Zyb21fZmlsZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZmlsZW5hbWUpOworCisvKiByZWdpc3RlciBhIGNhbGxiYWNrIHRoYXQgd2lsbCBnZXQg
Y2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGlucHV0IG1hbmFnZXIKKyAqIGVuY291bnRlcnMgYSBuZXcg
dHlwZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2Zfc2VyaWFsX2luX21hbl9yZWdpc3Rlcl90eXBl
X2NiYWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHNmX3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfY2JhY2tfdCBjYmFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisKKy8qIHVu
cmVnaXN0ZXIgYWxsIHR5cGUgY2FsbGJhY2tzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIGZ1bmN0aW9u
IHBvaW50ZXIKKyAqIGFuZCB2b2lkKiBhcmd1bWVudC4gKi8KK3VpbnQzMl90ICAgICAgICB0c2Zf
c2VyaWFsX2luX21hbl91bnJlZ2lzdGVyX3R5cGVfY2JhY2soCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zfc2VyaWFsX2luX21hbl90ICppbl9tYW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV9jYmFja190IGNiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqYXJnKTsKKworLyogcmVhZCBkYXRhIHVzaW5nIHRoZSBzZXJpYWwgaW5w
dXQgbWFuYWdlci4gKi8KK3RzZl9idWZmZXJfdCogICB0c2Zfc2VyaWFsX2luX21hbl9yZWFkKHRz
Zl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbik7CisKKy8qIGdldCB0aGUgc3RhdGUgb2YgdGhlIGlu
cHV0IG1hbmFnZXIgcmlnaHQgbm93LiAgaWYgeW91IGFyZSB1c2luZyByYW5kb20KKyAqIGFjY2Vz
cyBmaWxlcyBhbmQgeW91IHdpc2ggdG8gc2VlayBiYWNrIHRvIHRoZSBwb3NpdGlvbiB5b3UncmUg
aW4gbm93LAorICogeW91IGFsc28gbmVlZCB0byBzYXZlIHRoZSBzdGF0ZSBvZiB0aGUgaW5wdXQg
bWFuYWdlciBhbmQgcmVzdG9yZSBpdAorICogcmlnaHQgYWZ0ZXIgdGhlIHNlZWsuICovCit0c2Zf
c2VyaWFsX2luX21hbl9zdGF0ZV90IHRzZl9zZXJpYWxfaW5fbWFuX2dldF9zdGF0ZSh0c2Zfc2Vy
aWFsX2luX21hbl90ICppbl9tYW4pOworCisvKiBzZXQgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCBt
YW5hZ2VyLiAgZG8gdGhpcyB3aGVuZXZlciB5b3Ugc2VlayB0aGUgZmlsZQorICogdGhhdCB0aGUg
c2VyaWFsIGlucHV0IG1hbmFnZXIgaXMgYmVpbmcgdXNlZCB0byByZWFkLiAqLwordm9pZCAgICAg
ICAgICAgIHRzZl9zZXJpYWxfaW5fbWFuX3NldF9zdGF0ZSh0c2Zfc2VyaWFsX2luX21hbl90ICpp
bl9tYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9z
ZXJpYWxfaW5fbWFuX3N0YXRlX3Qgc3RhdGUpOworCisvKiBjcmVhdGUgYW4gb3V0cHV0IG1hbmFn
ZXIuICBpbnN0YW5jZXMgb2YgdGhpcyB0eXBlIGFyZSBub3QgdGhyZWFkLXNhZmU7IGlmCisgKiB5
b3Ugd2FudCB0byB1c2Ugb25lIGZyb20gbXVsdGlwbGUgdGhyZWFkcyB0aGVuIHlvdSBuZWVkIHRv
IGxvY2sgYXJvdW5kCisgKiBjYWxscy4gKi8KK3RzZl9zZXJpYWxfb3V0X21hbl90KiB0c2Zfc2Vy
aWFsX291dF9tYW5fY3JlYXRlKHRzZl93cml0ZXJfdCB3cml0ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisvKiBkZXN0cm95
IGFuIG91dHB1dCBtYW5hZ2VyLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9zZXJpYWxfb3V0X21h
bl9kZXN0cm95KHRzZl9zZXJpYWxfb3V0X21hbl90ICpvdXRfbWFuKTsKKwordHNmX2Jvb2xfdCAg
ICAgIHRzZl9zZXJpYWxfb3V0X21hbl9yZXNldF90eXBlcyh0c2Zfc2VyaWFsX291dF9tYW5fdCAq
b3V0X21hbik7CisKKy8qIHdyaXRlIGRhdGEgdXNpbmcgYW4gb3V0cHV0IG1hbmFnZXIuICB0aGlz
IHdpbGwgZG8gZXJyb3IKKyAqIHByb3BhZ2F0aW9uIG9uICpidWYuICovCit0c2ZfYm9vbF90ICAg
ICAgdHNmX3NlcmlhbF9vdXRfbWFuX3dyaXRlKHRzZl9zZXJpYWxfb3V0X21hbl90ICpvdXRfbWFu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3Qg
KmJ1Zik7CisKKy8qIGNyZWF0ZSBhIHRzZiBkYXRhIHN0cnVjdHVyZSB1c2luZyB0aGUgZ2l2ZW4g
dHlwZS4gIHRoZSB0eXBlCisgKiBnZXRzIGR1cHBlZCBmb3IgdGhlIHJldHVybmVkIHN0cnVjdHVy
ZS4gIHRoaXMgd2lsbAorICogZG8gZXJyb3IgcHJvcGFnYXRpb24gb24gKnR5cGUuCisgKgorICog
Tm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5ldmVyIGJlIHVzZWQgdG8gY3JlYXRlCisg
KiBwcmltaXRpdmVzLCBiaXRzLCB2b2lkcywgb3Igc3RyaW5ncy4gKi8KK3RzZl9yZWZsZWN0X3Qq
ICB0c2ZfcmVmbGVjdF9jcmVhdGUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGNyZWF0ZSBhIHRz
ZiBkYXRhIHN0cnVjdHVyZSB0byBob2xkIGEgdmFsdWUgb2YgdGhlIGdpdmVuIHR5cGUuICovCit0
c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX2ludDhfdChpbnQ4X3QgdmFsdWUpOwor
dHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV91aW50OF90KHVpbnQ4X3QgdmFsdWUp
OwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV9pbnQxNl90KGludDE2X3QgdmFs
dWUpOwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV91aW50MTZfdCh1aW50MTZf
dCB2YWx1ZSk7Cit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX2ludDMyX3QoaW50
MzJfdCB2YWx1ZSk7Cit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX3VpbnQzMl90
KHVpbnQzMl90IHZhbHVlKTsKK3RzZl9yZWZsZWN0X3QqICB0c2ZfcmVmbGVjdF9jcmVhdGVfaW50
NjRfdChpbnQ2NF90IHZhbHVlKTsKK3RzZl9yZWZsZWN0X3QqICB0c2ZfcmVmbGVjdF9jcmVhdGVf
dWludDY0X3QodWludDY0X3QgdmFsdWUpOwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2Ny
ZWF0ZV9pbnRlZ2VyKHRzZl9pbnRlZ2VyX3QgdmFsdWUpOwordHNmX3JlZmxlY3RfdCogIHRzZl9y
ZWZsZWN0X2NyZWF0ZV9sb25nKHRzZl9sb25nX3QgdmFsdWUpOwordHNmX3JlZmxlY3RfdCogIHRz
Zl9yZWZsZWN0X2NyZWF0ZV9mbG9hdChmbG9hdCB2YWx1ZSk7Cit0c2ZfcmVmbGVjdF90KiAgdHNm
X3JlZmxlY3RfY3JlYXRlX2RvdWJsZShkb3VibGUgdmFsdWUpOworCisvKiBtYWNybyB0aGF0IGFs
bG93cyBvbmUgdG8gcGFyYW1ldGVyaXplIHRoZSBhYm92ZS4gKi8KKyNkZWZpbmUgICAgICAgICB0
c2ZfcmVmbGVjdF9jcmVhdGVfcHJpbWl0aXZlKHR5cGUsdmFsdWUpIFwKKyAgICAgICAgICAgICAg
ICAgICAgKHRzZl9yZWZsZWN0X2NyZWF0ZV8jI3R5cGUodmFsdWUpKQorCisvKiBjcmVhdGUgYSB0
c2YgZGF0YSBzdHJ1Y3QgdG8gaG9sZCBhIGJpdCB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gKi8KK3Rz
Zl9yZWZsZWN0X3QqICB0c2ZfcmVmbGVjdF9jcmVhdGVfYml0KHRzZl9ib29sX3QgdmFsdWUpOwor
CisvKiBjcmVhdGUgYSAndm9pZCcgZGF0YSBzdHJ1Y3R1cmU7IHRoaXMgaXMganVzdCBhIHNpbmds
ZXRvbiBmb3IKKyAqIHRoZSB2b2lkIHR5cGUuICB5b3UnbGwgcHJvYmFibHkgb25seSBoYXZlIHRv
IGRlYWwgd2l0aCB0aGlzIGlmCisgKiB5b3UgdXNlIHRoZSBjaG9pY2UgdHlwZSBmb3IgZW51bWVy
YXRpb25zLiAqLwordHNmX3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV92b2lkKHZvaWQp
OworCisvKiBjcmVhdGUgYSBzdHJpbmcuICB0aGUgYWN0dWFsIGNoYXIqIGlzIGR1cGxpY2F0ZWQu
ICovCit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxlY3RfY3JlYXRlX3N0cmluZyhjb25zdCBjaGFy
ICpzdHIpOworCisvKiBjcmVhdGUgYW4gJ2FueScuICB0aGlzIGlzIGEgZHluYW1pYyBob2xkZXIg
Zm9yIGRhbW4tbmVhcgorICogYW55dGhpbmcuICB0aGUgYnVmZmVyIGJlY29tZXMgb3duZWQgYnkg
dGhlIHJlZmxlY3Qgb2JqZWN0LAorICogc28gdGhhdCBldmVuIGlmIHRoaXMgY3JlYXRpb24gZmFp
bHMsIHRoZSBidWZmZXIgaXMgbm8gbG9uZ2VyCisgKiBhdmFpbGFibGUgdG8geW91LiAqLwordHNm
X3JlZmxlY3RfdCogIHRzZl9yZWZsZWN0X2NyZWF0ZV9hbnkodHNmX2J1ZmZlcl90ICpidWYpOwor
CisvKiBjbG9uZSBhIGRhdGEgc3RydWN0dXJlICovCit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxl
Y3RfY2xvbmUodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGRlc3Ryb3kgYSBkYXRhIHN0cnVj
dHVyZSAqLwordm9pZCAgICAgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3kodHNmX3JlZmxlY3Rf
dCAqZGF0YSk7CisKKy8qIHByb2R1Y2UgYSBidWZmZXIgZnJvbSBkYXRhICovCit0c2ZfYnVmZmVy
X3QqICAgdHNmX3JlZmxlY3RfbWFrZV9idWZmZXIodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8q
IHByb2R1Y2UgZGF0YSBmcm9tIGEgYnVmZmVyICovCit0c2ZfcmVmbGVjdF90KiAgdHNmX3JlZmxl
Y3RfZnJvbV9idWZmZXIodHNmX2J1ZmZlcl90ICpidWYpOworCit0c2ZfdHlwZV90KiAgICAgdHNm
X3JlZmxlY3RfZ2V0X3R5cGUodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKK3RzZl90eXBlX2tpbmRf
dCB0c2ZfcmVmbGVjdF9nZXRfa2luZF9jb2RlKHRzZl9yZWZsZWN0X3QgKmRhdGEpOworCisvKiBz
ZXQgYSBzdHJ1Y3R1cmUgZWxlbWVudC4gIHRoaXMgd2lsbCBkbyBlcnJvciBwcm9wYWdhdGlvbiBv
bgorICogKmVsZV9kYXRhLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9zdHJ1Y3RfcmVmbGVjdF9z
ZXRfZWxlbWVudCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICplbGVfZGF0YSk7
CisKKy8qIHNldCBhIHN0cnVjdHVyZSBlbGVtZW50IGJ5IGluZGV4LiAgdGhpcyB3aWxsIGRvIGVy
cm9yIHByb3BhZ2F0aW9uCisgICBvbiAqZWxlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9zdHJ1
Y3RfcmVmbGVjdF9zZXRfZWxlbWVudF9ieV9pbmRleCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlKTsKKworLyogZ2V0IGEgc3RydWN0dXJlIGVs
ZW1lbnQgKi8KK3RzZl9yZWZsZWN0X3QqICB0c2Zfc3RydWN0X3JlZmxlY3RfZ2V0X2VsZW1lbnQo
dHNmX3JlZmxlY3RfdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CisKKy8qIGdldCBhIHN0cnVjdHVyZSBlbGVt
ZW50IGJ5IGluZGV4ICovCit0c2ZfcmVmbGVjdF90KiAgdHNmX3N0cnVjdF9yZWZsZWN0X2dldF9l
bGVtZW50X2J5X2luZGV4KHRzZl9yZWZsZWN0X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KTsKKwor
LyogZ2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHN0cnVjdHVyZSAqLwordWludDMy
X3QgICAgICAgIHRzZl9zdHJ1Y3RfcmVmbGVjdF9nZXRfbnVtX2VsZW1lbnRzKHRzZl9yZWZsZWN0
X3QgKmRhdGEpOworCisvKiBzZXQgdGhlIGNob2ljZS4gIGFzIGEgY29udmVuaWVuY2Ugc2hvcnRj
dXQsIGlmIGNob2ljZSBpcyBOVUxMLCB0aGlzIGlzCisgICBlcXVpdmFsZW50IHRvIGNhbGxpbmcg
dHNmX2Nob2ljZV9yZWZsZWN0X3NldF91bmtub3duKCkuICB0aGlzIG1lYW5zCisgICB0aGF0IGVs
ZV9kYXRhIGlzIGlnbm9yZWQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV9yZWZsZWN0
X3NldCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqY2hvaWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlX2RhdGEpOworCisvKiBzZXQgdGhlIGNob2lj
ZSBieSBpbmRleC4gIGFzIGEgY29udmVuaWVuY2Ugc2hvcnRjdXQsIGlmIGNob2ljZSBpcworICAg
VUlOVDMyX01BWCwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAgIHRzZl9jaG9pY2Vf
cmVmbGVjdF9zZXRfdW5rbm93bigpLiAgdGhpcyBtZWFucyB0aGF0IGVsZV9kYXRhIGlzIGlnbm9y
ZWQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV9yZWZsZWN0X3NldF9ieV9pbmRleCh0
c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICplbGVfZGF0YSk7CisKKy8qIHNldCB0
aGUgY2hvaWNlIHRvIHVua25vd24uICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2Nob2ljZV9yZWZs
ZWN0X3NldF91bmtub3duKHRzZl9yZWZsZWN0X3QgKmRhdGEpOworCisvKiB0ZWxscyB5b3UgdGhl
IGNob2ljZSBpbmRleCAqLwordWludDMyX3QgICAgICAgIHRzZl9jaG9pY2VfcmVmbGVjdF9nZXRf
aW5kZXgodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIHRlbGxzIHlvdSBpZiB0aGUgY2hvaWNl
IGlzIGtub3cgKG5vdCB1bmtub3duKSAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9jaG9pY2VfcmVm
bGVjdF9pc19rbm93bih0c2ZfcmVmbGVjdF90ICpkYXRhKTsKKworLyogZ2V0IHRoZSBjaG9pY2Uu
ICBpZiB1bmtub3duLCB3aWxsIHJldHVybiBOVUxMLiAqLworY29uc3QgY2hhciogICAgIHRzZl9j
aG9pY2VfcmVmbGVjdF9nZXRfY2hvaWNlKHRzZl9yZWZsZWN0X3QgKmRhdGEpOworCisvKiBnZXQg
dGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaG9pY2UuICBpZiB1bmtub3duLCB3aWxsCisg
KiByZXR1cm4gTlVMTC4gKi8KK3RzZl9yZWZsZWN0X3QqICB0c2ZfY2hvaWNlX3JlZmxlY3RfZ2V0
X2RhdGEodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGFwcGVuZCBhbiBlbGVtZW50IHRvIHRo
ZSBhcnJheS4gIHRoaXMgd2lsbCBkbyBlcnJvciBwcm9wYWdhdGlvbgorICogb24gKmVsZV9kYXRh
LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9hcnJheV9yZWZsZWN0X2FwcGVuZCh0c2ZfcmVmbGVj
dF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
cmVmbGVjdF90ICplbGVfZGF0YSk7CisKKy8qIGdldCBhbiBhcnJheSBlbGVtZW50ICovCit0c2Zf
cmVmbGVjdF90KiAgdHNmX2FycmF5X3JlZmxlY3RfZ2V0X2VsZW1lbnQodHNmX3JlZmxlY3RfdCAq
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBpbmRleCk7CisKKy8qIGdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJh
eSAqLwordWludDMyX3QgICAgICAgIHRzZl9hcnJheV9yZWZsZWN0X2dldF9udW1fZWxlbWVudHMo
dHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGdldCB0aGUgcHJpbWl0aXZlcy4uLiAqLworaW50
OF90ICAgICAgICAgIHRzZl9pbnQ4X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7
Cit1aW50OF90ICAgICAgICAgdHNmX3VpbnQ4X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAq
ZGF0YSk7CitpbnQxNl90ICAgICAgICAgdHNmX2ludDE2X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxl
Y3RfdCAqZGF0YSk7Cit1aW50MTZfdCAgICAgICAgdHNmX3VpbnQxNl90X3JlZmxlY3RfZ2V0KHRz
Zl9yZWZsZWN0X3QgKmRhdGEpOworaW50MzJfdCAgICAgICAgIHRzZl9pbnQzMl90X3JlZmxlY3Rf
Z2V0KHRzZl9yZWZsZWN0X3QgKmRhdGEpOwordWludDMyX3QgICAgICAgIHRzZl91aW50MzJfdF9y
ZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKTsKK2ludDY0X3QgICAgICAgICB0c2ZfaW50
NjRfdF9yZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKTsKK3VpbnQ2NF90ICAgICAgICB0
c2ZfdWludDY0X3RfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7Cit0c2ZfaW50ZWdl
cl90ICAgdHNmX2ludGVnZXJfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7Cit0c2Zf
bG9uZ190ICAgICAgdHNmX2xvbmdfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSk7Citm
bG9hdCAgICAgICAgICAgdHNmX2Zsb2F0X3JlZmxlY3RfZ2V0KHRzZl9yZWZsZWN0X3QgKmRhdGEp
OworZG91YmxlICAgICAgICAgIHRzZl9kb3VibGVfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAq
ZGF0YSk7CisjZGVmaW5lICAgICAgICAgdHNmX3ByaW1pdGl2ZV9yZWZsZWN0X2dldChkYXRhLHR5
cGUpIFwKKyAgICAgICAgICAgICAgICAgICAgKHRzZl8jI3R5cGUjI19yZWZsZWN0X2dldChkYXRh
KSkKKworLyogZ2V0IGEgYml0ICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2JpdF9yZWZsZWN0X2dl
dCh0c2ZfcmVmbGVjdF90ICpkYXRhKTsKKworLyogZ2V0IHRoZSBzdHJpbmcuICovCitjb25zdCBj
aGFyKiAgICAgdHNmX3N0cmluZ19yZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKTsKKwor
LyogZ2V0IHRoZSBidWZmZXIgZnJvbSBhbiBhbnkuICovCit0c2ZfYnVmZmVyX3QqICAgdHNmX2Fu
eV9yZWZsZWN0X2dldF9idWZmZXIodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIHJldHVybnMg
dHNmX3RydWUgaWYgdGhlIGdpdmVuIHR5cGUgaGFzIGEgY29tcGxldGUgc3RydWN0dXJlIG1hcHBp
bmcuIAorICogdGhpcyBkb2VzIG5vdCB0ZWxsIHlvdSBpZiB0aGUgZ2l2ZW4gdHlwZSBoYXMgYSBt
YXBwaW5nIHdpdGhpbiBpdHMKKyAqIHBhcmVudCB0eXBlIC0gaXQgb25seSB0ZWxscyB5b3UgaWYg
dGhlIHR5cGVzIGl0IGNvbnRhaW5zIGhhdmUKKyAqIG1hcHBpbmdzLiAgaGVuY2UsIHRoaXMgYWx3
YXlzIHJldHVybnMgdHNmX3RydWUgZm9yIHR5cGVzIHRoYXQgYXJlIG5vdAorICogY29udGFpbmVy
cy4gIGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0c2ZfZmFsc2UsIHRoZW4gY2FsbGluZyBhbnkg
b2YKKyAqIHRoZSB0c2ZfbmF0aXZlIGZ1bmN0aW9ucyBvbiB0aGlzIHR5cGUgd2lsbCByZXN1bHQg
aW4gdW5wcmVkaWN0YWJsZQorICogYmVoYXZpb3IgKHVubGVzcyBvdGhlcndpc2Ugbm90ZWQpLiAq
LwordHNmX2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfdHlwZV9oYXNfc3RydWN0X21hcHBpbmcodHNm
X3R5cGVfdCAqdHlwZSk7CisKKy8qIGdldCB0aGUgbmF0aXZlIHNpemUgb2YgYSBwYXJ0aWN1bGFy
IHR5cGUgd2l0aGluIGl0cyBwYXJlbnQKKyAqIHN0cnVjdC4gIHRoaXMgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uIHR5cGVzIHRoYXQgaGF2ZSBhIHN0cnVjdAorICogbWFwcGluZy4gKi8KK3NpemVfdCAg
ICAgICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8q
IGdldCBhIGJvdW5kIG9uIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBuYXRpdmUgZGF0YSBzdHJ1Y3R1
cmUgcm9vdGVkIGF0CisgKiB0aGUgZ2l2ZW4gdHlwZS4gd2lsbCByZXR1cm4gVUlOVG1fTUFYIGlm
IHRoZSBib3VuZCBjYW5ub3QgYmUgZGVkdWNlZC4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfbmF0
aXZlX3R5cGVfZ2V0X3RvdGFsX3NpemVfYm91bmRzKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm1p
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqbWF4KTsKKworLyogcmV0dXJucyB0cnVlIGlmIGEgbWVtY3B5KCkgZnJvbSBzb3Vy
Y2UgdG8gZGVzdGluYXRpb24gd2l0aCB0aGUgc291cmNlJ3MKKyAqIHNpemUgd2lsbCBnaXZlIHRo
ZSAnZGVzaXJlZCcgcmVzdWx0LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfdHlwZV9j
YW5fYmxpdCh0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKnNyY190eXBlKTsKKworLyogcmV0dXJucyB0aGUg
b2Zmc2V0IG9mIGEgcGFydGljdWxhciBuYW1lZCB0eXBlIG5vZGUuICovCitzaXplX3QgICAgICAg
ICAgdHNmX25hdGl2ZV9uYW1lZF90eXBlX2dldF9vZmZzZXQodHNmX25hbWVkX3R5cGVfdCAqbm9k
ZSk7CisKKy8qIGdpdmVzIGEgbWFwcGluZyAob2Zmc2V0KSBmb3IgYW4gZWxlbWVudCB3aXRoaW4g
YSBzdHJ1Y3QuICBub3RlCisgKiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHBhcnRpY3VsYXJs
eSBmYXN0LiAgaG93ZXZlciwgeW91IHNob3VsZG4ndAorICogY2FyZSBhYm91dCB0aGUgc3BlZWQg
b2YgdGhpcyBmdW5jdGlvbiBzaW5jZSB5b3Ugc2hvdWxkIG9ubHkgZXZlcgorICogY2FsbCBpdCBv
bmNlIGZvciBlYWNoIHN0cnVjdHVyZSBlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgeW91cgor
ICogcHJvZ3JhbS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX21h
cCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpOworCisvKiBnaXZlcyBhIHNpemUgdG8gYSBzdHJ1
Y3QuICBub3RlIHRoYXQgbGlrZSB0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX21hcCgpLAorICogdGhp
cyBmdW5jdGlvbiBpcyBub3QgcGFydGljdWxhcmx5IGZhc3QuICovCit0c2ZfYm9vbF90ICAgICAg
dHNmX25hdGl2ZV9zdHJ1Y3RfdHlwZV9zZXRfc2l6ZSh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKTsK
KworLyogY3JlYXRlcyBhIHN0cnVjdCBhbmQgc2V0cyBpdHMgbmF0aXZlIHNpemUuIGVxdWl2YWxl
bnQgdG8gY2FsbGluZworICogdHNmX3R5cGVfY3JlYXRlKFRTRl9US19TVFJVQ1QpIGFuZCB0aGVu
IGNhbGxpbmcKKyAqIHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X3NpemUoKS4gKi8KK3RzZl90
eXBlX3QqICAgICB0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX2NyZWF0ZShzaXplX3Qgc2l6ZSk7CisK
Ky8qIGFwcGVuZHMgYSBzdHJ1Y3QgZmllbGQgYW5kIHNldHMgaXRzIG9mZnNldC4gZXF1aXZhbGVu
dCB0byBjYWxsaW5nCisgKiB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kKCkgYW5kIHRoZW4gdHNmX25h
dGl2ZV9zdHJ1Y3RfdHlwZV9tYXAoKS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfbmF0aXZlX3N0
cnVjdF90eXBlX2FwcGVuZCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKmVsZV90eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZz
ZXQpOworCisvKiBzZXRzIHRoZSBjb25zdHJ1Y3RvciBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBq
dXN0IGJlZm9yZSB0aGUgZmllbGRzIG9mCisgKiB0aGUgc3RydWN0IGFyZSBwb3B1bGF0ZWQgZHVy
aW5nIHBhcnNpbmcgb2YgY29weWluZy4gdGhpcyBpcyBhcHByb3ByaWF0ZQorICogZm9yIGluaXRp
YWxpemluZyBvdGhlciBmaWVsZHMgdGhhdCB0aGUgdXNlci1kZWZpbmVkIHN0cnVjdCBtaWdodCBo
YXZlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X2NvbnN0
cnVjdG9yKHRzZl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpjb25zKSh2b2lkKikpOworCisvKiBzZXRz
IHRoZSBkZXN0cnVjdG9yIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIHRoZSBz
dHJ1Y3QgaXMKKyAqIGRlYWxsb2NhdGVkLiBmb3IgcmVnaW9uLWFsbG9jYXRlZCBzdHJ1Y3RzLCB0
aGlzIGdldHMgYWRkZWQgYXMgYSByZWdpb24KKyAqIGRlc3RydWN0aW9uIGNhbGxiYWNrLiAqLwor
dHNmX2Jvb2xfdCAgICAgIHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X3ByZV9kZXN0cnVjdG9y
KHRzZl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwcmVfZGVzdCkodm9pZCopKTsKKworLyogc2V0
cyB0aGUgZGVzdHJ1Y3RvciBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBpbnN0ZWFkIG9mIG5vcm1h
bCBzdHJ1Y3QKKyAqIGRlc3RydWN0aW9uIGluIHRzZl9kZXN0cnVjdG9yLiBzZXR0aW5nIHRoaXMg
bWVhbnMgdGhhdCBkZXN0cm95aW5nIHRoZSBzdHJ1Y3QKKyAqIHVzaW5nIGEgZGVzdHJ1Y3RvciB3
aWxsIG5vdCBjYWxsIHRoZSBwcmVfZGVzdHJ1Y3Rvci4gKi8KK3RzZl9ib29sX3QgICAgICB0c2Zf
bmF0aXZlX3N0cnVjdF90eXBlX3NldF9kZXN0cnVjdG9yKHRzZl90eXBlX3QgKip0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo
KmRlc3QpKHZvaWQqKSk7CisKKy8qIGdldCB0aGUgY29uc3RydWN0b3IgdG8gY2FsbCB3aGVuIHRo
ZSBzdHJ1Y3QgZ2V0cyBhbGxvY2F0ZWQgKi8KK3ZvaWQgKCp0c2ZfbmF0aXZlX3N0cnVjdF90eXBl
X2dldF9jb25zdHJ1Y3Rvcih0c2ZfdHlwZV90ICp0eXBlKSkodm9pZCopOworCisvKiBnZXQgdGhl
IGRlc3RydWN0b3IgdG8gY2FsbCB3aGVuIHRoZSBzdHJ1Y3QgZ2V0cyBkZWFsbG9jYXRlZCAqLwor
dm9pZCAoKnRzZl9uYXRpdmVfc3RydWN0X3R5cGVfZ2V0X3ByZV9kZXN0cnVjdG9yKHRzZl90eXBl
X3QgKnR5cGUpKSh2b2lkKik7CisKKy8qIGdldCB0aGUgZGVzdHJ1Y3RvciB0byBjYWxsIHdoZW4g
dGhlIHN0cnVjdCBnZXRzIGRlYWxsb2NhdGVkICovCit2b2lkICgqdHNmX25hdGl2ZV9zdHJ1Y3Rf
dHlwZV9nZXRfZGVzdHJ1Y3Rvcih0c2ZfdHlwZV90ICp0eXBlKSkodm9pZCopOworCisvKiBzZXQg
YWxsIG9mIHRoZSBvZmZzZXRzIGFuZCB0aGluZ3MgcmVxdWlyZWQgYnkgY2hvaWNlICovCit0c2Zf
Ym9vbF90ICAgICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9tYXAodHNmX3R5cGVfdCAqKnR5cGUs
CisJCQkJCSAgIHRzZl9ib29sX3QgaW5fcGxhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9vZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpOworCisvKiBjcmVh
dGVzIGEgY2hvaWNlIHR5cGUgYW5kIHNldHMgYWxsIG9mIGl0cyBvZmZzZXRzLiAqLwordHNmX3R5
cGVfdCogICAgIHRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfY3JlYXRlKHRzZl9ib29sX3QgaW5fcGxh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGF0YV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpOworCisvKiBpcyB0aGUgY2hvaWNlIG1hcHBpbmcg
aW4gcGxhY2U/ICovCit0c2ZfYm9vbF90ICAgICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19p
bl9wbGFjZSh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogcmV0cmlldmUgdGhlIGRhdGEgb2Zmc2V0
ICovCitzaXplX3QgICAgICAgICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9nZXRfZGF0YV9vZmZz
ZXQodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHJldHJpZXZlIHRoZSB2YWx1ZSBvZmZzZXQgKi8K
K3NpemVfdCAgICAgICAgICB0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2dldF92YWx1ZV9vZmZzZXQo
dHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIHJldHJpZXZlIHRoZSBzaXplICovCitzaXplX3QgICAg
ICAgICAgdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9nZXRfc2l6ZSh0c2ZfdHlwZV90ICp0eXBlKTsK
KworLyogYXV0b21hdGljYWxseSBwcm9kdWNlcyBzb21lIHNvcnQgb2YgbWFwcGluZy4gIHlvdSBw
cm9iYWJseSBkb24ndCB3YW50CisgKiB0byB1c2UgdGhpcyBtZXRob2QsIHNpbmNlIHlvdSBnZXQg
bm8gZ3VhcmFudGVlIHRoYXQgdGhpcyB3aWxsIG1hcCB0bworICogYW55IG9mIHlvdXIgc3RydWN0
dXJlcy4gIHRoaXMgbWV0aG9kJ3MgbWFpbiBpbnRlbnQgaXMgdG8gYWlkIGluIHRoZQorICogd3Jp
dGluZyBvZiByZWdyZXNzaW9uIHRlc3RzLgorICoKKyAqIGlmIGRvX2FsaWduIGlzIHRzZl90cnVl
LCBlYWNoIGVsZW1lbnQgd2lsbCBiZSBhbGlnbmVkIGFjY29yZGluZyB0bworICogdGhlIGRldGVj
dGVkIG5hdGl2ZSBhbGlnbm1lbnQgKHRoZSBhbGlnbm1lbnQgbmVjZXNzYXJ5IGZvciB0aGUgbGFy
Z2VzdAorICogZGF0YSB0eXBlLCB3aGljaCBpcyB1c3VhbGx5IGRldGVybWluZWQgYnkgZWl0aGVy
IHBvaW50ZXJzIG9yIGRvdWJsZXMpLgorICoKKyAqIGlmIGRvX2FsaWduIGlzIHRzZl9mYWxzZSwg
bm8gYWxpZ25tZW50IGd1YXJhbnRlZSBpcyBtYWRlLiAgeW91IGhhdmUKKyAqIHRvIGJlIHF1aXRl
IGNhcmVmdWwgd2hlbiB1c2luZyB0aGlzIG9wdGlvbiwgYXMgaXQgbWlnaHQgY2F1c2UgdGhlCisg
KiBHUEMgcHJvZ3JhbXMgZ2VuZXJhdGVkIGZvciB0aGlzIHR5cGUgdG8gY3Jhc2guICovCit0c2Zf
Ym9vbF90ICAgICAgdHNmX25hdGl2ZV90eXBlX3Byb2R1Y2Vfc29tZV9tYXBwaW5nKHRzZl90eXBl
X3QgKip0eXBlLAorCQkJCQkJICAgICB0c2ZfYm9vbF90IGRvX2FsaWduKTsKKworLyogZ2l2ZW4g
YSB0eXBlIHRoYXQgaGFzIGNvbXBsZXRlIHN0cnVjdCBtYXBwaW5nLCBwcm9kdWNlIGEgZ2VuZXJh
dG9yCisgKiB0aGF0IGNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgdHNmX2J1ZmZlcl90IG9iamVjdHMg
ZnJvbSBwb2ludGVycworICogdG8gdGhlIHN0cnVjdC4gKi8KK3RzZl9nZW5ydHJfdCogICB0c2Zf
Z2VuZXJhdG9yX2NyZWF0ZSh0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogZ2VuZXJhdGUgYSBidWZm
ZXIgdXNpbmcgc29tZSBkYXRhIGFuZCBhIGdlbmVyYXRvci4gKi8KK3RzZl9idWZmZXJfdCogICB0
c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKHRzZl9nZW5ydHJfdCAqZ2VuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CisKKy8qIGdlbmVyYXRlIGEgYnVm
ZmVyIGluIGEgcmVnaW9uIHVzaW5nIHNvbWUgZGF0YSBhbmQgYSBnZW5lcmF0b3IuICovCit0c2Zf
YnVmZmVyX3QqICAgdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbih0c2ZfZ2VucnRyX3QgKmdlbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24pOwor
CisvKiBkZXN0cm95IHRoZSBnZW5lcmF0b3IuICovCit2b2lkICAgICAgICAgICAgdHNmX2dlbmVy
YXRvcl9kZXN0cm95KHRzZl9nZW5ydHJfdCAqZ2VuKTsKKworLyogZ2l2ZW4gYSB0eXBlIHRoYXQg
aGFzIGEgY29tcGxldGUgc3RydWN0IG1hcHBpbmcsIHByb2R1Y2UgYSBwYXJzZXIKKyAqIHRoYXQg
Y2FuIGJlIHVzZWQgdG8gcmVhZCB0c2ZfYnVmZmVyX3Qgb2JqZWN0cyBhbmQgcHJvZHVjZSBkYXRh
CisgKiB0aGF0IGhhcyB0aGUgc3RydWN0dXJlIHlvdSBzcGVjaWZpZWQgaW4gdGhlIHN0cnVjdCBt
YXBwaW5nLiAqLwordHNmX3BhcnNlcl90KiAgIHRzZl9wYXJzZXJfY3JlYXRlKHRzZl90eXBlX3Qg
KnR5cGUpOworCisvKiBwYXJzZSBhIGJ1ZmZlciBhbmQgZ2VuZXJhdGUgZGF0YSBhY2NvcmRpbmcg
dG8gdGhlIHN0cnVjdCBtYXBwaW5nCisgKiBpbiB0aGUgdHlwZSB5b3UgZ2F2ZSB0byB0c2ZfcGFy
c2VyX2NyZWF0ZSgpLgorICoKKyAqIHN0dWZmIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiBj
YW4gYmUgZnJlZWQgdXNpbmcKKyAqIHRzZl9yZWdpb25fZnJlZSgpIChzZWUgdHNmX3JlZ2lvbi5o
KS4gKi8KK3ZvaWQqICAgICAgICAgICB0c2ZfcGFyc2VyX3BhcnNlKHRzZl9wYXJzZXJfdCAqcGFy
c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZm
ZXIpOworCisvKiBwYXJzZSBhIGJ1ZmZlciBhbmQgZ2VuZXJhdGUgZGF0YSBhY2NvcmRpbmcgdG8g
dGhlIHN0cnVjdCBtYXBwaW5nCisgKiBpbiB0aGUgdHlwZSB5b3UgZ2F2ZSB0byB0c2ZfcGFyc2Vy
X2NyZWF0ZSgpLiAgdGhlIGRhdGEgaXMKKyAqIGFsbG9jYXRlZCBpbiB0aGUgZ2l2ZW4gcmVnaW9u
IGluc3RlYWQgb2YgaGF2aW5nIGEgbmV3IHJlZ2lvbgorICogY3JlYXRlZC4gKi8KK3ZvaWQqICAg
ICAgICAgICB0c2ZfcGFyc2VyX3BhcnNlX2luKHRzZl9wYXJzZXJfdCAqcGFyc2VyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZWdpb24pOworCisvKiBwYXJz
ZSBkaXJlY3RseSBpbnRvIGFuIGluc3RhbmNlIG9mIHRoZSBleHBlY3RlZCB0eXBlIHVzaW5nIHRo
ZSBnaXZlbgorICogcmVnaW9uLiB5b3UgY2FuIHBhc3MgTlVMTCBmb3IgdGhlIHJlZ2lvbiBpZiB5
b3Ugd2FudCB0byB1c2UgbWFsbG9jIGZvcgorICogYWxsIGFsbG9jYXRpb25zLiAqLwordHNmX2Jv
b2xfdCAgICAgIHRzZl9wYXJzZXJfcGFyc2VfaW50byh0c2ZfcGFyc2VyX3QgKnBhcnNlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlc3VsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKTsKKworLyog
ZGVzdHJveSBhIHBhcnNlci4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfcGFyc2VyX2Rlc3Ryb3ko
dHNmX3BhcnNlcl90ICpwYXJzZXIpOworCisvKiBnZXQgdGhlIG51bWJlciBvZiBncGMgY29kZXMg
dGhhdCB0aGUgcGFyc2VyIGlzIHVzaW5nLiAgdGhpcyBpcyBhCisgKiBtZWFzdXJlIG9mIHRoZSBw
YXJzZXIncyBtZW1vcnkgZWZmaWNpZW5jeS4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfcGFyc2Vy
X251bV9jb2Rlcyh0c2ZfcGFyc2VyX3QgKnBhcnNlcik7CisKKy8qIGNyZWF0ZSBhIGNvcGllciBn
aXZlbiBhIGRlc3RpbmF0aW9uIHR5cGUgYW5kIGEgc291cmNlIHR5cGUuICBpZiB0aGUKKyAqIHNv
dXJjZSBpcyBub3QgaW5zdGFuY2VvZiB0aGUgZGVzdGluYXRpb24sIHlvdSB3aWxsIGdldCBhbiBl
cnJvci4gKi8KK3RzZl9jb3BpZXJfdCogICB0c2ZfY29waWVyX2NyZWF0ZSh0c2ZfdHlwZV90ICpk
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKnNyYyk7
CisKKy8qIGRlc3Ryb3kgdGhlIGNvcGllci4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfY29waWVy
X2Rlc3Ryb3kodHNmX2NvcGllcl90ICpjb3BpZXIpOworCisvKiBjbG9uZSB0aGUgc291cmNlIGRh
dGEsIHdoaWNoIGhhcyB0aGUgc291cmNlIHR5cGUsIGFuZCBwcm9kdWNlIGFuCisgKiBvYmplY3Qg
b2YgdGhlIGRlc3RpbmF0aW9uIHR5cGUuICB0aGUgb2JqZWN0IHJldHVybmVkIGNhbiBiZQorICog
ZnJlZWQgd2l0aCB0c2ZfcmVnaW9uX2ZyZWUoKS4gKi8KK3ZvaWQqICAgICAgICAgICB0c2ZfY29w
aWVyX2Nsb25lKHRzZl9jb3BpZXJfdCAqY29waWVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqc3JjKTsKKworLyogY2xvbmUgdGhlIHNvdXJjZSBkYXRhLCB3aGljaCBo
YXMgdGhlIHNvdXJjZSB0eXBlLCBhbmQgcHJvZHVjZSBhbgorICogb2JqZWN0IG9mIHRoZSBkZXN0
aW5hdGlvbiB0eXBlLiAgdGhlIG9iamVjdCByZXR1cm5lZCB3aWxsIGJlCisgKiBhbGxvY2F0ZWQg
aW4gdGhlIGdpdmVuIHJlZ2lvbi4gKi8KK3ZvaWQqICAgICAgICAgICB0c2ZfY29waWVyX2Nsb25l
X2luKHRzZl9jb3BpZXJfdCAqY29waWVyLAorCQkJCSAgICB2b2lkICpzcmMsCisJCQkJICAgIHZv
aWQgKnJlZ2lvbik7CisKKy8qIGNvcHkgZnJvbSB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlv
biwgZm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgdHlwZXMuCisgKiBhbHNvLCB1c2UgdGhlIHByb3Zp
ZGVkIHJlZ2lvbiBmb3IgYWxsb2NhdGlvbi4gbm90ZSB0aGF0IHlvdSBjYW4gcGFzcyBhCisgKiBO
VUxMIHJlZ2lvbiwgd2hpY2ggY2F1c2VzIHRoaXMgdG8gdXNlIG1hbGxvYyBmb3IgYWxsb2NhdGlv
bnMuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2NvcGllcl9jb3B5KHRzZl9jb3BpZXJfdCAqY29w
aWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcmMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbik7CisKKy8qIGNyZWF0ZSBhIGRlc3RydWN0b3IuIGEg
ZGVzdHJveWVyIGNhbiBiZSB1c2VkIHRvIGZyZWUgdGhlIG1hbGxvYydkCisgKiBtZW1vcnkgdXNl
ZCBieSBvYmplY3RzIG9mIGEgZ2l2ZW4gdHlwZSwgcHJvdmlkZWQgdGhhdCB0aGUgb2JqZWN0cyB3
ZXJlCisgKiBhbGxvY2F0ZWQgd2l0aCBtYWxsb2MgYW5kIG5vdCB3aXRoIGEgcmVnaW9uLiAqLwor
dHNmX2Rlc3RydWN0b3JfdCogdHNmX2Rlc3RydWN0b3JfY3JlYXRlKHRzZl90eXBlX3QgKnR5cGUp
OworCisvKiBkZXN0cm95IHRoZSBkZXN0cm95ZXIuICovCit2b2lkICAgICAgICAgICAgdHNmX2Rl
c3RydWN0b3JfZGVzdHJveSh0c2ZfZGVzdHJ1Y3Rvcl90ICpkZXN0cnVjdG9yKTsKKworLyogZGVz
dHJ1Y3QgYW4gb2JqZWN0LiAqLwordm9pZCAgICAgICAgICAgIHRzZl9kZXN0cnVjdG9yX2Rlc3Ry
dWN0KHRzZl9kZXN0cnVjdG9yX3QgKmRlc3RydWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqb2JqZWN0KTsKKworLyogZmlsZSBkZXNjcmlwdG9yIHdy
aXRlcjsgdGhlIHZvaWQgKmFyZyBzaG91bGQgYmUgYSBwb2ludGVyIHRvCisgKiBhbiBpbnRlZ2Vy
IGhvbGRpbmcgdGhlIGZpbGUgZGVzY3JpcHRvci4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfZmRf
d3JpdGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOwor
CisvKiBmaWxlIGRlc2NyaXB0b3IgcmVhZGVyOyB0aGUgdm9pZCAqYXJnIHNob3VsZCBiZSBhIHBv
aW50ZXIgdG8KKyAqIGFuIGludGVnZXIgaG9sZGluZyB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgaWYg
YW4gRU9GIGhhcHBlbnMgYmVmb3JlCisgKiBhbnkgZGF0YSBpcyByZWFkeSwgdGhpcyBmdW5jdGlv
biB3aWxsIHNldCB0aGUgVFNGX0VfVU5FWFBFQ1RFRF9FT0YKKyAqIGVycm9yLiAgaWYgYW4gRU9G
IGhhcHBlbnMgYWZ0ZXIgYW55IGRhdGEgaXMgcmVhZHksCisgKiBUU0ZfRV9FUlJPTkVPVVNfRU9G
IHdpbGwgYmUgc2V0IGluc3RlYWQuIGlmIHRoZSBFT0Ygd2FzIGV4cGVjdGVkLAorICogeW91IHNo
b3VsZCBjaGFuZ2UgdGhlIFRTRl9FX1VORVhQRUNURURfRU9GIGVycm9yIHRvIFRTRl9FX0VPRiBp
ZgorICogeW91IHByb3BhZ2F0ZSB0aGF0IGVycm9yIChzZWUgdHNmX2luX21hbi5jIGZvciBhIGdv
b2QgZXhhbXBsZSBvZgorICogd2hhdCBJJ20gdGFsa2luZyBhYm91dCkuICovCit0c2ZfYm9vbF90
ICAgICAgdHNmX2ZkX3JlYWRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bGVuKTsKKworLyogZmlsZSBkZXNjcmlwdG9yIHBhcnRpYWwgcmVhZGVyOyB0aGUgdm9pZCAqYXJn
IHNob3VsZCBiZSBhIHBvaW50ZXIKKyAqIHRvIGFuIGludGVnZXIgaG9sZGluZyB0aGUgZmlsZSBk
ZXNjcmlwdG9yLiAgdGhpcyBkaWZmZXJzIGZyb20KKyAqIHRzZl9mZF9yZWFkZXIoKSBpbiB0aGF0
IGNvbXBsZXRlIHdyaXRlcyBhcmUgbmV2ZXIgZ3VhcmFudGVlZC4KKyAqIGlmIGFuIEVPRiBoYXBw
ZW5zLCB0aGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBUU0ZfRV9VTkVYUEVDVEVEX0VPRgorICog
ZXJyb3IuICBpZiB0aGUgRU9GIHdhcyBleHBlY3RlZCwgeW91IHNob3VsZCBjaGFuZ2UgdGhlCisg
KiBUU0ZfRV9VTkVYUEVDVEVEX0VPRiBlcnJvciB0byBUU0ZfRV9FT0YgaWYgeW91IHByb3BhZ2F0
ZSB0aGF0IGVycm9yCisgKiAoc2VlIHRzZl9pbl9tYW4uYyBmb3IgYSBnb29kIGV4YW1wbGUgb2Yg
d2hhdCBJJ20gdGFsa2luZyBhYm91dCkuICovCitpbnQzMl90ICAgICAgICAgdHNmX2ZkX3BhcnRp
YWxfcmVhZGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbGVuKTsKKwordHNmX2Jvb2xfdCAgICAgIHRzZl9mdWxsX3JlYWRfb2ZfcGFydGlhbCh0
c2ZfcGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisJCQkJCSB2b2lkICphcmcsCisJCQkJCSB2b2lk
ICpkYXRhLAorCQkJCQkgdWludDMyX3QgbGVuKTsKKworLyogcmVhZCBhIHN0cmluZyB1c2luZyBh
IHJlYWRlciAqLworY2hhciogICAgICAgICAgIHRzZl9yZWFkX3N0cmluZyh0c2ZfcmVhZGVyX3Qg
cmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfc2l6ZSk7CisKKy8qIHdyaXRl
IGEgc3RyaW5nIHVzaW5nIGEgd3JpdGVyICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3dyaXRlX3N0
cmluZyh0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqc3RyKTsKKworLyogc2l6ZSBjYWxjdWxhdGluZyB3cml0ZXI7IHRoZSBhcmcgc2hvdWxkIGJl
IGEgdWludDMyX3QqLCB3aGVyZQorICogdGhlIHJlZmVyZW5jZWQgdWludDMyX3QgaXMgdGhlIGxl
bmd0aC4gIHlvdSBzaG91bGQgaW5pdGlhbGl6ZQorICogdGhlIGxlbmd0aCB0byAwIGJlZm9yZSB1
c2luZyB0aGlzIHdyaXRlci4gIG5vdGUgdGhhdCB0aGlzCisgKiB3cml0ZXIgZG9lcyBub3Qgd3Jp
dGUgdGhlIGNvbnRlbnRzIHRvIGFueXdoZXJlOyBpdCBvbmx5IHRlbGxzCisgKiB5b3UgdGhlIGNv
bnRlbnRzJyBzaXplLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9zaXplX2NhbGNfd3JpdGVyKHZv
aWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVu
KTsKKworLyogcmVhZGVyIHRoYXQgZGVsZWdhdGVzIHRvIGFub3RoZXIgcmVhZGVyLCBidXQgYWJv
cnRzIG9uY2UgdGhlCisgKiBhbW91bnQgcmVhZCBleGNlZWRzIGEgbGltaXQuICB0aGUgZXJyb3Ig
d2lsbCBiZQorICogVFNGX0VfUEFSU0VfRVJST1IuICB0aGUgYXJnIHNob3VsZCBiZSBhIHRzZl9z
aXplX2F3YXJlX3Jkcl90KiwKKyAqIHdoaWNoIHlvdSBzaG91bGQgaW5pdGlhbGl6ZSB3aXRoIHRo
ZSByZWFkZXIgdG8gZGVsZWdhdGUgdG8sCisgKiB0aGUgYXJnIHRoYXQgdGhhdCByZWFkZXIgZXhw
ZWN0cywgYSBsaW1pdCwgYW5kIGEgbmFtZS4gIHRoZQorICogbmFtZSBpcyB1c2VkIGZvciBnZW5l
cmF0aW5nIHRoZSBtZXNzYWdlIGZvciB0aGUgcGFyc2UgZXJyb3IsCisgKiBpZiBpdCBvY2N1cnMs
IGFuZCBzaG91bGQgYmUgYSBzaG9ydCAocHJlZmVyYWJseSBvbmUgd29yZCkKKyAqIGRlc2NyaXB0
aW9uIG9mIHdoYXQgaXQgaXMgeW91J3JlIHJlYWRpbmcuICovCit0c2ZfYm9vbF90ICAgICAgdHNm
X3NpemVfYXdhcmVfcmVhZGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBsZW4pOworCisvKiBidWZmZXItb25seSB3cml0ZXIuICB3cml0ZXMgdG8g
YSBidWZmZXIgb2YgYSBwcmUtZGVmaW5lZCBzaXplLiAgeW91IGNhbgorICogdGhlbiB1c2UgdGhp
cyBidWZmZXIgd2l0aCB0aGUgYnVmZmVyLW9ubHkgcmVhZGVyLiAgdGhlIGFyZ3VtZW50IGlzIGEK
KyAqIHVpbnQ4X3QqKi4gIHRoaXMgZnVuY3Rpb24gd2lsbCBkZXJlZmVyZW5jZSBpdCBhbmQgdXNl
IGl0IGFzIGFuIGl0ZXJhdG9yCisgKiBhcyBpdCB3cml0ZXMuICovCit0c2ZfYm9vbF90ICAgICAg
dHNmX2J1ZmZlcl9vbmx5X3dyaXRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOworCisvKiBidWZmZXItb25seSB3cml0ZXIg
dGhhdCByZXNpemVzIHRoZSBvdXRwdXQgYnVmZmVyIHdoZW4gdGhlcmUgaXNuJ3QKKyAqIGVub3Vn
aCByb29tLiB0YWtlcyBhIHRzZl9yZXNpemFibGVfYnVmZmVyX3QuIGl0J3MgdmFsaWQgdG8gc3Rh
cnQgYnkKKyAqIG1lbXNldHRpbmcgdGhlIHRzZl9yZXNpemFibGVfYnVmZmVyX3QgdG8gemVyby4g
Ki8KK3RzZl9ib29sX3QgICAgICB0c2ZfcmVzaXphYmxlX2J1ZmZlcl93cml0ZXIodm9pZCAqYXJn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxlbik7CisKKy8qIGJ1ZmZlci1vbmx5IHJlYWRlci4gIHJlYWRzIGZyb20gYSBsaWdodC13
ZWlnaHQgYnVmZmVyLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9idWZmZXJfb25seV9yZWFkZXIo
dm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVu
KTsKKworLyogcmVhZHMgZnJvbSBhIHJlYWRlciBhbmQgY29tcGFyZXMgdG8gd2hhdCB5b3Ugd3Jp
dGUgdG8gaXQuICBmYWlscyBpZiBhbnkKKyAgIGJ5dGUgZG9lc24ndCBtYXRjaC4gKi8KK3RzZl9i
b29sX3QgICAgICB0c2ZfY29tcGFyaW5nX3dyaXRlcih2b2lkICphcmcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8qIGNvbXB1dGVzIGEgaGFz
aCBvZiB0aGUgdGV4dCB5b3UgZ2l2ZSBpdC4gIHRoZSBhcmcgbXVzdCBwb2ludCB0byBhCisgICAz
Mi1iaXQgaW50ZWdlci4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfaGFzaGluZ193cml0ZXIodm9p
ZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpi
dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisK
Ky8qIGNyZWF0ZSBhIFNIQTEgaGFzaGluZyB3cml0ZXIuICovCit0c2Zfc2hhMV93dHJfdCogdHNm
X3NoYTFfd3JpdGVyX2NyZWF0ZSh2b2lkKTsKKworLyogZGVzdHJveSBhIFNIQTEgaGFzaGluZyB3
cml0ZXIuICovCit2b2lkICAgICAgICAgICAgdHNmX3NoYTFfd3JpdGVyX2Rlc3Ryb3kodHNmX3No
YTFfd3RyX3QgKnNoYTEpOworCisvKiB3cml0ZSB1c2luZyB0aGUgU0hBMSBoYXNoaW5nIHdyaXRl
ci4gKi8KK3RzZl9ib29sX3QgICAgICB0c2Zfc2hhMV93cml0ZXJfd3JpdGUodm9pZCAqYXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8q
IGZpbmlzaCB3cml0aW5nIGFuZCBnZXQgdGhlIGhhc2ggYXMgYW4gYXJyYXkgb2YgNSB1aW50MzJf
dCdzLiAgYWZ0ZXIKKyAqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHlvdSBjYW5ub3Qgd3JpdGUg
aW50byB0aGlzIHdyaXRlciBhbnltb3JlLgorICogY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJlcGVh
dGVkbHkgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSBzYW1lCisgKiByZXN1bHQuICovCit1aW50MzJf
dCogICAgICAgdHNmX3NoYTFfd3JpdGVyX2ZpbmlzaCh0c2Zfc2hhMV93dHJfdCAqc2hhMSk7CisK
Ky8qIGdldCB0aGUgcmVzdWx0aW5nIGhhc2ggYXMgYW4gYXJyYXkgb2YgNSB1aW50MzJfdCdzOyB0
aGlzIHJldHVybnMKKyAqIHRoZSBzYW1lIGFycmF5IGFzIHRzZl9zaGExX3dyaXRlcl9maW5pc2go
KS4gIHlvdSBzaG91bGQgbm90IGNhbGwKKyAqIHRoaXMgZnVuY3Rpb24gdW50aWwgYWZ0ZXIgeW91
IGhhdmUgY2FsbGVkIHRzZl9zaGExX3dyaXRlcl9maW5pc2goKS4KKyAqIGluIHRoaXMgc2Vuc2Us
IHRoaXMgZnVuY3Rpb24gaXMgc29tZXdoYXQgcmVkdW5kYW50IHRvCisgKiB0c2Zfc2hhMV93cml0
ZXJfZmluaXNoKCksIGJ1dCBpcyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UuICovCit1aW50MzJf
dCogICAgICAgdHNmX3NoYTFfd3JpdGVyX3Jlc3VsdCh0c2Zfc2hhMV93dHJfdCAqc2hhMSk7CisK
Ky8qIHJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgaGV4IGZvcm1hdCBTSEExIHN1bSwg
Z2l2ZW4gdGhlCisgKiBzdW0gaW4gdGhlIGFyZ3VtZW50LiAgbm90ZSwgdGhlIHJldHVybmVkIHN0
cmluZyBpcyBuZXdseSBhbGxvY2F0ZWQsCisgKiBzbyB5b3UgbXVzdCBmcmVlIGl0IHdoZW4geW91
J3JlIGRvbmUuICovCitjaGFyKiAgICAgICAgICAgdHNmX3NoYTFfc3VtX3RvX3N0cih1aW50MzJf
dCAqc3VtKTsKKworLyogY3JlYXRlIGEgYnVmZmVyZWQgcmVhZGVyIHVzaW5nIHRoZSBnaXZlbiBm
aWxlIGRlc2NyaXB0b3IgYW5kCisgKiBidWZmZXIgc2l6ZS4gIGlmIGtlZXBfZmQgaXMgdHNmX3Ry
dWUsIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZQorICogY2xvc2VkIGlmOiBhbiBlcnJvciBv
Y2N1cnMgd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSB0aGUgYnVmZmVyLAorICogYW5kIHdoZW4gdGhl
IGJ1ZmZlciBpcyBkZXN0cm95ZWQuICovCit0c2ZfYnVmX3Jkcl90KiAgdHNmX2J1Zl9yZWFkZXJf
Y3JlYXRlKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgYnVmX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl9ib29sX3Qga2VlcF9mZCk7CisKKy8qIGRlc3Ryb3kgYSByZWFkIGJ1ZmZlciAqLwordm9pZCAg
ICAgICAgICAgIHRzZl9idWZfcmVhZGVyX2Rlc3Ryb3kodHNmX2J1Zl9yZHJfdCAqYnVmKTsKKwor
LyogcmVhZCB1c2luZyBhIHJlYWQgYnVmZmVyICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2J1Zl9y
ZWFkZXJfcmVhZCh2b2lkICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbGVuKTsKKworLyogdGVsbHMgeW91IGhvdyBtYW55IGJ5dGVzIG9mIGRhdGEgYXJlIHJlbWFp
bmluZyBpbiB0aGUgYnVmZmVyLiAqLwordWludDMyX3QgICAgICAgIHRzZl9idWZfcmVhZGVyX2dl
dF9yZW1haW5pbmcodHNmX2J1Zl9yZHJfdCAqYnVmKTsKKworLyogcmVzZXRzIHRoZSBidWZmZXIu
ICovCit2b2lkICAgICAgICAgICAgdHNmX2J1Zl9yZWFkZXJfcmVzZXQodHNmX2J1Zl9yZHJfdCAq
YnVmKTsKKworLyogY3JlYXRlIGEgYnVmZmVyZWQgd3JpdGVyIHVzaW5nIHRoZSBnaXZlbiBmaWxl
IGRlc2NyaXB0b3IsIGJ1ZmZlciBzaXplLgorICogaWYga2VlcF9mZCBpcyB0c2ZfdHJ1ZSwgdGhl
IGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGNsb3NlZCBpZjogYW4gZXJyb3IKKyAqIG9jY3VycyB3
aGlsZSB0cnlpbmcgdG8gY3JlYXRlIHRoZSBidWZmZXIsIGFuZCB3aGVuIHRoZSBidWZmZXIgaXMg
ZGVzdHJveWVkLiAqLwordHNmX2J1Zl93dHJfdCogIHRzZl9idWZfd3JpdGVyX2NyZWF0ZShpbnQg
ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJ1Zl9z
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYm9vbF90IGtl
ZXBfZmQpOworCisvKiBkZXN0cm95IHRoZSBidWZmZXIuICBpZiBrZWVwX2ZkIGlzIHRzZl90cnVl
LCB0aGUgZmlsZSBkZXNjcmlwdG9yCisgKiBpcyBjbG9zZWQuICBub3RlIHRoYXQgdGhpcyBvcGVy
YXRpb24gZG9lcyBub3QgcmVzdWx0IGluIHRoZQorICogYnVmZmVyIGJlaW5nIGZsdXNoZWQsIHNv
IGNhbGxpbmcgdGhpcyB3aXRob3V0IGNhbGxpbmcgdGhlCisgKiBmbHVzaCBmdW5jdGlvbiAoc2Vl
IGJlbG93KSBmaXJzdCBtYXkgcmVzdWx0IGluIGRhdGEgbG9zcy4gKi8KK3ZvaWQgICAgICAgICAg
ICB0c2ZfYnVmX3dyaXRlcl9kZXN0cm95KHRzZl9idWZfd3RyX3QgKmJ1Zik7CisKKy8qIHRoaXMg
aXMgdGhlIGZ1bmN0aW9uIHRoYXQgeW91IHBhc3MgdG8gYWxsIG9mIHRoZSB3cml0aW5nIG9wZXJh
dGlvbnMKKyAqIGlmIHlvdSBhY3R1YWxseSB3YW50IHRvIHB1dCB0aGlzIHdyaXRlciB0byBnb29k
IHVzZS4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfYnVmX3dyaXRlcl93cml0ZSh2b2lkICpidWYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOworCisv
KiBmbHVzaCB0aGUgYnVmZmVyLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9idWZfd3JpdGVyX2Zs
dXNoKHRzZl9idWZfd3RyX3QgKmJ1Zik7CisKKy8qIGdldCB0aGUgJ2RlZmF1bHQnIHppcCBtb2Rl
LiAgdGhpcyBpcyBhY3R1YWxseSBOT05FLCB3aGljaCB3aWxsCisgKiByZXN1bHQgaW4gaWxsZWdh
bCBhcmd1bWVudCBlcnJvcnMgaW4gdHNmX3ppcF9yZWFkZXJfY3JlYXRlKCkgYW5kCisgKiB0c2Zf
emlwX3dyaXRlcl9jcmVhdGUoKS4gIGhvd2V2ZXIsIHRzZl9zdHJlYW1fZmlsZV9pbnB1dCBhbmQK
KyAqIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXQgd2lsbCBncmFjZWZ1bGx5IGFjY2VwdCBpdCBhbmQg
dGFrZSBpdAorICogdG8gbWVhbiB0aGF0IG5vcm1hbCBidWZmZXJlZCBJTyBzaG91bGQgYmUgcGVy
Zm9ybWVkLiAqLwordm9pZCAgICAgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQo
dHNmX3ppcF93dHJfYXR0cl90ICphdHRyKTsKKworLyogZ2V0IHRoZSBkZWZhdWx0IFpMaWIgbW9k
ZS4gIHRoaXMgd2lsbCBjYXVzZSBaTGliIHRvIGJlIHVzZWQgd2l0aAorICogZGVmYXVsdCBzZXR0
aW5ncyAoYSBjb21wcmVzc2lvbiBsZXZlbCBvZiBaX0RFRkFVTFRfQ09NUFJFU1NJT04gYW5kCisg
KiBhZHZhbmNlZF9pbml0IHNldCB0byBmYWxzZSkuICB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJu
IHRzZl90cnVlCisgKiBpZiBaTGliIGlzIHN1cHBvcnRlZCwgYW5kIHRzZl9mYWxzZSBvdGhlcndp
c2UuICBpZiB0c2ZfZmFsc2UgaXMKKyAqIHJldHVybmVkLCB0aGUgZXJyb3Igd2lsbCBiZSBzZXQg
dG8gVFNGX0VfTk9UX1NVUFBPUlRFRC4gIHRvIG1ha2UKKyAqIGxpZmUgZWFzaWVyIGluIHNvbWUg
Y2FzZXMsIHlvdSBjYW4gcGFzcyBOVUxMIHRvIHRoaXMgZnVuY3Rpb24gYW5kCisgKiB0aGUgZnVu
Y3Rpb24gd2lsbCBzdGlsbCBwZXJmb3JtIHRoZSBjaGVjayBpZiBabGliIGlzIHN1cHBvcnRlZC4g
Ki8KK3RzZl9ib29sX3QgICAgICB0c2ZfemlwX3d0cl9hdHRyX2dldF96bGliX2RlZmF1bHQodHNm
X3ppcF93dHJfYXR0cl90ICphdHRyKTsKKworLyogZ2V0IHRoZSBkZWZhdWx0IGxpYmJ6aXAyIG1v
ZGUuICB0aGlzIHdpbGwgY2F1c2UgbGliYnppcDIgdG8gYmUKKyAqIHVzZWQgd2l0aCBkZWZhdWx0
IHNldHRpbmdzIChibG9ja1NpemUxMDBrID0gOSwgdmVyYm9zaXR5ID0gMCwKKyAqIHdvcmtGYWN0
b3IgPSAwLCBzbWFsbCA9IDApLiAgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0c2ZfdHJ1ZQor
ICogaWYgbGliYnppcDIgaXMgc3VwcG9ydGVkLCBhbmQgdHNmX2ZhbHNlIG90aGVyd2lzZS4gIGlm
IHRzZl9mYWxzZQorICogaXMgcmV0dXJuZWQsIHRoZSBlcnJvciB3aWxsIGJlIHNldCB0byBUU0Zf
RV9OT1RfU1VQUE9SVEVELiAgdG8KKyAqIG1ha2UgbGlmZSBlYXNpZXIgaW4gc29tZSBjYXNlcywg
eW91IGNhbiBwYXNzIE5VTEwgdG8gdGhpcyBmdW5jdGlvbgorICogYW5kIHRoZSBmdW5jdGlvbiB3
aWxsIHN0aWxsIHBlcmZvcm0gdGhlIGNoZWNrIGlmIGxpYmJ6aXAyIGlzCisgKiBzdXBwb3J0ZWQu
ICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3ppcF93dHJfYXR0cl9nZXRfYnppcDJfZGVmYXVsdCh0
c2ZfemlwX3d0cl9hdHRyX3QgKmF0dHIpOworCisvKiBnZXQgdGhlIGF0dHJpYnV0ZXMgdGhhdCBj
b3JyZXNwb25kIHRvIHRoZSBnaXZlbiBtb2RlLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl96aXBf
d3RyX2F0dHJfZ2V0X2Zvcl9tb2RlKHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0ciwKKwkJCQkJICAg
ICAgdHNmX3ppcF9tb2RlX3QgbW9kZSk7CisKKy8qIGdldCB0aGUgZGVmYXVsdCBkZWNvbXByZXNz
aW9uIHNldHRpbmdzLiAgdGhpcyBlbmFibGVzIG9ubHkgdGhvc2UKKyAqIGNvbXBscmVzc2lvbiBz
Y2hlbWVzIHRoYXQgYXJlIGFjdHVhbGx5IHN1cHBvcnRlZC4gKi8KK3ZvaWQgICAgICAgICAgICB0
c2ZfemlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0cik7CisK
Ky8qIGdldCB0aGUgc2V0dGluZ3Mgd2l0aCBhbGwgY29tcHJlc3Npb24gZGlzYWJsZWQuICB0aGlz
IHNldHMgdGhlCisgKiBhbGxvdyBiaXRzIHRvIGZhbHNlLCBidXQgYWxsIG9mIHRoZSBvdGhlciBm
aWVsZHMgYXJlIHNldCB0byB0aGUKKyAqIGRlZmF1bHQgc2V0dGluZ3MgLSBzbyB0aGlzIGlzIHRo
ZSBwZXJmZWN0IHN0YXJ0aW5nIHBsYWNlIGlmIHlvdSB3YW50CisgKiB0byBlbmFibGUgb25seSB5
b3VyIGFwcHJvdmVkIGNvbXByZXNzaW9uIHNjaGVtZXMgKGp1c3QgY2FsbCB0aGlzCisgKiBhbmQg
dGhlbiBzZXQgdGhlIGJpdHMgb2YgdGhlIHNjaGVtZXMgdGhhdCBtYWtlIHlvdSBoYXBweSkuICov
Cit2b2lkICAgICAgICAgICAgdHNmX3ppcF9yZHJfYXR0cl9nZXRfbm96aXAodHNmX3ppcF9yZHJf
YXR0cl90ICphdHRyKTsKKworLyogaXMgYWxsIGNvbXByZXNzaW9uIGRpc2FibGVkPyAqLwordHNm
X2Jvb2xfdCAgICAgIHRzZl96aXBfcmRyX2F0dHJfaXNfbm96aXAodHNmX3ppcF9yZHJfYXR0cl90
ICphdHRyKTsKKworLyogY29udmVuaWVuY2UgbWFjcm8gdGhhdCBjaGVja3MgaWYgemxpYiBzdXBw
b3J0IGlzIGF2YWlsYWJsZSAqLworI2RlZmluZSAgICAgICAgIHRzZl96bGliX3N1cHBvcnRlZCgp
IFwKKyAgICAgICAgICAgICAgICAgICAgKHRzZl96aXBfd3RyX2F0dHJfZ2V0X3psaWJfZGVmYXVs
dChOVUxMKSkKKworLyogY29udmVuaWVuY2UgbWFjcm8gdGhhdCBjaGVja3MgaWYgbGliYnppcDIg
c3VwcG9ydCBpcyBhdmFpbGFibGUgKi8KKyNkZWZpbmUgICAgICAgICB0c2ZfbGliYnppcDJfc3Vw
cG9ydGVkKCkgXAorICAgICAgICAgICAgICAgICAgICAodHNmX3ppcF93dHJfYXR0cl9nZXRfYnpp
cDJfZGVmYXVsdChOVUxMKSkKKworLyogY3JlYXRlIGEgemlwcGluZyByZWFkZXIuICBpdCBhbHNv
IGRvZXMgYnVmZmVyaW5nLiAgYWNjZXB0cyBhIHBhcnRpYWwKKyAqIHJlYWRlciBhcyBhIGRlbGVn
YXRlIHRvIGFjdHVhbGx5IHJlYWQgdGhlIGRhdGEuICBhcyBzdWNoLCB0aGlzIHRoaW5nCisgKiBj
YW4gYWRhcHQgdG8gbWFueSBkaWZmZXJlbnQgdW5kZXJseWluZyBkZXZpY2VzLiAgcmV0dXJucyBh
biBlcnJvcgorICogaWYgeW91IHRyeSB0byB1c2UgYSBtb2RlIG9yIGF0dHJpYnV0ZSBzZXQgdGhh
dCBpcyBub3Qgc3VwcG9ydGVkLgorICogSW4gcGFydGljdWxhciwgdXNpbmcgVFNGX1pJUF9OT05F
IGlzIG5vdCBzdXBwb3J0ZWQhCisgKgorICogbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBu
b3QgY2hlY2sgaWYgdGhlIHNlbGVjdGVkIG1vZGUgaXMgYWxsb3dlZAorICogYWNjb3JkaW5nIHRv
IHRoZSBhdHRyaWJ1dGVzLiAgaXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvCisg
KiBlbnN1cmUgdGhhdCB0aGUgbW9kZSBpcyBhbGxvd2VkLiAqLwordHNmX3ppcF9yZHJfdCogIHRz
Zl96aXBfcmVhZGVyX2NyZWF0ZSh0c2ZfcGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlYWRlcl9hcmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl96aXBfbW9kZV90IG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRzZl96aXBfcmRyX2F0dHJf
dCAqYXR0cik7CisKKy8qIGRlc3Ryb3kgdGhlIHJlYWRlci4gKi8KK3ZvaWQgICAgICAgICAgICB0
c2ZfemlwX3JlYWRlcl9kZXN0cm95KHRzZl96aXBfcmRyX3QgKnJlYWRlcik7CisKKy8qIHJlYWQg
c29tZSBkYXRhLiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl96aXBfcmVhZGVyX3JlYWQodm9pZCAq
cmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbik7CisKKy8q
IGNyZWF0ZSBhIHppcHBpbmcgd3JpdGVyLiAgaXQgYWxzbyBkb2VzIGJ1ZmZlcmluZy4gIGFjY2Vw
dHMgYSB3cml0ZXIKKyAqIGFzIGEgZGVsZWdhdGUgdG8gYWN0dWFsbHkgd3JpdGUgdGhlIGRhdGEu
ICBhcyBzdWNoLCB0aGlzIHRoaW5nIGNhbgorICogYWRhcHQgdG8gbWFueSBkaWZmZXJlbnQgdW5k
ZXJseWluZyBkZXZpY2VzLiAgbm90ZSB0aGF0IGl0IG1ha2VzIGxpdHRsZQorICogb3Igbm8gc2Vu
c2UgdG8gcGFzcyBpbiBhIGJ1ZmZlcmluZyB3cml0ZXIsIHNpbmNlIHRoaXMgd3JpdGVyIGFscmVh
ZHkKKyAqIGRvZXMgYnVmZmVyaW5nIChpbiBmYWN0LCBpdCBoYXMgdG8gZG8gYnVmZmVyaW5nIHRv
IGludGVyYWN0IHdpdGggdGhlCisgKiB1bmRlcmx5aW5nIGNvbXByZXNzaW9uIGVuZ2luZSkuICBy
ZXR1cm5zIGFuIGVycm9yIGlmIHlvdSB0cnkgdG8gdXNlCisgKiBhIG1vZGUgb3IgYXR0cmlidXRl
IHNldCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQuICBpbiBwYXJ0aWN1bGFyLAorICogVFNGX1pJUF9O
T05FIGlzIG5vdCBzdXBwb3J0ZWQhICovCit0c2ZfemlwX3d0cl90KiAgdHNmX3ppcF93cml0ZXJf
Y3JlYXRlKHRzZl93cml0ZXJfdCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKndyaXRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0cik7CisKKy8qIGRlc3Ryb3kg
dGhlIHdyaXRlci4gKi8KK3ZvaWQgICAgICAgICAgICB0c2ZfemlwX3dyaXRlcl9kZXN0cm95KHRz
Zl96aXBfd3RyX3QgKndyaXRlcik7CisKKy8qIHdyaXRlIHNvbWUgZGF0YS4gKi8KK3RzZl9ib29s
X3QgICAgICB0c2ZfemlwX3dyaXRlcl93cml0ZSh2b2lkICp3cml0ZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOworCisvKiBmbHVzaCBkYXRhLiAg
Y2FsbGluZyB0aGlzIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBodXJ0IGNvbXByZXNzaW9uLCBzbwor
ICogY2FsbCBpdCBvbmx5IGlmIHlvdSByZWFsbHkgaGF2ZSB0by4gIGlmIHRoZSBmdWxsX2ZsdXNo
IHBhcmFtZXRlciBpcworICogdHJ1ZSwgdGhlIGZsdXNoIHdpbGwgbm90IG9ubHkgYmUgY29tcGxl
dGUgZW5vdWdoIHRvIGFsbG93IHRoZSByZWFkaW5nCisgKiBlbmQgdG8gZ2V0IGFsbCBvZiB0aGUg
ZGF0YSwgYnV0IHdpbGwgYWxzbyByZXN1bHQgaW4gdGhlIGNvbXByZXNzb3IKKyAqIHJlc2V0dGlu
ZyBpdHMgc3RhdGUgKHNvIHRvIHNwZWFrKSBpbiBvcmRlciB0byBtYWtlIGFsbCBmdXR1cmUgZGF0
YQorICogYmUgaW5kZXBlbmRhbnQgb2YgdGhlIGFscmVhZHkgd3JpdHRlbiBkYXRhLiAgcGFzc2lu
ZyB0c2ZfdHJ1ZSBmb3IKKyAqIGZ1bGxfZmx1c2ggd2lsbCBoZWxwIGVycm9yIHJlY292ZXJ5IGJ1
dCB3aWxsIGh1cnQgeW91ciBjb21wcmVzc2lvbgorICogcmF0aW9zIGV2ZW4gbW9yZS4KKyAqCisg
KiBub3RlIHRoYXQgd2hlbiB1c2luZyBsaWJiemlwMiwgZnVsbF9mbHVzaCBpcyBpZ25vcmVkLiAg
aW4gZ2VuZXJhbCwKKyAqIGFueSBmbHVzaGluZyBkb25lIHdpdGggbGliYnppcDIgd2lsbCBodXJ0
IGEgbG90IG1vcmUgdGhhbiBhbnkgZmx1c2hpbmcKKyAqIGRvbmUgd2l0aCB6bGliLCByZWdhcmRs
ZXNzIG9mIHRoZSB2YWx1ZSBvZiBmdWxsX2ZsdXNoLiAgc28ga2VlcCB0aGF0CisgKiBpbiBtaW5k
LiAgaW4gbWFueSBjYXNlcywgdGhlIGV4dHJlbWVseSBiYWQgcGVyZm9ybWFuY2UgdGhhdCByZXN1
bHRzCisgKiBmcm9tIGZsdXNoaW5nIGluIGxpYmJ6aXAyIHdpbGwgYmUgc3VmZmljaWVudCByZWFz
b24gdG8gdXNlIHpsaWIKKyAqIGluc3RlYWQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3ppcF93
cml0ZXJfZmx1c2godHNmX3ppcF93dHJfdCAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgZnVsbF9mbHVzaCk7CisKKy8qIGZpbmlzaCB0aGUg
c3RyZWFtLiAgdGhpcyBhbGxvd3MgdGhlIGNvbXByZXNzb3IgdG8gb3V0cHV0IGl0cyBlbmQtb2Yt
CisgKiBzdHJlYW0gbWFya2VyLiAgdGhpcyBhbHNvIGRvZXMgYW4gaW1wbGljaXQgZmx1c2gsIHNv
IGNhbGxpbmcgZmx1c2gKKyAqIGp1c3QgYmVmb3JlIGNhbGxpbmcgZmluaXNoIHdpbGwgbm90IGhl
bHAgKGl0IHNob3VsZG4ndCBodXJ0LCBlaXRoZXIpLgorICogbm90IHRoYXQgaWYgeW91IGRvIGEg
Zmx1c2ggYnV0IGRvIG5vdCBkbyBhIGZpbmlzaCwgdGhlIHJlY2VpdmVyCisgKiBzaG91bGQgYmUg
YWJsZSB0byBnZXQgYWxsIG9mIHRoZSBkYXRhIGJ1dCB3aWxsIHByb2JhYmx5IHJlcG9ydCBhbgor
ICogZXJyb3IgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSwgY29tcGxhaW5pbmcgdGhhdCB0aGUgZW5k
IG9mIHN0cmVhbSB3YXMKKyAqIG5ldmVyIHJlYWxseSBoaXQuCisgKgorICogYWZ0ZXIgZmluaXNo
IHJldHVybnMsIHlvdSBtYXkgbm90IHVzZSB0aGlzIHdyaXRlciBhbnltb3JlLgorICogYXR0ZW1w
dGluZyB0byBjYWxsIHdyaXRlciwgZmx1c2gsIG9yIGZpbmlzaCBvbiBhIHdyaXRlciB0aGF0IGhh
cworICogYWxyZWFkeSBoYWQgZmluaXNoIGNhbGxlZCBvbiBpdCB3aWxsIGxlYWQgdG8gdW5wcmVk
aWN0YWJsZSBiZWhhdmlvci4KKyAqIGFmdGVyIGNhbGxpbmcgZmluaXNoLCB5b3Ugc2hvdWxkIGp1
c3QgY2FsbCBkZXN0cm95LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl96aXBfd3JpdGVyX2Zpbmlz
aCh0c2ZfemlwX3d0cl90ICp3cml0ZXIpOworCisvKiBjcmVhdGUgYW4gYWRhcHRpdmUgemlwcGlu
ZyByZWFkZXIuICB0aGlzIHJlYWRlciB3aWxsIGJlIGFibGUgdG8gc3dpdGNoCisgKiBiZXR3ZWVu
IGRpZmZlcmVudCB6aXBwaW5nIHN0cmF0ZWdpZXMgKGluY2x1ZGluZyBubyB6aXBwaW5nKSBhcyB0
aGUgaW5wdXQKKyAqIGRhdGEgaW5kaWNhdGVzLiAgaG93ZXZlciwgaXQgb25seSB3b3JrcyB1bmRl
ciB0d28gbm9uLXRyaXZpYWwKKyAqIGNvbmRpdGlvbnM6CisgKiAxKSB0aGUgaW5wdXQgaXMgZm9y
bWF0dGVkIGFjY29yZGluZyB0byB0aGUgc2VyaWFsIHByb3RvY29sIHdpdGgKKyAqICAgIHN0cmVh
bSBmaWxlIGhlYWRlcnMgaW5kaWNhdGluZyBjb21wcmVzc2lvbiBzZXR0aW5ncywgYW5kCisgKiAy
KSB5b3UgY2FsbCB0c2ZfYWRhcHRpdmVfcmVhZGVyX2hpbnRfc3dpdGNoKCkgYXQgdGhlIHJpZ2h0
IHRpbWVzLiAqLwordHNmX2FkcHRfcmRyX3QqIHRzZl9hZGFwdGl2ZV9yZWFkZXJfY3JlYXRlKHRz
Zl9wYXJ0aWFsX3JlYWRlcl90IHJlYWRlciwKKwkJCQkJICAgdm9pZCAqcmVhZGVyX2FyZywKKwkJ
CQkJICAgdWludDMyX3Qgbm96aXBfYnVmX3NpemUsCisJCQkJCSAgIGNvbnN0IHRzZl96aXBfcmRy
X2F0dHJfdCAqYXR0cik7CisKKy8qIGNsb3NlIHRoZSBhZGFwdGl2ZSByZWFkZXIuICBjbGVhbnMg
dXAgZXZlcnl0aGluZy4gIG5ldmVyIGZhaWxzLiAqLwordm9pZCAgICAgICAgICAgIHRzZl9hZGFw
dGl2ZV9yZWFkZXJfZGVzdHJveSh0c2ZfYWRwdF9yZHJfdCAqcmVhZGVyKTsKKworLyogaW5mb3Jt
IHRoZSByZWFkZXIgdGhhdCB0aGVyZSBtYXkgYmUgYSBmb3JtYXQgY2hhbmdlIGluIHRoZSBuZXh0
IGJ5dGUuCisgKiBpZiB3ZSBhcmUgY3VycmVudGx5IHJlYWRpbmcgd2l0aCBjb21wcmVzc2lvbiB0
dXJuZWQgb2ZmLCB0aGlzIGhpbnQgdGVsbHMKKyAqIHRoZSByZWFkZXIgdG8gaW5zcGVjdCB0aGUg
bmV4dCBmb3VyIGJ5dGVzIHRvIHNlZSBpZiBpdCBjb250YWlucyBhIGNvZGUKKyAqIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIHN0YXJ0IG9mIGEgWkxJQiBvciBCWklQMiBzZXF1ZW5jZS4gIGlmIHdlIGFy
ZSB1c2luZworICogYSBaTElCIG9yIEJaSVAyIHJlYWRlciwgdGhpcyBzcGVjaWZpZXMgdGhhdCBh
biBlbmQtb2Ytc3RyZWFtIGZyb20gdGhlCisgKiB1bmRlcmx5aW5nIHJlYWRlciBpcyBjb3JyZWN0
IChvdGhlcndpc2UgaXQgaXMgZmxhZ2dlZCBhcyBlcnJvbmVvdXMpLiAqLwordm9pZCAgICAgICAg
ICAgIHRzZl9hZGFwdGl2ZV9yZWFkZXJfaGludF9zd2l0Y2godHNmX2FkcHRfcmRyX3QgKnJlYWRl
cik7CisKKy8qIHRlbGxzIHlvdSBob3cgbWFueSBieXRlcyBvZiBkYXRhIGFyZSByZW1haW5pbmcg
aW4gdGhlIGJ1ZmZlci4gKi8KK3VpbnQzMl90ICAgICAgICB0c2ZfYWRhcHRpdmVfcmVhZGVyX2dl
dF9yZW1haW5pbmcodHNmX2FkcHRfcmRyX3QgKnJlYWRlcik7CisKKy8qIHRoZSBhY3R1YWwgcmVh
ZCBtZXRob2QuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX2FkYXB0aXZlX3JlYWRlcl9yZWFkKHZv
aWQgKnJlYWRlciwKKwkJCQkJIHZvaWQgKmRhdGEsCisJCQkJCSB1aW50MzJfdCBsZW4pOworCisv
KiBkZXRlcm1pbmUgdGhlIHppcCBtb2RlIG9mIHRoZSBnaXZlbiBmaWxlIGJ5IG9wZW5uaW5nIGl0
IGFuZCByZWFkaW5nIHRoZQorICogZmlyc3QgZm91ciBieXRlcy4gIGlmIHRoZSBtb2RlIHJldHVy
bmVkIGlzIFRTRl9aSVBfVU5LTk9XTiB0aGVuIHRoZXJlCisgKiB3YXMgYW4gZXJyb3IuICBpZiB0
aGUgZXJyb3Igd2FzIFRTRl9FX05PVF9TVVBQT1JURUQgdGhlbiB0aGUgZmlsZSBpcworICogbm90
IGluIGEgdmFsaWQgVFNGIHN0cmVhbSBmaWxlIGZvcm1hdC4gKi8KK3RzZl96aXBfbW9kZV90ICB0
c2Zfc3RyZWFtX2ZpbGVfZ2V0X21vZGUoY29uc3QgY2hhciAqZmlsZW5hbWUpOworCisvKiBzYW1l
IGFzIGFib3ZlIGV4Y2VwdCB0aGF0IGl0IHJlYWRzIHRoZSBmaXJzdCBmb3VyIGJ5dGVzIGZyb20g
dGhlIGdpdmVuCisgKiBmaWxlIGRlc2NyaXB0b3IuICovCit0c2ZfemlwX21vZGVfdCAgdHNmX3N0
cmVhbV9maWxlX2dldF9tb2RlX2Zyb21fZmQoaW50IGZkKTsKKworLyogb3BlbiBhIGZpbGUgZm9y
IHJlYWRpbmcuICBpZiB0aGUgemlwIHJlYWRlciBhdHRyaWJ1dGVzIGFyZSBOVUxMIHRoZW4gdGhl
eQorICogYXJlIHNldCB0byB0aGUgZGVmYXVsdHMuICBpZiB0aGUgbGltaXRzIGFyZSBOVUxMIHRo
ZW4gbm8gbGltaXRzIGFyZSB1c2VkLgorICogaW5zdGFuY2VzIG9mIHRoaXMgdHlwZSBhcmUgbm90
IHRocmVhZC1zYWZlOyB1c2UgbG9ja2luZyBhcm91bmQgY2FsbHMgaW50bworICogdGhlIG9iamVj
dC4gKi8KK3RzZl9zdHJlYW1fZmlsZV9pbnB1dF90KgorICAgICAgICAgICAgICAgIHRzZl9zdHJl
YW1fZmlsZV9pbnB1dF9vcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl96aXBfcmRyX2F0dHJfdCAq
YXR0cik7CisKKy8qIG1ha2UgYSBzdHJlYW0gZmlsZSBpbnB1dCBoaWphY2sgYSBmaWxlIGRlc2Ny
aXB0b3IuICBpZiB0aGUgemlwIHJlYWRlcgorICogYXR0cmlidXRlcyBhcmUgTlVMTCB0aGVuIHRo
ZXkgYXJlIHNldCB0byB0aGUgZGVmYXVsdHMuCisgKgorICogaWYga2VlcCBpcyB0cnVlLCB0aGUg
ZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUgY2xvc2VkIHdoZW4KKyAqIHRzZl9zdHJlYW1fZmlsZV9p
bnB1dF9jbG9zZSgpIGlzIGNhbGxlZC4gIG90aGVyd2lzZSwgdGhlIGZpbGUKKyAqIGRlc2NyaXB0
b3Igd2lsbCByZW1haW4gb3Blbi4gKi8KK3RzZl9zdHJlYW1fZmlsZV9pbnB1dF90KgorICAgICAg
ICAgICAgICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9mZF9vcGVuKGludCBmZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zfemlw
X3Jkcl9hdHRyX3QgKmF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX2Jvb2xfdCBrZWVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGJ1Zl9zaXplKTsKKworLyogY2xvc2UgYSBmaWxlIHRo
YXQgd2FzIG9wZW5uZWQgZm9yIHJlYWRpbmcuICovCit2b2lkICAgICAgICAgICAgdHNmX3N0cmVh
bV9maWxlX2lucHV0X2Nsb3NlKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICpmaWxlKTsKKworLyog
cmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlIGFsbG93cyBjb21wcmVzc2lvbi4gIGNvbXByZXNzZWQg
ZmlsZXMgaGF2ZSBzb21lCisgKiBsaW1pdGF0aW9ucy4gIGZvciBleGFtcGxlLCBtYXJrICYgc2Vl
ayBpcyBub3Qgc3VwcG9ydGVkIGZvciBjb21wcmVzc2VkCisgKiBmaWxlcy4gKi8KK3RzZl9ib29s
X3QgICAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfYWxsb3dzX2NvbXByZXNzaW9uKHRzZl9zdHJl
YW1fZmlsZV9pbnB1dF90ICpmaWxlKTsKKworLyogcmVnaXN0ZXIgYSBjYWxsYmFjayB0aGF0IHdp
bGwgZ2V0IGNhbGxlZCBldmVyeSB0aW1lIHRoZSBpbnB1dCBtYW5hZ2VyCisgKiBlbmNvdW50ZXJz
IGEgbmV3IHR5cGUuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X3Jl
Z2lzdGVyX3R5cGVfY2JhY2sodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfY2JhY2tfdCBjYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisvKiB1bnJlZ2lzdGVyIGFsbCB0eXBl
IGNhbGxiYWNrcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBmdW5jdGlvbiBwb2ludGVyCisgKiBhbmQg
dm9pZCogYXJndW1lbnQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0
X3VucmVnaXN0ZXJfdHlwZV9jYmFjayh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl90eXBlX2NiYWNrX3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisvKiByZWFkIGEgYnVm
ZmVyIGZyb20gYSBmaWxlIHRoYXQgd2FzIG9wZW5uZWQgZm9yIHJlYWRpbmcuICovCit0c2ZfYnVm
ZmVyX3QqICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0
X3QgKmZpbGUpOworCisvKiBnZXQgdGhlIG1hcmsgb2YgdGhlIHRoaW5nIHlvdSBhcmUgYWJvdXQg
dG8gcmVhZC4gIHRoZSBtYXJrIGlzIHNvbWV0aGluZworICogdGhhdCB5b3UgZ2V0IHRvIGFsbG9j
YXRlLiAgYnV0IHlvdSBtdXN0IHRyZWF0IGl0IGFzIGFuIG9wYXF1ZSEKKyAqCisgKiBub3RlIHRo
YXQgbWFyayAmIHNlZWsgaXMgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXMgdGhhdCBhcmUgY29tcHJl
c3NlZC4KKyAqIGl0IGlzIGFsc28gbm90IHN1cHBvcnRlZCBpZiB0aGUgdW5kZXJseWluZyBmaWxl
IGRlc2NyaXB0b3IgZG9lcyBub3QKKyAqIHN1cHBvcnQgbHNlZWsoKS4gIGlmIHRoZSBmaWxlIGlz
IGNvbXByZXNzZWQsIHlvdSB3aWxsIGdldCBhCisgKiBUU0ZfRV9OT1RfU1VQUE9SVEVEIGVycm9y
LiAgaXQgaXMgcGVyZmVjdGx5IHNhZmUgKGFuZCBmYXN0KSB0byBkZXRlcm1pbmUKKyAqIGlmIGEg
ZmlsZSBpcyBjb21wcmVzc2VkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIHlvdSBjYW4gb2Yg
Y291cnNlCisgKiBhbHNvIHVzZSB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfaXNfY29tcHJlc3NlZCgp
LiAgaWYgdGhlIGZpbGUgZG9lcyBub3QKKyAqIHN1cHBvcnQgbHNlZWsoKSwgeW91IHdpbGwgZ2V0
IHNvbWUgc29ydCBvZiBzeXN0ZW0gZXJyb3IsIHdoaWNoIG1heQorICogZGlmZmVyIGRlcGVuZGlu
ZyBvbiBob3cgd2VsbCB5b3VyIHN5c3RlbSBjb21wbGllcyB0byBQT1NJWC4gOi0pICovCit0c2Zf
Ym9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X2dldF9tYXJrKHRzZl9zdHJlYW1fZmls
ZV9pbnB1dF90ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2Zfc3RyZWFtX2ZpbGVfbWFya190ICptYXJrKTsKKworLyogc2VlayB0byBwcmV2
aW91c2x5IGFjcXVpcmVkIG1hcmsuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxl
X2lucHV0X3NlZWsodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHNmX3N0cmVhbV9maWxlX21hcmtf
dCAqbWFyayk7CisKKy8qIG9wZW4gYSBmaWxlIGZvciB3cml0aW5nLiAgaWYgdGhlIHppcCBhdHRy
aWJ1dGVzIGFyZSBOVUxMLCB0aGUgZGVmYXVsdAorICogb25lcyB3aWxsIGJlIHVzZWQgKHdoaWNo
IG1lYW5zIG5vIGNvbXByZXNzaW9uKS4gIGluc3RhbmNlcyBvZiB0aGlzIHR5cGUKKyAqIGFyZSBu
b3QgdGhyZWFkLXNhZmU7IHVzZSBsb2NraW5nIHdoZW4gY2FsbGluZyBpdHMgbWV0aG9kcy4gKi8K
K3RzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCoKKyAgICAgICAgICAgICAgICB0c2Zfc3RyZWFtX2Zp
bGVfb3V0cHV0X29wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgYXBwZW5kLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKmF0dHIp
OworCisvKiBtYWtlIGEgc3RyZWFtIGZpbGUgb3V0cHV0IGhpamFjayBhIGZpbGUgZGVzY3JpcHRv
ci4gIGlmIGtlZXAgaXMgdHJ1ZSwgdGhlCisgKiBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9z
ZWQgd2hlbiB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2Nsb3NlKCkgaXMKKyAqIGNhbGxlZC4gIG90
aGVyd2lzZSwgaXQgd2lsbCByZW1haW4gb3Blbi4gKi8KK3RzZl9zdHJlYW1fZmlsZV9vdXRwdXRf
dCoKKyAgICAgICAgICAgICAgICB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2ZkX29wZW4oaW50IGZk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zfemlw
X3d0cl9hdHRyX3QgKmF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRzZl9ib29sX3Qga2VlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgYnVmX3NpemUpOworCisvKiBmbHVzaCBhbmQgY2xv
c2UgYSBzdHJlYW0gZmlsZSBvdXRwdXQuICByZXR1cm5zIHRzZl90cnVlIGlmIHRoZSBmbHVzaGlu
ZworICogd2VudCBPSyBhbmQgdHNmX2ZhbHNlIGlmIGl0IGRpZG4ndC4gIHRoZSBmaWxlIGdldHMg
Y2xvc2VkIGVpdGhlciB3YXksCisgKiB0aG91Z2guICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0
cmVhbV9maWxlX291dHB1dF9jbG9zZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKmZpbGUpOwor
CisvKiBmbHVzaCB0aGUgc3RyZWFtIGZpbGUgb3V0cHV0LiAgaWYgdGhpcyBmYWlscywgdGhlIHN0
cmVhbSBiZWNvbWVzIGNvcnJ1cHQKKyAqIGF0IHRoZSBwb2ludCBvZiBmYWlsdXJlIGFuZCBzaG91
bGQgbm90IGJlIHVzZWQuICovCit0c2ZfYm9vbF90ICAgICAgdHNmX3N0cmVhbV9maWxlX291dHB1
dF9mbHVzaCh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKmZpbGUpOworCisvKiB3cml0ZSBzb21l
dGhpbmcgaW50byB0aGUgZmlsZS4gIGlmIHRoaXMgZmFpbHMsIHRoZSBzdHJlYW0gYmVjb21lcyBj
b3JydXB0CisgKiBhdCB0aGUgcG9pbnQgb2YgZmFpbHVyZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2Vk
LiAqLwordHNmX2Jvb2xfdCAgICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfd3JpdGUodHNmX3N0
cmVhbV9maWxlX291dHB1dF90ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWZmZXIpOworCisvKiBvcGVuIGEgZmlsZXN5
c3RlbSBkYXRhYmFzZS4gIGEgZmlsZXN5c3RlbSBkYXRhYmFzZSBhbGxvd3MgZm9yIGtleS12YWx1
ZQorICogc3RvcmFnZSBvcHRpbWl6ZWQgZm9yIHN0b3JpbmcgaHVnZSB2YWx1ZXMuIGFkZGl0aW9u
YWxseSwgYSBmaWxlc3lzdGVtCisgKiBkYXRhYmFzZSBhbGxvd3MgYSB2YWx1ZSB0byBjb25zaXN0
IG9mIGEgc2VxdWVuY2Ugb2YgYnVmZmVycyAoaS5lLiBhCisgKiBzdHJlYW0pLCBhbmQgaXQgaGFz
IHN1cHBvcnQgZm9yIGNvbm5lY3RpbmcgdG8gYSByZW1vdGUgZGF0YWJhc2UuCisgKgorICogb25l
IG9mIHRoZSBtYWluIGZlYXR1cmVzIG9mIEZTREIgaXMgaXRzIGV4Y2VsbGVudCBjb25jdXJyZW5j
eSBzdXBwb3J0LgorICogZXZlbiBpZiBhbiBGU0RCIGlzIG9wZW5lZCBieSBtdWx0aXBsZSBkaWZm
ZXJlbnQgcHJvY2Vzc2VzLCBvciBtdWx0aXBsZQorICogdGhyZWFkcyBpbiBhIHNpbmdsZSBwcm9j
ZXNzLCBvciBtdWx0aXBsZSB0aHJlYWRzIHNoYXJlIHRoZSBzYW1lCisgKiB0c2ZfZnNkYl90KiBo
YW5kbGUsIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgZ3VhcmFudGVlZDoKKyAqCisgKiAt
IHRzZl9mc2RiX3B1dCgpIGlzIG5vdCB2aXNpYmxlIHVubGVzcyB0aGVyZSBpcyBhIHN1YnNlcXVl
bnQKKyAqICAgdHNmX2ZzZGJfb3V0X2NvbW1pdCgpLgorICoKKyAqIC0gaWYgbXVsdGlwbGUgdHNm
X2ZzZGJfb3V0X2NvbW1pdCgpJ3MgYXJlIHJ1biB1c2luZyB0aGUgc2FtZSBrZXksCisgKiAgIHRo
ZW4gYW55IHRzZl9mc2RiX2dldCgpJ3MgYmVoYXZlIGFzIGlmIHRoZSBvbmx5IHRzZl9mc2RiX3B1
dCgpCisgKiAgIGFuZCB0c2ZfZnNkYl9vdXRfY29tbWl0KCkgdGhhdCBoYWQgZXZlciBiZWVuIGV4
ZWN1dGVkIHdhcyB0aGUgbGFzdAorICogICBvbmUgYXQgdGhlIHRpbWUgb2YgdGhlIHRzZl9mc2Ri
X2dldCgpLgorICoKKyAqIC0gdHNmX2ZzZGJfZ2V0KCkgcmV0dXJucyBhIHN0cmVhbSB0aGF0IGRv
ZXMgbm90IGNoYW5nZSBldmVuIGlmCisgKiAgIG5ldyB0c2ZfZnNkYl9wdXQoKS90c2ZfZnNkYl9v
dXRfd3JpdGUoKS90c2ZfZnNkYl9vdXRfY29tbWl0KCkgYXJlCisgKiAgIGV4ZWN1dGVkIG9uIHRo
ZSBzYW1lIGtleS4KKyAqCisgKiAtIHRzZl9mc2RiX291dF9hYm9ydCgpIG1ha2VzIGl0IGFwcGVh
ciBhcyBpZiB0aGUgdHNmX2ZzZGJfcHV0KCkgYW5kCisgKiAgIGFueSBzdWJzZXF1ZW50IHRzZl9m
c2RiX291dF93cml0ZSgpJ3MgbmV2ZXIgaGFwcGVuZWQuCisgKgorICogLSBpZiB0c2ZfZnNkYl9v
dXRfY29tbWl0KCkgZmFpbHMgaXQgaXMgbm8gZGlmZmVyZW50IHRoYW4gaWYgeW91IGhhZAorICog
ICBjYWxsZWQgdHNmX2ZzZGJfb3V0X2Fib3J0KCkuCisgKgorICogVGhlc2UgcHJvcGVydGllcyBh
cmUgZ3VhcmFudGVlZCBldmVuIHdoZW4gYWNjZXNzaW5nIHRoZSBkYXRhYmFzZQorICogdXNpbmcg
ZGlmZmVyZW50IHRzZl9mc2RiX3QqIGhhbmRsZXMgKGV2ZW4gZnJvbSBzZXBhcmF0ZSBwcm9jZXNz
ZXMpLAorICogc28gbG9uZyBhcyB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtIHN1cHBvcnRzIHRo
ZSBhdG9taWNpdHkKKyAqIGd1YXJhbnRlZXMgb2Ygb3BlbihPX0VYQ0wpIGFuZCByZW5hbWUoKS4K
KyAqCisgKiBUaGUgbWVtb3J5IG1hbmFnZW1lbnQgaXMgc3VjaCB0aGF0IHRoZSBGU0RCIEFQSSBu
ZXZlciBjbGFpbXMKKyAqIG93bmVyc2hpcCBvZiBhbnkgb2JqZWN0cywgYnV0IHRoZSB0c2ZfZnNk
Yl90KiBtdXN0IGJlIGtlcHQgYWxpdmUgc28KKyAqIGxvbmcgYXMgdGhlcmUgYXJlIHRzZl9mc2Ri
X2luX3QqIG9yIHRzZl9mc2RiX291dF90KiB0aGF0IGhhdmUgYmVlbgorICogY3JlYXRlZCBmcm9t
IGl0LiAqLwordHNmX2ZzZGJfdCogICAgIHRzZl9mc2RiX29wZW5fbG9jYWwoY29uc3QgY2hhciAq
ZGlybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNf
dCAqbGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3ppcF9y
ZHJfYXR0cl90ICp6aXBfcmRyX2F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnppcF93dHJfYXR0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgdXBkYXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCB0cnVuY2F0ZSk7CisKKy8qIG9wZW4gYSByZW1v
dGUgRlNEQiBkYXRhYmFzZSB1c2luZyBhIGhvc3QgYW5kIHBvcnQuICovCit0c2ZfZnNkYl90KiAg
ICAgdHNmX2ZzZGJfb3Blbl9yZW1vdGUoY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfemlwX3Jkcl9hdHRyX3QgKnppcF9yZHJfYXR0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnppcF93
dHJfYXR0cik7CisKKy8qIGNsb3NlIGEgZmlsZXN5c3RlbSBkYXRhYmFzZS4gKi8KK3ZvaWQgICAg
ICAgICAgICB0c2ZfZnNkYl9jbG9zZSh0c2ZfZnNkYl90ICpmc2RiKTsKKworLyogb3BlbiBhIHN0
cmVhbSB0byB3cml0ZSBhIHNlcXVlbmNlIG9mIHZhbHVlcyBhdCBhIGtleSBpbiB0aGUgZGF0YWJh
c2UuICovCit0c2ZfZnNkYl9vdXRfdCogdHNmX2ZzZGJfcHV0KHRzZl9mc2RiX3QgKmZzZGIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqa2V5KTsKKworLyogb3Bl
biBhIHN0cmVhbSB0byByZWFkIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIGF0IGEga2V5IGluIHRoZSBk
YXRhYmFzZS4gKi8KK3RzZl9mc2RiX2luX3QqICB0c2ZfZnNkYl9nZXQodHNmX2ZzZGJfdCAqZnNk
YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICprZXkpOworCisv
KiBkZWxldGUgYW4gZW50cnkgZnJvbSB0aGUgZGF0YWJhc2UuICovCit0c2ZfYm9vbF90ICAgICAg
dHNmX2ZzZGJfcm0odHNmX2ZzZGJfdCAqZnNkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfYnVmZmVyX3QgKmtleSk7CisKKy8qIGNsb3NlIGEgZmlsZXN5c3RlbSBkYXRhYmFzZSBp
bnB1dCBzdHJlYW0uICovCit2b2lkICAgICAgICAgICAgdHNmX2ZzZGJfaW5fY2xvc2UodHNmX2Zz
ZGJfaW5fdCAqaW4pOworCisvKiByZWFkIGEgYnVmZmVyIGZyb20gYSBmaWxlc3lzdGVtIGRhdGFi
YXNlIGlucHV0IHN0cmVhbS4gKi8KK3RzZl9idWZmZXJfdCogICB0c2ZfZnNkYl9pbl9yZWFkKHRz
Zl9mc2RiX2luX3QgKmluKTsKKworLyogY29tbWl0IGEgZmlsZXN5c3RlbSBkYXRhYmFzZSBvdXRw
dXQgc3RyZWFtLCBhbmQgZGVzdHJveSB0aGUgc3RyZWFtLgorICogaWYgdGhpcyBleHBlcmllbmNl
cyBhbiBlcnJvciwgdGhlbiBpdCBtZWFucyB0aGF0IHRoZSBzdHJlYW0gaXMKKyAqIGF1dG9tYXRp
Y2FsbHkgYWJvcnRlZC4gKi8KK3RzZl9ib29sX3QgICAgICB0c2ZfZnNkYl9vdXRfY29tbWl0KHRz
Zl9mc2RiX291dF90ICpvdXQpOworCisvKiBhYm9ydCBhIGZpbGVzeXN0ZW0gZGF0YWJhc2Ugb3V0
cHV0IHN0cmVhbSwgYW5kIGRlc3Ryb3kgdGhlIHN0cmVhbS4gKi8KK3ZvaWQgICAgICAgICAgICB0
c2ZfZnNkYl9vdXRfYWJvcnQodHNmX2ZzZGJfb3V0X3QgKm91dCk7CisKKy8qIHdyaXRlIHRvIGEg
ZmlsZXN5c3RlbSBkYXRhYmFzZSBvdXRwdXQgc3RyZWFtLiAqLwordHNmX2Jvb2xfdCAgICAgIHRz
Zl9mc2RiX291dF93cml0ZSh0c2ZfZnNkYl9vdXRfdCAqb3V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1Zik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfTsKKyNlbmRpZgorCisjZW5kaWYKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL3RzZl9hZGFwdGl2ZV9yZWFkZXIuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2FkYXB0aXZlX3JlYWRlci5jCShub25l
eGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYWRh
cHRpdmVfcmVhZGVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMTEgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0
c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2Zfc2VyaWFsX3Byb3RvY29sLmgiCisKKyNpZmRl
ZiBIQVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfQlpJ
UDIKKyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKKyNkZWZpbmUgQ3oocmVhZGVyKSAoKHpf
c3RyZWFtKikoKHJlYWRlciktPnN0cmVhbSkpCisjZGVmaW5lIENieihyZWFkZXIpICgoYnpfc3Ry
ZWFtKikoKHJlYWRlciktPnN0cmVhbSkpCisKK3N0YXRpYyB0c2ZfYm9vbF90IHRlYXJfZG93bl9t
b2RlKHRzZl9hZHB0X3Jkcl90ICpyZWFkZXIsCisJCQkJIHVpbnQ4X3QgKipzcGlsbG92ZXIsCisJ
CQkJIHVpbnQzMl90ICpzcGlsbG92ZXJfbGVuKSB7CisgICAgdHNmX2Jvb2xfdCBzdGlsbG9rPXRz
Zl90cnVlOworICAgIGlmIChyZWFkZXItPm1vZGU9PVRTRl9aSVBfWkxJQikgeworI2lmZGVmIEhB
VkVfWkxJQgorCWluZmxhdGVFbmQoQ3oocmVhZGVyKSk7CisjZW5kaWYKKyAgICB9IGVsc2UgaWYg
KHJlYWRlci0+bW9kZT09VFNGX1pJUF9CWklQMikgeworI2lmZGVmIEhBVkVfQlpJUDIKKwlCWjJf
YnpEZWNvbXByZXNzRW5kKENieihyZWFkZXIpKTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAocmVh
ZGVyLT5tb2RlPT1UU0ZfWklQX1pMSUIgfHwKKwlyZWFkZXItPm1vZGU9PVRTRl9aSVBfQlpJUDIp
IHsKKwlmcmVlKHJlYWRlci0+c3RyZWFtKTsKKwlpZiAoc3BpbGxvdmVyIT1OVUxMICYmIHNwaWxs
b3Zlcl9sZW4hPU5VTEwpIHsKKwkgICAgKnNwaWxsb3Zlcj1tYWxsb2MocmVhZGVyLT5hYnN0cmFj
dC5hdmFpbF9pbik7CisJICAgIGlmICgqc3BpbGxvdmVyPT1OVUxMKSB7CisJCXRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBzcGlsbG92ZXIgYnVmZmVyIik7CisJCXN0aWxsb2s9dHNm
X2ZhbHNlOworCSAgICB9IGVsc2UgeworCQkqc3BpbGxvdmVyX2xlbj1yZWFkZXItPmFic3RyYWN0
LmF2YWlsX2luOworCQltZW1jcHkoKnNwaWxsb3ZlcixyZWFkZXItPmFic3RyYWN0Lm5leHRfaW4s
KnNwaWxsb3Zlcl9sZW4pOworCSAgICB9CisJfQorICAgIH0gZWxzZSBpZiAocmVhZGVyLT5tb2Rl
PT1UU0ZfWklQX05PTkUpIHsKKwlpZiAoc3BpbGxvdmVyIT1OVUxMICYmIHNwaWxsb3Zlcl9sZW4h
PU5VTEwpIHsKKwkgICAgKnNwaWxsb3Zlcj1tYWxsb2MocmVhZGVyLT5wdXRpLXJlYWRlci0+Z2V0
aSk7CisJICAgIGlmICgqc3BpbGxvdmVyPT1OVUxMKSB7CisJCXRzZl9zZXRfZXJybm8oIkNvdWxk
IG5vdCBhbGxvY2F0ZSBzcGlsbG92ZXIgYnVmZmVyIik7CisJCXN0aWxsb2s9dHNmX2ZhbHNlOwor
CSAgICB9IGVsc2UgeworCQkqc3BpbGxvdmVyX2xlbj1yZWFkZXItPnB1dGktcmVhZGVyLT5nZXRp
OworCQltZW1jcHkoKnNwaWxsb3ZlcixyZWFkZXItPmJ1ZityZWFkZXItPmdldGksKnNwaWxsb3Zl
cl9sZW4pOworCSAgICB9CisJfQorICAgIH0KKyAgICBpZiAocmVhZGVyLT5tb2RlIT1UU0ZfWklQ
X1VOS05PV04pIHsKKwlmcmVlKHJlYWRlci0+YnVmKTsKKyAgICB9CisgICAgcmVhZGVyLT5zdHJl
YW09TlVMTDsKKyAgICByZWFkZXItPmJ1Zj1OVUxMOworICAgIHJlYWRlci0+YnVmX3NpemU9MDsK
KyAgICByZWFkZXItPm1vZGU9VFNGX1pJUF9VTktOT1dOOworICAgIHJldHVybiBzdGlsbG9rOwor
fQorCitzdGF0aWMgdHNmX2Jvb2xfdCB0ZWFyX3RvX25vbmUodHNmX2FkcHRfcmRyX3QgKnJlYWRl
cikgeworICAgIHRzZl9hc3NlcnQocmVhZGVyLT5tb2RlPT1UU0ZfWklQX1pMSUIgfHwKKwkgICAg
ICAgcmVhZGVyLT5tb2RlPT1UU0ZfWklQX0JaSVAyKTsKKyAgICBpZiAocmVhZGVyLT5tb2RlPT1U
U0ZfWklQX1pMSUIpIHsKKyNpZmRlZiBIQVZFX1pMSUIKKwlpbmZsYXRlRW5kKEN6KHJlYWRlcikp
OworI2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZmRlZiBIQVZFX0JaSVAyCisJQloyX2J6RGVjb21w
cmVzc0VuZChDYnoocmVhZGVyKSk7CisjZW5kaWYKKyAgICB9CisgICAgZnJlZShyZWFkZXItPnN0
cmVhbSk7CisgICAgcmVhZGVyLT5tb2RlPVRTRl9aSVBfVU5LTk9XTjsKKyAgICBpZiAocmVhZGVy
LT5ub3ppcF9idWZfc2l6ZT09cmVhZGVyLT5idWZfc2l6ZSkgeworCXJlYWRlci0+Z2V0aT1yZWFk
ZXItPmFic3RyYWN0Lm5leHRfaW4tcmVhZGVyLT5idWY7CisJcmVhZGVyLT5wdXRpPXJlYWRlci0+
Z2V0aStyZWFkZXItPmFic3RyYWN0LmF2YWlsX2luOworICAgIH0gZWxzZSB7CisJdWludDhfdCAq
YnVmOworCXJlYWRlci0+YnVmX3NpemU9dHNmX21heChyZWFkZXItPm5vemlwX2J1Zl9zaXplLAor
CQkJCSByZWFkZXItPmFic3RyYWN0LmF2YWlsX2luKTsKKwlidWY9bWFsbG9jKHJlYWRlci0+YnVm
X3NpemUpOworCWlmIChidWY9PU5VTEwpIHsKKwkgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90
IGFsbG9jYXRlIGJ1ZmZlciBpbiB0ZWFyX3RvX25vbmUoKSBpbiAiCisJCQkgICJ0c2ZfYWRhcHRp
dmVfcmVhZGVyLmMiKTsKKwkgICAgZnJlZShyZWFkZXItPmJ1Zik7CisJICAgIC8qIG9oIG1hbiwg
dGhpcyBsZWF2ZXMgdGhlIHJlYWRlciBpbiBhIGZsYWt5IHN0YXRlICovCisJICAgIHJldHVybiB0
c2ZfZmFsc2U7CisJfQorCW1lbWNweShidWYsCisJICAgICAgIHJlYWRlci0+YWJzdHJhY3QubmV4
dF9pbiwKKwkgICAgICAgcmVhZGVyLT5hYnN0cmFjdC5hdmFpbF9pbik7CisJZnJlZShyZWFkZXIt
PmJ1Zik7CisJcmVhZGVyLT5nZXRpPTA7CisJcmVhZGVyLT5wdXRpPXJlYWRlci0+YWJzdHJhY3Qu
YXZhaWxfaW47CisJcmVhZGVyLT5idWY9YnVmOworICAgIH0KKyAgICByZWFkZXItPm1vZGU9VFNG
X1pJUF9OT05FOworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIHRzZl9ib29sX3Qg
c2VsZWN0X21vZGUodHNmX2FkcHRfcmRyX3QgKnJlYWRlciwKKwkJCSAgICAgIHVpbnQ4X3QgKnNw
aWxsb3ZlciwKKwkJCSAgICAgIHVpbnQzMl90IHNwaWxsb3Zlcl9sZW4sCisJCQkgICAgICB0c2Zf
Ym9vbF90IGZyZWVfc3BpbGxvdmVyKSB7CisgICAgdWludDhfdCBtYWdpY1s0XTsKKyAgICB1aW50
MzJfdCB0b2NvcHk9dHNmX21pbig0LHNwaWxsb3Zlcl9sZW4pOworICAgIHZvaWQgKnRvZnJlZTsK
KyAgICBpZiAoZnJlZV9zcGlsbG92ZXIgJiYgc3BpbGxvdmVyX2xlbj4wKSB7CisJdG9mcmVlPXNw
aWxsb3ZlcjsKKyAgICB9IGVsc2UgeworCXRvZnJlZT1OVUxMOworICAgIH0KKyAgICBtZW1jcHko
bWFnaWMsc3BpbGxvdmVyLHRvY29weSk7CisgICAgc3BpbGxvdmVyKz10b2NvcHk7CisgICAgc3Bp
bGxvdmVyX2xlbi09dG9jb3B5OworICAgIGlmICh0b2NvcHk8NCkgeworCXRzZl9hc3NlcnQoc3Bp
bGxvdmVyX2xlbj09MCk7CisJaWYgKCF0c2ZfZnVsbF9yZWFkX29mX3BhcnRpYWwocmVhZGVyLT5y
ZWFkZXIscmVhZGVyLT5yZWFkZXJfYXJnLAorCQkJCSAgICAgIG1hZ2ljK3RvY29weSw0LXRvY29w
eSkpIHsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCSAgICByZXR1cm4g
dHNmX2ZhbHNlOworCX0KKyAgICB9CisgICAgaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX01BR0lD
X0NPREUsVFNGX1NQX01BR0lDX0xFTikpIHsKKwlyZWFkZXItPmJ1Zl9zaXplPXRzZl9tYXgocmVh
ZGVyLT5ub3ppcF9idWZfc2l6ZSwKKwkJCQkgc3BpbGxvdmVyX2xlbitUU0ZfU1BfTUFHSUNfTEVO
KTsKKwlyZWFkZXItPmJ1Zj1tYWxsb2MocmVhZGVyLT5idWZfc2l6ZSk7CisJaWYgKHJlYWRlci0+
YnVmPT1OVUxMKSB7CisJICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBidWZm
ZXIiKTsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCSAgICByZXR1cm4g
dHNmX2ZhbHNlOworCX0KKwltZW1jcHkocmVhZGVyLT5idWYsc3BpbGxvdmVyLHNwaWxsb3Zlcl9s
ZW4pOworCW1lbWNweShyZWFkZXItPmJ1ZitzcGlsbG92ZXJfbGVuLFRTRl9TUF9NQUdJQ19DT0RF
LFRTRl9TUF9NQUdJQ19MRU4pOworCXJlYWRlci0+cHV0aT1zcGlsbG92ZXJfbGVuK1RTRl9TUF9N
QUdJQ19MRU47CisJcmVhZGVyLT5nZXRpPTA7CisJaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2Zy
ZWUpOworCXJlYWRlci0+bW9kZT1UU0ZfWklQX05PTkU7CisgICAgfSBlbHNlIGlmICghbWVtY21w
KG1hZ2ljLFRTRl9TUF9CWklQMl9NQUdJQ19DT0RFLFRTRl9TUF9NQUdJQ19MRU4pIHx8CisJICAg
ICAgICFtZW1jbXAobWFnaWMsVFNGX1NQX1pMSUJfTUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVO
KSkgeworCWludCByZXM7CisJCisJaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX1pMSUJfTUFHSUNf
Q09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkgeworCSAgICByZWFkZXItPmJ1Zl9zaXplPXRzZl9tYXgo
cmVhZGVyLT5hdHRyLnouYnVmX3NpemUsc3BpbGxvdmVyX2xlbik7CisJfSBlbHNlIHsKKwkgICAg
cmVhZGVyLT5idWZfc2l6ZT10c2ZfbWF4KHJlYWRlci0+YXR0ci5iLmJ1Zl9zaXplLHNwaWxsb3Zl
cl9sZW4pOworCX0KKworCXJlYWRlci0+YnVmPW1hbGxvYyhyZWFkZXItPmJ1Zl9zaXplKTsKKwlp
ZiAocmVhZGVyLT5idWY9PU5VTEwpIHsKKwkgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFs
bG9jYXRlIGJ1ZmZlciIpOworCSAgICBpZiAodG9mcmVlIT1OVUxMKSBmcmVlKHRvZnJlZSk7CisJ
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisJfQorCQorCW1lbWNweShyZWFkZXItPmJ1ZixzcGlsbG92
ZXIsc3BpbGxvdmVyX2xlbik7CisJaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCQor
CXJlYWRlci0+YWJzdHJhY3QubmV4dF9pbj1yZWFkZXItPmJ1ZjsKKwlyZWFkZXItPmFic3RyYWN0
LmF2YWlsX2luPXNwaWxsb3Zlcl9sZW47CisJCisJaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX1pM
SUJfTUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkgeworCSAgICBpZiAoIXJlYWRlci0+YXR0
ci56LmFsbG93KSB7CisJCXRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisJCQkgICAg
ICAiVGhlIHN0cmVhbSBpcyBjb21wcmVzc2VkIHVzaW5nIFpMaWIsIGJ1dCAiCisJCQkgICAgICAi
dGhlIGdpdmVuIGF0dHJpYnV0ZXMgc3BlY2lmeSB0aGF0ICIKKwkJCSAgICAgICJaTGliIGlzIG5v
dCBhbGxvd2VkIik7CisJCWlmICh0b2ZyZWUhPU5VTEwpIGZyZWUodG9mcmVlKTsKKwkJZnJlZShy
ZWFkZXItPmJ1Zik7CisJCXJldHVybiB0c2ZfZmFsc2U7CisJICAgIH0KKyNpZmRlZiBIQVZFX1pM
SUIKKwkgICAgcmVhZGVyLT5zdHJlYW09bWFsbG9jKHNpemVvZih6X3N0cmVhbSkpOworCSAgICBp
ZiAocmVhZGVyLT5zdHJlYW09PU5VTEwpIHsKKwkJdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1h
bGxvYyB6X3N0cmVhbSIpOworCQlmcmVlKHJlYWRlci0+YnVmKTsKKwkJcmV0dXJuIHRzZl9mYWxz
ZTsKKwkgICAgfQorCSAgICAKKwkgICAgQ3oocmVhZGVyKS0+emFsbG9jPU5VTEw7CisJICAgIEN6
KHJlYWRlciktPnpmcmVlPU5VTEw7CisJICAgIEN6KHJlYWRlciktPm9wYXF1ZT1OVUxMOworCSAg
ICAKKwkgICAgaWYgKHJlYWRlci0+YXR0ci56LmFkdmFuY2VkX2luaXQpIHsKKwkJcmVzPWluZmxh
dGVJbml0MihDeihyZWFkZXIpLAorCQkJCSByZWFkZXItPmF0dHIuei53aW5kb3dCaXRzKTsKKwkg
ICAgfSBlbHNlIHsKKwkJcmVzPWluZmxhdGVJbml0KEN6KHJlYWRlcikpOworCSAgICB9CisJICAg
IGlmIChyZXMhPVpfT0spIHsKKwkJdHNmX3NldF96bGliX2Vycm9yKHJlcyxDeihyZWFkZXIpLT5t
c2csCisJCQkJICAgIlRyeWluZyB0byBpbml0aWFsaXplIGluZmxhdGlvbiBpbiBaTGliIik7CisJ
CWZyZWUoQ3oocmVhZGVyKSk7CisJCWZyZWUocmVhZGVyLT5idWYpOworCQlyZXR1cm4gdHNmX2Zh
bHNlOworCSAgICB9CisJICAgIHJlYWRlci0+bW9kZT1UU0ZfWklQX1pMSUI7CisjZWxzZQorCSAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisJCQkgICJUU0ZfWklQX1pMSUIg
aXMgbm90IHN1cHBvcnRlZCBieSAiCisJCQkgICJ0c2ZfemlwX3JlYWRlcl9jcmVhdGUoKSBiZWNh
dXNlIFpMaWIgc3VwcG9ydCAiCisJCQkgICJ3YXMgbm90IGNvbmZpZ3VyZWQgaW50byB0aGUgVFNG
IGxpYnJhcnkiKTsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUpOworCSAgICBm
cmVlKHJlYWRlci0+YnVmKTsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyNlbmRpZgorCX0gZWxz
ZSB7CisJICAgIGlmICghcmVhZGVyLT5hdHRyLmIuYWxsb3cpIHsKKwkJdHNmX3NldF9lcnJvcihU
U0ZfRV9QQVJTRV9FUlJPUiwKKwkJCSAgICAgICJUaGUgc3RyZWFtIGlzIGNvbXByZXNzZWQgdXNp
bmcgbGliYnppcDIsIGJ1dCAiCisJCQkgICAgICAidGhlIGdpdmVuIGF0dHJpYnV0ZXMgc3BlY2lm
eSB0aGF0ICIKKwkJCSAgICAgICJsaWJiemlwMiBpcyBub3QgYWxsb3dlZCIpOworCQlpZiAodG9m
cmVlIT1OVUxMKSBmcmVlKHRvZnJlZSk7CisJCWZyZWUocmVhZGVyLT5idWYpOworCQlyZXR1cm4g
dHNmX2ZhbHNlOworCSAgICB9CisjaWZkZWYgSEFWRV9CWklQMgorICAgICAgICAgICAgcmVhZGVy
LT5zdHJlYW09bWFsbG9jKHNpemVvZihiel9zdHJlYW0pKTsKKyAgICAgICAgICAgIGlmIChyZWFk
ZXItPnN0cmVhbT09TlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxk
IG5vdCBtYWxsb2MgYnpfc3RyZWFtIik7CisJCWZyZWUocmVhZGVyLT5idWYpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIENieihyZWFkZXIpLT5iemFsbG9jPU5VTEw7CisgICAgICAgICAgICBDYnoocmVh
ZGVyKS0+YnpmcmVlPU5VTEw7CisgICAgICAgICAgICBDYnoocmVhZGVyKS0+b3BhcXVlPU5VTEw7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlcz1CWjJfYnpEZWNvbXByZXNzSW5pdChDYnoo
cmVhZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXItPmF0
dHIuYi52ZXJib3NpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZGVyLT5hdHRyLmIuc21hbGwpOworICAgICAgICAgICAgaWYgKHJlcyE9QlpfT0spIHsKKyAgICAg
ICAgICAgICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKHJlcywKKyAgICAgICAgICAgICAgICAg
ICAgIlRyeWluZyB0byBpbml0aWFsaXplIGRlY29tcHJlc3Npb24gaW4gbGliYnppcDIiKTsKKyAg
ICAgICAgICAgICAgICBmcmVlKENieihyZWFkZXIpKTsKKwkJZnJlZShyZWFkZXItPmJ1Zik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorCSAgICByZWFkZXItPm1vZGU9VFNGX1pJUF9CWklQMjsKKyNlbHNlCisgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJUU0ZfWklQX0JaSVAyIGlzIG5vdCBzdXBwb3J0ZWQgYnkgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAidHNmX3ppcF9yZWFkZXJfY3JlYXRlKCkgYmVjYXVzZSBsaWJiemlwMiAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHdhcyBub3QgY29uZmlndXJlZCBp
bnRvIHRoZSBUU0YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIpOworCSAg
ICBmcmVlKHJlYWRlci0+YnVmKTsKKwkgICAgaWYgKHRvZnJlZSE9TlVMTCkgZnJlZSh0b2ZyZWUp
OworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyNlbmRpZgorCX0KKyAgICB9IGVsc2Ug
eworCWlmICh0b2ZyZWUhPU5VTEwpIGZyZWUodG9mcmVlKTsKKwl0c2Zfc2V0X2Vycm9yKFRTRl9F
X1BBUlNFX0VSUk9SLAorCQkgICAgICAiTm90IGEgdmFsaWQgbWFnaWMgY29kZSBmb3IgYW55IFRT
RiBzdHJlYW0gZmlsZSBmb3JtYXQiKTsKKwlyZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90IHRlYXJfZG93bl9hbmRfc2Vs
ZWN0X21vZGUodHNmX2FkcHRfcmRyX3QgKnJlYWRlcikgeworICAgIHVpbnQ4X3QgKnNwaWxsb3Zl
cjsKKyAgICB1aW50MzJfdCBzcGlsbG92ZXJfbGVuOworICAgIHJldHVybiB0ZWFyX2Rvd25fbW9k
ZShyZWFkZXIsJnNwaWxsb3Zlciwmc3BpbGxvdmVyX2xlbikKKwkmJiBzZWxlY3RfbW9kZShyZWFk
ZXIsc3BpbGxvdmVyLHNwaWxsb3Zlcl9sZW4sdHNmX3RydWUpOworfQorCit0c2ZfYWRwdF9yZHJf
dCAqdHNmX2FkYXB0aXZlX3JlYWRlcl9jcmVhdGUodHNmX3BhcnRpYWxfcmVhZGVyX3QgcmVhZGVy
LAorCQkJCQkgICB2b2lkICpyZWFkZXJfYXJnLAorCQkJCQkgICB1aW50MzJfdCBub3ppcF9idWZf
c2l6ZSwKKwkJCQkJICAgY29uc3QgdHNmX3ppcF9yZHJfYXR0cl90ICphdHRyKSB7CisgICAgdHNm
X2FkcHRfcmRyX3QgKnJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9hZHB0X3Jkcl90KSk7CisgICAg
aWYgKHJlc3VsdD09TlVMTCkgeworCXRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNm
X2FkcHRfcmRyX3QiKTsKKwlyZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5t
b2RlPVRTRl9aSVBfVU5LTk9XTjsKKyAgICAKKyAgICByZXN1bHQtPnJlYWRlcj1yZWFkZXI7Cisg
ICAgcmVzdWx0LT5yZWFkZXJfYXJnPXJlYWRlcl9hcmc7CisgICAgCisgICAgcmVzdWx0LT5zdHJl
YW09TlVMTDsKKyAgICByZXN1bHQtPmV4cGVjdF9zd2l0Y2g9dHNmX3RydWU7CisgICAgCisgICAg
cmVzdWx0LT5idWY9TlVMTDsKKyAgICByZXN1bHQtPmJ1Zl9zaXplPTA7CisgICAgCisgICAgaWYg
KGF0dHI9PU5VTEwpIHsKKwl0c2ZfemlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KCYocmVzdWx0LT5h
dHRyKSk7CisgICAgfSBlbHNlIHsKKwlyZXN1bHQtPmF0dHI9KmF0dHI7CisgICAgfQorICAgIHJl
c3VsdC0+bm96aXBfYnVmX3NpemU9bm96aXBfYnVmX3NpemU7CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCB0c2ZfYWRhcHRpdmVfcmVhZGVyX2Rlc3Ryb3kodHNmX2FkcHRfcmRy
X3QgKnJlYWRlcikgeworICAgIHRlYXJfZG93bl9tb2RlKHJlYWRlcixOVUxMLE5VTEwpOworICAg
IGZyZWUocmVhZGVyKTsKK30KKwordm9pZCB0c2ZfYWRhcHRpdmVfcmVhZGVyX2hpbnRfc3dpdGNo
KHRzZl9hZHB0X3Jkcl90ICpyZWFkZXIpIHsKKyAgICByZWFkZXItPmV4cGVjdF9zd2l0Y2g9dHNm
X3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX2FkYXB0aXZlX3JlYWRlcl9yZWFkKHZvaWQgKl9y
ZWFkZXIsCisJCQkJICAgIHZvaWQgKl9kYXRhLAorCQkJCSAgICB1aW50MzJfdCBsZW4pIHsKKyAg
ICB0c2ZfYWRwdF9yZHJfdCAqcmVhZGVyPV9yZWFkZXI7CisgICAgdWludDhfdCAqZGF0YT1fZGF0
YTsKKyAgICAKKyAgICBpZiAobGVuPT0wKSB7CisJcmV0dXJuIHRzZl90cnVlOworICAgIH0KKyAg
ICAKKyAgICAvKiB0aGlzIGp1c3QgY29uc3RpdHV0ZXMgbGF6eSBpbml0aWFsaXphdGlvbiB1cG9u
IHJlYWQgKi8KKyAgICBpZiAocmVhZGVyLT5tb2RlPT1UU0ZfWklQX1VOS05PV04pIHsKKwlpZiAo
IXNlbGVjdF9tb2RlKHJlYWRlcixOVUxMLDAsdHNmX2ZhbHNlKSkgeworCSAgICByZXR1cm4gdHNm
X2ZhbHNlOworCX0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHJlYWRlci0+bW9kZSkgeworICAgIGNh
c2UgVFNGX1pJUF9OT05FOiB7CisJLyogb2sgLSB0aGlzIGNvZGUgaXMgY29tcGxpY2F0ZWQuICBp
dCBpcyBjb21wbGljYXRlZCBiZWNhdXNlIGl0CisJICAgbmVlZHMgdG8gZGVhbCB3aXRoIHRoZSBw
b3NzaWJpbGl0eSBvZiBhIGZvcm1hdCBjaGFuZ2UgLSBpZiB0aGUKKwkgICBtYWdpYyBjb2RlIGZv
ciBvbmUgb2YgdGhlIHppcCBmb3JtYXRzIGNvbWVzIGluLCB0aGlzIHRoaW5nJ3Mgam9iCisJICAg
aXMgdG8gcmVjb2duaXplIGl0IGFuZCBzd2l0Y2ggZnJvbSBuby16aXAgYnVmZmVyaW5nIHRvIHVu
emlwcGluZy4KKwkgICB3ZSB1c2UgdGhlIGhpbnRfc3dpdGNoKCkgZnVuY3Rpb24gY2FsbHMgYXMg
YSBoaW50IG9mIHdoZW4gdG8KKwkgICBsb29rIGZvciB0aGUgZm9ybWF0IGNoYW5nZXMuICovCisJ
aWYgKHJlYWRlci0+ZXhwZWN0X3N3aXRjaCAmJiByZWFkZXItPnB1dGk+cmVhZGVyLT5nZXRpKSB7
CisJICAgIHJlYWRlci0+ZXhwZWN0X3N3aXRjaD10c2ZfZmFsc2U7CisJICAgIGlmIChyZWFkZXIt
PmJ1ZltyZWFkZXItPmdldGldPT1UU0ZfU1BfQ19TV0lUQ0hfRk9STUFUKSB7CisJCWlmICghdGVh
cl9kb3duX2FuZF9zZWxlY3RfbW9kZShyZWFkZXIpKSB7CisJCSAgICByZXR1cm4gdHNmX2ZhbHNl
OworCQl9CisJCXJldHVybiB0c2ZfYWRhcHRpdmVfcmVhZGVyX3JlYWQocmVhZGVyLGRhdGEsbGVu
KTsKKwkgICAgfQorCX0KKwl1aW50MzJfdCB0b3JlYWQ9dHNmX21pbihyZWFkZXItPnB1dGktcmVh
ZGVyLT5nZXRpLGxlbik7CisJbWVtY3B5KGRhdGEscmVhZGVyLT5idWYrcmVhZGVyLT5nZXRpLHRv
cmVhZCk7CisJcmVhZGVyLT5nZXRpKz10b3JlYWQ7CisJZGF0YSs9dG9yZWFkOworCWxlbi09dG9y
ZWFkOworCWlmIChsZW4+cmVhZGVyLT5idWZfc2l6ZSkgeworCSAgICB0c2ZfYXNzZXJ0KHJlYWRl
ci0+Z2V0aT09cmVhZGVyLT5wdXRpKTsKKwkgICAgaWYgKHJlYWRlci0+ZXhwZWN0X3N3aXRjaCkg
eworCQlpbnQzMl90IHJlcz1yZWFkZXItPnJlYWRlcihyZWFkZXItPnJlYWRlcl9hcmcsCisJCQkJ
CSAgIGRhdGEsbGVuKTsKKwkJaWYgKHJlczwwKSB7CisJCSAgICByZXR1cm4gdHNmX2ZhbHNlOwor
CQl9CisJCXRzZl9hc3NlcnQocmVzPjApOworCQlpZiAoZGF0YVswXT09VFNGX1NQX0NfU1dJVENI
X0ZPUk1BVCkgeworCQkgICAgdGVhcl9kb3duX21vZGUocmVhZGVyLE5VTEwsTlVMTCk7CisJCSAg
ICBpZiAoIXNlbGVjdF9tb2RlKHJlYWRlcixkYXRhLHJlcyx0c2ZfZmFsc2UpKSB7CisJCQlyZXR1
cm4gdHNmX2ZhbHNlOworCQkgICAgfQorCQkgICAgcmV0dXJuIHRzZl9hZGFwdGl2ZV9yZWFkZXJf
cmVhZChyZWFkZXIsZGF0YSxsZW4pOworCQl9IGVsc2UgeworCQkgICAgZGF0YSs9cmVzOworCQkg
ICAgbGVuLT1yZXM7CisJCX0KKwkgICAgfQorCSAgICBpZiAoIXRzZl9mdWxsX3JlYWRfb2ZfcGFy
dGlhbChyZWFkZXItPnJlYWRlciwKKwkJCQkJICByZWFkZXItPnJlYWRlcl9hcmcsCisJCQkJCSAg
ZGF0YSwKKwkJCQkJICBsZW4pKSB7CisJCWlmICh0c2ZfZ2V0X2Vycm9yX2NvZGUoKT09VFNGX0Vf
VU5FWFBFQ1RFRF9FT0YKKwkJICAgICYmIGRhdGEhPV9kYXRhKSB7CisJCSAgICB0c2Zfc2V0X2Vy
cm9yKFRTRl9FX0VSUk9ORU9VU19FT0YsCisJCQkJICAiRW5kLW9mLWZpbGUgYWZ0ZXIgcGFydCBv
ZiBhIGZ1bGwgYnVmZmVyZWQgIgorCQkJCSAgInJlYWQ7IG9yaWdpbmFsIGVycm9yOiAlcyIsdHNm
X2dldF9lcnJvcigpKTsKKwkJfQorCQlyZXR1cm4gdHNmX2ZhbHNlOworCSAgICB9CisJfSBlbHNl
IGlmIChsZW4+MCkgeworCSAgICByZWFkZXItPnB1dGk9MDsKKwkgICAgcmVhZGVyLT5nZXRpPTA7
CisJICAgIGZvciAoOzspIHsKKwkJaW50MzJfdCByZXM7CisJCXVpbnQzMl90IHRvY29weTsKKwkJ
cmVzPXJlYWRlci0+cmVhZGVyKHJlYWRlci0+cmVhZGVyX2FyZywKKwkJCQkgICByZWFkZXItPmJ1
ZiwKKwkJCQkgICByZWFkZXItPmJ1Zl9zaXplKTsKKwkJaWYgKHJlczwwKSB7CisJCSAgICBpZiAo
dHNmX2dldF9lcnJvcl9jb2RlKCk9PVRTRl9FX1VORVhQRUNURURfRU9GCisJCQkmJiBkYXRhIT1f
ZGF0YSkgeworCQkJdHNmX3NldF9lcnJvcihUU0ZfRV9FUlJPTkVPVVNfRU9GLAorCQkJCSAgICAg
ICJFbmQtb2YtZmlsZSBhZnRlciBwYXJ0IG9mIGEgZnVsbCBidWZmZXJlZCAiCisJCQkJICAgICAg
InJlYWQ7IG9yaWdpbmFsIGVycm9yOiAlcyIsdHNmX2dldF9lcnJvcigpKTsKKwkJICAgIH0KKwkJ
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisJCX0KKwkJdHNmX2Fzc2VydChyZXM+MCk7CisJCWlmIChy
ZWFkZXItPmV4cGVjdF9zd2l0Y2gpIHsKKwkJICAgIHJlYWRlci0+ZXhwZWN0X3N3aXRjaD10c2Zf
ZmFsc2U7CisJCSAgICBpZiAocmVhZGVyLT5idWZbMF09PVRTRl9TUF9DX1NXSVRDSF9GT1JNQVQp
IHsKKwkJCXJlYWRlci0+cHV0aT1yZXM7CisJCQlpZiAoIXRlYXJfZG93bl9hbmRfc2VsZWN0X21v
ZGUocmVhZGVyKSkgeworCQkJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJCQl9CisJCQlyZXR1cm4g
dHNmX2FkYXB0aXZlX3JlYWRlcl9yZWFkKHJlYWRlcixkYXRhLGxlbik7CisJCSAgICB9CisJCX0K
KwkJdG9jb3B5PXRzZl9taW4ocmVzLGxlbik7CisJCW1lbWNweShkYXRhLHJlYWRlci0+YnVmLHRv
Y29weSk7CisJCWRhdGErPXRvY29weTsKKwkJbGVuLT10b2NvcHk7CisJCWlmIChsZW49PTApIHsK
KwkJICAgIHJlYWRlci0+cHV0aT1yZXM7CisJCSAgICByZWFkZXItPmdldGk9dG9jb3B5OworCQkg
ICAgYnJlYWs7CisJCX0KKwkgICAgfQorCX0KKwlicmVhazsKKyAgICB9CisgICAgY2FzZSBUU0Zf
WklQX1pMSUI6CisgICAgY2FzZSBUU0ZfWklQX0JaSVAyOiB7CisJcmVhZGVyLT5hYnN0cmFjdC5u
ZXh0X291dD1kYXRhOworCXJlYWRlci0+YWJzdHJhY3QuYXZhaWxfb3V0PWxlbjsKKwkKKwlmb3Ig
KDs7KSB7CisJICAgIGludCByZXM7CisKKwkgICAgLyogaXMgdGhlcmUgZXZlciBhIGNhc2Ugd2hl
cmUgd2Ugd291bGQgd2FudCB0byBjYWxsIGluZmxhdGUgZXZlbiB0aG91Z2gKKwkgICAgICAgdGhl
IGlucHV0IGJ1ZmZlciBpcyBlbXB0eT8gKi8KKwkgICAgaWYgKHJlYWRlci0+YWJzdHJhY3QuYXZh
aWxfaW4hPTApIHsKKwkJcmVzPXRzZl96aXBfYWJzdHJhY3RfaW5mbGF0ZShyZWFkZXItPm1vZGUs
CisJCQkJCSAgICAgcmVhZGVyLT5zdHJlYW0sCisJCQkJCSAgICAgJihyZWFkZXItPmFic3RyYWN0
KSwKKwkJCQkJICAgICBUU0ZfWklQX0FDVF9SVU4pOworCQkKKwkJaWYgKHJlcz09VFNGX1pJUF9S
RVNfRVJST1IpIHsKKwkJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJCX0gZWxzZSBpZiAocmVzPT1U
U0ZfWklQX1JFU19FTkQpIHsKKwkJICAgIGlmIChyZWFkZXItPmFic3RyYWN0LmF2YWlsX291dCE9
MCkgeworCQkJdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKwkJCQkgICAgICAiQSBy
ZWFkIHJlcXVlc3Qgc3RyYWRkbGVzIGEgZm9ybWF0IGNoYW5nZSIpOworCQkgICAgfQorCQkgICAg
dGVhcl90b19ub25lKHJlYWRlcik7CisJCX0KKwkJCisJCWlmIChyZWFkZXItPmFic3RyYWN0LmF2
YWlsX291dD09MCkgeworCQkgICAgYnJlYWs7CisJCX0KKwkJCisJCXRzZl9hc3NlcnQocmVhZGVy
LT5hYnN0cmFjdC5hdmFpbF9pbj09MCk7CisJICAgIH0KKwkgICAgCisJICAgIHJlcz1yZWFkZXIt
PnJlYWRlcihyZWFkZXItPnJlYWRlcl9hcmcsCisJCQkgICAgICAgcmVhZGVyLT5idWYsCisJCQkg
ICAgICAgcmVhZGVyLT5idWZfc2l6ZSk7CisJICAgIAorCSAgICBpZiAocmVzPT0tMSkgeworCQlp
ZiAodHNmX2dldF9lcnJvcl9jb2RlKCk9PVRTRl9FX1VORVhQRUNURURfRU9GKSB7CisJCSAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX0VSUk9ORU9VU19FT0YsCisJCQkJICAiR290IGFuIEVPRiBmcm9t
IHRoZSByZWFkZXIgYmVmb3JlIHRoZSAiCisJCQkJICAiZGVjb21wcmVzc29yIGhhZCByZWFjaGVk
IGVuZCBvZiBzdHJlYW0iKTsKKwkJfQorCQlyZXR1cm4gdHNmX2ZhbHNlOworCSAgICB9CisJICAg
IAorCSAgICByZWFkZXItPmFic3RyYWN0Lm5leHRfaW49cmVhZGVyLT5idWY7CisJICAgIHJlYWRl
ci0+YWJzdHJhY3QuYXZhaWxfaW49cmVzOworCX0KKwlicmVhazsKKyAgICB9CisgICAgZGVmYXVs
dDoKKwl0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVEVSTkFMLAorCQkgICAgICAiSW52YWxpZCByZWFk
ZXIgbW9kZSBpbiB0c2ZfYWRhcHRpdmVfcmVhZGVyX3JlYWQoKSIpOworCXJldHVybiB0c2ZfZmFs
c2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordWludDMyX3QgdHNm
X2FkYXB0aXZlX3JlYWRlcl9nZXRfcmVtYWluaW5nKHRzZl9hZHB0X3Jkcl90ICpyZWFkZXIpIHsK
KyAgICBzd2l0Y2ggKHJlYWRlci0+bW9kZSkgeworICAgIGNhc2UgVFNGX1pJUF9VTktOT1dOOgor
ICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFRTRl9aSVBfTk9ORToKKyAgICAgICAgcmV0dXJu
IHJlYWRlci0+cHV0aS1yZWFkZXItPmdldGk7CisgICAgY2FzZSBUU0ZfWklQX1pMSUI6CisgICAg
Y2FzZSBUU0ZfWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gcmVhZGVyLT5hYnN0cmFjdC5hdmFp
bF9pbjsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBzaG91bGQgbmV2ZXIgaGFwcGVuICovCisg
ICAgICAgIHRzZl9hYm9ydCgiYmFkIHJlYWRlciBtb2RlIik7CisgICAgfQorfQorCisKKwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9hc3ByaW50Zi5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXNw
cmludGYuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX2FzcHJpbnRmLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJ
TElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
IDxzdHJpbmcuaD4KKworY2hhciAqdHNmX3Zhc3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsdmFf
bGlzdCBsc3QxKSB7CisgICAgY2hhciAqcmV0OworICAgIGludCByZXM7CisjaWZkZWYgVFNGX0hB
VkVfVkFTUFJJTlRGCisgICAgcmVzPXZhc3ByaW50ZigmcmV0LGZvcm1hdCxsc3QxKTsKKyAgICBp
ZiAocmVzPDAgJiYgcmV0IT1OVUxMKSB7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0
PU5VTEw7CisgICAgfQorI2Vsc2UKKyAgICB7CisgICAgICAgIHZhX2xpc3QgbHN0MiA9IGxzdDE7
CisgICAgICAgIGNoYXIgZmFrZV9idWZbMzJdOworICAgICAgICByZXM9dnNucHJpbnRmKGZha2Vf
YnVmLHNpemVvZihmYWtlX2J1ZiksZm9ybWF0LGxzdDEpOworICAgICAgICBpZiAocmVzPDApIHsK
KyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChyZXM8MzIp
IHsKKyAgICAgICAgICAgIHJldHVybiBzdHJkdXAoZmFrZV9idWYpOworICAgICAgICB9CisgICAg
ICAgIHJldD1tYWxsb2MocmVzKzEpOworICAgICAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXM9dnNucHJpbnRmKHJldCxy
ZXMrMSxmb3JtYXQsbHN0Mik7CisgICAgICAgIGlmIChyZXM8MCkgeworICAgICAgICAgICAgZnJl
ZShyZXQpOworICAgICAgICAgICAgcmV0PU5VTEw7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYK
KyAgICByZXR1cm4gcmV0OworfQorCitjaGFyICp0c2ZfYXNwcmludGYoY29uc3QgY2hhciAqZm9y
bWF0LC4uLikgeworICAgIHZhX2xpc3QgbHN0OworICAgIGNoYXIgKnJldDsKKyAgICB2YV9zdGFy
dChsc3QsIGZvcm1hdCk7CisgICAgcmV0PXRzZl92YXNwcmludGYoZm9ybWF0LCBsc3QpOworICAg
IHZhX2VuZChsc3QpOworICAgIHJldHVybiByZXQ7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXRvbWljcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXRvbWljcy5oCShub25leGlzdGVu
dCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYXRvbWljcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZQX1RTRl9BVE9NSUNTX0gK
KyNkZWZpbmUgRlBfVFNGX0FUT01JQ1NfSAorCisjaW5jbHVkZSAidHNmX2NvbmZpZy5oIgorI2lu
Y2x1ZGUgInRzZl90eXBlcy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWZkZWYgSEFWRV9T
Q0hFRF9ICisjaW5jbHVkZSA8c2NoZWQuaD4KKyNlbmRpZgorCisjaWZkZWYgVFNGX0hBVkVfUFRI
UkVBRAorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpZiAwCisvKiBoYWNrIHRvIGRlY29uZnVzZSBlbWFj
cyAqLworfQorI2VuZGlmCisKK3N0cnVjdCB0c2ZfbXV0ZXg7CitzdHJ1Y3QgdHNmX2F0b21pY19j
b3VudDsKK3N0cnVjdCB0c2Zfb25jZTsKKwordHlwZWRlZiBzdHJ1Y3QgdHNmX211dGV4IHRzZl9t
dXRleF90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX2F0b21pY19jb3VudCB0c2ZfYXRvbWljX2NvdW50
X3Q7Cit0eXBlZGVmIHN0cnVjdCB0c2Zfb25jZSB0c2Zfb25jZV90OworCisjaWZkZWYgVFNGX0hB
VkVfQlVJTFRJTl9DQVMKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgdHNmX2NhczMyKAor
ICAgIHZvbGF0aWxlIHZvaWQgKnBvaW50ZXIsIGludDMyX3QgZXhwZWN0ZWQsIGludDMyX3QgbmV3
X3ZhbHVlKSB7CisgICAgcmV0dXJuIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAoCisgICAg
ICAgICh2b2xhdGlsZSBpbnQzMl90Kilwb2ludGVyLCBleHBlY3RlZCwgbmV3X3ZhbHVlKTsKK30K
Kworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCB0c2ZfY2FzX3B0cigKKyAgICB2b2xhdGls
ZSB2b2lkICpwb2ludGVyLCBpbnRwdHJfdCBleHBlY3RlZCwgaW50cHRyX3QgbmV3X3ZhbHVlKSB7
CisgICAgcmV0dXJuIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAoCisgICAgICAgICh2b2xh
dGlsZSBpbnRwdHJfdCopcG9pbnRlciwgZXhwZWN0ZWQsIG5ld192YWx1ZSk7Cit9CisjZGVmaW5l
IFRTRl9IQVZFX0NBUyAxCisjZWxpZiAhZGVmaW5lZChUU0ZfSEFWRV9QVEhSRUFEKQorc3RhdGlj
IFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCB0c2ZfY2FzMzIoCisgICAgdm9sYXRpbGUgdm9pZCAqcmF3
UG9pbnRlciwgaW50MzJfdCBleHBlY3RlZCwgaW50MzJfdCBuZXdfdmFsdWUpIHsKKyAgICB2b2xh
dGlsZSBpbnQzMl90ICpwb2ludGVyID0gKHZvbGF0aWxlIGludDMyX3QqKXJhd1BvaW50ZXI7Cisg
ICAgaWYgKCpwb2ludGVyID09IGV4cGVjdGVkKSB7CisgICAgICAgICpwb2ludGVyID0gbmV3X3Zh
bHVlOworICAgICAgICByZXR1cm4gdHNmX3RydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIHRzZl9mYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3Qg
dHNmX2Nhc19wdHIoCisgICAgdm9sYXRpbGUgdm9pZCAqcmF3UG9pbnRlciwgaW50cHRyX3QgZXhw
ZWN0ZWQsIGludHB0cl90IG5ld192YWx1ZSkgeworICAgIHZvbGF0aWxlIGludHB0cl90ICpwb2lu
dGVyID0gKHZvbGF0aWxlIGludHB0cl90KilyYXdQb2ludGVyOworICAgIGlmICgqcG9pbnRlciA9
PSBleHBlY3RlZCkgeworICAgICAgICAqcG9pbnRlciA9IG5ld192YWx1ZTsKKyAgICAgICAgcmV0
dXJuIHRzZl90cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgfQorfQorI2RlZmluZSBUU0ZfSEFWRV9DQVMgMQorI2VuZGlmCisKKyNpZmRlZiBUU0ZfSEFW
RV9CVUlMVElOX1hBREQKK3N0YXRpYyBUU0ZfaW5saW5lIGludDMyX3QgdHNmX3hhZGQzMih2b2xh
dGlsZSB2b2lkICpwb2ludGVyLCBpbnQzMl90IHZhbHVlKSB7CisgICAgcmV0dXJuIF9fc3luY19m
ZXRjaF9hbmRfYWRkKCh2b2xhdGlsZSBpbnQzMl90Kilwb2ludGVyLCB2YWx1ZSk7Cit9CisjZGVm
aW5lIFRTRl9IQVZFX1hBREQgMQorI2VsaWYgZGVmaW5lZChUU0ZfSEFWRV9DQVMpCitzdGF0aWMg
VFNGX2lubGluZSBpbnQzMl90IHRzZl94YWRkMzIodm9sYXRpbGUgdm9pZCAqcmF3UG9pbnRlciwg
aW50MzJfdCB2YWx1ZSkgeworICAgIGludDMyX3QgcmVzdWx0OworICAgIHZvbGF0aWxlIGludDMy
X3QgKnBvaW50ZXIgPSAodm9sYXRpbGUgaW50MzJfdCopcmF3UG9pbnRlcjsKKyAgICBkbyB7Cisg
ICAgICAgIHJlc3VsdCA9ICpwb2ludGVyOworICAgIH0gd2hpbGUgKCF0c2ZfY2FzMzIocG9pbnRl
ciwgcmVzdWx0LCByZXN1bHQgKyB2YWx1ZSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZGVm
aW5lIFRTRl9IQVZFX1hBREQgMQorI2VuZGlmCisKKyNpZmRlZiBUU0ZfSEFWRV9YODZfSU5MSU5F
X0FTTV9GRU5DRVMKKy8qIFRoaXMgaXMgYSBmZW5jZSB0aGF0IHdvdWxkIGhhdmUgbm8gaGFyZHdh
cmUgZWZmZWN0IG9uIFRTTyBhcmNoaXRlY3R1cmVzLiBQbGFjaW5nCisgKiBpdCBiZXR3ZWVuIHR3
byBvcGVyYXRpb25zIGdpdmVzIHlvdSBndWFyYW50ZWVzIGxpa2UgdGhvc2UgdGhhdCBUU08gd291
bGQgaGF2ZQorICogZ2l2ZW4geW91LiAqLworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCB0c2ZfYmFz
aWNfZmVuY2Uodm9pZCkgeworICAgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIpOwor
fQorCisvKiBUaGlzIGlzIGEgZmVuY2UgdGhhdCB5b3Ugd291bGQgbmVlZCBldmVuIG9uIFRTTyBh
bmQgZ3VhcmFudGVlcyBtZW1vcnkgU0MuICovCitzdGF0aWMgVFNGX2lubGluZSB2b2lkIHRzZl9z
dHJvbmdfZmVuY2Uodm9pZCkgeworICAgIGFzbSB2b2xhdGlsZSAoIm1mZW5jZSIgOiA6IDogIm1l
bW9yeSIpOworfQorCisjZGVmaW5lIFRTRl9IQVZFX0ZFTkNFUyAxCisjZWxpZiAhZGVmaW5lZChU
U0ZfSEFWRV9QVEhSRUFEKQorc3RhdGljIFRTRl9pbmxpbmUgdm9pZCB0c2ZfYmFzaWNfZmVuY2Uo
dm9pZCkgeyB9CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIHRzZl9zdHJvbmdfZmVuY2Uodm9pZCkg
eyB9CisjZGVmaW5lIFRTRl9IQVZFX0ZFTkNFUyAxCisjZW5kaWYKKworc3RydWN0IHRzZl9tdXRl
eCB7CisjaWZkZWYgVFNGX0hBVkVfUFRIUkVBRAorICAgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsK
KyNlbHNlCisgICAgY2hhciBkdW1teTsKKyNlbmRpZgorfTsKKyAgICAKK3N0cnVjdCB0c2ZfYXRv
bWljX2NvdW50IHsKKyNpZiAhZGVmaW5lZChUU0ZfSEFWRV9YQUREKQorICAgIHRzZl9tdXRleF90
IG11dGV4OworI2VuZGlmCisgICAgdm9sYXRpbGUgdWludDMyX3QgY291bnQ7Cit9OworCitzdGF0
aWMgaW5saW5lIHZvaWQgdHNmX3lpZWxkKHZvaWQpCit7CisjaWZkZWYgSEFWRV9TQ0hFRF9ZSUVM
RAorICAgIHNjaGVkX3lpZWxkKCk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB2b2lkKiB0
c2ZfdGhyZWFkX3NlbGYodm9pZCkKK3sKKyNpZiBUU0ZfSEFWRV9QVEhSRUFECisgICAgcmV0dXJu
ICh2b2lkKilwdGhyZWFkX3NlbGYoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYK
K30KKworLyogTm90ZSB0aGF0IHdlIGFzc3VtZSB0aGF0IGxvY2tpbmcgb3BlcmF0aW9ucyBhbHdh
eXMgc3VjY2VlZC4gVGhlcmUgaXMgbGl0dGxlIHBvaW50IGluIHdvcnJ5aW5nCisgICBhYm91dCB3
aGF0IGhhcHBlbnMgaWYgdGhleSBmYWlsLiAqLworc3RhdGljIGlubGluZSB2b2lkIHRzZl9tdXRl
eF9pbml0KHRzZl9tdXRleF90ICptdXRleCkgeworI2lmZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyAg
ICBwdGhyZWFkX211dGV4X2luaXQoJm11dGV4LT5tdXRleCwgTlVMTCk7CisjZW5kaWYKK30KKwor
c3RhdGljIGlubGluZSB2b2lkIHRzZl9tdXRleF9sb2NrKHRzZl9tdXRleF90ICptdXRleCkgewor
I2lmZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4LT5t
dXRleCk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB2b2lkIHRzZl9tdXRleF91bmxvY2so
dHNmX211dGV4X3QgKm11dGV4KSB7CisjaWZkZWYgVFNGX0hBVkVfUFRIUkVBRAorICAgIHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZtdXRleC0+bXV0ZXgpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCB0c2ZfbXV0ZXhfZGVzdHJveSh0c2ZfbXV0ZXhfdCAqbXV0ZXgpIHsKKyNpZmRlZiBU
U0ZfSEFWRV9QVEhSRUFECisgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleC0+bXV0ZXgp
OworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB0c2ZfYXRvbWljX2NvdW50X2luaXQo
dHNmX2F0b21pY19jb3VudF90ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgaW5pdGlhbF92YWx1ZSkgeworICAgIGNvdW50LT5jb3VudCA9
IGluaXRpYWxfdmFsdWU7CisjaWYgIWRlZmluZWQoVFNGX0hBVkVfWEFERCkKKyAgICB0c2ZfbXV0
ZXhfaW5pdCgmY291bnQtPm11dGV4KTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIHZvaWQg
dHNmX2F0b21pY19jb3VudF9kZXN0cm95KHRzZl9hdG9taWNfY291bnRfdCAqY291bnQpIHsKKyNp
ZiAhZGVmaW5lZChUU0ZfSEFWRV9YQUREKQorICAgIHRzZl9tdXRleF9kZXN0cm95KCZjb3VudC0+
bXV0ZXgpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdHNmX2F0b21pY19j
b3VudF92YWx1ZSh0c2ZfYXRvbWljX2NvdW50X3QgKmNvdW50KSB7CisgICAgcmV0dXJuIGNvdW50
LT5jb3VudDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHRzZl9hdG9taWNfY291bnRfc2V0X3Zh
bHVlKHRzZl9hdG9taWNfY291bnRfdCAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUpIHsKKyAgICBjb3VudC0+Y291bnQg
PSB2YWx1ZTsKK30KKworc3RhdGljIGlubGluZSB1aW50MzJfdCB0c2ZfYXRvbWljX2NvdW50X3hh
ZGQodHNmX2F0b21pY19jb3VudF90ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRlbHRhKSB7CisjaWZkZWYgVFNGX0hBVkVfWEFE
RAorICAgIHJldHVybiB0c2ZfeGFkZDMyKCZjb3VudC0+Y291bnQsIGRlbHRhKTsKKyNlbHNlCisg
ICAgdWludDMyX3QgcmVzdWx0OworICAgIHRzZl9tdXRleF9sb2NrKCZjb3VudC0+bXV0ZXgpOwor
ICAgIHJlc3VsdCA9IGNvdW50LT5jb3VudDsKKyAgICBjb3VudC0+Y291bnQgKz0gZGVsdGE7Cisg
ICAgdHNmX211dGV4X3VubG9jaygmY291bnQtPm11dGV4KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
I2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdHNmX2F0b21pY19jb3VudF94c3Vi
KHRzZl9hdG9taWNfY291bnRfdCAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZWx0YSkgeworICAgIHJldHVybiB0c2ZfYXRvbWlj
X2NvdW50X3hhZGQoY291bnQsICh1aW50MzJfdCktKGludDMyX3QpZGVsdGEpOworfQorCitzdHJ1
Y3QgdHNmX29uY2UgeworI2lmZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyNpZiBkZWZpbmVkKFRTRl9I
QVZFX0JVSUxUSU5fQ0FTKSAmJiBkZWZpbmVkKFRTRl9IQVZFX0ZFTkNFUykKKyAgICB2b2xhdGls
ZSBpbnQzMl90IHN0YXRlOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2VfdCBvbmNlX2NvbnRyb2w7
CisjZW5kaWYKKyNlbHNlCisgICAgdHNmX2Jvb2xfdCBpc19pbml0aWFsaXplZDsKKyNlbmRpZgor
fTsKKworI2lmZGVmIFRTRl9IQVZFX1BUSFJFQUQKKyNpZiBkZWZpbmVkKFRTRl9IQVZFX0JVSUxU
SU5fQ0FTKSAmJiBkZWZpbmVkKFRTRl9IQVZFX0ZFTkNFUykKKyNkZWZpbmUgVFNGX09OQ0VfSU5J
VCB7IDAgfQorI2Vsc2UKKyNkZWZpbmUgVFNGX09OQ0VfSU5JVCB7IFBUSFJFQURfT05DRV9JTklU
IH0KKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgVFNGX09OQ0VfSU5JVCB7IHRzZl9mYWxzZSB9Cisj
ZW5kaWYKKworc3RhdGljIGlubGluZSB2b2lkIHRzZl9vbmNlKHRzZl9vbmNlX3QgKmNvbnRyb2ws
IHZvaWQgKCphY3Rpb24pKHZvaWQpKSB7CisjaWZkZWYgVFNGX0hBVkVfUFRIUkVBRAorI2lmIGRl
ZmluZWQoVFNGX0hBVkVfQlVJTFRJTl9DQVMpICYmIGRlZmluZWQoVFNGX0hBVkVfRkVOQ0VTKQor
ICAgIC8qIERlZmluZSB0aGUgcG9zc2libGUgdmFsdWVzIG9mIGNvbnRyb2wtPnN0YXRlLiAqLwor
ICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IG5vdEluaXRpYWxpemVkID0gMDsKKyAgICBzdGF0aWMg
Y29uc3QgaW50MzJfdCBpbml0aWFsaXppbmcgPSAxOworICAgIHN0YXRpYyBjb25zdCBpbnQzMl90
IGluaXRpYWxpemVkID0gMjsKKyAgICAKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGludDMyX3Qg
Y3VycmVudF9zdGF0ZSA9IGNvbnRyb2wtPnN0YXRlOworICAgICAgICBpZiAoY3VycmVudF9zdGF0
ZSA9PSBpbml0aWFsaXplZCkgeworICAgICAgICAgICAgdHNmX2Jhc2ljX2ZlbmNlKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50X3N0YXRlID09IGluaXRp
YWxpemluZykgeworICAgICAgICAgICAgdHNmX3lpZWxkKCk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y3VycmVudF9zdGF0ZSA9PSBub3RJbml0aWFsaXplZCkgeworICAgICAgICAgICAgaWYgKHRzZl9j
YXMzMigmY29udHJvbC0+c3RhdGUsIG5vdEluaXRpYWxpemVkLCBpbml0aWFsaXppbmcpKSB7Cisg
ICAgICAgICAgICAgICAgYWN0aW9uKCk7CisgICAgICAgICAgICAgICAgdHNmX2Jhc2ljX2ZlbmNl
KCk7CisgICAgICAgICAgICAgICAgY29udHJvbC0+c3RhdGUgPSBpbml0aWFsaXplZDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
dHNmX3lpZWxkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvKiBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUuICovCisgICAgICAgICAgICBhYm9ydCgpOworICAg
ICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJmNvbnRyb2wtPm9uY2VfY29u
dHJvbCwgYWN0aW9uKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBpZiAoIWNvbnRyb2wtPmlzX2luaXRp
YWxpemVkKSB7CisgICAgICAgIGFjdGlvbigpOworICAgICAgICBjb250cm9sLT5pc19pbml0aWFs
aXplZCA9IHRzZl90cnVlOworICAgIH0KKyNlbmRpZgorfQorCisjaWYgZGVmaW5lZChUU0ZfSEFW
RV9GRU5DRVMpCisjZGVmaW5lIFRTRl9IQVZFX0lOSVRfUE9JTlRFUiAxCisKK3N0YXRpYyBpbmxp
bmUgdm9pZCAqdHNmX2luaXRfcG9pbnRlcih2b2lkICoqcG9pbnRlciwgdm9pZCAqKCppbml0aWFs
aXplcikodm9pZCkpIHsKKyAgICB2b2lkICpyZXN1bHQgPSAqcG9pbnRlcjsKKyAgICBpZiAocmVz
dWx0KSB7CisgICAgICAgIHRzZl9iYXNpY19mZW5jZSgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHJlc3VsdCA9IGluaXRpYWxpemVyKCk7CisgICAgICAgIHRzZl9iYXNpY19mZW5jZSgpOworICAg
ICAgICAqcG9pbnRlciA9IHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNl
bHNlCisjdW5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisjZW5kaWYKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEZQX1RTRl9BVE9NSUNTX0gKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3JlYWRlci5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3Jl
YWRlci5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L3RzZi90c2ZfYnVmX3JlYWRlci5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
RklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpM
TyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisj
aWZkZWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKworI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKK3RzZl9idWZfcmRyX3QgKnRzZl9idWZfcmVhZGVy
X2NyZWF0ZShpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgYnVmX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X2Jvb2xfdCBrZWVwX2ZkKSB7CisgICAgdHNmX2J1Zl9yZHJfdCAqcmVzdWx0OworICAgIAorICAg
IHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9idWZfcmRyX3QpKTsKKyAgICBpZiAocmVzdWx0PT1O
VUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2J1Zl9y
ZHJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5i
dWY9bWFsbG9jKGJ1Zl9zaXplKTsKKyAgICBpZiAocmVzdWx0LT5idWY9PU5VTEwpIHsKKyAgICAg
ICAgZnJlZShyZXN1bHQpOworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9j
IGJ1ZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0
LT5mZD1mZDsKKyAgICByZXN1bHQtPmtlZXBfZmQ9a2VlcF9mZDsKKyAgICByZXN1bHQtPnNpemU9
YnVmX3NpemU7CisgICAgcmVzdWx0LT5wdXRpPTA7CisgICAgcmVzdWx0LT5nZXRpPTA7CisgICAg
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCB0c2ZfYnVmX3JlYWRlcl9kZXN0cm95KHRz
Zl9idWZfcmRyX3QgKmJ1ZikgeworICAgIC8qIHVoLCBjbG9zZSB0aGUgZmQgaWYga2VlcF9mZCBp
cyBzZXQ/ICovCisgICAgZnJlZShidWYtPmJ1Zik7CisgICAgZnJlZShidWYpOworfQorCit0c2Zf
Ym9vbF90IHRzZl9idWZfcmVhZGVyX3JlYWQodm9pZCAqX2J1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGxlbikgeworICAgIHRzZl9ib29sX3QgcmVhZF9zb21lPXRzZl9mYWxzZTsKKyNp
ZiBkZWZpbmVkKEhBVkVfUkVBRFYpCisgICAgc3RydWN0IGlvdmVjIGlvdlsyXTsKKyNlbmRpZgor
ICAgIHRzZl9idWZfcmRyX3QgKmJ1Zj1fYnVmOworICAgIAorICAgIC8qIGdldCBhcyBtdWNoIGFz
IHBvc3NpYmxlIGZyb20gdGhlIGJ1ZmZlciAqLworICAgIGlmIChidWYtPnB1dGk+YnVmLT5nZXRp
KSB7CisgICAgICAgIHVpbnQzMl90IGF2YWlsPWJ1Zi0+cHV0aS1idWYtPmdldGk7CisgICAgICAg
IAorICAgICAgICByZWFkX3NvbWU9dHNmX3RydWU7CisgICAgICAgIAorICAgICAgICBpZiAoYXZh
aWw+bGVuKSB7CisgICAgICAgICAgICAvKiBjYW4gYmUgc2F0aXNmaWVkIGVudGlyZWx5IGZyb20g
dGhlIGJ1ZmZlciAqLworICAgICAgICAgICAgbWVtY3B5KGRhdGEsYnVmLT5idWYrYnVmLT5nZXRp
LGxlbik7CisgICAgICAgICAgICBidWYtPmdldGkrPWxlbjsKKyAgICAgICAgICAgIHJldHVybiB0
c2ZfdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbWVtY3B5KGRhdGEsYnVmLT5i
dWYrYnVmLT5nZXRpLGF2YWlsKTsKKyAgICAgICAgCisgICAgICAgIGRhdGE9KCh1aW50OF90Kilk
YXRhKSthdmFpbDsKKyAgICAgICAgbGVuLT1hdmFpbDsKKyAgICB9CisKKyAgICBidWYtPnB1dGk9
MDsKKyAgICBidWYtPmdldGk9MDsKKyAgICAKKyAgICBpZiAoIWxlbikgeworICAgICAgICByZXR1
cm4gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIC8qIG5vdyBzYXRpc2Z5IHRoZSByZXN0IG9m
IHRoZSByZXF1ZXN0IGJ5IGlzc3VpbmcgYSBuZXcgcmVhZCAqLworI2lmIGRlZmluZWQoSEFWRV9S
RUFEVikKKyAgICBpb3ZbMF0uaW92X2Jhc2U9ZGF0YTsKKyAgICBpb3ZbMF0uaW92X2xlbj1sZW47
CisgICAgaW92WzFdLmlvdl9iYXNlPSh2b2lkKilidWYtPmJ1ZjsKKyAgICBpb3ZbMV0uaW92X2xl
bj1idWYtPnNpemU7CisgICAgCisgICAgZm9yICg7OykgeworICAgICAgICBpbnQgcmVzPXJlYWR2
KGJ1Zi0+ZmQsaW92LDIpOworICAgICAgICBpZiAocmVzPDApIHsKKyAgICAgICAgICAgIGlmIChl
cnJubz09RUlOVFIpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNhbGxpbmcgcmVhZHYoKSBpbiB0c2ZfYnVmX3Jl
YWRlcl9yZWFkKCkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHJlcz09MCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihyZWFkX3Nv
bWU/CisgICAgICAgICAgICAgICAgICAgICAgICAgIFRTRl9FX0VSUk9ORU9VU19FT0Y6VFNGX0Vf
VU5FWFBFQ1RFRF9FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsaW5nIHJlYWR2
KCkgaW4gdHNmX2J1Zl9yZWFkZXJfcmVhZCgpIik7CisgICAgICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgICAgICB9CisgICAgICAgIHJlYWRfc29tZT10c2ZfdHJ1ZTsKKyAgICAgICAgaWYg
KCh1bnNpZ25lZClyZXM+PWlvdlswXS5pb3ZfbGVuKSB7CisgICAgICAgICAgICBidWYtPnB1dGk9
cmVzLWlvdlswXS5pb3ZfbGVuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgaW92WzBdLmlvdl9iYXNlKz1yZXM7CisgICAgICAgIGlvdlswXS5pb3ZfbGVuLT1yZXM7Cisg
ICAgfQorI2Vsc2UKKyAgICBpZiAobGVuPj1idWYtPnNpemUpIHsKKyAgICAgICAgdHNmX2Jvb2xf
dCByZXM9dHNmX2ZkX3JlYWRlcigmYnVmLT5mZCxkYXRhLGxlbik7CisgICAgICAgIGlmIChyZWFk
X3NvbWUgJiYgIXJlcyAmJgorICAgICAgICAgICAgdHNmX2dldF9lcnJvcl9jb2RlKCk9PVRTRl9F
X1VORVhQRUNURURfRU9GKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0VSUk9O
RU9VU19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfZmRfcmVhZGVyKCkgZXhw
ZXJpZW5jZWQgYW4gRU9GIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9
CisgICAgCisgICAgLyogaWRlYSBpcyB0aGlzOiB3ZSBrZWVwIHJlYWRpbmcgdW50aWwgd2UgaGF2
ZSBlbm91Z2ggdG8gc2F0aXNmeSB0aGUKKyAgICAgKiBjdXJyZW50IHJlcXVlc3QsIGJ1dCB3ZSBh
bGxvdyB0aGUgcmVhZCB0byBvdmVyZmxvdyBmb3IgYXMgbWFueSBieXRlcworICAgICAqIGFzIHdl
IGhhdmUgYXZhaWxhYmxlIGluIHRoZSBidWZmZXIuICovCisgICAgd2hpbGUgKGJ1Zi0+cHV0aTxs
ZW4pIHsKKyAgICAgICAgaW50IHJlcz1yZWFkKGJ1Zi0+ZmQsCisgICAgICAgICAgICAgICAgICAg
ICBidWYtPmJ1ZitidWYtPnB1dGksCisgICAgICAgICAgICAgICAgICAgICBidWYtPnNpemUtYnVm
LT5wdXRpKTsKKyAgICAgICAgaWYgKHJlczwwKSB7CisgICAgICAgICAgICBpZiAoZXJybm89PUVJ
TlRSKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfYnVmX3JlYWRlcl9yZWFk
KCkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHJlcz09MCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihyZWFkX3NvbWU/CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRTRl9FX0VSUk9ORU9VU19FT0Y6VFNGX0VfVU5FWFBFQ1RF
RF9FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsaW5nIHJlYWQoKSBpbiB0c2Zf
YnVmX3JlYWRlcl9yZWFkKCkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmVhZF9zb21lPXRzZl90cnVlOworICAgICAgICBidWYtPnB1dGkrPXJl
czsKKyAgICB9CisgICAgCisgICAgbWVtY3B5KGRhdGEsYnVmLT5idWYsbGVuKTsKKyAgICBidWYt
PmdldGk9bGVuOworI2VuZGlmCisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit1aW50
MzJfdCB0c2ZfYnVmX3JlYWRlcl9nZXRfcmVtYWluaW5nKHRzZl9idWZfcmRyX3QgKmJ1Zikgewor
ICAgIHJldHVybiBidWYtPnB1dGkgLSBidWYtPmdldGk7Cit9CisKK3ZvaWQgdHNmX2J1Zl9yZWFk
ZXJfcmVzZXQodHNmX2J1Zl9yZHJfdCAqYnVmKSB7CisgICAgYnVmLT5wdXRpPTA7CisgICAgYnVm
LT5nZXRpPTA7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2ZfYnVmX3dyaXRlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2ZfYnVmX3dyaXRlci5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVmX3dyaXRlci5jCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgi
CisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisjaWZkZWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNs
dWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUg
PHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisK
K3RzZl9idWZfd3RyX3QgKnRzZl9idWZfd3JpdGVyX2NyZWF0ZShpbnQgZmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYnVmX3NpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Jvb2xfdCBrZWVwX2ZkKSB7CisgICAgdHNm
X2J1Zl93dHJfdCAqcmVzdWx0OworICAgIAorICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9i
dWZfd3RyX3QpKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2J1Zl93dHJfdCIpOworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5idWY9bWFsbG9jKGJ1Zl9zaXplKTsKKyAgICBp
ZiAocmVzdWx0LT5idWY9PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICB0
c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGJ1ZmZlciIpOworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQtPmZkPWZkOworICAgIHJlc3VsdC0+a2VlcF9mZD1r
ZWVwX2ZkOworICAgIHJlc3VsdC0+c2l6ZT1idWZfc2l6ZTsKKyAgICByZXN1bHQtPnBvcz0wOwor
ICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgdHNmX2J1Zl93cml0ZXJfZGVzdHJv
eSh0c2ZfYnVmX3d0cl90ICpidWYpIHsKKyAgICAvKiB1aCwgY2xvc2UgdGhlIGZkIGlmIGtlZXBf
ZmQgaXMgc2V0PyAqLworICAgIGZyZWUoYnVmLT5idWYpOworICAgIGZyZWUoYnVmKTsKK30KKwor
dHNmX2Jvb2xfdCB0c2ZfYnVmX3dyaXRlcl93cml0ZSh2b2lkICpfYnVmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB0c2ZfYnVmX3d0cl90ICpidWYgID1f
YnVmOworICAgIAorI2lmZGVmIEhBVkVfV1JJVEVWCisgICAgaWYgKGJ1Zi0+cG9zICsgbGVuID4g
YnVmLT5zaXplKSB7CisgICAgICAgIGlmIChidWYtPnBvcykgeworICAgICAgICAgICAgc3RydWN0
IGlvdmVjIGlvdlsyXTsKKyAgICAgICAgICAgIGlvdlswXS5pb3ZfYmFzZSA9ICh2b2lkKilidWYt
PmJ1ZjsKKyAgICAgICAgICAgIGlvdlswXS5pb3ZfbGVuID0gYnVmLT5wb3M7CisgICAgICAgICAg
ICBpb3ZbMV0uaW92X2Jhc2UgPSAodm9pZCopZGF0YTsKKyAgICAgICAgICAgIGlvdlsxXS5pb3Zf
bGVuID0gbGVuOworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGludCBy
ZXMgPSB3cml0ZXYoYnVmLT5mZCwgaW92LCAyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzIDwg
MCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNhbGxpbmcgd3JpdGV2KCkgaW4gIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfYnVmX3dyaXRlcl93cml0ZSgpIik7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpcmVzID49IGlvdlswXS5pb3ZfbGVuKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGEgPSAoKHVpbnQ4X3QqKWRhdGEpICsgcmVzLWlvdlswXS5p
b3ZfbGVuOworICAgICAgICAgICAgICAgICAgICBsZW4gLT0gcmVzIC0gaW92WzBdLmlvdl9sZW47
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpb3ZbMF0uaW92X2Jhc2UgKz0gcmVzOworICAgICAgICAgICAgICAgIGlvdlswXS5p
b3ZfbGVuIC09IHJlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1Zi0+cG9zID0gMDsK
KyAgICAgICAgICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2Zf
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0c2ZfYXNzZXJ0KGJ1Zi0+
cG9zID09IDApOworICAgICAgICBpZiAobGVuID4gYnVmLT5zaXplKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdHNmX2ZkX3dyaXRlcigmYnVmLT5mZCwgZGF0YSwgbGVuKTsKKyAgICAgICAgfQorICAg
IH0KKyNlbHNlCisgICAgaWYgKGJ1Zi0+cG9zICsgbGVuID49IGJ1Zi0+c2l6ZSkgeworICAgICAg
ICAvKiBoYXZlIHRvIGZsdXNoIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIHJvb20gaW4gb3Vy
IGJ1ZmZlcgorICAgICAgICAgKiBvdGhlcndpc2UuICovCisgICAgICAgIGlmICghdHNmX2J1Zl93
cml0ZXJfZmx1c2goYnVmKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAobGVuID49IGJ1Zi0+c2l6ZSAmJiBidWYtPnBvcyA9
PSAwKSB7CisgICAgICAgIC8qIHdlIGp1c3Qgd3JpdGUgbm93IGJlY2F1c2Ugd2UgYXJlIGJlaW5n
IGdpdmVuIG1vcmUgZGF0YSB0aGFuCisgICAgICAgICAqIG91ciBidWZmZXIgY291bGQgc3RvcmUu
ICovCisgICAgICAgIHJldHVybiB0c2ZfZmRfd3JpdGVyKCZidWYtPmZkLCBkYXRhLCBsZW4pOwor
ICAgIH0KKyNlbmRpZgorICAgIAorICAgIC8qCisgICAgcHJpbnRmKCIgYnVmLT5idWYgPSAlcFxu
IixidWYtPmJ1Zik7CisgICAgcHJpbnRmKCIgYnVmLT5wb3MgPSAiIGZ1aTMyICJcbiIsYnVmLT5w
b3MpOworICAgIHByaW50ZigiYnVmLT5zaXplID0gIiBmdWkzMiAiXG4iLGJ1Zi0+c2l6ZSk7Cisg
ICAgcHJpbnRmKCIgICAgIGRhdGEgPSAlcFxuIixkYXRhKTsKKyAgICBwcmludGYoIiAgICAgIGxl
biA9ICIgZnVpMzIgIlxuIixsZW4pOworICAgICovCisgICAgCisgICAgbWVtY3B5KGJ1Zi0+YnVm
ICsgYnVmLT5wb3MsIGRhdGEsIGxlbik7CisgICAgYnVmLT5wb3MgKz0gbGVuOworICAgIAorICAg
IHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfYnVmX3dyaXRlcl9mbHVzaCh0
c2ZfYnVmX3d0cl90ICpidWYpIHsKKyAgICBpZiAoIXRzZl9mZF93cml0ZXIoJmJ1Zi0+ZmQsYnVm
LT5idWYsYnVmLT5wb3MpKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IGJ1Zi0+cG9zPTA7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCisKKwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9idWZmZXIuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1ZmZlci5jCShub25l
eGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfYnVm
ZmVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDE0LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklM
SVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisjaWZk
ZWYgSEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKyNpZmRlZiBE
RUJVR19CVUZGRVJfQUxMT0MKK3N0YXRpYyBpbnQ2NF90IGJ1ZmZlcl9iYWxhbmNlID0gMDsKKwor
aW50NjRfdCB0c2ZfYnVmZmVyX2dldF9iYWxhbmNlKCkgeworICAgIHJldHVybiBidWZmZXJfYmFs
YW5jZTsKK30KKworI2RlZmluZSBpbmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKSBkbyB7XAorICAg
IGJ1ZmZlcl9iYWxhbmNlKys7XAorfSB3aGlsZSgwKQorCisjZGVmaW5lIGRlY3JlbWVudF9idWZm
ZXJfYmFsYW5jZSgpIGRvIHtcCisgICAgYnVmZmVyX2JhbGFuY2UtLTtcCit9IHdoaWxlKDApCisK
KyNlbHNlCisKKyNkZWZpbmUgaW5jcmVtZW50X2J1ZmZlcl9iYWxhbmNlKCkgZG8ge1wKK30gd2hp
bGUoMCkKKworI2RlZmluZSBkZWNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKSBkbyB7XAorfSB3aGls
ZSgwKQorCisjZW5kaWYKKworc3RhdGljIHRzZl9idWZmZXJfdCBlbXB0eV9idWZmZXI7CisKK3N0
YXRpYyB2b2lkIGluaXRfZW1wdHlfYnVmZmVyKHZvaWQpIHsKKyAgICBlbXB0eV9idWZmZXIudHlw
ZT10c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX1ZPSUQpOworICAgIGVtcHR5X2J1ZmZlci50eXBlcz10
c2ZfdHlwZV9pbl9tYXBfZ2V0X2VtcHR5X3NpbmdsZXRvbigpOworICAgIGVtcHR5X2J1ZmZlci5k
YXRhPU5VTEw7CisgICAgZW1wdHlfYnVmZmVyLnNpemU9MDsKKyAgICBlbXB0eV9idWZmZXIua2Vl
cD10c2ZfZmFsc2U7Cit9CisKK3N0YXRpYyB0c2Zfb25jZV90IG9uY2VfY29udHJvbCA9IFRTRl9P
TkNFX0lOSVQ7CisKK3N0YXRpYyB2b2lkIGNoZWNrX2luaXRfZW1wdHlfYnVmZmVyKHZvaWQpIHsK
KyAgICB0c2Zfb25jZSgmb25jZV9jb250cm9sLCBpbml0X2VtcHR5X2J1ZmZlcik7Cit9CisKK3Rz
Zl9idWZmZXJfdCAqdHNmX2J1ZmZlcl9nZXRfZW1wdHlfc2luZ2xldG9uKHZvaWQpIHsKKyAgICBj
aGVja19pbml0X2VtcHR5X2J1ZmZlcigpOworICAgIHJldHVybiAmZW1wdHlfYnVmZmVyOworfQor
Cit0c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfY3JlYXRlKHRzZl90eXBlX3QgKnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF90ICp0eXBlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX2Jvb2xfdCBrZWVwKSB7CisgICAgdHNmX2J1ZmZlcl90ICpyZXQ9bWFsbG9j
KHNpemVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSB0c2ZfYnVmZmVyX3Qgc3RydWN0LiIpOwor
ICAgICAgICBpZiAoa2VlcCkgeworICAgICAgICAgICAgZnJlZShkYXRhKTsKKyAgICAgICAgfQor
ICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZGVzdHJveSh0eXBlcyk7CisgICAgICAgIHJldHVybiBO
VUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGU9dHNmX3R5cGVfZHVwKHR5cGUpOworICAg
IHJldC0+dHlwZXM9dHlwZXM7CisgICAgcmV0LT5kYXRhPWRhdGE7CisgICAgcmV0LT5zaXplPXNp
emU7CisgICAgcmV0LT5rZWVwPWtlZXA7CisgICAgCisgICAgdHNmX2F0b21pY19jb3VudF9pbml0
KCZyZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgaW5jcmVtZW50X2J1ZmZlcl9iYWxhbmNl
KCk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCB0c2ZfYnVmZmVyX2luaXRpYWxp
emVfY3VzdG9tKHRzZl9idWZmZXJfdCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmJhY2tpbmdfc3RvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGJhY2tpbmdfc3RvcmVfc2l6ZSkgeworICAgIGJ1Zi0+ZGF0YSA9IGJhY2tp
bmdfc3RvcmU7CisgICAgYnVmLT5zaXplID0gYmFja2luZ19zdG9yZV9zaXplOworICAgIGJ1Zi0+
a2VlcCA9IHRzZl9mYWxzZTsKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJmJ1Zi0+cmVmX2Nv
dW50LCAwKTsKK30KKwordHNmX2J1ZmZlcl90ICp0c2ZfYnVmZmVyX2NyZWF0ZV9iYXJlKHZvaWQp
IHsKKyAgICB0c2ZfYnVmZmVyX3QgKnJlc3VsdCA9IG1hbGxvYyhzaXplb2YodHNmX2J1ZmZlcl90
KSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNv
dWxkIG5vdCBtYWxsb2MgYSB0c2ZfYnVmZmVyX3Qgc3RydWN0LiIpOworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5kYXRhID0gTlVMTDsKKyAgICByZXN1bHQt
PnNpemUgPSAwOworICAgIHJlc3VsdC0+a2VlcCA9IHRzZl9mYWxzZTsKKworICAgIHRzZl9hdG9t
aWNfY291bnRfaW5pdCgmcmVzdWx0LT5yZWZfY291bnQsIDEpOworICAgIAorICAgIGluY3JlbWVu
dF9idWZmZXJfYmFsYW5jZSgpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl9i
dWZmZXJfdCAqdHNmX2J1ZmZlcl9jcmVhdGVfYmFyZV9pbih2b2lkICpyZWdpb24pIHsKKyAgICB0
c2ZfYnVmZmVyX3QgKnJlc3VsdCA9IHRzZl9yZWdpb25fYWxsb2MocmVnaW9uLCBzaXplb2YodHNm
X2J1ZmZlcl90KSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FsbG9jIGEgdHNmX2J1ZmZlcl90IHN0cnVjdC4i
KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+ZGF0YSA9
IE5VTEw7CisgICAgcmVzdWx0LT5zaXplID0gMDsKKyAgICByZXN1bHQtPmtlZXAgPSB0c2ZfZmFs
c2U7CisKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJnJlc3VsdC0+cmVmX2NvdW50LCAwKTsK
KyAgICAKKyAgICBpbmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfY3JlYXRlX2luKHRzZl90eXBl
X3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2lu
X21hcF90ICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAg
dHNmX2J1ZmZlcl90ICpyZXQ9dHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sc2l6ZW9mKHRzZl9idWZm
ZXJfdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IHRzZl9yZWdpb25fYWxsb2MgdHNmX2J1ZmZlcl90IHN0cnVjdC4iKTsKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2so
cmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRzZl9yZWdpb25fY2JhY2tf
dCl0c2ZfdHlwZV9kZXN0cm95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkp
IHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHRzZl9yZWdpb25fYWRkX2NiYWNr
IGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgInRzZl90eXBlX2Rlc3Ryb3kiKTsKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+dHlwZT10c2ZfdHlwZV9kdXAo
dHlwZSk7CisgICAgcmV0LT50eXBlcz10eXBlczsKKyAgICByZXQtPmRhdGE9ZGF0YTsKKyAgICBy
ZXQtPnNpemU9c2l6ZTsKKyAgICByZXQtPmtlZXA9dHNmX2ZhbHNlOworICAgIAorICAgIHRzZl9h
dG9taWNfY291bnRfaW5pdCgmcmV0LT5yZWZfY291bnQsIDApOworCisgICAgcmV0dXJuIHJldDsK
K30KKwordHNmX2J1ZmZlcl90ICp0c2ZfYnVmZmVyX2R1cCh0c2ZfYnVmZmVyX3QgKmJ1Zikgewor
ICAgIGlmIChidWY9PSZlbXB0eV9idWZmZXIpIHsKKwlyZXR1cm4gYnVmOworICAgIH0KKyAgICAK
KyAgICAvKiBLZWVwIGJlaW5nIGZhbHNlIG1lYW5zIHRoYXQgc29tZW9uZSBlbHNlIG93bnMgdGhl
IGJhY2tpbmcgc3RvcmUuIE51bGwgcmVmZXJlbmNlIGNvdW50IG1lYW5zIAorICAgICAgIHRoYXQg
dGhpcyBidWZmZXIgaXMgb3duZWQgYnkgc29tZW9uZSBlbHNlLiAqLworICAgIGlmICghYnVmLT5r
ZWVwIHx8ICF0c2ZfYXRvbWljX2NvdW50X3ZhbHVlKCZidWYtPnJlZl9jb3VudCkpIHsKKyAgICAg
ICAgcmV0dXJuIHRzZl9idWZmZXJfY2xvbmUoYnVmKTsKKyAgICB9CisgICAgCisgICAgdHNmX2F0
b21pY19jb3VudF94YWRkKCZidWYtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgaW5jcmVtZW50
X2J1ZmZlcl9iYWxhbmNlKCk7CisgICAgCisgICAgcmV0dXJuIGJ1ZjsKK30KKwordHNmX2J1ZmZl
cl90ICp0c2ZfYnVmZmVyX2Nsb25lKHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdHNmX2J1ZmZl
cl90ICpyZXQ9bWFsbG9jKHNpemVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0PT1OVUxM
KSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2J1ZmZlcl90
Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnNpemU9YnVm
LT5zaXplOworICAgIHJldC0+ZGF0YT1tYWxsb2MoYnVmLT5zaXplKTsKKyAgICBpZiAocmV0LT5k
YXRhPT1OVUxMKSB7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgdHNmX3NldF9lcnJubygi
Q291bGQgbm90IG1hbGxvYyBidWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIG1lbWNweShyZXQtPmRhdGEsYnVmLT5kYXRhLHJldC0+c2l6ZSk7CisgICAgCisg
ICAgcmV0LT50eXBlPXRzZl90eXBlX2R1cChidWYtPnR5cGUpOworICAgIHJldC0+dHlwZXM9dHNm
X3R5cGVfaW5fbWFwX2Nsb25lKGJ1Zi0+dHlwZXMpOworICAgIGlmIChyZXQtPnR5cGVzPT1OVUxM
KSB7CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgZnJlZShy
ZXQtPmRhdGEpOworICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICByZXQtPmtlZXA9dHNmX3RydWU7CisgICAgCisgICAgdHNmX2F0b21pY19j
b3VudF9pbml0KCZyZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgaW5jcmVtZW50X2J1ZmZl
cl9iYWxhbmNlKCk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordHNmX2J1ZmZlcl90ICp0
c2ZfYnVmZmVyX2Nsb25lX2luKHRzZl9idWZmZXJfdCAqYnVmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbikgeworICAgIHRzZl9idWZmZXJfdCAqcmV0PXRz
Zl9yZWdpb25fYWxsb2MocmVnaW9uLHNpemVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0
PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2Fs
bG9jIHRzZl9idWZmZXJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisg
ICAgcmV0LT5zaXplPWJ1Zi0+c2l6ZTsKKyAgICByZXQtPmRhdGE9dHNmX3JlZ2lvbl9hbGxvYyhy
ZWdpb24sYnVmLT5zaXplKTsKKyAgICBpZiAocmV0LT5kYXRhPT1OVUxMKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FsbG9jIGJ1ZmZlciIpOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgbWVtY3B5KHJldC0+ZGF0YSxidWYtPmRh
dGEscmV0LT5zaXplKTsKKworICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2socmVnaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRzZl9yZWdpb25fY2JhY2tfdCl0c2ZfdHlw
ZV9kZXN0cm95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLT50eXBlKSkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3JlZ2lvbl9hZGRfY2JhY2sgZm9y
ICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfZGVzdHJveSIpOworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT50eXBlPXRzZl90eXBlX2R1cChidWYt
PnR5cGUpOworICAgIHJldC0+dHlwZXM9dHNmX3R5cGVfaW5fbWFwX2Nsb25lX2luKGJ1Zi0+dHlw
ZXMscmVnaW9uKTsKKyAgICBpZiAocmV0LT50eXBlcz09TlVMTCkgeworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT5rZWVwPXRzZl9mYWxzZTsKKyAgICAKKyAgICBy
ZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBkZXN0cm95X2J1ZmZlcl9jb250ZW50cyh0c2Zf
YnVmZmVyX3QgKmJ1ZikgeworICAgIGlmIChidWYtPmtlZXApIHsKKyAgICAgICAgZnJlZShidWYt
PmRhdGEpOworICAgIH0KKworICAgIHRzZl9hdG9taWNfY291bnRfZGVzdHJveSgmYnVmLT5yZWZf
Y291bnQpOworICAgIHRzZl90eXBlX2Rlc3Ryb3koYnVmLT50eXBlKTsKKyAgICB0c2ZfdHlwZV9p
bl9tYXBfZGVzdHJveShidWYtPnR5cGVzKTsKK30KKwordm9pZCB0c2ZfYnVmZmVyX2Rlc3Ryb3lf
Y3VzdG9tKHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdHNmX2Fzc2VydCh0c2ZfYXRvbWljX2Nv
dW50X3ZhbHVlKCZidWYtPnJlZl9jb3VudCkgPT0gMCk7CisgICAgZGVzdHJveV9idWZmZXJfY29u
dGVudHMoYnVmKTsKK30KKwordm9pZCB0c2ZfYnVmZmVyX2Rlc3Ryb3kodHNmX2J1ZmZlcl90ICpi
dWYpIHsKKyAgICBpZiAoYnVmPT0mZW1wdHlfYnVmZmVyKSB7CisJcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICB0c2ZfYXNzZXJ0KHRzZl9hdG9taWNfY291bnRfdmFsdWUoJmJ1Zi0+cmVmX2NvdW50
KSk7CisgICAgCisgICAgZGVjcmVtZW50X2J1ZmZlcl9iYWxhbmNlKCk7CisgICAgCisgICAgaWYg
KHRzZl9hdG9taWNfY291bnRfeHN1YigmYnVmLT5yZWZfY291bnQsIDEpID4gMSkgeworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIGRlc3Ryb3lfYnVmZmVyX2NvbnRlbnRzKGJ1Zik7
CisgICAgZnJlZShidWYpOworfQorCit2b2lkIHRzZl9idWZmZXJfZGVzdHJveV9iYXJlKHRzZl9i
dWZmZXJfdCAqYnVmKSB7CisgICAgZnJlZShidWYpOworfQorCit1aW50MzJfdCB0c2ZfYnVmZmVy
X2dldF9zaXplKHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgcmV0dXJuIGJ1Zi0+c2l6ZTsKK30K
KworY29uc3Qgdm9pZCAqdHNmX2J1ZmZlcl9nZXRfZGF0YSh0c2ZfYnVmZmVyX3QgKmJ1Zikgewor
ICAgIHJldHVybiBidWYtPmRhdGE7Cit9CisKK3R5cGVkZWYgZW51bSB7CisgICAgc21hbGxfbGVu
Z3RoLAorICAgIGxhcmdlX2xlbmd0aAorfSBsZW5ndGhfc2l6ZV90OworCitzdGF0aWMgdHNmX2Jv
b2xfdCByZWFkX2J1ZmZlcl9pbXBsKHRzZl9idWZmZXJfdCAqcmVzdWx0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlX2NvZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF90ICplbmNsb3NpbmdfdHlwZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWFkZXJfdCByZWFkZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1pdHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF9zaXplX3QgbGVuZ3RoX3NpemUpIHsK
KyAgICB1aW50MzJfdCBzaXplOworICAgIAorICAgIGlmICh0eXBlX2NvZGUgPj0gdHNmX3R5cGVf
aW5fbWFwX2dldF9udW1fdHlwZXMoZW5jbG9zaW5nX3R5cGVzKSkgeworICAgICAgICB0c2Zfc2V0
X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJUeXBlIGNv
ZGUgaXMgb3V0c2lkZSBvZiBib3VuZHMgb2YgdHlwZSBtYXA6ICIKKyAgICAgICAgICAgICAgICAg
ICAgICBmdWkzMiAiIGlzIHRoZSB0eXBlIGNvZGUsIHdoaWxlIHRoZSB0eXBlIG1hcCAiCisgICAg
ICAgICAgICAgICAgICAgICAgImhhcyBhIHNpemUgb2YgIiBmdWkzMiwKKyAgICAgICAgICAgICAg
ICAgICAgICB0eXBlX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfaW5fbWFw
X2dldF9udW1fdHlwZXMoZW5jbG9zaW5nX3R5cGVzKSk7CisgICAgICAgIGdvdG8gZXJyb3IxOwor
ICAgIH0KKyAgICAKKyAgICByZXN1bHQtPnR5cGUgPSB0c2ZfdHlwZV9kdXAoCisgICAgICAgIHRz
Zl90eXBlX2luX21hcF9nZXRfdHlwZShlbmNsb3NpbmdfdHlwZXMsIHR5cGVfY29kZSkpOworICAg
IAorICAgIGlmICh0c2ZfdHlwZV9pc19keW5hbWljKHJlc3VsdC0+dHlwZSkpIHsKKyAgICAgICAg
LyogbXVzdCByZWFkIHR5cGUgdHJhbnNsYXRpb24gdGFibGUuICovCisgICAgICAgIHVpbnQzMl90
IG51bV90eXBlczsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIAorICAgICAgICBy
ZXN1bHQtPnR5cGVzID0gdHNmX3R5cGVfaW5fbWFwX2NyZWF0ZSgpOworICAgICAgICBpZiAocmVz
dWx0LT50eXBlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yMjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgaWYgKCFyZWFkZXIoYXJnLCAmbnVtX3R5cGVzLCBzaXplb2Yo
bnVtX3R5cGVzKSkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3IzOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBudW1fdHlwZXMgPSBudG9obChudW1fdHlwZXMpOworICAgICAgICAKKyAg
ICAgICAgdHNmX3R5cGVfaW5fbWFwX3ByZXBhcmUocmVzdWx0LT50eXBlcywgbnVtX3R5cGVzKTsK
KyAgICAgICAgCisgICAgICAgIHdoaWxlIChudW1fdHlwZXMgLS0+IDApIHsKKyAgICAgICAgICAg
IGlmICghcmVhZGVyKGFyZywgJmluZGV4LCBzaXplb2YoaW5kZXgpKSkgeworICAgICAgICAgICAg
ICAgIGdvdG8gZXJyb3IzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBpbmRleCA9IG50b2hsKGluZGV4KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlu
ZGV4ID49IHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVzKGVuY2xvc2luZ190eXBlcykpIHsK
KyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkluZGV4ICIgZnVpMzIgIiBpbnRvIGVuY2xvc2luZyB0
eXBlIHRhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyBvdXRzaWRlIG9m
IGJvdW5kczsgdGhlIGVuY2xvc2luZyB0YWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaGFzIGEgc2l6ZSBvZiAiIGZ1aTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBf
Z2V0X251bV90eXBlcyhlbmNsb3NpbmdfdHlwZXMpKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVy
cm9yMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c2Zf
dHlwZV9pbl9tYXBfYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICByZXN1bHQtPnR5cGVzLAor
ICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoZW5jbG9zaW5nX3R5
cGVzLCBpbmRleCkpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjM7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQtPnR5cGVzID0gdHNm
X3R5cGVfaW5fbWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKTsKKyAgICB9CisKKyAgICBzd2l0Y2gg
KGxlbmd0aF9zaXplKSB7CisgICAgY2FzZSBzbWFsbF9sZW5ndGg6IHsKKyAgICAgICAgdWludDhf
dCBteV9zaXplOworICAgICAgICBpZiAoIXJlYWRlcihhcmcsICZteV9zaXplLCBzaXplb2YobXlf
c2l6ZSkpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgfQorICAgICAgICBz
aXplID0gbXlfc2l6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgbGFyZ2VfbGVu
Z3RoOiB7CisgICAgICAgIGlmICghcmVhZGVyKGFyZywgJnNpemUsIHNpemVvZihzaXplKSkpIHsK
KyAgICAgICAgICAgIGdvdG8gZXJyb3IzOworICAgICAgICB9CisgICAgICAgIHNpemUgPSBudG9o
bChzaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgfSB9CisgICAgCisgICAgaWYgKHNpemUgPiB0
c2ZfbGltaXRzX21heF9idWZfc2l6ZShsaW1pdHMpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3Io
VFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIkJ1ZmZlciBzaXplIGV4
Y2VlZHMgbGltaXQiKTsKKyAgICAgICAgZ290byBlcnJvcjM7CisgICAgfQorICAgIAorICAgIGlm
IChzaXplID4gcmVzdWx0LT5zaXplKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YSA9IG1hbGxvYyhz
aXplKTsKKyAgICAgICAgaWYgKHJlc3VsdC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICB0
c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgYnVmZmVyIGRhdGEuIik7CisgICAgICAg
ICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzdWx0LT5r
ZWVwID0gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+c2l6ZSA9IHNpemU7Cisg
ICAgCisgICAgaWYgKCFyZWFkZXIoYXJnLCByZXN1bHQtPmRhdGEsIHJlc3VsdC0+c2l6ZSkpIHsK
KyAgICAgICAgZ290byBlcnJvcjQ7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsK
KworZXJyb3I0OgorICAgIGZyZWUocmVzdWx0LT5kYXRhKTsKKyAgICByZXN1bHQtPmtlZXAgPSB0
c2ZfZmFsc2U7CitlcnJvcjM6CisgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3kocmVzdWx0LT50
eXBlcyk7CitlcnJvcjI6CisgICAgdHNmX3R5cGVfZGVzdHJveShyZXN1bHQtPnR5cGUpOworZXJy
b3IxOgorICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl9y
ZWFkX3NpbXBsZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqZW5jbG9zaW5nX3R5cGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWFkZXJfdCByZWFkZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzKSB7CisgICAgdWludDMyX3QgdHlwZV9jb2Rl
OworICAgIAorICAgIGlmICghcmVhZGVyKGFyZywgJnR5cGVfY29kZSwgc2l6ZW9mKHR5cGVfY29k
ZSkpKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVy
biByZWFkX2J1ZmZlcl9pbXBsKGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9o
bCh0eXBlX2NvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2xvc2luZ190eXBl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZV9sZW5ndGgpOworfQorCit0c2ZfYm9vbF90
IHRzZl9idWZmZXJfcmVhZF9zbWFsbF93aXRoX3R5cGVfY29kZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IHR5cGVfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRzZl90eXBlX2luX21hcF90ICplbmNsb3NpbmdfdHlwZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfcmVhZGVyX3QgcmVhZGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0
c190ICpsaW1pdHMpIHsKKyAgICByZXR1cm4gcmVhZF9idWZmZXJfaW1wbChidWYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZV9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuY2xvc2luZ190eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbF9sZW5ndGgp
OworfQorCit0c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfcmVhZF9mcm9tX2J1Zih0c2ZfdHlwZV9p
bl9tYXBfdCAqZW5jbG9zaW5nX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKnJlZ2lvbikgeworICAgIHVpbnQzMl90IHR5cGVfY29kZTsKKyAgICB0c2ZfdHlw
ZV90ICp0eXBlOworICAgIHRzZl9idWZmZXJfdCAqcmV0ID0gdHNmX2NvbmRfYWxsb2MocmVnaW9u
LCBzaXplb2YodHNmX2J1ZmZlcl90KSk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfY29uZF9hbGxvYyB0c2ZfYnVmZmVyX3QiKTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+a2VlcCA9IChyZWdp
b24gPT0gTlVMTCA/IHRzZl90cnVlIDogdHNmX2ZhbHNlKTsKKyAgICAKKyAgICBjb3B5X250b2hs
X2luY3NyY19iYygodWludDhfdCopJnR5cGVfY29kZSwgKmN1ciwgZW5kLCBwaGFzZTFfYm91bmRz
X2Vycm9yKTsKKyAgICAKKyAgICBpZiAodHlwZV9jb2RlID49IHRzZl90eXBlX2luX21hcF9nZXRf
bnVtX3R5cGVzKGVuY2xvc2luZ190eXBlcykpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0Zf
RV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAiVHlwZSBjb2RlIGlzIG91dHNp
ZGUgb2YgYm91bmRzIG9mIHR5cGUgbWFwOiAiCisgICAgICAgICAgICAgICAgICAgICAgZnVpMzIg
IiBpcyB0aGUgdHlwZSBjb2RlLCB3aGlsZSB0aGUgdHlwZSBtYXAgIgorICAgICAgICAgICAgICAg
ICAgICAgICJoYXMgYSBzaXplIG9mICIgZnVpMzIsCisgICAgICAgICAgICAgICAgICAgICAgdHlw
ZV9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5
cGVzKGVuY2xvc2luZ190eXBlcykpOworICAgICAgICBpZiAocmVnaW9uID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgCisgICAgdHlwZSA9IHRzZl90eXBlX2luX21hcF9nZXRfdHlwZShlbmNsb3Npbmdf
dHlwZXMsIHR5cGVfY29kZSk7CisgICAgCisgICAgaWYgKHJlZ2lvbiAhPSBOVUxMKSB7CisgICAg
ICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2socmVnaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh0c2ZfcmVnaW9uX2NiYWNrX3QpdHNmX3R5cGVfZGVzdHJveSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKSkgeworICAgICAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IHRzZl9yZWdpb25fYWRkX2NiYWNrIGZvciAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0c2ZfdHlwZV9kZXN0cm95Iik7CisgICAgICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGUgPSB0c2ZfdHlw
ZV9kdXAodHlwZSk7CisgICAgCisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWMocmV0LT50eXBl
KSkgeworICAgICAgICAvKiBtdXN0IHJlYWQgdHlwZSB0cmFuc2xhdGlvbiB0YWJsZS4gKi8KKyAg
ICAgICAgdWludDMyX3QgbnVtX3R5cGVzOworICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAg
ICAgCisgICAgICAgIGlmIChyZWdpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0LT50eXBl
cyA9IHRzZl90eXBlX2luX21hcF9jcmVhdGUoKTsKKyAgICAgICAgICAgIGlmIChyZXQtPnR5cGVz
ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7
CisgICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0LT50eXBl
cyA9IHRzZl90eXBlX2luX21hcF9jcmVhdGVfaW4ocmVnaW9uKTsKKyAgICAgICAgICAgIGlmIChy
ZXQtPnR5cGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29weV9udG9obF9pbmNzcmNf
YmMoKHVpbnQ4X3QqKSZudW1fdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpj
dXIsIGVuZCwgcGhhc2UyX2JvdW5kc19lcnJvcik7CisgICAgICAgIAorICAgICAgICB0c2ZfdHlw
ZV9pbl9tYXBfcHJlcGFyZShyZXQtPnR5cGVzLCBudW1fdHlwZXMpOworICAgICAgICAKKyAgICAg
ICAgd2hpbGUgKG51bV90eXBlcyAtLT4gMCkgeworICAgICAgICAgICAgY29weV9udG9obF9pbmNz
cmNfYmMoKHVpbnQ4X3QqKSZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpjdXIsIGVuZCwgcGhhc2UyX2JvdW5kc19lcnJvcik7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChpbmRleCA+PSB0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhlbmNsb3Npbmdf
dHlwZXMpKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJP
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmRleCAiIGZ1aTMyICIgaW50byBl
bmNsb3NpbmcgdHlwZSB0YWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXMg
b3V0c2lkZSBvZiBib3VuZHM7IHRoZSBlbmNsb3NpbmcgdGFibGUgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImhhcyBhIHNpemUgb2YgIiBmdWkzMiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfaW5fbWFwX2dldF9udW1fdHlwZXMoZW5jbG9zaW5nX3R5cGVzKSk7CisgICAgICAgICAgICAg
ICAgaWYgKHJlZ2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2lu
X21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9k
ZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdHNmX3R5cGVfaW5fbWFwX2FwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgIHJldC0+dHlwZXMsCisgICAgICAgICAgICAgICAgICAgICB0
c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoZW5jbG9zaW5nX3R5cGVzLCBpbmRleCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHJlZ2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRz
Zl90eXBlX2luX21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAgICAgICAgICB0
c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGZyZWUocmV0
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICByZXQtPnR5cGVzID0g
dHNmX3R5cGVfaW5fbWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKTsKKyAgICB9CisgICAgCisgICAg
Y29weV9udG9obF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZyZXQtPnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgKmN1ciwgZW5kLCBwaGFzZTJfYm91bmRzX2Vycm9yKTsKKyAgICAKKyAgICBp
ZiAocmV0LT5zaXplICsgKmN1ciA+IGVuZCkgeworICAgICAgICBnb3RvIHBoYXNlMl9ib3VuZHNf
ZXJyb3I7CisgICAgfQorICAgIAorICAgIHJldC0+ZGF0YSA9IHRzZl9jb25kX2FsbG9jKHJlZ2lv
biwgcmV0LT5zaXplKTsKKyAgICBpZiAocmV0LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgaWYg
KHJlZ2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZGVzdHJveShy
ZXQtPnR5cGVzKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAg
ICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgfQorICAgICAgICB0c2Zfc2V0X2Vycm5vKCJD
b3VsZCBub3QgdHNmX2NvbmRfYWxsb2MgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICAKKyAgICBtZW1jcHkocmV0LT5kYXRhLCAqY3VyLCByZXQtPnNpemUpOworICAg
ICgqY3VyKSArPSByZXQtPnNpemU7CisgICAgCisgICAgaWYgKHJlZ2lvbiA9PSBOVUxMKSB7Cisg
ICAgICAgIHRzZl9hdG9taWNfY291bnRfaW5pdCgmcmV0LT5yZWZfY291bnQsIDEpOworICAgICAg
ICBpbmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJl
dDsKKworcGhhc2UyX2JvdW5kc19lcnJvcjoKKyAgICBpZiAocmVnaW9uID09IE5VTEwpIHsKKyAg
ICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOworICAgICAgICB0c2ZfdHlwZV9pbl9t
YXBfZGVzdHJveShyZXQtPnR5cGVzKTsKKyAgICB9CitwaGFzZTFfYm91bmRzX2Vycm9yOgorICAg
IGlmIChyZWdpb24gPT0gTlVMTCkgeworICAgICAgICBmcmVlKHJldCk7CisgICAgfQorICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAiQm91bmRz
IGVycm9yIGluIHRzZl9idWZmZXJfcmVhZF9mcm9tX2J1ZigpIik7CisgICAgcmV0dXJuIE5VTEw7
Cit9CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl9za2lwX2luX2J1Zih0c2ZfdHlwZV9pbl9tYXBf
dCAqZW5jbG9zaW5nX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKipjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
ZW5kKSB7CisgICAgdWludDMyX3QgdHlwZV9jb2RlLHNpemU7CisgICAgCisgICAgY29weV9udG9o
bF9pbmNzcmNfYmMoKHVpbnQ4X3QqKSZ0eXBlX2NvZGUsKmN1cixlbmQsYm91bmRzX2Vycm9yKTsK
KyAgICAKKyAgICBpZiAodHlwZV9jb2RlPj10c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhl
bmNsb3NpbmdfdHlwZXMpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJS
T1IsCisgICAgICAgICAgICAgICAgICAgICAgIlR5cGUgY29kZSBpcyBvdXRzaWRlIG9mIGJvdW5k
cyBvZiB0eXBlIG1hcDogIgorICAgICAgICAgICAgICAgICAgICAgIGZ1aTMyICIgaXMgdGhlIHR5
cGUgY29kZSwgd2hpbGUgdGhlIHR5cGUgbWFwICIKKyAgICAgICAgICAgICAgICAgICAgICAiaGFz
IGEgc2l6ZSBvZiAiIGZ1aTMyLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGVfY29kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhlbmNsb3Np
bmdfdHlwZXMpKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
aWYgKHRzZl90eXBlX2lzX2R5bmFtaWMoCisgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0
X3R5cGUoZW5jbG9zaW5nX3R5cGVzLHR5cGVfY29kZSkpKSB7CisgICAgICAgIC8qIG11c3Qgc2tp
cCB0eXBlIHRyYW5zbGF0aW9uIHRhYmxlLiAqLworICAgICAgICB1aW50MzJfdCBudW1fdHlwZXM7
CisgICAgICAgIAorICAgICAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhfdCopJm51bV90
eXBlcywqY3VyLGVuZCxib3VuZHNfZXJyb3IpOworICAgICAgICAKKyAgICAgICAgKCpjdXIpKz1u
dW1fdHlwZXMqNDsKKyAgICB9CisKKyAgICBjb3B5X250b2hsX2luY3NyY19iYygodWludDhfdCop
JnNpemUsKmN1cixlbmQsYm91bmRzX2Vycm9yKTsKKyAgICAKKyAgICBpZiAoc2l6ZSArICpjdXIg
PiBlbmQpIHsKKyAgICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgfQorICAgIAorICAgICgq
Y3VyKSs9c2l6ZTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7CisgICAgCitib3VuZHNfZXJy
b3I6CisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAg
ICAgICJCb3VuZHMgZXJyb3IgaW4gdHNmX2J1ZmZlcl9za2lwX2luX2J1ZigpIik7CisgICAgcmV0
dXJuIHRzZl9mYWxzZTsKK30KKwordWludDMyX3QgdHNmX2J1ZmZlcl9jYWxjX3NpemUodHNmX2J1
ZmZlcl90ICpidWYpIHsKKyAgICByZXR1cm4gKHRzZl90eXBlX2lzX2R5bmFtaWMoYnVmLT50eXBl
KSA/CisgICAgICAgICAgICA0ICsgNCAqIHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVzKGJ1
Zi0+dHlwZXMpIDogMCkgKworICAgICAgICBidWYtPnNpemUgKyA0ICsgNDsKK30KKworc3RhdGlj
IHRzZl9ib29sX3Qgd3JpdGVfYnVmZmVyX2ltcGwodHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRlcl90IHdyaXRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF9zaXplX3QgbGVuZ3RoX3NpemUp
IHsKKyAgICBpZiAodHNmX3R5cGVfaXNfZHluYW1pYyhidWYtPnR5cGUpKSB7CisgICAgICAgIHVp
bnQzMl90IG51bSwgaSwgc2l6ZV93b3JkOworICAgICAgICBudW0gPSB0c2ZfdHlwZV9pbl9tYXBf
Z2V0X251bV90eXBlcyhidWYtPnR5cGVzKTsKKyAgICAgICAgc2l6ZV93b3JkID0gaHRvbmwobnVt
KTsKKyAgICAgICAgaWYgKCF3cml0ZXIoYXJnLCAmc2l6ZV93b3JkLCBzaXplb2Yoc2l6ZV93b3Jk
KSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
Zm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB7CisgICAgICAgICAgICB1aW50MzJfdCB0eXBlX2Nv
ZGU7CisgICAgICAgICAgICBpZiAoIXRzZl90eXBlX291dF9tYXBfZ2V0X3R5cGVfY29kZSgKKyAg
ICAgICAgICAgICAgICAgICAgIHR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfaW5fbWFwX2dldF90eXBlKGJ1Zi0+dHlwZXMsIGkpLAorICAgICAgICAgICAgICAgICAgICAg
JnR5cGVfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHR5cGVfY29k
ZSA9IGh0b25sKHR5cGVfY29kZSk7CisgICAgICAgICAgICBpZiAoIXdyaXRlcihhcmcsICZ0eXBl
X2NvZGUsIHNpemVvZih0eXBlX2NvZGUpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3dpdGNo
IChsZW5ndGhfc2l6ZSkgeworICAgIGNhc2Ugc21hbGxfbGVuZ3RoOiB7CisgICAgICAgIHVpbnQ4
X3Qgc2l6ZV9ieXRlID0gYnVmLT5zaXplOworICAgICAgICB0c2ZfYXNzZXJ0KCh1aW50MzJfdClz
aXplX2J5dGUgPT0gYnVmLT5zaXplKTsKKyAgICAgICAgaWYgKCF3cml0ZXIoYXJnLCAmc2l6ZV9i
eXRlLCBzaXplb2Yoc2l6ZV9ieXRlKSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgbGFyZ2VfbGVuZ3Ro
OiB7CisgICAgICAgIHVpbnQzMl90IHNpemVfd29yZCA9IGh0b25sKGJ1Zi0+c2l6ZSk7CisgICAg
ICAgIGlmICghd3JpdGVyKGFyZywgJnNpemVfd29yZCwgc2l6ZW9mKHNpemVfd29yZCkpKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0gfQorICAgIAorICAgIGlmICghd3JpdGVyKGFyZywgYnVmLT5kYXRhLCBidWYtPnNpemUp
KSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0
c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3dyaXRlX3NpbXBsZSh0c2ZfYnVm
ZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
dHlwZV9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9v
dXRfbWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphcmcpIHsKKyAgICB0eXBlX2NvZGUgPSBodG9ubCh0eXBlX2NvZGUpOworICAgIAorICAg
IGlmICghd3JpdGVyKGFyZywgJnR5cGVfY29kZSwgc2l6ZW9mKHR5cGVfY29kZSkpKSB7CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB3cml0ZV9idWZm
ZXJfaW1wbChidWYsIHR5cGVfbWFwLCB3cml0ZXIsIGFyZywgbGFyZ2VfbGVuZ3RoKTsKK30KKwor
dHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3dyaXRlX3NtYWxsX3dpdGhfdHlwZV9jb2RlKHRzZl9idWZm
ZXJfdCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRzZl90eXBlX291dF9tYXBfdCAqdHlwZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRlcl90IHdyaXRlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAg
ICByZXR1cm4gd3JpdGVfYnVmZmVyX2ltcGwoYnVmLCB0eXBlX21hcCwgd3JpdGVyLCBhcmcsIHNt
YWxsX2xlbmd0aCk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl93cml0ZV90b19idWYodHNm
X2J1ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90
eXBlX291dF9tYXBfdCAqdHlwZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKip0YXJnZXQpIHsKKyAgICB1aW50MzJfdCB0eXBlX2NvZGU7CisgICAgCisg
ICAgaWYgKCF0c2ZfdHlwZV9vdXRfbWFwX2dldF90eXBlX2NvZGUodHlwZV9tYXAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLT50eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlX2NvZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgY29weV9odG9ubF9pbmNkc3QoKnRhcmdldCwodWludDhfdCop
JnR5cGVfY29kZSk7CisKKyAgICBpZiAodHNmX3R5cGVfaXNfZHluYW1pYyhidWYtPnR5cGUpKSB7
CisgICAgICAgIHVpbnQzMl90IG51bSxpOworICAgICAgICBudW09dHNmX3R5cGVfaW5fbWFwX2dl
dF9udW1fdHlwZXMoYnVmLT50eXBlcyk7CisgICAgICAgIGNvcHlfaHRvbmxfaW5jZHN0KCp0YXJn
ZXQsKHVpbnQ4X3QqKSZudW0pOworICAgICAgICBmb3IgKGk9MDtpPG51bTsrK2kpIHsKKyAgICAg
ICAgICAgIGlmICghdHNmX3R5cGVfb3V0X21hcF9nZXRfdHlwZV9jb2RlKAorICAgICAgICAgICAg
ICAgICAgICAgdHlwZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBf
Z2V0X3R5cGUoYnVmLT50eXBlcyxpKSwKKyAgICAgICAgICAgICAgICAgICAgICZ0eXBlX2NvZGUs
CisgICAgICAgICAgICAgICAgICAgICBOVUxMKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3B5X2h0b25sX2luY2RzdCgq
dGFyZ2V0LCh1aW50OF90KikmdHlwZV9jb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICBjb3B5X2h0b25sX2luY2RzdCgqdGFyZ2V0LCh1aW50OF90KikmYnVmLT5zaXplKTsKKyAgICAK
KyAgICBtZW1jcHkoKnRhcmdldCxidWYtPmRhdGEsYnVmLT5zaXplKTsKKyAgICAoKnRhcmdldCkr
PWJ1Zi0+c2l6ZTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3Qg
dHNmX2J1ZmZlcl93cml0ZV93aG9sZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIHVpbnQzMl90IHNpemU7CisgICAg
CisgICAgaWYgKGJ1Zj09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0K
KyAgICAKKyAgICBpZiAoIXRzZl90eXBlX3dyaXRlKHRzZl9idWZmZXJfZ2V0X3R5cGUoYnVmKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFyZykpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYg
KHRzZl90eXBlX2lzX2R5bmFtaWModHNmX2J1ZmZlcl9nZXRfdHlwZShidWYpKSkgeworICAgICAg
ICB1aW50MzJfdCBudW0saTsKKyAgICAgICAgCisgICAgICAgIG51bT10c2ZfdHlwZV9pbl9tYXBf
Z2V0X251bV90eXBlcyhidWYtPnR5cGVzKTsKKyAgICAgICAgc2l6ZT1odG9ubChudW0pOworICAg
ICAgICBpZiAoIXdyaXRlcihhcmcsJnNpemUsc2l6ZW9mKHNpemUpKSkgeworICAgICAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGk9MDtpPG51bTsrK2kp
IHsKKyAgICAgICAgICAgIGlmICghdHNmX3R5cGVfd3JpdGUodHNmX3R5cGVfaW5fbWFwX2dldF90
eXBlKGJ1Zi0+dHlwZXMsaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgc2l6ZT1odG9ubChidWYtPnNpemUpOworICAgIGlmICghd3JpdGVyKGFyZywmc2l6
ZSxzaXplb2Yoc2l6ZSkpKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIGlmICghd3JpdGVyKGFyZyxidWYtPmRhdGEsYnVmLT5zaXplKSkgeworICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisK
K3RzZl9idWZmZXJfdCAqdHNmX2J1ZmZlcl9yZWFkX3dob2xlKHRzZl9yZWFkZXJfdCByZWFkZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cykgeworICAg
IHRzZl9idWZmZXJfdCAqcmV0OworICAgIAorICAgIGlmICh0c2ZfbGltaXRzX21heF90eXBlcyhs
aW1pdHMpPDEpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAiTGltaXRzIGRvIG5vdCBhbGxvdyBmb3IgYW55IHR5cGVzLCB3
aGlsZSByZWFkaW5nIGEgYnVmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg
ICAKKyAgICByZXQ9bWFsbG9jKHNpemVvZih0c2ZfYnVmZmVyX3QpKTsKKyAgICBpZiAocmV0PT1O
VUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgYnVmZmVyIGlu
IHRzZl9idWZmZXJfcmVhZF93aG9sZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KyAgICAKKyAgICByZXQtPmtlZXA9dHNmX3RydWU7CisgICAgCisgICAgcmV0LT50eXBlPXRzZl90
eXBlX3JlYWQocmVhZGVyLGFyZyxsaW1pdHMpOworICAgIGlmIChyZXQtPnR5cGU9PU5VTEwpIHsK
KyAgICAgICAgZnJlZShyZXQtPnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWMocmV0LT50eXBlKSkgeworICAgICAgICB1
aW50MzJfdCBudW1fdHlwZXM7CisgICAgICAgIAorICAgICAgICByZXQtPnR5cGVzPXRzZl90eXBl
X2luX21hcF9jcmVhdGUoKTsKKyAgICAgICAgaWYgKHJldC0+dHlwZXM9PU5VTEwpIHsKKyAgICAg
ICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgIGZyZWUocmV0
KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoIXJlYWRlcihhcmcsJm51bV90eXBlcyxzaXplb2YobnVtX3R5cGVzKSkpIHsKKyAgICAg
ICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAg
dHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOworICAgICAgICAgICAgZnJlZShyZXQpOworICAg
ICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG51bV90
eXBlcz1udG9obChudW1fdHlwZXMpOworICAgICAgICAKKyAgICAgICAgaWYgKDErbnVtX3R5cGVz
ID4gdHNmX2xpbWl0c19tYXhfdHlwZXMobGltaXRzKSkgeworICAgICAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIk1heCB0
eXBlcyBsaW1pdCBleGNlZWRlZC4iKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0
cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUp
OworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHRzZl90eXBlX2luX21hcF9wcmVwYXJlKHJldC0+dHlw
ZXMsbnVtX3R5cGVzKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChudW1fdHlwZXMtLT4wKSB7
CisgICAgICAgICAgICBpZiAoIXRzZl90eXBlX2luX21hcF9hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgIHJldC0+dHlwZXMsCisgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3JlYWQocmVh
ZGVyLGFyZyxsaW1pdHMpKSkgeworICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0
cm95KHJldC0+dHlwZXMpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50
eXBlKTsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBy
ZXQtPnR5cGVzPXRzZl90eXBlX2luX21hcF9nZXRfZW1wdHlfc2luZ2xldG9uKCk7CisgICAgfQor
CisgICAgaWYgKCFyZWFkZXIoYXJnLCZyZXQtPnNpemUsc2l6ZW9mKHJldC0+c2l6ZSkpKSB7Cisg
ICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICB0c2Zf
dHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+c2l6ZT1udG9obChyZXQtPnNpemUpOwor
ICAgIAorICAgIGlmIChyZXQtPnNpemU+dHNmX2xpbWl0c19tYXhfYnVmX3NpemUobGltaXRzKSkg
eworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAg
ICAgICAgICAgICJCdWZmZXIgc2l6ZSBleGNlZWRzIGxpbWl0Iik7CisgICAgICAgIHRzZl90eXBl
X2luX21hcF9kZXN0cm95KHJldC0+dHlwZXMpOworICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJl
dC0+dHlwZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
fQorICAgIAorICAgIHJldC0+ZGF0YT1tYWxsb2MocmV0LT5zaXplKTsKKyAgICBpZiAocmV0LT5k
YXRhPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBi
dWZmZXIgZGF0YS4iKTsKKyAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3kocmV0LT50eXBl
cyk7CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgZnJlZShy
ZXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFyZWFkZXIo
YXJnLHJldC0+ZGF0YSxyZXQtPnNpemUpKSB7CisgICAgICAgIGZyZWUocmV0LT5kYXRhKTsKKyAg
ICAgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3kocmV0LT50eXBlcyk7CisgICAgICAgIHRzZl90
eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJnJldC0+cmVmX2Nv
dW50LCAxKTsKKyAgICBpbmNyZW1lbnRfYnVmZmVyX2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1
cm4gcmV0OworfQorCit0c2ZfYm9vbF90IHRzZl9idWZmZXJfY2FsY19zaGExKHRzZl9idWZmZXJf
dCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcmVzdWx0
KSB7CisgICAgdHNmX3NoYTFfd3RyX3QgKnNoYTE9dHNmX3NoYTFfd3JpdGVyX2NyZWF0ZSgpOwor
ICAgIGlmIChzaGExPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGlmICghdHNmX2J1ZmZlcl93cml0ZV93aG9sZShidWYsdHNmX3NoYTFfd3JpdGVy
X3dyaXRlLHNoYTEpKSB7CisgICAgICAgIHRzZl9zaGExX3dyaXRlcl9kZXN0cm95KHNoYTEpOwor
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodHNmX3NoYTFf
d3JpdGVyX2ZpbmlzaChzaGExKT09TlVMTCkgeworICAgICAgICB0c2Zfc2hhMV93cml0ZXJfZGVz
dHJveShzaGExKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
bWVtY3B5KHJlc3VsdCwKKyAgICAgICAgICAgdHNmX3NoYTFfd3JpdGVyX3Jlc3VsdChzaGExKSwK
KyAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSo1KTsKKyAgICAKKyAgICB0c2Zfc2hhMV93cml0
ZXJfZGVzdHJveShzaGExKTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9i
b29sX3QgdHNmX2J1ZmZlcl9jb21wYXJlKHRzZl9idWZmZXJfdCAqYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYikgeworICAgIGlmIChhPT1iKSB7CisgICAg
ICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKGEtPnNpemUhPWItPnNp
emUpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKCF0
c2ZfdHlwZV9jb21wYXJlKGEtPnR5cGUsYi0+dHlwZSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWMoYS0+dHlwZSkp
IHsKKyAgICAgICAgdHNmX2Fzc2VydCh0c2ZfdHlwZV9pc19keW5hbWljKGItPnR5cGUpKTsKKyAg
ICAgICAgdHNmX2Fzc2VydChhLT50eXBlcyE9TlVMTCk7CisgICAgICAgIHRzZl9hc3NlcnQoYi0+
dHlwZXMhPU5VTEwpOworICAgICAgICAKKyAgICAgICAgaWYgKCF0c2ZfdHlwZV9pbl9tYXBfY29t
cGFyZShhLT50eXBlcyxiLT50eXBlcykpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0c2ZfYXNzZXJ0KGEtPnR5cGVzPT10
c2ZfdHlwZV9pbl9tYXBfZ2V0X2VtcHR5X3NpbmdsZXRvbigpKTsKKyAgICAgICAgdHNmX2Fzc2Vy
dChiLT50eXBlcz09dHNmX3R5cGVfaW5fbWFwX2dldF9lbXB0eV9zaW5nbGV0b24oKSk7CisgICAg
fQorICAgIAorICAgIGlmIChtZW1jbXAoYS0+ZGF0YSxiLT5kYXRhLGEtPnNpemUpIT0wKSB7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1
ZTsKK30KKwordHNmX3R5cGVfdCAqdHNmX2J1ZmZlcl9nZXRfdHlwZSh0c2ZfYnVmZmVyX3QgKmJ1
ZikgeworICAgIHJldHVybiBidWYtPnR5cGU7Cit9CisKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl9p
bnN0YW5jZW9mKHRzZl9idWZmZXJfdCAqYnVmLCB0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0
dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHNmX2J1ZmZlcl9nZXRfdHlwZShidWYpLCB0eXBlKTsK
K30KKwordHNmX3R5cGVfaW5fbWFwX3QgKnRzZl9idWZmZXJfZ2V0X3NoYXJlZF90eXBlcyh0c2Zf
YnVmZmVyX3QgKmJ1ZikgeworICAgIHJldHVybiBidWYtPnR5cGVzOworfQorCkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1aWxkX2RlZmluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2J1aWxk
X2RlZmluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
d2FzbS90c2YvdHNmX2J1aWxkX2RlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0
IEBACisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2NhbCIKKyNkZWZpbmUgSU5DTFVERV9ESVIgIi91
c3IvbG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElCX0RJUiAiL3Vzci9sb2NhbC9saWIiCisjZGVm
aW5lIFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBYVFJBX0NQUEZMQUdTICItRF9SRUVOVFJBTlQg
IgorI2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisjZGVmaW5lIENGTEFHUyAiLWcgLU8yIC1mbm8t
c3RyaWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscyIKKyNkZWZpbmUgQ1BQ
RkxBR1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgorI2RlZmluZSBMSUJTICItbG0gIgorI2RlZmlu
ZSBTUkNESVIgIi4iCisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2NhbCIKKyNkZWZpbmUgSU5DTFVE
RV9ESVIgIi91c3IvbG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElCX0RJUiAiL3Vzci9sb2NhbC9s
aWIiCisjZGVmaW5lIFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBYVFJBX0NQUEZMQUdTICItRF9S
RUVOVFJBTlQgIgorI2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisjZGVmaW5lIENGTEFHUyAiLWcg
LU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscyIKKyNk
ZWZpbmUgQ1BQRkxBR1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgorI2RlZmluZSBMSUJTICItbG0g
IgorI2RlZmluZSBTUkNESVIgIi4iCisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2NhbCIKKyNkZWZp
bmUgSU5DTFVERV9ESVIgIi91c3IvbG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElCX0RJUiAiL3Vz
ci9sb2NhbC9saWIiCisjZGVmaW5lIFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBYVFJBX0NQUEZM
QUdTICItRF9SRUVOVFJBTlQgIgorI2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisjZGVmaW5lIENG
TEFHUyAiLWcgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUtc2libGluZy1j
YWxscyIKKyNkZWZpbmUgQ1BQRkxBR1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgorI2RlZmluZSBM
SUJTICItbG0gIgorI2RlZmluZSBTUkNESVIgIi4iCisjZGVmaW5lIFBSRUZJWCAiL3Vzci9sb2Nh
bCIKKyNkZWZpbmUgSU5DTFVERV9ESVIgIi91c3IvbG9jYWwvaW5jbHVkZSIKKyNkZWZpbmUgTElC
X0RJUiAiL3Vzci9sb2NhbC9saWIiCisjZGVmaW5lIFhUUkFfTERGTEFHUyAiIgorI2RlZmluZSBY
VFJBX0NQUEZMQUdTICItRF9SRUVOVFJBTlQgIgorI2RlZmluZSBYVFJBX0xJQlMgIi1seiAiCisj
ZGVmaW5lIENGTEFHUyAiLWcgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tb3B0aW1pemUt
c2libGluZy1jYWxscyIKKyNkZWZpbmUgQ1BQRkxBR1MgIiIKKyNkZWZpbmUgTERGTEFHUyAiIgor
I2RlZmluZSBMSUJTICItbG0gIgorI2RlZmluZSBTUkNESVIgIi4iCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfY29uZmlnLmgJKG5vbmV4aXN0
ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb25maWcu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZQX1RTRl9DT05G
SUdfSAorI2RlZmluZSBGUF9UU0ZfQ09ORklHX0gKKworI2luY2x1ZGUgInRzZl9jb25maWdfc3R1
Yi5oIgorCisvKiBoYWNrIHRvIGFsbG93IG91ciBwdWJsaWMgY29kZSB0aGF0IHJlcXVpcmVzIGlu
bGluaW5nIHRvIHdvcmsKKyAqIGNvcnJlY3RseSAqLworI2lmZGVmIF9fY3BsdXNwbHVzCisvKiB0
aGUgaW5saW5lIGtleXdvcmQgaXMgcGFydCBvZiBDKyssIHNvIHdlIGNhbiB1c2UgaXQgZGlyZWN0
bHkKKyAqIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBhdXRvY29uZiB0aGlua3MuICovCisjdW5kZWYgVFNG
X2lubGluZQorI2RlZmluZSBUU0ZfaW5saW5lIGlubGluZQorI2Vsc2UKKy8qIGF1dG9jb25mIGFz
c3VtZXMgdGhhdCBpdCBpcyBkZWZpbmluZyAnaW5saW5lJy4gIHNvLCBpdCB0aGlua3MKKyAqIHRo
YXQgYnkgbm90IGRlZmluaW5nICdpbmxpbmUnLCBpdCBpcyBtYWtpbmcgdXMgdXNlIHRoZSBpbmxp
bmUKKyAqIGtleXdvcmQuICBidXQgc2luY2UgdHNmX2NvbmZpZ19zdHViIGhhcyBldmVyeXRoaW5n
IHJlbmFtZWQgdG8KKyAqIGhhdmUgdGhlICdUU0ZfJyBzdWZmaXgsIGFuZCBzaW5jZSB0aGUgY29k
ZSB0aGF0IHRha2VzIGFkdmFudGFnZQorICogb2YgdGhpcyBoYWNrIHdpbGwgdXNlICdUU0ZfaW5s
aW5lJywgd2UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nLiAqLworI2lmbmRlZiBUU0ZfaW5saW5l
CisjZGVmaW5lIFRTRl9pbmxpbmUgaW5saW5lCisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYKKwpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9jb25maWdfc3R1
Yi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2ZfY29uZmlnX3N0dWIuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX2NvbmZpZ19zdHViLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNDIgQEAKKy8qIGxpYnJhcnkvY29uZmlnLmguICBHZW5lcmF0ZWQgZnJvbSBjb25maWcuaC5p
biBieSBjb25maWd1cmUuICAqLworLyogbGlicmFyeS9jb25maWcuaC5pbi4gIEdlbmVyYXRlZCBm
cm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KKworLyogRGVmaW5lIGlmIGJ1aWxk
aW5nIHVuaXZlcnNhbCAoaW50ZXJuYWwgaGVscGVyIG1hY3JvKSAqLworLyogI3VuZGVmIFRTRl9B
Q19BUFBMRV9VTklWRVJTQUxfQlVJTEQgKi8KKworLyogZGVmaW5lcyBob3cgdG8gdGhyb3cgaW4g
dGhlIG5vaW5saW5lIGF0dHJpYnV0ZSAqLworI2RlZmluZSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
IF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKworLyogRGVmaW5lZCBpZiB5b3UgY2FuIGRvIG1p
c2FsaWduZWQgbG9hZHMgYW5kIHN0b3JlcyBvbiBmbG9hdHMgKi8KKyNkZWZpbmUgVFNGX0NBTl9E
T19GTE9BVF9NSVNBTElHTkVEX0xEU1QgMQorCisvKiBEZWZpbmVkIGlmIHlvdSBjYW4gZG8gbWlz
YWxpZ25lZCBsb2FkcyBhbmQgc3RvcmVzICovCisjZGVmaW5lIFRTRl9DQU5fRE9fTUlTQUxJR05F
RF9MRFNUIDEKKworLyogRGV0ZXJtaW5lcyB0aGUgcHJlZml4IGZvciBpbmNsdWRpbmcgVFNGIGZp
bGVzIGZyb20gZ2VuZXJhdGVkIGNvZGUgKi8KKyNkZWZpbmUgVFNGX0NPREVfR0VOX0lOQ0xVREVf
UFJFRklYICJ0c2YvIgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFjY2VwdCcg
ZnVuY3Rpb24uICovCisjZGVmaW5lIFRTRl9IQVZFX0FDQ0VQVCAwCisKKy8qIERlZmluZWQgaWYg
d2UgY2FuIHRha2UgYWRkcmVzc2VzIG9mIGxhYmVscyAqLworLy8jZGVmaW5lIFRTRl9IQVZFX0FE
RFJFU1NfT0ZfTEFCRUwgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFycGEv
aW5ldC5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfQVJQQV9JTkVUX0ggMQor
CisvKiBEZWZpbmVkIGlmIHdlIGFyZSBvbiBhIGJpZyBlbmRpYW4gbWFjaGluZSAqLworLyogI3Vu
ZGVmIFRTRl9IQVZFX0JJR19FTkRJQU4gKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBiaW5kJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9CSU5EIDEKKworLyog
RGVmaWVuZCBpZiB5b3V2J2UgZ290IEJTRCBzb2NrZXRzICovCisvLyNkZWZpbmUgVFNGX0hBVkVf
QlNEU09DS1MgMQorCisvKiBEZWZpbmVkIGlmIHdlIGhhdmUgX19zeW5jX2Jvb2xfY29tcGFyZV9h
bmRfc3dhcCAqLworLy8jZGVmaW5lIFRTRl9IQVZFX0JVSUxUSU5fQ0FTIDEKKworLyogRGVmaW5l
ZCBpZiB3ZSBoYXZlIF9fc3luY19mZXRjaF9hbmRfYWRkICovCisvLyNkZWZpbmUgVFNGX0hBVkVf
QlVJTFRJTl9YQUREIDEKKworLyogRGVmaW5lZCBpZiB3ZSBoYXZlIGxpYmJ6aXAyICovCisvKiAj
dW5kZWYgVFNGX0hBVkVfQlpJUDIgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBjb25uZWN0JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9DT05ORUNUIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkbGZjbi5oPiBoZWFkZXIgZmlsZS4gKi8K
Ky8vI2RlZmluZSBUU0ZfSEFWRV9ETEZDTl9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBmb3JrJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9GT1JLIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRhZGRyaW5mbycgZnVuY3Rpb24uICov
CisvLyNkZWZpbmUgVFNGX0hBVkVfR0VUQUREUklORk8gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgYGdldGhvc3RieW5hbWUnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9I
QVZFX0dFVEhPU1RCWU5BTUUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdl
dGhvc3RieW5hbWVfcicgZnVuY3Rpb24uICovCisvKiAjdW5kZWYgVFNGX0hBVkVfR0VUSE9TVEJZ
TkFNRV9SICovCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0b3B0JyBmdW5j
dGlvbi4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfR0VUT1BUIDEKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGBnZXRwYWdlc2l6ZScgZnVuY3Rpb24uICovCisjZGVmaW5lIFRTRl9IQVZF
X0dFVFBBR0VTSVpFIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXR0aW1l
b2ZkYXknIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9HRVRUSU1FT0ZEQVkgMQorCisv
KiBEZXRlcm1pbmVzIGlmIHdlIGhhdmUgSUVFRSBmbG9hdGluZyBwb2ludCAqLworI2RlZmluZSBU
U0ZfSEFWRV9JRUVFX0ZMT0FUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBp
bmV0X250b2EnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9JTkVUX05UT0EgMQorCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvcCcgZnVuY3Rpb24uICovCisj
ZGVmaW5lIFRTRl9IQVZFX0lORVRfTlRPUCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX0lOVFRZ
UEVTX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG0nIGxpYnJhcnkgKC1s
bSkuICovCisjZGVmaW5lIFRTRl9IQVZFX0xJQk0gMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYGxpc3RlbicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgVFNGX0hBVkVfTElTVEVO
IDEKKworLyogRGVmaW5lZCBpZiB3ZSBhcmUgb24gYSBsaXR0bGUgZW5kaWFuIG1hY2hpbmUgKi8K
KyNkZWZpbmUgVFNGX0hBVkVfTElUVExFX0VORElBTiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgbG9jYWx0aW1lJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfTE9D
QUxUSU1FIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWVfcicg
ZnVuY3Rpb24uICovCisjZGVmaW5lIFRTRl9IQVZFX0xPQ0FMVElNRV9SIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb25nam1wJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBU
U0ZfSEFWRV9MT05HSk1QIDEKKworLyogRGVmaW5lZCBpZiB0aGUgTUFQX0FOT04gY29uc3RhbnQg
aXMgZGVmaW5lZC4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9NQVBfQU5PTiAxCisKKy8qIERlZmlu
ZWQgaWYgdGhlIE1BUF9BTk9OWU1PVVMgY29uc3RhbnQgaXMgZGVmaW5lZC4gKi8KKy8vI2RlZmlu
ZSBUU0ZfSEFWRV9NQVBfQU5PTllNT1VTIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX01FTU9SWV9I
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2R0ZW1wJyBmdW5jdGlvbi4g
Ki8KKy8vI2RlZmluZSBUU0ZfSEFWRV9NS0RURU1QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9NTUFQIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtcHJvdGVjdCcgZnVuY3Rpb24uICov
CisvLyNkZWZpbmUgVFNGX0hBVkVfTVBST1RFQ1QgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYG11bm1hcCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgVFNGX0hBVkVfTVVOTUFQ
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYXRoY29uZicgZnVuY3Rpb24u
ICovCisvLyNkZWZpbmUgVFNGX0hBVkVfUEFUSENPTkYgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgYHByZWFkJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9QUkVB
RCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJlYWR2JyBmdW5jdGlvbi4g
Ki8KKy8qICN1bmRlZiBUU0ZfSEFWRV9QUkVBRFYgKi8KKworLyogRGVmaW5lZCBpZiB3ZSBoYXZl
IHB0aHJlYWRzICovCisvLyNkZWZpbmUgVFNGX0hBVkVfUFRIUkVBRCAxCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0Zf
SEFWRV9QV1JJVEUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB3cml0ZXYn
IGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIFRTRl9IQVZFX1BXUklURVYgKi8KKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBxc29ydCcgZnVuY3Rpb24uICovCisjZGVmaW5lIFRTRl9I
QVZFX1FTT1JUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkZGlyX3In
IGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZFX1JFQURESVJfUiAxCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZHYnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRT
Rl9IQVZFX1JFQURWIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWdjb21w
JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9SRUdDT01QIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWdlcnJvcicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUg
VFNGX0hBVkVfUkVHRVJST1IgMQorCisvKiBEZWZpbmVkIGlmIHlvdSd2ZSBnb3QgcmVnZXggZnVu
Y3Rpb25zICovCisvLyNkZWZpbmUgVFNGX0hBVkVfUkVHRVggMQorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYHJlZ2V4ZWMnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZF
X1JFR0VYRUMgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2ZyZWUnIGZ1
bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZFX1JFR0ZSRUUgMQorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgPHNjaGVkLmg+IGhlYWRlciBmaWxlLiAqLworLy8jZGVmaW5lIFRT
Rl9IQVZFX1NDSEVEX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVk
X3lpZWxkJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9TQ0hFRF9ZSUVMRCAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0am1wJyBmdW5jdGlvbi4gKi8KKy8v
I2RlZmluZSBUU0ZfSEFWRV9TRVRKTVAgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgYHNldHZidWYnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9TRVRWQlVGIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGZ1bmN0aW9uLiAqLworLy8j
ZGVmaW5lIFRTRl9IQVZFX1NPQ0tFVCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBUU0ZfSEFWRV9TVERJTlRfSCAx
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW8uaD4gaGVhZGVyIGZpbGUu
ICovCisjZGVmaW5lIFRTRl9IQVZFX1NURElPX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfU1RE
TElCX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cGNweScgZnVuY3Rp
b24uICovCisjZGVmaW5lIFRTRl9IQVZFX1NUUENQWSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVf
U1RSSU5HU19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4g
aGVhZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX1NUUklOR19IIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJzaWduYWwnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5l
IFRTRl9IQVZFX1NUUlNJR05BTCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8
c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIFRTRl9IQVZFX1NZU19TVEFUX0gg
MQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIg
ZmlsZS4gKi8KKyNkZWZpbmUgVFNGX0hBVkVfU1lTX1RZUEVTX0ggMQorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91aW8uaD4gaGVhZGVyIGZpbGUuICovCisvLyNkZWZpbmUg
VFNGX0hBVkVfU1lTX1VJT19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0
ZW1wbmFtJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBUU0ZfSEFWRV9URU1QTkFNIDEKKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisj
ZGVmaW5lIFRTRl9IQVZFX1VOSVNURF9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGB2YXNwcmludGYnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBUU0ZfSEFWRV9WQVNQUklOVEYg
MQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdyaXRldicgZnVuY3Rpb24uICov
CisvLyNkZWZpbmUgVFNGX0hBVkVfV1JJVEVWIDEKKworLyogRGVmaW5lZCBpZiB3ZSBjYW4gdXNl
IFg4NiBpbmxpbmUgYXNzZW1ibHkgZm9yIGZlbmNlcyAqLworLy8jZGVmaW5lIFRTRl9IQVZFX1g4
Nl9JTkxJTkVfQVNNX0ZFTkNFUyAxCisKKy8qIERlZmluZWQgaWYgd2UgaGF2ZSBaTGliICovCisv
LyNkZWZpbmUgVFNGX0hBVkVfWkxJQiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgX2xvbmdqbXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIFRTRl9IQVZFX19MT05HSk1QIDEK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBfc2V0am1wJyBmdW5jdGlvbi4gKi8K
Ky8qICN1bmRlZiBUU0ZfSEFWRV9fU0VUSk1QICovCisKKy8qIERlZmluZWQgd2hlbiB5b3UncmUg
b24gYSBzZW5zaWJsZSBPUywgdW5saWtlIE5ldEJTRC4gKi8KKyNkZWZpbmUgVFNGX0lOVFRZUEVT
X1dPUktfUklHSFQgMQorCisvKiBEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2gg
bGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLgorICAgKi8KKyNkZWZpbmUgVFNG
X0xUX09CSkRJUiAiLmxpYnMvIgorCisvKiBUZWxsIHlvdSB0aGUgbmF0aXZlIGFsaWdubWVudCBv
ZiB5b3VyIHBsYXRmb3JtICovCisjZGVmaW5lIFRTRl9OQVRJVkVfQUxJR05NRU5UIDE2CisKKy8q
IE5hbWUgb2YgcGFja2FnZSAqLworI2RlZmluZSBUU0ZfUEFDS0FHRSAidHNmIgorCisvKiBEZWZp
bmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91
bGQgYmUgc2VudC4gKi8KKyNkZWZpbmUgVFNGX1BBQ0tBR0VfQlVHUkVQT1JUICJwaXpsb0BtYWMu
Y29tIgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisj
ZGVmaW5lIFRTRl9QQUNLQUdFX05BTUUgInRzZiIKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5h
bWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBUU0ZfUEFDS0FHRV9T
VFJJTkcgInRzZiAxLjEuMCIKKworLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5h
bWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBUU0ZfUEFDS0FHRV9UQVJOQU1FICJ0c2Yi
CisKKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisjZGVm
aW5lIFRTRl9QQUNLQUdFX1VSTCAiIgorCisvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhp
cyBwYWNrYWdlLiAqLworI2RlZmluZSBUU0ZfUEFDS0FHRV9WRVJTSU9OICIxLjEuMCIKKworLyog
VGhlIHNpemUgb2YgYGRvdWJsZScsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUg
VFNGX1NJWkVPRl9ET1VCTEUgOAorCisvKiBUaGUgc2l6ZSBvZiBgZmxvYXQnLCBhcyBjb21wdXRl
ZCBieSBzaXplb2YuICovCisjZGVmaW5lIFRTRl9TSVpFT0ZfRkxPQVQgNAorCisvKiBUaGUgc2l6
ZSBvZiBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgVFNGX1NJWkVP
Rl9MT05HIDQKKworLyogVGhlIHNpemUgb2YgYGxvbmcgZG91YmxlJywgYXMgY29tcHV0ZWQgYnkg
c2l6ZW9mLiAqLworI2RlZmluZSBUU0ZfU0laRU9GX0xPTkdfRE9VQkxFIDE2CisKKy8qIFRoZSBz
aXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFRT
Rl9TSVpFT0ZfTE9OR19MT05HIDgKKworLyogVGhlIHNpemUgb2YgYG9mZl90JywgYXMgY29tcHV0
ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBUU0ZfU0laRU9GX09GRl9UIDgKKworLyogVGhlIHNp
emUgb2YgYHNpemVfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgVFNGX1NJ
WkVPRl9TSVpFX1QgNAorCisvKiBUaGUgc2l6ZSBvZiBgdm9pZCAqJywgYXMgY29tcHV0ZWQgYnkg
c2l6ZW9mLiAqLworI2RlZmluZSBUU0ZfU0laRU9GX1ZPSURfUCA0CisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLworI2RlZmluZSBUU0ZfU1RE
Q19IRUFERVJTIDEKKworLyogRGV0ZXJtaW5lcyB3aGVyZSB0byBwbGFjZSB0ZW1wb3JhcnkgZmls
ZXMgKi8KKyNkZWZpbmUgVFNGX1RNUF9ESVJFQ1RPUlkgIi90bXAiCisKKy8qIFZlcnNpb24gbnVt
YmVyIG9mIHBhY2thZ2UgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT04gIjEuMS4wIgorCisvKiBUU0Yg
bWFqb3IgdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT05fTUFKT1IgMQorCisv
KiBUU0YgbWlub3IgdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT05fTUlOT1Ig
MQorCisvKiBUU0YgcGF0Y2ggdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgVFNGX1ZFUlNJT05f
UEFUQ0ggMAorCisvKiBEZWZpbmUgV09SRFNfQklHRU5ESUFOIHRvIDEgaWYgeW91ciBwcm9jZXNz
b3Igc3RvcmVzIHdvcmRzIHdpdGggdGhlIG1vc3QKKyAgIHNpZ25pZmljYW50IGJ5dGUgZmlyc3Qg
KGxpa2UgTW90b3JvbGEgYW5kIFNQQVJDLCB1bmxpa2UgSW50ZWwpLiAqLworI2lmIGRlZmluZWQg
QUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECisjIGlmIGRlZmluZWQgX19CSUdfRU5ESUFOX18KKyMg
IGRlZmluZSBXT1JEU19CSUdFTkRJQU4gMQorIyBlbmRpZgorI2Vsc2UKKyMgaWZuZGVmIFdPUkRT
X0JJR0VORElBTgorLyogIyAgdW5kZWYgV09SRFNfQklHRU5ESUFOICovCisjIGVuZGlmCisjZW5k
aWYKKworLyogRW5hYmxlIGxhcmdlIGlub2RlIG51bWJlcnMgb24gTWFjIE9TIFggMTAuNS4gICov
CisjaWZuZGVmIF9EQVJXSU5fVVNFXzY0X0JJVF9JTk9ERQorIyBkZWZpbmUgX0RBUldJTl9VU0Vf
NjRfQklUX0lOT0RFIDEKKyNlbmRpZgorCisvKiBOdW1iZXIgb2YgYml0cyBpbiBhIGZpbGUgb2Zm
c2V0LCBvbiBob3N0cyB3aGVyZSB0aGlzIGlzIHNldHRhYmxlLiAqLworLyogI3VuZGVmIFRTRl9f
RklMRV9PRkZTRVRfQklUUyAqLworCisvKiBEZWZpbmUgZm9yIGxhcmdlIGZpbGVzLCBvbiBBSVgt
c3R5bGUgaG9zdHMuICovCisvKiAjdW5kZWYgVFNGX19MQVJHRV9GSUxFUyAqLworCisvKiBEZWZp
bmUgdG8gZW1wdHkgaWYgYGNvbnN0JyBkb2VzIG5vdCBjb25mb3JtIHRvIEFOU0kgQy4gKi8KKy8q
ICN1bmRlZiBUU0ZfY29uc3QgKi8KKworLyogRGVmaW5lIHRvIGBfX2lubGluZV9fJyBvciBgX19p
bmxpbmUnIGlmIHRoYXQncyB3aGF0IHRoZSBDIGNvbXBpbGVyCisgICBjYWxscyBpdCwgb3IgdG8g
bm90aGluZyBpZiAnaW5saW5lJyBpcyBub3Qgc3VwcG9ydGVkIHVuZGVyIGFueSBuYW1lLiAgKi8K
KyNpZm5kZWYgX19jcGx1c3BsdXMKKy8qICN1bmRlZiBUU0ZfaW5saW5lICovCisjZW5kaWYKKwor
LyogRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3b3JkIGB2b2xhdGlsZScgZG9lcyBub3Qgd29y
ay4gV2FybmluZzogdmFsaWQKKyAgIGNvZGUgdXNpbmcgYHZvbGF0aWxlJyBjYW4gYmVjb21lIGlu
Y29ycmVjdCB3aXRob3V0LiBEaXNhYmxlIHdpdGggY2FyZS4gKi8KKy8qICN1bmRlZiBUU0Zfdm9s
YXRpbGUgKi8KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
Y29waWVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9jb3BpZXIuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX2NvcGllci5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6
bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJncGMuaCIK
KwordHNmX2NvcGllcl90ICp0c2ZfY29waWVyX2NyZWF0ZSh0c2ZfdHlwZV90ICpkZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICpzcmMpIHsKKyAgICB0c2Zf
Y29waWVyX3QgKnJlc3VsdDsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG89CisgICAgICAgIHRzZl9n
cGNfY29kZV9nZW5fZ2VuZXJhdGVfY29udmVydGVyKGRlc3Qsc3JjKTsKKyAgICAKKyAgICBpZiAo
cHJvdG89PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGdw
Y19jb2RlX2dlbl9kZWJ1ZygiY29udmVydGVyIixwcm90byk7CisgICAgCisgICAgcmVzdWx0PW1h
bGxvYyhzaXplb2YodHNmX2NvcGllcl90KSk7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9jb3BpZXJfdCIpOworICAg
ICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICByZXN1bHQtPmNvcGllciA9IGdwY19wcm9ncmFtX2Zyb21fcHJvdG8ocHJv
dG8pOworICAgIAorICAgIGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAKKyAgICBpZiAo
cmVzdWx0LT5jb3BpZXI9PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCB0
c2ZfY29waWVyX2Rlc3Ryb3kodHNmX2NvcGllcl90ICpjb3BpZXIpIHsKKyAgICBncGNfcHJvZ3Jh
bV9kZXN0cm95KGNvcGllci0+Y29waWVyKTsKKyAgICBmcmVlKGNvcGllcik7Cit9CisKK3ZvaWQg
KnRzZl9jb3BpZXJfY2xvbmUodHNmX2NvcGllcl90ICpjb3BpZXIsdm9pZCAqc3JjKSB7CisgICAg
Z3BjX2NlbGxfdCBhcmdzWzJdOworICAgIGFyZ3NbMF09KGdwY19jZWxsX3QpTlVMTDsKKyAgICBh
cmdzWzFdPShncGNfY2VsbF90KXNyYzsKKyAgICByZXR1cm4gKHZvaWQqKWdwY19wcm9ncmFtX3J1
bihjb3BpZXItPmNvcGllcixOVUxMLGFyZ3MpOworfQorCit2b2lkICp0c2ZfY29waWVyX2Nsb25l
X2luKHRzZl9jb3BpZXJfdCAqY29waWVyLHZvaWQgKnNyYyx2b2lkICpyZWdpb24pIHsKKyAgICBn
cGNfY2VsbF90IGFyZ3NbMl07CisgICAgYXJnc1swXT0oZ3BjX2NlbGxfdClOVUxMOworICAgIGFy
Z3NbMV09KGdwY19jZWxsX3Qpc3JjOworICAgIHJldHVybiAodm9pZCopZ3BjX3Byb2dyYW1fcnVu
KGNvcGllci0+Y29waWVyLHJlZ2lvbixhcmdzKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfY29waWVy
X2NvcHkodHNmX2NvcGllcl90ICpjb3BpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3JjLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgZ3BjX2NlbGxfdCBhcmdz
WzJdOworICAgIGFyZ3NbMF09KGdwY19jZWxsX3QpZGVzdDsKKyAgICBhcmdzWzFdPShncGNfY2Vs
bF90KXNyYzsKKyAgICByZXR1cm4gZ3BjX3Byb2dyYW1fcnVuKGNvcGllci0+Y29waWVyLHJlZ2lv
bixhcmdzKSE9MD8KKyAgICAgICAgICAgICAgIHRzZl90cnVlOnRzZl9mYWxzZTsKK30KKworCisK
KwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9kZWZpbmVf
aGVscGVycy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L3RzZi90c2ZfZGVmaW5lX2hlbHBlcnMuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2RlZmluZV9oZWxwZXJzLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRmlsaXAgUGl6
bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZGVm
aW5lX2hlbHBlcnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor
CitzdGF0aWMgdm9pZCBhb2VfZmFpbHVyZSh2b2lkKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJF
cnJvciBkZWZpbmluZyBUU0YgdHlwZXM6ICVzXG4iLCB0c2ZfZ2V0X2Vycm9yKCkpOworICAgIGFi
b3J0KCk7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2NyZWF0ZV9hb2UodHNmX3R5cGVfa2lu
ZF90IGtpbmRfY29kZSkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0
ZShraW5kX2NvZGUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBhb2VfZmFp
bHVyZSgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2Zf
dHlwZV9jcmVhdGVfYXJyYXlfYW9lKHRzZl90eXBlX3QgKmVsZV90eXBlKSB7CisgICAgdHNmX3R5
cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FycmF5KGVsZV90eXBlKTsKKyAgICBpZiAo
cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgYW9lX2ZhaWx1cmUoKTsKKyAgICB9CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRo
X25hdGl2ZV9zaXplX2FvZShzaXplX3Qgc2l6ZSkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9
IHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfU1RSVUNUKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwp
IHsKKyAgICAgICAgYW9lX2ZhaWx1cmUoKTsKKyAgICB9CisgICAgaWYgKCF0c2ZfbmF0aXZlX3N0
cnVjdF90eXBlX3NldF9zaXplKCZyZXN1bHQsIHNpemUpKSB7CisgICAgICAgIGFvZV9mYWlsdXJl
KCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBl
X2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZV90
IHNpemUsIHZvaWQgKCpkZXN0KSh2b2lkKikpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0
c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW9lKHNpemUpOworICAgIGlm
ICghdHNmX25hdGl2ZV9zdHJ1Y3RfdHlwZV9zZXRfZGVzdHJ1Y3RvcigmcmVzdWx0LCBkZXN0KSkg
eworICAgICAgICBhb2VfZmFpbHVyZSgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9jcmVhdGVfY2hvaWNlX3dpdGhfbmF0aXZlX21hcF9hb2Uo
CisgICAgdHNmX3R5cGVfdCAqKnR5cGUsIHRzZl9ib29sX3QgaW5fcGxhY2UsIHNpemVfdCB2YWx1
ZV9vZmZzZXQsIHNpemVfdCBkYXRhX29mZnNldCwgc2l6ZV90IHNpemUpIHsKKyAgICB0c2ZfdHlw
ZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX0NIT0lDRSk7CisgICAgaWYgKHJl
c3VsdCA9PSBOVUxMKSB7CisgICAgICAgIGFvZV9mYWlsdXJlKCk7CisgICAgfQorICAgIGlmICgh
dHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9tYXAoJnJlc3VsdCwgaW5fcGxhY2UsIHZhbHVlX29mZnNl
dCwgZGF0YV9vZmZzZXQsIHNpemUpKSB7CisgICAgICAgIGFvZV9mYWlsdXJlKCk7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgdHNmX3R5cGVfc2V0X2NvbW1lbnRfYW9lKHRz
Zl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpjb21tZW50KSB7CisgICAgaWYgKCF0c2ZfdHlw
ZV9zZXRfY29tbWVudCh0eXBlLCBjb21tZW50KSkgeworICAgICAgICBhb2VfZmFpbHVyZSgpOwor
ICAgIH0KK30KKwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3dpdGhfbmF0aXZlX21hcF9h
b2UoCisgICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3Qg
KmVsZV90eXBlLCBzaXplX3Qgb2Zmc2V0KSB7CisgICAgaWYgKCF0c2Zfc3RydWN0X3R5cGVfYXBw
ZW5kKHR5cGUsIG5hbWUsIGVsZV90eXBlKSB8fAorICAgICAgICAhdHNmX25hdGl2ZV9zdHJ1Y3Rf
dHlwZV9tYXAodHlwZSwgbmFtZSwgb2Zmc2V0KSkgeworICAgICAgICBhb2VfZmFpbHVyZSgpOwor
ICAgIH0KK30KKwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25h
dGl2ZV9tYXBfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB0
c2ZfdHlwZV9raW5kX3QgdHlwZV9raW5kLCBzaXplX3Qgb2Zmc2V0KSB7CisgICAgdHNmX3N0cnVj
dF90eXBlX2FwcGVuZF93aXRoX25hdGl2ZV9tYXBfYW9lKAorICAgICAgICB0eXBlLCBuYW1lLCB0
c2ZfdHlwZV9jcmVhdGVfYW9lKHR5cGVfa2luZCksIG9mZnNldCk7Cit9CisKK3ZvaWQgdHNmX3N0
cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2Fv
ZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfdCAq
KCpjYWxsYmFjaykodm9pZCksIHNpemVfdCBvZmZzZXQpIHsKKyAgICB0c2Zfc3RydWN0X3R5cGVf
YXBwZW5kX3dpdGhfbmF0aXZlX21hcF9hb2UoCisgICAgICAgIHR5cGUsIG5hbWUsIHRzZl90eXBl
X2R1cChjYWxsYmFjaygpKSwgb2Zmc2V0KTsKK30KKwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBw
ZW5kX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAorICAgIHRzZl90eXBlX3QgKip0
eXBlLCBjb25zdCBjaGFyICpuYW1lLCB0c2ZfdHlwZV90ICplbGVfdHlwZSwgc2l6ZV90IG9mZnNl
dCwKKyAgICBjb25zdCBjaGFyICpjb21tZW50KSB7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVu
ZF93aXRoX25hdGl2ZV9tYXBfYW9lKHR5cGUsIG5hbWUsIGVsZV90eXBlLCBvZmZzZXQpOworICAg
IGlmICghdHNmX3N0cnVjdF90eXBlX3NldF9jb21tZW50KHR5cGUsIG5hbWUsIGNvbW1lbnQpKSB7
CisgICAgICAgIGFvZV9mYWlsdXJlKCk7CisgICAgfQorfQorCit2b2lkIHRzZl9zdHJ1Y3RfdHlw
ZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAorICAg
IHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lLCB0c2ZfdHlwZV9raW5kX3QgdHlw
ZV9raW5kLCBzaXplX3Qgb2Zmc2V0LAorICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0
c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAor
ICAgICAgICB0eXBlLCBuYW1lLCB0c2ZfdHlwZV9jcmVhdGVfYW9lKHR5cGVfa2luZCksIG9mZnNl
dCwgY29tbWVudCk7Cit9CisKK3ZvaWQgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxi
YWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX3dpdGhfY29tbWVudF9hb2UoCisgICAgdHNmX3R5
cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKigqY2FsbGJhY2spKHZv
aWQpLCBzaXplX3Qgb2Zmc2V0LAorICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0c2Zf
c3RydWN0X3R5cGVfYXBwZW5kX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKAorICAg
ICAgICB0eXBlLCBuYW1lLCB0c2ZfdHlwZV9kdXAoY2FsbGJhY2soKSksIG9mZnNldCwgY29tbWVu
dCk7Cit9CisKK3ZvaWQgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9hb2UodHNmX3R5cGVfdCAqKnR5
cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKmVsZV90eXBlKSB7CisgICAgaWYgKCF0
c2ZfY2hvaWNlX3R5cGVfYXBwZW5kKHR5cGUsIG5hbWUsIGVsZV90eXBlKSkgeworICAgICAgICBh
b2VfZmFpbHVyZSgpOworICAgIH0KK30KKwordm9pZCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX3By
aW1pdGl2ZV9hb2UoCisgICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRz
Zl90eXBlX2tpbmRfdCB0eXBlX2tpbmQpIHsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Fv
ZSh0eXBlLCBuYW1lLCB0c2ZfdHlwZV9jcmVhdGVfYW9lKHR5cGVfa2luZCkpOworfQorCit2b2lk
IHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgKKyAgICB0
c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfdCAqKCpjYWxsYmFj
aykodm9pZCkpIHsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2FvZSh0eXBlLCBuYW1lLCB0
c2ZfdHlwZV9kdXAoY2FsbGJhY2soKSkpOworfQorCit2b2lkIHRzZl9jaG9pY2VfdHlwZV9hcHBl
bmRfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAq
bmFtZSwgdHNmX3R5cGVfdCAqZWxlX3R5cGUsIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0
c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2FvZSh0eXBlLCBuYW1lLCBlbGVfdHlwZSk7CisgICAgaWYg
KCF0c2ZfY2hvaWNlX3R5cGVfc2V0X2NvbW1lbnQodHlwZSwgbmFtZSwgY29tbWVudCkpIHsKKyAg
ICAgICAgYW9lX2ZhaWx1cmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgdHNmX2Nob2ljZV90eXBlX2Fw
cGVuZF9wcmltaXRpdmVfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwg
Y29uc3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCwgY29uc3QgY2hhciAq
Y29tbWVudCkgeworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfd2l0aF9jb21tZW50X2FvZSgK
KyAgICAgICAgdHlwZSwgbmFtZSwgdHNmX3R5cGVfY3JlYXRlX2FvZSh0eXBlX2tpbmQpLCBjb21t
ZW50KTsKK30KKwordm9pZCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5k
X2R1cF93aXRoX2NvbW1lbnRfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFy
ICpuYW1lLCB0c2ZfdHlwZV90ICooKmNhbGxiYWNrKSh2b2lkKSwgY29uc3QgY2hhciAqY29tbWVu
dCkgeworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfd2l0aF9jb21tZW50X2FvZSgKKyAgICAg
ICAgdHlwZSwgbmFtZSwgdHNmX3R5cGVfZHVwKGNhbGxiYWNrKCkpLCBjb21tZW50KTsKK30KKwor
dm9pZCB0c2Zfc3RydWN0X3R5cGVfc2V0X29wdGlvbmFsX2FvZSh0c2ZfdHlwZV90ICoqdHlwZSwg
Y29uc3QgY2hhciAqbmFtZSwgdHNmX2Jvb2xfdCBvcHRpb25hbCkgeworICAgIGlmICghdHNmX3N0
cnVjdF90eXBlX3NldF9vcHRpb25hbCh0eXBlLCBuYW1lLCBvcHRpb25hbCkpIHsKKyAgICAgICAg
YW9lX2ZhaWx1cmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgdHNmX3R5cGVfc2V0X25hbWVfYW9lKHRz
Zl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7CisgICAgaWYgKCF0c2ZfdHlwZV9z
ZXRfbmFtZSh0eXBlLCBuYW1lKSkgeworICAgICAgICBhb2VfZmFpbHVyZSgpOworICAgIH0KK30K
Kwordm9pZCB0c2ZfdHlwZV9zZXRfdmVyc2lvbl9hb2UodHNmX3R5cGVfdCAqKnR5cGUsIHVpbnQz
Ml90IG1ham9yLCB1aW50MzJfdCBtaW5vciwgdWludDMyX3QgcGF0Y2gpIHsKKyAgICBpZiAoIXRz
Zl90eXBlX3NldF92ZXJzaW9uKHR5cGUsIG1ham9yLCBtaW5vciwgcGF0Y2gpKSB7CisgICAgICAg
IGFvZV9mYWlsdXJlKCk7CisgICAgfQorfQorCit0c2ZfYm9vbF90IHRzZl90eXBlZF9kYXRhX3dy
aXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZ2VucnRyX3QgKmdlbmVyYXRv
ciwgdm9pZCAqZGF0YSkgeworICAgIHRzZl9idWZmZXJfdCBidWY7CisgICAgY2hhciBpbmxpbmVC
dWZmZXJbMjU2XTsKKyAgICB0c2ZfYm9vbF90IHJlc3VsdDsKKyAgICAKKyAgICB0c2ZfYnVmZmVy
X2luaXRpYWxpemVfY3VzdG9tKCZidWYsIGlubGluZUJ1ZmZlciwgc2l6ZW9mKGlubGluZUJ1ZmZl
cikpOworICAgIAorICAgIGlmICghdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9leGlzdGluZ19idWZm
ZXIoZ2VuZXJhdG9yLCBkYXRhLCAmYnVmKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICByZXN1bHQgPSB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3dyaXRlKG91
dCwgJmJ1Zik7CisgICAgdHNmX2J1ZmZlcl9kZXN0cm95X2N1c3RvbSgmYnVmKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit2b2lkICp0c2ZfdHlwZWRfZGF0YV9yZWFkKHRzZl9zdHJlYW1fZmls
ZV9pbnB1dF90ICppbiwgdHNmX3BhcnNlcl90ICpwYXJzZXIpIHsKKyAgICB0c2ZfYnVmZmVyX3Qg
YnVmOworICAgIGNoYXIgaW5saW5lQnVmZmVyWzI1Nl07CisgICAgdm9pZCogcmVzdWx0OworICAg
IAorICAgIHRzZl9idWZmZXJfaW5pdGlhbGl6ZV9jdXN0b20oJmJ1ZiwgaW5saW5lQnVmZmVyLCBz
aXplb2YoaW5saW5lQnVmZmVyKSk7CisgICAgCisgICAgaWYgKCF0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfcmVhZF9leGlzdGluZ19idWZmZXIoaW4sICZidWYpKSB7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICAKKyAgICByZXN1bHQgPSB0c2ZfcGFyc2VyX3BhcnNlKHBhcnNlciwgJmJ1
Zik7CisgICAgdHNmX2J1ZmZlcl9kZXN0cm95X2N1c3RvbSgmYnVmKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byh0c2Zfc3RyZWFt
X2ZpbGVfaW5wdXRfdCAqaW4sIHRzZl9wYXJzZXJfdCAqcGFyc2VyLCB2b2lkICpyZXN1bHQpIHsK
KyAgICB0c2ZfYnVmZmVyX3QgYnVmOworICAgIGNoYXIgaW5saW5lQnVmZmVyWzI1Nl07CisgICAg
dHNmX2Jvb2xfdCBzdWNjZXNzOworICAgIAorICAgIHRzZl9idWZmZXJfaW5pdGlhbGl6ZV9jdXN0
b20oJmJ1ZiwgaW5saW5lQnVmZmVyLCBzaXplb2YoaW5saW5lQnVmZmVyKSk7CisgICAgCisgICAg
aWYgKCF0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfcmVhZF9leGlzdGluZ19idWZmZXIoaW4sICZidWYp
KSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHN1Y2Nlc3Mg
PSB0c2ZfcGFyc2VyX3BhcnNlX2ludG8ocGFyc2VyLCAmYnVmLCByZXN1bHQsIE5VTEwpOworICAg
IHRzZl9idWZmZXJfZGVzdHJveV9jdXN0b20oJmJ1Zik7CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9
CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZGVmaW5l
X2hlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX2RlZmluZV9oZWxwZXJzLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9kZWZpbmVfaGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRmlsaXAgUGl6
bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgRlBfVFNGX0RFRklORV9IRUxQRVJTX0gKKyNkZWZpbmUgRlBf
VFNGX0RFRklORV9IRUxQRVJTX0gKKworI2luY2x1ZGUgInRzZi5oIgorCisvKiBUaGlzIGhlYWRl
ciBpcyBtZWFudCB0byBvbmx5IGJlIGRlZmluZWQgYnkgLmMgZmlsZXMgZ2VuZXJhdGVkIGJ5Cisg
ICB0c2ZfZGVmaW5lLiAqLworCisvKiBGSVhNRTogYWRkIHRzZl9kZWZpbmUgaGVscGVycyBmb3Ig
ZGVhbGluZyB3aXRoIHByaW1pdGl2ZSBnZW5lcmF0b3JzLAorICAgcGFyc2VycywgYW5kIGNvcGll
cnMsIGFzIHdlbGwgYXMgY2FjaGluZyBhcnJheS1vZi1wcmltaXRpdmUgdHlwZXMuICovCisKKy8q
ICJBYm9ydCBPbiBFcnJvciIgKGFvZSkgaGVscGVycy4gSWYgYW55IGVycm9yIG9jY3VycywgdGhl
eSB3aWxsIHByaW50CisgICB0aGUgZXJyb3IgdG8gc3RkZXJyIGFuZCB0aGVuIGFib3J0LiBUaGUg
ZXJyb3Igd2lsbCBpbmRpY2F0ZSB0aGF0IGl0CisgICB3YXMgZHVyaW5nIHRzZl9kZWZpbmUgdHlw
ZSBidWlsZGluZy4gKi8KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX2FvZSh0c2ZfdHlw
ZV9raW5kX3Qga2luZF9jb2RlKTsKK3RzZl90eXBlX3QgKnRzZl90eXBlX2NyZWF0ZV9hcnJheV9h
b2UodHNmX3R5cGVfdCAqZWxlX3R5cGUpOwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX3N0
cnVjdF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplX3Qgc2l6ZSk7Cit0c2ZfdHlwZV90ICp0c2Zf
dHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNp
emVfdCBzaXplLCB2b2lkICgqZGVzdCkodm9pZCopKTsKK3RzZl90eXBlX3QgKnRzZl90eXBlX2Ny
ZWF0ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwg
dHNmX2Jvb2xfdCBpbl9wbGFjZSwgc2l6ZV90IHZhbHVlX29mZnNldCwgc2l6ZV90IGRhdGFfb2Zm
c2V0LCBzaXplX3Qgc2l6ZSk7Cit2b2lkIHRzZl90eXBlX3NldF9jb21tZW50X2FvZSh0c2ZfdHlw
ZV90ICoqdHlwZSwgY29uc3QgY2hhciAqY29tbWVudCk7CisKK3ZvaWQgdHNmX3N0cnVjdF90eXBl
X2FwcGVuZF93aXRoX25hdGl2ZV9tYXBfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBlLCBjb25z
dCBjaGFyICpuYW1lLCB0c2ZfdHlwZV90ICplbGVfdHlwZSwgc2l6ZV90IG9mZnNldCk7Cit2b2lk
IHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF9hb2UoCisg
ICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX2tpbmRfdCBw
cmltaXRpdmVfdHlwZSwgc2l6ZV90IG9mZnNldCk7Cit2b2lkIHRzZl9zdHJ1Y3RfdHlwZV9hcHBl
bmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoCisgICAgdHNmX3R5
cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKigqY2FsbGJhY2spKHZv
aWQpLCBzaXplX3Qgb2Zmc2V0KTsKK3ZvaWQgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF93aXRoX25h
dGl2ZV9tYXBfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3Qg
Y2hhciAqbmFtZSwgdHNmX3R5cGVfdCAqZWxlX3R5cGUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IGNo
YXIgKmNvbW1lbnQpOwordm9pZCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRo
X25hdGl2ZV9tYXBfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29u
c3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCwgc2l6ZV90IG9mZnNldCwK
KyAgICBjb25zdCBjaGFyICpjb21tZW50KTsKK3ZvaWQgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9m
cm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX3dpdGhfY29tbWVudF9hb2UoCisg
ICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKigqY2Fs
bGJhY2spKHZvaWQpLCBzaXplX3Qgb2Zmc2V0LAorICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpOwor
Cit2b2lkIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfYW9lKAorICAgIHRzZl90eXBlX3QgKip0eXBl
LCBjb25zdCBjaGFyICpuYW1lLCB0c2ZfdHlwZV90ICplbGVfdHlwZSk7Cit2b2lkIHRzZl9jaG9p
Y2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29u
c3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCk7Cit2b2lkIHRzZl9jaG9p
Y2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgKKyAgICB0c2ZfdHlwZV90
ICoqdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgdHNmX3R5cGVfdCAqKCpjYWxsYmFjaykodm9pZCkp
Owordm9pZCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX3dpdGhfY29tbWVudF9hb2UoCisgICAgdHNm
X3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90eXBlX3QgKmVsZV90eXBlLCBj
b25zdCBjaGFyICpjb21tZW50KTsKK3ZvaWQgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRp
dmVfd2l0aF9jb21tZW50X2FvZSgKKyAgICB0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3QgY2hhciAq
bmFtZSwgdHNmX3R5cGVfa2luZF90IHR5cGVfa2luZCwgY29uc3QgY2hhciAqY29tbWVudCk7Cit2
b2lkIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfY29t
bWVudF9hb2UoCisgICAgdHNmX3R5cGVfdCAqKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRzZl90
eXBlX3QgKigqY2FsbGJhY2spKHZvaWQpLCBjb25zdCBjaGFyICpjb21tZW50KTsKKwordm9pZCB0
c2Zfc3RydWN0X3R5cGVfc2V0X29wdGlvbmFsX2FvZSh0c2ZfdHlwZV90ICoqdHlwZSwgY29uc3Qg
Y2hhciAqbmFtZSwgdHNmX2Jvb2xfdCBvcHRpb25hbCk7CisKK3ZvaWQgdHNmX3R5cGVfc2V0X25h
bWVfYW9lKHRzZl90eXBlX3QgKip0eXBlLCBjb25zdCBjaGFyICpuYW1lKTsKK3ZvaWQgdHNmX3R5
cGVfc2V0X3ZlcnNpb25fYW9lKHRzZl90eXBlX3QgKip0eXBlLCB1aW50MzJfdCBtYWpvciwgdWlu
dDMyX3QgbWlub3IsIHVpbnQzMl90IHBhdGNoKTsKKworLyogSGVscGVycyBmb3IgcmVhZGluZyBh
bmQgd3JpdGluZy4gKi8KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZWRfZGF0YV93cml0ZSh0c2Zfc3Ry
ZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgdHNmX2dlbnJ0cl90ICpnZW5lcmF0b3IsIHZvaWQgKmRh
dGEpOwordm9pZCAqdHNmX3R5cGVkX2RhdGFfcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAq
aW4sIHRzZl9wYXJzZXJfdCAqcGFyc2VyKTsKK3RzZl9ib29sX3QgdHNmX3R5cGVkX2RhdGFfcmVh
ZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwgdHNmX3BhcnNlcl90ICpwYXJzZXIs
IHZvaWQgKnJlc3VsdCk7CisKKyNlbmRpZiAvLyBGUF9UU0ZfREVGSU5FX0hFTFBFUlNfSAorCklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2Rlc3RydWN0b3Iu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X2Rlc3RydWN0b3IuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvdHNmX2Rlc3RydWN0b3IuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAg
UElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAiZ3BjLmgiCisKK3RzZl9kZXN0cnVjdG9y
X3QgKnRzZl9kZXN0cnVjdG9yX2NyZWF0ZSh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgdHNmX2Rl
c3RydWN0b3JfdCAqcmVzdWx0OworICAgIGdwY19wcm90b190ICpwcm90bzsKKyAgICAKKyAgICBw
cm90byA9IHRzZl9ncGNfY29kZV9nZW5fZ2VuZXJhdGVfZGVzdHJveWVyKHR5cGUpOworICAgIGlm
IChwcm90byA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAg
ICBncGNfY29kZV9nZW5fZGVidWcoImRlc3Ryb3llciIscHJvdG8pOworICAgIAorICAgIHJlc3Vs
dCA9IG1hbGxvYyhzaXplb2YodHNmX2Rlc3RydWN0b3JfdCkpOworICAgIGlmIChyZXN1bHQgPT0g
TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9kZXN0
cnVjdG9yX3QiKTsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5kZXN0cnVjdG9yID0gZ3BjX3By
b2dyYW1fZnJvbV9wcm90byhwcm90byk7CisgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOwor
ICAgIAorICAgIGlmIChyZXN1bHQtPmRlc3RydWN0b3IgPT0gTlVMTCkgeworICAgICAgICBmcmVl
KHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkIHRzZl9kZXN0cnVjdG9yX2Rlc3Ryb3kodHNmX2Rlc3RydWN0b3Jf
dCAqZGVzdHJ1Y3RvcikgeworICAgIGdwY19wcm9ncmFtX2Rlc3Ryb3koZGVzdHJ1Y3Rvci0+ZGVz
dHJ1Y3Rvcik7CisgICAgZnJlZShkZXN0cnVjdG9yKTsKK30KKwordm9pZCB0c2ZfZGVzdHJ1Y3Rv
cl9kZXN0cnVjdCh0c2ZfZGVzdHJ1Y3Rvcl90ICpkZXN0cnVjdG9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpvYmplY3QpIHsKKyAgICBncGNfY2VsbF90IGFyZ3NbMV07Cisg
ICAgYXJnc1swXSA9IChncGNfY2VsbF90KW9iamVjdDsKKyAgICBncGNfcHJvZ3JhbV9ydW4oZGVz
dHJ1Y3Rvci0+ZGVzdHJ1Y3RvciwgTlVMTCwgYXJncyk7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZXJyb3IuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2Vycm9yLmMJKG5vbmV4aXN0ZW50
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9lcnJvci5jCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDE0IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2lu
dGVybmFsLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNp
bmNsdWRlIDxlcnJuby5oPgorCisjaWZkZWYgSEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVh
ZC5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5k
aWYKKworI2lmZGVmIEhBVkVfQlpJUDIKKyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKK3N0
YXRpYyBjb25zdCBjaGFyICplbm9tZW1fbXNnID0gIlN5c3RlbSBlcnJvcjogQ2Fubm90IGFsbG9j
YXRlIG1lbW9yeSI7CisKK3N0YXRpYyBjb25zdCBjaGFyICplcnJvcl9hcnJheVtdID0geworICAg
ICJTeXN0ZW0gZXJyb3IiLAorICAgICJaTGliIGVycm9yIiwKKyAgICAibGliYnppcDIgZXJyb3Ii
LAorICAgICJJbnZhbGlkIGFyZ3VtZW50IiwKKyAgICAiQmFkIHN0YXRlIiwKKyAgICAiU3RyaW5n
IHRvbyBsb25nIiwKKyAgICAiUGFyc2UgZXJyb3IiLAorICAgICJQYXJzZWQgYW4gdW5leHBlY3Rl
ZCB0eXBlIiwKKyAgICAiRWxlbWVudCBpbiBjb250YWluZXIgaXMgTlVMTCIsCisgICAgIk5hbWUg
YWxyZWFkeSB1c2VkIiwKKyAgICAiRW5kIG9mIGZpbGUiLAorICAgICJVbmV4cGVjdGVkIGVuZCBv
ZiBmaWxlIiwKKyAgICAiRXJyb25lb3VzIGVuZCBvZiBmaWxlIiwKKyAgICAiRW5kIG9mIGZpbGUg
bm90IHJlYWNoZWQiLAorICAgICJQYXJhbWV0ZXIgaGFzIGJhZCB0eXBlIiwKKyAgICAiUGFyYW1l
dGVyIGhhcyBiYWQgdHlwZSBraW5kIiwKKyAgICAiRWxlbWVudCBub3QgZm91bmQiLAorICAgICJU
eXBlIGxhY2tzIHN0cnVjdCBtYXBwaW5nIiwKKyAgICAiVGhlIHByb3ZpZGVkIHN0cnVjdHVyZSBt
YXBwaW5nIGlzIGludmFsaWQiLAorICAgICJUeXBlIG1pc21hdGNoIiwKKyAgICAiQmFkIGNob2lj
ZSB2YWx1ZSIsCisgICAgIkNvbXBhcmlzb24gZmFpbGVkIiwKKyAgICAiQyBjb21waWxlIGVycm9y
IiwKKyAgICAiQ2hpbGQgcHJvY2VzcyBkaWVkIGJlY2F1c2UgaXQgcmVjZWl2ZWQgYSBzaWduYWwi
LAorICAgICJEeW5hbWljIGxvYWRpbmcgZXJyb3IiLAorICAgICJKdW1wIHRvIGJhZCBsYWJlbCBp
biBHUEMgcHJvdG90eXBlIiwKKyAgICAiVmlvbGF0aW9uIG9mIEdQQyBzZW1hbnRpY3MiLAorICAg
ICJDb21wYXJlLWFuZC1zd2FwIGZhaWxlZCIsCisgICAgIkhvc3RuYW1lIGxvb2t1cCBmYWlsdXJl
IiwKKyAgICAiT3BlcmF0aW9uIG5vdCBhbGxvd2VkIiwKKyAgICAiT3BlcmF0aW9uIG5vdCBpbXBs
ZW1lbnRlZCIsCisgICAgIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIiwKKyAgICAiRXh0ZXJuYWwg
ZXJyb3IiLAorICAgICJJbnRlcm5hbCBlcnJvciIKK307CisKK2NvbnN0IGNoYXIgKnRzZl9nZXRf
bWVzc2FnZV9mb3JfZXJyb3JfY29kZSh0c2ZfZXJyb3JfdCBjb2RlKSB7CisgICAgcmV0dXJuIGVy
cm9yX2FycmF5W2NvZGVdOworfQorCitzdGF0aWMgdm9pZCB0c2Zfc2V0X2Vycm9yX2ltcGwodHNm
X2Vycm9yX3QgKmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
ICplcnJvcl9lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmVycm9y
X2RlYWRseV9zaWduYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplcnJv
cl96bGliX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
KmVycm9yX3psaWJfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipl
cnJvcl9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Vycm9yX3QgY29k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3lzX2Vycm5vLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB6bGliX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqemxpYl9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhX2xpc3QgbHN0KSB7CisgICAgY2hhciAqc3RyOworCisgICAgaWYgKCplcnJvcl9zdHIhPU5V
TEwgJiYgKmVycm9yX3N0ciE9ZW5vbWVtX21zZykgeworICAgICAgICBmcmVlKCplcnJvcl9zdHIp
OworICAgIH0KKyAgICAKKyAgICAqZXJyb3JfY29kZT1jb2RlOworICAgICplcnJvcl9lcnJubz1z
eXNfZXJybm87CisgICAgKmVycm9yX2RlYWRseV9zaWduYWw9ZGVhZGx5X3NpZ25hbDsKKyAgICAq
ZXJyb3JfemxpYl9jb2RlPXpsaWJfY29kZTsKKyAgICAqZXJyb3JfemxpYl9tc2c9emxpYl9tc2c7
CisgICAgCisgICAgaWYgKGZvcm1hdD09TlVMTCkgeworICAgICAgICAqZXJyb3Jfc3RyPXN0cmR1
cChlcnJvcl9hcnJheVtjb2RlXSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RyPXRzZl92YXNw
cmludGYoZm9ybWF0LCBsc3QpOworICAgICAgICBpZiAoc3RyPT1OVUxMKSB7CisgICAgICAgICAg
ICAqZXJyb3Jfc3RyPU5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqZXJyb3Jf
c3RyPXRzZl9hc3ByaW50ZigiJXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yX2FycmF5W2NvZGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyKTsKKyAgICAgICAgICAgIGZyZWUoc3RyKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBpZiAoKmVycm9yX3N0cj09TlVMTCkgeworICAgICAgICAqZXJyb3Jfc3RyPShjaGFy
Killbm9tZW1fbXNnOworICAgICAgICAqZXJyb3JfY29kZT1UU0ZfRV9FUlJOTzsKKyAgICAgICAg
KmVycm9yX2Vycm5vPWVycm5vOworICAgIH0KK30KKworI2lmZGVmIEhBVkVfUFRIUkVBRAorCitz
dHJ1Y3QgdHNmX2Vycm9yX3N0cnVjdCB7CisgICAgdHNmX2Vycm9yX3QgZXJyb3JfY29kZTsKKyAg
ICBpbnQgc3lzX2Vycm5vOworICAgIGludCBkZWFkbHlfc2lnbmFsOworICAgIGludCB6bGliX2Nv
ZGU7CisgICAgY29uc3QgY2hhciAqemxpYl9tc2c7CisgICAgY2hhciAqZXJyb3Jfc3RyOworfTsK
Kworc3RhdGljIHB0aHJlYWRfb25jZV90IG9uY2VfY29udHJvbCA9IFBUSFJFQURfT05DRV9JTklU
Oworc3RhdGljIHB0aHJlYWRfa2V5X3QgZXJyb3I7CisKK3N0YXRpYyB2b2lkIGVycm9yX2Rlc3Ry
b3kodm9pZCAqYXJnKSB7CisgICAgaWYgKGFyZyE9TlVMTCkgeworICAgICAgICBzdHJ1Y3QgdHNm
X2Vycm9yX3N0cnVjdCAqZXM9YXJnOworICAgICAgICBpZiAoZXMtPmVycm9yX3N0ciE9TlVMTCkg
eworICAgICAgICAgICAgZnJlZShlcy0+ZXJyb3Jfc3RyKTsKKyAgICAgICAgfQorICAgICAgICBm
cmVlKGVzKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGluaXQoKSB7CisgICAgcHRocmVhZF9r
ZXlfY3JlYXRlKCZlcnJvcixlcnJvcl9kZXN0cm95KTsKK30KKwordm9pZCB0c2Zfc2V0X2Vycm9y
X2Z1bGx2KHRzZl9lcnJvcl90IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN5
c19lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVhZGx5X3NpZ25hbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgemxpYl9lcnJvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICp6bGliX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBsc3Qp
IHsKKyAgICBzdHJ1Y3QgdHNmX2Vycm9yX3N0cnVjdCAqZXM7CisgICAgcHRocmVhZF9vbmNlKCZv
bmNlX2NvbnRyb2wsaW5pdCk7CisgICAgCisgICAgZXM9cHRocmVhZF9nZXRzcGVjaWZpYyhlcnJv
cik7CisgICAgaWYgKGVzPT1OVUxMKSB7CisgICAgICAgIGVzPW1hbGxvYyhzaXplb2Yoc3RydWN0
IHRzZl9lcnJvcl9zdHJ1Y3QpKTsKKyAgICAgICAgaWYgKGVzPT1OVUxMKSB7CisgICAgICAgICAg
ICAvKiB3ZSdyZSBkZWFkISAqLworICAgICAgICAgICAgdHNmX2Fib3J0KCJDb3VsZCBub3QgYWxs
b2NhdGUgZXJyb3Igc3RydWN0IGluICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3NldF9l
cnJvclxuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVzLT5lcnJvcl9jb2RlPTA7
CisgICAgICAgIGVzLT5zeXNfZXJybm89MDsKKyAgICAgICAgZXMtPmRlYWRseV9zaWduYWw9MDsK
KyAgICAgICAgZXMtPnpsaWJfY29kZT0wOworICAgICAgICBlcy0+emxpYl9tc2c9TlVMTDsKKyAg
ICAgICAgZXMtPmVycm9yX3N0cj1OVUxMOworICAgICAgICAKKyAgICAgICAgcHRocmVhZF9zZXRz
cGVjaWZpYyhlcnJvcixlcyk7CisgICAgfQorICAgIAorICAgIHRzZl9zZXRfZXJyb3JfaW1wbCgm
ZXMtPmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICZlcy0+c3lzX2Vycm5vLAor
ICAgICAgICAgICAgICAgICAgICAgICAmZXMtPmRlYWRseV9zaWduYWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICZlcy0+emxpYl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAmZXMtPnps
aWJfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAmZXMtPmVycm9yX3N0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3lzX2Vycm5vLAor
ICAgICAgICAgICAgICAgICAgICAgICBkZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAgICAg
ICAgICB6bGliX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICB6bGliX21zZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBsc3QpOwor
fQorCit0c2ZfZXJyb3JfdCB0c2ZfZ2V0X2Vycm9yX2NvZGUoKSB7CisgICAgcmV0dXJuICgoc3Ry
dWN0IHRzZl9lcnJvcl9zdHJ1Y3QqKXB0aHJlYWRfZ2V0c3BlY2lmaWMoZXJyb3IpKS0+ZXJyb3Jf
Y29kZTsKK30KKworaW50IHRzZl9nZXRfc3lzdGVtX2Vycm5vKCkgeworICAgIHJldHVybiAoKHN0
cnVjdCB0c2ZfZXJyb3Jfc3RydWN0KilwdGhyZWFkX2dldHNwZWNpZmljKGVycm9yKSktPnN5c19l
cnJubzsKK30KKworaW50IHRzZl9nZXRfZGVhZGx5X3NpZ25hbCgpIHsKKyAgICByZXR1cm4gKChz
dHJ1Y3QgdHNmX2Vycm9yX3N0cnVjdCopcHRocmVhZF9nZXRzcGVjaWZpYyhlcnJvcikpLT5kZWFk
bHlfc2lnbmFsOworfQorCitpbnQgdHNmX2dldF96bGliX2Vycm9yX2NvZGUoKSB7CisgICAgcmV0
dXJuICgoc3RydWN0IHRzZl9lcnJvcl9zdHJ1Y3QqKXB0aHJlYWRfZ2V0c3BlY2lmaWMoZXJyb3Ip
KS0+emxpYl9jb2RlOworfQorCitjb25zdCBjaGFyICp0c2ZfZ2V0X3psaWJfZXJyb3JfbXNnKCkg
eworICAgIHJldHVybiAoKHN0cnVjdCB0c2ZfZXJyb3Jfc3RydWN0KilwdGhyZWFkX2dldHNwZWNp
ZmljKGVycm9yKSktPnpsaWJfbXNnOworfQorCitpbnQgdHNmX2dldF9saWJiemlwMl9lcnJvcl9j
b2RlKCkgeworICAgIHJldHVybiAoKHN0cnVjdCB0c2ZfZXJyb3Jfc3RydWN0KilwdGhyZWFkX2dl
dHNwZWNpZmljKGVycm9yKSktPnpsaWJfY29kZTsKK30KKworY29uc3QgY2hhciAqdHNmX2dldF9s
aWJiemlwMl9lcnJvcl9tc2coKSB7CisgICAgcmV0dXJuICgoc3RydWN0IHRzZl9lcnJvcl9zdHJ1
Y3QqKXB0aHJlYWRfZ2V0c3BlY2lmaWMoZXJyb3IpKS0+emxpYl9tc2c7Cit9CisKK2NvbnN0IGNo
YXIgKnRzZl9nZXRfZXJyb3Iodm9pZCkgeworICAgIHJldHVybiAoKHN0cnVjdCB0c2ZfZXJyb3Jf
c3RydWN0KilwdGhyZWFkX2dldHNwZWNpZmljKGVycm9yKSktPmVycm9yX3N0cjsKK30KKworI2Vs
c2UKKworc3RhdGljIHRzZl9lcnJvcl90IGVycm9yX2NvZGU9VFNGX0VfTEFTVDsKK3N0YXRpYyBp
bnQgc3lzX2Vycm5vPTA7CitzdGF0aWMgaW50IGRlYWRseV9zaWduYWw9MDsKK3N0YXRpYyBpbnQg
emxpYl9jb2RlPTA7CitzdGF0aWMgY29uc3QgY2hhciAqemxpYl9tc2c9TlVMTDsKK3N0YXRpYyBj
aGFyICplcnJvcl9zdHI9TlVMTDsKKwordm9pZCB0c2Zfc2V0X2Vycm9yX2Z1bGx2KHRzZl9lcnJv
cl90IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG15X2Vycm5vLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBteV9kZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBteV96bGliX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKm15X3psaWJfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGxzdCkgeworICAg
IHRzZl9zZXRfZXJyb3JfaW1wbCgmZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
JnN5c19lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgJmRlYWRseV9zaWduYWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICZ6bGliX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICZ6
bGliX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX3N0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbXlfZXJybm8sCisgICAg
ICAgICAgICAgICAgICAgICAgIG15X2RlYWRseV9zaWduYWwsCisgICAgICAgICAgICAgICAgICAg
ICAgIG15X3psaWJfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgIG15X3psaWJfbXNnLAor
ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGxz
dCk7Cit9CisKK3RzZl9lcnJvcl90IHRzZl9nZXRfZXJyb3JfY29kZSgpIHsKKyAgICByZXR1cm4g
ZXJyb3JfY29kZTsKK30KKworaW50IHRzZl9nZXRfc3lzdGVtX2Vycm5vKCkgeworICAgIHJldHVy
biBzeXNfZXJybm87Cit9CisKK2ludCB0c2ZfZ2V0X2RlYWRseV9zaWduYWwoKSB7CisgICAgcmV0
dXJuIGRlYWRseV9zaWduYWw7Cit9CisKK2ludCB0c2ZfZ2V0X3psaWJfZXJyb3JfY29kZSgpIHsK
KyAgICByZXR1cm4gemxpYl9jb2RlOworfQorCitjb25zdCBjaGFyICp0c2ZfZ2V0X3psaWJfZXJy
b3JfbXNnKCkgeworICAgIHJldHVybiB6bGliX21zZzsKK30KKworaW50IHRzZl9nZXRfbGliYnpp
cDJfZXJyb3JfY29kZSgpIHsKKyAgICByZXR1cm4gemxpYl9jb2RlOworfQorCitjb25zdCBjaGFy
ICp0c2ZfZ2V0X2xpYmJ6aXAyX2Vycm9yX21zZygpIHsKKyAgICByZXR1cm4gemxpYl9tc2c7Cit9
CisKK2NvbnN0IGNoYXIgKnRzZl9nZXRfZXJyb3IoKSB7CisgICAgcmV0dXJuIGVycm9yX3N0cjsK
K30KKworI2VuZGlmCisKK3ZvaWQgdHNmX3NldF9lcnJvcl9mdWxsKHRzZl9lcnJvcl90IGNvZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbXlfZXJybm8sCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbXlfZGVhZGx5X3NpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBteV96bGliX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbXlf
emxpYl9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAuLi4pIHsKKyAgICB2YV9saXN0IGxzdDsKKyAgICAKKyAg
ICB2YV9zdGFydChsc3QsIGZvcm1hdCk7CisgICAgdHNmX3NldF9lcnJvcl9mdWxsdihjb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbXlfZXJybm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICBteV9kZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgbXlfemxpYl9lcnJv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG15X3psaWJfbXNnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0KTsKKyAgICB2YV9l
bmQobHN0KTsKK30KKworI2RlZmluZSBlcnJvcl9ib2R5KGVycm5vLHNpZyx6bF9jb2RlLHpsX21z
Zyxjb2RlLHByZWZtdCxzdHJlcnIpIFwKK2RvIHsgXAorICAgIHZhX2xpc3QgbHN0OyBcCisgICAg
Y2hhciAqbXNnOyBcCisgICAgIFwKKyAgICBpZiAoZm9ybWF0PT1OVUxMKSB7IFwKKyAgICAgICAg
dHNmX3NldF9lcnJvcl9mdWxsKGNvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm5vLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWcsIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHpsX2NvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsX21z
ZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZm10LCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlcnIpOyBcCisgICAgICAgIHJldHVybjsgXAorICAgIH0gXAorICAg
ICBcCisgICAgdmFfc3RhcnQobHN0LCBmb3JtYXQpOyBcCisgICAgbXNnPXRzZl92YXNwcmludGYo
Zm9ybWF0LCBsc3QpOyBcCisgICAgdmFfZW5kKGxzdCk7IFwKKyAgICAgXAorICAgIGlmIChtc2c9
PU5VTEwpIHsgXAorICAgICAgICB0c2Zfc2V0X2Vycm9yX2Z1bGwoVFNGX0VfRVJSTk8sIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJlcnJvcihlcnJubykpOyBcCisgICAgICAgIHJldHVybjsgXAorICAgIH0gXAorICAg
ICBcCisgICAgdHNmX3NldF9lcnJvcl9mdWxsKGNvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgZXJybm8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgc2lnLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgIHpsX2NvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgemxfbXNnLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgIHByZWZtdCAiOiAlcyIsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc3RyZXJyLCBcCisgICAgICAgICAgICAgICAgICAgICAgIG1zZyk7IFwKKyAgICAgXAor
ICAgIGZyZWUobXNnKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBzaW1wbGVfZXJyb3JfYm9k
eShjb2RlKSBcCitkbyB7IFwKKyAgICB2YV9saXN0IGxzdDsgXAorICAgIHZhX3N0YXJ0KGxzdCwg
Zm9ybWF0KTsgXAorICAgIHRzZl9zZXRfZXJyb3JfZnVsbHYoY29kZSwgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICBs
c3QpOyBcCisgICAgdmFfZW5kKGxzdCk7IFwKK30gd2hpbGUgKDApCisKK3ZvaWQgdHNmX3NldF9l
cnJvcih0c2ZfZXJyb3JfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAuLi4pIHsKKyAgICBzaW1wbGVfZXJyb3JfYm9keShj
b2RlKTsKK30KKwordm9pZCB0c2Zfc2V0X3NwZWNpZmljX2Vycm5vKGludCBjdXJfZXJybm8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC4uLikgeworICAgIGVycm9yX2JvZHkoY3VyX2Vycm5vLDAsMCxO
VUxMLFRTRl9FX0VSUk5PLCIlcyIsc3RyZXJyb3IoY3VyX2Vycm5vKSk7Cit9CisKK3ZvaWQgdHNm
X3NldF9lcnJubyhjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgLi4uKSB7
CisgICAgaW50IG15X2Vycm5vID0gZXJybm87CisgICAgZXJyb3JfYm9keShteV9lcnJubywwLDAs
TlVMTCxUU0ZfRV9FUlJOTywiJXMiLHN0cmVycm9yKG15X2Vycm5vKSk7Cit9CisKK3ZvaWQgdHNm
X3NldF9kZWFkbHlfc2lnbmFsKGludCBkZWFkbHlfc2lnbmFsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LC4uLikgeworICAgIGVycm9yX2JvZHkoMCwKKyAg
ICAgICAgICAgICAgIGRlYWRseV9zaWduYWwsCisgICAgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgIFRTRl9FX0RFQVRIX0JZX1NJR05BTCwKKyAgICAg
ICAgICAgICAgICJSZWNlaXZlZCBzaWduYWwgIyVkIiwKKyAgICAgICAgICAgICAgIGRlYWRseV9z
aWduYWwpOworfQorCisjaWZkZWYgSEFWRV9aTElCCisKK2NvbnN0IGNoYXIgKnRzZl96bGliX3N0
cmVycm9yKGludCBjb2RlKSB7CisgICAgc3dpdGNoIChjb2RlKSB7CisgICAgICAgIGNhc2UgWl9W
RVJTSU9OX0VSUk9SOiAgIHJldHVybiAiWkxpYiBjb21waWxlZCB3aXRoIHdyb25nIGhlYWRlci8i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlicmFyeSBjb21iaW5h
dGlvbi4iOworICAgICAgICBjYXNlIFpfU1RSRUFNX0VSUk9SOiAgICByZXR1cm4gIlN0cmVhbSBl
cnJvci4iOworICAgICAgICBjYXNlIFpfTUVNX0VSUk9SOiAgICAgICByZXR1cm4gIkF0dGVtcHQg
dG8gcmVxdWVzdCBtZW1vcnkgZmFpbGVkLiI7CisgICAgICAgIGNhc2UgWl9EQVRBX0VSUk9SOiAg
ICAgIHJldHVybiAiRGF0YSBpbnRlZ3JpdHkgZXJyb3IuIjsKKyAgICAgICAgY2FzZSBaX0JVRl9F
UlJPUjogICAgICAgcmV0dXJuICJCdWZmZXJpbmcgZXJyb3IuIjsKKyAgICAgICAgY2FzZSBaX0VS
Uk5POiAgICAgICAgICAgcmV0dXJuICJTeXN0ZW0gZXJyb3IuICBDaGVjayBlcnJuby4iOworICAg
ICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICByZXR1cm4gIlVua25vd24gZXJyb3IgY29kZS4i
OworICAgIH0KK30KKwordm9pZCB0c2Zfc2V0X3psaWJfZXJyb3IoaW50IGVycm9yX2NvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcl9tc2csCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsLi4uKSB7CisgICAgc3dpdGNoIChlcnJv
cl9jb2RlKSB7CisgICAgY2FzZSBaX0VSUk5POiB7CisgICAgICAgIGludCBteV9lcnJubyA9IGVy
cm5vOyAvLyBTYXZlIGVycm5vIHNpbmNlIGl0IGNhbiBjaGFuZ2UgdmVyeSBlYXNpbHkuCisgICAg
ICAgIGVycm9yX2JvZHkobXlfZXJybm8sIDAsIDAsIE5VTEwsIFRTRl9FX0VSUk5PLCAiJXMiLCBz
dHJlcnJvcihteV9lcnJubykpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBaX01F
TV9FUlJPUjoKKyAgICAgICAgZXJyb3JfYm9keShFTk9NRU0sIDAsIDAsIE5VTEwsIFRTRl9FX0VS
Uk5PLCAiJXMiLCBzdHJlcnJvcihFTk9NRU0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgaWYgKGVycm9yX21zZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnJvcl9t
c2cgPSB0c2ZfemxpYl9zdHJlcnJvcihlcnJvcl9jb2RlKTsKKyAgICAgICAgfQorICAgICAgICBl
cnJvcl9ib2R5KDAsCisgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgIGVycm9yX21zZywKKyAgICAgICAgICAgICAg
ICAgICBUU0ZfRV9aTElCX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICIlcyIsCisgICAgICAg
ICAgICAgICAgICAgZXJyb3JfbXNnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisjZWxz
ZQorCitjb25zdCBjaGFyICp0c2ZfemxpYl9zdHJlcnJvcihpbnQgY29kZSkgeworICAgIHRzZl9h
Ym9ydCgidHNmX3psaWJfc3RyZXJyb3IoKSBjYWxsZWQgZXZlbiB0aG91Z2ggemxpYiBzdXBwb3J0
IGlzIG5vdCAiCisgICAgICAgICAgICAgICJjb21waWxlZCBpbi4iKTsKK30KKwordm9pZCB0c2Zf
c2V0X3psaWJfZXJyb3IoaW50IGVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICplcnJvcl9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpmb3JtYXQsLi4uKSB7CisgICAgdHNmX2Fib3J0KCJ0c2Zfc2V0X3psaWJfZXJyb3IoKSBjYWxs
ZWQgZXZlbiB0aG91Z2ggemxpYiBzdXBwb3J0IGlzIG5vdCAiCisgICAgICAgICAgICAgICJjb21w
aWxlZCBpbi4iKTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX0JaSVAyCisKK2NvbnN0IGNo
YXIgKnRzZl9saWJiemlwMl9zdHJlcnJvcihpbnQgY29kZSkgeworICAgIHN3aXRjaCAoY29kZSkg
eworICAgICAgICBjYXNlIEJaX0NPTkZJR19FUlJPUjogICByZXR1cm4gImxpYmJ6aXAyIGlzIG5v
dCBjb25maWd1cmVkIHRvIHJ1biBvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0aGlzIHBsYXRmb3JtLiAgVGhpcyBpcyBhIGZhdGFsIGVycm9yLiI7CisgICAgICAg
IGNhc2UgQlpfU0VRVUVOQ0VfRVJST1I6IHJldHVybiAiSW5jb3JyZWN0IHNlcXVlbmNlIG9mIGNh
bGxzIHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWJiemlw
MiBmdW5jdGlvbnMuICBUaGlzIGlzIGEgZmF0YWwgIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImVycm9yLiI7CisgICAgICAgIGNhc2UgQlpfUEFSQU1fRVJST1I6ICAg
IHJldHVybiAiUGFyYW1ldGVyIHRvIGxpYmJ6aXAyIGZ1bmN0aW9uIGlzIG91dCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgcmFuZ2UuICBUaGlzIGlzIGEgZmF0
YWwgZXJyb3IuIjsKKyAgICAgICAgY2FzZSBCWl9NRU1fRVJST1I6ICAgICAgcmV0dXJuICJBdHRl
bXB0IHRvIHJlcXVlc3QgbWVtb3J5IGZhaWxlZC4iOworICAgICAgICBjYXNlIEJaX0RBVEFfRVJS
T1I6ICAgICByZXR1cm4gIkRhdGEgaW50ZWdyaXR5IGVycm9yLiI7CisgICAgICAgIGNhc2UgQlpf
REFUQV9FUlJPUl9NQUdJQzogcmV0dXJuICJEYXRhIGRvZXMgbm90IGNvbnRhaW4gY29ycmVjdCBt
YWdpYyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMuIjsK
KyAgICAgICAgY2FzZSBCWl9JT19FUlJPUjogICAgICAgcmV0dXJuICJJL08gZXJyb3IuICBDaGVj
ayBzeXN0ZW0ncyBlcnJuby4iOworICAgICAgICBjYXNlIEJaX1VORVhQRUNURURfRU9GOiByZXR1
cm4gIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUuIjsKKyAgICAgICAgY2FzZSBCWl9PVVRCVUZGX0ZV
TEw6ICAgcmV0dXJuICJPdXRwdXQgYnVmZmVyIGlzIHRvbyBzbWFsbC4iOworICAgICAgICBkZWZh
dWx0OiAgICAgICAgICAgICAgICByZXR1cm4gIlVua25vd24gZXJyb3IgY29kZS4iOworICAgIH0K
K30KKwordm9pZCB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKGludCBlcnJvcl9jb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSB7CisgICAgc3dp
dGNoIChlcnJvcl9jb2RlKSB7CisgICAgY2FzZSBCWl9NRU1fRVJST1I6CisgICAgICAgIGVycm9y
X2JvZHkoRU5PTUVNLCAwLCAwLCBOVUxMLCBUU0ZfRV9FUlJOTywgIiVzIiwgc3RyZXJyb3IoRU5P
TUVNKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQlpfSU9fRVJST1I6IHsKKyAgICAgICAg
aW50IG15X2Vycm5vID0gZXJybm87CisgICAgICAgIGVycm9yX2JvZHkobXlfZXJybm8sIDAsIDAs
IE5VTEwsIFRTRl9FX0VSUk5PLCAiJXMiLCBzdHJlcnJvcihteV9lcnJubykpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBCWl9VTkVYUEVDVEVEX0VPRjoKKyAgICAgICAgc2ltcGxl
X2Vycm9yX2JvZHkoVFNGX0VfRVJST05FT1VTX0VPRik7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGVycm9yX2JvZHkoMCwKKyAgICAgICAgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgdHNmX2xpYmJ6
aXAyX3N0cmVycm9yKGVycm9yX2NvZGUpLAorICAgICAgICAgICAgICAgICAgIFRTRl9FX0xJQkJa
SVAyX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICIlcyIsCisgICAgICAgICAgICAgICAgICAg
dHNmX2xpYmJ6aXAyX3N0cmVycm9yKGVycm9yX2NvZGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCisjZWxzZQorCitjb25zdCBjaGFyICp0c2ZfbGliYnppcDJfc3RyZXJyb3IoaW50IGNv
ZGUpIHsKKyAgICB0c2ZfYWJvcnQoInRzZl9saWJiemlwMl9zdHJlcnJvcigpIGdvdCBjYWxsZWQs
IGJ1dCBsaWJiemlwMiBzdXBwb3J0ICIKKyAgICAgICAgICAgICAgIndhcyBub3QgY29tcGlsZWQg
aW4uIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgdHNmX3NldF9saWJiemlwMl9lcnJv
cihpbnQgZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpmb3JtYXQsLi4uKSB7CisgICAgdHNmX2Fib3J0KCJ0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKCkg
Z290IGNhbGxlZCwgYnV0IGxpYmJ6aXAyIHN1cHBvcnQgIgorICAgICAgICAgICAgICAid2FzIG5v
dCBjb21waWxlZCBpbi4iKTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BUSFJFQUQKK3N0
YXRpYyBwdGhyZWFkX29uY2VfdCBidWZfb25jZV9jb250cm9sPVBUSFJFQURfT05DRV9JTklUOwor
c3RhdGljIHB0aHJlYWRfa2V5X3Qgc3RyX2J1ZjsKKworc3RhdGljIHZvaWQgaW5pdF9zdHJfYnVm
KHZvaWQpIHsKKyAgICBwdGhyZWFkX2tleV9jcmVhdGUoJnN0cl9idWYsZnJlZSk7Cit9CisKK3N0
YXRpYyBjaGFyICpnZXRfc3RyX2J1Zih2b2lkKSB7CisgICAgcHRocmVhZF9vbmNlKCZidWZfb25j
ZV9jb250cm9sLGluaXRfc3RyX2J1Zik7CisgICAgY2hhciAqcmVzdWx0PXB0aHJlYWRfZ2V0c3Bl
Y2lmaWMoc3RyX2J1Zik7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworCXJlc3VsdD1tYWxsb2Mo
MTAwKTsKKwlwdGhyZWFkX3NldHNwZWNpZmljKHN0cl9idWYscmVzdWx0KTsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKyNlbHNlCitzdGF0aWMgY2hhciBzdHJfYnVmWzEwMF07CisKK3N0
YXRpYyBjaGFyICpnZXRfc3RyX2J1Zih2b2lkKSB7CisgICAgcmV0dXJuIHN0cl9idWY7Cit9Cisj
ZW5kaWYKKworY29uc3QgY2hhciAqdHNmX2dldF9lcnJvcl9pbmZpeCh2b2lkKSB7CisgICAgc3dp
dGNoICh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSkgeworICAgIGNhc2UgVFNGX0VfRVJSTk86IHJldHVy
biBzdHJlcnJvcih0c2ZfZ2V0X3N5c3RlbV9lcnJubygpKTsKKyAgICBjYXNlIFRTRl9FX0RFQVRI
X0JZX1NJR05BTDoKKwlpZiAoZ2V0X3N0cl9idWYoKT09TlVMTCkgeworCSAgICByZXR1cm4gTlVM
TDsKKwl9CisJc3ByaW50ZihnZXRfc3RyX2J1ZigpLCJSZWNlaXZlZCBzaWduYWwgIyVkIiwKKwkJ
dHNmX2dldF9kZWFkbHlfc2lnbmFsKCkpOworCXJldHVybiBnZXRfc3RyX2J1ZigpOworI2lmZGVm
IEhBVkVfWkxJQgorICAgIGNhc2UgVFNGX0VfWkxJQl9FUlJPUjoKKwlyZXR1cm4gdHNmX2dldF96
bGliX2Vycm9yX21zZygpOworI2VuZGlmCisjaWZkZWYgSEFWRV9CWklQMgorICAgIGNhc2UgVFNG
X0VfTElCQlpJUDJfRVJST1I6CisJcmV0dXJuIHRzZl9nZXRfbGliYnppcDJfZXJyb3JfbXNnKCk7
CisjZW5kaWYKKyAgICBkZWZhdWx0OgorCXJldHVybiBOVUxMOworICAgIH0KK30KKworY29uc3Qg
Y2hhciAqdHNmX2dldF9lcnJvcl9zdWZmaXgodm9pZCkgeworICAgIGNvbnN0IGNoYXIgKndob2xl
X21zZz10c2ZfZ2V0X2Vycm9yKCk7CisgICAgY29uc3QgY2hhciAqcHJlZml4PXRzZl9nZXRfZXJy
b3JfcHJlZml4KCk7CisgICAgdW5zaWduZWQgcHJlZml4X2xlbj1zdHJsZW4ocHJlZml4KTsKKwor
ICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHByZWZpeCAq
LworICAgIGlmIChzdHJsZW4od2hvbGVfbXNnKT09cHJlZml4X2xlbikgeworCXJldHVybiBOVUxM
OworICAgIH0gZWxzZSB7CisJLyogdHVybnMgb3V0IG5vdC4gIG5vdyB0aGVyZSBhcmUgdHdvIHBv
c3NpYmlsaXRpZXMgdG8KKwkgICBjb25zaWRlcjoKKwkgICAKKwkgICAtIHRoZSByZW1haW5kZXIg
aXMgIjogIiBmb2xsb3dlZCBieSBzb21lIHRleHQsIG9yCisKKwkgICAtIHRoZSByZW1haW5kZXIg
aXMgc29tZXRoaW5nIGVsc2UsIG1lYW5pbmcgdGhhdCB0aGlzCisJICAgICBpcyBhIGNvbXBsZXRl
bHkgaW52YWxpZCBlcnJvciBzdHJpbmchICovCisKKwljb25zdCBjaGFyICppbmZpeD10c2ZfZ2V0
X2Vycm9yX2luZml4KCk7CisJY29uc3QgY2hhciAqcmVzdWx0PXdob2xlX21zZytwcmVmaXhfbGVu
KzI7CisKKwl0c2ZfYXNzZXJ0KHdob2xlX21zZ1twcmVmaXhfbGVuXT09JzonICYmCisJCSAgIHdo
b2xlX21zZ1twcmVmaXhfbGVuKzFdPT0nICcpOworCisJLyogb2suICB3ZSBrbm93IHRoYXQgdGhl
IGVycm9yIHN0cmluZyBpcyBwcm9wZXJseQorCSAgIGZvcm1hdHRlZC4gIG5vdyB0aGVyZSBhcmUg
dGhyZWUgb3RoZXIgcG9zc2liaWxpdGVzIHRvCisJICAgZGVhbCB3aXRoOgorCisJICAgLSB0aGUg
cmVtYWluZGVyIGNvbnRhaW5zIHRoZSBzby1jYWxsZWQgaW5maXggKHdoaWNoIGlzCisJICAgICBq
dXN0IHRoZSBlcnJvciBzdHJpbmcgdGhhdCB3ZSBnb3QgZnJvbSBzb21lIGRlcGVuZGVuY3kKKwkg
ICAgIHRoYXQgZ2VuZXJhdGVkIHRoZSBlcnJvciksIGZvbGxvd2VkIGJ5IG5vdGhpbmcgZWxzZS4K
KwkgICAgIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBzdWZmaXguCisKKwkgICAtIHRoZSBy
ZW1haW5kZXIgY29udGFpbnMgdGhlIHNvLWNhbGxlZCBpbmZpeCBmb2xsb3dlZCBieQorCSAgICAg
YSAiOiAiIGFuZCB0aGUgYWN0dWFsIHN1ZmZpeC4KKworCSAgIC0gdGhlIHJlbWFpbmRlciBlaXRo
ZXIgZG9lc24ndCBjb250YWluIHRoZSBpbmZpeCwgb3IKKwkgICAgIGVsc2UgaXQgY29udGFpbnMg
dGhlIGluZml4IGJ1dCB3aXRob3V0IHRoZSAiOiAiOyB0aGlzCisJICAgICBtZWFucyB3ZSBhc3N1
bWUgdGhhdCB0aGUgd2hvbGUgcmVtYWluZGVyIGlzIHRoZSBzdWZmaXguICovCisKKwkvKiBwcmlu
dGYoImluZml4ID0gJXNcbnJlc3VsdCA9ICVzXG4iLGluZml4LHJlc3VsdCk7ICovCisKKwlpZiAo
aW5maXghPU5VTEwgJiYKKwkgICAgc3Ryc3RyKHJlc3VsdCxpbmZpeCk9PXJlc3VsdCkgeworCSAg
ICB1bnNpZ25lZCBpbmZpeF9sZW49c3RybGVuKGluZml4KTsKKwkgICAgaWYgKHJlc3VsdFtpbmZp
eF9sZW5dPT0wKSB7CisJCS8qIHRoZXJlIGlzIG5vIHN1ZmZpeCAodGhlIHdob2xlIHJlbWFpbmRl
ciBpcyBqdXN0CisJCSAgIGluZml4LiAqLworCQlyZXR1cm4gTlVMTDsKKwkgICAgfQorCSAgICBp
ZiAocmVzdWx0W2luZml4X2xlbl09PSc6JyAmJgorCQlyZXN1bHRbaW5maXhfbGVuKzFdPT0nICcp
IHsKKwkJLyogdGhlcmUgaXMgYSBzdWZmaXggYWZ0ZXIgdGhlIGluZml4LiAqLworCQlyZXR1cm4g
cmVzdWx0K2luZml4X2xlbisyOworCSAgICB9IGVsc2UgeworCQkvKiB0aGUgaW5maXggaXMgdGhl
cmUsIGJ1dCB0aGVyZSBpcyBubyAiOiAiLCBzbyB3ZQorCQkgICBhc3N1bWUgdGhhdCB0aGVyZSBp
cyBubyBpbmZpeCBhZnRlcmFsbC4gKi8KKwkJcmV0dXJuIHJlc3VsdDsKKwkgICAgfQorCX0gZWxz
ZSB7CisJICAgIC8qIHRoZXJlIGlzIG5vIGluZml4LiAqLworCSAgICByZXR1cm4gcmVzdWx0Owor
CX0KKyAgICB9Cit9CisKK3ZvaWQgdHNmX2ZfYWJvcnQoY29uc3QgY2hhciAqbXNnKSB7CisgICAg
ZnByaW50ZihzdGRlcnIsInRzZl9mX2Fib3J0KFwiJXNcIilcbiIsbXNnKTsKKyAgICBhYm9ydCgp
OworfQorCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
Zm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9mb3JtYXQuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX2Zvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQ
IFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgRlBfVFNGX0ZPUk1BVF9ICisjZGVmaW5lIEZQX1RTRl9GT1JNQVRfSAor
CisjaW5jbHVkZSAidHNmX2NvbmZpZy5oIgorCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKworI2Rl
ZmluZSBmaTggIiUiIFBSSWQ4CisjZGVmaW5lIGZ1aTggIiUiIFBSSXU4CisjZGVmaW5lIGZpMTYg
IiUiIFBSSWQxNgorI2RlZmluZSBmdWkxNiAiJSIgUFJJdTE2CisjZGVmaW5lIGZpMzIgIiUiIFBS
SWQzMgorI2RlZmluZSBmdWkzMiAiJSIgUFJJdTMyCisjZGVmaW5lIGZpNjQgIiUiIFBSSWQ2NAor
I2RlZmluZSBmdWk2NCAiJSIgUFJJdTY0CisKKyNpZiBUU0ZfU0laRU9GX1NJWkVfVCA9PSAyCisj
ZGVmaW5lIGZzeiBmdWkxNgorI2Vsc2UKKyNpZiBUU0ZfU0laRU9GX1NJWkVfVCA9PSA0CisjZGVm
aW5lIGZzeiBmdWkzMgorI2Vsc2UKKyNpZiBUU0ZfU0laRU9GX1NJWkVfVCA9PSA4CisjZGVmaW5l
IGZzeiBmdWk2NAorI2Vsc2UKKyNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gcHJpbnQgc2l6ZV90
IgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisjaWYgVFNGX1NJWkVPRl9WT0lEX1AgPT0gMgor
I2RlZmluZSBmcHRyIGZpMTYKKyNkZWZpbmUgZnVwdHIgZnVpMTYKKyNlbHNlCisjaWYgVFNGX1NJ
WkVPRl9WT0lEX1AgPT0gNAorI2RlZmluZSBmcHRyIGZpMzIKKyNkZWZpbmUgZnVwdHIgZnVpMzIK
KyNlbHNlCisjaWYgVFNGX1NJWkVPRl9WT0lEX1AgPT0gOAorI2RlZmluZSBmcHRyIGZpNjQKKyNk
ZWZpbmUgZnVwdHIgZnVpNjQKKyNlbHNlCisjZXJyb3IgIkRvbid0IGtub3cgaG93IHRvIHByaW50
IHZvaWQgKiIKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworI2VuZGlmCisKKwpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiLmMJKG5vbmV4
aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2Ri
LmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDE0LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2lu
dGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorI2luY2x1ZGUgInRzZl9mc2RiX3By
b3RvY29sLmgiCisKKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5j
bHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVk
ZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2lmZGVmIEhBVkVfQlNEU09DS1MK
KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVk
ZSA8c3lzL3VuLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGRiLmg+
CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxh
cnBhL2luZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisKKyNpZmRlZiBI
QVZFX0JTRFNPQ0tTCitzdGF0aWMgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqY29ubmVjdGlvbl9yZWFk
KHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29uKTsKKworc3RhdGljIHRzZl9ib29sX3Qgb3Blbl9j
b25uZWN0aW9uKGludCBkb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByb3RvY29s
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRk
ciAqYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgYWRk
cmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZkKSB7CisgICAg
aW50IGZsYWc7CisgICAgCisgICAgKmZkPXNvY2tldChkb21haW4sdHlwZSxwcm90b2NvbCk7Cisg
ICAgaWYgKCpmZDwwKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBjcmVhdGUg
c29ja2V0IHdpdGggZG9tYWluICVkLCB0eXBlICVkLCBwcm90b2NvbCAlZCIsCisgICAgICAgICAg
ICAgICAgICAgICAgZG9tYWluLHR5cGUscHJvdG9jb2wpOworICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoY29ubmVjdCgqZmQsYWRkcixhZGRybGVuKTwwKSB7
CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBlc3RhYmxpc2ggY29ubmVjdGlvbiIp
OworICAgICAgICBjbG9zZSgqZmQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0K
KyAgICAKKyAgICBmbGFnPTE7CisgICAgaWYgKHNldHNvY2tvcHQoKmZkLCBJUFBST1RPX1RDUCwg
VENQX05PREVMQVksIChjaGFyKikmZmxhZywgc2l6ZW9mKGZsYWcpKTwwKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCBkaXNhYmxlIE5hZ2xlJ3MgYWxnb3JpdGhtIik7CisgICAg
ICAgIGNsb3NlKCpmZCk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAq
Y29ubmVjdGlvbl9jcmVhdGUoaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX2ZzZGJfdCAqZnNkYikgeworICAgIHRzZl9mc2RiX2Nvbm5l
Y3Rpb25fdCAqcmVzdWx0OworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX3QgKnJzcDsKKyAgICAKKyAg
ICB0c2ZfYXNzZXJ0KGZkPj0wKTsKKyAgICAKKyAgICByZXN1bHQ9bWFsbG9jKHNpemVvZih0c2Zf
ZnNkYl9jb25uZWN0aW9uX3QpKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2ZzZGJfY29ubmVjdGlvbl90Iik7Cisg
ICAgICAgIGdvdG8gZXJyb3IxOworICAgIH0KKyAgICAKKyAgICByZXN1bHQtPmJ1Zl9zaXplPTA7
CisgICAgcmVzdWx0LT5idWZfY3Vyc29yPTA7CisgICAgcmVzdWx0LT5idWY9TlVMTDsKKyAgICAK
KyAgICByZXN1bHQtPmZkPWZkOworICAgIAorICAgIHJlc3VsdC0+aW49dHNmX3N0cmVhbV9maWxl
X2lucHV0X2ZkX29wZW4oCisgICAgICAgIGZkLGZzZGItPmxpbWl0cywmZnNkYi0+cmRyX2F0dHIs
dHNmX2ZhbHNlLFRTRl9ERUZfTkVUX0JVRl9TSVpFKTsKKyAgICBpZiAocmVzdWx0LT5pbj09TlVM
TCkgeworICAgICAgICBnb3RvIGVycm9yMjsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5vdXQ9
dHNmX3N0cmVhbV9maWxlX291dHB1dF9mZF9vcGVuKAorICAgICAgICBmZCwmZnNkYi0+d3RyX2F0
dHIsdHNmX2ZhbHNlLFRTRl9ERUZfTkVUX0JVRl9TSVpFKTsKKyAgICBpZiAocmVzdWx0LT5vdXQ9
PU5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjM7CisgICAgfQorICAgIAorICAgIHJzcD1jb25u
ZWN0aW9uX3JlYWQocmVzdWx0KTsKKyAgICBpZiAocnNwPT1OVUxMKSB7CisgICAgICAgIGdvdG8g
ZXJyb3I0OworICAgIH0KKyAgICAKKyAgICBpZiAocnNwLT5wYXlsb2FkLnZhbHVlIT10c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRT
Rl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJCYWQgcmVzcG9uc2UgZnJv
bSBGU0RCIHNlcnZlcjogcmVzcG9uc2UgJXMgd2l0aCBzdGF0ZSAlcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3RvX3N0cihyc3AtPnBheWxvYWQu
dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl9mc2RiX3N0YXRlX190b19zdHIocnNw
LT5zdGF0ZS52YWx1ZSkpOworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAg
Z290byBlcnJvcjQ7CisgICAgfQorICAgIAorICAgIHRzZl9yZWdpb25fZnJlZShyc3ApOworICAg
IAorICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yNDoKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfb3V0
cHV0X2Nsb3NlKHJlc3VsdC0+b3V0KTsKK2Vycm9yMzoKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfY2xvc2UocmVzdWx0LT5pbik7CitlcnJvcjI6CisgICAgZnJlZShyZXN1bHQpOworZXJyb3Ix
OgorICAgIGNsb3NlKGZkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgY29u
bmVjdGlvbl9kZXN0cm95KHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29uKSB7CisgICAgaWYgKGNv
bi0+YnVmIT1OVUxMKSB7CisgICAgICAgIGZyZWUoY29uLT5idWYpOworICAgIH0KKyAgICB0c2Zf
c3RyZWFtX2ZpbGVfaW5wdXRfY2xvc2UoY29uLT5pbik7CisgICAgdHNmX3N0cmVhbV9maWxlX291
dHB1dF9jbG9zZShjb24tPm91dCk7CisgICAgY2xvc2UoY29uLT5mZCk7CisgICAgZnJlZShjb24p
OworfQorCitzdGF0aWMgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqY29ubmVjdGlvbl9yZWFkKHRzZl9m
c2RiX2Nvbm5lY3Rpb25fdCAqY29uKSB7CisgICAgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqcnNwPXRz
Zl9mc2RiX3Jlc3BvbnNlX19yZWFkKGNvbi0+aW4pOworICAgIGlmIChyc3A9PU5VTEwpIHsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGNvbi0+Y2xlYXI9KHJzcC0+c3Rh
dGUudmFsdWU9PXRzZl9mc2RiX3N0YXRlX19jbGVhcik7CisgICAgCisgICAgcmV0dXJuIHJzcDsK
K30KKworc3RhdGljIHZvaWQgY29ubmVjdGlvbl9yZXR1cm4odHNmX2ZzZGJfdCAqZnNkYiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29uKSB7
CisgICAgaWYgKGNvbi0+Y2xlYXIpIHsKKyAgICAgICAgdHNmX211dGV4X2xvY2soJmZzZGItPmxv
Y2spOworICAgICAgICBpZiAoZnNkYi0+dS5yZW1vdGUuY29ubmVjdGlvbj09TlVMTCkgeworICAg
ICAgICAgICAgZnNkYi0+dS5yZW1vdGUuY29ubmVjdGlvbj1jb247CisgICAgICAgICAgICBjb249
TlVMTDsKKyAgICAgICAgfQorICAgICAgICB0c2ZfbXV0ZXhfdW5sb2NrKCZmc2RiLT5sb2NrKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGNvbiE9TlVMTCkgeworICAgICAgICBjb25uZWN0aW9uX2Rl
c3Ryb3koY29uKTsKKyAgICB9Cit9CisKK3N0YXRpYyB0c2ZfZnNkYl9jb25uZWN0aW9uX3QgKmNy
ZWF0ZV9maXJzdF9jb25uZWN0aW9uKHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0bmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBwb3J0KSB7CisgICAgaW50IGZkPS0xOworICAgIHRzZl9ib29sX3QgY29ubmVjdGVkPXRz
Zl9mYWxzZTsKKyAgICAKKyNpZmRlZiBIQVZFX0dFVEFERFJJTkZPCisgICAgc3RydWN0IGFkZHJp
bmZvIGhpbnRzOworICAgIHN0cnVjdCBhZGRyaW5mbyAqcmVzdWx0LCpjdXI7CisgICAgY2hhciBi
dWZbMzJdOworICAgIAorICAgIGJ6ZXJvKCZoaW50cyxzaXplb2YoaGludHMpKTsKKyAgICBoaW50
cy5haV9mYW1pbHk9QUZfSU5FVDsKKyAgICBoaW50cy5haV9zb2NrdHlwZT1TT0NLX1NUUkVBTTsK
KyAgICAKKyAgICBzbnByaW50ZihidWYsc2l6ZW9mKGJ1ZiksIiVkIixwb3J0KTsKKyAgICAKKyAg
ICBpZiAoZ2V0YWRkcmluZm8oaG9zdG5hbWUsYnVmLCZoaW50cywmcmVzdWx0KSE9MCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0hPU1ROQU1FLAorICAgICAgICAgICAgICAgICAgICAg
ICJDb3VsZCBub3QgbG9va3VwIGhvc3RuYW1lICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICBo
b3N0bmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBmb3IgKGN1
cj1yZXN1bHQ7Y3VyIT1OVUxMO2N1cj1jdXItPmFpX25leHQpIHsKKyAgICAgICAgaWYgKG9wZW5f
Y29ubmVjdGlvbihjdXItPmFpX2ZhbWlseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXItPmFpX3NvY2t0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ci0+YWlfcHJv
dG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyLT5haV9hZGRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1ci0+YWlfYWRkcmxlbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmZmQpKSB7CisgICAgICAgICAgICBjb25uZWN0ZWQ9dHNmX3RydWU7CisgICAg
ICAgICAgICBmc2RiLT51LnJlbW90ZS5yZXN1bHQ9cmVzdWx0OworICAgICAgICAgICAgZnNkYi0+
dS5yZW1vdGUuY3VyPWN1cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIGlmICghY29ubmVjdGVkKSB7CisgICAgICAgIGZyZWVhZGRyaW5mbyhyZXN1bHQp
OworICAgIH0KKyNlbHNlCisgICAgc3RydWN0IGhvc3RlbnQgKmhwID0gZ2V0aG9zdGJ5bmFtZSho
b3N0bmFtZSk7CisKKyAgICBpZiAoaHAgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm9y
KFRTRl9FX0hPU1ROQU1FLAorICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgbG9va3Vw
IGhvc3RuYW1lICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICBob3N0bmFtZSk7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIGk7CisgICAgICAg
IGZvciAoaT0wO2hwLT5oX2FkZHJfbGlzdFtpXSE9TlVMTDsrK2kpIHsKKyAgICAgICAgICAgIHN0
cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworICAgICAgICAgICAgc29ja2xlbl90IHNsZW49c2l6ZW9m
KGFkZHIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBiemVybygmYWRkcixzbGVuKTsKKyAg
ICAgICAgICAgIGFkZHIuc2luX2ZhbWlseT1BRl9JTkVUOworICAgICAgICAgICAgYWRkci5zaW5f
cG9ydD1odG9ucyhwb3J0KTsKKyAgICAgICAgICAgIGFkZHIuc2luX2FkZHIuc19hZGRyPSooc3Ry
dWN0IGluX2FkZHIqKShocC0+aF9hZGRyX2xpc3RbaV0pOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAob3Blbl9jb25uZWN0aW9uKEFGX0lORVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmZkKSkgeworICAgICAgICAgICAgICAgIGNvbm5lY3RlZD10c2ZfdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBmc2RiLT51LnJlbW90ZS5hZGRyPSoodWludDMyX3QqKShocC0+aF9hZGRyX2xpc3RbaV0p
OworICAgICAgICAgICAgICAgIGZzZGItPnUucmVtb3RlLnBvcnQ9cG9ydDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAg
IAorICAgIGlmICghY29ubmVjdGVkKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gY29ubmVjdGlvbl9jcmVhdGUoZmQsZnNkYik7Cit9CisKK3N0YXRpYyB0
c2ZfZnNkYl9jb25uZWN0aW9uX3QgKmNyZWF0ZV9jb25uZWN0aW9uKHRzZl9mc2RiX3QgKmZzZGIp
IHsKKyAgICBpbnQgZmQ7CisKKyNpZmRlZiBIQVZFX0dFVEFERFJJTkZPCisgICAgaWYgKCFvcGVu
X2Nvbm5lY3Rpb24oZnNkYi0+dS5yZW1vdGUuY3VyLT5haV9mYW1pbHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgZnNkYi0+dS5yZW1vdGUuY3VyLT5haV9zb2NrdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBmc2RiLT51LnJlbW90ZS5jdXItPmFpX3Byb3RvY29sLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGZzZGItPnUucmVtb3RlLmN1ci0+YWlfYWRkciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBmc2RiLT51LnJlbW90ZS5jdXItPmFpX2FkZHJsZW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJmZkKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZWxz
ZQorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworICAgIHNvY2tsZW5fdCBzbGVuPXNpemVv
ZihhZGRyKTsKKyAgICAKKyAgICBiemVybygmYWRkcixzbGVuKTsKKyAgICBhZGRyLnNpbl9mYW1p
bHk9QUZfSU5FVDsKKyAgICBhZGRyLnNpbl9wb3J0PWh0b25zKGZzZGItPnUucmVtb3RlLnBvcnQp
OworICAgIGFkZHIuc2luX2FkZHIuc19hZGRyPSooc3RydWN0IGluX2FkZHIqKSgmZnNkYi0+dS5y
ZW1vdGUuYWRkcik7CisgICAgICAgICAgICAKKyAgICBpZiAoIW9wZW5fY29ubmVjdGlvbihBRl9J
TkVULAorICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfU1RSRUFNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgc2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZmQpKSB7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIAorICAgIHJldHVybiBj
b25uZWN0aW9uX2NyZWF0ZShmZCxmc2RiKTsKK30KKworc3RhdGljIHRzZl9mc2RiX3Jlc3BvbnNl
X3QgKmZpcnN0X2FjdGlvbih0c2ZfZnNkYl90ICpmc2RiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfZnNkYl9jb25uZWN0aW9uX3QgKipjb25uZWN0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfZnNkYl9jb21tYW5k
X3QgKmNtZCkgeworICAgIHVuc2lnbmVkIGk7CisgICAgdHNmX211dGV4X2xvY2soJmZzZGItPmxv
Y2spOworICAgICpjb25uZWN0aW9uPWZzZGItPnUucmVtb3RlLmNvbm5lY3Rpb247CisgICAgZnNk
Yi0+dS5yZW1vdGUuY29ubmVjdGlvbj1OVUxMOworICAgIHRzZl9tdXRleF91bmxvY2soJmZzZGIt
PmxvY2spOworICAgIAorICAgIGZvciAoaT0wOzsrK2kpIHsKKyAgICAgICAgaWYgKCpjb25uZWN0
aW9uIT1OVUxMICYmCisgICAgICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX193cml0ZSgoKmNvbm5l
Y3Rpb24pLT5vdXQsY21kKSAmJgorICAgICAgICAgICAgdHNmX3N0cmVhbV9maWxlX291dHB1dF9m
bHVzaCgoKmNvbm5lY3Rpb24pLT5vdXQpKSB7CisgICAgICAgICAgICB0c2ZfZnNkYl9yZXNwb25z
ZV90ICpyZXNwb25zZT1jb25uZWN0aW9uX3JlYWQoKmNvbm5lY3Rpb24pOworICAgICAgICAgICAg
aWYgKHJlc3BvbnNlIT1OVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaT09MCkgewor
ICAgICAgICAgICAgLyogcmV0cnkgLSB0aGUgY29ubmVjdGlvbiBtYXkgaGF2ZSBnb25lIHN0YWxl
ICovCisgICAgICAgICAgICBpZiAoKmNvbm5lY3Rpb24hPU5VTEwpIHsKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uX2Rlc3Ryb3koKmNvbm5lY3Rpb24pOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAqY29ubmVjdGlvbj1jcmVhdGVfY29ubmVjdGlvbihmc2RiKTsK
KyAgICAgICAgICAgIGlmICgqY29ubmVjdGlvbj09TlVMTCkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
LyogYWxyZWFkeSB0cmllZCBiZWZvcmUsIG5vdyBmYWlsIHBlcm1hbmVudGx5IGFuZCBkZXN0cm95
IHRoZSBjb25uZWN0aW9uLiAqLworICAgICAgICAgICAgdHNmX2Fzc2VydCgqY29ubmVjdGlvbiE9
TlVMTCk7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koKmNvbm5lY3Rpb24pOworICAg
ICAgICAgICAgKmNvbm5lY3Rpb249TlVMTDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBzZXRfZXJyb3IodHNmX2ZzZGJfcmVzcG9u
c2VfdCAqcnNwKSB7CisgICAgc3dpdGNoIChyc3AtPnBheWxvYWQudmFsdWUpIHsKKyAgICBjYXNl
IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3I6CisgICAgICAgIHRzZl9zZXRf
ZXJyb3IoVFNGX0VfRVhURVJOQUwsCisgICAgICAgICAgICAgICAgICAgICAgIkZTREIgc2VydmVy
IHJlc3BvbmRlZCB3aXRoIHN5c3RlbSBlcnJvcjogJXMiLAorICAgICAgICAgICAgICAgICAgICAg
IHJzcC0+cGF5bG9hZC51LnN5c19lcnJvci5tc2cpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcjoKKyAgICAgICAgdHNmX3Nl
dF9lcnJvcihUU0ZfRV9FWFRFUk5BTCwKKyAgICAgICAgICAgICAgICAgICAgICAiRlNEQiBzZXJ2
ZXIgcmVzcG9uZGVkIHdpdGggcHJvdG9jb2wgZXJyb3I6ICVzIiwKKyAgICAgICAgICAgICAgICAg
ICAgICByc3AtPnBheWxvYWQudS5wcm90b19lcnJvci5tc2cpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19ub3RfZm91bmQ6CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfRUxFX05PVF9GT1VORCwKKyAgICAgICAgICAgICAgICAgICAgICAi
RlNEQiBzZXJ2ZXIgY291bGQgbm90IGZpbmQgdGhlIHJlcXVlc3RlZCBlbGVtZW50Iik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2VvZjoK
KyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9FT0YsCisgICAgICAgICAgICAgICAgICAgICAg
IkVuZCBvZiBmaWxlIGZyb20gRlNEQiBzZXJ2ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAiVW5leHBlY3RlZCBvciB1bnJlY29nbml6ZWQgcmVzcG9uc2UgZnJvbSBG
U0RCIHNlcnZlcjsgIgorICAgICAgICAgICAgICAgICAgICAgICJzdGF0ZSA9ICVzLCByZXNwb25z
ZSA9ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICB0c2ZfZnNkYl9zdGF0ZV9fdG9fc3RyKHJz
cC0+c3RhdGUudmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl9mc2RiX3Jlc3BvbnNl
X19wYXlsb2FkX190b19zdHIocnNwLT5wYXlsb2FkLnZhbHVlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworc3RhdGljIHRzZl9ib29sX3QgbmV0d29ya193cml0ZXJfZmx1c2godHNmX2Zz
ZGJfb3V0X3QgKm91dCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfdCBjbWQ7CisgICAgdHNmX2Zz
ZGJfcmVzcG9uc2VfdCAqcnNwOworICAgIAorICAgIGNtZC52YWx1ZT10c2ZfZnNkYl9jb21tYW5k
X19vdXRfd3JpdGU7CisgICAgY21kLnUub3V0X3dyaXRlLmRhdGEuZGF0YT1vdXQtPnUucmVtb3Rl
LmNvbm5lY3Rpb24tPmJ1ZjsKKyAgICBjbWQudS5vdXRfd3JpdGUuZGF0YS5sZW49b3V0LT51LnJl
bW90ZS5jb25uZWN0aW9uLT5idWZfY3Vyc29yOworICAgIGlmICghdHNmX2ZzZGJfY29tbWFuZF9f
d3JpdGUob3V0LT51LnJlbW90ZS5jb25uZWN0aW9uLT5vdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmY21kKSB8fAorICAgICAgICAhdHNmX3N0cmVhbV9maWxlX291dHB1dF9m
bHVzaChvdXQtPnUucmVtb3RlLmNvbm5lY3Rpb24tPm91dCkpIHsKKyAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgcnNwPWNvbm5lY3Rpb25fcmVhZChvdXQtPnUucmVt
b3RlLmNvbm5lY3Rpb24pOworICAgIGlmIChyc3A9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHJzcC0+c3RhdGUudmFsdWUhPXRzZl9mc2Ri
X3N0YXRlX19wdXQgfHwKKyAgICAgICAgcnNwLT5wYXlsb2FkLnZhbHVlIT10c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fb2spIHsKKyAgICAgICAgc2V0X2Vycm9yKHJzcCk7CisgICAgICAgIHRz
Zl9yZWdpb25fZnJlZShyc3ApOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAKKyAgICBvdXQtPnUucmVtb3RlLmNv
bm5lY3Rpb24tPmJ1Zl9jdXJzb3I9MDsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisK
K3N0YXRpYyB0c2ZfYm9vbF90IG5ldHdvcmtfd3JpdGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1Zl8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB0c2ZfZnNkYl9vdXRfdCAqb3V0
PSh0c2ZfZnNkYl9vdXRfdCopYXJnOworICAgIHVpbnQ4X3QgKmJ1ZiA9ICh1aW50OF90KilidWZf
OworICAgIHVpbnQzMl90IHRvd3JpdGU7CisgICAgCisgICAgd2hpbGUgKGxlbj4wKSB7CisgICAg
ICAgIHRvd3JpdGU9dHNmX21pbihsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQtPnUu
cmVtb3RlLmNvbm5lY3Rpb24tPmJ1Zl9zaXplLQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LT51LnJlbW90ZS5jb25uZWN0aW9uLT5idWZfY3Vyc29yKTsKKyAgICAgICAgbWVtY3B5KG91dC0+
dS5yZW1vdGUuY29ubmVjdGlvbi0+YnVmKworICAgICAgICAgICAgICAgb3V0LT51LnJlbW90ZS5j
b25uZWN0aW9uLT5idWZfY3Vyc29yLAorICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAg
ICAgdG93cml0ZSk7CisgICAgICAgIAorICAgICAgICBvdXQtPnUucmVtb3RlLmNvbm5lY3Rpb24t
PmJ1Zl9jdXJzb3IrPXRvd3JpdGU7CisgICAgICAgIGJ1Zis9dG93cml0ZTsKKyAgICAgICAgbGVu
LT10b3dyaXRlOworICAgICAgICAKKyAgICAgICAgaWYgKGxlbj09MCkgeworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghbmV0d29ya193cml0ZXJf
Zmx1c2gob3V0KSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90
IG5ldHdvcmtfcmVhZGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmJ1Zl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBsZW4pIHsKKyAgICB0c2ZfZnNkYl9pbl90ICppbj0odHNmX2ZzZGJfaW5fdCopYXJnOworICAg
IHVpbnQ4X3QgKmJ1Zj0odWludDhfdCopYnVmXzsKKyAgICAKKyAgICB3aGlsZSAobGVuPjApIHsK
KyAgICAgICAgaWYgKGluLT51LnJlbW90ZS5yc3AhPU5VTEwpIHsKKyAgICAgICAgICAgIHVpbnQz
Ml90IHRvcmVhZD0KKyAgICAgICAgICAgICAgICB0c2ZfbWluKGxlbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGluLT51LnJlbW90ZS5yc3AtPnBheWxvYWQudS5pbl9kYXRhLmRhdGEubGVuLQor
ICAgICAgICAgICAgICAgICAgICAgICAgaW4tPnUucmVtb3RlLnJzcF9jdXJzb3IpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBtZW1jcHkoYnVmLAorICAgICAgICAgICAgICAgICAgIGluLT51
LnJlbW90ZS5yc3AtPnBheWxvYWQudS5pbl9kYXRhLmRhdGEuZGF0YStpbi0+dS5yZW1vdGUucnNw
X2N1cnNvciwKKyAgICAgICAgICAgICAgICAgICB0b3JlYWQpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpbi0+dS5yZW1vdGUucnNwX2N1cnNvcis9dG9yZWFkOworICAgICAgICAgICAgbGVu
LT10b3JlYWQ7CisgICAgICAgICAgICBidWYrPXRvcmVhZDsKKworICAgICAgICAgICAgaWYgKGxl
bj09MCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoaW4tPnUucmVtb3RlLnJzcCE9TlVMTCAmJgorICAgICAg
ICAgICAgaW4tPnUucmVtb3RlLnJzcF9jdXJzb3I9PWluLT51LnJlbW90ZS5yc3AtPnBheWxvYWQu
dS5pbl9kYXRhLmRhdGEubGVuKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRzZl9yZWdp
b25fZnJlZShpbi0+dS5yZW1vdGUucnNwKTsKKyAgICAgICAgICAgIGluLT51LnJlbW90ZS5yc3A9
TlVMTDsKKyAgICAgICAgICAgIGluLT51LnJlbW90ZS5yc3BfY3Vyc29yPTA7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoaW4tPnUucmVtb3RlLnJzcD09TlVMTCkgeworICAgICAgICAgICAgaW4t
PnUucmVtb3RlLnJzcF9jdXJzb3I9MDsKKyAgICAgICAgICAgIGluLT51LnJlbW90ZS5yc3A9Cisg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbl9yZWFkKGluLT51LnJlbW90ZS5jb25uZWN0aW9uKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChpbi0+dS5yZW1vdGUucnNwLT5wYXls
b2FkLnZhbHVlKSB7CisgICAgICAgICAgICBjYXNlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X19pbl9kYXRhOgorICAgICAgICAgICAgICAgIC8qIG9rISAqLworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZW9m
OgorICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoKHZvaWQqKWJ1Zj09YnVmXz8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRTRl9FX1VORVhQRUNURURfRU9GOlRTRl9FX0VSUk9O
RU9VU19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRU9GIGluIHJlc3BvbnNl
IGZyb20gRlNEQiBzZXJ2ZXIiKTsKKyAgICAgICAgICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUoaW4t
PnUucmVtb3RlLnJzcCk7CisgICAgICAgICAgICAgICAgaW4tPnUucmVtb3RlLnJzcD1OVUxMOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHNldF9lcnJvcihpbi0+dS5yZW1vdGUucnNwKTsKKyAgICAgICAgICAg
ICAgICB0c2ZfcmVnaW9uX2ZyZWUoaW4tPnUucmVtb3RlLnJzcCk7CisgICAgICAgICAgICAgICAg
aW4tPnUucmVtb3RlLnJzcD1OVUxMOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90
cnVlOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIGNvcHlfcGFyYW1zKHRzZl9mc2RiX3QgKmZz
ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl96aXBfcmRyX2F0dHJfdCAqcmRyX2F0dHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnd0cl9hdHRyKSB7CisgICAgZnNk
Yi0+bGltaXRzPWxpbWl0czsKKyAgICAKKyAgICBpZiAocmRyX2F0dHI9PU5VTEwpIHsKKyAgICAg
ICAgdHNmX3ppcF9yZHJfYXR0cl9nZXRfZGVmYXVsdCgmZnNkYi0+cmRyX2F0dHIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGZzZGItPnJkcl9hdHRyPSpyZHJfYXR0cjsKKyAgICB9CisgICAgCisg
ICAgaWYgKHd0cl9hdHRyPT1OVUxMKSB7CisgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2Rl
ZmF1bHQoJmZzZGItPnd0cl9hdHRyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmc2RiLT53dHJf
YXR0cj0qd3RyX2F0dHI7CisgICAgfQorfQorCit0c2ZfZnNkYl90ICp0c2ZfZnNkYl9vcGVuX2xv
Y2FsKGNvbnN0IGNoYXIgKmRpcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl9saW1pdHNfdCAqbGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfemlwX3Jkcl9hdHRyX3QgKnJkcl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnd0cl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfYm9vbF90IHVwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX2Jvb2xfdCB0cnVuY2F0ZSkgeworICAgIHRzZl9mc2RiX3QgKnJlc3VsdDsKKyAg
ICBjaGFyICptYXJrZXJfZmxubTsKKyAgICBGSUxFICpmaW47CisgICAgY2hhciBidWZbOV07Cisg
ICAgCisgICAgaWYgKCF1cGRhdGUgJiYgdHJ1bmNhdGUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9JTlZBTElEX0FSRywKKyAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNp
ZnkgdGhlIHRydW5jYXRlIHdpdGhvdXQgdGhlIHVwZGF0ZSAiCisgICAgICAgICAgICAgICAgICAg
ICAgImZsYWciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlc3Vs
dD1tYWxsb2Moc2l6ZW9mKHRzZl9mc2RiX3QpKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7Cisg
ICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX2ZzZGJfdCIpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmVzdWx0LT5raW5kPVRTRl9GU0RC
X0xPQ0FMOworICAgIAorICAgIHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lPXN0cmR1cChkaXJuYW1l
KTsKKyAgICBpZiAocmVzdWx0LT51LmxvY2FsLmRpcm5hbWU9PU5VTEwpIHsKKyAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IHN0cmR1cCBkaXJuYW1lIGluIHRzZl9mc2RiX29wZW5fbG9j
YWwiKTsKKyAgICAgICAgZ290byBlcnJvcjE7CisgICAgfQorICAgIAorICAgIGlmICh1cGRhdGUp
IHsKKyAgICAgICAgaWYgKG1rZGlyKHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lLDA3NzcpPDApIHsK
KyAgICAgICAgICAgIGlmIChlcnJubz09RUVYSVNUKSB7CisgICAgICAgICAgICAgICAgLyogYWxs
IGdvb2QuICovCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCBjcmVhdGUgZnNkYiBkaXJlY3RvcnkgJXMiLHJlc3VsdC0+dS5sb2Nh
bC5kaXJuYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGRpcmVjdG9yeSBjcmVhdGVkOyBub3cg
Y3JlYXRlIHRoZSBtYXJrZXIgZmlsZS4gKi8KKyAgICAgICAgICAgIEZJTEUgKmZvdXQ7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG1hcmtlcl9mbG5tPXRzZl9hc3ByaW50ZigiJXMvVFNGX0ZT
REIiLHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICAgICAgICAgIGlmIChtYXJrZXJfZmxu
bT09TlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxv
Y2F0ZSBzdHJpbmciKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm91dD1mb3BlbihtYXJrZXJfZmxubSwidyIp
OworICAgICAgICAgICAgaWYgKGZvdXQ9PU5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3Qgb3BlbiAlcyIsbWFya2VyX2Zsbm0pOworICAgICAgICAgICAgICAg
IGZyZWUobWFya2VyX2Zsbm0pOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3IyOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmcmVlKG1hcmtlcl9mbG5tKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnB1dHMoIlRTRl9GU0RCIixmb3V0KTsgLyogRklYTUU6
IGVycm9yIGNoZWNraW5nPyAqLworICAgICAgICAgICAgCisgICAgICAgICAgICBmY2xvc2UoZm91
dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgbWFya2VyX2Zsbm09dHNmX2FzcHJpbnRm
KCIlcy9UU0ZfRlNEQiIscmVzdWx0LT51LmxvY2FsLmRpcm5hbWUpOworICAgIGlmIChtYXJrZXJf
ZmxubT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUg
c3RyaW5nIik7CisgICAgICAgIGdvdG8gZXJyb3IyOworICAgIH0KKyAgICAKKyAgICBmaW49Zm9w
ZW4obWFya2VyX2Zsbm0sInIiKTsKKyAgICBpZiAoZmluPT1OVUxMKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBvcGVuICVzIixtYXJrZXJfZmxubSk7CisgICAgICAgIGZyZWUo
bWFya2VyX2Zsbm0pOworICAgICAgICBnb3RvIGVycm9yMjsKKyAgICB9CisgICAgCisgICAgZnJl
ZShtYXJrZXJfZmxubSk7CisgICAgCisgICAgYnplcm8oYnVmLHNpemVvZihidWYpKTsKKyAgICBm
Z2V0cyhidWYsc2l6ZW9mKGJ1ZiksZmluKTsKKyAgICAKKyAgICBmY2xvc2UoZmluKTsKKyAgICAK
KyAgICBpZiAoc3RyY21wKGJ1ZiwiVFNGX0ZTREIiKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9y
KFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICJCYWQgRlNEQiBkYXRh
YmFzZTogdGhlIG1hcmtlciBmaWxlIGNvbnRhaW5zICVzICIKKyAgICAgICAgICAgICAgICAgICAg
ICAiaW5zdGVhZCBvZiBUU0ZfRlNEQiIsCisgICAgICAgICAgICAgICAgICAgICAgYnVmKTsKKyAg
ICAgICAgZ290byBlcnJvcjI7CisgICAgfQorCisgICAgLyogbWFrZSBzdXJlIHRoYXQgaXQgZXhp
c3RzIGFuZCBpcyBhIGRpcmVjdG9yeSwgYW5kIGtlZXAgYSBoYW5kbGUgdG8gaXQKKyAgICAgICBq
dXN0IGZvciBnb29kIG1lYXN1cmUuICovCisgICAgCisgICAgcmVzdWx0LT51LmxvY2FsLmRpcmhh
bmRsZT1vcGVuZGlyKHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICBpZiAocmVzdWx0LT51
LmxvY2FsLmRpcmhhbmRsZT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3Qgb3BlbiBmc2RiIGRpcmVjdG9yeSAlcyIscmVzdWx0LT51LmxvY2FsLmRpcm5hbWUpOworICAg
ICAgICBnb3RvIGVycm9yMjsKKyAgICB9CisgICAgCisgICAgLyogaWYgd2UncmUgdHJ1bmNhdGlu
ZywgdGhlbiBkZWxldGUgYWxsIG9mIHRoZSBmaWxlcy4gKi8KKyAgICBpZiAodHJ1bmNhdGUpIHsK
KyAgICAgICAgc3RydWN0IGRpcmVudCAqZW50cnk7CisKKyNpZiBkZWZpbmVkKEhBVkVfUkVBRERJ
Ul9SKSAmJiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisgICAgICAgIHN0cnVjdCBkaXJlbnQgKmVu
dHJ5YnVmOworICAgICAgICBsb25nIGxpbWl0OworICAgICAgICBzaXplX3QgbGVuOworICAgICAg
ICAKKyAgICAgICAgbGltaXQ9cGF0aGNvbmYocmVzdWx0LT51LmxvY2FsLmRpcm5hbWUsX1BDX1BB
VEhfTUFYKTsKKyAgICAgICAgaWYgKGxpbWl0PDApIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCBnZXQgcGF0aGNvbmYgX1BDX1BBVEhfTUFYIGZvciAlcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICAgICAgICAg
IGdvdG8gZXJyb3IzOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsZW49dHNmX29mZnNl
dG9mKHN0cnVjdCBkaXJlbnQsZF9uYW1lKStsaW1pdCsxOworICAgICAgICAKKyAgICAgICAgZW50
cnlidWY9bWFsbG9jKGxlbik7CisgICAgICAgIGlmIChlbnRyeWJ1Zj09TlVMTCkgeworICAgICAg
ICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBzdHJ1Y3QgZGlyZW50IHdpdGgg
c2l6ZSAiIGZzeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKKyAgICAgICAgICAg
IGdvdG8gZXJyb3IzOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIGZvciAo
OzspIHsKKyAgICAgICAgICAgIGNoYXIgKmZsbm07CisgICAgICAgICAgICAKKyNpZiBkZWZpbmVk
KEhBVkVfUkVBRERJUl9SKSAmJiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisgICAgICAgICAgICBl
bnRyeT1OVUxMOworICAgICAgICAgICAgaWYgKHJlYWRkaXJfcihyZXN1bHQtPnUubG9jYWwuZGly
aGFuZGxlLGVudHJ5YnVmLCZlbnRyeSkhPTApIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vy
cm5vKCJDb3VsZCBub3QgcmVhZGRpcl9yIGluICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lKTsKKyAgICAgICAgICAgICAgICBmcmVlKGVu
dHJ5YnVmKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgICAgIH0KKyNl
bHNlCisgICAgICAgICAgICBlcnJubz0wOworICAgICAgICAgICAgZW50cnk9cmVhZGRpcihyZXN1
bHQtPnUubG9jYWwuZGlyaGFuZGxlKTsKKyAgICAgICAgICAgIGlmIChlbnRyeT09TlVMTCAmJiBl
cnJubyE9MCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCByZWFk
ZGlyIGluICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+dS5sb2Nh
bC5kaXJuYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZW50cnk9PU5VTEwpIHsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHN0cmNtcChlbnRyeS0+ZF9uYW1lLCIuIikgJiYKKyAgICAgICAgICAgICAgICBz
dHJjbXAoZW50cnktPmRfbmFtZSwiLi4iKSAmJgorICAgICAgICAgICAgICAgIHN0cmNtcChlbnRy
eS0+ZF9uYW1lLCJUU0ZfRlNEQiIpKSB7CisKKyAgICAgICAgICAgICAgICBmbG5tPXRzZl9hc3By
aW50ZigiJXMvJXMiLHJlc3VsdC0+dS5sb2NhbC5kaXJuYW1lLGVudHJ5LT5kX25hbWUpOworICAg
ICAgICAgICAgICAgIGlmIChmbG5tPT1OVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfYXNwcmludGYiKTsKKyNpZiBkZWZpbmVkKEhBVkVfUkVB
RERJUl9SKSAmJiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisgICAgICAgICAgICAgICAgICAgIGZy
ZWUoZW50cnlidWYpOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3IzOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
dW5saW5rKGZsbm0pPDApIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IHVubGluayAlcyIsZmxubSk7CisjaWYgZGVmaW5lZChIQVZFX1JFQURESVJfUikgJiYg
ZGVmaW5lZChIQVZFX1BBVEhDT05GKQorICAgICAgICAgICAgICAgICAgICBmcmVlKGVudHJ5YnVm
KTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBmcmVlKGZsbm0pOworICAgICAgICAgICAg
ICAgICAgICBnb3RvIGVycm9yMzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgZnJlZShmbG5tKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICAKKyNpZiBkZWZpbmVkKEhBVkVfUkVBRERJUl9SKSAmJiBkZWZpbmVkKEhBVkVfUEFU
SENPTkYpCisgICAgICAgIGZyZWUoZW50cnlidWYpOworI2VuZGlmCisgICAgfQorCisgICAgY29w
eV9wYXJhbXMocmVzdWx0LGxpbWl0cyxyZHJfYXR0cix3dHJfYXR0cik7CisgICAgCisgICAgcmVz
dWx0LT51LmxvY2FsLnVwZGF0ZT11cGRhdGU7CisgICAgcmVzdWx0LT51LmxvY2FsLnRydW5jYXRl
PXRydW5jYXRlOworICAgIAorICAgIHJlc3VsdC0+dS5sb2NhbC5jcmVhdGVfY250PSgoKGludDY0
X3QpdGltZShOVUxMKSk8PDMyKSsoKChpbnQ2NF90KWdldHBpZCgpKTw8NDgpOworICAgIAorICAg
IHRzZl9tdXRleF9pbml0KCZyZXN1bHQtPmxvY2spOworICAgIAorICAgIHJldHVybiByZXN1bHQ7
CisKK2Vycm9yMzoKKyAgICBjbG9zZWRpcihyZXN1bHQtPnUubG9jYWwuZGlyaGFuZGxlKTsKK2Vy
cm9yMjoKKyAgICBmcmVlKCh2b2lkKilyZXN1bHQtPnUubG9jYWwuZGlybmFtZSk7CitlcnJvcjE6
CisgICAgZnJlZShyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCit0c2ZfZnNkYl90ICp0
c2ZfZnNkYl9vcGVuX3JlbW90ZShjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl96aXBfcmRyX2F0dHJfdCAqcmRyX2F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfemlwX3d0cl9hdHRyX3QgKnd0cl9hdHRyKSB7CisjaWZkZWYgSEFWRV9CU0RT
T0NLUworICAgIHRzZl9mc2RiX3QgKnJlc3VsdDsKKyAgICAKKyAgICByZXN1bHQ9bWFsbG9jKHNp
emVvZih0c2ZfZnNkYl90KSk7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9mc2RiX3QiKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+a2luZD1UU0ZfRlNEQl9SRU1PVEU7Cisg
ICAgCisgICAgY29weV9wYXJhbXMocmVzdWx0LGxpbWl0cyxyZHJfYXR0cix3dHJfYXR0cik7Cisg
ICAgCisgICAgcmVzdWx0LT51LnJlbW90ZS5jb25uZWN0aW9uPWNyZWF0ZV9maXJzdF9jb25uZWN0
aW9uKHJlc3VsdCxob3N0LHBvcnQpOworICAgIGlmIChyZXN1bHQtPnUucmVtb3RlLmNvbm5lY3Rp
b249PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICB9CisgICAgCisgICAgdHNmX211dGV4X2luaXQoJnJlc3VsdC0+bG9jayk7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfU1VQ
UE9SVEVELAorICAgICAgICAgICAgICAgICAgIkJTRCBzb2NrZXRzIHN1cHBvcnQgd2FzIG5vdCBm
b3VuZCBvbiB5b3VyIHN5c3RlbSIpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKK3Zv
aWQgdHNmX2ZzZGJfY2xvc2UodHNmX2ZzZGJfdCAqZnNkYikgeworICAgIHRzZl9tdXRleF9kZXN0
cm95KCZmc2RiLT5sb2NrKTsKKyAgICAKKyAgICBzd2l0Y2ggKGZzZGItPmtpbmQpIHsKKyAgICBj
YXNlIFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICBjbG9zZWRpcihmc2RiLT51LmxvY2FsLmRpcmhh
bmRsZSk7CisgICAgICAgIGZyZWUoKHZvaWQqKWZzZGItPnUubG9jYWwuZGlybmFtZSk7CisgICAg
ICAgIGJyZWFrOworI2lmZGVmIEhBVkVfQlNEU09DS1MKKyAgICBjYXNlIFRTRl9GU0RCX1JFTU9U
RToKKyNpZmRlZiBIQVZFX0dFVEFERFJJTkZPCisgICAgICAgIGZyZWVhZGRyaW5mbyhmc2RiLT51
LnJlbW90ZS5yZXN1bHQpOworI2VuZGlmCisgICAgICAgIGlmIChmc2RiLT51LnJlbW90ZS5jb25u
ZWN0aW9uIT1OVUxMKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koZnNkYi0+dS5y
ZW1vdGUuY29ubmVjdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAg
ICBkZWZhdWx0OgorICAgICAgICB0c2ZfYWJvcnQoImJhZCBGU0RCIGtpbmQiKTsKKyAgICB9Cisg
ICAgZnJlZShmc2RiKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ndXRzX3B1dCh0c2ZfZnNk
Yl90ICpmc2RiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtl
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKnBhcnRmbG5tKSB7CisgICAgdHNmX3N0cmVhbV9maWxlX291
dHB1dF90ICpvdXQ7CisgICAgCisgICAgaWYgKGZzZGI9PU5VTEwgfHwga2V5PT1OVUxMKSB7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHRzZl9hc3NlcnQoZnNk
Yi0+a2luZD09VFNGX0ZTREJfTE9DQUwpOworICAgIAorICAgIGlmICghZnNkYi0+dS5sb2NhbC51
cGRhdGUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfQUxMT1dFRCwKKyAgICAg
ICAgICAgICAgICAgICAgICAiQ2Fubm90IHB1dCBpbnRvIEZTREIgYmVjYXVzZSB1cGRhdGUgZmxh
ZyB3YXMgbm90IHNldC4iKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAg
CisgICAgZm9yICg7OykgeworICAgICAgICB1aW50NjRfdCBteV9pZDsKKyAgICAgICAgCisgICAg
ICAgIHRzZl9tdXRleF9sb2NrKCZmc2RiLT5sb2NrKTsKKyAgICAgICAgbXlfaWQ9ZnNkYi0+dS5s
b2NhbC5jcmVhdGVfY250OworICAgICAgICBmc2RiLT51LmxvY2FsLmNyZWF0ZV9jbnQrPSh1aW50
NjRfdCkodWludHB0cl90KWZkOworICAgICAgICB0c2ZfbXV0ZXhfdW5sb2NrKCZmc2RiLT5sb2Nr
KTsKKyAgICAgICAgCisgICAgICAgICpwYXJ0ZmxubT10c2ZfYXNwcmludGYoIiVzL3BhcnQtIiBm
dWk2NCxmc2RiLT51LmxvY2FsLmRpcm5hbWUsbXlfaWQpOworICAgICAgICBpZiAoKnBhcnRmbG5t
PT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2FzcHJp
bnRmIGluIHRzZl9mc2RiX3B1dCIpOworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgKmZkPW9wZW4oKnBhcnRmbG5tLE9fQ1JFQVR8T19F
WENMfE9fV1JPTkxZfE9fVFJVTkMsMDY2Nik7CisgICAgICAgIGlmICgqZmQ8MCkgeworICAgICAg
ICAgICAgaWYgKGVycm5vPT1FRVhJU1QpIHsKKyAgICAgICAgICAgICAgICBmcmVlKCpwYXJ0Zmxu
bSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qgb3BlbiAlcyIsKnBhcnRmbG5tKTsKKyAgICAgICAg
ICAgIGZyZWUoKnBhcnRmbG5tKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICAvKiBvaywg
bm93IHdyaXRlIHRoZSBrZXkgYXMgdGhlIGZpcnN0IHJlY29yZCBvZiB0aGUgZmlsZS4gKi8KKyAg
ICBvdXQ9dHNmX3N0cmVhbV9maWxlX291dHB1dF9mZF9vcGVuKCpmZCxOVUxMLHRzZl9mYWxzZSww
KTsKKyAgICBpZiAob3V0PT1OVUxMKSB7CisgICAgICAgIGdvdG8gYWJvcnQ7CisgICAgfQorICAg
IAorICAgIGlmICghdHNmX3N0cmVhbV9maWxlX291dHB1dF93cml0ZShvdXQsa2V5KSkgeworICAg
ICAgICB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2Nsb3NlKG91dCk7CisgICAgICAgIGdvdG8gYWJv
cnQ7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3N0cmVhbV9maWxlX291dHB1dF9jbG9zZShv
dXQpKSB7CisgICAgICAgIGdvdG8gYWJvcnQ7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2Zf
dHJ1ZTsKK2Fib3J0OgorICAgIHRzZl9mc2RiX2d1dHNfYWJvcnQoZnNkYiwqcGFydGZsbm0pOwor
ICAgIGZyZWUoKnBhcnRmbG5tKTsKKyAgICBjbG9zZSgqZmQpOworICAgIHJldHVybiB0c2ZfZmFs
c2U7Cit9CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJfZ3V0c19jb21taXQodHNmX2ZzZGJfdCAqZnNk
YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcGFydGZsbm0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqa2V5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqZGF0YWZsbm0pIHsKKyAgICBjaGFyICpuYW1l
OworICAgIGNoYXIgKmZsbm07CisgICAgdWludDMyX3Qgc2hhMXN1bVs1XTsKKyAgICAKKyAgICBp
ZiAoZnNkYj09TlVMTCB8fCBwYXJ0ZmxubT09TlVMTCB8fCBrZXk9PU5VTEwpIHsKKyAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgdHNmX2Fzc2VydChmc2RiLT5raW5k
PT1UU0ZfRlNEQl9MT0NBTCk7CisgICAgCisgICAgaWYgKCFmc2RiLT51LmxvY2FsLnVwZGF0ZSkg
eworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9BTExPV0VELAorICAgICAgICAgICAg
ICAgICAgICAgICJDYW5ub3QgY29tbWl0IGludG8gRlNEQiBiZWNhdXNlIHVwZGF0ZSBmbGFnIHdh
cyBub3Qgc2V0LiIpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBpZiAoIXRzZl9idWZmZXJfY2FsY19zaGExKGtleSxzaGExc3VtKSkgeworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBuYW1lPXRzZl9zaGExX3N1bV90b19zdHIo
c2hhMXN1bSk7CisgICAgaWYgKG5hbWU9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgZmxubT10c2ZfYXNwcmludGYoIiVzL2RhdGEtJXMiLGZzZGIt
PnUubG9jYWwuZGlybmFtZSxuYW1lKTsKKyAgICBpZiAoZmxubT09TlVMTCkgeworICAgICAgICB0
c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYXNwcmludGYgaW4gdHNmX2ZzZGJfZ3V0c19jb21taXQi
KTsKKyAgICAgICAgZnJlZShuYW1lKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9
CisgICAgCisgICAgZnJlZShuYW1lKTsKKyAgICAKKyAgICBpZiAocmVuYW1lKHBhcnRmbG5tLGZs
bm0pPDApIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHJlbmFtZSAlcyB0byAl
cyIsCisgICAgICAgICAgICAgICAgICAgICAgcGFydGZsbm0sZmxubSk7CisgICAgICAgIGZyZWUo
ZmxubSk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChk
YXRhZmxubSE9TlVMTCkgeworICAgICAgICAqZGF0YWZsbm09ZmxubTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBmcmVlKGZsbm0pOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9
CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJfZ3V0c19hYm9ydCh0c2ZfZnNkYl90ICpmc2RiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcnRmbG5tKSB7CisgICAgaWYgKGZz
ZGI9PU5VTEwgfHwgcGFydGZsbm09PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgdHNmX2Fzc2VydChmc2RiLT5raW5kPT1UU0ZfRlNEQl9MT0NBTCk7
CisgICAgCisgICAgaWYgKCFmc2RiLT51LmxvY2FsLnVwZGF0ZSkgeworICAgICAgICB0c2Zfc2V0
X2Vycm9yKFRTRl9FX05PVF9BTExPV0VELAorICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qg
YWJvcnQgRlNEQiBmaWxlIGJlY2F1c2UgdXBkYXRlIGZsYWcgd2FzIG5vdCBzZXQuIik7CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHVubGluayhwYXJ0ZmxubSk7
CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9mc2RiX2d1
dHNfZ2V0KHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl9idWZmZXJfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqZGF0YWZsbm0pIHsKKyAgICB1aW50
MzJfdCBzaGExc3VtWzVdOworICAgIGNoYXIgKm5hbWU7CisgICAgY2hhciAqZmxubTsKKyAgICB0
c2Zfc2VyaWFsX2luX21hbl90ICppbl9tYW47CisgICAgdHNmX2J1Zl9yZHJfdCAqcmVhZGVyOwor
ICAgIHRzZl9idWZmZXJfdCAqcmVhZF9rZXk7CisgICAgdWludDMyX3QgbnVtX3JlbWFpbmluZzsK
KworICAgIGlmIChmc2RiPT1OVUxMIHx8IGtleT09TlVMTCkgeworICAgICAgICAvKiBwcm9wYWdh
dGUgZXJyb3IgKi8KKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
dHNmX2Fzc2VydChmc2RiLT5raW5kPT1UU0ZfRlNEQl9MT0NBTCk7CisgICAgCisgICAgaWYgKCF0
c2ZfYnVmZmVyX2NhbGNfc2hhMShrZXksc2hhMXN1bSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgCisgICAgbmFtZT10c2Zfc2hhMV9zdW1fdG9fc3RyKHNoYTFzdW0p
OworICAgIGlmIChuYW1lPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
fQorICAgIAorICAgIGZsbm09dHNmX2FzcHJpbnRmKCIlcy9kYXRhLSVzIixmc2RiLT51LmxvY2Fs
LmRpcm5hbWUsbmFtZSk7CisgICAgaWYgKGZsbm09PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9l
cnJubygiQ291bGQgbm90IGFzcHJpbnRmIGluIHRzZl9mc2RiX2dldCIpOworICAgICAgICBmcmVl
KG5hbWUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBmcmVl
KG5hbWUpOworICAgIAorICAgICpmZD1vcGVuKGZsbm0sT19SRE9OTFkpOworICAgIGlmICgqZmQ8
MCkgeworICAgICAgICBpZiAoZXJybm89PUVOT0VOVCkgeworICAgICAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9FTEVfTk9UX0ZPVU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhl
IHJlcXVlc3RlZCBrZXkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgRlNEQiBkYXRhYmFzZSIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG9wZW4g
JXMgZm9yIHJlYWRpbmciLGZsbm0pOworICAgICAgICB9CisgICAgICAgIGZyZWUoZmxubSk7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChkYXRhZmxubSE9
TlVMTCkgeworICAgICAgICAqZGF0YWZsbm09ZmxubTsKKyAgICB9IGVsc2UgeworICAgICAgICBm
cmVlKGZsbm0pOworICAgIH0KKyAgICAKKyAgICAvKiBub3cgdmVyaWZ5IHRoYXQgdGhlIGtleSBp
cyB3aGF0IGl0IGlzIHN1cHBvc2VkIHRvIGJlLiAgdXNlIGEgbG93ZXItbGV2ZWwKKyAgICAgICBh
cHByb2FjaCB0byByZWFkaW5nIHNvIHdlIGNhbiBjb250cm9sIGhvdyBtdWNoIGJ1ZmZlcmluZyBp
cyBkb25lLiAqLworICAgIHJlYWRlcj10c2ZfYnVmX3JlYWRlcl9jcmVhdGUoKmZkLDEyOCx0c2Zf
ZmFsc2UpOworICAgIGlmIChyZWFkZXI9PU5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOworICAg
IH0KKyAgICAKKyAgICBpbl9tYW49dHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKHRzZl9idWZfcmVh
ZGVyX3JlYWQscmVhZGVyLGZzZGItPmxpbWl0cyk7CisgICAgaWYgKGluX21hbj09TlVMTCkgewor
ICAgICAgICB0c2ZfYnVmX3JlYWRlcl9kZXN0cm95KHJlYWRlcik7CisgICAgICAgIGdvdG8gZmFp
bDsKKyAgICB9CisgICAgCisgICAgcmVhZF9rZXk9dHNmX3NlcmlhbF9pbl9tYW5fcmVhZChpbl9t
YW4pOworICAgIGlmIChyZWFkX2tleT09TlVMTCkgeworICAgICAgICB0c2Zfc2VyaWFsX2luX21h
bl9kZXN0cm95KGluX21hbik7CisgICAgICAgIHRzZl9idWZfcmVhZGVyX2Rlc3Ryb3kocmVhZGVy
KTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICAKKyAgICB0c2Zfc2VyaWFsX2luX21h
bl9kZXN0cm95KGluX21hbik7CisgICAgCisgICAgbnVtX3JlbWFpbmluZz10c2ZfYnVmX3JlYWRl
cl9nZXRfcmVtYWluaW5nKHJlYWRlcik7CisgICAgdHNmX2J1Zl9yZWFkZXJfZGVzdHJveShyZWFk
ZXIpOworICAgIAorICAgIGlmIChsc2VlaygqZmQsLSgob2ZmX3QpbnVtX3JlbWFpbmluZyksU0VF
S19DVVIpPDApIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHVuc2VlayBidWZm
ZXJlZCBkYXRhIik7CisgICAgICAgIHRzZl9idWZmZXJfZGVzdHJveShyZWFkX2tleSk7CisgICAg
ICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2ZfYnVmZmVyX2NvbXBhcmUo
a2V5LHJlYWRfa2V5KSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9S
LAorICAgICAgICAgICAgICAgICAgICAgICJLZXkgbWlzbWF0Y2ggb24gZW50cnkgaW4gRlNEQiBk
YXRhYmFzZSIpOworICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3kocmVhZF9rZXkpOworICAgICAg
ICBnb3RvIGZhaWw7CisgICAgfQorICAgIAorICAgIHRzZl9idWZmZXJfZGVzdHJveShyZWFkX2tl
eSk7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworCitmYWlsOgorICAgIGlmIChkYXRhZmxu
bSE9TlVMTCkgeworICAgICAgICBmcmVlKCpkYXRhZmxubSk7CisgICAgfQorICAgIGNsb3NlKCpm
ZCk7CisgICAgcmV0dXJuIHRzZl9mYWxzZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ndXRz
X3JtKHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1
ZmZlcl90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmRhdGFmbG5t
KSB7CisgICAgdWludDMyX3Qgc2hhMXN1bVs1XTsKKyAgICBjaGFyICpuYW1lOworICAgIGNoYXIg
KmZsbm07CisKKyAgICBpZiAoZnNkYj09TlVMTCB8fCBrZXk9PU5VTEwpIHsKKyAgICAgICAgLyog
cHJvcGFnYXRlIGVycm9yICovCisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIHRzZl9hc3NlcnQoZnNkYi0+a2luZD09VFNGX0ZTREJfTE9DQUwpOworICAgIAorICAg
IGlmICghZnNkYi0+dS5sb2NhbC51cGRhdGUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0Zf
RV9OT1RfQUxMT1dFRCwKKyAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHJtIGZyb20gRlNE
QiBiZWNhdXNlIHVwZGF0ZSBmbGFnIHdhcyBub3Qgc2V0LiIpOworICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoIXRzZl9idWZmZXJfY2FsY19zaGExKGtleSxz
aGExc3VtKSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBu
YW1lPXRzZl9zaGExX3N1bV90b19zdHIoc2hhMXN1bSk7CisgICAgaWYgKG5hbWU9PU5VTEwpIHsK
KyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgZmxubT10c2ZfYXNw
cmludGYoIiVzL2RhdGEtJXMiLGZzZGItPnUubG9jYWwuZGlybmFtZSxuYW1lKTsKKyAgICBpZiAo
ZmxubT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYXNwcmludGYg
aW4gdHNmX2ZzZGJfZ2V0Iik7CisgICAgICAgIGZyZWUobmFtZSk7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGZyZWUobmFtZSk7CisgICAgCisgICAgaWYgKHVu
bGluayhmbG5tKTwwKSB7CisgICAgICAgIGlmIChlcnJubz09RU5PRU5UKSB7CisgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0VMRV9OT1RfRk9VTkQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJUaGUgcmVxdWVzdGVkIGtleSB3YXMgbm90IGZvdW5kIGluIHRoZSBGU0RCIGRhdGFi
YXNlIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgdW5saW5rICVzIixmbG5tKTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKGZsbm0pOwor
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKworICAgIGlmIChkYXRhZmxubSE9TlVM
TCkgeworICAgICAgICAqZGF0YWZsbm09ZmxubTsKKyAgICB9IGVsc2UgeworICAgICAgICBmcmVl
KGZsbm0pOworICAgIH0KKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9mc2RiX291dF90
ICp0c2ZfZnNkYl9wdXQodHNmX2ZzZGJfdCAqZnNkYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHNmX2J1ZmZlcl90ICprZXkpIHsKKyAgICBpZiAoZnNkYj09TlVMTCB8fCBrZXk9PU5V
TEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoZnNk
Yi0+a2luZCkgeworICAgIGNhc2UgVFNGX0ZTREJfTE9DQUw6IHsKKyAgICAgICAgaW50IGZkOwor
ICAgICAgICBjaGFyICpmbG5tOworICAgICAgICB0c2ZfZnNkYl9vdXRfdCAqcmVzdWx0OworICAg
IAorICAgICAgICBpZiAoIXRzZl9mc2RiX2d1dHNfcHV0KGZzZGIsa2V5LCZmZCwmZmxubSkpIHsK
KyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgCisgICAgICAgIHJlc3Vs
dD1tYWxsb2Moc2l6ZW9mKHRzZl9mc2RiX291dF90KSk7CisgICAgICAgIGlmIChyZXN1bHQ9PU5V
TEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgaW4gdHNm
X2ZzZGJfcHV0Iik7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICB0c2ZfZnNk
Yl9ndXRzX2Fib3J0KGZzZGIsZmxubSk7CisgICAgICAgICAgICBmcmVlKGZsbm0pOworICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmVzdWx0LT5kYj1m
c2RiOworICAgICAgICByZXN1bHQtPnUubG9jYWwucGFydG5hbWU9ZmxubTsKKyAgICAKKyAgICAg
ICAgcmVzdWx0LT51LmxvY2FsLm91dD10c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2ZkX29wZW4oZmQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZmc2RiLT53dHJfYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3RydWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAocmVz
dWx0LT51LmxvY2FsLm91dD09TlVMTCkgeworICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAg
ICAgICAgdHNmX2ZzZGJfZ3V0c19hYm9ydChmc2RiLGZsbm0pOworICAgICAgICAgICAgZnJlZShm
bG5tKTsKKyAgICAgICAgICAgIGZyZWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICB9CisgICAgCisgICAgICAgIHJlc3VsdC0+dS5sb2NhbC5rZXk9dHNmX2J1ZmZl
cl9kdXAoa2V5KTsKKyAgICAgICAgaWYgKHJlc3VsdC0+dS5sb2NhbC5rZXk9PU5VTEwpIHsKKyAg
ICAgICAgICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfY2xvc2UocmVzdWx0LT51LmxvY2FsLm91
dCk7CisgICAgICAgICAgICB0c2ZfZnNkYl9ndXRzX2Fib3J0KGZzZGIsZmxubSk7CisgICAgICAg
ICAgICBmcmVlKGZsbm0pOworICAgICAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisjaWZkZWYgSEFWRV9CU0RTT0NLUworICAgIGNhc2UgVFNGX0ZTREJfUkVNT1RFOiB7Cisg
ICAgICAgIHRzZl9mc2RiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbjsKKyAgICAgICAgdHNmX2Zz
ZGJfY29tbWFuZF90IGNtZDsKKyAgICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqcnNwOworICAg
ICAgICB0c2ZfZnNkYl9vdXRfdCAqcmVzdWx0OworICAgICAgICAKKyAgICAgICAgY21kLnZhbHVl
PXRzZl9mc2RiX2NvbW1hbmRfX3B1dDsKKyAgICAgICAgdHNmX2Fzc2VydChrZXkhPU5VTEwpOwor
ICAgICAgICBjbWQudS5wdXQua2V5PWtleTsKKyAgICAgICAgCisgICAgICAgIHJzcD1maXJzdF9h
Y3Rpb24oZnNkYiwmY29ubmVjdGlvbiwmY21kKTsKKyAgICAgICAgaWYgKHJzcD09TlVMTCkgewor
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlm
IChyc3AtPnN0YXRlLnZhbHVlIT10c2ZfZnNkYl9zdGF0ZV9fcHV0IHx8CisgICAgICAgICAgICBy
c3AtPnBheWxvYWQudmFsdWUhPXRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19vaykgeworICAg
ICAgICAgICAgc2V0X2Vycm9yKHJzcCk7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3ko
Y29ubmVjdGlvbik7CisgICAgICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0c2ZfcmVnaW9u
X2ZyZWUocnNwKTsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9m
c2RiX291dF90KSk7CisgICAgICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAgICAgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgaW4gdHNmX2ZzZGJfcHV0Iik7CisgICAgICAg
ICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICAgICAgfQorICAgIAorICAgICAgICByZXN1bHQtPmRiPWZzZGI7CisgICAgICAg
IHJlc3VsdC0+dS5yZW1vdGUuY29ubmVjdGlvbj1jb25uZWN0aW9uOworICAgICAgICAKKyAgICAg
ICAgaWYgKGNvbm5lY3Rpb24tPmJ1Zj09TlVMTCkgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+
YnVmX3NpemU9VFNGX0RFRl9ORVRfQlVGX1NJWkU7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5i
dWZfY3Vyc29yPTA7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5idWY9bWFsbG9jKGNvbm5lY3Rp
b24tPmJ1Zl9zaXplKTsKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uLT5idWY9PU5VTEwpIHsK
KyAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAg
ICAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXN1bHQtPnUucmVtb3Rl
Lm91dF9tYW49CisgICAgICAgICAgICB0c2Zfc2VyaWFsX291dF9tYW5fY3JlYXRlKG5ldHdvcmtf
d3JpdGVyLCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0LT51LnJlbW90ZS5vdXRfbWFuPT1O
VUxMKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAg
ICAgICAgICBmcmVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisjZW5kaWYKKyAgICBk
ZWZhdWx0OiB0c2ZfYWJvcnQoImJhZCBGU0RCIGtpbmQiKTsKKyAgICB9Cit9CisKK3RzZl9mc2Ri
X2luX3QgKnRzZl9mc2RiX2dldCh0c2ZfZnNkYl90ICpmc2RiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRzZl9idWZmZXJfdCAqa2V5KSB7CisgICAgaWYgKGZzZGI9PU5VTEwgfHwga2V5
PT1OVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2gg
KGZzZGItPmtpbmQpIHsKKyAgICBjYXNlIFRTRl9GU0RCX0xPQ0FMOiB7CisgICAgICAgIGludCBm
ZDsKKyAgICAgICAgdHNmX2ZzZGJfaW5fdCAqcmVzdWx0OworICAgICAgICAKKyAgICAgICAgaWYg
KCF0c2ZfZnNkYl9ndXRzX2dldChmc2RiLGtleSwmZmQsTlVMTCkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBOVUxMOworICAgICAgICB9CisgICAgCisgICAgICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9m
KHRzZl9mc2RiX2luX3QpKTsKKyAgICAgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICAg
ICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBpbiB0c2ZfZnNkYl9nZXQiKTsKKyAg
ICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9
CisgICAgCisgICAgICAgIHJlc3VsdC0+ZGI9ZnNkYjsKKyAgICAKKyAgICAgICAgcmVzdWx0LT51
LmxvY2FsLmluPXRzZl9zdHJlYW1fZmlsZV9pbnB1dF9mZF9vcGVuKGZkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnNkYi0+bGltaXRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmZzZGItPnJkcl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3RydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKHJlc3VsdC0+
dS5sb2NhbC5pbj09TlVMTCkgeworICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAg
ZnJlZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAK
KyAgICAgICAgcmVzdWx0LT51LmxvY2FsLmtleT10c2ZfYnVmZmVyX2R1cChrZXkpOworICAgICAg
ICBpZiAocmVzdWx0LT51LmxvY2FsLmtleT09TlVMTCkgeworICAgICAgICAgICAgdHNmX3N0cmVh
bV9maWxlX2lucHV0X2Nsb3NlKHJlc3VsdC0+dS5sb2NhbC5pbik7CisgICAgICAgICAgICBmcmVl
KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIAorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAgY2Fz
ZSBUU0ZfRlNEQl9SRU1PVEU6IHsKKyAgICAgICAgdHNmX2ZzZGJfY29ubmVjdGlvbl90ICpjb25u
ZWN0aW9uOworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX3QgY21kOworICAgICAgICB0c2ZfZnNk
Yl9yZXNwb25zZV90ICpyc3A7CisgICAgICAgIHRzZl9mc2RiX2luX3QgKnJlc3VsdDsKKyAgICAg
ICAgCisgICAgICAgIGNtZC52YWx1ZT10c2ZfZnNkYl9jb21tYW5kX19nZXQ7CisgICAgICAgIGNt
ZC51LmdldC5rZXk9a2V5OworICAgICAgICAKKyAgICAgICAgcnNwPWZpcnN0X2FjdGlvbihmc2Ri
LCZjb25uZWN0aW9uLCZjbWQpOworICAgICAgICBpZiAocnNwPT1OVUxMKSB7CisgICAgICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHJzcC0+c3Rh
dGUudmFsdWUhPXRzZl9mc2RiX3N0YXRlX19nZXQgfHwKKyAgICAgICAgICAgIHJzcC0+cGF5bG9h
ZC52YWx1ZSE9dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX29rKSB7CisgICAgICAgICAgICBz
ZXRfZXJyb3IocnNwKTsKKyAgICAgICAgICAgIGlmIChyc3AtPnBheWxvYWQudmFsdWU9PXRzZl9m
c2RiX3Jlc3BvbnNlX19wYXlsb2FkX19ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uX3JldHVybihmc2RiLGNvbm5lY3Rpb24pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocnNw
KTsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdD1tYWxsb2Moc2l6ZW9mKHRzZl9mc2RiX2luX3Qp
KTsKKyAgICAgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJu
bygiQ291bGQgbm90IG1hbGxvYyBpbiB0c2ZfZnNkYl9nZXQiKTsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb25fZGVzdHJveShjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICB9CisgICAgCisgICAgICAgIHJlc3VsdC0+ZGI9ZnNkYjsKKyAgICAgICAgcmVzdWx0LT51
LnJlbW90ZS5jb25uZWN0aW9uPWNvbm5lY3Rpb247CisgICAgICAgIAorICAgICAgICByZXN1bHQt
PnUucmVtb3RlLnJzcD1OVUxMOworICAgICAgICByZXN1bHQtPnUucmVtb3RlLnJzcF9jdXJzb3I9
MDsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdC0+dS5yZW1vdGUuaW5fbWFuPQorICAgICAgICAg
ICAgdHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKG5ldHdvcmtfcmVhZGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmc2RiLT5saW1pdHMpOworICAgICAgICBpZiAocmVzdWx0LT51LnJlbW90
ZS5pbl9tYW49PU5VTEwpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb25fZGVzdHJveShjb25uZWN0
aW9uKTsKKyAgICAgICAgICAgIGZyZWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyNl
bmRpZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgiYmFkIEZTREIga2luZCIpOworICAgIH0KK30K
KwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ybSh0c2ZfZnNkYl90ICpmc2RiLAorICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtleSkgeworICAgIGlmIChmc2RiPT1OVUxMIHx8IGtl
eT09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBz
d2l0Y2ggKGZzZGItPmtpbmQpIHsKKyAgICBjYXNlIFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICBy
ZXR1cm4gdHNmX2ZzZGJfZ3V0c19ybShmc2RiLGtleSxOVUxMKTsKKyNpZmRlZiBIQVZFX0JTRFNP
Q0tTCisgICAgY2FzZSBUU0ZfRlNEQl9SRU1PVEU6IHsKKyAgICAgICAgdHNmX2ZzZGJfY29ubmVj
dGlvbl90ICpjb25uZWN0aW9uOworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX3QgY21kOworICAg
ICAgICB0c2ZfZnNkYl9yZXNwb25zZV90ICpyc3A7CisgICAgICAgIAorICAgICAgICBjbWQudmFs
dWU9dHNmX2ZzZGJfY29tbWFuZF9fcm07CisgICAgICAgIGNtZC51LnJtLmtleT1rZXk7CisgICAg
ICAgIAorICAgICAgICByc3A9Zmlyc3RfYWN0aW9uKGZzZGIsJmNvbm5lY3Rpb24sJmNtZCk7Cisg
ICAgICAgIGlmIChyc3A9PU5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChyc3AtPnN0YXRlLnZhbHVlIT10c2ZfZnNk
Yl9zdGF0ZV9fY2xlYXIgfHwKKyAgICAgICAgICAgIHJzcC0+cGF5bG9hZC52YWx1ZSE9dHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX29rKSB7CisgICAgICAgICAgICBzZXRfZXJyb3IocnNwKTsK
KyAgICAgICAgICAgIGlmIChyc3AtPnBheWxvYWQudmFsdWU9PXRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX19ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uX3JldHVybihm
c2RiLGNvbm5lY3Rpb24pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBj
b25uZWN0aW9uX2Rlc3Ryb3koY29ubmVjdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0c2ZfcmVnaW9uX2ZyZWUocnNwKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRzZl9yZWdpb25fZnJlZShyc3ApOworICAgICAg
ICBjb25uZWN0aW9uX3JldHVybihmc2RiLGNvbm5lY3Rpb24pOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHRzZl90cnVlOworICAgIH0KKyNlbmRpZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgi
YmFkIEZTREIga2luZCIpOworICAgIH0KK30KKwordm9pZCB0c2ZfZnNkYl9pbl9jbG9zZSh0c2Zf
ZnNkYl9pbl90ICppbikgeworICAgIHN3aXRjaCAoaW4tPmRiLT5raW5kKSB7CisgICAgY2FzZSBU
U0ZfRlNEQl9MT0NBTDoKKyAgICAgICAgdHNmX3N0cmVhbV9maWxlX2lucHV0X2Nsb3NlKGluLT51
LmxvY2FsLmluKTsKKyAgICAgICAgdHNmX2J1ZmZlcl9kZXN0cm95KGluLT51LmxvY2FsLmtleSk7
CisgICAgICAgIGJyZWFrOworI2lmZGVmIEhBVkVfQlNEU09DS1MKKyAgICBjYXNlIFRTRl9GU0RC
X1JFTU9URToKKyAgICAgICAgY29ubmVjdGlvbl9yZXR1cm4oaW4tPmRiLGluLT51LnJlbW90ZS5j
b25uZWN0aW9uKTsKKyAgICAgICAgaWYgKGluLT51LnJlbW90ZS5yc3AhPU5VTEwpIHsKKyAgICAg
ICAgICAgIHRzZl9yZWdpb25fZnJlZShpbi0+dS5yZW1vdGUucnNwKTsKKyAgICAgICAgfQorICAg
ICAgICB0c2Zfc2VyaWFsX2luX21hbl9kZXN0cm95KGluLT51LnJlbW90ZS5pbl9tYW4pOworICAg
ICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgiYmFkIEZTREIga2lu
ZCIpOworICAgIH0KKyAgICBmcmVlKGluKTsKK30KKwordHNmX2J1ZmZlcl90ICp0c2ZfZnNkYl9p
bl9yZWFkKHRzZl9mc2RiX2luX3QgKmluKSB7CisgICAgc3dpdGNoIChpbi0+ZGItPmtpbmQpIHsK
KyAgICBjYXNlIFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICByZXR1cm4gdHNmX3N0cmVhbV9maWxl
X2lucHV0X3JlYWQoaW4tPnUubG9jYWwuaW4pOworI2lmZGVmIEhBVkVfQlNEU09DS1MKKyAgICBj
YXNlIFRTRl9GU0RCX1JFTU9URToKKyAgICAgICAgcmV0dXJuIHRzZl9zZXJpYWxfaW5fbWFuX3Jl
YWQoaW4tPnUucmVtb3RlLmluX21hbik7CisjZW5kaWYKKyAgICBkZWZhdWx0OiB0c2ZfYWJvcnQo
ImJhZCBGU0RCIGtpbmQiKTsKKyAgICB9Cit9CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJfb3V0X2Nv
bW1pdCh0c2ZfZnNkYl9vdXRfdCAqb3V0KSB7CisgICAgaWYgKG91dD09TlVMTCkgeworICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKG91dC0+ZGItPmtp
bmQpIHsKKyAgICBjYXNlIFRTRl9GU0RCX0xPQ0FMOgorICAgICAgICBpZiAoIXRzZl9zdHJlYW1f
ZmlsZV9vdXRwdXRfY2xvc2Uob3V0LT51LmxvY2FsLm91dCkpIHsKKyAgICAgICAgICAgIGdvdG8g
YWJvcnRfbG9jYWw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghdHNmX2ZzZGJf
Z3V0c19jb21taXQob3V0LT5kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXQtPnUubG9jYWwucGFydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LT51LmxvY2FsLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KSkgeworICAgICAgICAgICAgZ290byBhYm9ydF9sb2NhbDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgZnJlZShvdXQtPnUubG9jYWwucGFydG5hbWUpOworICAgICAgICB0c2ZfYnVmZmVy
X2Rlc3Ryb3kob3V0LT51LmxvY2FsLmtleSk7CisgICAgICAgIGZyZWUob3V0KTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgCisgICAgYWJvcnRfbG9jYWw6Cisg
ICAgICAgIHRzZl9mc2RiX2d1dHNfYWJvcnQob3V0LT5kYixvdXQtPnUubG9jYWwucGFydG5hbWUp
OworICAgICAgICBmcmVlKG91dC0+dS5sb2NhbC5wYXJ0bmFtZSk7CisgICAgICAgIHRzZl9idWZm
ZXJfZGVzdHJveShvdXQtPnUubG9jYWwua2V5KTsKKyAgICAgICAgZnJlZShvdXQpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAg
Y2FzZSBUU0ZfRlNEQl9SRU1PVEU6IHsKKyAgICAgICAgdHNmX2ZzZGJfY29tbWFuZF90IGNtZDsK
KyAgICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqcnNwOworICAgICAgICAKKyAgICAgICAgLyog
dGhpcyBwYXJ0IGNvdWxkIGJlIG9wdGltaXplZCAtIHdlJ3JlIGN1cnJlbnRseSBzZW5kaW5nIHRo
ZSBjb21taXQgY29tbWFuZAorICAgICAgICAgKiBhcyBhIHNlcGFyYXRlIHBhY2tldC4gIGl0IHdv
dWxkIGJlIGJlc3QgdG8gdHJ5IHRvIHNlbmQgaXQgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICog
bGFzdCBwYWNrZXQgb2YgdGhlIGZsdXNoLiAqLworICAgICAgICAKKyAgICAgICAgaWYgKCFuZXR3
b3JrX3dyaXRlcl9mbHVzaChvdXQpKSB7CisgICAgICAgICAgICB0c2ZfZnNkYl9vdXRfYWJvcnQo
b3V0KTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGNtZC52YWx1ZT10c2ZfZnNkYl9jb21tYW5kX19vdXRfY29tbWl0OworICAgICAg
ICBpZiAoIXRzZl9mc2RiX2NvbW1hbmRfX3dyaXRlKG91dC0+dS5yZW1vdGUuY29ubmVjdGlvbi0+
b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbWQpIHx8CisgICAg
ICAgICAgICAhdHNmX3N0cmVhbV9maWxlX291dHB1dF9mbHVzaChvdXQtPnUucmVtb3RlLmNvbm5l
Y3Rpb24tPm91dCkpIHsKKyAgICAgICAgICAgIHRzZl9mc2RiX291dF9hYm9ydChvdXQpOworICAg
ICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cnNwPWNvbm5lY3Rpb25fcmVhZChvdXQtPnUucmVtb3RlLmNvbm5lY3Rpb24pOworICAgICAgICBp
ZiAocnNwPT1OVUxMKSB7CisgICAgICAgICAgICB0c2ZfZnNkYl9vdXRfYWJvcnQob3V0KTsKKyAg
ICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGlmIChyc3AtPnN0YXRlLnZhbHVlIT10c2ZfZnNkYl9zdGF0ZV9fY2xlYXIgfHwKKyAgICAgICAg
ICAgIHJzcC0+cGF5bG9hZC52YWx1ZSE9dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX29rKSB7
CisgICAgICAgICAgICBzZXRfZXJyb3IocnNwKTsKKyAgICAgICAgICAgIHRzZl9yZWdpb25fZnJl
ZShyc3ApOworICAgICAgICAgICAgdHNmX2ZzZGJfb3V0X2Fib3J0KG91dCk7CisgICAgICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0c2ZfcmVn
aW9uX2ZyZWUocnNwKTsKKyAgICAgICAgCisgICAgICAgIGNvbm5lY3Rpb25fcmV0dXJuKG91dC0+
ZGIsb3V0LT51LnJlbW90ZS5jb25uZWN0aW9uKTsKKyAgICAgICAgdHNmX3NlcmlhbF9vdXRfbWFu
X2Rlc3Ryb3kob3V0LT51LnJlbW90ZS5vdXRfbWFuKTsKKyAgICAgICAgZnJlZShvdXQpOworICAg
ICAgICByZXR1cm4gdHNmX3RydWU7CisgICAgfQorI2VuZGlmCisgICAgZGVmYXVsdDogdHNmX2Fi
b3J0KCJiYWQgRlNEQiBraW5kIik7CisgICAgfQorfQorCit2b2lkIHRzZl9mc2RiX291dF9hYm9y
dCh0c2ZfZnNkYl9vdXRfdCAqb3V0KSB7CisgICAgc3dpdGNoIChvdXQtPmRiLT5raW5kKSB7Cisg
ICAgY2FzZSBUU0ZfRlNEQl9MT0NBTDoKKyAgICAgICAgdHNmX3N0cmVhbV9maWxlX291dHB1dF9j
bG9zZShvdXQtPnUubG9jYWwub3V0KTsKKyAgICAgICAgdHNmX2ZzZGJfZ3V0c19hYm9ydChvdXQt
PmRiLG91dC0+dS5sb2NhbC5wYXJ0bmFtZSk7CisgICAgICAgIHRzZl9idWZmZXJfZGVzdHJveShv
dXQtPnUubG9jYWwua2V5KTsKKyAgICAgICAgZnJlZShvdXQtPnUubG9jYWwucGFydG5hbWUpOwor
ICAgICAgICBicmVhazsKKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAgY2FzZSBUU0ZfRlNEQl9S
RU1PVEU6CisgICAgICAgIGNvbm5lY3Rpb25fZGVzdHJveShvdXQtPnUucmVtb3RlLmNvbm5lY3Rp
b24pOworICAgICAgICB0c2Zfc2VyaWFsX291dF9tYW5fZGVzdHJveShvdXQtPnUucmVtb3RlLm91
dF9tYW4pOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6IHRzZl9hYm9ydCgi
YmFkIEZTREIga2luZCIpOworICAgIH0KKyAgICBmcmVlKG91dCk7Cit9CisKK3RzZl9ib29sX3Qg
dHNmX2ZzZGJfb3V0X3dyaXRlKHRzZl9mc2RiX291dF90ICpvdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZikgeworICAgIGlmIChvdXQ9PU5VTEwgfHwg
YnVmPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAg
IHN3aXRjaCAob3V0LT5kYi0+a2luZCkgeworICAgIGNhc2UgVFNGX0ZTREJfTE9DQUw6CisgICAg
ICAgIHJldHVybiB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3dyaXRlKG91dC0+dS5sb2NhbC5vdXQs
YnVmKTsKKyNpZmRlZiBIQVZFX0JTRFNPQ0tTCisgICAgY2FzZSBUU0ZfRlNEQl9SRU1PVEU6Cisg
ICAgICAgIHJldHVybiB0c2Zfc2VyaWFsX291dF9tYW5fd3JpdGUob3V0LT51LnJlbW90ZS5vdXRf
bWFuLGJ1Zik7CisjZW5kaWYKKyAgICBkZWZhdWx0OiB0c2ZfYWJvcnQoImJhZCBGU0RCIGtpbmQi
KTsKKyAgICB9Cit9CisKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9mc2RiX3Byb3RvY29sLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9K
ZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiX3Byb3RvY29sLmMJKG5vbmV4aXN0ZW50KQorKysg
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9mc2RiX3Byb3RvY29sLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MzUgQEAKKy8qIC4vbGlicmFyeS90c2ZfZnNkYl9w
cm90b2NvbC5jIC0tIGdlbmVyYXRlZCBieSB0c2ZfZGVmaW5lIGZyb20gLi9saWJyYXJ5L3RzZl9m
c2RiX3Byb3RvY29sLnQgKi8KKworI2luY2x1ZGUgInRzZl9mc2RiX3Byb3RvY29sLmgiCisjaW5j
bHVkZSAidHNmX2RlZmluZV9oZWxwZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworc3RhdGlj
IHRzZl90eXBlX3QgKnRzZl9mc2RiX2J1ZmZlcl9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKnRzZl9mc2RiX3N0YXRlX19idWlsZF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNm
X2ZzZGJfY29tbWFuZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
c3RhdGljIHRzZl90eXBlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19idWlsZF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdWludDhfX2FycmF5X19i
dWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVf
dCAqdHNmX2ZzZGJfY29tbWFuZF9fcHV0X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVf
Tk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRl
X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5
cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2J1
aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90
ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX193ZWxjb21lX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Citz
dGF0aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3Zl
cnNpb25fX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0
c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX19idWlsZF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX19idWlsZF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX2luX2RhdGFfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJfYnVmZmVyX19idWlsZF90eXBlKHZvaWQpIHsK
KyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9kdXAodWludDhfX2FycmF5X19nZXRf
dHlwZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9z
dGF0ZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5
cGVfY3JlYXRlX2Nob2ljZV93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsIHRzZl90cnVlLCB0
c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfc3RhdGVfdCwgdmFsdWUpLCAwLCBzaXplb2YodHNmX2ZzZGJf
c3RhdGVfdCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfY29t
bWVudF9hb2UoJnJlc3VsdCwgImNsZWFyIiwgVFNGX1RLX1ZPSUQsICIgdGhlIGNvbm5lY3Rpb24g
aXMgcmVhZHkgZm9yIHB1dC9nZXQgcmVxdWVzdHMuICIpOworICAgIHRzZl9jaG9pY2VfdHlwZV9h
cHBlbmRfcHJpbWl0aXZlX3dpdGhfY29tbWVudF9hb2UoJnJlc3VsdCwgInB1dCIsIFRTRl9US19W
T0lELCAiIHRoZSBjb25uZWN0aW9uIGlzIGluICdwdXQnIG1vZGUsIGFuZCBpcyBleHBlY3Rpbmcg
ZWl0aGVyXG4gJ291dF93cml0ZScsICdvdXRfY29tbWl0Jywgb3IgJ3Jlc2V0JyBjb21tYW5kcy4g
Iik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9jb21tZW50X2Fv
ZSgmcmVzdWx0LCAiZ2V0IiwgVFNGX1RLX1ZPSUQsICIgdGhlIGNvbm5lY3Rpb24gaXMgaW4gJ2dl
dCcgbW9kZSwgYW5kIGlzIHNlbmRpbmcgZGF0YVxuIHVudGlsIEVPRi4gIHRoZSBvbmx5IHZhbGlk
IGNvbW1hbmQgaXMgJ3Jlc2V0Jy4gIik7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1
bHQsICJ0c2ZfZnNkYl9zdGF0ZSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBl
X3QgKnRzZl9mc2RiX2NvbW1hbmRfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3Qg
KnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVz
dWx0LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKHRzZl9mc2RiX2NvbW1hbmRfdCwgdmFsdWUpLCB0
c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfY29tbWFuZF90LCB1KSwgc2l6ZW9mKHRzZl9mc2RiX2NvbW1h
bmRfdCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfY29tbWVu
dF9hb2UoJnJlc3VsdCwgInBpbmciLCBUU0ZfVEtfVk9JRCwgIiBuby1vcCBjb21tYW5kLCB3aGlj
aCBpbGxpY2l0cyBhbiBvayByZXNwb25zZS4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVu
ZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0LCAicHV0Iiwg
dHNmX2ZzZGJfY29tbWFuZF9fcHV0X19nZXRfdHlwZSwgIiBzdGFydCBwdXR0aW5nIGEgdmFsdWUg
YXQgdGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlblxuIGtleXN1bSwgd2hpY2ggbXVzdCBi
ZSBhbiBhcnJheSBvZiA1IHVpbnQzMidzLiAgdGhpcyBwbGFjZXNcbiB0aGUgY29ubmVjdGlvbiBp
bnRvIHRoZSAncHV0JyBzdGF0ZSwgYW5kIHRoZSBvbmx5IHZhbGlkXG4gY29tbWFuZHMgYXJlIG91
dF93cml0ZSwgb3V0X2NvbW1pdCwgb3IgcmVzZXQuXG4gYWNrbm93bGVkZ2VkIHdpdGggYW4gJ29r
JyByZXNwb25zZSBvciBhbiBlcnJvci4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9m
cm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0LCAib3V0X3dyaXRl
IiwgdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX19nZXRfdHlwZSwgIiB3cml0ZSBhIHNlcXVl
bmNlIG9mIGJ5dGVzIGludG8gdGhlIGZpbGUgb3BlbmVkIGJ5ICdwdXQnLlxuIG5vdGUgdGhhdCB0
aGVyZSBuZWVkIG5vdCBiZSBhIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhlXG4gYnVmZmVycyBm
cm9tIHRzZl9mc2RiX291dF93cml0ZSdzIHBlcnNwZWN0aXZlLCBhbmQgdGhlXG4gdW5pdHMgb2Yg
ZGF0YSBzZW50IGhlcmUuICBhY2tub3dsZWRnZWQgd2l0aCBhbiAnb2snIG9yXG4gYW4gZXJyb3Iu
ICIpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfY29tbWVudF9h
b2UoJnJlc3VsdCwgIm91dF9jb21taXQiLCBUU0ZfVEtfVk9JRCwgIiBjb21taXQgdGhlICdwdXQn
LiAgcmVnYXJkbGVzcyBvZiBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZVxuIGNvbm5lY3Rpb24gc3dp
dGNoZXMgdG8gJ2NsZWFyJyBzdGF0ZS4gIGFja25vd2xlZGdlZCB3aXRoXG4gYW4gJ29rJyBvciBh
biBlcnJvci4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2Fu
ZF9kdXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0LCAiZ2V0IiwgdHNmX2ZzZGJfY29tbWFuZF9f
Z2V0X19nZXRfdHlwZSwgIiBzdGFydCBnZXR0aW5nIHZhbHVlcyBhdCB0aGUga2V5IGlkZW50aWZp
ZWQgYnkgdGhlIGdpdmVuXG4ga2V5c3VtLCB3aGljaCBtdXN0IGJlIGFuIGFycmF5IG9mIDUgdWlu
dDMyJ3MuICB0aGlzXG4gcGxhY2VzIHRoZSBjb25uZWN0aW9uIGludG8gdGhlICdnZXQnIHN0YXRl
LCBhbmQgdGhlIG9ubHlcbiB2YWxpZCBjb21tYW5kIGJlY29tZXMgJ3Jlc2V0Jy4gIGFja25vbHdl
ZGdlZCB3aXRoXG4gZWl0aGVyICdvaycsICdub3RfZm91bmQnLCBvciBhbiBlcnJvci4gIGlmIGFj
a25vd2xlZGdlZFxuIHdpdGggJ29rJywgdGhlIHNlcnZlciB3aWxsIHN0YXJ0IHNlbmRpbmcgZGF0
YS4gIHRoZSBkYXRhXG4gc3RyZWFtIHdpbGwgZW5kIHdpdGggZWl0aGVyICdzeXNfZXJyb3InIG9y
ICdpbl9lb2YnLCBhdFxuIHdoaWNoIHBvaW50IHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgYmFjayBp
biAnY2xlYXInIHN0YXRlLiAiKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2Fs
bGJhY2tfYW5kX2R1cF93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJybSIsIHRzZl9mc2RiX2Nv
bW1hbmRfX3JtX19nZXRfdHlwZSwgIiByZW1vdmUgYW4gZW50cnkgZnJvbSB0aGUgZGF0YWJhc2Uu
IGFja25vd2xlZGdlZCB3aXRoIGVpdGhlclxuIGFuICdvaycsICdub3RfZm91bmQnLCBvciBhbiBl
cnJvci4gIik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9jb21t
ZW50X2FvZSgmcmVzdWx0LCAicmVzZXQiLCBUU0ZfVEtfVk9JRCwgIiByZXNldCB0aGUgY29ubmVj
dGlvbiBiYWNrIHRvICdjbGVhcicgc3RhdGUuICB0aGlzIGNhblxuIGJlIHVzZWQgdG8gZWl0aGVy
IGFib3J0IGEgJ3B1dCcgb3IgdG8gY2xvc2UgYSAnZ2V0J1xuIHByZW1hdHVyZWx5LiAgaWYgaXNz
dWVkIGluICdwdXQnIG9yICdjbGVhcicgc3RhdGVzLCBpdFxuIGlzIGFja25vd2xlZGdlZCBpbW1l
ZGlhdGVseSB3aXRoIGFuICdvaycuICBpZiBpc3N1ZWRcbiBpbiAnZ2V0JyBzdGF0ZSwgdGhlcmUg
bWF5IGJlIHNvbWUgbnVtYmVyIG9mICdpbl9kYXRhJ1xuIG9yICdpbl9lb2YnIHBhY2tldHMgcXVl
dWVkIHVwLCBhcyB3ZWxsIGFzIHBvc3NpYmx5IGFcbiAnc3lzX2Vycm9yJywgc28gYmUgc3VyZSB0
byBlaXRoZXIgaWdub3JlIG9yIHJlcG9ydCB0aG9zZVxuIGFuZCB3YWl0IGZvciB0aGUgJ29rJyBi
ZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyLiAgbm90ZVxuIHRoYXQgYSBzb21ld2hhdCBzYWZlciBt
ZXRob2Qgb2YgYWJvcnRpbmcgYSBwdXQgb3IgZ2V0XG4gaXMgdG8gc2ltcGx5IGRpc2Nvbm5lY3Qg
ZnJvbSB0aGUgc2VydmVyLiAgY3VycmVudGx5IHRoYXRcbiBpcyBmYXN0ZXIgZm9yIGFib3J0aW5n
IGEgZ2V0LCBidXQgc2xvd2VyIGZvciBhYm9ydGluZ1xuIGEgcHV0LiAiKTsKKyAgICB0c2ZfdHlw
ZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX2NvbW1hbmQiKTsKKyAgICB0c2ZfdHlw
ZV9zZXRfY29tbWVudF9hb2UoJnJlc3VsdCwgIiBjb21tYW5kIHNlbnQgZnJvbSBjbGllbnQgdG8g
c2VydmVyLiAgZWFjaCBjb21tYW5kIGlzIGFja25vd2xlZGdlZFxuIGJ5IGEgcmVzcG9uc2UsIHdo
aWNoIG1heSBiZSBqdXN0ICdvaycuICIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90
eXBlX3QgKnRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNm
X3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXpl
X2FuZF9kZXN0cnVjdG9yX2FvZShzaXplb2YodHNmX2ZzZGJfY29tbWFuZF9fcHV0X3QpLCAodm9p
ZCgqKSh2b2lkKikpdHNmX2ZzZGJfY29tbWFuZF9fcHV0X19kZXN0cnVjdCk7CisgICAgdHNmX3N0
cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAi
a2V5IiwgVFNGX1RLX0FOWSwgdHNmX29mZnNldG9mKHRzZl9mc2RiX2NvbW1hbmRfX3B1dF90LCBr
ZXkpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX2NvbW1h
bmRfX3B1dCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9mc2Ri
X2NvbW1hbmRfX291dF93cml0ZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAq
cmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0
cnVjdG9yX2FvZShzaXplb2YodHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX3QpLCAodm9pZCgq
KSh2b2lkKikpdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX19kZXN0cnVjdCk7CisgICAgdHNm
X3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFw
X2FvZSgmcmVzdWx0LCAiZGF0YSIsIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3R5cGUsIHRzZl9vZmZz
ZXRvZih0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfdCwgZGF0YSkpOworICAgIHRzZl90eXBl
X3NldF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlIik7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdWludDhfX2FycmF5X19idWlsZF90
eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJy
YXlfYW9lKHRzZl90eXBlX2NyZWF0ZV9hb2UoVFNGX1RLX1VJTlQ4KSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19idWlsZF90eXBl
KHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0
X3dpdGhfbmF0aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNpemVvZih0c2ZfZnNkYl9jb21t
YW5kX19nZXRfdCksICh2b2lkKCopKHZvaWQqKSl0c2ZfZnNkYl9jb21tYW5kX19nZXRfX2Rlc3Ry
dWN0KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2ZV9t
YXBfYW9lKCZyZXN1bHQsICJrZXkiLCBUU0ZfVEtfQU5ZLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJf
Y29tbWFuZF9fZ2V0X3QsIGtleSkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0
LCAidHNmX2ZzZGJfY29tbWFuZF9fZ2V0Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNm
X3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRz
Zl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6
ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKHRzZl9mc2RiX2NvbW1hbmRfX3JtX3QpLCAodm9p
ZCgqKSh2b2lkKikpdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2Rlc3RydWN0KTsKKyAgICB0c2Zfc3Ry
dWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJr
ZXkiLCBUU0ZfVEtfQU5ZLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfY29tbWFuZF9fcm1fdCwga2V5
KSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJ0c2ZfZnNkYl9jb21tYW5k
X19ybSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9mc2RiX3Jl
c3BvbnNlX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2Zf
dHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNp
emVvZih0c2ZfZnNkYl9yZXNwb25zZV90KSwgKHZvaWQoKikodm9pZCopKXRzZl9mc2RiX3Jlc3Bv
bnNlX19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNr
X2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX3dpdGhfY29tbWVudF9hb2UoJnJlc3VsdCwgInN0YXRl
IiwgdHNmX2ZzZGJfc3RhdGVfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9u
c2VfdCwgc3RhdGUpLCAiIGRlc2NyaWJlcyB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24gYXMg
YSByZXN1bHQgb2ZcbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kLiAi
KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRo
X25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJwYXlsb2FkIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfdCwgcGF5bG9h
ZCkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfcmVzcG9u
c2UiKTsKKyAgICB0c2ZfdHlwZV9zZXRfY29tbWVudF9hb2UoJnJlc3VsdCwgIiByZXNwb25zZSBz
ZW50IGZyb20gc2VydmVyIHRvIGNsaWVudCAiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fYnVpbGRfdHlwZSh2b2lkKSB7
CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2Nob2ljZV93aXRoX25h
dGl2ZV9tYXBfYW9lKCZyZXN1bHQsIHRzZl90cnVlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfdCwgdmFsdWUpLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfdCwgdSksIHNpemVvZih0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF90KSk7Cisg
ICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9jb21tZW50X2FvZSgmcmVz
dWx0LCAib2siLCBUU0ZfVEtfVk9JRCwgIiBnZW5lcmljIGFja25vd2xlZGdlbWVudCB0aGF0IHRo
ZSBwcmV2aW91cyBjb21tYW5kXG4gc3VjY2VlZGVkLiAiKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVf
YXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJ3
ZWxjb21lIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2dldF90eXBlLCAi
IHJlc3BvbnNlIHNlbnQgdG8gYSBuZXcgY29ubmVjdGlvbi4gIik7CisgICAgdHNmX2Nob2ljZV90
eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9jb21tZW50X2FvZSgmcmVzdWx0
LCAic3lzX2Vycm9yIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9fZ2V0
X3R5cGUsICIgYW4gZXJyb3IgaW5kaWNhdGluZyBhbiB1bmV4cGVjdGVkIHN5c3RlbSBmYXVsdC4g
Iik7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0
aF9jb21tZW50X2FvZSgmcmVzdWx0LCAicHJvdG9fZXJyb3IiLCB0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fcHJvdG9fZXJyb3JfX2dldF90eXBlLCAiIGFuIGVycm9yIGFyaXNpbmcgb3V0IG9m
IGluY29ycmVjdCB1c2Ugb2YgdGhlIHByb3RvY29sLiAiKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVf
YXBwZW5kX3ByaW1pdGl2ZV93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJub3RfZm91bmQiLCBU
U0ZfVEtfVk9JRCwgIiBpbmRpY2F0ZXMgdGhhdCB0aGUgZ2l2ZW4ga2V5IHdhcyBub3QgZm91bmQg
aW4gdGhlXG4gZGF0YWJhc2UuICIpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9j
YWxsYmFja19hbmRfZHVwX3dpdGhfY29tbWVudF9hb2UoJnJlc3VsdCwgImluX2RhdGEiLCB0c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZ2V0X3R5cGUsICIgYSBkYXRhIHBhY2tl
dCBpbiByZXNwb25zZSB0byBhICdnZXQnIHJlcXVlc3QuICB0aGVzZSBidWZmZXJzXG4gbWF5IG5v
dCBjb3JyZXNwb25kIHRvIHRoZSBidWZmZXJzIHJldHVybmVkIGZyb21cbiB0c2ZfZnNkYl9pbl9y
ZWFkKCksIGJ1dCBtYXkgYmUgYXQgYW55IGdyYW51bGFyaXR5LiAiKTsKKyAgICB0c2ZfY2hvaWNl
X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJpbl9lb2Yi
LCBUU0ZfVEtfVk9JRCwgIiBlbmQtb2YtZmlsZSBvbiBhICdnZXQnIHJlcXVlc3Q7IGluZGljYXRl
cyB0aGF0IGFsbCBhdmFpbGFibGVcbiBkYXRhIGhhcyBiZWVuIHNlbnQuICIpOworICAgIHRzZl90
eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWQiKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fd2VsY29tZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVz
dWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVj
dG9yX2FvZShzaXplb2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfdCksICh2
b2lkKCopKHZvaWQqKSl0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fZGVzdHJ1
Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21h
cF93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQsICJuYW1lIiwgVFNGX1RLX1NUUklORywgdHNmX29m
ZnNldG9mKHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX3QsIG5hbWUpLCAiIHRo
ZSBuYW1lIG9mIHRoZSBzZXJ2ZXIgc29mdHdhcmUuICIpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9h
cHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRf
YW9lKCZyZXN1bHQsICJ2ZXJzaW9uIiwgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNv
bWVfX3ZlcnNpb25fX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3dlbGNvbWVfdCwgdmVyc2lvbiksICIgdGhlIHZlcnNpb24gb2YgdGhlIHNlcnZlciBz
b2Z0d2FyZTsgdGhpcyBpcyB1c3VhbGx5XG4gdGhlIFRTRiB2ZXJzaW9uLiAiKTsKKyAgICB0c2Zf
dHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193
ZWxjb21lIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX2J1aWxkX3R5cGUodm9pZCkgewor
ICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRp
dmVfc2l6ZV9hb2Uoc2l6ZW9mKHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192
ZXJzaW9uX3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25h
dGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJtYWpvciIsIFRTRl9US19JTlQzMiwgdHNmX29mZnNldG9m
KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9uX3QsIG1ham9yKSk7
CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2Fv
ZSgmcmVzdWx0LCAibWlub3IiLCBUU0ZfVEtfSU5UMzIsIHRzZl9vZmZzZXRvZih0c2ZfZnNkYl9y
ZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl90LCBtaW5vcikpOworICAgIHRzZl9z
dHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwg
InBhdGNoIiwgVFNGX1RLX0lOVDMyLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fdCwgcGF0Y2gpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFt
ZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJz
aW9uIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5
cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2Fu
ZF9kZXN0cnVjdG9yX2FvZShzaXplb2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19l
cnJvcl90KSwgKHZvaWQoKikodm9pZCopKXRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNf
ZXJyb3JfX2Rlc3RydWN0KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93
aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJtc2ciLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zm
c2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl90LCBtc2cpKTsKKyAg
ICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgInRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19zeXNfZXJyb3IiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX2J1aWxkX3R5cGUodm9pZCkg
eworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9u
YXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKHRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX19wcm90b19lcnJvcl90KSwgKHZvaWQoKikodm9pZCopKXRzZl9mc2RiX3Jlc3BvbnNl
X19wYXlsb2FkX19wcm90b19lcnJvcl9fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9h
cHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF93aXRoX2NvbW1lbnRfYW9lKCZyZXN1bHQs
ICJtc2ciLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3Byb3RvX2Vycm9yX3QsIG1zZyksICIgYSBzZXJ2ZXItZ2VuZXJhdGVkIG1lc3NhZ2Ug
ZGVzY3JpYmluZyB3aGF0IHdlbnQgd3JvbmcgIik7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9l
KCZyZXN1bHQsICJ0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3IiKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9faW5fZGF0YV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0
ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9y
X2FvZShzaXplb2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfdCksICh2b2lk
KCopKHZvaWQqKSl0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZGVzdHJ1Y3Qp
OworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhf
bmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRhdGEiLCB0c2ZfZnNkYl9idWZmZXJfX2dldF90eXBl
LCB0c2Zfb2Zmc2V0b2YodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfdCwgZGF0
YSkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAidHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX2luX2RhdGEiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
dHNmX3R5cGVfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX2J1ZmZlcl9fdHlwZSA9IE5VTEw7CitzdGF0
aWMgdHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgdHNmX2ZzZGJfYnVmZmVyX19nZW5ydHIgPSBOVUxM
Oworc3RhdGljIHRzZl9wYXJzZXJfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX2J1ZmZlcl9fcGFyc2Vy
ID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCB0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7Citz
dGF0aWMgdm9pZCB0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHRz
Zl9mc2RiX2J1ZmZlcl9fdHlwZSA9IHRzZl9mc2RiX2J1ZmZlcl9fYnVpbGRfdHlwZSgpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICp0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiB0c2ZfZnNkYl9idWZmZXJfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgor
dHNmX3R5cGVfdCAqdHNmX2ZzZGJfYnVmZmVyX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJnRzZl9mc2RiX2J1ZmZlcl9fdHlwZSwgdHNmX2ZzZGJfYnVmZmVyX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9idWZmZXJfX3R5
cGVfX29jLCB0c2ZfZnNkYl9idWZmZXJfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2Zf
ZnNkYl9idWZmZXJfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BP
SU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9idWZmZXJfX2dlbnJ0cl9fb2Mg
PSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRy
X19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2ZfZnNkYl9idWZmZXJfX2dlbnJ0ciA9IHRzZl9nZW5l
cmF0b3JfY3JlYXRlKHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKnRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBy
ZXR1cm4gdHNmX2dlbmVyYXRvcl9jcmVhdGUodHNmX2ZzZGJfYnVmZmVyX19nZXRfdHlwZSgpKTsK
K30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICp0c2ZfZnNkYl9idWZmZXJfX2dldF9nZW5lcmF0b3Io
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dl
bnJ0cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRy
LCB0c2ZfZnNkYl9idWZmZXJfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRf
b25jZSgmdHNmX2ZzZGJfYnVmZmVyX19nZW5ydHJfX29jLCB0c2ZfZnNkYl9idWZmZXJfX2dlbnJ0
cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIHRzZl9mc2RiX2J1ZmZlcl9fZ2VucnRyOworI2VuZGlm
Cit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNl
X3QgdHNmX2ZzZGJfYnVmZmVyX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0
aWMgdm9pZCB0c2ZfZnNkYl9idWZmZXJfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNm
X2ZzZGJfYnVmZmVyX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9idWZmZXJf
X2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICp0c2ZfZnNkYl9idWZmZXJfX3Bh
cnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9wYXJzZXJfY3JlYXRlKHRzZl9m
c2RiX2J1ZmZlcl9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqdHNmX2Zz
ZGJfYnVmZmVyX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZ0
c2ZfZnNkYl9idWZmZXJfX3BhcnNlciwgdHNmX2ZzZGJfYnVmZmVyX19wYXJzZXJfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2J1ZmZlcl9fcGFyc2VyX19vYywg
dHNmX2ZzZGJfYnVmZmVyX19wYXJzZXJfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9i
dWZmZXJfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9idWZmZXJfX2Rlc3RydWN0
KHRzZl9mc2RiX2J1ZmZlcl90ICpkYXRhKSB7CisgICAgdWludDhfX2FycmF5X19kZXN0cnVjdChk
YXRhKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9idWZmZXJfX3dyaXRlKHRzZl9zdHJlYW1f
ZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNkYl9idWZmZXJfdCAqZGF0YSkgeworICAgIHJldHVy
biB0c2ZfdHlwZWRfZGF0YV93cml0ZShvdXQsIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X2dlbmVyYXRv
cigpLCBkYXRhKTsKK30KKwordHNmX2ZzZGJfYnVmZmVyX3QgKnRzZl9mc2RiX2J1ZmZlcl9fcmVh
ZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2Rh
dGFfcmVhZChpbiwgdHNmX2ZzZGJfYnVmZmVyX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9v
bF90IHRzZl9mc2RiX2J1ZmZlcl9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICpp
biwgdHNmX2ZzZGJfYnVmZmVyX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV9yZWFkX2ludG8oaW4sIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOwor
fQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX3N0YXRlX190eXBlID0g
TlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9zdGF0ZV9fZ2Vu
cnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9zdGF0
ZV9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9zdGF0ZV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0Vf
SU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3N0YXRlX190eXBlX19idWlsZGVyKHZvaWQpIHsK
KyAgICB0c2ZfZnNkYl9zdGF0ZV9fdHlwZSA9IHRzZl9mc2RiX3N0YXRlX19idWlsZF90eXBlKCk7
Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3N0YXRlX190eXBlX19idWlsZGVyKHZv
aWQpIHsKKyAgICByZXR1cm4gdHNmX2ZzZGJfc3RhdGVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRp
ZgordHNmX3R5cGVfdCAqdHNmX2ZzZGJfc3RhdGVfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3Bv
aW50ZXIoKHZvaWQqKikmdHNmX2ZzZGJfc3RhdGVfX3R5cGUsIHRzZl9mc2RiX3N0YXRlX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9zdGF0ZV9fdHlw
ZV9fb2MsIHRzZl9mc2RiX3N0YXRlX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2Zz
ZGJfc3RhdGVfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9zdGF0ZV9fZ2VucnRyX19vYyA9IFBU
SFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfc3RhdGVfX2dlbnJ0cl9fYnVp
bGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJfc3RhdGVfX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3Jf
Y3JlYXRlKHRzZl9mc2RiX3N0YXRlX19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9p
ZCAqdHNmX2ZzZGJfc3RhdGVfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRz
Zl9nZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX3N0YXRlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRp
ZgordHNmX2dlbnJ0cl90ICp0c2ZfZnNkYl9zdGF0ZV9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7Cisj
aWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRz
Zl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdHNmX2ZzZGJfc3RhdGVfX2dlbnJ0ciwgdHNmX2ZzZGJf
c3RhdGVfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmdHNmX2Zz
ZGJfc3RhdGVfX2dlbnJ0cl9fb2MsIHRzZl9mc2RiX3N0YXRlX19nZW5ydHJfX2J1aWxkZXIpOwor
ICAgIHJldHVybiB0c2ZfZnNkYl9zdGF0ZV9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgdHNmX2ZzZGJfc3Rh
dGVfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2Ri
X3N0YXRlX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2RiX3N0YXRlX19wYXJz
ZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5cGUoKSk7Cit9Cisj
ZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3N0YXRlX19wYXJzZXJfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5cGUo
KSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqdHNmX2ZzZGJfc3RhdGVfX2dldF9wYXJzZXIo
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3Bh
cnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX3N0YXRlX19wYXJzZXIs
IHRzZl9mc2RiX3N0YXRlX19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29u
Y2UoJnRzZl9mc2RiX3N0YXRlX19wYXJzZXJfX29jLCB0c2ZfZnNkYl9zdGF0ZV9fcGFyc2VyX19i
dWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfc3RhdGVfX3BhcnNlcjsKKyNlbmRpZgorfQor
Cit0c2ZfYm9vbF90IHRzZl9mc2RiX3N0YXRlX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0
X3QgKm91dCwgdHNmX2ZzZGJfc3RhdGVfdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRf
ZGF0YV93cml0ZShvdXQsIHRzZl9mc2RiX3N0YXRlX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOwor
fQorCit0c2ZfZnNkYl9zdGF0ZV90ICp0c2ZfZnNkYl9zdGF0ZV9fcmVhZCh0c2Zfc3RyZWFtX2Zp
bGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgdHNm
X2ZzZGJfc3RhdGVfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2ZzZGJfc3Rh
dGVfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIHRzZl9mc2RiX3N0YXRl
X3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkX2ludG8oaW4sIHRz
Zl9mc2RiX3N0YXRlX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlw
ZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfY29tbWFuZF9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNm
X2dlbnJ0cl90ICogdm9sYXRpbGUgdHNmX2ZzZGJfY29tbWFuZF9fZ2VucnRyID0gTlVMTDsKK3N0
YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXIgPSBO
VUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25j
ZV90IHRzZl9mc2RiX2NvbW1hbmRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0
aWMgdm9pZCB0c2ZfZnNkYl9jb21tYW5kX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2Zf
ZnNkYl9jb21tYW5kX190eXBlID0gdHNmX2ZzZGJfY29tbWFuZF9fYnVpbGRfdHlwZSgpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICp0c2ZfZnNkYl9jb21tYW5kX190eXBlX19idWlsZGVyKHZvaWQp
IHsKKyAgICByZXR1cm4gdHNmX2ZzZGJfY29tbWFuZF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlm
Cit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9jb21tYW5kX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX2NvbW1hbmRfX3R5cGUsIHRzZl9mc2RiX2NvbW1hbmRf
X3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1h
bmRfX3R5cGVfX29jLCB0c2ZfZnNkYl9jb21tYW5kX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1
cm4gdHNmX2ZzZGJfY29tbWFuZF9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZF
X0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX2NvbW1hbmRfX2dl
bnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2NvbW1h
bmRfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJfY29tbWFuZF9fZ2VucnRy
ID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUodHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3R5cGUoKSk7Cit9
CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX2NvbW1hbmRfX2dlbnJ0cl9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX2NvbW1hbmRf
X2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKnRzZl9mc2RiX2NvbW1hbmRf
X2dldF9nZW5lcmF0b3Iodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAg
IHJldHVybiAodHNmX2dlbnJ0cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2Ri
X2NvbW1hbmRfX2dlbnJ0ciwgdHNmX2ZzZGJfY29tbWFuZF9fZ2VucnRyX19idWlsZGVyKTsKKyNl
bHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9jb21tYW5kX19nZW5ydHJfX29jLCB0c2Zf
ZnNkYl9jb21tYW5kX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9jb21t
YW5kX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXJfX29jID0gUFRI
UkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCB0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXJfX2J1
aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfX3BhcnNlciA9IHRzZl9wYXJzZXJf
Y3JlYXRlKHRzZl9mc2RiX2NvbW1hbmRfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2
b2lkICp0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVy
biB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9jb21tYW5kX19nZXRfdHlwZSgpKTsKK30KKyNl
bmRpZgordHNmX3BhcnNlcl90ICp0c2ZfZnNkYl9jb21tYW5kX19nZXRfcGFyc2VyKHZvaWQpIHsK
KyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCop
dHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZ0c2ZfZnNkYl9jb21tYW5kX19wYXJzZXIsIHRzZl9m
c2RiX2NvbW1hbmRfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgm
dHNmX2ZzZGJfY29tbWFuZF9fcGFyc2VyX19vYywgdHNmX2ZzZGJfY29tbWFuZF9fcGFyc2VyX19i
dWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfY29tbWFuZF9fcGFyc2VyOworI2VuZGlmCit9
Cit2b2lkIHRzZl9mc2RiX2NvbW1hbmRfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRfdCAqZGF0
YSkgeworICAgIHN3aXRjaCAoZGF0YS0+dmFsdWUpIHsKKyAgICBjYXNlIDE6CisgICAgICAgIHRz
Zl9mc2RiX2NvbW1hbmRfX3B1dF9fZGVzdHJ1Y3QoJmRhdGEtPnUucHV0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAyOgorICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2Rl
c3RydWN0KCZkYXRhLT51Lm91dF93cml0ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoK
KyAgICAgICAgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19kZXN0cnVjdCgmZGF0YS0+dS5nZXQpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDU6CisgICAgICAgIHRzZl9mc2RiX2NvbW1hbmRfX3Jt
X19kZXN0cnVjdCgmZGF0YS0+dS5ybSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9jb21tYW5kX193
cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgdHNmX2ZzZGJfY29tbWFuZF90ICpk
YXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgdHNmX2ZzZGJfY29t
bWFuZF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKwordHNmX2ZzZGJfY29tbWFuZF90ICp0
c2ZfZnNkYl9jb21tYW5kX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAg
IHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfcGFy
c2VyKCkpOworfQorCit0c2ZfYm9vbF90IHRzZl9mc2RiX2NvbW1hbmRfX3JlYWRfaW50byh0c2Zf
c3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIHRzZl9mc2RiX2NvbW1hbmRfdCAqcmVzdWx0KSB7Cisg
ICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgdHNmX2ZzZGJfY29tbWFuZF9f
Z2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxl
IHRzZl9mc2RiX3Jlc3BvbnNlX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2
b2xhdGlsZSB0c2ZfZnNkYl9yZXNwb25zZV9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFy
c2VyX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9yZXNwb25zZV9fcGFyc2VyID0gTlVMTDsKKworI2lm
bmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNk
Yl9yZXNwb25zZV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRz
Zl9mc2RiX3Jlc3BvbnNlX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2ZfZnNkYl9yZXNw
b25zZV9fdHlwZSA9IHRzZl9mc2RiX3Jlc3BvbnNlX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQor
c3RhdGljIHZvaWQgKnRzZl9mc2RiX3Jlc3BvbnNlX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAg
ICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNm
X3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50
ZXIoKHZvaWQqKikmdHNmX2ZzZGJfcmVzcG9uc2VfX3R5cGUsIHRzZl9mc2RiX3Jlc3BvbnNlX190
eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9yZXNwb25z
ZV9fdHlwZV9fb2MsIHRzZl9mc2RiX3Jlc3BvbnNlX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1
cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9yZXNwb25zZV9f
Z2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfcmVz
cG9uc2VfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJfcmVzcG9uc2VfX2dl
bnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfdHlwZSgp
KTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0cl9fYnVp
bGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKHRzZl9mc2RiX3Jl
c3BvbnNlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICp0c2ZfZnNkYl9y
ZXNwb25zZV9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lO
VEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikm
dHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0ciwgdHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0cl9fYnVp
bGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmdHNmX2ZzZGJfcmVzcG9uc2VfX2dlbnJ0
cl9fb2MsIHRzZl9mc2RiX3Jlc3BvbnNlX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiB0
c2ZfZnNkYl9yZXNwb25zZV9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVf
SU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
cnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3Jlc3Bv
bnNlX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXJz
ZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9yZXNwb25zZV9fZ2V0X3R5cGUoKSk7Cit9
CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZXJfX2J1aWxkZXIo
dm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfZnNkYl9yZXNwb25zZV9f
Z2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqdHNmX2ZzZGJfcmVzcG9uc2Vf
X2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJl
dHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX3Jl
c3BvbnNlX19wYXJzZXIsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZXJfX2J1aWxkZXIpOworI2Vs
c2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZXJfX29jLCB0c2Zf
ZnNkYl9yZXNwb25zZV9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVz
cG9uc2VfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fZGVzdHJ1
Y3QodHNmX2ZzZGJfcmVzcG9uc2VfdCAqZGF0YSkgeworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX19kZXN0cnVjdCgmZGF0YS0+cGF5bG9hZCk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2Zz
ZGJfcmVzcG9uc2VfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNk
Yl9yZXNwb25zZV90ICpkYXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91
dCwgdHNmX2ZzZGJfcmVzcG9uc2VfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK3RzZl9m
c2RiX3Jlc3BvbnNlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9p
bnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCB0c2ZfZnNk
Yl9yZXNwb25zZV9fZ2V0X3BhcnNlcigpKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9yZXNw
b25zZV9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwgdHNmX2ZzZGJfcmVz
cG9uc2VfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhp
biwgdHNmX2ZzZGJfcmVzcG9uc2VfX2dldF9wYXJzZXIoKSwgcmVzdWx0KTsKK30KKworc3RhdGlj
IHRzZl90eXBlX3QgKiB2b2xhdGlsZSB1aW50OF9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZu
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IHVpbnQ4X19h
cnJheV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHVpbnQ4X19h
cnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgdWludDhfX2FycmF5X190eXBlID0gdWlu
dDhfX2FycmF5X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKnVpbnQ4X19h
cnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHVpbnQ4X19hcnJheV9fYnVp
bGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp1aW50OF9fYXJyYXlfX2dldF90eXBl
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90
eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdWludDhfX2FycmF5X190eXBlLCB1aW50
OF9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnVpbnQ4
X19hcnJheV9fdHlwZV9fb2MsIHVpbnQ4X19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0
dXJuIHVpbnQ4X19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB1aW50OF9fYXJyYXlfX2Rl
c3RydWN0KHVpbnQ4X19hcnJheV90ICpkYXRhKSB7CisgICAgZnJlZShkYXRhLT5kYXRhKTsKK30K
Kworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9jb21tYW5kX19wdXRfX3R5
cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJl
YWRfb25jZV90IHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0Vf
SU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X190eXBlID0gdHNmX2ZzZGJfY29tbWFu
ZF9fcHV0X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX2Nv
bW1hbmRfX3B1dF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9mc2RiX2Nv
bW1hbmRfX3B1dF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNk
Yl9jb21tYW5kX19wdXRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BP
SU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikm
dHNmX2ZzZGJfY29tbWFuZF9fcHV0X190eXBlLCB0c2ZfZnNkYl9jb21tYW5kX19wdXRfX3R5cGVf
X2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1hbmRfX3B1
dF9fdHlwZV9fb2MsIHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZV9fYnVpbGRlcik7CisgICAg
cmV0dXJuIHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2Zf
ZnNkYl9jb21tYW5kX19wdXRfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRfX3B1dF90ICpkYXRh
KSB7CisgICAgdHNmX2J1ZmZlcl9kZXN0cm95KComZGF0YS0+a2V5KTsKK30KKworc3RhdGljIHRz
Zl90eXBlX3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX3R5cGUgPSBO
VUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25j
ZV90IHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0Vf
SU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fYnVp
bGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX190eXBlID0gdHNm
X2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKnRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fYnVpbGRfdHlwZSgpOwor
fQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2dldF90
eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRz
Zl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdHNmX2ZzZGJfY29tbWFuZF9fb3V0
X3dyaXRlX190eXBlLCB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX3R5cGVfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9f
dHlwZV9fb2MsIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZV9fYnVpbGRlcik7Cisg
ICAgcmV0dXJuIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9fdHlwZTsKKyNlbmRpZgorfQor
dm9pZCB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1h
bmRfX291dF93cml0ZV90ICpkYXRhKSB7CisgICAgdHNmX2ZzZGJfYnVmZmVyX19kZXN0cnVjdCgm
ZGF0YS0+ZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJf
Y29tbWFuZF9fZ2V0X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGVfX29j
ID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCB0c2ZfZnNkYl9jb21tYW5kX19nZXRf
X3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfX2dldF9fdHlwZSA9
IHRzZl9mc2RiX2NvbW1hbmRfX2dldF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2
b2lkICp0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJl
dHVybiB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNm
X3R5cGVfdCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJnRzZl9mc2RiX2NvbW1hbmRfX2dldF9fdHlwZSwgdHNmX2ZzZGJfY29t
bWFuZF9fZ2V0X190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2Zf
ZnNkYl9jb21tYW5kX19nZXRfX3R5cGVfX29jLCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGVf
X2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9jb21tYW5kX19nZXRfX3R5cGU7CisjZW5k
aWYKK30KK3ZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X19kZXN0cnVjdCh0c2ZfZnNkYl9jb21t
YW5kX19nZXRfdCAqZGF0YSkgeworICAgIHRzZl9idWZmZXJfZGVzdHJveSgqJmRhdGEtPmtleSk7
Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfY29tbWFuZF9fcm1f
X3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0
aHJlYWRfb25jZV90IHRzZl9mc2RiX2NvbW1hbmRfX3JtX190eXBlX19vYyA9IFBUSFJFQURfT05D
RV9JTklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX3R5cGVfX2J1aWxkZXIo
dm9pZCkgeworICAgIHRzZl9mc2RiX2NvbW1hbmRfX3JtX190eXBlID0gdHNmX2ZzZGJfY29tbWFu
ZF9fcm1fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJfY29t
bWFuZF9fcm1fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZnNkYl9jb21t
YW5kX19ybV9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9j
b21tYW5kX19ybV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
UgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZ0c2Zf
ZnNkYl9jb21tYW5kX19ybV9fdHlwZSwgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX3R5cGVfX2J1aWxk
ZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX2NvbW1hbmRfX3JtX190eXBl
X19vYywgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0
c2ZfZnNkYl9jb21tYW5kX19ybV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9jb21t
YW5kX19ybV9fZGVzdHJ1Y3QodHNmX2ZzZGJfY29tbWFuZF9fcm1fdCAqZGF0YSkgeworICAgIHRz
Zl9idWZmZXJfZGVzdHJveSgqJmRhdGEtPmtleSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICog
dm9sYXRpbGUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3R5cGUgPSBOVUxMOworCisjaWZu
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGlj
IHZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIodm9pZCkgewor
ICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlw
ZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRf
cG9pbnRlcigodm9pZCoqKSZ0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fdHlwZSwgdHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFk
X29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX190eXBlX19vYywgdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fZGVzdHJ1Y3QodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfdCAqZGF0YSkgewor
ICAgIHN3aXRjaCAoZGF0YS0+dmFsdWUpIHsKKyAgICBjYXNlIDE6CisgICAgICAgIHRzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX19kZXN0cnVjdCgmZGF0YS0+dS53ZWxjb21lKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICB0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fc3lzX2Vycm9yX19kZXN0cnVjdCgmZGF0YS0+dS5zeXNfZXJyb3IpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X19wcm90b19lcnJvcl9fZGVzdHJ1Y3QoJmRhdGEtPnUucHJvdG9fZXJyb3IpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDU6CisgICAgICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19p
bl9kYXRhX19kZXN0cnVjdCgmZGF0YS0+dS5pbl9kYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdHNmX3R5cGVfdCAq
IHZvbGF0aWxlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX190eXBlID0gTlVM
TDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2Vf
dCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdHlwZV9fb2MgPSBQVEhSRUFE
X09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxj
b21lX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9fd2VsY29tZV9fdHlwZSA9IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX19i
dWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKnRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX193ZWxjb21lX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgor
dHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2dldF90eXBl
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90
eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3dlbGNvbWVfX3R5cGUsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX190
eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZ0c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fd2VsY29tZV9fdHlwZV9fb2MsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X193ZWxjb21lX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX3dlbGNvbWVfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX3dlbGNvbWVfX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X193ZWxjb21lX3QgKmRhdGEpIHsKKyAgICBmcmVlKComZGF0YS0+bmFtZSk7Cit9CisKK3N0YXRp
YyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNv
bWVfX3ZlcnNpb25fX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
Ugorc3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxj
b21lX192ZXJzaW9uX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQg
dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxk
ZXIodm9pZCkgeworICAgIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJz
aW9uX190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25f
X2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJl
dHVybiB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fYnVpbGRf
dHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9fd2VsY29tZV9fdmVyc2lvbl9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lO
SVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9p
ZCoqKSZ0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fdHlwZSwg
dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxk
ZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X193ZWxjb21lX192ZXJzaW9uX190eXBlX19vYywgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X3dlbGNvbWVfX3ZlcnNpb25fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiB0c2ZfZnNkYl9y
ZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fdHlwZTsKKyNlbmRpZgorfQorCitz
dGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19z
eXNfZXJyb3JfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJy
b3JfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCB0c2ZfZnNkYl9y
ZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICB0
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBlID0gdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRp
YyB2b2lkICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBlX19idWls
ZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19l
cnJvcl9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVy
KCh2b2lkKiopJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3JfX3R5cGUsIHRz
Zl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3JfX3R5cGVfX2J1aWxkZXIpOworI2Vs
c2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJy
b3JfX3R5cGVfX29jLCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yX190eXBl
X19idWlsZGVyKTsKKyAgICByZXR1cm4gdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19l
cnJvcl9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9f
c3lzX2Vycm9yX19kZXN0cnVjdCh0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9y
X3QgKmRhdGEpIHsKKyAgICBmcmVlKComZGF0YS0+bXNnKTsKK30KKworc3RhdGljIHRzZl90eXBl
X3QgKiB2b2xhdGlsZSB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX3R5
cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJl
YWRfb25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcl9fdHlwZV9f
b2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIHRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX19wcm90b19lcnJvcl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX3Byb3RvX2Vycm9yX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZv
aWQgKnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcl9fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19l
cnJvcl9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50
ZXIoKHZvaWQqKikmdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX190eXBl
LCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX3R5cGVfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19w
cm90b19lcnJvcl9fdHlwZV9fb2MsIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19l
cnJvcl9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19wcm90b19lcnJvcl9fdHlwZTsKKyNlbmRpZgorfQordm9pZCB0c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19wcm90b19lcnJvcl90ICpkYXRhKSB7CisgICAgZnJlZSgqJmRhdGEtPm1zZyk7Cit9CisK
K3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X2luX2RhdGFfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRh
X190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHRzZl9m
c2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX190eXBlID0gdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX2luX2RhdGFfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAq
dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fYnVpbGRf
dHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9faW5fZGF0YV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
UgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZ0c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fdHlwZSwgdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29u
Y2UoJnRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX190eXBlX19vYywgdHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVy
biB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fdHlwZTsKKyNlbmRpZgorfQor
dm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZGVzdHJ1Y3QodHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFfdCAqZGF0YSkgeworICAgIHRzZl9mc2RiX2J1
ZmZlcl9fZGVzdHJ1Y3QoJmRhdGEtPmRhdGEpOworfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ZzZGJfcHJvdG9jb2wuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ZzZGJfcHJvdG9jb2wuaAko
bm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X2ZzZGJfcHJvdG9jb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3NiBAQAorLyogLi9s
aWJyYXJ5L3RzZl9mc2RiX3Byb3RvY29sLmggLS0gZ2VuZXJhdGVkIGJ5IHRzZl9kZWZpbmUgZnJv
bSAuL2xpYnJhcnkvdHNmX2ZzZGJfcHJvdG9jb2wudCAqLworCisjaW5jbHVkZSAidHNmLmgiCisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX3N0YXRlCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RS
VUNUX0RFQ0xfdHNmX2ZzZGJfc3RhdGUKK3N0cnVjdCB0c2ZfZnNkYl9zdGF0ZV9zOworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9jb21tYW5kCisjZGVm
aW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfY29tbWFuZAorc3RydWN0IHRzZl9m
c2RiX2NvbW1hbmRfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xf
dHNmX2ZzZGJfcmVzcG9uc2UKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNk
Yl9yZXNwb25zZQorc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX3M7CisjZW5kaWYKKworI2lmbmRl
ZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX3VpbnQ4X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5F
X1NUUlVDVF9ERUNMX3VpbnQ4X19hcnJheQorc3RydWN0IHVpbnQ4X19hcnJheV9zOworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9jb21tYW5kX19wdXQK
KyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9jb21tYW5kX19wdXQKK3N0
cnVjdCB0c2ZfZnNkYl9jb21tYW5kX19wdXRfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlCisjZGVmaW5lIFRTRl9E
RUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlCitzdHJ1Y3QgdHNm
X2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X1NUUlVDVF9ERUNMX3RzZl9mc2RiX2NvbW1hbmRfX2dldAorI2RlZmluZSBUU0ZfREVGSU5FX1NU
UlVDVF9ERUNMX3RzZl9mc2RiX2NvbW1hbmRfX2dldAorc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRf
X2dldF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNk
Yl9jb21tYW5kX19ybQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX2Nv
bW1hbmRfX3JtCitzdHJ1Y3QgdHNmX2ZzZGJfY29tbWFuZF9fcm1fczsKKyNlbmRpZgorCisjaWZu
ZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWQKKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZAor
c3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX3M7CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21l
CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3dlbGNvbWUKK3N0cnVjdCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZV9z
OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9uCitzdHJ1
Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fczsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX3N5c19lcnJvcgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX19zeXNfZXJyb3IKK3N0cnVjdCB0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fc3lzX2Vycm9yX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcgorI2RlZmluZSBU
U0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19l
cnJvcgorc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvcl9zOwor
I2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF90c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9faW5fZGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX3RzZl9m
c2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX2luX2RhdGFfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURF
Rl90c2ZfZnNkYl9zdGF0ZQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfc3Rh
dGUKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX3N0YXRlX3MgdHNmX2ZzZGJfc3RhdGVfdDsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kCisjZGVm
aW5lIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kCit0eXBlZGVmIHN0cnVjdCB0
c2ZfZnNkYl9jb21tYW5kX3MgdHNmX2ZzZGJfY29tbWFuZF90OworI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9UWVBFREVGX3RzZl9mc2RiX3Jlc3BvbnNlCisjZGVmaW5lIFRTRl9ERUZJTkVf
VFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZQordHlwZWRlZiBzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9u
c2VfcyB0c2ZfZnNkYl9yZXNwb25zZV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9U
WVBFREVGX3VpbnQ4X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdWludDhfX2Fy
cmF5Cit0eXBlZGVmIHN0cnVjdCB1aW50OF9fYXJyYXlfcyB1aW50OF9fYXJyYXlfdDsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kX19wdXQKKyNk
ZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX3RzZl9mc2RiX2NvbW1hbmRfX3B1dAordHlwZWRlZiBz
dHJ1Y3QgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X3MgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X3Q7Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfY29tbWFuZF9fb3V0
X3dyaXRlCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kX19vdXRf
d3JpdGUKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV9zIHRzZl9m
c2RiX2NvbW1hbmRfX291dF93cml0ZV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9U
WVBFREVGX3RzZl9mc2RiX2NvbW1hbmRfX2dldAorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZf
dHNmX2ZzZGJfY29tbWFuZF9fZ2V0Cit0eXBlZGVmIHN0cnVjdCB0c2ZfZnNkYl9jb21tYW5kX19n
ZXRfcyB0c2ZfZnNkYl9jb21tYW5kX19nZXRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfVFlQRURFRl90c2ZfZnNkYl9jb21tYW5kX19ybQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVE
RUZfdHNmX2ZzZGJfY29tbWFuZF9fcm0KK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRf
X3JtX3MgdHNmX2ZzZGJfY29tbWFuZF9fcm1fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZAorI2RlZmluZSBUU0ZfREVGSU5F
X1RZUEVERUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWQKK3R5cGVkZWYgc3RydWN0IHRzZl9m
c2RiX3Jlc3BvbnNlX19wYXlsb2FkX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfdDsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fd2VsY29tZQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX3dlbGNvbWUKK3R5cGVkZWYgc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX193ZWxjb21lX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfdDsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbgorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb24KK3R5cGVkZWYgc3RydWN0
IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX192ZXJzaW9uX3MgdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fdDsKKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9y
CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9f
c3lzX2Vycm9yCit0eXBlZGVmIHN0cnVjdCB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lz
X2Vycm9yX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl90OworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X19wcm90b19lcnJvcgorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yCit0eXBlZGVmIHN0cnVjdCB0c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfcyB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJv
dG9fZXJyb3JfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZf
dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGEKK3R5cGVkZWYgc3RydWN0IHRzZl9m
c2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX3MgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX2luX2RhdGFfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl90c2Zf
ZnNkYl9idWZmZXIKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX3RzZl9mc2RiX2J1ZmZlcgor
dHlwZWRlZiB1aW50OF9fYXJyYXlfdCB0c2ZfZnNkYl9idWZmZXJfdDsKKyNlbmRpZgorCisjaWZu
ZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl91aW50OF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklO
RV9TVFJVQ1RfREVGX3VpbnQ4X19hcnJheQorc3RydWN0IHVpbnQ4X19hcnJheV9zIHsKKyAgICB1
aW50OF90ICpkYXRhOworICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfc3RhdGUKKyNkZWZpbmUgVFNGX0RFRklORV9T
VFJVQ1RfREVGX3RzZl9mc2RiX3N0YXRlCitzdHJ1Y3QgdHNmX2ZzZGJfc3RhdGVfcyB7CisgICAg
dHNmX2Nob2ljZV90IHZhbHVlOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RS
VUNUX0RFRl90c2ZfZnNkYl9jb21tYW5kX19wdXQKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1Rf
REVGX3RzZl9mc2RiX2NvbW1hbmRfX3B1dAorc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX3B1dF9z
IHsKKyAgICB0c2ZfYnVmZmVyX3QqIGtleTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlCisjZGVmaW5lIFRTRl9E
RUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGUKK3N0cnVjdCB0c2Zf
ZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfcyB7CisgICAgdHNmX2ZzZGJfYnVmZmVyX3QgZGF0YTsK
K307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfY29t
bWFuZF9fZ2V0CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9jb21tYW5k
X19nZXQKK3N0cnVjdCB0c2ZfZnNkYl9jb21tYW5kX19nZXRfcyB7CisgICAgdHNmX2J1ZmZlcl90
KiBrZXk7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9m
c2RiX2NvbW1hbmRfX3JtCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9j
b21tYW5kX19ybQorc3RydWN0IHRzZl9mc2RiX2NvbW1hbmRfX3JtX3MgeworICAgIHRzZl9idWZm
ZXJfdCoga2V5OworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90
c2ZfZnNkYl9jb21tYW5kCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9j
b21tYW5kCitzdHJ1Y3QgdHNmX2ZzZGJfY29tbWFuZF9zIHsKKyAgICB0c2ZfY2hvaWNlX3QgdmFs
dWU7CisgICAgdW5pb24geworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX19wdXRfdCBwdXQ7Cisg
ICAgICAgIHRzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZV90IG91dF93cml0ZTsKKyAgICAgICAg
dHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3QgZ2V0OworICAgICAgICB0c2ZfZnNkYl9jb21tYW5kX19y
bV90IHJtOworICAgIH0gdTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVD
VF9ERUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb24KKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxj
b21lX192ZXJzaW9uCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVf
X3ZlcnNpb25fcyB7CisgICAgaW50MzJfdCBtYWpvcjsKKyAgICBpbnQzMl90IG1pbm9yOworICAg
IGludDMyX3QgcGF0Y2g7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1Rf
REVGX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lCisjZGVmaW5lIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29tZQorc3RydWN0
IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX3MgeworICAgIGNoYXIqIG5hbWU7
CisgICAgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX3ZlcnNpb25fdCB2ZXJz
aW9uOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl90c2ZfZnNk
Yl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNU
X0RFRl90c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yCitzdHJ1Y3QgdHNmX2Zz
ZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9zIHsKKyAgICBjaGFyKiBtc2c7Cit9Owor
I2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNl
X19wYXlsb2FkX19wcm90b19lcnJvcgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNm
X2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yCitzdHJ1Y3QgdHNmX2ZzZGJfcmVz
cG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yX3MgeworICAgIGNoYXIqIG1zZzsKK307CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3Bh
eWxvYWRfX2luX2RhdGEKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkX19pbl9kYXRhCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX2luX2RhdGFfcyB7CisgICAgdHNmX2ZzZGJfYnVmZmVyX3QgZGF0YTsKK307CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWQKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkCitzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfcyB7CisgICAgdHNmX2Nob2lj
ZV90IHZhbHVlOworICAgIHVuaW9uIHsKKyAgICAgICAgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3dlbGNvbWVfdCB3ZWxjb21lOworICAgICAgICB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9fc3lzX2Vycm9yX3Qgc3lzX2Vycm9yOworICAgICAgICB0c2ZfZnNkYl9yZXNwb25zZV9fcGF5
bG9hZF9fcHJvdG9fZXJyb3JfdCBwcm90b19lcnJvcjsKKyAgICAgICAgdHNmX2ZzZGJfcmVzcG9u
c2VfX3BheWxvYWRfX2luX2RhdGFfdCBpbl9kYXRhOworICAgIH0gdTsKK307CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfdHNmX2ZzZGJfcmVzcG9uc2UKKyNkZWZpbmUg
VFNGX0RFRklORV9TVFJVQ1RfREVGX3RzZl9mc2RiX3Jlc3BvbnNlCitzdHJ1Y3QgdHNmX2ZzZGJf
cmVzcG9uc2VfcyB7CisgICAgdHNmX2ZzZGJfc3RhdGVfdCBzdGF0ZTsKKyAgICB0c2ZfZnNkYl9y
ZXNwb25zZV9fcGF5bG9hZF90IHBheWxvYWQ7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RF
RklORV9DSE9JQ0VfREVGU190c2ZfZnNkYl9zdGF0ZQorI2RlZmluZSBUU0ZfREVGSU5FX0NIT0lD
RV9ERUZTX3RzZl9mc2RiX3N0YXRlCisjZGVmaW5lIHRzZl9mc2RiX3N0YXRlX19jbGVhciAwCisj
ZGVmaW5lIHRzZl9mc2RiX3N0YXRlX19wdXQgMQorI2RlZmluZSB0c2ZfZnNkYl9zdGF0ZV9fZ2V0
IDIKK3N0YXRpYyBUU0ZfaW5saW5lIGNvbnN0IGNoYXIgKnRzZl9mc2RiX3N0YXRlX190b19zdHIo
dHNmX2Nob2ljZV90IHZhbHVlKSB7CisgICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgMDog
cmV0dXJuICJjbGVhciI7CisgICAgY2FzZSAxOiByZXR1cm4gInB1dCI7CisgICAgY2FzZSAyOiBy
ZXR1cm4gImdldCI7CisgICAgY2FzZSBVSU5UMzJfTUFYOiByZXR1cm4gIjx1bmtub3duPiI7Cisg
ICAgZGVmYXVsdDogYWJvcnQoKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX0NIT0lDRV9ERUZTX3RzZl9mc2RiX2NvbW1hbmQKKyNkZWZpbmUgVFNGX0RFRklORV9DSE9J
Q0VfREVGU190c2ZfZnNkYl9jb21tYW5kCisjZGVmaW5lIHRzZl9mc2RiX2NvbW1hbmRfX3Bpbmcg
MAorI2RlZmluZSB0c2ZfZnNkYl9jb21tYW5kX19wdXQgMQorI2RlZmluZSB0c2ZfZnNkYl9jb21t
YW5kX19vdXRfd3JpdGUgMgorI2RlZmluZSB0c2ZfZnNkYl9jb21tYW5kX19vdXRfY29tbWl0IDMK
KyNkZWZpbmUgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0IDQKKyNkZWZpbmUgdHNmX2ZzZGJfY29tbWFu
ZF9fcm0gNQorI2RlZmluZSB0c2ZfZnNkYl9jb21tYW5kX19yZXNldCA2CitzdGF0aWMgVFNGX2lu
bGluZSBjb25zdCBjaGFyICp0c2ZfZnNkYl9jb21tYW5kX190b19zdHIodHNmX2Nob2ljZV90IHZh
bHVlKSB7CisgICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgMDogcmV0dXJuICJwaW5nIjsK
KyAgICBjYXNlIDE6IHJldHVybiAicHV0IjsKKyAgICBjYXNlIDI6IHJldHVybiAib3V0X3dyaXRl
IjsKKyAgICBjYXNlIDM6IHJldHVybiAib3V0X2NvbW1pdCI7CisgICAgY2FzZSA0OiByZXR1cm4g
ImdldCI7CisgICAgY2FzZSA1OiByZXR1cm4gInJtIjsKKyAgICBjYXNlIDY6IHJldHVybiAicmVz
ZXQiOworICAgIGNhc2UgVUlOVDMyX01BWDogcmV0dXJuICI8dW5rbm93bj4iOworICAgIGRlZmF1
bHQ6IGFib3J0KCk7CisgICAgfQorfQorI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9DSE9J
Q0VfREVGU190c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZAorI2RlZmluZSBUU0ZfREVGSU5FX0NI
T0lDRV9ERUZTX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkCisjZGVmaW5lIHRzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkX19vayAwCisjZGVmaW5lIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X193ZWxjb21lIDEKKyNkZWZpbmUgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJv
ciAyCisjZGVmaW5lIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19wcm90b19lcnJvciAzCisj
ZGVmaW5lIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19ub3RfZm91bmQgNAorI2RlZmluZSB0
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YSA1CisjZGVmaW5lIHRzZl9mc2RiX3Jl
c3BvbnNlX19wYXlsb2FkX19pbl9lb2YgNgorc3RhdGljIFRTRl9pbmxpbmUgY29uc3QgY2hhciAq
dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3RvX3N0cih0c2ZfY2hvaWNlX3QgdmFsdWUpIHsK
KyAgICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSAwOiByZXR1cm4gIm9rIjsKKyAgICBjYXNl
IDE6IHJldHVybiAid2VsY29tZSI7CisgICAgY2FzZSAyOiByZXR1cm4gInN5c19lcnJvciI7Cisg
ICAgY2FzZSAzOiByZXR1cm4gInByb3RvX2Vycm9yIjsKKyAgICBjYXNlIDQ6IHJldHVybiAibm90
X2ZvdW5kIjsKKyAgICBjYXNlIDU6IHJldHVybiAiaW5fZGF0YSI7CisgICAgY2FzZSA2OiByZXR1
cm4gImluX2VvZiI7CisgICAgY2FzZSBVSU5UMzJfTUFYOiByZXR1cm4gIjx1bmtub3duPiI7Cisg
ICAgZGVmYXVsdDogYWJvcnQoKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX0ZVTkNTX3RzZl9mc2RiX2J1ZmZlcgorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9m
c2RiX2J1ZmZlcgordHNmX3R5cGVfdCAqdHNmX2ZzZGJfYnVmZmVyX19nZXRfdHlwZSh2b2lkKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCB0c2ZfZnNkYl9idWZmZXJfX2Rlc3RydWN0KHRz
Zl9mc2RiX2J1ZmZlcl90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqdHNmX2ZzZGJfYnVmZmVyX19n
ZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3Qg
KnRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX190c2ZfZnNkYl9idWZm
ZXIodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCB0
c2ZfZnNkYl9idWZmZXJfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9v
bF90IGJ1Zl9pbnN0YW5jZW9mX190c2ZfZnNkYl9idWZmZXIodHNmX2J1ZmZlcl90ICpidWYpIHsg
cmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3R5
cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqdHNmX2ZzZGJfYnVmZmVy
X19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKHRz
Zl9mc2RiX2J1ZmZlcl9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxp
bmUgdHNmX2J1ZmZlcl90ICp0c2ZfZnNkYl9idWZmZXJfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEs
IHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbih0c2ZfZnNk
Yl9idWZmZXJfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9p
bmxpbmUgdHNmX2ZzZGJfYnVmZmVyX3QgKnRzZl9mc2RiX2J1ZmZlcl9fcGFyc2UodHNmX2J1ZmZl
cl90ICpidWYpIHsgcmV0dXJuICh0c2ZfZnNkYl9idWZmZXJfdCopdHNmX3BhcnNlcl9wYXJzZSh0
c2ZfZnNkYl9idWZmZXJfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUg
dHNmX2ZzZGJfYnVmZmVyX3QgKnRzZl9mc2RiX2J1ZmZlcl9fcGFyc2VfaW4odHNmX2J1ZmZlcl90
ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKHRzZl9mc2RiX2J1ZmZlcl90Kil0c2ZfcGFy
c2VyX3BhcnNlX2luKHRzZl9mc2RiX2J1ZmZlcl9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7
IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgdHNmX2ZzZGJfYnVmZmVyX19wYXJzZV9p
bnRvKHRzZl9idWZmZXJfdCAqYnVmLCB0c2ZfZnNkYl9idWZmZXJfdCAqZGF0YSwgdm9pZCAqcmVn
aW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8odHNmX2ZzZGJfYnVmZmVyX19nZXRf
cGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCB0c2ZfZnNkYl9idWZm
ZXJfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNkYl9idWZmZXJf
dCAqZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9mc2RiX2J1ZmZlcl90ICp0c2Zf
ZnNkYl9idWZmZXJfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgdHNmX2ZzZGJfYnVmZmVyX19yZWFkX2ludG8odHNm
X3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgdHNmX2ZzZGJfYnVmZmVyX3QgKnJlc3VsdCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1Nf
dHNmX2ZzZGJfc3RhdGUKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9zdGF0ZQor
dHNmX3R5cGVfdCAqdHNmX2ZzZGJfc3RhdGVfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVf
Tk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIHRzZl9mc2RiX3N0YXRlX19kZXN0cnVj
dCh0c2ZfZnNkYl9zdGF0ZV90ICpkYXRhKSB7IH0KK3RzZl9nZW5ydHJfdCAqdHNmX2ZzZGJfc3Rh
dGVfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJz
ZXJfdCAqdHNmX2ZzZGJfc3RhdGVfX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fdHNmX2ZzZGJf
c3RhdGUodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBl
LCB0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9i
b29sX3QgYnVmX2luc3RhbmNlb2ZfX3RzZl9mc2RiX3N0YXRlKHRzZl9idWZmZXJfdCAqYnVmKSB7
IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCB0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3R5
cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqdHNmX2ZzZGJfc3RhdGVf
X2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUodHNm
X2ZzZGJfc3RhdGVfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5l
IHRzZl9idWZmZXJfdCAqdHNmX2ZzZGJfc3RhdGVfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZv
aWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbih0c2ZfZnNkYl9z
dGF0ZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfZnNkYl9zdGF0ZV90ICp0c2ZfZnNkYl9zdGF0ZV9fcGFyc2UodHNmX2J1ZmZlcl90ICpi
dWYpIHsgcmV0dXJuICh0c2ZfZnNkYl9zdGF0ZV90Kil0c2ZfcGFyc2VyX3BhcnNlKHRzZl9mc2Ri
X3N0YXRlX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9mc2Ri
X3N0YXRlX3QgKnRzZl9mc2RiX3N0YXRlX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9p
ZCAqcmVnaW9uKSB7IHJldHVybiAodHNmX2ZzZGJfc3RhdGVfdCopdHNmX3BhcnNlcl9wYXJzZV9p
bih0c2ZfZnNkYl9zdGF0ZV9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIHRzZl9ib29sX3QgdHNmX2ZzZGJfc3RhdGVfX3BhcnNlX2ludG8odHNmX2J1ZmZl
cl90ICpidWYsIHRzZl9mc2RiX3N0YXRlX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4g
dHNmX3BhcnNlcl9wYXJzZV9pbnRvKHRzZl9mc2RiX3N0YXRlX19nZXRfcGFyc2VyKCksIGJ1Ziwg
ZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCB0c2ZfZnNkYl9zdGF0ZV9fd3JpdGUodHNmX3N0
cmVhbV9maWxlX291dHB1dF90ICpvdXQsIHRzZl9mc2RiX3N0YXRlX3QgKmRhdGEpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7Cit0c2ZfZnNkYl9zdGF0ZV90ICp0c2ZfZnNkYl9zdGF0ZV9fcmVhZCh0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNm
X2Jvb2xfdCB0c2ZfZnNkYl9zdGF0ZV9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90
ICppbnAsIHRzZl9mc2RiX3N0YXRlX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfdHNmX2ZzZGJfY29tbWFuZAorI2Rl
ZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmQKK3RzZl90eXBlX3QgKnRzZl9m
c2RiX2NvbW1hbmRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lk
IHRzZl9mc2RiX2NvbW1hbmRfX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1hbmRfdCAqZGF0YSk7Cit0
c2ZfZ2VucnRyX3QgKnRzZl9mc2RiX2NvbW1hbmRfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3Bh
cnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNm
X2Jvb2xfdCBpbnN0YW5jZW9mX190c2ZfZnNkYl9jb21tYW5kKHRzZl90eXBlX3QgKnR5cGUpIHsg
cmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgdHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3R5
cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX3Rz
Zl9mc2RiX2NvbW1hbmQodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5z
dGFuY2VvZihidWYsIHRzZl9mc2RiX2NvbW1hbmRfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNG
X2lubGluZSB0c2ZfYnVmZmVyX3QgKnRzZl9mc2RiX2NvbW1hbmRfX2dlbmVyYXRlKHZvaWQgKmRh
dGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUodHNmX2ZzZGJfY29tbWFuZF9fZ2V0
X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICp0
c2ZfZnNkYl9jb21tYW5kX19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsg
cmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4odHNmX2ZzZGJfY29tbWFuZF9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfZnNkYl9j
b21tYW5kX3QgKnRzZl9mc2RiX2NvbW1hbmRfX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJl
dHVybiAodHNmX2ZzZGJfY29tbWFuZF90Kil0c2ZfcGFyc2VyX3BhcnNlKHRzZl9mc2RiX2NvbW1h
bmRfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2ZzZGJfY29t
bWFuZF90ICp0c2ZfZnNkYl9jb21tYW5kX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9p
ZCAqcmVnaW9uKSB7IHJldHVybiAodHNmX2ZzZGJfY29tbWFuZF90Kil0c2ZfcGFyc2VyX3BhcnNl
X2luKHRzZl9mc2RiX2NvbW1hbmRfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0
aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IHRzZl9mc2RiX2NvbW1hbmRfX3BhcnNlX2ludG8odHNm
X2J1ZmZlcl90ICpidWYsIHRzZl9mc2RiX2NvbW1hbmRfdCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7
IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8odHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3BhcnNl
cigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgdHNmX2ZzZGJfY29tbWFuZF9f
d3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIHRzZl9mc2RiX2NvbW1hbmRfdCAq
ZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9mc2RiX2NvbW1hbmRfdCAqdHNmX2Zz
ZGJfY29tbWFuZF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9jb21tYW5kX19yZWFkX2ludG8odHNm
X3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgdHNmX2ZzZGJfY29tbWFuZF90ICpyZXN1bHQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNT
X3RzZl9mc2RiX3Jlc3BvbnNlCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfdHNmX2ZzZGJfcmVz
cG9uc2UKK3RzZl90eXBlX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfdHlwZSh2b2lkKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOwordm9pZCB0c2ZfZnNkYl9yZXNwb25zZV9fZGVzdHJ1Y3QodHNm
X2ZzZGJfcmVzcG9uc2VfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKnRzZl9mc2RiX3Jlc3BvbnNl
X19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2Vy
X3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX3RzZl9mc2Ri
X3Jlc3BvbnNlKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2Yo
dHlwZSwgdHNmX2ZzZGJfcmVzcG9uc2VfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX190c2ZfZnNkYl9yZXNwb25zZSh0c2ZfYnVmZmVy
X3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgdHNmX2ZzZGJfcmVz
cG9uc2VfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKnRz
Zl9mc2RiX3Jlc3BvbnNlX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJh
dG9yX2dlbmVyYXRlKHRzZl9mc2RiX3Jlc3BvbnNlX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9
CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKnRzZl9mc2RiX3Jlc3BvbnNlX19nZW5l
cmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3Jf
Z2VuZXJhdGVfaW4odHNmX2ZzZGJfcmVzcG9uc2VfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVn
aW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2ZzZGJfcmVzcG9uc2VfdCAqdHNmX2ZzZGJf
cmVzcG9uc2VfX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAodHNmX2ZzZGJfcmVz
cG9uc2VfdCopdHNmX3BhcnNlcl9wYXJzZSh0c2ZfZnNkYl9yZXNwb25zZV9fZ2V0X3BhcnNlcigp
LCBidWYpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfZnNkYl9yZXNwb25zZV90ICp0c2ZfZnNk
Yl9yZXNwb25zZV9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyBy
ZXR1cm4gKHRzZl9mc2RiX3Jlc3BvbnNlX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4odHNmX2ZzZGJf
cmVzcG9uc2VfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYm9vbF90IHRzZl9mc2RiX3Jlc3BvbnNlX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAq
YnVmLCB0c2ZfZnNkYl9yZXNwb25zZV90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRz
Zl9wYXJzZXJfcGFyc2VfaW50byh0c2ZfZnNkYl9yZXNwb25zZV9fZ2V0X3BhcnNlcigpLCBidWYs
IGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3dyaXRlKHRz
Zl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCB0c2ZfZnNkYl9yZXNwb25zZV90ICpkYXRhKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2ZzZGJfcmVzcG9uc2VfdCAqdHNmX2ZzZGJfcmVz
cG9uc2VfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKK3RzZl9ib29sX3QgdHNmX2ZzZGJfcmVzcG9uc2VfX3JlYWRfaW50byh0c2Zfc3Ry
ZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCB0c2ZfZnNkYl9yZXNwb25zZV90ICpyZXN1bHQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX3Vp
bnQ4X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3VpbnQ4X19hcnJheQorI2RlZmlu
ZSB1aW50OF9fYXJyYXlfX2dldF90eXBlIHVpbnQ4X19hcnJheVZYc0dCdlJoVzRGbDliS0FuNkg1
MTM1YUNwMldidGdHcmQ4ZzFwZl9fZ2V0X3R5cGUKKyNkZWZpbmUgdWludDhfX2FycmF5X19kZXN0
cnVjdCB1aW50OF9fYXJyYXlWWHNHQnZSaFc0Rmw5YktBbjZINTEzNWFDcDJXYnRnR3JkOGcxcGZf
X2Rlc3RydWN0Cit0c2ZfdHlwZV90ICp1aW50OF9fYXJyYXlfX2dldF90eXBlKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIHVpbnQ4X19hcnJheV9fZGVzdHJ1Y3QodWludDhfX2Fy
cmF5X3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNk
Yl9jb21tYW5kX19wdXQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9jb21tYW5k
X19wdXQKK3RzZl90eXBlX3QgKnRzZl9mc2RiX2NvbW1hbmRfX3B1dF9fZ2V0X3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fcHV0X19kZXN0
cnVjdCh0c2ZfZnNkYl9jb21tYW5kX19wdXRfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZQorI2RlZmluZSBUU0Zf
REVGSU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmRfX291dF93cml0ZQordHNmX3R5cGVfdCAqdHNm
X2ZzZGJfY29tbWFuZF9fb3V0X3dyaXRlX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05P
SU5MSU5FOwordm9pZCB0c2ZfZnNkYl9jb21tYW5kX19vdXRfd3JpdGVfX2Rlc3RydWN0KHRzZl9m
c2RiX2NvbW1hbmRfX291dF93cml0ZV90ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9E
RUZJTkVfRlVOQ1NfdHNmX2ZzZGJfY29tbWFuZF9fZ2V0CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVO
Q1NfdHNmX2ZzZGJfY29tbWFuZF9fZ2V0Cit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9jb21tYW5kX19n
ZXRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIHRzZl9mc2Ri
X2NvbW1hbmRfX2dldF9fZGVzdHJ1Y3QodHNmX2ZzZGJfY29tbWFuZF9fZ2V0X3QgKmRhdGEpOwor
I2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9jb21tYW5kX19ybQor
I2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX2NvbW1hbmRfX3JtCit0c2ZfdHlwZV90
ICp0c2ZfZnNkYl9jb21tYW5kX19ybV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3ZvaWQgdHNmX2ZzZGJfY29tbWFuZF9fcm1fX2Rlc3RydWN0KHRzZl9mc2RiX2NvbW1h
bmRfX3JtX3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9h
ZF9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJf
cmVzcG9uc2VfX3BheWxvYWRfX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX3Qg
KmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9yZXNw
b25zZV9fcGF5bG9hZF9fd2VsY29tZQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2Ri
X3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25z
ZV9fcGF5bG9hZF9fd2VsY29tZV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3ZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3dlbGNvbWVfX2Rlc3RydWN0KHRz
Zl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX193ZWxjb21lX3QgKmRhdGEpOworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9GVU5DU190c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fd2VsY29t
ZV9fdmVyc2lvbgorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX3RzZl9mc2RiX3Jlc3BvbnNlX19w
YXlsb2FkX193ZWxjb21lX192ZXJzaW9uCit0c2ZfdHlwZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9f
cGF5bG9hZF9fd2VsY29tZV9fdmVyc2lvbl9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxv
YWRfX3dlbGNvbWVfX3ZlcnNpb25fX2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2Fk
X193ZWxjb21lX192ZXJzaW9uX3QgKmRhdGEpIHsgfQorI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RF
RklORV9GVU5DU190c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fc3lzX2Vycm9yCisjZGVmaW5l
IFRTRl9ERUZJTkVfRlVOQ1NfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcgor
dHNmX3R5cGVfdCAqdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3N5c19lcnJvcl9fZ2V0X3R5
cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJfcmVzcG9uc2Vf
X3BheWxvYWRfX3N5c19lcnJvcl9fZGVzdHJ1Y3QodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRf
X3N5c19lcnJvcl90ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1Nf
dHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yCisjZGVmaW5lIFRTRl9ERUZJ
TkVfRlVOQ1NfdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3Byb3RvX2Vycm9yCit0c2ZfdHlw
ZV90ICp0c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9fcHJvdG9fZXJyb3JfX2dldF90eXBlKHZv
aWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIHRzZl9mc2RiX3Jlc3BvbnNlX19wYXls
b2FkX19wcm90b19lcnJvcl9fZGVzdHJ1Y3QodHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX3By
b3RvX2Vycm9yX3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU190
c2ZfZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX0ZV
TkNTX3RzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhCit0c2ZfdHlwZV90ICp0c2Zf
ZnNkYl9yZXNwb25zZV9fcGF5bG9hZF9faW5fZGF0YV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3ZvaWQgdHNmX2ZzZGJfcmVzcG9uc2VfX3BheWxvYWRfX2luX2RhdGFf
X2Rlc3RydWN0KHRzZl9mc2RiX3Jlc3BvbnNlX19wYXlsb2FkX19pbl9kYXRhX3QgKmRhdGEpOwor
I2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfTsKKyNlbmRpZgorCkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2dlbmVyYXRvci5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZ2VuZXJhdG9yLmMJ
KG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl9nZW5lcmF0b3IuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJ
TElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImdwYy5oIgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3RzZl9n
ZW5ydHJfdCAqdHNmX2dlbmVyYXRvcl9jcmVhdGUodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHRz
Zl9nZW5ydHJfdCAqcmVzdWx0OworICAgIGdwY19wcm90b190ICpwcm90bzsKKyAgICAKKyAgICBw
cm90bz10c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRlX2dlbmVyYXRvcih0eXBlKTsKKyAgICBpZiAo
cHJvdG89PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGdw
Y19jb2RlX2dlbl9kZWJ1ZygiZ2VuZXJhdG9yIixwcm90byk7CisgICAgCisgICAgcmVzdWx0PW1h
bGxvYyhzaXplb2YodHNmX2dlbnJ0cl90KSk7CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9nZW5ydHJfdCIpOworICAg
ICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICAKKyAgICByZXN1bHQtPnR5cGU9dHNmX3R5cGVfZHVwKHR5cGUpOworICAgIHJlc3Vs
dC0+Z2VuZXJhdG9yPQorCWdwY19wcm9ncmFtX2Zyb21fcHJvdG8ocHJvdG8pOworICAgIAorICAg
IGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAKKyAgICBpZiAocmVzdWx0LT5nZW5lcmF0
b3I9PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCB0c2ZfZ2VuZXJhdG9y
X2Rlc3Ryb3kodHNmX2dlbnJ0cl90ICpnZW4pIHsKKyAgICBncGNfcHJvZ3JhbV9kZXN0cm95KGdl
bi0+Z2VuZXJhdG9yKTsKKyAgICB0c2ZfdHlwZV9kZXN0cm95KGdlbi0+dHlwZSk7CisgICAgZnJl
ZShnZW4pOworfQorCit0c2ZfYnVmZmVyX3QgKnRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUodHNmX2dl
bnJ0cl90ICpnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
ZGF0YSkgeworICAgIGdwY19jZWxsX3QgYXJnc1syXTsKKyAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZl
cjsKKyAgICAKKyAgICBidWZmZXIgPSB0c2ZfYnVmZmVyX2NyZWF0ZV9iYXJlKCk7CisgICAgaWYg
KGJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAg
ICBhcmdzWzBdID0gKGdwY19jZWxsX3QpYnVmZmVyOworICAgIGFyZ3NbMV0gPSAoZ3BjX2NlbGxf
dClkYXRhOworICAgIGlmICghZ3BjX3Byb2dyYW1fcnVuKGdlbi0+Z2VuZXJhdG9yLCBOVUxMLCBh
cmdzKSkgeworICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3lfYmFyZShidWZmZXIpOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgYnVmZmVyLT50eXBlID0gdHNmX3R5cGVf
ZHVwKGdlbi0+dHlwZSk7CisgICAgCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordHNmX2J1ZmZl
cl90ICp0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2luKHRzZl9nZW5ydHJfdCAqZ2VuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgZ3BjX2Nl
bGxfdCBhcmdzWzJdOworICAgIHRzZl9idWZmZXJfdCAqYnVmZmVyOworICAgIAorICAgIGlmIChy
ZWdpb24gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZShn
ZW4sIGRhdGEpOworICAgIH0KKyAgICAKKyAgICBidWZmZXIgPSB0c2ZfYnVmZmVyX2NyZWF0ZV9i
YXJlX2luKHJlZ2lvbik7CisgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKyAgICAKKyAgICBhcmdzWzBdID0gKGdwY19jZWxsX3QpYnVmZmVyOwor
ICAgIGFyZ3NbMV0gPSAoZ3BjX2NlbGxfdClkYXRhOworICAgIGlmICghZ3BjX3Byb2dyYW1fcnVu
KGdlbi0+Z2VuZXJhdG9yLCByZWdpb24sIGFyZ3MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoIXRzZl9yZWdpb25fYWRkX2NiYWNrKHJlZ2lvbiwgKHRzZl9y
ZWdpb25fY2JhY2tfdCl0c2ZfdHlwZV9kZXN0cm95LCBnZW4tPnR5cGUpKSB7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICBidWZmZXItPnR5cGUgPSB0c2ZfdHlwZV9kdXAoZ2VuLT50
eXBlKTsKKyAgICAKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit0c2ZfYm9vbF90IHRzZl9nZW5l
cmF0b3JfZ2VuZXJhdGVfZXhpc3RpbmdfYnVmZmVyKHRzZl9nZW5ydHJfdCAqZ2VuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVm
ZmVyX3QgKmJ1ZikgeworICAgIGdwY19jZWxsX3QgYXJnc1syXTsKKyAgICAKKyAgICBhcmdzWzBd
ID0gKGdwY19jZWxsX3QpYnVmOworICAgIGFyZ3NbMV0gPSAoZ3BjX2NlbGxfdClkYXRhOworICAg
IGlmICghZ3BjX3Byb2dyYW1fcnVuKGdlbi0+Z2VuZXJhdG9yLCBOVUxMLCBhcmdzKSkKKyAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAKKyAgICBidWYtPnR5cGUgPSB0c2ZfdHlwZV9kdXAo
Z2VuLT50eXBlKTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfZ3BjX2NvZGVfZ2VuLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9ncGNfY29kZV9nZW4u
Ywkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX2dwY19jb2RlX2dlbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzE1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAxNCwgMjAxNSBGaWxp
cCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImdw
Yy5oIgorCisjaW5jbHVkZSA8bWF0aC5oPgorCisjZGVmaW5lIEMoZXhwKSBkbyB7ICAgICAgICAg
XAorICAgIGlmICghKGV4cCkpIHsgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSgwKQorCisjZGVm
aW5lIGFwcGVuZCBncGNfcHJvdG9fYXBwZW5kCisjZGVmaW5lIGFwcGVuZF90YWJsZXNldF9sb2Nh
bF90b19maWVsZCBcCisgICAgZ3BjX3Byb3RvX2FwcGVuZF90YWJsZXNldF9sb2NhbF90b19maWVs
ZAorI2RlZmluZSBhcHBlbmRfdGFibGVzZXRfZmllbGRfdG9fZmllbGQgXAorICAgIGdwY19wcm90
b19hcHBlbmRfdGFibGVzZXRfZmllbGRfdG9fZmllbGQKKyNkZWZpbmUgYXBwZW5kX3RhYmxlanVt
cF9sb2NhbCBncGNfcHJvdG9fYXBwZW5kX3RhYmxlanVtcF9sb2NhbAorI2RlZmluZSBhcHBlbmRf
dGFibGVqdW1wX2ZpZWxkIGdwY19wcm90b19hcHBlbmRfdGFibGVqdW1wX2ZpZWxkCisKK3N0YXRp
YyB0c2ZfYm9vbF90IGdlbmVyYXRlX3NpemVfY2FsYyhncGNfcHJvdG9fdCAqcHJvdG8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IG9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IGxhYmVsKSB7CisgICAg
dWludDMyX3QgaTsKKyAgICB1aW50MzJfdCBudW1fYml0cyA9IDA7CisgICAgZ3BjX2NlbGxfdCBs
YWJlbF9vZmZzZXQ7CisgICAgZ3BjX2NlbGxfdCBkb25lX2xhYmVsLCByZWFsbHlfZG9uZV9sYWJl
bDsKKyAgICBncGNfY2VsbF90ICp0YXJnZXRzOworICAgIHRzZl9ib29sX3QgcmVzdWx0OworICAg
IAorICAgIGdwY19jZWxsX3Qgc3RhdGljX3NpemUgPSB0c2ZfdHlwZV9nZXRfc3RhdGljX3NpemUo
dHlwZSk7CisgICAgaWYgKHN0YXRpY19zaXplICE9IFVJTlQzMl9NQVgpIHsKKyAgICAgICAgaWYg
KHN0YXRpY19zaXplICE9IDApIHsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9J
TkNfU0laRSwgc3RhdGljX3NpemUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0
dXJuIHRzZl90cnVlOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29kZSkg
eworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9UU0ZfSU5URUdFUl9TSVpFLCBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfTE9ORzoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1NJWkUs
IG9mZnNldCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6CisgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBl
KTsgKytpKSB7CisgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0gdHNmX3N0cnVjdF90
eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpOworICAgICAgICAgICAgaWYgKG4tPnR5cGUtPmtpbmRf
Y29kZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICAgICAgKytudW1fYml0czsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMoZ2VuZXJh
dGVfc2l6ZV9jYWxjKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIG4tPm9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG51bV9iaXRzICE9IDApIHsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3Rv
LAorICAgICAgICAgICAgICAgICAgICAgR1BDX0lfSU5DX1NJWkUsCisgICAgICAgICAgICAgICAg
ICAgICAoZ3BjX2NlbGxfdCkoKG51bV9iaXRzICsgNykgPj4gMykpKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgaWYgKHR5cGUtPnUu
YS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworICAgICAgICAgICAg
QyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9JTkNfU0laRV9BUlJB
WV9MRU4sCisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25h
dGl2ZV92b2lkX2FycmF5X3QsIGxlbikpKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlLT51LmEu
ZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgQyhh
cHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9JTkNfU0laRV9CSVRWRUNU
T1IsCisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHN0YXRpY19zaXplID0gdHNmX3R5cGVfZ2V0X3N0YXRpY19zaXplKHR5cGUtPnUu
YS5lbGVtZW50X3R5cGUpOworICAgICAgICAgICAgaWYgKHN0YXRpY19zaXplID09IFVJTlQzMl9N
QVgpIHsKKyAgICAgICAgICAgICAgICBncGNfY2VsbF90IGxvb3BfbGFiZWwgPSBsYWJlbCsrOwor
ICAgICAgICAgICAgICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHUENfSV9JTkNfU0laRV9BUlJBWV9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSkpOworICAgICAgICAgICAgICAg
IEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX1BVU0hfUFRS
LAorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0
aXZlX2FycmF5X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGEpKSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgR1BDX0lfUkVQVVNIX01VTEFERF9QVFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUtPnUuYS5lbGVtZW50X3R5cGUpKSk7CisgICAgICAgICAgICAg
ICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPTVBGQUlMSlVNUCwgZG9uZV9sYWJlbCkpOworICAg
ICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgbG9vcF9sYWJlbCkpOwor
ICAgICAgICAgICAgICAgIEMoZ2VuZXJhdGVfc2l6ZV9jYWxjKHByb3RvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0FERENPTVBKVU1QLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9vcF9sYWJlbCkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9MQUJFTCwgZG9uZV9sYWJlbCkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBH
UENfSV9UV09fUE9QKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEMo
YXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0lOQ19TSVpFX0FS
UkFZLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAoZ3BjX2NlbGxfdClzdGF0aWNfc2l6ZSkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0NIT0lDRToKKyAgICAgICAgdHNm
X2Fzc2VydCh0c2ZfY2hvaWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpIHx8CisgICAgICAgICAg
ICAgICAgICAgKHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpID49IDI1NiAm
JgorICAgICAgICAgICAgICAgICAgICAhdHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpKTsK
KyAgICAgICAgaWYgKHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpID49IDI1
NikgeworICAgICAgICAgICAgaWYgKHR5cGUtPnUuaC5jaG9pY2VfYXNfZnVsbF93b3JkKSB7Cisg
ICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0lOQ19TSVpFLCA0KSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9U
U0ZfVU5TSUdORURfUExVUzFfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQg
KyB0eXBlLT51LmgudmFsdWVfb2Zmc2V0KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSU5DX1NJWkUsIDEpKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodHNmX2Nob2ljZV90eXBlX2hhc19ub25fdm9pZCh0eXBlKSkg
eworICAgICAgICAgICAgbGFiZWxfb2Zmc2V0ID0gbGFiZWw7CisgICAgICAgICAgICBsYWJlbCAr
PSB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsKKyAgICAgICAgICAgIGRv
bmVfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgcmVhbGx5X2RvbmVfbGFiZWwgPSBsYWJl
bCsrOworICAgICAgICAgICAgdGFyZ2V0cz1tYWxsb2Moc2l6ZW9mKGdwY19jZWxsX3QpKgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMo
dHlwZSkpOworICAgICAgICAgICAgaWYgKHRhcmdldHMgPT0gTlVMTCkgeworICAgICAgICAgICAg
ICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgYXJyYXkgb2YgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImdwY19jZWxsX3QiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8
IHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICB0YXJnZXRzW2ldID0gbGFiZWxfb2Zmc2V0ICsgaTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJlc3VsdD1hcHBlbmRfdGFibGVqdW1wX2ZpZWxkKAorICAgICAgICAgICAgICAg
IHByb3RvLAorICAgICAgICAgICAgICAgIG9mZnNldCArIHR5cGUtPnUuaC52YWx1ZV9vZmZzZXQs
CisgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSks
CisgICAgICAgICAgICAgICAgdGFyZ2V0cyk7CisgICAgICAgICAgICBmcmVlKHRhcmdldHMpOwor
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pV
TVAsIHJlYWxseV9kb25lX2xhYmVsKSk7IC8qIGZvciB1bmtub3duIHZhbHVlcyAqLworICAgICAg
ICAgICAgZm9yIChpID0gMDsgaSA8IHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5
cGUpOyArK2kpIHsKKyAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0gdHNmX2No
b2ljZV90eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpOworICAgICAgICAgICAgICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9MQUJFTCwgbGFiZWxfb2Zmc2V0ICsgaSkpOworICAgICAgICAgICAgICAg
IGlmICh0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lzX2luX3BsYWNlKHR5cGUpKSB7CisgICAgICAg
ICAgICAgICAgICAgIEMoZ2VuZXJhdGVfc2l6ZV9jYWxjKHByb3RvLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmguZGF0YV9vZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogY2Fubm90IG1vdmUgdGhpcyBw
dXNoIGFib3ZlIHRoZSB0YWJsZWp1bXAgc2luY2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAg
IHRhYmxlanVtcCB1c2VzIHRoZSB2YWx1ZSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaywgYW5kCisg
ICAgICAgICAgICAgICAgICAgICAgIEkgZG9uJ3QgZmVlbCBsaWtlIGFkZGluZyBhIHNlY29uZCB0
YWJsZWp1bXAganVzdCB0bworICAgICAgICAgICAgICAgICAgICAgICBnZXQgYXJvdW5kIHRoYXQu
ICovCisgICAgICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9QVVNIX1BUUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgdHlwZS0+dS5oLmRhdGFfb2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgICAgIEMoZ2VuZXJhdGVfc2l6ZV9jYWxjKHByb3RvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT50eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgZG9uZV9sYWJlbCkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLyogaWYgaXQgaXMgaW4gcGxhY2UsIHlvdSBnZXQgdHdv
IGxhYmVscy4uLiAgb2ggd2VsbC4gKi8KKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9MQUJFTCwgZG9uZV9sYWJlbCkpOworICAgICAgICAgICAgaWYgKCF0c2ZfbmF0aXZlX2Nob2lj
ZV90eXBlX2lzX2luX3BsYWNlKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJv
dG8sIEdQQ19JX1BPUCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJv
dG8sIEdQQ19JX0xBQkVMLCByZWFsbHlfZG9uZV9sYWJlbCkpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVFNGX1RLX1NUUklORzoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX1NUUklOR19TSVpFLCBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfQU5ZOgorICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQU5ZX1NJWkUsIG9mZnNl
dCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICB0c2ZfYWJvcnQoIlR5
cGVzIG90aGVyIHRoYW4gc3RydWN0LCBhcnJheSwgYW5kIGNob2ljZSAiCisgICAgICAgICAgICAg
ICAgICAic2hvdWxkIGhhdmUgc3RhdGljIHNpemUhIik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90IGdlbmVy
YXRlX2dlbmVyYXRvcihncGNfcHJvdG9fdCAqcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncGNfY2VsbF90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncGNfY2VsbF90IGxhYmVsKSB7CisgICAgdWludDMyX3QgaTsKKyAgICB1
aW50MzJfdCBiaXQgPSAwOworICAgIGdwY19jZWxsX3QgZG9uZV9sYWJlbCwgcmVhbGx5X2RvbmVf
bGFiZWw7CisgICAgCisgICAgc3dpdGNoICh0eXBlLT5raW5kX2NvZGUpIHsKKyAgICBjYXNlIFRT
Rl9US19WT0lEOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQ4OgorICAgIGNh
c2UgVFNGX1RLX1VJTlQ4OgorICAgICAgICBDKGFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAg
ICAgR1BDX0lfQ09QWV9IVE9OQ19JTkNEU1QsCisgICAgICAgICAgICAgICAgIG9mZnNldCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQxNjoKKyAgICBjYXNlIFRTRl9US19V
SU5UMTY6CisgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICBHUENfSV9D
T1BZX0hUT05TX0lOQ0RTVCwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDMyOgorICAgIGNhc2UgVFNGX1RLX1VJTlQzMjoKKyAg
ICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgIEdQQ19JX0NPUFlfSFRPTkxf
SU5DRFNULAorICAgICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICBDKGFw
cGVuZChwcm90bywKKyAgICAgICAgICAgICAgICAgR1BDX0lfQ09QWV9IVE9OTExfSU5DRFNULAor
ICAgICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfRkxPQVQ6CisgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICBHUENf
SV9DT1BZX0hUT05GX0lOQ0RTVCwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0RPVUJMRToKKyAgICAgICAgQyhhcHBlbmQocHJvdG8s
CisgICAgICAgICAgICAgICAgIEdQQ19JX0NPUFlfSFRPTkRfSU5DRFNULAorICAgICAgICAgICAg
ICAgICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQklUOgorICAg
ICAgICBDKGFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAgICAgR1BDX0lfQklUX1dSSVRFLAor
ICAgICAgICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfSU5URUdFUjoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9JTlRFR0VSX1dS
SVRFLCBvZmZzZXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKyAg
ICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1dSSVRFLCBvZmZzZXQpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAg
ICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbiA9IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVu
dCh0eXBlLCBpKTsKKyAgICAgICAgICAgIGlmIChuLT50eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RL
X0JJVCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQyhnZW5lcmF0ZV9nZW5lcmF0b3IocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0ICsgbi0+b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwp
KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90eXBlX2dl
dF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVf
dCAqbiA9IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudCh0eXBlLCBpKTsKKyAgICAgICAgICAg
IGlmIChuLT50eXBlLT5raW5kX2NvZGUgIT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisg
ICAgICAgICAgICAgICAgICAgICBHUENfSV9CSVRfTUFTS19XUklURSwKKyAgICAgICAgICAgICAg
ICAgICAgIGJpdCwKKyAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIG4tPm9mZnNldCkpOwor
ICAgICAgICAgICAgKytiaXQ7CisgICAgICAgICAgICBpZiAoYml0ID09IDgpIHsKKyAgICAgICAg
ICAgICAgICBiaXQgPSAwOworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9T
S0lQLCAxKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJpdCkgewor
ICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NLSVAsIDEpKTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgaWYgKHR5cGUt
PnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworICAgICAgICAg
ICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9BUlJBWV9MRU5f
V1JJVEVfRklFTEQsCisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2Yo
dHNmX25hdGl2ZV92b2lkX2FycmF5X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGVuKSkpOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUtPnUuYS5lbGVtZW50
X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICBDKGFwcGVuZChw
cm90bywKKyAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0JJVFZFQ1RPUl9XUklURSwKKyAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldCkpOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUtPnUuYS5l
bGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVUlOVDggfHwKKyAgICAgICAgICAgICAg
ICAgICB0eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0lOVDgKKyNp
Zm5kZWYgTkVFRF9JTlRfQ09OVkVSU0lPTgorICAgICAgICAgICAgICAgICAgIHx8IHRzZl90eXBl
X2tpbmRfaXNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT51LmEuZWxlbWVudF90
eXBlLT5raW5kX2NvZGUpCisjZW5kaWYKKyNpZm5kZWYgTkVFRF9GTE9BVF9DT05WRVJTSU9OCisg
ICAgICAgICAgICAgICAgICAgfHwgdHNmX3R5cGVfa2luZF9pc19mbG9hdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlKQorI2VuZGlmCisg
ICAgICAgICAgICApIHsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAg
ICAgICAgICAgR1BDX0lfQllURV9BUlJBWV9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT51LmEuZWxlbWVudF90eXBlKSkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZ3BjX2NlbGxfdCBsb29wX2xhYmVsID0gbGFiZWwrKzsK
KyAgICAgICAgICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9BUlJB
WV9MRU5fV1JJVEVfRklFTEQsCisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zm
c2V0b2YodHNmX25hdGl2ZV9hcnJheV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlbikpKTsKKworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sCisgICAg
ICAgICAgICAgICAgICAgICBHUENfSV9QVVNIX1BUUiwKKyAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkpKTsKKyAgICAgICAgICAgIEMoYXBwZW5k
KHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgR1BDX0lfUkVQVVNIX01VTEFERF9QVFIsCisg
ICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV9hcnJh
eV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiksCisg
ICAgICAgICAgICAgICAgICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKyAgICAgICAgICAgIEMo
YXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgR1BDX0lfQ09NUEZBSUxKVU1QLAor
ICAgICAgICAgICAgICAgICAgICAgZG9uZV9sYWJlbCkpOworICAgICAgICAgICAgQyhhcHBlbmQo
cHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9MQUJFTCwKKyAgICAgICAgICAgICAg
ICAgICAgIGxvb3BfbGFiZWwpKTsKKyAgICAgICAgICAgIEMoZ2VuZXJhdGVfZ2VuZXJhdG9yKHBy
b3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dS5hLmVsZW1lbnRf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8s
CisgICAgICAgICAgICAgICAgICAgICBHUENfSV9BRERDT01QSlVNUCwKKyAgICAgICAgICAgICAg
ICAgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlLT51LmEuZWxlbWVudF90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgIGxvb3BfbGFi
ZWwpKTsKKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAg
R1BDX0lfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICBkb25lX2xhYmVsKSk7CisgICAgICAg
ICAgICBDKGFwcGVuZChwcm90byxHUENfSV9UV09fUE9QKSk7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAgICAgICBpZiAodHNmX2Nob2ljZV90
eXBlX2dldF9udW1fZWxlbWVudHModHlwZSkgPj0gMjU2KSB7CisgICAgICAgICAgICBpZiAodHlw
ZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpIHsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChw
cm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHUENfSV9DT1BZX0hUT05MX0lOQ0RTVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmgudmFsdWVfb2Zmc2V0
KSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3Rv
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX1RTRl9VTlNJR05FRF9QTFVTMV9XUklU
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmgudmFsdWVfb2Zm
c2V0KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDKGFw
cGVuZChwcm90bywKKyAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0NPUFlfSFRPTkNIT0lDRV9U
T19VSThfSU5DRFNULAorICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgdHlwZS0+dS5oLnZh
bHVlX29mZnNldCkpOworICAgICAgICB9CisgICAgICAgIGlmICh0c2ZfY2hvaWNlX3R5cGVfaGFz
X25vbl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICBncGNfY2VsbF90ICp0YXJnZXRzOworICAg
ICAgICAgICAgZ3BjX2NlbGxfdCBsYWJlbF9vZmZzZXQ7CisgICAgICAgICAgICB0c2ZfYm9vbF90
IHJlc3VsdDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGxhYmVsX29mZnNldCA9IGxh
YmVsOworICAgICAgICAgICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVu
dHModHlwZSk7CisgICAgICAgICAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKyAgICAgICAgICAg
IHJlYWxseV9kb25lX2xhYmVsID0gbGFiZWwrKzsKKyAgICAgICAgICAgIHRhcmdldHMgPSBtYWxs
b2Moc2l6ZW9mKGdwY19jZWxsX3QpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSkpOworICAgICAgICAgICAgaWYgKHRh
cmdldHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCBtYWxsb2MgYXJyYXkgb2YgZ3BjX2NlbGxfdCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNm
X2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAg
ICAgIHRhcmdldHNbaV0gPSBsYWJlbF9vZmZzZXQgKyBpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlanVtcF9maWVsZCgKKyAgICAgICAgICAgICAgICBw
cm90bywKKyAgICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmgudmFsdWVfb2Zmc2V0LAor
ICAgICAgICAgICAgICAgIHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpLAor
ICAgICAgICAgICAgICAgIHRhcmdldHMpOworICAgICAgICAgICAgZnJlZSh0YXJnZXRzKTsKKyAg
ICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8qIGZvciB1
bmtub3duIHZhbHVlcyAqLworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAs
IHJlYWxseV9kb25lX2xhYmVsKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkg
eworICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2ZfY2hvaWNlX3R5cGVf
Z2V0X2VsZW1lbnQodHlwZSwgaSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQ
Q19JX0xBQkVMLCBsYWJlbF9vZmZzZXQgKyBpKSk7CisgICAgICAgICAgICAgICAgaWYgKHRzZl9u
YXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxhY2UodHlwZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQyhnZW5lcmF0ZV9nZW5lcmF0b3IocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9mZnNldCArIHR5cGUtPnUuaC5kYXRhX29mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUFVTSF9QVFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIHR5cGUtPnUuaC5kYXRhX29m
ZnNldCkpOworICAgICAgICAgICAgICAgICAgICBDKGdlbmVyYXRlX2dlbmVyYXRvcihwcm90bywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+dHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAsIGRvbmVfbGFiZWwpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgZG9u
ZV9sYWJlbCkpOworICAgICAgICAgICAgaWYgKCF0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lzX2lu
X3BsYWNlKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BP
UCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xB
QkVMLCByZWFsbHlfZG9uZV9sYWJlbCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVFNGX1RLX1NUUklORzoKKyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NUUklO
R19XUklURSwgb2Zmc2V0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FOWToK
KyAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0FOWV9XUklURSwgb2Zmc2V0KSk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHRzZl9hYm9ydCgiQmFkIGtpbmQgY29k
ZSEiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsK
K30KKworZ3BjX3Byb3RvX3QgKnRzZl9ncGNfY29kZV9nZW5fZ2VuZXJhdGVfZ2VuZXJhdG9yKHRz
Zl90eXBlX3QgKnR5cGUpIHsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG87CisgICAgCisgICAgaWYg
KCF0c2ZfbmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9tYXBwaW5nKHR5cGUpKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfTk9fU1RSVUNUX01BUCwgTlVMTCk7CisgICAgICAgIHJldHVybiBO
VUxMOworICAgIH0KKyAgICAKKyAgICBwcm90bz1ncGNfcHJvdG9fY3JlYXRlKDIpOworICAgIGlm
IChwcm90byA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAg
ICBpZiAoIWdlbmVyYXRlX3NpemVfY2FsYyhwcm90bywgdHlwZSwgMCwgMCkpIHsKKyAgICAgICAg
Z3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX01BTExPQ19CVUYpKSB7CisgICAgICAg
IGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIGlmICh0c2ZfdHlwZV9pc19keW5hbWljKHR5cGUpKSB7CisgICAgICAgIGlmICgh
YXBwZW5kKHByb3RvLCBHUENfSV9NQUtFX09VVF9NQVApKSB7CisgICAgICAgICAgICBncGNfcHJv
dG9fZGVzdHJveShwcm90byk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBpZiAoIWdlbmVyYXRlX2dlbmVyYXRvcihwcm90bywgdHlwZSwgMCwg
MCkpIHsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2lzX2R5bmFtaWModHlwZSkpIHsK
KyAgICAgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX1JFVFVSTl9PTkVfSU5JVF9CVUZfV0lU
SF9UWVBFU19GUk9NX09VVF9NQVApKSB7CisgICAgICAgICAgICBncGNfcHJvdG9fZGVzdHJveShw
cm90byk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGlmICghYXBwZW5kKHByb3RvLCBHUENfSV9SRVRVUk5fT05FX0lOSVRfQlVGX1dJ
VEhfRU1QVFlfVFlQRVMpKSB7CisgICAgICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7
CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gcHJvdG87Cit9CisKK3N0YXRpYyB0c2ZfYm9vbF90IGdlbmVyYXRlX3NldF96ZXJvX3B0
cihncGNfcHJvdG9fdCAqcHJvdG8sCisJCQkJCWdwY19jZWxsX3Qgb2Zmc2V0KSB7CisgICAgaWYg
KHNpemVvZih2b2lkKikgPT0gNCkgeworCUMoYXBwZW5kKHByb3RvLCBHUENfSV9TRVRfTCwgb2Zm
c2V0LCAwKSk7CisgICAgfSBlbHNlIGlmIChzaXplb2Yodm9pZCopID09IDgpIHsKKwlDKGFwcGVu
ZChwcm90bywgR1BDX0lfU0VUX0wsIG9mZnNldCwgMCkpOworCUMoYXBwZW5kKHByb3RvLCBHUENf
SV9TRVRfTCwgb2Zmc2V0KzQsIDApKTsKKyAgICB9IGVsc2UgeworCXRzZl9hYm9ydCgid2VpcmQg
cG9pbnRlciBzaXplIik7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGlj
IHRzZl9ib29sX3QgZ2VuZXJhdGVfc2V0X2RlZmF1bHQoZ3BjX3Byb3RvX3QgKnByb3RvLAorCQkJ
CSAgICAgICB0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisJCQkJICAgICAgIGdwY19jZWxsX3Qgb2Zm
c2V0KSB7CisgICAgLyogZmlsbCBpbiBkZWZhdWx0IHZhbHVlcyAqLworICAgIHVuc2lnbmVkIGk7
CisJCisgICAgc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RL
X0lOVDg6CisgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NF
VF9DLCBvZmZzZXQsIDApKTsKKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQxNjoKKyAgICBj
YXNlIFRTRl9US19VSU5UMTY6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NFVF9TLCBvZmZzZXQs
IDApKTsKKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAgICBjYXNlIFRTRl9US19V
SU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwlDKGFwcGVuZChwcm90bywgR1BDX0lf
U0VUX0wsIG9mZnNldCwgMCkpOworCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAg
IGNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICBjYXNlIFRTRl9US19MT05HOgorCUMoYXBwZW5kKHBy
b3RvLCBHUENfSV9TRVRfTCwgb2Zmc2V0ICsgMCwgMCkpOworCUMoYXBwZW5kKHByb3RvLCBHUENf
SV9TRVRfTCwgb2Zmc2V0ICsgNCwgMCkpOworCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0ZMT0FU
OiB7CisJdW5pb24geworCSAgICBmbG9hdCBmOworCSAgICB1aW50MzJfdCBpOworCX0gdTsKKwl1
LmYgPSAoZmxvYXQpbG9nKC0xLik7IC8qIE5hTiAqLworCUMoYXBwZW5kKHByb3RvLCBHUENfSV9T
RVRfTCwgb2Zmc2V0LCB1LmkpKTsKKwlicmVhazsKKyAgICB9CisgICAgY2FzZSBUU0ZfVEtfRE9V
QkxFOiB7CisJdW5pb24geworCSAgICBkb3VibGUgZDsKKwkgICAgdWludDMyX3QgaVsyXTsKKwl9
IHU7CisJdS5kID0gKGRvdWJsZSlsb2coLTEuKTsgLyogTmFOICovCisJQyhhcHBlbmQocHJvdG8s
IEdQQ19JX1NFVF9MLCBvZmZzZXQgKyAwLCB1LmlbMF0pKTsKKwlDKGFwcGVuZChwcm90bywgR1BD
X0lfU0VUX0wsIG9mZnNldCArIDQsIHUuaVsxXSkpOworCWJyZWFrOworICAgIH0KKyAgICBjYXNl
IFRTRl9US19CSVQ6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1NFVF9DLCBvZmZzZXQsIDApKTsK
KwlicmVhazsKKyAgICBjYXNlIFRTRl9US19TVFJJTkc6CisJQyhhcHBlbmQocHJvdG8sIEdQQ19J
X1NUUklOR19TRVRFTVBUWSwgb2Zmc2V0KSk7CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQVJS
QVk6CisJc3dpdGNoIChkZXN0X3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSkgewor
CWNhc2UgVFNGX1RLX1ZPSUQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9TRVRfTCwKKwkJ
ICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2FycmF5X3QsIGxlbiks
CisJCSAgICAgMCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMoYXBw
ZW5kKHByb3RvLCBHUENfSV9TRVRfTCwKKwkJICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNm
X25hdGl2ZV9iaXR2ZWN0b3JfdCwgbnVtX2JpdHMpLAorCQkgICAgIDApKTsKKwkgICAgQyhnZW5l
cmF0ZV9zZXRfemVyb19wdHIocHJvdG8sCisJCQkJICAgIG9mZnNldCArIHRzZl9vZmZzZXRvZih0
c2ZfbmF0aXZlX2JpdHZlY3Rvcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMpKSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6
CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9TRVRfTCwKKwkJICAgICBvZmZzZXQgKyB0c2Zf
b2Zmc2V0b2YodHNmX25hdGl2ZV9hcnJheV90LCBsZW4pLAorCQkgICAgIDApKTsKKwkgICAgQyhn
ZW5lcmF0ZV9zZXRfemVyb19wdHIocHJvdG8sCisJCQkJICAgIG9mZnNldCArIHRzZl9vZmZzZXRv
Zih0c2ZfbmF0aXZlX2FycmF5X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkpKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFr
OworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKwlmb3IgKGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90
eXBlX2dldF9udW1fZWxlbWVudHMoZGVzdF90eXBlKTsgKytpKSB7CisJICAgIHRzZl9uYW1lZF90
eXBlX3QgKm4gPSB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQoZGVzdF90eXBlLCBpKTsKKwkg
ICAgQyhnZW5lcmF0ZV9zZXRfZGVmYXVsdChwcm90bywgbi0+dHlwZSwKKwkJCQkgICBvZmZzZXQg
KyBuLT5vZmZzZXQpKTsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorCUMo
YXBwZW5kKHByb3RvLCBHUENfSV9TRVRfTCwKKwkJIChncGNfY2VsbF90KShvZmZzZXQgKyBkZXN0
X3R5cGUtPnUuaC52YWx1ZV9vZmZzZXQpLAorCQkgKGdwY19jZWxsX3QpVUlOVDMyX01BWCkpOwor
CWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FOWToKKwl0c2ZfYWJvcnQoIm5vdCBpbXBsZW1lbnRl
ZCIpOworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJdHNmX2Fib3J0KCJiYWQga2luZCBjb2RlIik7
CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3RhdGljIHRzZl9ib29s
X3QgZ2VuZXJhdGVfc2V0X2RlZmF1bHRfY29waWVyKGdwY19wcm90b190ICpwcm90bywKKwkJCQkJ
ICAgICAgdHNmX3R5cGVfdCAqZGVzdF90eXBlLAorCQkJCQkgICAgICBncGNfY2VsbF90IG9mZnNl
dCkgeworICAgIC8qIHRoaXMgY2FuIGJlIG9wdGltaXplZC4uLiAqLworCisgICAgQyhhcHBlbmQo
cHJvdG8sIEdQQ19JX0RVUF9QVFJfMk5EKSk7CisgICAgQyhnZW5lcmF0ZV9zZXRfZGVmYXVsdChw
cm90bywgZGVzdF90eXBlLCBvZmZzZXQpKTsKKyAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUE9Q
KSk7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCitzdGF0aWMgdHNmX2Jvb2xfdCBn
ZW5lcmF0ZV9wYXJzZXIoZ3BjX3Byb3RvX3QgKnByb3RvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl90eXBlX3QgKmRlc3RfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV90ICpzcmNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncGNfY2VsbF90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncGNfY2VsbF90IGxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRzZl9ib29sX3QgZG9fYm91bmRzX2NoZWNrKSB7CisgICAgdWludDMyX3QgaSwgYml0
ID0gMCwgbnVtX2JpdHMgPSAwOworICAgIGdwY19jZWxsX3QgbG9vcF9sYWJlbCwgZG9uZV9sYWJl
bCwgcmVhbGx5X2RvbmVfbGFiZWwsIGxhYmVsX29mZnNldDsKKyAgICBncGNfY2VsbF90ICp0YXJn
ZXRzOworICAgIHVpbnQzMl90IHN0YXRpY19zaXplOworICAgIHRzZl9ib29sX3QgcmVzdWx0Owor
ICAgIHRzZl9ib29sX3QgaW5zdGFuY2VvZjsKKyAgICAKKyAgICBzdGF0aWNfc2l6ZSA9IHRzZl90
eXBlX2dldF9zdGF0aWNfc2l6ZShzcmNfdHlwZSk7CisKKyAgICBpZiAoZG9fYm91bmRzX2NoZWNr
ICYmIHN0YXRpY19zaXplICE9IFVJTlQzMl9NQVgpIHsKKyAgICAgICAgaWYgKHN0YXRpY19zaXpl
ID4gMCkgeworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0JDLCBzdGF0aWNfc2l6
ZSkpOworICAgICAgICB9CisgICAgICAgIGRvX2JvdW5kc19jaGVjayA9IHRzZl9mYWxzZTsKKyAg
ICB9CisgICAgCisgICAgaW5zdGFuY2VvZiA9IHRzZl90eXBlX2luc3RhbmNlb2Yoc3JjX3R5cGUs
IGRlc3RfdHlwZSk7CisgICAgCisgICAgaWYgKCFpbnN0YW5jZW9mKSB7CisJQyhnZW5lcmF0ZV9z
ZXRfZGVmYXVsdChwcm90bywgZGVzdF90eXBlLCBvZmZzZXQpKTsKKyAgICB9CisgICAgCisgICAg
aWYgKGRlc3RfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lEIHx8ICFpbnN0YW5jZW9mKSB7
CisJLyogdGhpcyBpcyB0aGUgc2tpcCBwYXJzZXIuICovCisKKyAgICAgICAgdHNmX3R5cGVfdCAq
dHlwZSA9IHNyY190eXBlOyAgLyogbWFrZXMgdGhpbmdzIHNpbXBsZXIgc2luY2Ugd2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogd29uJ3QgcmVmZXIgdG8gZGVzdF90
eXBlIGF0IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcG9p
bnQuICovCisgICAgICAgIAorICAgICAgICBpZiAoc3RhdGljX3NpemUgIT0gVUlOVDMyX01BWCkg
eworICAgICAgICAgICAgaWYgKHN0YXRpY19zaXplID4gMCkgeworICAgICAgICAgICAgICAgIEMo
YXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX1NLSVAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKGdwY19jZWxsX3Qpc3RhdGljX3NpemUpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgLyogaW50ZXJlc3Rpbmcgb2JzZXJ2YXRpb246IGZyb20gaGVyZSBvbiwgZG9fYm91
bmRzX2NoZWNrIG11c3QgYmUgdHJ1ZS4KKyAgICAgICAgICogYmVjYXVzZSBpZiBkb19ib3VuZHNf
Y2hlY2sgd2FzIGZhbHNlLCB0aGVuIHRoYXQgbWVhbnMgdGhhdCBhIGJvdW5kcworICAgICAgICAg
KiBjaGVjayB3YXMgcG9zc2libGUsIHdoaWNoIG1lYW5zIGluIHR1cm4gdGhhdCBvdXIgc2l6ZSBp
cyBzdGF0aWNhbGx5CisgICAgICAgICAqIGtub3duLiAqLworICAgICAgICB0c2ZfYXNzZXJ0KGRv
X2JvdW5kc19jaGVjayk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29k
ZSkgeworICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorICAgICAgICAgICAgQyhhcHBlbmQo
cHJvdG8sIEdQQ19JX1RTRl9JTlRFR0VSX1NLSVApKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFRTRl9US19MT05HOgorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19J
X1RTRl9MT05HX1NLSVApKTsKKyAgICAgICAgICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1NUUlVD
VDoKKwkgICAgZm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRz
KHR5cGUpOyArK2kpIHsKKwkJdHNmX25hbWVkX3R5cGVfdCAqbiA9IHRzZl9zdHJ1Y3RfdHlwZV9n
ZXRfZWxlbWVudCh0eXBlLCBpKTsKKwkJaWYgKG4tPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtf
QklUKSB7CisJCSAgICBudW1fYml0cysrOworCQkgICAgY29udGludWU7CisJCX0KKwkJQyhnZW5l
cmF0ZV9wYXJzZXIocHJvdG8sCisJCQkJICB0c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX1ZPSUQpLAor
CQkJCSAgbi0+dHlwZSwKKwkJCQkgIDAsCisJCQkJICBsYWJlbCwKKwkJCQkgIHRzZl90cnVlKSk7
CisJICAgIH0KKwkgICAgaWYgKG51bV9iaXRzKSB7CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQ
Q19JX1NLSVAsCisJCQkgKGdwY19jZWxsX3QpKChudW1fYml0cyArIDcpID4+IDMpKSk7CisJICAg
IH0KKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfQVJSQVk6CisJICAgIGlmICh0eXBlLT51LmEu
ZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX1ZPSUQpIHsKKwkJQyhhcHBlbmQocHJv
dG8sIEdQQ19JX0FSUkFZX0xFTl9TS0lQKSk7CisJICAgIH0gZWxzZSBpZiAodHlwZS0+dS5hLmVs
ZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKwkJQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0JJVFZFQ1RPUl9TS0lQKSk7CisJICAgIH0gZWxzZSB7CisJCXN0YXRpY19zaXplID0K
KwkJICAgIHRzZl90eXBlX2dldF9zdGF0aWNfc2l6ZSh0eXBlLT51LmEuZWxlbWVudF90eXBlKTsK
KwkJaWYgKHN0YXRpY19zaXplID09IFVJTlQzMl9NQVgpIHsKKwkJICAgIEMoYXBwZW5kKHByb3Rv
LCBHUENfSV9BUlJBWV9MRU5fUkVBRF9MT0NBTCkpOworCisJCSAgICBsb29wX2xhYmVsID0gbGFi
ZWwrKzsKKwkJICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgICAgICAg
ICAgCisJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfWkVST0pVTVAsIGRvbmVfbGFiZWwpKTsK
KwkJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgbG9vcF9sYWJlbCkpOworCQkgICAg
QyhnZW5lcmF0ZV9wYXJzZXIocHJvdG8sCisJCQkJICAgICAgdHNmX3R5cGVfY3JlYXRlKFRTRl9U
S19WT0lEKSwKKwkJCQkgICAgICB0eXBlLT51LmEuZWxlbWVudF90eXBlLAorCQkJCSAgICAgIDAs
CisJCQkJICAgICAgbGFiZWwsCisJCQkJICAgICAgdHNmX3RydWUpKTsKKwkJICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9ERUNDT01QSlVNUCwgbG9vcF9sYWJlbCkpOworCQkgICAgQyhhcHBlbmQo
cHJvdG8sIEdQQ19JX0xBQkVMLCBkb25lX2xhYmVsKSk7CisJCSAgICBDKGFwcGVuZChwcm90bywg
R1BDX0lfUE9QKSk7CisJCX0gZWxzZSB7CisJCSAgICBDKGFwcGVuZChwcm90bywKKwkJCSAgICAg
R1BDX0lfQVJSQVlfU0tJUCwKKwkJCSAgICAgKGdwY19jZWxsX3Qpc3RhdGljX3NpemUpKTsKKwkJ
fQorCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0NIT0lDRToKKwkgICAgdHNmX2Fz
c2VydCh0c2ZfY2hvaWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICh0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSA+PSAyNTYg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICF0eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29y
ZCkpOworICAgICAgICAgICAgICAgIAorCSAgICBpZiAodHNmX2Nob2ljZV90eXBlX2dldF9udW1f
ZWxlbWVudHModHlwZSkgPj0gMjU2KSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUtPnUuaC5j
aG9pY2VfYXNfZnVsbF93b3JkKSB7CisgICAgICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3Rv
LCBHUENfSV9CQywgNCkpOworICAgICAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BD
X0lfUkVBREwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBpZiAodHNmX2Nob2ljZV90eXBlX2hhc19ub25fdm9pZCh0eXBlKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9VTlNJR05FRF9SRUFEX1NVQjEp
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9UU0ZfVU5TSUdORURfU0tJUCkpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCSAgICB9IGVsc2UgeworCQlDKGFwcGVuZChw
cm90bywgR1BDX0lfQkMsIDEpKTsKKwkJQyhhcHBlbmQocHJvdG8sIEdQQ19JX1JFQURDX1RPX0NI
T0lDRSkpOworCSAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0c2ZfY2hvaWNl
X3R5cGVfaGFzX25vbl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgbGFiZWxfb2Zmc2V0
ID0gbGFiZWw7CisgICAgICAgICAgICAgICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9u
dW1fZWxlbWVudHModHlwZSk7CisgICAgICAgICAgICAgICAgZG9uZV9sYWJlbCA9IGxhYmVsKys7
CisgICAgICAgICAgICAgICAgdGFyZ2V0cz1tYWxsb2Moc2l6ZW9mKGdwY19jZWxsX3QpICoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVt
ZW50cyh0eXBlKSk7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldHMgPT0gTlVMTCkgeworICAg
ICAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGFycmF5IG9m
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3BjX2NlbGxfdCIpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxl
bWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICB0YXJnZXRzW2ldID0gbGFi
ZWxfb2Zmc2V0ICsgaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gYXBwZW5kX3RhYmxlanVtcF9sb2NhbCgKKyAgICAgICAgICAgICAgICAgICAgcHJvdG8sCisg
ICAgICAgICAgICAgICAgICAgIHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUp
LAorICAgICAgICAgICAgICAgICAgICB0YXJnZXRzKTsKKyAgICAgICAgICAgICAgICBmcmVlKHRh
cmdldHMpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIC8qIGZvciB1bmtub3duIChkZWZhdWx0KSB2YWx1ZXMgKi8KKyAg
ICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgZG9uZV9sYWJlbCkpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfY2hv
aWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQodHlw
ZSwgaSk7CisgICAgICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwg
bGFiZWxfb2Zmc2V0ICsgaSkpOworICAgICAgICAgICAgICAgICAgICBDKGdlbmVyYXRlX3BhcnNl
cihwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
Y3JlYXRlKFRTRl9US19WT0lEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbi0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90cnVlKSk7CisgICAgICAgICAgICAgICAgICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9KVU1QLCBkb25lX2xhYmVsKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgZG9uZV9s
YWJlbCkpOworICAgICAgICAgICAgfQorCSAgICBicmVhazsKKwljYXNlIFRTRl9US19TVFJJTkc6
CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9TVFJJTkdfU0tJUCkpOworCSAgICBicmVhazsK
KwljYXNlIFRTRl9US19BTlk6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9BTllfU0tJUCkp
OworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQoIlRoZXJlIGFwcGVhcnMg
dG8gYmUgYSBraW5kIGNvZGUgdGhhdCB3ZSBkb24ndCAiCisJCSAgICAgICJrbm93IGFib3V0Iik7
CisJICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHNmX3Ry
dWU7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoc3JjX3R5cGUtPmtpbmRfY29kZSkgeworICAg
IGNhc2UgVFNGX1RLX1ZPSUQ6CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKwlzd2l0
Y2ggKGRlc3RfdHlwZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtfQklUOgorCSAgICBDKGFw
cGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19CSVRfSU5DU1JDLCBvZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAg
QyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSENfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBD
KGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19TX0VfSU5DU1JDLCBvZmZzZXQpKTsK
KwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorCWNhc2UgVFNGX1RLX0lOVDMyOgor
ICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lf
Q09QWV9OVE9IQ19UT19MX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBU
U0ZfVEtfVUlOVDY0OgorCWNhc2UgVFNGX1RLX0lOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19M
T05HOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19MTF9FX0lOQ1NS
Qywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFw
cGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19UT19GX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BD
X0lfQ09QWV9OVE9IQ19UT19EX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVm
YXVsdDoKKwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9u
OyAiCisJCSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2Zf
dHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2Ug
VFNGX1RLX1VJTlQ4OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRT
Rl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0JJVF9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2Ug
VFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IQ19JTkNT
UkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMTY6CisJY2FzZSBU
U0ZfVEtfSU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX1Nf
Wl9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6CisJ
Y2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0xfWl9JTkNTUkMsIG9mZnNldCkpOwor
CSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UNjQ6CisJY2FzZSBUU0ZfVEtfSU5UNjQ6Cisg
ICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZ
X05UT0hDX1RPX0xMX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0Zf
VEtfRkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0ZfWl9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19ET1VCTEU6CisJICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hDX1RPX0RfWl9JTkNTUkMsIG9mZnNldCkp
OworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9k
ZXN0X3R5cGUgY29tYmluYXRpb247ICIKKwkJICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0
IGJ5ICIKKwkJICAgICAgInRzZl90eXBlX2luc3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9
CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtp
bmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19J
X0NPUFlfTlRPSFNfVE9fQklUX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2Ug
VFNGX1RLX0lOVDg6CisJY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLCBH
UENfSV9DT1BZX05UT0hTX1RPX0NfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2Fz
ZSBUU0ZfVEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90
bywgR1BDX0lfQ09QWV9OVE9IU19JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNl
IFRTRl9US19VSU5UMzI6CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RL
X0lOVEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0xfRV9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UNjQ6CisJY2Fz
ZSBUU0ZfVEtfSU5UNjQ6CisgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0xMX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9D
T1BZX05UT0hTX1RPX0ZfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRT
Rl9US19ET1VCTEU6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0Rf
RV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJv
cnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRpb247ICIKKwkJICAgICAgInNob3Vs
ZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRzZl90eXBlX2luc3RhbmNlb2YoKSIp
OworCSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDE2OgorCXN3
aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMo
YXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hTX1RPX0JJVF9JTkNTUkMsIG9mZnNldCkpOwor
CSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAg
ICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IU19UT19DX0lOQ1NSQywgb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQxNjoKKwljYXNlIFRTRl9US19JTlQxNjoK
KwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSFNfSU5DU1JDLCBvZmZzZXQpKTsK
KwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorCWNhc2UgVFNGX1RLX0lOVDMyOgor
ICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lf
Q09QWV9OVE9IU19UT19MX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBU
U0ZfVEtfVUlOVDY0OgorCWNhc2UgVFNGX1RLX0lOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19M
T05HOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IU19UT19MTF9aX0lOQ1NS
Qywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFw
cGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IU19UT19GX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BD
X0lfQ09QWV9OVE9IU19UT19EX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVm
YXVsdDoKKwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9u
OyAiCisJCSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2Zf
dHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2Ug
VFNGX1RLX0lOVDMyOgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRT
Rl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMX1RPX0JJVF9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2Ug
VFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITF9UT19D
X0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQxNjoKKwlj
YXNlIFRTRl9US19JTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExf
VE9fU19JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6
CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKwljYXNlIFRTRl9US19JTlQ2NDoKKyAgICAg
ICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRP
SExfVE9fTExfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19G
TE9BVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExfVE9fRl9FX0lOQ1NS
Qywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExfVE9fRF9FX0lOQ1NSQywgb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3Rf
dHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkg
IgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwli
cmVhazsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRf
Y29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NP
UFlfTlRPSExfVE9fQklUX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNG
X1RLX0lOVDg6CisJY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9DT1BZX05UT0hMX1RPX0NfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBU
U0ZfVEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywg
R1BDX0lfQ09QWV9OVE9ITF9UT19TX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNh
c2UgVFNGX1RLX1VJTlQzMjoKKwljYXNlIFRTRl9US19JTlQzMjoKKyAgICAgICAgY2FzZSBUU0Zf
VEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExfSU5DU1JD
LCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorCWNhc2UgVFNG
X1RLX0lOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90
bywgR1BDX0lfQ09QWV9OVE9ITF9UT19MTF9aX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFr
OworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9O
VE9ITF9UT19GX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtf
RE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITF9UT19EX1pfSU5D
U1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdHNmX2Fib3J0KCJC
YWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAgICAgICJzaG91bGQgaGF2
ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkg
ICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorCXN3aXRjaCAo
ZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9DT1BZX05UT0hMTF9UT19CSVRfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX1RPX0NfSU5DU1JDLCBvZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAg
ICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITExfVE9fU19JTkNTUkMsIG9mZnNldCkp
OworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6CisJY2FzZSBUU0ZfVEtfSU5UMzI6
CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9DT1BZX05UT0hMTF9UT19MX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2Ug
VFNGX1RLX1VJTlQ2NDoKKwljYXNlIFRTRl9US19JTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtf
TE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX0lOQ1NSQywgb2Zm
c2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChw
cm90bywgR1BDX0lfQ09QWV9OVE9ITExfVE9fRl9FX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NP
UFlfTlRPSExMX1RPX0RfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZhdWx0
OgorCSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRpb247ICIK
KwkJICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRzZl90eXBl
X2luc3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfVUlOVDY0OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9U
S19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMTF9UT19CSVRfSU5D
U1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRT
Rl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX1RPX0Nf
SU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCWNh
c2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITExf
VE9fU19JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UMzI6
CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hMTF9UT19MX0lOQ1NSQywgb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKwljYXNlIFRTRl9US19JTlQ2NDoK
KyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NP
UFlfTlRPSExMX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZM
T0FUOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9ITExfVE9fRl9aX0lOQ1NS
Qywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSExMX1RPX0RfWl9JTkNTUkMsIG9mZnNldCkpOwor
CSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0
X3R5cGUgY29tYmluYXRpb247ICIKKwkJICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5
ICIKKwkJICAgICAgInRzZl90eXBlX2luc3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJ
YnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfRkxPQVQ6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRf
Y29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NP
UFlfTlRPSEZfVE9fQklUX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNG
X1RLX0lOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hGX1RPX0NfRV9J
TkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAg
QyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSEZfVE9fQ19aX0lOQ1NSQywgb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywg
R1BDX0lfQ09QWV9OVE9IRl9UT19TX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9I
Rl9UT19TX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5U
MzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBH
UENfSV9DT1BZX05UT0hGX1RPX0xfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlj
YXNlIFRTRl9US19VSU5UMzI6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hG
X1RPX0xfWl9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ2
NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19J
X0NPUFlfTlRPSEZfVE9fTExfRV9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNl
IFRTRl9US19VSU5UNjQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hGX1RP
X0xMX1pfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6
CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hGX0lOQ1NSQywgb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0NPUFlfTlRPSEZfVE9fRF9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwlk
ZWZhdWx0OgorCSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRp
b247ICIKKwkJICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRz
Zl90eXBlX2luc3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2Fz
ZSBUU0ZfVEtfRE9VQkxFOgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNl
IFRTRl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hEX1RPX0JJ
VF9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCSAg
ICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19DX0VfSU5DU1JDLCBvZmZzZXQp
KTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3Rv
LCBHUENfSV9DT1BZX05UT0hEX1RPX0NfWl9JTkNTUkMsIG9mZnNldCkpOworCSAgICBicmVhazsK
KwljYXNlIFRTRl9US19JTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRP
SERfVE9fU19FX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJ
TlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NPUFlfTlRPSERfVE9fU19aX0lOQ1NS
Qywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgorICAgICAgICBj
YXNlIFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9I
RF9UT19MX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlO
VDMyOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19MX1pfSU5DU1JD
LCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisgICAgICAgIGNh
c2UgVFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9DT1BZX05UT0hEX1RP
X0xMX0VfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDY0
OgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19MTF9aX0lOQ1NSQywg
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVu
ZChwcm90bywgR1BDX0lfQ09QWV9OVE9IRF9UT19GX0lOQ1NSQywgb2Zmc2V0KSk7CisJICAgIGJy
ZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0NP
UFlfTlRPSERfSU5DU1JDLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAg
dHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAgICAg
ICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0YW5j
ZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVEVH
RVI6CisgICAgICAgIHRzZl9hc3NlcnQoZG9fYm91bmRzX2NoZWNrKTsKKwlzd2l0Y2ggKGRlc3Rf
dHlwZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtfQklUOgorCSAgICBDKGFwcGVuZChwcm90
bywgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19CSVQsIG9mZnNldCkpOworCSAgICBicmVhazsK
KwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChw
cm90bywgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19DLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7
CisJY2FzZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVu
ZChwcm90bywgR1BDX0lfVFNGX0lOVEVHRVJfUkVBRF9UT19TLCBvZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBj
YXNlIFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfVFNGX0lOVEVH
RVJfUkVBRCwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNh
c2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBl
bmQocHJvdG8sIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9fTEwsIG9mZnNldCkpOworCSAgICBi
cmVhazsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RT
Rl9JTlRFR0VSX1JFQURfVE9fRiwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RL
X0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9JTlRFR0VSX1JFQURfVE9f
RCwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFk
IHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUg
YmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAg
IGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19MT05HOgorICAgICAgICB0c2Zf
YXNzZXJ0KGRvX2JvdW5kc19jaGVjayk7CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkg
eworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05H
X1JFQURfVE9fQklULCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoK
KwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05H
X1JFQURfVE9fQywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2Ogor
CWNhc2UgVFNGX1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05H
X1JFQURfVE9fUywgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgor
CWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAg
QyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fTCwgb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAg
ICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05H
X1JFQUQsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAg
QyhhcHBlbmQocHJvdG8sIEdQQ19JX1RTRl9MT05HX1JFQURfVE9fRiwgb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19J
X1RTRl9MT05HX1JFQURfVE9fRCwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJ
ICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkg
ICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5z
dGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19C
SVQ6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0lOVDg6
CisJY2FzZSBUU0ZfVEtfVUlOVDg6CisJY2FzZSBUU0ZfVEtfQklUOgorCSAgICBDKGFwcGVuZChw
cm90bywgR1BDX0lfQklUX1JFQUQsIG9mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9U
S19JTlQxNjoKKwljYXNlIFRTRl9US19VSU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9CSVRfUkVBRF9UT19TLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5U
MzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgor
CSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQklUX1JFQURfVE9fTCwgb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAg
ICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0JJVF9SRUFE
X1RPX0xMLCBvZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9CSVRfUkVBRF9UT19GLCBvZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQklU
X1JFQURfVE9fRCwgb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9h
Ym9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hv
dWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigp
Iik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6CisJ
aWYgKGRlc3RfdHlwZS0+dS5zLmNvbnN0cnVjdG9yICE9IE5VTEwpIHsKKwkgICAgQyhhcHBlbmQo
cHJvdG8sIEdQQ19JX0NBTEwsCisJCSAgICAgb2Zmc2V0LAorCQkgICAgIGRlc3RfdHlwZS0+dS5z
LmNvbnN0cnVjdG9yKSk7CisJfQorCWlmIChkZXN0X3R5cGUtPnUucy5wcmVfZGVzdHJ1Y3RvciAh
PSBOVUxMKSB7CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9BRERfQ0JBQ0ssCisJCSAgICAg
b2Zmc2V0LAorCQkgICAgIGRlc3RfdHlwZS0+dS5zLnByZV9kZXN0cnVjdG9yKSk7CisJfQorCisJ
Zm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRlc3RfdHlw
ZSk7ICsraSkgeworCSAgICB0c2ZfbmFtZWRfdHlwZV90ICpkbiA9IHRzZl9zdHJ1Y3RfdHlwZV9n
ZXRfZWxlbWVudChkZXN0X3R5cGUsIGkpOworCSAgICBpZiAodHNmX3N0cnVjdF90eXBlX2ZpbmRf
bm9kZShzcmNfdHlwZSwgZG4tPm5hbWUpID09IE5VTEwpIHsKKwkJQyhnZW5lcmF0ZV9zZXRfZGVm
YXVsdChwcm90bywgZG4tPnR5cGUsIG9mZnNldCArIGRuLT5vZmZzZXQpKTsKKwkgICAgfQorCX0K
Kwlmb3IgKGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5
cGUpOyArK2kpIHsKKwkgICAgdHNmX25hbWVkX3R5cGVfdCAqc24gPSB0c2Zfc3RydWN0X3R5cGVf
Z2V0X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCSAgICB0c2ZfbmFtZWRfdHlwZV90ICpkbjsKKwkg
ICAgaWYgKHNuLT50eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworCQludW1fYml0cysr
OworCQljb250aW51ZTsKKwkgICAgfQorCSAgICBkbiA9IHRzZl9zdHJ1Y3RfdHlwZV9maW5kX25v
ZGUoZGVzdF90eXBlLCBzbi0+bmFtZSk7CisJICAgIGlmIChkbiA9PSBOVUxMKSB7CisJCS8qIHNr
aXAgKi8KKwkJQyhnZW5lcmF0ZV9wYXJzZXIocHJvdG8sCisJCQkJICB0c2ZfdHlwZV9jcmVhdGUo
VFNGX1RLX1ZPSUQpLAorCQkJCSAgc24tPnR5cGUsCisJCQkJICAwLAorCQkJCSAgbGFiZWwsCisJ
CQkJICBkb19ib3VuZHNfY2hlY2spKTsKKwkgICAgfSBlbHNlIHsKKwkJLyogcmVhZCBpdCAqLwor
CQlDKGdlbmVyYXRlX3BhcnNlcihwcm90bywKKwkJCQkgIGRuLT50eXBlLAorCQkJCSAgc24tPnR5
cGUsCisJCQkJICBvZmZzZXQgKyBkbi0+b2Zmc2V0LAorCQkJCSAgbGFiZWwsCisJCQkJICBkb19i
b3VuZHNfY2hlY2spKTsKKwkgICAgfQorCX0KKyAgICAgICAgICAgIAorCWlmIChudW1fYml0cykg
eworCSAgICBpZiAoZG9fYm91bmRzX2NoZWNrKSB7CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQ
Q19JX0JDLAorCQkJIChncGNfY2VsbF90KSgobnVtX2JpdHMgKyA3KSA+PiAzKSkpOworCSAgICB9
CisgICAgICAgICAgICAgICAgCisJICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVf
Z2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2ZfbmFtZWRfdHlwZV90ICpz
biA9CisJCSAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCQl0
c2ZfbmFtZWRfdHlwZV90ICpkbjsKKwkJaWYgKHNuLT50eXBlLT5raW5kX2NvZGUgIT0gVFNGX1RL
X0JJVCkgeworCQkgICAgY29udGludWU7CisJCX0KKwkJZG4gPSB0c2Zfc3RydWN0X3R5cGVfZmlu
ZF9ub2RlKGRlc3RfdHlwZSwgc24tPm5hbWUpOworCQlpZiAoZG4gIT0gTlVMTCkgeworCQkgICAg
c3dpdGNoIChkbi0+dHlwZS0+a2luZF9jb2RlKSB7CisJCSAgICBjYXNlIFRTRl9US19WT0lEOgor
CQkJYnJlYWs7CisJCSAgICBjYXNlIFRTRl9US19CSVQ6CisJCSAgICBjYXNlIFRTRl9US19JTlQ4
OgorCQkgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisJCQlDKGFwcGVuZChwcm90bywKKwkJCQkgR1BD
X0lfQklUX01BU0tfUkVBRCwKKwkJCQkgYml0LAorCQkJCSBvZmZzZXQgKyBkbi0+b2Zmc2V0KSk7
CisJCQlicmVhazsKKwkJICAgIGNhc2UgVFNGX1RLX0lOVDE2OgorCQkgICAgY2FzZSBUU0ZfVEtf
VUlOVDE2OgorCQkJQyhhcHBlbmQocHJvdG8sCisJCQkJIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9f
UywKKwkJCQkgYml0LAorCQkJCSBvZmZzZXQgKyBkbi0+b2Zmc2V0KSk7CisJCQlicmVhazsKKwkJ
ICAgIGNhc2UgVFNGX1RLX0lOVDMyOgorCQkgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCQkJQyhhcHBlbmQocHJvdG8sCisJ
CQkJIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fTCwKKwkJCQkgYml0LAorCQkJCSBvZmZzZXQgKyBk
bi0+b2Zmc2V0KSk7CisJCQlicmVhazsKKwkJICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorCQkgICAg
Y2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICAgICAgICAgICAgICBjYXNlIFRTRl9US19MT05H
OgorCQkJQyhhcHBlbmQocHJvdG8sCisJCQkJIEdQQ19JX0JJVF9NQVNLX1JFQURfVE9fTEwsCisJ
CQkJIGJpdCwKKwkJCQkgb2Zmc2V0ICsgZG4tPm9mZnNldCkpOworCQkJYnJlYWs7CisJCSAgICBj
YXNlIFRTRl9US19GTE9BVDoKKwkJCUMoYXBwZW5kKHByb3RvLAorCQkJCSBHUENfSV9CSVRfTUFT
S19SRUFEX1RPX0YsCisJCQkJIGJpdCwKKwkJCQkgb2Zmc2V0ICsgZG4tPm9mZnNldCkpOworCQkJ
YnJlYWs7CisJCSAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJCQlDKGFwcGVuZChwcm90bywKKwkJ
CQkgR1BDX0lfQklUX01BU0tfUkVBRF9UT19ELAorCQkJCSBiaXQsCisJCQkJIG9mZnNldCArIGRu
LT5vZmZzZXQpKTsKKwkJCWJyZWFrOworCQkgICAgZGVmYXVsdDoKKwkJCXRzZl9hYm9ydCgiQmFk
IHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkJCSAgInNob3VsZCBoYXZlIGJl
ZW4gY2F1Z2h0IGJ5ICIKKwkJCQkgICJ0c2ZfdHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkJCWJyZWFr
OworCQkgICAgfQorCQl9CisJCSsrYml0OworCQlpZiAoYml0ID09IDgpIHsKKwkJICAgIGJpdCA9
IDA7CisJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfU0tJUCwgMSkpOworCQl9CisJICAgIH0K
KwkgICAgaWYgKGJpdCkgeworCQlDKGFwcGVuZChwcm90bywgR1BDX0lfU0tJUCwgMSkpOworCSAg
ICB9CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorCWlmIChkZXN0X3R5cGUt
PnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworCSAgICBDKGFw
cGVuZChwcm90bywKKwkJICAgICBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRCwKKwkJICAgICBv
ZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2FycmF5X3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSkpOworICAgICAgICAgICAgICAg
IAorCSAgICBpZiAoc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0Zf
VEtfQklUKSB7CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0JJVFZFQ1RPUl9CQ19BTkRf
U0tJUF9GSUVMRCwKKwkJCSBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2Fy
cmF5X3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
bikpKTsKKwkgICAgfSBlbHNlIGlmIChzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9j
b2RlCisJCSAgICAgICA9PSBUU0ZfVEtfVk9JRCkgeworCQkvKiBub3RoaW5nIHRvIGRvICovCisJ
ICAgIH0gZWxzZSB7CisJCXN0YXRpY19zaXplID0KKwkJICAgIHRzZl90eXBlX2dldF9zdGF0aWNf
c2l6ZShzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSk7CisJCWlmIChzdGF0aWNfc2l6ZSA9PSBV
SU5UMzJfTUFYKSB7CisJCSAgICBsb29wX2xhYmVsID0gbGFiZWwrKzsKKwkJICAgIGRvbmVfbGFi
ZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgICBDKGFwcGVuZChw
cm90bywKKwkJCSAgICAgR1BDX0lfUFVTSF9WQUwsCisJCQkgICAgIG9mZnNldCArIHRzZl9vZmZz
ZXRvZih0c2ZfbmF0aXZlX3ZvaWRfYXJyYXlfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlbikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IAorCQkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1pFUk9KVU1QLCBkb25lX2xhYmVsKSk7CisJ
CSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfTEFCRUwsIGxvb3BfbGFiZWwpKTsKKwkJICAgIEMo
Z2VuZXJhdGVfcGFyc2VyKHByb3RvLAorCQkJCSAgICAgIHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtf
Vk9JRCksCisJCQkJICAgICAgc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisJCQkJICAgICAg
MCwKKwkJCQkgICAgICBsYWJlbCwKKwkJCQkgICAgICB0c2ZfdHJ1ZSkpOworCQkgICAgQyhhcHBl
bmQocHJvdG8sIEdQQ19JX0RFQ0NPTVBKVU1QLCBsb29wX2xhYmVsKSk7CisJCSAgICBDKGFwcGVu
ZChwcm90bywgR1BDX0lfTEFCRUwsIGRvbmVfbGFiZWwpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIAorCQkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BPUCkpOworCQl9IGVsc2UgeworCQkg
ICAgQyhhcHBlbmQocHJvdG8sCisJCQkgICAgIEdQQ19JX0FSUkFZX0JDX0FORF9TS0lQX0ZJRUxE
LAorCQkJICAgICBvZmZzZXQgKyB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV92b2lkX2FycmF5X3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4p
LAorCQkJICAgICBzdGF0aWNfc2l6ZSkpOworCQl9CisJICAgIH0KKwl9IGVsc2UgaWYgKGRlc3Rf
dHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKwkgICAg
c3dpdGNoIChzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlKSB7CisJICAgIGNh
c2UgVFNGX1RLX0JJVDoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9SX1JF
QUQsCisJCQkgb2Zmc2V0KSk7CisJCWJyZWFrOworCSAgICBjYXNlIFRTRl9US19VSU5UODoKKwkg
ICAgY2FzZSBUU0ZfVEtfSU5UODoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVD
VE9SX1JFQURfRlJPTV9DLAorCQkJIG9mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0Zf
VEtfVUlOVDE2OgorCSAgICBjYXNlIFRTRl9US19JTlQxNjoKKwkJQyhhcHBlbmQocHJvdG8sCisJ
CQkgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9TLAorCQkJIG9mZnNldCkpOworCQlicmVhazsK
KwkgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOgorCSAgICBjYXNlIFRTRl9US19JTlQzMjoKKwkJQyhh
cHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJPTV9MLAorCQkJIG9mZnNl
dCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorCSAgICBjYXNlIFRTRl9U
S19JTlQ2NDoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9SX1JFQURfRlJP
TV9MTCwKKwkJCSBvZmZzZXQpKTsKKwkJYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRTRl9US19J
TlRFR0VSOgorICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fVFNGX0lOVEVHRVJfQVJSQVksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFRTRl9US19MT05HOgorICAgICAgICAgICAgICAgIEMoYXBwZW5k
KHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZS
T01fVFNGX0xPTkdfQVJSQVksCisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0ZMT0FUOgorCQlDKGFwcGVu
ZChwcm90bywKKwkJCSBHUENfSV9CSVRWRUNUT1JfUkVBRF9GUk9NX0YsCisJCQkgb2Zmc2V0KSk7
CisJCWJyZWFrOworCSAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJCUMoYXBwZW5kKHByb3RvLAor
CQkJIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX0ZST01fRCwKKwkJCSBvZmZzZXQpKTsKKwkJYnJlYWs7
CisJICAgIGRlZmF1bHQ6CisJCXRzZl9hYm9ydCgib2RkIGNhc2UiKTsKKwkJYnJlYWs7CisJICAg
IH0KKwl9IGVsc2UgaWYgKHNyY190eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0g
VFNGX1RLX0JJVCkgeworCSAgICBzd2l0Y2ggKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+
a2luZF9jb2RlKSB7CisJICAgIGNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBjYXNlIFRTRl9US19J
TlQ4OgorCQlDKGFwcGVuZChwcm90bywKKwkJCSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19DLAor
CQkJIG9mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBj
YXNlIFRTRl9US19JTlQxNjoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQklUVkVDVE9S
X1JFQURfVE9fUywKKwkJCSBvZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX1VJ
TlQzMjoKKwkgICAgY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgICAgICAgICBjYXNlIFRTRl9US19J
TlRFR0VSOgorCQlDKGFwcGVuZChwcm90bywKKwkJCSBHUENfSV9CSVRWRUNUT1JfUkVBRF9UT19M
LAorCQkJIG9mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorCSAg
ICBjYXNlIFRTRl9US19JTlQ2NDoKKyAgICAgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJCUMo
YXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX1RPX0xMLAorCQkJIG9mZnNl
dCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfRkxPQVQ6CisJCUMoYXBwZW5kKHByb3Rv
LAorCQkJIEdQQ19JX0JJVFZFQ1RPUl9SRUFEX1RPX0YsCisJCQkgb2Zmc2V0KSk7CisJCWJyZWFr
OworCSAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19J
X0JJVFZFQ1RPUl9SRUFEX1RPX0QsCisJCQkgb2Zmc2V0KSk7CisJCWJyZWFrOworCSAgICBkZWZh
dWx0OgorCQl0c2ZfYWJvcnQoIm9kZCBjYXNlIik7CisJCWJyZWFrOworCSAgICB9CisJfSBlbHNl
IGlmIChzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlCisJCSAgID09IGRlc3Rf
dHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlICYmCisJCSAgIChzcmNfdHlwZS0+dS5h
LmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19VSU5UOCB8fAorCQkgICAgc3JjX3R5
cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfSU5UOAorI2lmbmRlZiBO
RUVEX0lOVF9DT05WRVJTSU9OCisJCSAgICB8fCAodHNmX3R5cGVfa2luZF9pc19pbnQoc3JjX3R5
cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29kZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICYmIHNyY190eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgIT0gVFNGX1RLX0lOVEVH
RVIKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHNyY190eXBlLT51LmEuZWxlbWVudF90eXBl
LT5raW5kX2NvZGUgIT0gVFNGX1RLX0xPTkcpCisjZW5kaWYKKyNpZm5kZWYgTkVFRF9GTE9BVF9D
T05WRVJTSU9OCisJCSAgICB8fCB0c2ZfdHlwZV9raW5kX2lzX2Zsb2F0KHNyY190eXBlLT51LmEu
ZWxlbWVudF90eXBlLT5raW5kX2NvZGUpCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKSkg
eworCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9CWVRFX0FSUkFZX1JFQUQsCisJ
CSAgICAgb2Zmc2V0LAorCQkgICAgIHRzZl90eXBlX2dldF9zdGF0aWNfc2l6ZShzcmNfdHlwZS0+
dS5hLmVsZW1lbnRfdHlwZSkpKTsKKwl9IGVsc2UgeworCSAgICBDKGFwcGVuZChwcm90bywKKwkJ
ICAgICBHUENfSV9BUlJBWV9MRU5fUkVBRF9GSUVMRCwKKwkJICAgICBvZmZzZXQgKyB0c2Zfb2Zm
c2V0b2YodHNmX25hdGl2ZV9hcnJheV90LCBsZW4pKSk7CisgICAgICAgICAgICAgICAgCisJICAg
IHN0YXRpY19zaXplID0gdHNmX3R5cGVfZ2V0X3N0YXRpY19zaXplKHNyY190eXBlLT51LmEuZWxl
bWVudF90eXBlKTsKKwkgICAgaWYgKHN0YXRpY19zaXplICE9IFVJTlQzMl9NQVgpIHsKKwkJQyhh
cHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQVJSQVlfQkNfRklFTEQsCisJCQkgb2Zmc2V0ICsgdHNm
X29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwgbGVuKSwKKwkJCSBzdGF0aWNfc2l6ZSkpOwor
CSAgICB9CisgICAgICAgICAgICAKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lf
QUxMT0NfQVJSQVksCisJCSAgICAgb2Zmc2V0LAorCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRf
c2l6ZShkZXN0X3R5cGUtPnUuYS5lbGVtZW50X3R5cGUpKSk7CisgICAgICAgICAgICAgICAgCisJ
ICAgIGxvb3BfbGFiZWwgPSBsYWJlbCsrOworCSAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKyAg
ICAgICAgICAgICAgICAKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfUkVQVVNI
X01VTEFERF9QVFIsCisJCSAgICAgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJy
YXlfdCxsZW4pLAorCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZShkZXN0X3R5cGUtPnUu
YS5lbGVtZW50X3R5cGUpKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NP
TVBGQUlMSlVNUCwKKwkJICAgICBkb25lX2xhYmVsKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLCBH
UENfSV9MQUJFTCwgbG9vcF9sYWJlbCkpOworCSAgICBDKGdlbmVyYXRlX3BhcnNlcihwcm90bywK
KwkJCSAgICAgIGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSwKKwkJCSAgICAgIHNyY190eXBl
LT51LmEuZWxlbWVudF90eXBlLAorCQkJICAgICAgMCwKKwkJCSAgICAgIGxhYmVsLAorCQkJICAg
ICAgc3RhdGljX3NpemUgPT0gVUlOVDMyX01BWCkpOworCSAgICBDKGFwcGVuZChwcm90bywKKwkJ
ICAgICBHUENfSV9BRERDT01QSlVNUCwKKwkJICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUo
ZGVzdF90eXBlLT51LmEuZWxlbWVudF90eXBlKSwKKwkJICAgICBsb29wX2xhYmVsKSk7CisJICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9MQUJFTCwgZG9uZV9sYWJlbCkpOworCSAgICBDKGFwcGVu
ZChwcm90bywgR1BDX0lfVFdPX1BPUCkpOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19D
SE9JQ0U6CisJaWYgKHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHNyY190eXBlKSA+
PSAyNTYpIHsKKyAgICAgICAgICAgIGlmIChzcmNfdHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dv
cmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZG9fYm91bmRzX2NoZWNrKSB7CisgICAgICAgICAg
ICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9CQywgNCkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUkVBREwpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1RT
Rl9VTlNJR05FRF9SRUFEX1NVQjEpKTsKKyAgICAgICAgICAgIH0KKwl9IGVsc2UgeworCSAgICBp
ZiAoZG9fYm91bmRzX2NoZWNrKSB7CisJCUMoYXBwZW5kKHByb3RvLCBHUENfSV9CQywgMSkpOwor
CSAgICB9CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9SRUFEQ19UT19DSE9JQ0UpKTsKKwl9
CisgICAgICAgICAgICAKKwlpZiAodHNmX2Nob2ljZV90eXBlX2hhc19ub25fdm9pZChzcmNfdHlw
ZSkpIHsKKwkgICAgLyogdXNlIHRhYmxlanVtcCAqLworCSAgICBsYWJlbF9vZmZzZXQgPSBsYWJl
bDsKKwkgICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5
cGUpOworCSAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKwkgICAgcmVhbGx5X2RvbmVfbGFiZWwg
PSBsYWJlbCsrOworCSAgICB0YXJnZXRzPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkgKgorCQkJ
ICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUpKTsKKwkgICAgaWYg
KHRhcmdldHMgPT0gTlVMTCkgeworCQl0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGFy
cmF5IG9mICIKKwkJCSAgICAgICJncGNfY2VsbF90Iik7CisJCXJldHVybiB0c2ZfZmFsc2U7CisJ
ICAgIH0KKwkgICAgZm9yIChpID0gMDsgaSA8IHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1l
bnRzKHNyY190eXBlKTsgKytpKSB7CisJCXRhcmdldHNbaV0gPSBsYWJlbF9vZmZzZXQgKyBpOwor
CSAgICB9CisJICAgIHJlc3VsdD1hcHBlbmRfdGFibGVqdW1wX2xvY2FsKHByb3RvLAorCQkJCQkg
IHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHNyY190eXBlKSwKKwkJCQkJICB0YXJn
ZXRzKTsKKwkgICAgZnJlZSh0YXJnZXRzKTsKKwkgICAgaWYgKCFyZXN1bHQpIHsKKwkJcmV0dXJu
IHRzZl9mYWxzZTsKKwkgICAgfQorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9T
RVRfTCwKKwkJICAgICAoZ3BjX2NlbGxfdCkob2Zmc2V0ICsgZGVzdF90eXBlLT51LmgudmFsdWVf
b2Zmc2V0KSwKKwkJICAgICAoZ3BjX2NlbGxfdClVSU5UMzJfTUFYKSk7CisJICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9KVU1QLCByZWFsbHlfZG9uZV9sYWJlbCkpOworCSAgICBmb3IgKGkgPSAw
OyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUpOyArK2kpIHsK
KwkJdHNmX25hbWVkX3R5cGVfdCAqc24gPQorCQkgICAgdHNmX2Nob2ljZV90eXBlX2dldF9lbGVt
ZW50KHNyY190eXBlLCBpKTsKKwkJdHNmX25hbWVkX3R5cGVfdCAqZG4gPQorCQkgICAgdHNmX2No
b2ljZV90eXBlX2ZpbmRfbm9kZShkZXN0X3R5cGUsIHNuLT5uYW1lKTsKKwkJQyhhcHBlbmQocHJv
dG8sIEdQQ19JX0xBQkVMLCBsYWJlbF9vZmZzZXQgKyBpKSk7CisJCWlmIChkbiA9PSBOVUxMKSB7
CisJCSAgICBDKGFwcGVuZChwcm90bywKKwkJCSAgICAgR1BDX0lfU0VUX0wsCisJCQkgICAgIChn
cGNfY2VsbF90KW9mZnNldCArIGRlc3RfdHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKwkJCSAgICAg
KGdwY19jZWxsX3QpVUlOVDMyX01BWCkpOworCQkgICAgQyhnZW5lcmF0ZV9wYXJzZXIocHJvdG8s
CisJCQkJICAgICAgdHNmX3R5cGVfY3JlYXRlKFRTRl9US19WT0lEKSwKKwkJCQkgICAgICBzbi0+
dHlwZSwKKwkJCQkgICAgICAwLAorCQkJCSAgICAgIGxhYmVsLAorCQkJCSAgICAgIHRzZl90cnVl
KSk7CisJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgcmVhbGx5X2RvbmVfbGFiZWwp
KTsKKwkJfSBlbHNlIHsKKwkJICAgIEMoYXBwZW5kKHByb3RvLAorCQkJICAgICBHUENfSV9TRVRf
TCwKKwkJCSAgICAgKGdwY19jZWxsX3Qpb2Zmc2V0ICsgZGVzdF90eXBlLT51LmgudmFsdWVfb2Zm
c2V0LAorCQkJICAgICAoZ3BjX2NlbGxfdClkbi0+aW5kZXgpKTsKKwkJICAgIGlmICh0c2ZfbmF0
aXZlX2Nob2ljZV90eXBlX2lzX2luX3BsYWNlKGRlc3RfdHlwZSkpIHsKKwkJCUMoZ2VuZXJhdGVf
cGFyc2VyKHByb3RvLAorCQkJCQkgIGRuLT50eXBlLAorCQkJCQkgIHNuLT50eXBlLAorCQkJCQkg
IG9mZnNldCArIGRlc3RfdHlwZS0+dS5oLmRhdGFfb2Zmc2V0LAorCQkJCQkgIGxhYmVsLAorCQkJ
CQkgIHRzZl90cnVlKSk7CisJCSAgICB9IGVsc2UgeworCQkJQyhhcHBlbmQocHJvdG8sCisJCQkJ
IEdQQ19JX0FMTE9DLAorCQkJCSB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoZG4tPnR5cGUpKSk7
CisJCQlDKGFwcGVuZChwcm90bywKKwkJCQkgR1BDX0lfU1RPUkVfUFRSLAorCQkJCSBvZmZzZXQg
KyBkZXN0X3R5cGUtPnUuaC5kYXRhX29mZnNldCkpOworCQkJQyhnZW5lcmF0ZV9wYXJzZXIocHJv
dG8sCisJCQkJCSAgZG4tPnR5cGUsCisJCQkJCSAgc24tPnR5cGUsCisJCQkJCSAgMCwKKwkJCQkJ
ICBsYWJlbCwKKwkJCQkJICB0c2ZfdHJ1ZSkpOworCQkgICAgfQorCQkgICAgQyhhcHBlbmQocHJv
dG8sIEdQQ19JX0pVTVAsIGRvbmVfbGFiZWwpKTsKKwkJfQorCSAgICB9CisJICAgIEMoYXBwZW5k
KHByb3RvLCBHUENfSV9MQUJFTCwgZG9uZV9sYWJlbCkpOworCSAgICBpZiAoIXRzZl9uYXRpdmVf
Y2hvaWNlX3R5cGVfaXNfaW5fcGxhY2UoZGVzdF90eXBlKSkgeworCQlDKGFwcGVuZChwcm90bywg
R1BDX0lfUE9QKSk7CisJICAgIH0KKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCBy
ZWFsbHlfZG9uZV9sYWJlbCkpOworCX0gZWxzZSBpZiAodHNmX2Nob2ljZV90eXBlX3VzZXNfc2Ft
ZV9pbmRpY2VzKHNyY190eXBlLAorCQkJCQkJICAgICBkZXN0X3R5cGUpKSB7CisJICAgIC8qIHVz
ZSBjaGVja2Nob2ljZSBhbmQgc3RvcmUgKi8KKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAg
R1BDX0lfQ0hFQ0tDSE9JQ0UsCisJCSAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVu
dHMoc3JjX3R5cGUpKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1NUT1JF
X1ZBTCwKKwkJICAgICBvZmZzZXQgKyBkZXN0X3R5cGUtPnUuaC52YWx1ZV9vZmZzZXQpKTsKKwkg
ICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BPUCkpOworCX0gZWxzZSB7CisJICAgIC8qIHVzZSB0
YWJsZXNldF9sb2NhbF90b19maWVsZCAqLworCSAgICB0YXJnZXRzPW1hbGxvYyhzaXplb2YoZ3Bj
X2NlbGxfdCkgKgorCQkJICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5
cGUpKTsKKwkgICAgaWYgKHRhcmdldHM9PU5VTEwpIHsKKwkJdHNmX3NldF9lcnJubygiQ291bGQg
bm90IG1hbGxvYyBhcnJheSBvZiAiCisJCQkgICAgICAiZ3BjX2NlbGxfdCIpOworCQlyZXR1cm4g
dHNmX2ZhbHNlOworCSAgICB9CisJICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfY2hvaWNlX3R5cGVf
Z2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2ZfbmFtZWRfdHlwZV90ICpz
biA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCQl0
c2ZfbmFtZWRfdHlwZV90ICpkbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2RlKGRl
c3RfdHlwZSwgc24tPm5hbWUpOworCQlpZiAoZG4gPT0gTlVMTCkgeworCQkgICAgdGFyZ2V0c1tp
XSA9IFVJTlQzMl9NQVg7CisJCX0gZWxzZSB7CisJCSAgICB0YXJnZXRzW2ldID0gZG4tPmluZGV4
OworCQl9CisJICAgIH0KKwkgICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlc2V0X2xvY2FsX3RvX2Zp
ZWxkKAorICAgICAgICAgICAgICAgIHByb3RvLAorICAgICAgICAgICAgICAgIG9mZnNldCArIGRl
c3RfdHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICB0c2ZfY2hvaWNlX3R5
cGVfZ2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSksCisgICAgICAgICAgICAgICAgdGFyZ2V0cyk7
CisJICAgIGZyZWUodGFyZ2V0cyk7CisJICAgIGlmICghcmVzdWx0KSB7CisJCXJldHVybiB0c2Zf
ZmFsc2U7CisJICAgIH0KKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSSU5HOgorCUMo
YXBwZW5kKHByb3RvLCBHUENfSV9TVFJJTkdfUkVBRCwgb2Zmc2V0KSk7CisJYnJlYWs7CisgICAg
Y2FzZSBUU0ZfVEtfQU5ZOgorCUMoYXBwZW5kKHByb3RvLCBHUENfSV9BTllfUkVBRCwgb2Zmc2V0
KSk7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwl0c2ZfYWJvcnQoIlVua25vd24gdHlwZSIpOwor
CWJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK2dwY19wcm90
b190ICp0c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRlX3BhcnNlcih0c2ZfdHlwZV90ICpkZXN0X3R5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfdCAqc3JjX3R5cGUpIHsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG87CisKKyAgICBpZiAoIXRz
Zl9uYXRpdmVfdHlwZV9oYXNfc3RydWN0X21hcHBpbmcoZGVzdF90eXBlKSkgeworICAgICAgICB0
c2Zfc2V0X2Vycm9yKFRTRl9FX05PX1NUUlVDVF9NQVAsIE5VTEwpOworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2ZfdHlwZV9pbnN0YW5jZW9mKHNyY190eXBl
LCBkZXN0X3R5cGUpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfVFlQRV9NSVNNQVRD
SCwgTlVMTCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBwcm90bz1n
cGNfcHJvdG9fY3JlYXRlKDIpOworICAgIGlmIChwcm90bz09TlVMTCkgeworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX1BPUF9C
VUYpKSB7CisgICAgICAgIGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorCisgICAgaWYgKCFnZW5lcmF0ZV9wYXJzZXIocHJvdG8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNy
Y190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHJ1ZSkpIHsKKyAgICAgICAg
Z3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFhcHBlbmQocHJvdG8sIEdQQ19JX1JFVFVSTl9PTkUpKSB7CisgICAgICAg
IGdwY19wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBwcm90bzsKK30KKworc3RhdGljIHRzZl9ib29sX3QgZ2VuZXJhdGVf
Y29udmVydGVyKGdwY19wcm90b190ICpwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqc3JjX3R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBkZXN0X29mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBncGNfY2VsbF90IHNyY19vZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjX2NlbGxfdCBsYWJlbCkgeworICAgIHVpbnQz
Ml90IGk7CisgICAgZ3BjX2NlbGxfdCBkb25lX2xhYmVsLHJlYWxseV9kb25lX2xhYmVsOworICAg
IGdwY19jZWxsX3QgbG9vcF9sYWJlbDsKKyAgICBncGNfY2VsbF90IGxhYmVsX29mZnNldDsKKyAg
ICBncGNfY2VsbF90ICp0YXJnZXRzOworICAgIHRzZl9ib29sX3QgcmVzdWx0OworICAgIAorICAg
IGlmIChkZXN0X3R5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfVk9JRCkgeworICAgICAgICByZXR1
cm4gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3R5cGVfaW5zdGFuY2VvZihz
cmNfdHlwZSwgZGVzdF90eXBlKSkgeworCUMoZ2VuZXJhdGVfc2V0X2RlZmF1bHRfY29waWVyKHBy
b3RvLCBkZXN0X3R5cGUsIGRlc3Rfb2Zmc2V0KSk7CisgICAgfQorICAgIAorICAgIC8qIHJlYXNv
biB3aHkgd2UgZG9uJ3QgbWVtY3B5IHByaW1pdGl2ZXM6IGlmIHdlIHNlZSBhIHByaW1pdGl2ZSBh
dAorICAgICAgIHRoaXMgcG9pbnQsIHRoZW4gaXQgaXMganVzdCBvbmUgd29yZCAtIHNvIGEgcHJp
bWl0aXZlIGNvcHkKKyAgICAgICBvcGVyYXRpb24gd2lsbCBiZSBmYXN0ZXIgdGhhbiBtZW1jcHku
CisgICAgICAgCisgICAgICAgaW50ZXJlc3RpbmdseSwgaWYgd2Ugc2VlIGEgc3RydWN0IHRoYXQg
Y29udGFpbnMgZXhhY3RseSBvbmUKKyAgICAgICBwcmltaXRpdmUsIHdlIHdpbGwgc3RpbGwgdXNl
IG1lbWNweSAodW5sZXNzIGl0IGlzIGEgYnl0ZSkuICB0aGlzCisgICAgICAgaXMgbm90IG9wdGlt
YWwsIGJ1dCBvaCB3ZWxsLiAqLworICAgIGlmICghdHNmX3R5cGVfa2luZF9pc19wcmltaXRpdmUo
dHNmX3R5cGVfZ2V0X2tpbmRfY29kZShzcmNfdHlwZSkpICYmCisgICAgICAgIHRzZl9uYXRpdmVf
dHlwZV9jYW5fYmxpdChkZXN0X3R5cGUsc3JjX3R5cGUpKSB7CisgICAgICAgIHN3aXRjaCAodHNm
X25hdGl2ZV90eXBlX2dldF9zaXplKHNyY190eXBlKSkgeworCWNhc2UgMDoKKwkgICAgYnJlYWs7
CisJY2FzZSAxOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0MsCisJ
CSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwlk
ZWZhdWx0OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9NRU1DUFksCisJCSAg
ICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCwKKwkJICAgICB0c2ZfbmF0aXZlX3R5
cGVfZ2V0X3NpemUoc3JjX3R5cGUpKSk7CisJICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgc3dpdGNoIChzcmNfdHlwZS0+a2lu
ZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQklUOgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5k
X2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIHRzZl9hYm9ydCgiYml0LXRvLWJpdCBj
b3BpZXMgc2hvdWxkIGhhdmUgYmVlbiBoYW5kbGVkIGVsc2V3aGVyZSIpOworCSAgICBicmVhazsK
KwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0JJVCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAg
ICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCWNhc2Ug
VFNGX1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9C
SVRfVE9fUywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAg
ICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BD
X0lfQ09QWV9CSVRfVE9fTCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0
KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2
NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAg
ICAgR1BDX0lfQ09QWV9CSVRfVE9fTEwsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3Jj
X29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAgQyhhcHBl
bmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9CSVRfVE9fRiwKKwkJICAgICBkZXN0X29mZnNl
dCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJM
RToKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9CSVRfVE9fRCwKKwkJ
ICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRl
ZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlv
bjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNm
X3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNl
IFRTRl9US19JTlQ4OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRT
Rl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfQklULAor
CQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJv
dG8sCisJCSAgICAgR1BDX0lfQ09QWV9DLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNy
Y19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0Zf
VEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9f
U19FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJl
YWs7CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBj
YXNlIFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9D
T1BZX0NfVE9fTF9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsK
KwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0Ogor
ICAgICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBH
UENfSV9DT1BZX0NfVE9fTExfRSwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zm
c2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fRl9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAor
CQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgor
CSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fRF9FLAorCQkgICAg
IGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVs
dDoKKwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAi
CisJCSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlw
ZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNG
X1RLX1VJTlQ4OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9U
S19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfQklULAorCQkg
ICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2Fz
ZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJvdG8s
CisJCSAgICAgR1BDX0lfQ09QWV9DLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19v
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0ZfVEtf
VUlOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fU19a
LAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7
CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNl
IFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZ
X0NfVE9fTF9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAg
ICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENf
SV9DT1BZX0NfVE9fTExfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0
KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90
bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fRl9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkg
ICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAg
ICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0NfVE9fRF9aLAorCQkgICAgIGRl
c3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoK
KwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJ
CSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9p
bnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RL
X0lOVDE2OgorCXN3aXRjaCAoZGVzdF90eXBlLT5raW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19C
SVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfU19UT19CSVQsCisJ
CSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwlj
YXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90
bywKKwkJICAgICBHUENfSV9DT1BZX1NfVE9fQywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAg
ICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCWNhc2Ug
VFNGX1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9T
LAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7
CisJY2FzZSBUU0ZfVEtfSU5UMzI6CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorICAgICAgICBjYXNl
IFRTRl9US19JTlRFR0VSOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZ
X1NfVE9fTF9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAg
ICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENf
SV9DT1BZX1NfVE9fTExfRSwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0
KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZMT0FUOgorCSAgICBDKGFwcGVuZChwcm90
bywKKwkJICAgICBHUENfSV9DT1BZX1NfVE9fRl9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkg
ICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAg
ICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX1NfVE9fRF9FLAorCQkgICAgIGRl
c3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoK
KwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVzdF90eXBlIGNvbWJpbmF0aW9uOyAiCisJ
CSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSAiCisJCSAgICAgICJ0c2ZfdHlwZV9p
bnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQorCWJyZWFrOworICAgIGNhc2UgVFNGX1RL
X1VJTlQxNjoKKwlzd2l0Y2ggKGRlc3RfdHlwZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtf
QklUOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX1NfVE9fQklULAor
CQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfSU5UODoKKwljYXNlIFRTRl9US19VSU5UODoKKwkgICAgQyhhcHBlbmQocHJv
dG8sCisJCSAgICAgR1BDX0lfQ09QWV9TX1RPX0MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAg
ICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQxNjoKKwljYXNl
IFRTRl9US19VSU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlf
UywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFr
OworCWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2Fz
ZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09Q
WV9TX1RPX0xfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJ
ICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0OgorCWNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAg
ICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BD
X0lfQ09QWV9TX1RPX0xMX1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNl
dCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19GTE9BVDoKKwkgICAgQyhhcHBlbmQocHJv
dG8sCisJCSAgICAgR1BDX0lfQ09QWV9TX1RPX0ZfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJ
ICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0RPVUJMRToKKwkg
ICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9TX1RPX0RfWiwKKwkJICAgICBk
ZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6
CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgor
CQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVf
aW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9U
S19JTlQzMjoKKyAgICBjYXNlIFRTRl9US19JTlRFR0VSOgorCXN3aXRjaCAoZGVzdF90eXBlLT5r
aW5kX2NvZGUpIHsKKwljYXNlIFRTRl9US19CSVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkg
ICAgIEdQQ19JX0NPUFlfTF9UT19CSVQsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3Jj
X29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCWNhc2UgVFNGX1RL
X1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fQywK
KwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOwor
CWNhc2UgVFNGX1RLX0lOVDE2OgorCWNhc2UgVFNGX1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQo
cHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MX1RPX1MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJ
CSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQzMjoKKwlj
YXNlIFRTRl9US19VSU5UMzI6CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMo
YXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTCwKKwkJICAgICBkZXN0X29mZnNldCwK
KwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDY0Ogor
CWNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkgICAgQyhh
cHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MX1RPX0xMX0UsCisJCSAgICAgZGVzdF9v
ZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19G
TE9BVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MX1RPX0ZfRSwK
KwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOwor
CWNhc2UgVFNGX1RLX0RPVUJMRToKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lf
Q09QWV9MX1RPX0RfRSwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rl
c3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQg
YnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0K
KwlicmVhazsKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtp
bmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAg
ICAgR1BDX0lfQ09QWV9MX1RPX0JJVCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNf
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDg6CisJY2FzZSBUU0ZfVEtf
VUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTF9UT19DLAor
CQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfSU5UMTY6CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fUywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJ
ICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDMyOgorCWNh
c2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAgQyhh
cHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAor
CQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJ
Y2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFw
cGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fTExfWiwKKwkJICAgICBkZXN0X29m
ZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX0ZM
T0FUOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xfVE9fRl9aLAor
CQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJ
Y2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9D
T1BZX0xfVE9fRF9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsK
KwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdHNmX2Fib3J0KCJCYWQgc3JjX3R5cGUvZGVz
dF90eXBlIGNvbWJpbmF0aW9uOyAiCisJCSAgICAgICJzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBi
eSAiCisJCSAgICAgICJ0c2ZfdHlwZV9pbnN0YW5jZW9mKCkiKTsKKwkgICAgYnJlYWs7CisJfQor
CWJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJ
c3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAg
QyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MTF9UT19CSVQsCisJCSAgICAgZGVz
dF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9U
S19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAg
ICBHUENfSV9DT1BZX0xMX1RPX0MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29m
ZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQxNjoKKwljYXNlIFRTRl9US19V
SU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTExfVE9fUywK
KwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOwor
CWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2FzZSBU
U0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9M
TF9UT19MLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAg
ICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9D
T1BZX0xMLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAg
YnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAg
IEdQQ19JX0NPUFlfTExfVE9fRl9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19v
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVu
ZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xMX1RPX0RfRSwKKwkJICAgICBkZXN0X29mZnNl
dCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRz
Zl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAi
c2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2Vv
ZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19VSU5UNjQ6
CisJc3dpdGNoIChkZXN0X3R5cGUtPmtpbmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkg
ICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9MTF9UT19CSVQsCisJCSAgICAg
ZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRT
Rl9US19JTlQ4OgorCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJ
ICAgICBHUENfSV9DT1BZX0xMX1RPX0MsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3Jj
X29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19JTlQxNjoKKwljYXNlIFRTRl9U
S19VSU5UMTY6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTExfVE9f
UywKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFr
OworCWNhc2UgVFNGX1RLX0lOVDMyOgorCWNhc2UgVFNGX1RLX1VJTlQzMjoKKyAgICAgICAgY2Fz
ZSBUU0ZfVEtfSU5URUdFUjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09Q
WV9MTF9UT19MLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UNjQ6CisJY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAg
ICAgICBjYXNlIFRTRl9US19MT05HOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENf
SV9DT1BZX0xMLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkg
ICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkg
ICAgIEdQQ19JX0NPUFlfTExfVE9fRl9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNy
Y19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFw
cGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0xMX1RPX0RfWiwKKwkJICAgICBkZXN0X29m
ZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAg
IHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rlc3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAg
ICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFu
Y2VvZigpIik7CisJICAgIGJyZWFrOworCX0KKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19GTE9B
VDoKKwlzd2l0Y2ggKGRlc3RfdHlwZS0+a2luZF9jb2RlKSB7CisJY2FzZSBUU0ZfVEtfQklUOgor
CSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0ZfVE9fQklULAorCQkgICAg
IGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBU
U0ZfVEtfVUlOVDg6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRl9U
T19DX1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBi
cmVhazsKKwljYXNlIFRTRl9US19JTlQ4OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBH
UENfSV9DT1BZX0ZfVE9fQ19FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZz
ZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDE2OgorCSAgICBDKGFwcGVuZChw
cm90bywKKwkJICAgICBHUENfSV9DT1BZX0ZfVE9fU19aLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAor
CQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMTY6CisJ
ICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRl9UT19TX0UsCisJCSAgICAg
ZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRT
Rl9US19VSU5UMzI6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRl9U
T19MX1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBi
cmVhazsKKwljYXNlIFRTRl9US19JTlQzMjoKKyAgICAgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoK
KwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9GX1RPX0xfRSwKKwkJICAg
ICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2Ug
VFNGX1RLX1VJTlQ2NDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9G
X1RPX0xMX1osCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAg
ICBicmVhazsKKwljYXNlIFRTRl9US19JTlQ2NDoKKyAgICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoK
KwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9GX1RPX0xMX0UsCisJCSAg
ICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNl
IFRTRl9US19GTE9BVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9G
LAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7
CisJY2FzZSBUU0ZfVEtfRE9VQkxFOgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENf
SV9DT1BZX0ZfVE9fRCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7
CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHRzZl9hYm9ydCgiQmFkIHNyY190eXBlL2Rl
c3RfdHlwZSBjb21iaW5hdGlvbjsgIgorCQkgICAgICAic2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQg
YnkgIgorCQkgICAgICAidHNmX3R5cGVfaW5zdGFuY2VvZigpIik7CisJICAgIGJyZWFrOworCX0K
KwlicmVhazsKKyAgICBjYXNlIFRTRl9US19ET1VCTEU6CisJc3dpdGNoIChkZXN0X3R5cGUtPmtp
bmRfY29kZSkgeworCWNhc2UgVFNGX1RLX0JJVDoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAg
ICAgR1BDX0lfQ09QWV9EX1RPX0JJVCwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNf
b2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2UgVFNGX1RLX1VJTlQ4OgorCSAgICBDKGFwcGVu
ZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0RfVE9fQ19aLAorCQkgICAgIGRlc3Rfb2Zmc2V0
LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UODoK
KwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9EX1RPX0NfRSwKKwkJICAg
ICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAgIGJyZWFrOworCWNhc2Ug
VFNGX1RLX1VJTlQxNjoKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQ09QWV9E
X1RPX1NfWiwKKwkJICAgICBkZXN0X29mZnNldCwKKwkJICAgICBzcmNfb2Zmc2V0KSk7CisJICAg
IGJyZWFrOworCWNhc2UgVFNGX1RLX0lOVDE2OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAg
ICBHUENfSV9DT1BZX0RfVE9fU19FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNyY19v
ZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfVUlOVDMyOgorCSAgICBDKGFwcGVu
ZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0RfVE9fTF9aLAorCQkgICAgIGRlc3Rfb2Zmc2V0
LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5UMzI6
CisgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkg
ICAgIEdQQ19JX0NPUFlfRF9UT19MX0UsCisJCSAgICAgZGVzdF9vZmZzZXQsCisJCSAgICAgc3Jj
X29mZnNldCkpOworCSAgICBicmVhazsKKwljYXNlIFRTRl9US19VSU5UNjQ6CisJICAgIEMoYXBw
ZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRF9UT19MTF9aLAorCQkgICAgIGRlc3Rfb2Zm
c2V0LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfSU5U
NjQ6CisgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkg
ICAgIEdQQ19JX0NPUFlfRF9UT19MTF9FLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAorCQkgICAgIHNy
Y19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRkxPQVQ6CisJICAgIEMoYXBw
ZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfRF9UT19GLAorCQkgICAgIGRlc3Rfb2Zmc2V0
LAorCQkgICAgIHNyY19vZmZzZXQpKTsKKwkgICAgYnJlYWs7CisJY2FzZSBUU0ZfVEtfRE9VQkxF
OgorCSAgICBDKGFwcGVuZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0QsCisJCSAgICAgZGVz
dF9vZmZzZXQsCisJCSAgICAgc3JjX29mZnNldCkpOworCSAgICBicmVhazsKKwlkZWZhdWx0Ogor
CSAgICB0c2ZfYWJvcnQoIkJhZCBzcmNfdHlwZS9kZXN0X3R5cGUgY29tYmluYXRpb247ICIKKwkJ
ICAgICAgInNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5ICIKKwkJICAgICAgInRzZl90eXBlX2lu
c3RhbmNlb2YoKSIpOworCSAgICBicmVhazsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtf
U1RSVUNUOgorICAgICAgICBpZiAoZGVzdF90eXBlLT51LnMuY29uc3RydWN0b3IgIT0gTlVMTCB8
fAorICAgICAgICAgICAgZGVzdF90eXBlLT51LnMucHJlX2Rlc3RydWN0b3IgIT0gTlVMTCkgewor
ICAgICAgICAgICAgLyogVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgYnkgYWRkaW5nIElfQ0FMTF8y
TkQgYW5kIElfQUREX0NCQUNLXzJORC4gSSBkb24ndCB0aGluaworICAgICAgICAgICAgICAgaXQn
cyB3b3J0aCBpdC4gKi8KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0RVUF9QVFJfMk5EKSk7CisgICAgICAgICAgICBpZiAoZGVzdF90eXBlLT51LnMuY29u
c3RydWN0b3IgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9DQUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfb2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RfdHlwZS0+dS5zLmNvbnN0cnVjdG9yKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoZGVzdF90eXBlLT51LnMucHJlX2Rlc3RydWN0b3IgIT0gTlVM
TCkgeworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9BRERfQ0JBQ0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdF90eXBlLT51LnMucHJlX2Rlc3RydWN0b3IpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9QT1ApKTsKKyAgICAgICAgfQorCisJZm9y
IChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRlc3RfdHlwZSk7
ICsraSkgeworCSAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0KKwkJdHNmX3N0cnVjdF90eXBlX2dl
dF9lbGVtZW50KGRlc3RfdHlwZSwgaSk7CisgICAgICAgICAgICAgICAgCisJICAgIHRzZl9uYW1l
ZF90eXBlX3QgKm4yID0KKwkJdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShzcmNfdHlwZSwgbi0+
bmFtZSk7CisJICAgIAorCSAgICBpZiAobjIgPT0gTlVMTCkgeworCQlDKGdlbmVyYXRlX3NldF9k
ZWZhdWx0X2NvcGllcigKKyAgICAgICAgICAgICAgICAgICAgICBwcm90bywgbi0+dHlwZSwgZGVz
dF9vZmZzZXQgKyBuLT5vZmZzZXQpKTsKKwkgICAgfSBlbHNlIHsKKwkJQyhnZW5lcmF0ZV9jb252
ZXJ0ZXIocHJvdG8sCisJCQkJICAgICBuLT50eXBlLAorCQkJCSAgICAgbjItPnR5cGUsCisJCQkJ
ICAgICBkZXN0X29mZnNldCArIG4tPm9mZnNldCwKKwkJCQkgICAgIHNyY19vZmZzZXQgKyBuMi0+
b2Zmc2V0LAorCQkJCSAgICAgbGFiZWwpKTsKKwkgICAgfQorCX0KKwlicmVhazsKKyAgICBjYXNl
IFRTRl9US19BUlJBWToKKwlpZiAoZGVzdF90eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2Nv
ZGUgPT0gVFNGX1RLX1ZPSUQpIHsKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lf
Q09QWV9MLAorCQkgICAgIChncGNfY2VsbF90KShkZXN0X29mZnNldCArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfdm9pZF9hcnJheV90
LCBsZW4pKSwKKwkJICAgICAoZ3BjX2NlbGxfdCkoc3JjX29mZnNldCArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29k
ZSA9PSBUU0ZfVEtfVk9JRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdHNm
X29mZnNldG9mKHRzZl9uYXRpdmVfdm9pZF9hcnJheV90LCBsZW4pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAoc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUtPmtpbmRfY29k
ZSA9PSBUU0ZfVEtfQklUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0
c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV9iaXR2ZWN0b3JfdCwgbnVtX2JpdHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0c2Zfb2Zmc2V0b2YodHNmX25hdGl2ZV9hcnJh
eV90LCBsZW4pKSkpKTsKKwl9IGVsc2UgaWYgKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+
a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKwkgICAgc3dpdGNoIChzcmNfdHlwZS0+dS5hLmVs
ZW1lbnRfdHlwZS0+a2luZF9jb2RlKSB7CisJICAgIGNhc2UgVFNGX1RLX0JJVDoKKwkJQyhhcHBl
bmQocHJvdG8sCisJCQkgR1BDX0lfQ09QWV9CSVRWRUNUT1IsCisJCQkgZGVzdF9vZmZzZXQsCisJ
CQkgc3JjX29mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisJICAg
IGNhc2UgVFNGX1RLX0lOVDg6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0NPUFlfQklU
VkVDVE9SX0ZST01fQywKKwkJCSBkZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7CisJCWJy
ZWFrOworCSAgICBjYXNlIFRTRl9US19VSU5UMTY6CisJICAgIGNhc2UgVFNGX1RLX0lOVDE2Ogor
CQlDKGFwcGVuZChwcm90bywKKwkJCSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9GUk9NX1MsCisJCQkg
ZGVzdF9vZmZzZXQsCisJCQkgc3JjX29mZnNldCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0Zf
VEtfVUlOVDMyOgorCSAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAgICAgICAgICAgIGNhc2UgVFNG
X1RLX0lOVEVHRVI6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0NPUFlfQklUVkVDVE9S
X0ZST01fTCwKKwkJCSBkZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7CisJCWJyZWFrOwor
CSAgICBjYXNlIFRTRl9US19VSU5UNjQ6CisJICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgICAg
ICAgICAgY2FzZSBUU0ZfVEtfTE9ORzoKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQ09Q
WV9CSVRWRUNUT1JfRlJPTV9MTCwKKwkJCSBkZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7
CisJCWJyZWFrOworCSAgICBjYXNlIFRTRl9US19GTE9BVDoKKwkJQyhhcHBlbmQocHJvdG8sCisJ
CQkgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9GLAorCQkJIGRlc3Rfb2Zmc2V0LAorCQkJIHNy
Y19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0RPVUJMRToKKwkJQyhhcHBl
bmQocHJvdG8sCisJCQkgR1BDX0lfQ09QWV9CSVRWRUNUT1JfRlJPTV9ELAorCQkJIGRlc3Rfb2Zm
c2V0LAorCQkJIHNyY19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCXRzZl9h
Ym9ydCgiY2FzZSBtaXNzZWQiKTsKKwkJYnJlYWs7CisJICAgIH0KKwl9IGVsc2UgaWYgKHNyY190
eXBlLT51LmEuZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworCSAgICBz
d2l0Y2ggKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlKSB7CisJICAgIGNh
c2UgVFNGX1RLX1VJTlQ4OgorCSAgICBjYXNlIFRTRl9US19JTlQ4OgorCQlDKGFwcGVuZChwcm90
bywKKwkJCSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19DLAorCQkJIGRlc3Rfb2Zmc2V0LAorCQkJ
IHNyY19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX1VJTlQxNjoKKwkgICAg
Y2FzZSBUU0ZfVEtfSU5UMTY6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQQ19JX0NPUFlfQklU
VkVDVE9SX1RPX1MsCisJCQkgZGVzdF9vZmZzZXQsCisJCQkgc3JjX29mZnNldCkpOworCQlicmVh
azsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDMyOgorCSAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAg
ICAgICAgICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisJCUMoYXBwZW5kKHByb3RvLAorCQkJIEdQ
Q19JX0NPUFlfQklUVkVDVE9SX1RPX0wsCisJCQkgZGVzdF9vZmZzZXQsCisJCQkgc3JjX29mZnNl
dCkpOworCQlicmVhazsKKwkgICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorCSAgICBjYXNlIFRTRl9U
S19JTlQ2NDoKKyAgICAgICAgICAgIGNhc2UgVFNGX1RLX0xPTkc6CisJCUMoYXBwZW5kKHByb3Rv
LAorCQkJIEdQQ19JX0NPUFlfQklUVkVDVE9SX1RPX0xMLAorCQkJIGRlc3Rfb2Zmc2V0LAorCQkJ
IHNyY19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0ZMT0FUOgorCQlDKGFw
cGVuZChwcm90bywKKwkJCSBHUENfSV9DT1BZX0JJVFZFQ1RPUl9UT19GLAorCQkJIGRlc3Rfb2Zm
c2V0LAorCQkJIHNyY19vZmZzZXQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgVFNGX1RLX0RPVUJM
RToKKwkJQyhhcHBlbmQocHJvdG8sCisJCQkgR1BDX0lfQ09QWV9CSVRWRUNUT1JfVE9fRCwKKwkJ
CSBkZXN0X29mZnNldCwKKwkJCSBzcmNfb2Zmc2V0KSk7CisJCWJyZWFrOworCSAgICBkZWZhdWx0
OgorCQl0c2ZfYWJvcnQoImNhc2UgbWlzc2VkIik7CisJICAgIH0KKwl9IGVsc2UgaWYgKHRzZl9u
YXRpdmVfdHlwZV9jYW5fYmxpdChkZXN0X3R5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisJCQkJCSAg
ICBzcmNfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkgJiYKKwkJICAgdHNmX25hdGl2ZV90eXBlX2dl
dF9zaXplKGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkgPT0KKwkJICAgdHNmX25hdGl2ZV90
eXBlX2dldF9zaXplKHNyY190eXBlLT51LmEuZWxlbWVudF90eXBlKSkgeworCSAgICBDKGFwcGVu
ZChwcm90bywKKwkJICAgICBHUENfSV9DT1BZX0FSUkFZLAorCQkgICAgIGRlc3Rfb2Zmc2V0LAor
CQkgICAgIHNyY19vZmZzZXQsCisJCSAgICAgdHNmX25hdGl2ZV90eXBlX2dldF9zaXplKGRlc3Rf
dHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKwl9IGVsc2UgeworCSAgICBsb29wX2xhYmVsID0g
bGFiZWwrKzsKKwkgICAgZG9uZV9sYWJlbCA9IGxhYmVsKys7CisgICAgICAgICAgICAgICAgCisJ
ICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX0NPUFlfTCwKKwkJICAgICBkZXN0X29m
ZnNldCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsIGxlbiksCisJCSAgICAgc3Jj
X29mZnNldCArIHRzZl9vZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsIGxlbikpKTsKKwkgICAg
QyhhcHBlbmQocHJvdG8sCisJCSAgICAgR1BDX0lfQUxMT0NfQVJSQVlfMk5ELAorCQkgICAgIGRl
c3Rfb2Zmc2V0LAorCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9nZXRfc2l6ZShkZXN0X3R5cGUtPnUu
YS5lbGVtZW50X3R5cGUpKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1JF
UFVTSF9NVUxBRERfUFRSXzJORCwKKwkJICAgICBkZXN0X29mZnNldCArIHRzZl9vZmZzZXRvZih0
c2ZfbmF0aXZlX2FycmF5X3QsIGxlbiksCisJCSAgICAgdHNmX25hdGl2ZV90eXBlX2dldF9zaXpl
KGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKwkgICAgQyhhcHBlbmQocHJvdG8sCisJ
CSAgICAgR1BDX0lfUFVTSF9QVFJfM1JELAorCQkgICAgIHNyY19vZmZzZXQgKyB0c2Zfb2Zmc2V0
b2YodHNmX25hdGl2ZV9hcnJheV90LCBkYXRhKSkpOworCSAgICBDKGFwcGVuZChwcm90bywKKwkJ
ICAgICBHUENfSV9DT01QRkFJTEpVTVBfMk5ELAorCQkgICAgIGRvbmVfbGFiZWwpKTsKKwkgICAg
QyhhcHBlbmQocHJvdG8sR1BDX0lfTEFCRUwsIGxvb3BfbGFiZWwpKTsKKwkgICAgQyhnZW5lcmF0
ZV9jb252ZXJ0ZXIocHJvdG8sCisJCQkJIGRlc3RfdHlwZS0+dS5hLmVsZW1lbnRfdHlwZSwKKwkJ
CQkgc3JjX3R5cGUtPnUuYS5lbGVtZW50X3R5cGUsCisJCQkJIDAsCisJCQkJIDAsCisJCQkJIGxh
YmVsKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1RXT19BRERDT01QSlVN
UCwKKwkJICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoZGVzdF90eXBlLT51LmEuZWxlbWVu
dF90eXBlKSwKKwkJICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoc3JjX3R5cGUtPnUuYS5l
bGVtZW50X3R5cGUpLAorCQkgICAgIGxvb3BfbGFiZWwpKTsKKwkgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0xBQkVMLCBkb25lX2xhYmVsKSk7CisJICAgIEMoYXBwZW5kKHByb3RvLCBHUENfSV9U
SFJFRV9QT1ApKTsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorCXRhcmdl
dHM9bWFsbG9jKHNpemVvZihncGNfY2VsbF90KSAqCisJCSAgICAgICB0c2ZfY2hvaWNlX3R5cGVf
Z2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSkpOworCWlmICh0YXJnZXRzID09IE5VTEwpIHsKKwkg
ICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBhcnJheSBvZiAiCisJCQkgICJncGNf
Y2VsbF90Iik7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJfQorCWlmICh0c2ZfY2hvaWNlX3R5
cGVfaGFzX25vbl92b2lkKHNyY190eXBlKSkgeworCSAgICBsYWJlbF9vZmZzZXQgPSBsYWJlbDsK
KwkgICAgbGFiZWwgKz0gdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoc3JjX3R5cGUp
OworCSAgICBkb25lX2xhYmVsID0gbGFiZWwrKzsKKwkgICAgcmVhbGx5X2RvbmVfbGFiZWwgPSBs
YWJlbCsrOworCSAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxl
bWVudHMoc3JjX3R5cGUpOyArK2kpIHsKKwkJdGFyZ2V0c1tpXSA9IGxhYmVsX29mZnNldCArIGk7
CisJICAgIH0KKwkgICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlanVtcF9maWVsZCgKKyAgICAgICAg
ICAgICAgICBwcm90bywKKyAgICAgICAgICAgICAgICBzcmNfb2Zmc2V0ICsgc3JjX3R5cGUtPnUu
aC52YWx1ZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1f
ZWxlbWVudHMoc3JjX3R5cGUpLAorICAgICAgICAgICAgICAgIHRhcmdldHMpOworCSAgICBmcmVl
KHRhcmdldHMpOworCSAgICBpZiAoIXJlc3VsdCkgeworCQlyZXR1cm4gdHNmX2ZhbHNlOworCSAg
ICB9CisJICAgIEMoYXBwZW5kKHByb3RvLAorCQkgICAgIEdQQ19JX1NFVF8yTkRfTCwKKwkJICAg
ICAoZ3BjX2NlbGxfdCkoZGVzdF9vZmZzZXQgKyBkZXN0X3R5cGUtPnUuaC52YWx1ZV9vZmZzZXQp
LAorCQkgICAgIChncGNfY2VsbF90KVVJTlQzMl9NQVgpKTsKKwkgICAgQyhhcHBlbmQocHJvdG8s
IEdQQ19JX0pVTVAsIHJlYWxseV9kb25lX2xhYmVsKSk7CisJICAgIGZvciAoaSA9IDA7IGkgPCB0
c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2Zf
bmFtZWRfdHlwZV90ICpzbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoc3Jj
X3R5cGUsIGkpOworCQl0c2ZfbmFtZWRfdHlwZV90ICpkbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5
cGVfZmluZF9ub2RlKGRlc3RfdHlwZSwgc24tPm5hbWUpOworCQlDKGFwcGVuZChwcm90bywgR1BD
X0lfTEFCRUwsIGxhYmVsX29mZnNldCArIGkpKTsKKwkJaWYgKGRuID09IE5VTEwpIHsKKwkJICAg
IEMoYXBwZW5kKHByb3RvLAorCQkJICAgICBHUENfSV9TRVRfMk5EX0wsCisJCQkgICAgIChncGNf
Y2VsbF90KShkZXN0X29mZnNldCArIGRlc3RfdHlwZS0+dS5oLnZhbHVlX29mZnNldCksCisJCQkg
ICAgIChncGNfY2VsbF90KVVJTlQzMl9NQVgpKTsKKwkJICAgIEMoYXBwZW5kKHByb3RvLCBHUENf
SV9KVU1QLCByZWFsbHlfZG9uZV9sYWJlbCkpOworCQl9IGVsc2UgeworCQkgICAgQyhhcHBlbmQo
cHJvdG8sCisJCQkgICAgIEdQQ19JX1NFVF8yTkRfTCwKKwkJCSAgICAgKGdwY19jZWxsX3QpKGRl
c3Rfb2Zmc2V0ICsgZGVzdF90eXBlLT51LmgudmFsdWVfb2Zmc2V0KSwKKwkJCSAgICAgKGdwY19j
ZWxsX3QpZG4tPmluZGV4KSk7CisJCSAgICBpZiAoIXRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfaXNf
aW5fcGxhY2Uoc3JjX3R5cGUpIHx8CisJCQkhdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9w
bGFjZShkZXN0X3R5cGUpKSB7CisJCQl1aW50MzJfdCBzcmNfb2ZmID0gMDsKKwkJCXVpbnQzMl90
IGRlc3Rfb2ZmID0gMDsKKwkJCWlmICh0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lzX2luX3BsYWNl
KGRlc3RfdHlwZSkpIHsKKwkJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRFVQX1BUUl8yTkQp
KTsKKwkJCSAgICBkZXN0X29mZiA9IGRlc3Rfb2Zmc2V0ICsKKwkJCQlkZXN0X3R5cGUtPnUuaC5k
YXRhX29mZnNldDsKKwkJCX0gZWxzZSB7CisJCQkgICAgLyogbXVzdCBhbGxvYyAqLworCQkJICAg
IEMoYXBwZW5kKHByb3RvLCBHUENfSV9BTExPQywKKwkJCQkgICAgIHRzZl9uYXRpdmVfdHlwZV9n
ZXRfc2l6ZShkbi0+dHlwZSkpKTsKKwkJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfU1RPUkVf
UFRSXzJORCwKKwkJCQkgICAgIGRlc3Rfb2Zmc2V0ICsKKwkJCQkgICAgIGRlc3RfdHlwZS0+dS5o
LmRhdGFfb2Zmc2V0KSk7CisJCQl9CisJCQlpZiAodHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19p
bl9wbGFjZShzcmNfdHlwZSkpIHsKKwkJCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRFVQX1BU
Ul8yTkQpKTsKKwkJCSAgICBzcmNfb2ZmID0gc3JjX29mZnNldCArCisJCQkJc3JjX3R5cGUtPnUu
aC5kYXRhX29mZnNldDsKKwkJCX0gZWxzZSB7CisJCQkgICAgLyoganVzdCBsb2FkICovCisJCQkg
ICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BVU0hfUFRSXzJORCwKKwkJCQkgICAgIHNyY19vZmZz
ZXQgKworCQkJCSAgICAgc3JjX3R5cGUtPnUuaC5kYXRhX29mZnNldCkpOworCQkJfQorCQkJQyhn
ZW5lcmF0ZV9jb252ZXJ0ZXIocHJvdG8sCisJCQkJCSAgICAgZG4tPnR5cGUsCisJCQkJCSAgICAg
c24tPnR5cGUsCisJCQkJCSAgICAgZGVzdF9vZmYsCisJCQkJCSAgICAgc3JjX29mZiwKKwkJCQkJ
ICAgICBsYWJlbCkpOworCQkJQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAsIGRvbmVfbGFiZWwp
KTsKKwkJICAgIH0gZWxzZSB7CisJCQlDKGdlbmVyYXRlX2NvbnZlcnRlcihwcm90bywKKwkJCQkJ
ICAgICBkbi0+dHlwZSwKKwkJCQkJICAgICBzbi0+dHlwZSwKKwkJCQkJICAgICBkZXN0X29mZnNl
dCArCisJCQkJCSAgICAgZGVzdF90eXBlLT51LmguZGF0YV9vZmZzZXQsCisJCQkJCSAgICAgc3Jj
X29mZnNldCArCisJCQkJCSAgICAgc3JjX3R5cGUtPnUuaC5kYXRhX29mZnNldCwKKwkJCQkJICAg
ICBsYWJlbCkpOworCQkJQyhhcHBlbmQocHJvdG8sIEdQQ19JX0pVTVAsIHJlYWxseV9kb25lX2xh
YmVsKSk7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgICBDKGFwcGVuZChwcm90bywgR1BDX0lf
TEFCRUwsIGRvbmVfbGFiZWwpKTsKKwkgICAgaWYgKCF0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2lz
X2luX3BsYWNlKHNyY190eXBlKSB8fAorCQkhdHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9w
bGFjZShkZXN0X3R5cGUpKSB7CisJCUMoYXBwZW5kKHByb3RvLCBHUENfSV9UV09fUE9QKSk7CisJ
ICAgIH0KKwkgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCByZWFsbHlfZG9uZV9sYWJl
bCkpOworCX0gZWxzZSB7CisJICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfY2hvaWNlX3R5cGVfZ2V0
X251bV9lbGVtZW50cyhzcmNfdHlwZSk7ICsraSkgeworCQl0c2ZfbmFtZWRfdHlwZV90ICpzbiA9
CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoc3JjX3R5cGUsIGkpOworCQl0c2Zf
bmFtZWRfdHlwZV90ICpkbiA9CisJCSAgICB0c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2RlKGRlc3Rf
dHlwZSwgc24tPm5hbWUpOworCQlpZiAoZG4gPT0gTlVMTCkgeworCQkgICAgdGFyZ2V0c1tpXSA9
IFVJTlQzMl9NQVg7CisJCX0gZWxzZSB7CisJCSAgICB0YXJnZXRzW2ldID0gZG4tPmluZGV4Owor
CQl9CisJICAgIH0KKwkgICAgcmVzdWx0ID0gYXBwZW5kX3RhYmxlc2V0X2ZpZWxkX3RvX2ZpZWxk
KAorICAgICAgICAgICAgICAgIHByb3RvLAorICAgICAgICAgICAgICAgIGRlc3Rfb2Zmc2V0ICsg
ZGVzdF90eXBlLT51LmgudmFsdWVfb2Zmc2V0LAorICAgICAgICAgICAgICAgIHNyY19vZmZzZXQg
KyBzcmNfdHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAgICB0c2ZfY2hvaWNl
X3R5cGVfZ2V0X251bV9lbGVtZW50cyhzcmNfdHlwZSksCisgICAgICAgICAgICAgICAgdGFyZ2V0
cyk7CisJICAgIGZyZWUodGFyZ2V0cyk7CisJICAgIGlmICghcmVzdWx0KSB7CisJCXJldHVybiB0
c2ZfZmFsc2U7CisJICAgIH0KKwl9CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSSU5HOgor
CUMoYXBwZW5kKHByb3RvLAorCQkgR1BDX0lfU1RSSU5HX0NPUFksCisJCSBkZXN0X29mZnNldCwK
KwkJIHNyY19vZmZzZXQpKTsKKwlicmVhazsKKyAgICBjYXNlIFRTRl9US19BTlk6CisJQyhhcHBl
bmQocHJvdG8sCisJCSBHUENfSV9BTllfQ09QWSwKKwkJIGRlc3Rfb2Zmc2V0LAorCQkgc3JjX29m
ZnNldCkpOworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJdHNmX2Fib3J0KCJCYWQgdHlwZS4iKTsK
KwlicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK2dwY19wcm90b190
ICp0c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRlX2NvbnZlcnRlcih0c2ZfdHlwZV90ICpkZXN0X3R5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X3R5cGVfdCAqc3JjX3R5cGUpIHsKKyAgICBncGNfcHJvdG9fdCAqcHJvdG87CisKKyAgICBpZiAo
IXRzZl9uYXRpdmVfdHlwZV9oYXNfc3RydWN0X21hcHBpbmcoZGVzdF90eXBlKSkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PX1NUUlVDVF9NQVAsCisgICAgICAgICAgICAgICAgICAg
ICAgIkRlc3RpbmF0aW9uIGxhY2tzIGEgc3RydWN0dXJlIG1hcHBpbmciKTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX25hdGl2ZV90eXBlX2hhc19zdHJ1
Y3RfbWFwcGluZyhzcmNfdHlwZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT19T
VFJVQ1RfTUFQLAorICAgICAgICAgICAgICAgICAgICAgICJTb3VyY2UgbGFja3MgYSBzdHJ1Y3R1
cmUgbWFwcGluZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYg
KCF0c2ZfdHlwZV9pbnN0YW5jZW9mKHNyY190eXBlLCBkZXN0X3R5cGUpKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfVFlQRV9NSVNNQVRDSCwgTlVMTCk7CisgICAgICAgIHJldHVybiBO
VUxMOworICAgIH0KKyAgICAKKyAgICBwcm90byA9IGdwY19wcm90b19jcmVhdGUoMik7CisgICAg
aWYgKHByb3RvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAor
ICAgIC8qIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCBhbGxvY2F0ZSB0aGUgcmVnaW9uIGZvciB1
cy4gKi8KKyAgICBpZiAoIWFwcGVuZChwcm90bywKKyAgICAgICAgICAgICAgICBHUENfSV9BTExP
Q19ST09UX01BWUJFXzJORCwKKyAgICAgICAgICAgICAgICB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3Np
emUoZGVzdF90eXBlKSkpIHsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFnZW5lcmF0ZV9jb252ZXJ0
ZXIocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF90eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNyY190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwKSkgeworICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAoIWFwcGVuZChwcm90bywgR1BD
X0lfUE9QKSkgeworICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAoIWFwcGVuZChwcm90bywgR1BDX0lfUkVU
VVJOX1RPUF9XSVRIX1JFR0lPTikpIHsKKyAgICAgICAgZ3BjX3Byb3RvX2Rlc3Ryb3kocHJvdG8p
OworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHByb3RvOwor
fQorCitzdGF0aWMgdHNmX2Jvb2xfdCBuZWVkc19kZXN0cnVjdGlvbih0c2ZfdHlwZV90ICp0eXBl
KSB7CisgICAgdWludDMyX3QgaTsKKyAgICAKKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29kZSkg
eworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICAgICAgaWYgKHR5cGUtPnUucy5kZXN0cnVj
dG9yICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmICh0eXBlLT51LnMucHJlX2Rlc3RydWN0b3IgIT0gTlVMTCkg
eworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0
eXBlKTsgKytpKSB7CisgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbiA9IHRzZl9z
dHJ1Y3RfdHlwZV9nZXRfZWxlbWVudCh0eXBlLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAobi0+
dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChuZWVkc19kZXN0
cnVjdGlvbihuLT50eXBlKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX3RydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgICAgICBpZiAodHlwZS0+dS5hLmVsZW1l
bnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lEKSB7CisgICAgICAgICAgICAvKiBOb3Ro
aW5nIHRvIGRvIC0gYSB2b2lkIGFycmF5IGlzbid0IHJlYWxseSBhIGNvbnRhaW5lci4gKi8KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgIGlmICh0c2Zf
Y2hvaWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNm
X3RydWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSSU5H
OgorICAgICAgICByZXR1cm4gdHNmX3RydWU7CisgICAgY2FzZSBUU0ZfVEtfQU5ZOgorICAgICAg
ICByZXR1cm4gdHNmX3RydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogTm9uZSBvZiB0aGUg
b3RoZXIgdHlwZXMgaGF2ZSB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGZyZWVkLiAqLworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl9mYWxzZTsKK30KKworc3RhdGlj
IHRzZl9ib29sX3QgZ2VuZXJhdGVfZGVzdHJveWVyKGdwY19wcm90b190ICpwcm90bywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3Qgb2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwY19jZWxsX3QgbGFiZWwpIHsKKyAgICB1
aW50MzJfdCBpOworICAgIGdwY19jZWxsX3QgbGFiZWxfb2Zmc2V0OworICAgIGdwY19jZWxsX3Qg
ZG9uZV9sYWJlbCwgcmVhbGx5X2RvbmVfbGFiZWw7CisgICAgZ3BjX2NlbGxfdCAqdGFyZ2V0czsK
KyAgICB0c2ZfYm9vbF90IHJlc3VsdDsKKyAgICAKKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRfY29k
ZSkgeworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICAgICAgLyogSWYgdGhlIHN0cnVjdCBo
YXMgYSBkZXN0cnVjdG9yLCBhc3N1bWUgdGhhdCBpdCB3aWxsIGRlc3Ryb3kgYWxsIG9mIHRoZSBm
aWVsZHMsCisgICAgICAgICAgIGluY2x1ZGluZyB0aGUgb25lcyB0aGF0IHdlIGtub3cgYWJvdXQu
ICovCisgICAgICAgIGlmICh0eXBlLT51LnMuZGVzdHJ1Y3RvciAhPSBOVUxMKSB7CisgICAgICAg
ICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ0FMTCwKKyAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnUucy5kZXN0cnVjdG9yKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAodHlwZS0+dS5zLnByZV9kZXN0cnVjdG9yICE9
IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ0FMTCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZS0+dS5zLnByZV9kZXN0cnVjdG9yKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsr
aSkgeworICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2Zfc3RydWN0X3R5
cGVfZ2V0X2VsZW1lbnQodHlwZSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKG4tPnR5cGUtPmtp
bmRfY29kZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBDKGdlbmVyYXRlX2Rlc3Ryb3llcihw
cm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT50eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIG4tPm9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAg
ICAgICBpZiAodHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lE
KSB7CisgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIGRvIC0gYSB2b2lkIGFycmF5IGlzbid0IHJl
YWxseSBhIGNvbnRhaW5lci4gKi8KKyAgICAgICAgfSBlbHNlIGlmICh0eXBlLT51LmEuZWxlbWVu
dF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgQyhhcHBlbmQo
cHJvdG8sCisgICAgICAgICAgICAgICAgICAgICBHUENfSV9GUkVFLAorICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYml0dmVjdG9yX3QsIGJpdHMp
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobmVlZHNfZGVzdHJ1Y3Rpb24o
dHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBncGNfY2VsbF90IGxv
b3BfbGFiZWwgPSBsYWJlbCsrOworICAgICAgICAgICAgICAgIGRvbmVfbGFiZWwgPSBsYWJlbCsr
OworICAgICAgICAgICAgICAgIEMoYXBwZW5kKHByb3RvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIEdQQ19JX1BVU0hfUFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArIHRz
Zl9vZmZzZXRvZih0c2ZfbmF0aXZlX2FycmF5X3QsIGRhdGEpKSk7CisgICAgICAgICAgICAgICAg
QyhhcHBlbmQocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgR1BDX0lfUkVQVVNIX01V
TEFERF9QVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgdHNmX29mZnNldG9m
KHRzZl9uYXRpdmVfYXJyYXlfdCwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
bmF0aXZlX3R5cGVfZ2V0X3NpemUodHlwZS0+dS5hLmVsZW1lbnRfdHlwZSkpKTsKKyAgICAgICAg
ICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfQ09NUEZBSUxKVU1QLCBkb25lX2xhYmVsKSk7
CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCBsb29wX2xhYmVs
KSk7CisgICAgICAgICAgICAgICAgQyhnZW5lcmF0ZV9kZXN0cm95ZXIocHJvdG8sIHR5cGUtPnUu
YS5lbGVtZW50X3R5cGUsIDAsIGxhYmVsKSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJv
dG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgR1BDX0lfQUREQ09NUEpVTVAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX25hdGl2ZV90eXBlX2dldF9zaXplKHR5cGUtPnUuYS5lbGVt
ZW50X3R5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BfbGFiZWwpKTsKKyAgICAg
ICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfTEFCRUwsIGRvbmVfbGFiZWwpKTsKKyAg
ICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfVFdPX1BPUCkpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRlJF
RSwgb2Zmc2V0ICsgdHNmX29mZnNldG9mKHRzZl9uYXRpdmVfYXJyYXlfdCwgZGF0YSkpKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAg
IGlmICh0c2ZfY2hvaWNlX3R5cGVfaGFzX25vbl92b2lkKHR5cGUpKSB7CisgICAgICAgICAgICBs
YWJlbF9vZmZzZXQgPSBsYWJlbDsKKyAgICAgICAgICAgIGxhYmVsICs9IHRzZl9jaG9pY2VfdHlw
ZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpOworICAgICAgICAgICAgZG9uZV9sYWJlbCA9IGxhYmVs
Kys7CisgICAgICAgICAgICByZWFsbHlfZG9uZV9sYWJlbCA9IGxhYmVsKys7CisgICAgICAgICAg
ICB0YXJnZXRzPW1hbGxvYyhzaXplb2YoZ3BjX2NlbGxfdCkqCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSk7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0cyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJu
bygiQ291bGQgbm90IG1hbGxvYyBhcnJheSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZ3BjX2NlbGxfdCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2ljZV90eXBl
X2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgICAgIHRhcmdldHNb
aV0gPSBsYWJlbF9vZmZzZXQgKyBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0
PWFwcGVuZF90YWJsZWp1bXBfZmllbGQoCisgICAgICAgICAgICAgICAgcHJvdG8sCisgICAgICAg
ICAgICAgICAgb2Zmc2V0ICsgdHlwZS0+dS5oLnZhbHVlX29mZnNldCwKKyAgICAgICAgICAgICAg
ICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSwKKyAgICAgICAgICAgICAg
ICB0YXJnZXRzKTsKKyAgICAgICAgICAgIGZyZWUodGFyZ2V0cyk7CisgICAgICAgICAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfSlVNUCwgcmVhbGx5X2RvbmVf
bGFiZWwpKTsgLyogZm9yIHVua25vd24gdmFsdWVzICovCisgICAgICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAg
ICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2Vs
ZW1lbnQodHlwZSwgaSk7CisgICAgICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xB
QkVMLCBsYWJlbF9vZmZzZXQgKyBpKSk7CisgICAgICAgICAgICAgICAgaWYgKHRzZl9uYXRpdmVf
Y2hvaWNlX3R5cGVfaXNfaW5fcGxhY2UodHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQyhn
ZW5lcmF0ZV9kZXN0cm95ZXIocHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9mZnNldCArIHR5cGUtPnUuaC5kYXRhX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAvKiBjYW5ub3QgbW92ZSB0aGlzIHB1c2ggYWJvdmUgdGhlIHRh
YmxlanVtcCBzaW5jZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdGFibGVqdW1wIHVzZXMg
dGhlIHZhbHVlIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLCBhbmQKKyAgICAgICAgICAgICAgICAg
ICAgICAgSSBkb24ndCBmZWVsIGxpa2UgYWRkaW5nIGEgc2Vjb25kIHRhYmxlanVtcCBqdXN0IHRv
CisgICAgICAgICAgICAgICAgICAgICAgIGdldCBhcm91bmQgdGhhdC4gKi8KKyAgICAgICAgICAg
ICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX1BVU0hfUFRSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvZmZzZXQgKyB0eXBlLT51LmguZGF0YV9vZmZzZXQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgQyhnZW5lcmF0ZV9kZXN0cm95ZXIocHJvdG8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEMoYXBw
ZW5kKHByb3RvLCBHUENfSV9KVU1QLCBkb25lX2xhYmVsKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAvKiBpZiBpdCBpcyBpbiBwbGFjZSwgeW91IGdldCB0d28gbGFiZWxzLi4uICBvaCB3
ZWxsLiAqLworICAgICAgICAgICAgQyhhcHBlbmQocHJvdG8sIEdQQ19JX0xBQkVMLCBkb25lX2xh
YmVsKSk7CisgICAgICAgICAgICBpZiAoIXRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxh
Y2UodHlwZSkpIHsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRlJFRV9J
TU1FRElBVEUpKTsKKyAgICAgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfUE9QKSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfTEFCRUws
IHJlYWxseV9kb25lX2xhYmVsKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUU0ZfVEtfU1RSSU5HOgorICAgICAgICBDKGFwcGVuZChwcm90bywgR1BDX0lfRlJFRSwgb2Zm
c2V0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0FOWToKKyAgICAgICAgQyhh
cHBlbmQocHJvdG8sIEdQQ19JX0RFU1RST1lfQlVGRkVSLCBvZmZzZXQpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogTm9uZSBvZiB0aGUgb3RoZXIgdHlwZXMgaGF2
ZSB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGZyZWVkLiAqLworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCitncGNfcHJvdG9fdCAqdHNmX2dwY19j
b2RlX2dlbl9nZW5lcmF0ZV9kZXN0cm95ZXIodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIGdwY19w
cm90b190ICpwcm90bzsKKyAgICAKKyAgICBpZiAoIXRzZl9uYXRpdmVfdHlwZV9oYXNfc3RydWN0
X21hcHBpbmcodHlwZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT19TVFJVQ1Rf
TUFQLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHByb3Rv
ID0gZ3BjX3Byb3RvX2NyZWF0ZSgxKTsKKyAgICBpZiAocHJvdG8gPT0gTlVMTCkgeworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCFnZW5lcmF0ZV9kZXN0cm95ZXIo
cHJvdG8sIHR5cGUsIDAsIDApKSB7CisgICAgICAgIGdwY19wcm90b19kZXN0cm95KHByb3RvKTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghYXBwZW5kKHByb3Rv
LCBHUENfSV9SRVRVUk5fT05FKSkgeworICAgICAgICBncGNfcHJvdG9fZGVzdHJveShwcm90byk7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcHJvdG87Cit9
CisKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pbmRl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX2luZGVudC5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfaW5kZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUEla
TE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBGUF9UU0ZfSU5ERU5UX0gKKyNkZWZpbmUgRlBfVFNGX0lOREVOVF9ICisKKyNp
bmNsdWRlIDxpbnR0eXBlcy5oPgorCisvKiByZXR1cm5zIGFuIGluZGVudCBzdHJpbmcgKi8KK2Nv
bnN0IGNoYXIgKnRzZl9pbmRlbnRfc3RyKHVpbnQzMl90IGluZGVudCk7CisKKyNlbmRpZgorCklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9p
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfaW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2NDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTEsIDIwMTQsIDIwMTUg
RmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlBfVFNGX0lOVEVSTkFMX0gKKyNkZWZpbmUg
RlBfVFNGX0lOVEVSTkFMX0gKKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbF9jb25maWcuaCIKKyNp
bmNsdWRlICJ0c2YuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5o
PgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyNpbmNsdWRlICJ0c2ZfaW50dHlwZXMuaCIKKwor
LyogZGVmaW5lIGFsbCBvZiB0aGUgc3RydWN0cyB0aGF0IHdlcmUgbGVmdCBvcGFxdWUgaW4gdHNm
LmguICovCitzdHJ1Y3QgdHNmX3R5cGVfdGFibGUgeworICAgIHRzZl9uYW1lZF90eXBlX3QgKipl
bGVtZW50czsKKyAgICB1aW50MzJfdCBudW1fZWxlbWVudHM7CisgICAgCisgICAgdHNmX3N0X3Rh
YmxlICplbGVfdGFibGU7Cit9OworCitzdHJ1Y3QgdHNmX3R5cGVfaW5fbWFwIHsKKyAgICB2b2lk
ICpyZWdpb247ICAgICAgICAgICAvKiBOVUxMIGlmIG5vdCBhbGxvY2F0ZWQgaW4gYSByZWdpb24g
Ki8KKyAgICB0c2ZfdHlwZV90ICoqZWxlbWVudHM7CisgICAgdWludDMyX3QgbnVtX2VsZW1lbnRz
OworICAgIHVpbnQzMl90IGNhcGFjaXR5OworfTsKKworc3RydWN0IHRzZl9yYV90eXBlX2luZm8g
eworICAgIHVpbnQzMl90IHR5cGVfY29kZTsKKyAgICB1aW50NjRfdCByZWZfY291bnQ7Cit9Owor
CitzdHJ1Y3QgdHNmX3JhX3RjX25vZGUgeworICAgIHVpbnQzMl90IHR5cGVfY29kZTsKKyAgICB0
c2ZfcmFfdGNfbm9kZV90ICpuZXh0OworfTsKKworc3RydWN0IHRzZl9yYV90eXBlX21hbiB7Cisg
ICAgdHNmX3JhX3RjX25vZGVfdCAqdHlwZV9jb2RlczsKKyAgICB0c2Zfc3RfdGFibGUgKm91dF9t
YXA7CisgICAgdHNmX3N0X3RhYmxlICppbl9tYXA7Cit9OworCitzdHJ1Y3QgdHNmX3R5cGUgewor
ICAgIHRzZl90eXBlX2tpbmRfdCBraW5kX2NvZGU7CisgICAgCisgICAgLyogdHJ1ZSBpZiB0aGlz
IGlzIGFuIEFOWSBvciBpZiBpcyBhIGNvbnRhaW5lciB0aGF0IGNvbnRhaW5zIGFuIEFOWS4gKi8K
KyAgICB0c2ZfYm9vbF90IGlzX2R5bmFtaWM7CisgICAgCisgICAgdW5pb24geworICAgICAgICAv
KiBhZGRpdGlvbmFsIGRhdGEgZm9yIGFycmF5ICovCisgICAgICAgIHN0cnVjdCB7CisgICAgICAg
ICAgICB0c2ZfdHlwZV90ICplbGVtZW50X3R5cGU7CisgICAgICAgIH0gYTsKKyAgICAgICAgCisg
ICAgICAgIC8qIGFkZGl0aW9uYWwgZGF0YSBmb3Igc3RydWN0ICovCisgICAgICAgIHN0cnVjdCB7
CisgICAgICAgICAgICAvKiBzdHJ1Y3QgbWFwcGluZyBzdXBwb3J0IC0gbmVlZCB0byBrbm93IHRo
ZSBzaXplIG9mCisgICAgICAgICAgICAgKiB0aGUgc3RydWN0IGluIG1lbW9yeS4gIHRoaXMgaXMg
Tk9UIHRoZSBzdW0gb2YgdGhlCisgICAgICAgICAgICAgKiBzaXplcyBvZiB0aGUgZWxlbWVudHMs
IGJlY2F1c2UgdGhhdCBkb2Vzbid0IHRha2UKKyAgICAgICAgICAgICAqIGludG8gYWNjb3VudCBw
YWRkaW5nIG9yIHRoZSBwb3NzaWJpbGl0eSBvZiBhZGRpdGlvbmFsCisgICAgICAgICAgICAgKiBm
aWVsZHMgaW4gdGhhdCBzdHJ1Y3QgdGhhdCB0aGUgdXNlciBpc24ndCB0ZWxsaW5nIHVzCisgICAg
ICAgICAgICAgKiBhYm91dC4gIEhPV0VWRVIhIHdlIGNhbiBiZSBzdXJlIHRoYXQgdGhpcyBzaXpl
IG11c3QKKyAgICAgICAgICAgICAqIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3Vt
IG9mIHRoZSBzaXplcyBvZgorICAgICAgICAgICAgICogdGhlIGVsZW1lbnRzLiAqLworICAgICAg
ICAgICAgdHNmX2Jvb2xfdCBoYXNfc2l6ZTsKKyAgICAgICAgICAgIHNpemVfdCBzaXplOworCisJ
ICAgIHZvaWQgKCpjb25zdHJ1Y3Rvcikodm9pZCAqKTsKKwkgICAgdm9pZCAoKnByZV9kZXN0cnVj
dG9yKSh2b2lkICopOworCSAgICB2b2lkICgqZGVzdHJ1Y3Rvcikodm9pZCAqKTsKKworICAgICAg
ICAgICAgdHNmX3R5cGVfdGFibGVfdCAqdHQ7CisgICAgICAgIH0gczsKKyAgICAgICAgCisgICAg
ICAgIC8qIGFkZGl0aW9uYWwgZGF0YSBmb3IgY2hvaWNlICovCisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV90ICp0dDsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLyogc3RydWN0IG1hcHBpbmcgc3VwcG9ydCAqLworICAgICAgICAgICAgdHNmX2Jvb2xfdCBo
YXNfbWFwcGluZzsKKwkgICAgCisJICAgIHRzZl9ib29sX3QgaW5fcGxhY2U7ICAgIC8qIHVzZSB1
bmlvbj8gKi8KKyAgICAgICAgICAgIHRzZl9ib29sX3QgY2hvaWNlX2FzX2Z1bGxfd29yZDsgLyog
dXNlIGZ1bGwgMzItYml0IHdvcmQgZm9yIGVtaXR0aW5nIHRoZSBjaG9pY2UuICovCisKKyAgICAg
ICAgICAgIHNpemVfdCB2YWx1ZV9vZmZzZXQ7ICAgIC8qIG9mZnNldCB0byB0aGUgdmFsdWUgZmll
bGQgKi8KKyAgICAgICAgICAgIHNpemVfdCBkYXRhX29mZnNldDsgICAgIC8qIG9mZnNldCB0byB0
aGUgdW5pb24gaWYgaW5fcGxhY2UKKwkJCQkgICAgICAgaXMgdHJ1ZSwgb3IgdG8gdGhlIHBvaW50
ZXIgaWYKKwkJCQkgICAgICAgaXQgaXMgZmFsc2UuICovCisgICAgICAgICAgICBzaXplX3Qgc2l6
ZTsgICAgICAgICAgICAvKiBzaXplIG9mIHRoZSBjaG9pY2Ugc3RydWN0dXJlICovCisgICAgICAg
IH0gaDsKKyAgICB9IHU7CisgICAgCisgICAgLyogcHJlY29tcHV0ZWQgaGFzaCBjb2RlLiAgc2lu
Y2UgZWFjaCB0c2ZfdHlwZSBvYmplY3QgaXMgaW1tdXRhYmxlCisgICAgICogKHRoYXQncyB3aHkg
YWxsIGZ1bmN0aW9ucyB0aGF0ICdtb2RpZnknIGEgdHNmX3R5cGUgYWN0dWFsbHkgdGFrZQorICAg
ICAqIGEgcG9pbnRlciB0byBhIHBvaW50ZXIgdG8gYSB0c2ZfdHlwZSAtIHNvIHRoYXQgaW5zdGVh
ZCBvZiBtb2RpZnlpbmcKKyAgICAgKiB0aGUgYWN0dWFsIHRzZl90eXBlLCBpdCBhbGxvY2F0ZXMg
YSBuZXcgb25lIGFuZCBjaGFuZ2VzIHlvdXIKKyAgICAgKiBwb2ludGVyKSwgdGhlIGhhc2ggY29k
ZSBjYW4gc2FmZWx5IGJlIHByZWNvbXB1dGVkIHdoZW4gdGhlCisgICAgICogdHNmX3R5cGUgaXMg
Y3JlYXRlZC4gKi8KKyAgICBpbnQgaGFzaF9jb2RlOworICAgIAorICAgIC8qIGxhemlseSBjb21w
dXRlZCB0eXBlIHNpemUgaW4gYnl0ZXMuICBpZiBpdCBoYXNuJ3QgYmVlbiBjb21wdXRlZCB5ZXQs
CisgICAgICogaXRzIHZhbHVlIHdpbGwgYmUgMC4gKi8KKyAgICB2b2xhdGlsZSB1aW50MzJfdCBi
eXRlX3NpemU7CisgICAgCisgICAgLyogaG9sZGVyIGZvciBhbiBvcHRpb25hbCBjb21tZW50IHN1
cHBsaWVkIGJ5IHRoZSB1c2VyLiAgb25seQorICAgICAqIGNvbW1lbnRhYmxlIHR5cGVzIGNhbiBo
b2xkIGNvbW1lbnRzICh1c2UgdHNmX3R5cGVfa2luZF9pc19jb21tZW50YWJsZSgpCisgICAgICog
dG8gZmluZCBvdXQgaWYgaXQgaXMgY29tbWVudGFibGUpLiAgdGhlIGNvbW1lbnQgaXMgYSBVVEYt
OCBzdHJpbmcKKyAgICAgKiBzdXBwbGllZCBieSB0aGUgdXNlciB2aWEgYSBmdW5jdGlvbiBjYWxs
IChzZWUgdHNmX3R5cGVfc2V0X2NvbW1lbnQoKSkKKyAgICAgKiBvciBieSB1c2luZyBqYXZhZG9j
IGNvbW1lbnRzIGluIGRlZmluaXRpb25zIHBhc3NlZCB0byB0c2ZfZGVmaW5lLiAqLworICAgIGNo
YXIgKmNvbW1lbnQ7CisgICAgCisgICAgLyogaG9sZGVyIGZvciBhbiBvcHRpb25hbCB0eXBlIG5h
bWUgc3VwcGxpZWQgYnkgdGhlIHVzZXIuICBvbmx5CisgICAgICogY29tbWVudGFibGUgdHlwZXMg
Y2FuIGhhdmUgbmFtZXMgKHVzZSB0c2ZfdHlwZV9raW5kX2lzX2NvbW1lbnRhYmxlKCkKKyAgICAg
KiB0byBmaW5kIG91dCBpZiBpdCBpcyBjb21tZW50YWJsZSkuICB0aGUgbmFtZSBpcyBhIFVURi04
IHN0cmluZworICAgICAqIHN1cHBsaWVkIGJ5IHRoZSB1c2VyIHZpYSBhIGZ1bmN0aW9uIGNhbGwg
KHNlZSB0c2ZfdHlwZV9zZXRfbmFtZSgpKS4KKyAgICAgKiB0eXBlcyBkZWZpbmVkIHVzaW5nIHRz
Zl9kZWZpbmUgYXV0b21hdGljYWxseSBoYXZlIG5hbWVzLiAqLworICAgIGNoYXIgKm5hbWU7Cisg
ICAgCisgICAgLyogb3B0aW9uYWwgdmVyc2lvbiBudW1iZXIgZm9yIGEgdHlwZS4gIHRoZSBkZWZh
dWx0IHZhbHVlIGlzIDAuCisgICAgICogdGhpcyBpcyBhY3R1YWxseSBhbiBlbmNvZGluZyBvZiBt
YWpvci5taW5vci5wYXRjaCwgd2hlcmUgbWFqb3IKKyAgICAgKiBpcyBhIHVpbnQxNl90LCBtaW5v
ciBpcyBhIHVpbnQ4X3QsIGFuZCBwYXRjaCBpcyBhIHVpbnQ4X3QuCisgICAgICogdGhpcyBjYW4g
b25seSBiZSBjaGFuZ2VkIGZvciBjb21tZW50YWJsZSB0eXBlcyAodXNlCisgICAgICogdHNmX3R5
cGVfa2luZF9pc19jb21tZW50YWJsZSgpIHRvIGZpbmQgb3V0IGlmIGl0IGlzIGNvbW1lbnRhYmxl
KS4gKi8KKyAgICB1aW50MzJfdCB2ZXJzaW9uOworICAgIAorICAgIC8qIG9ubHkgdXNlZCBmb3Ig
bm9uLXNpbmdsZXRvbnMgKi8KKyAgICB0c2ZfYXRvbWljX2NvdW50X3QgcmVmX2NvdW50OworCisg
ICAgLyogZm9yIG1lbW9pemF0aW9uOiBwb2ludHMgYXQgdGhlIG1lbW8gbWFzdGVyLiBtYXkgYmUg
TlVMTCwgaW5kaWNhdGluZworICAgICAqIHRoYXQgd2UgaGF2ZW4ndCBldmVyIG1lbW9pemVkIHRo
aXMgdHlwZS4gbWF5IHBvaW50IHRvIHNlbGYsCisgICAgICogaW5kaWNhdGluZyB0aGF0IHRoaXMg
aXMgdGhlIG1lbW8gbWFzdGVyLiAqLworICAgIHRzZl90eXBlX3QgKm1lbW9fbWFzdGVyOworfTsK
Kworc3RydWN0IHRzZl9uYW1lZF90eXBlIHsKKyAgICBjaGFyICpuYW1lOworICAgIHRzZl90eXBl
X3QgKnR5cGU7CisgICAgdWludDMyX3QgaW5kZXg7CisgICAgCisgICAgLyogZm9yIHN0cnVjdCBl
bnRyaWVzIC0gc3RydWN0IGVudHJpZXMgbWF5IGJlIG1hcmtlZCBvcHRpb25hbC4gIG5vdGUKKyAg
ICAgKiB0aGF0IGlmIHdlIGhhdmUgc3RydWN0dXJlIEEsIEIsIGFuZCBDLCBzbyB0aGF0IEEgZG9l
cyBub3QgaGF2ZQorICAgICAqIGZpZWxkIEYsIEIgaGFzIGFuIG9wdGlvbmFsIGZpZWxkIEYsIGFu
ZCBDIGhhcyBmaWVsZCBGLCB0aGVuLCBhc3N1bWluZworICAgICAqIHRoZSBzdHJ1Y3RzIGFyZSBv
dGhlcndpc2UgZXF1YWwsIHRoZSBpbnN0YW5jZW9mICdtYXRyaXgnIGdvZXMgYXMKKyAgICAgKiBm
b2xsb3dzOgorICAgICAqCisgICAgICogICBBIEIgQworICAgICAqIEEgWSBZIE4KKyAgICAgKiBC
IFkgWSBOCisgICAgICogQyBZIFkgWQorICAgICAqIAorICAgICAqIEluIG90aGVyIHdvcmRzLCBh
IHN0cnVjdHVyZSB3aXRoIGFuIG9wdGlvbmFsIEYgaXMgbm90IGluc3RhbmNlb2YgYQorICAgICAq
IHN0cnVjdHVyZSB3aXRoIGEgbWFuZGF0b3J5IEYuICovCisgICAgdHNmX2Jvb2xfdCBvcHRpb25h
bDsKKyAgICAKKyAgICAvKiBzdHJ1Y3QgbWFwcGluZyBzdXBwb3J0IC0gbmVlZCB0byBrbm93IHRo
ZSBvZmZzZXQgb2YgdGhpcworICAgICAqIGVsZW1lbnQgd2l0aGluIGl0cyBwYXJlbnQgc3RydWN0
LgorICAgICAqCisgICAgICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYXBwbHkgdG8gY2hvaWNl
IHR5cGVzLCB3aGVyZQorICAgICAqIGFsbCBlbGVtZW50cyBoYXZlIHRoZSBzYW1lIG9mZnNldC4g
Ki8KKyAgICB0c2ZfYm9vbF90IGhhc19vZmZzZXQ7CisgICAgc2l6ZV90IG9mZnNldDsKKyAgICAK
KyAgICAvKiBob2xkZXIgZm9yIGFuIG9wdGlvbmFsIGNvbW1lbnQgc3VwcGxpZWQgYnkgdGhlIHVz
ZXIgZWl0aGVyIHRocm91Z2gKKyAgICAgKiBhIGZ1bmN0aW9uIGNhbGwgb3IgdGhyb3VnaCB0c2Zf
ZGVmaW5lLiAqLworICAgIGNoYXIgKmNvbW1lbnQ7Cit9OworCitzdHJ1Y3QgdHNmX2J1ZmZlciB7
CisgICAgdHNmX3R5cGVfdCAqdHlwZTsKKyAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXM7Cisg
ICAgdHNmX2Jvb2xfdCBrZWVwOworICAgIHZvaWQgKmRhdGE7CisgICAgdWludDMyX3Qgc2l6ZTsK
KyAgICAKKyAgICB0c2ZfYXRvbWljX2NvdW50X3QgcmVmX2NvdW50OworfTsKKworc3RydWN0IHRz
Zl9yZWZsZWN0IHsKKyAgICB0c2ZfdHlwZV90ICp0eXBlOworICAgIHVuaW9uIHsKKyAgICAgICAg
LyogY29udGFpbmVyLCB1c2VkIGZvciBib3RoIHN0cnVjdCBhbmQgYXJyYXkuICBub3RlIHRoYXQg
aXQKKyAgICAgICAgICogaXMgdXNlZCBkaWZmZXJlbnRseSBmb3Igc3RydWN0IGFuZCBmb3IgYXJy
YXkuICovCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICoqYXJy
YXk7CisgICAgICAgICAgICB1aW50MzJfdCBzaXplOworICAgICAgICB9IGM7CisgICAgICAgIAor
ICAgICAgICAvKiBjaG9pY2UgZGF0YS4gKi8KKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IHVpbnQzMl90IGNob2ljZTsgICAgLyogJ3Vua25vd24nIGlmIGVxdWFsIHRvIFVJTlQzMl9NQVgg
Ki8KKyAgICAgICAgICAgIHRzZl9yZWZsZWN0X3QgKmRhdGE7CisgICAgICAgIH0gaDsKKyAgICAg
ICAgCisgICAgICAgIC8qIHN0cmluZyBkYXRhLiAqLworICAgICAgICBjaGFyICpzdHI7CisgICAg
ICAgIAorICAgICAgICAvKiBwcmltaXRpdmVzICovCisgICAgICAgIGludDhfdCAgIHBfaW50OF90
OworICAgICAgICB1aW50OF90ICBwX3VpbnQ4X3Q7CisgICAgICAgIGludDE2X3QgIHBfaW50MTZf
dDsKKyAgICAgICAgdWludDE2X3QgcF91aW50MTZfdDsKKyAgICAgICAgaW50MzJfdCAgcF9pbnQz
Ml90OworICAgICAgICB1aW50MzJfdCBwX3VpbnQzMl90OworICAgICAgICBpbnQ2NF90ICBwX2lu
dDY0X3Q7CisgICAgICAgIHVpbnQ2NF90IHBfdWludDY0X3Q7CisgICAgICAgIHRzZl9pbnRlZ2Vy
X3QgcF9pbnRlZ2VyOworICAgICAgICB0c2ZfbG9uZ190IHBfbG9uZzsKKyAgICAgICAgZmxvYXQg
ICAgcF9mbG9hdDsKKyAgICAgICAgZG91YmxlICAgcF9kb3VibGU7CisgICAgICAgIAorICAgICAg
ICAvKiBiaXQgKi8KKyAgICAgICAgdHNmX2Jvb2xfdCBiaXQ7CisgICAgICAgIAorICAgICAgICAv
KiBmb3IgdGhlIGFueSB0eXBlICovCisgICAgICAgIHRzZl9idWZmZXJfdCAqYW55OworICAgIH0g
dTsKK307CisKK3N0cnVjdCB0c2ZfZ2VucnRyIHsKKyAgICB0c2ZfdHlwZV90ICp0eXBlOworICAg
IGdwY19wcm9ncmFtX3QgKmdlbmVyYXRvcjsKK307CisKK3N0cnVjdCB0c2ZfcGFyc2VyIHsKKyAg
ICB0c2ZfdHlwZV90ICpleHBlY3RlZF90eXBlOworICAgIHNpemVfdCBleHBlY3RlZF90eXBlX3Np
emU7CisgICAgdHNmX3N0X3RhYmxlICpwYXJzZXJzOworICAgIAorICAgIGdwY19wcm9ncmFtX3Qg
KmNhY2hlZF9wcm9ncmFtOworICAgIHRzZl90eXBlX3QgKmNhY2hlZF90eXBlOworICAgIAorICAg
IHRzZl9tdXRleF90IGxvY2s7Cit9OworCitzdHJ1Y3QgdHNmX2NvcGllciB7CisgICAgZ3BjX3By
b2dyYW1fdCAqY29waWVyOworfTsKKworc3RydWN0IHRzZl9kZXN0cnVjdG9yIHsKKyAgICBncGNf
cHJvZ3JhbV90ICpkZXN0cnVjdG9yOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHRzZl90
eXBlX2NiYWNrX3QgY2JhY2s7CisgICAgdm9pZCAqYXJnOworfSB0c2Zfc2VyaWFsX2luX21hbl9j
YmFja190OworCitzdHJ1Y3QgdHNmX3NlcmlhbF9pbl9tYW4geworICAgIHRzZl90eXBlX2luX21h
cF90ICp0eXBlczsKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9zdGF0ZV90IHN0YXRlOworICAgIAor
ICAgIHVpbnQzMl90IHR5cGVzX2J5dGVfc2l6ZTsKKyAgICAKKyAgICB0c2Zfc2VyaWFsX2luX21h
bl9jYmFja190ICpjYmFja3M7CisgICAgdWludDMyX3QgbnVtX2NiYWNrczsKKyAgICAKKyAgICB0
c2ZfcmVhZGVyX3QgcmVhZGVyOworICAgIHZvaWQgKmFyZzsKKyAgICAKKyAgICB0c2ZfbGltaXRz
X3QgKmxpbWl0czsKK307CisKK3N0cnVjdCB0c2Zfc2VyaWFsX291dF9tYW4geworICAgIHRzZl90
eXBlX291dF9tYXBfdCAqdHlwZXM7CisgICAgCisgICAgdHNmX3dyaXRlcl90IHdyaXRlcjsKKyAg
ICB2b2lkICphcmc7Cit9OworCitzdHJ1Y3QgdHNmX3NoYTFfd3RyIHsKKyAgICB0c2ZfU0hBMUNv
bnRleHQgY3R4OworfTsKKworc3RydWN0IHRzZl9idWZfcmRyIHsKKyAgICBpbnQgZmQ7CisgICAg
dHNmX2Jvb2xfdCBrZWVwX2ZkOworICAgIHVpbnQ4X3QgKmJ1ZjsKKyAgICB1aW50MzJfdCBzaXpl
OworICAgIHVpbnQzMl90IHB1dGk7CisgICAgdWludDMyX3QgZ2V0aTsKK307CisKK3N0cnVjdCB0
c2ZfYnVmX3d0ciB7CisgICAgaW50IGZkOworICAgIHRzZl9ib29sX3Qga2VlcF9mZDsKKyAgICB1
aW50OF90ICpidWY7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICB1aW50MzJfdCBwb3M7Cit9Owor
CitzdHJ1Y3QgdHNmX3ppcF9yZHIgeworICAgIHRzZl96aXBfbW9kZV90IG1vZGU7CisgICAgCisg
ICAgdHNmX3BhcnRpYWxfcmVhZGVyX3QgcmVhZGVyOworICAgIHZvaWQgKnJlYWRlcl9hcmc7Cisg
ICAgCisgICAgdm9pZCAqc3RyZWFtOyAgIC8qIGNhbiBiZSBlaXRoZXIgb2YgdHlwZSB6X3N0cmVh
bSBvciBiel9zdHJlYW0gKi8KKyAgICAKKyAgICB0c2ZfemlwX2Fic3RyYWN0X3QgYWJzdHJhY3Q7
CisgICAgCisgICAgdHNmX2Jvb2xfdCBkZWNvbXBfZW9mOyAgLyogdHJ1ZSBpZiB0aGUgZGVjb21w
cmVzc2lvbiBhbGdvcml0aG0gaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVh
Y2hlZCBFT0YuICovCisgICAgCisgICAgdWludDhfdCAqYnVmOworICAgIHVpbnQzMl90IGJ1Zl9z
aXplOworfTsKKworc3RydWN0IHRzZl96aXBfd3RyIHsKKyAgICB0c2ZfemlwX21vZGVfdCBtb2Rl
OworICAgIAorICAgIHRzZl93cml0ZXJfdCB3cml0ZXI7CisgICAgdm9pZCAqd3JpdGVyX2FyZzsK
KyAgICAKKyAgICB2b2lkICpzdHJlYW07ICAgLyogY2FuIGJlIGVpdGhlciBvZiB0eXBlIHpfc3Ry
ZWFtIG9mIGJ6X3N0cmVhbSAqLworICAgIAorICAgIHRzZl96aXBfYWJzdHJhY3RfdCBhYnN0cmFj
dDsKKyAgICAKKyAgICB1aW50OF90ICpidWY7CisgICAgdWludDMyX3QgYnVmX3NpemU7Cit9Owor
CitzdHJ1Y3QgdHNmX2FkcHRfcmRyIHsKKyAgICB0c2ZfemlwX21vZGVfdCBtb2RlOworICAgIAor
ICAgIHRzZl9wYXJ0aWFsX3JlYWRlcl90IHJlYWRlcjsKKyAgICB2b2lkICpyZWFkZXJfYXJnOwor
ICAgIAorICAgIHZvaWQgKnN0cmVhbTsgICAvKiBjYW4gYmUgZWl0aGVyIG9mIHR5cGUgel9zdHJl
YW0gb3IgYnpfc3RyZWFtICovCisgICAgCisgICAgdHNmX3ppcF9hYnN0cmFjdF90IGFic3RyYWN0
OworICAgIAorICAgIHRzZl9ib29sX3QgZXhwZWN0X3N3aXRjaDsKKyAgICAKKyAgICB1aW50OF90
ICpidWY7CisgICAgdWludDMyX3QgcHV0aSxnZXRpOyAvKiBzYW1lIGFzIGluIGJ1ZmZlcmVkIHJl
YWRlciAqLworICAgIHVpbnQzMl90IGJ1Zl9zaXplOworCisgICAgdHNmX3ppcF9yZHJfYXR0cl90
IGF0dHI7CisgICAgdWludDMyX3Qgbm96aXBfYnVmX3NpemU7Cit9OworCitzdHJ1Y3QgdHNmX3N0
cmVhbV9maWxlX2lucHV0IHsKKyAgICBpbnQgZmQ7CisgICAgdHNmX2Jvb2xfdCBrZWVwX2ZkOwor
ICAgIAorICAgIHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbjsKKyAgICAKKyAgICB0c2ZfYm9v
bF90IHVzZV9hZHB0OworICAgIHVuaW9uIHsKKyAgICAgICAgdHNmX2J1Zl9yZHJfdCAqYnVmOwor
ICAgICAgICB0c2ZfYWRwdF9yZHJfdCAqYWRwdDsKKyAgICAgICAgdm9pZCAqcHRyOworICAgIH0g
cmVhZGVyOworfTsKKworc3RydWN0IHRzZl9zdHJlYW1fZmlsZV9vdXRwdXQgeworICAgIGludCBm
ZDsKKyAgICB0c2ZfYm9vbF90IGtlZXBfZmQ7CisgICAgCisgICAgdHNmX3NlcmlhbF9vdXRfbWFu
X3QgKm91dF9tYW47CisgICAgCisgICAgdHNmX2Jvb2xfdCB1c2VfemlwOworICAgIHVuaW9uIHsK
KyAgICAgICAgdHNmX2J1Zl93dHJfdCAqYnVmOworICAgICAgICB0c2ZfemlwX3d0cl90ICp6aXA7
CisgICAgICAgIHZvaWQgKnB0cjsKKyAgICB9IHdyaXRlcjsKKyAgICAKKyAgICB0c2ZfYm9vbF90
IGFsbF9nb29kOworfTsKKworc3RydWN0IHRzZl9mc2RiX2Nvbm5lY3Rpb24geworICAgIGludCBm
ZDsKKyAgICB0c2ZfYm9vbF90IGNsZWFyOworICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICpp
bjsKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dDsKKyAgICB1aW50OF90ICpidWY7
CisgICAgdWludDMyX3QgYnVmX3NpemU7CisgICAgdWludDMyX3QgYnVmX2N1cnNvcjsKK307CisK
K3N0cnVjdCB0c2ZfZnNkYiB7CisgICAgdHNmX2ZzZGJfa2luZF90IGtpbmQ7CisgICAgdW5pb24g
eworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgRElSICpkaXJoYW5kbGU7CisgICAgICAg
ICAgICBjb25zdCBjaGFyICpkaXJuYW1lOworICAgICAgICAgICAgdHNmX2Jvb2xfdCB1cGRhdGU7
CisgICAgICAgICAgICB0c2ZfYm9vbF90IHRydW5jYXRlOworICAgICAgICAgICAgdWludDY0X3Qg
Y3JlYXRlX2NudDsKKyAgICAgICAgfSBsb2NhbDsKKyAgICAgICAgc3RydWN0IHsKKyNpZmRlZiBU
U0ZfSEFWRV9CU0RTT0NLUworICAgICAgICAgICAgLyogRklYTUU6IG9wZW5fcmVtb3RlKCkgc2hv
dWxkIGF0dGVtcHQgdG8gY29ubmVjdCBqdXN0IHRvIHNlZSB3aGljaAorICAgICAgICAgICAgICog
YWRkcmVzcyB3b3Jrcy4gIGl0IHNob3VsZCBsZWF2ZSB0aGF0IGNvbm5lY3Rpb24gb3BlbiB1bnRp
bCB0aGUKKyAgICAgICAgICAgICAqIGZpcnN0IHB1dC9nZXQgcmVxdWVzdC4gIGFuZCBpdCBzaG91
bGQgbGVhdmUgZW5vdWdoIGluZm8gaW4gaGVyZQorICAgICAgICAgICAgICogdG8gbWFrZSBzdWJz
ZXF1ZW50IGNvbm5lY3Rpb24gcmVxdWVzdHMgcG9zc2libGUuICovCisjaWZkZWYgVFNGX0hBVkVf
R0VUQUREUklORk8KKyAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqcmVzdWx0OworICAgICAg
ICAgICAgc3RydWN0IGFkZHJpbmZvICpjdXI7CisjZWxzZQorICAgICAgICAgICAgdWludDMyX3Qg
YWRkcjsKKyAgICAgICAgICAgIGludCBwb3J0OworI2VuZGlmCisgICAgICAgICAgICB0c2ZfZnNk
Yl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb247CisjZW5kaWYKKyAgICAgICAgfSByZW1vdGU7Cisg
ICAgfSB1OworICAgIHRzZl9saW1pdHNfdCAqbGltaXRzOworICAgIHRzZl96aXBfcmRyX2F0dHJf
dCByZHJfYXR0cjsKKyAgICB0c2ZfemlwX3d0cl9hdHRyX3Qgd3RyX2F0dHI7CisKKyAgICB0c2Zf
bXV0ZXhfdCBsb2NrOworfTsKKworc3RydWN0IHRzZl9mc2RiX3Jlc3BvbnNlX3M7CisKK3N0cnVj
dCB0c2ZfZnNkYl9pbiB7CisgICAgdHNmX2ZzZGJfdCAqZGI7CisgICAgdW5pb24geworICAgICAg
ICBzdHJ1Y3QgeworICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICprZXk7CisgICAgICAgICAgICB0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW47CisgICAgICAgIH0gbG9jYWw7CisgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICB0c2ZfZnNkYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb247Cisg
ICAgICAgICAgICBzdHJ1Y3QgdHNmX2ZzZGJfcmVzcG9uc2VfcyAqcnNwOworICAgICAgICAgICAg
dWludDMyX3QgcnNwX2N1cnNvcjsKKyAgICAgICAgICAgIHRzZl9zZXJpYWxfaW5fbWFuX3QgKmlu
X21hbjsKKyAgICAgICAgfSByZW1vdGU7CisgICAgfSB1OworfTsKKworc3RydWN0IHRzZl9mc2Ri
X291dCB7CisgICAgdHNmX2ZzZGJfdCAqZGI7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgY2hhciAqcGFydG5hbWU7CisgICAgICAgICAgICB0c2ZfYnVmZmVyX3Qg
KmtleTsKKyAgICAgICAgICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0OworICAgICAg
ICB9IGxvY2FsOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdHNmX2ZzZGJfY29ubmVj
dGlvbl90ICpjb25uZWN0aW9uOworICAgICAgICAgICAgdHNmX3NlcmlhbF9vdXRfbWFuX3QgKm91
dF9tYW47CisgICAgICAgIH0gcmVtb3RlOworICAgIH0gdTsKK307CisKKy8qIG1pbiBhbmQgbWF4
ICovCisjZGVmaW5lIHRzZl9taW4oYSxiKSAoKGEpPChiKT8oYSk6KGIpKQorI2RlZmluZSB0c2Zf
bWF4KGEsYikgKChhKT4oYik/KGEpOihiKSkKKworLyogdGltZXN0YW1waW5nICovCisjaWZkZWYg
SEFWRV9HRVRUSU1FT0ZEQVkKK3N0YXRpYyBUU0ZfaW5saW5lIGludDY0X3QgdHNmX2N1cl90aW1l
KHZvaWQpIHsKKyAgICBpbnQ2NF90IHJlc3VsdDsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKwor
ICAgIGdldHRpbWVvZmRheSgmdHYsTlVMTCk7CisgICAgCisgICAgcmVzdWx0PXR2LnR2X3NlYzsK
KyAgICByZXN1bHQqPTEwMDA7CisgICAgcmVzdWx0Kj0xMDAwOworICAgIHJlc3VsdCs9dHYudHZf
dXNlYzsKKyAgICByZXN1bHQqPTEwMDA7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNl
bHNlCitzdGF0aWMgVFNGX2lubGluZSBpbnQ2NF90IHRzZl9jdXJfdGltZSh2b2lkKSB7CisgICAg
cmV0dXJuICgoaW50NjRfdCl0aW1lKE5VTEwpKSooMTAwMCoxMDAwKjEwMDApOworfQorI2VuZGlm
CisKKy8qIHRoZSBmdWxsIGVycm9yIHNldHRpbmcgY29tbWFuZCAqLwordm9pZCB0c2Zfc2V0X2Vy
cm9yX2Z1bGx2KHRzZl9lcnJvcl90IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHN5c19lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVhZGx5X3NpZ25hbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgemxpYl9lcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICp6bGliX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBs
c3QpOworCit2b2lkIHRzZl9zZXRfZXJyb3JfZnVsbCh0c2ZfZXJyb3JfdCBjb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHN5c19lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGludCBkZWFkbHlfc2lnbmFsLAorCQkJaW50IHpsaWJfZXJyb3IsCisJCQljb25zdCBjaGFyICp6
bGliX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisKKy8qIHRoaXMgaXMgYW4gc3RyZXJyb3IgdGhp
bmd5IGZvciB6bGliLiAgaXQgd2lsbCBhYm9ydCBpZiBjYWxsZWQgd2hlbgorICogbm8gemxpYiBz
dXBwb3J0IGlzIGNvbXBpbGVkLiAqLworY29uc3QgY2hhciAqdHNmX3psaWJfc3RyZXJyb3IoaW50
IGNvZGUpOworCisvKiB0aGlzIGlzIGFuIHN0cmVycm9yIHRoaW5neSBmb3IgbGliYnppcDIuICBp
dCB3aWxsIGFib3J0IGlmIGNhbGxlZAorICogd2hlbiBubyBsaWJiemlwMiBzdXBwb3J0IGlzIGNv
bXBpbGVkLiAqLworY29uc3QgY2hhciAqdHNmX2xpYmJ6aXAyX3N0cmVycm9yKGludCBjb2RlKTsK
KworLyogdGhpcyBpcyBqdXN0IHBsYWluIGR1bWIuICB0aGFua3MgYSBsb3QsIEdOVSBwcGwuICov
CisjaWYgZGVmaW5lZChIQVZFX1NUUENQWSkgJiYgIWRlZmluZWQoc3RwY3B5KQorY2hhciAqc3Rw
Y3B5KGNoYXIgKmRlc3QsY29uc3QgY2hhciAqc3JjKTsKKyNlbmRpZgorCisvKiB0c2Zfc29ydCBq
dXN0IGNhbGxzIHFzb3J0IGlmIGF2YWlsYWJsZS4gIG90aGVyd2lzZSBpdCBpcyBzb21lIHNoaXR0
eQorICogc29ydGluZyBhbGdvIHRoYXQgSSBpbXBsZW1lbnRlZC4gKi8KK3ZvaWQgdHNmX3NvcnQo
dm9pZCAqYmFzZSxzaXplX3Qgbm1lbWIsc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgIGludCAo
KmNvbXBhcikoY29uc3Qgdm9pZCAqYSxjb25zdCB2b2lkICpiKSk7CisKKy8qIHNvcnRzIGFuIGFy
cmF5IG9mIHVpbnQzMl90IGluIGFzY2VuZGluZyBvcmRlci4gKi8KK3ZvaWQgdHNmX3VpMzJfc29y
dCh1aW50MzJfdCAqYmFzZSxzaXplX3Qgbm1lbWIpOworCisvKiBzdHJpbmcgY3JlYXRpb24gc3R1
ZmYuICBvbiBlcnJvciwgYm90aCBmdW5jdGlvbnMganVzdCBzZXQgZXJybm8uICovCitjaGFyICp0
c2ZfdmFzcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCx2YV9saXN0IGxzdCk7CisKK2NoYXIgKnRz
Zl9hc3ByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsLi4uKTsKKworLyogaGFzaHRhYmxlIHN0dWZm
ICovCit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3R5cGV0YWJsZSgpOworCisvKiBsaW1pdHMg
c3R1ZmYgKi8KKworLyogbWF4IG51bWJlciBvZiB0eXBlcyBpbiBvbmUgc3RyZWFtICovCisjZGVm
aW5lIHRzZl9saW1pdHNfbWF4X3R5cGVzKGxpbWl0cykgXAorICAgICAgICAgICAgKChsaW1pdHMp
PT1OVUxMP1VJTlQzMl9NQVg6KGxpbWl0cyktPm1heF90eXBlcykKKworLyogbWF4aW11bSBzaXpl
IGluIGJ5dGVzIG9mIGEgc2VyaWFsaXplZCB0eXBlICovCisjZGVmaW5lIHRzZl9saW1pdHNfbWF4
X3R5cGVfc2l6ZShsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09TlVMTD9VSU5UMzJf
TUFYOihsaW1pdHMpLT5tYXhfdHlwZV9zaXplKQorCisvKiBtYXhpbXVtIHRvdGFsIHNpemUgb2Yg
YWxsIHR5cGVzIHJlYWQgaW4gYSBzZXNzaW9uICovCisjZGVmaW5lIHRzZl9saW1pdHNfbWF4X3Rv
dGFsX3R5cGVfc2l6ZShsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09TlVMTD9VSU5U
MzJfTUFYOihsaW1pdHMpLT5tYXhfdG90YWxfdHlwZV9zaXplKQorCisvKiBtYXhpbXVtIHNpemUg
aW4gYnl0ZXMgb2YgYSBidWZmZXIgKi8KKyNkZWZpbmUgdHNmX2xpbWl0c19tYXhfYnVmX3NpemUo
bGltaXRzKSBcCisgICAgICAgICAgICAoKGxpbWl0cyk9PU5VTEw/VUlOVDMyX01BWDoobGltaXRz
KS0+bWF4X2J1Zl9zaXplKQorCisvKiBjb250YWluZXIgZGVwdGggbGltaXQgKi8KKyNkZWZpbmUg
dHNmX2xpbWl0c19kZXB0aF9saW1pdChsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09
TlVMTD9VSU5UMzJfTUFYOihsaW1pdHMpLT5kZXB0aF9saW1pdCkKKworLyogY29tbWVudHMgKi8K
KyNkZWZpbmUgdHNmX2xpbWl0c19hbGxvd19jb21tZW50cyhsaW1pdHMpIFwKKyAgICAgICAgICAg
ICgobGltaXRzKT09TlVMTD90c2ZfdHJ1ZToobGltaXRzKS0+YWxsb3dfY29tbWVudHMpCisKKy8q
IG1heGltdW0gYXJyYXkgbGVuZ3RoICovCisjZGVmaW5lIHRzZl9saW1pdHNfbWF4X2FycmF5X2xl
bmd0aChsaW1pdHMpIFwKKyAgICAgICAgICAgICgobGltaXRzKT09TlVMTD9VSU5UMzJfTUFYOihs
aW1pdHMpLT5tYXhfYXJyYXlfbGVuZ3RoKQorCisvKiBtYXhpbXVtIHN0cnVjdCBzaXplLCBpbiBu
dW1iZXIgb2YgZWxlbWVudHMgKi8KKyNkZWZpbmUgdHNmX2xpbWl0c19tYXhfc3RydWN0X3NpemUo
bGltaXRzKSBcCisgICAgICAgICAgICAoKGxpbWl0cyk9PU5VTEw/VUlOVDMyX01BWDoobGltaXRz
KS0+bWF4X3N0cnVjdF9zaXplKQorCisvKiBtYXhpbXVtIGNob2ljZSBzaXplLCBpbiBudW1iZXIg
b2YgZWxlbWVudHMgKi8KKyNkZWZpbmUgdHNmX2xpbWl0c19tYXhfY2hvaWNlX3NpemUobGltaXRz
KSBcCisgICAgICAgICAgICAoKGxpbWl0cyk9PU5VTEw/VUlOVDMyX01BWDoobGltaXRzKS0+bWF4
X2Nob2ljZV9zaXplKQorCisvKiBtYXhpbXVtIHN0cmluZyBzaXplICovCisjZGVmaW5lIHRzZl9s
aW1pdHNfbWF4X3N0cmluZ19zaXplKGxpbWl0cykgXAorICAgICAgICAgICAgKChsaW1pdHMpPT1O
VUxMP1VJTlQzMl9NQVg6KGxpbWl0cyktPm1heF9zdHJpbmdfc2l6ZSkKKworLyogZW5kaWFubmVz
cyBzdHVmZiAqLworCisvKiBnZXQgbnRvaGwsIGh0b25sLCBudG9ocywgaHRvbnMgKi8KKyNpZmRl
ZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZWxzZQorI2lmZGVm
IEhBVkVfTElUVExFX0VORElBTgorc3RhdGljIGlubGluZSB1aW50MzJfdCBudG9obCh1aW50MzJf
dCB4KSB7CisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCB4OworICAgICAgICB1aW50OF90
IGNbNF07CisgICAgfSB1OworICAgIHUueD14OworICAgIHUuY1swXV49dS5jWzNdXj11LmNbMF1e
PXUuY1szXTsKKyAgICB1LmNbMV1ePXUuY1syXV49dS5jWzFdXj11LmNbMl07CisgICAgcmV0dXJu
IHUueDsKK30KK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgbnRvaHModWludDE2X3QgeCkgeworICAg
IHVuaW9uIHsKKyAgICAgICAgdWludDE2X3QgeDsKKyAgICAgICAgdWludDhfdCBjWzJdOworICAg
IH0gdTsKKyAgICB1Lng9eDsKKyAgICB1LmNbMF1ePXUuY1sxXV49dS5jWzBdXj11LmNbMV07Cisg
ICAgcmV0dXJuIHUueDsKK30KKyNkZWZpbmUgaHRvbmwoeCkgKG50b2hsKHgpKQorI2RlZmluZSBo
dG9ucyh4KSAobnRvaHMoeCkpCisjZWxzZQorI2RlZmluZSBudG9obCh4KSAoeCkKKyNkZWZpbmUg
aHRvbmwoeCkgKHgpCisjZGVmaW5lIG50b2hzKHgpICh4KQorI2RlZmluZSBodG9ucyh4KSAoeCkK
KyNlbmRpZgorI2VuZGlmCisKKy8qIGRlZmluZSBzdHVwaWQgdHJpdmlhbCBzdHVmZiAqLworI2Rl
ZmluZSBodG9uYyh4KSAoeCkKKyNkZWZpbmUgbnRvaGMoeCkgKHgpCisKKyNpZmRlZiBIQVZFX0JJ
R19FTkRJQU4KKworLyogI3VuZGVmIE5FRURfSU5UX0NPTlZFUlNJT04gKi8KKworLyogZGVmaW5l
IGxvbmcgbG9uZyBlcXVpdmFsZW50IG9mIHRoZSBhcnBhL2luZXQgZnVuY3Rpb25zICovCisjaWZu
ZGVmIGh0b25sbAorI2RlZmluZSBodG9ubGwoeCkgKHgpCisjZW5kaWYKKworLyogZGVmaW5lIG1p
c2FsaWduZWQgY29weSBlcXVpdmFsZW50cyBvZiBhbGwgb2YgdGhlIGFycGEvaW5ldCBmdW5jdGlv
bnMgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2h0b25jKHVpbnQ4X3QgKmRzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnNyYykgeworICAgICpkc3Q9KnNyYzsK
K30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbnModWludDhfdCAqZHN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7CisjaWZkZWYgQ0FOX0RPX01J
U0FMSUdORURfTERTVAorICAgICooKHVpbnQxNl90Kilkc3QpPSooKHVpbnQxNl90KilzcmMpOwor
I2Vsc2UKKyAgICBkc3RbMF09c3JjWzBdOworICAgIGRzdFsxXT1zcmNbMV07CisjZW5kaWYKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbmwodWludDhfdCAqZHN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7CisjaWZkZWYgQ0FOX0RPX01JU0FM
SUdORURfTERTVAorICAgIHVpbnQzMl90IHRtcD0qKCh1aW50MzJfdCopc3JjKTsKKyAgICAqKCh1
aW50MzJfdCopZHN0KT10bXA7CisjZWxzZQorICAgIGRzdFswXT1zcmNbMF07CisgICAgZHN0WzFd
PXNyY1sxXTsKKyAgICBkc3RbMl09c3JjWzJdOworICAgIGRzdFszXT1zcmNbM107CisjZW5kaWYK
K30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbmxsKHVpbnQ4X3QgKmRzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpzcmMpIHsKKyNpZmRlZiBDQU5fRE9f
TUlTQUxJR05FRF9MRFNUCisgICAgKigodWludDY0X3QqKWRzdCk9KigodWludDY0X3QqKXNyYyk7
CisjZWxzZQorICAgIGRzdFswXT1zcmNbMF07CisgICAgZHN0WzFdPXNyY1sxXTsKKyAgICBkc3Rb
Ml09c3JjWzJdOworICAgIGRzdFszXT1zcmNbM107CisgICAgZHN0WzRdPXNyY1s0XTsKKyAgICBk
c3RbNV09c3JjWzVdOworICAgIGRzdFs2XT1zcmNbNl07CisgICAgZHN0WzddPXNyY1s3XTsKKyNl
bmRpZgorfQorCisjZGVmaW5lIGNvcHlfbnRvaGMoZHN0LHNyYykgY29weV9odG9uYyhkc3Qsc3Jj
KQorI2RlZmluZSBjb3B5X250b2hzKGRzdCxzcmMpIGNvcHlfaHRvbnMoZHN0LHNyYykKKyNkZWZp
bmUgY29weV9udG9obChkc3Qsc3JjKSBjb3B5X2h0b25sKGRzdCxzcmMpCisjZGVmaW5lIGNvcHlf
bnRvaGxsKGRzdCxzcmMpIGNvcHlfaHRvbmxsKGRzdCxzcmMpCisKKyNlbHNlCisKKyNkZWZpbmUg
TkVFRF9JTlRfQ09OVkVSU0lPTgorCisjaWZuZGVmIGh0b25sbAorLyogZGVmaW5lIGxvbmcgbG9u
ZyBlcXVpdmFsZW50IG9mIHRoZSBhcnBhL2luZXQgZnVuY3Rpb25zICovCitzdGF0aWMgaW5saW5l
IHVpbnQ2NF90IGh0b25sbCh1aW50NjRfdCB4KSB7CisgICAgLyogcHJvYmFibHkgbm90IHZlcnkg
ZWZmaWNpZW50LCBidXQgb2ggd2VsbC4gKi8KKyAgICByZXR1cm4gKCh4ID4+IDU2KSAmIFVJTlQ2
NF9DKDB4MDAwMDAwMDAwMDAwMDBmZikpCisgICAgICAgIHwgICgoeCA+PiA0MCkgJiBVSU5UNjRf
QygweDAwMDAwMDAwMDAwMGZmMDApKQorICAgICAgICB8ICAoKHggPj4gMjQpICYgVUlOVDY0X0Mo
MHgwMDAwMDAwMDAwZmYwMDAwKSkKKyAgICAgICAgfCAgKCh4ID4+ICA4KSAmIFVJTlQ2NF9DKDB4
MDAwMDAwMDBmZjAwMDAwMCkpCisgICAgICAgIHwgICgoeCA8PCAgOCkgJiBVSU5UNjRfQygweDAw
MDAwMGZmMDAwMDAwMDApKQorICAgICAgICB8ICAoKHggPDwgMjQpICYgVUlOVDY0X0MoMHgwMDAw
ZmYwMDAwMDAwMDAwKSkKKyAgICAgICAgfCAgKCh4IDw8IDQwKSAmIFVJTlQ2NF9DKDB4MDBmZjAw
MDAwMDAwMDAwMCkpCisgICAgICAgIHwgICgoeCA8PCA1NikgJiBVSU5UNjRfQygweGZmMDAwMDAw
MDAwMDAwMDApKTsKK30KKyNlbmRpZiAvKiAjaWZuZGVmIGh0b25sbCAqLworCisvKiBkZWZpbmUg
bWlzYWxpZ25lZCBjb3B5IGVxdWl2YWxlbnRzIG9mIGFsbCBvZiB0aGUgYXJwYS9pbmV0IGZ1bmN0
c2lvbnMgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2h0b25jKHVpbnQ4X3QgKmRzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnNyYykgeworICAgICpkc3Q9KnNy
YzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbnModWludDhfdCAqZHN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7CisgICAgZHN0WzBdPXNy
Y1sxXTsKKyAgICBkc3RbMV09c3JjWzBdOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY29weV9o
dG9ubCh1aW50OF90ICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpzcmMpIHsKKyAgICBkc3RbMF09c3JjWzNdOworICAgIGRzdFsxXT1zcmNbMl07CisgICAgZHN0
WzJdPXNyY1sxXTsKKyAgICBkc3RbM109c3JjWzBdOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg
Y29weV9odG9ubGwodWludDhfdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKnNyYykgeworICAgIGRzdFswXT1zcmNbN107CisgICAgZHN0WzFdPXNyY1s2XTsK
KyAgICBkc3RbMl09c3JjWzVdOworICAgIGRzdFszXT1zcmNbNF07CisgICAgZHN0WzRdPXNyY1sz
XTsKKyAgICBkc3RbNV09c3JjWzJdOworICAgIGRzdFs2XT1zcmNbMV07CisgICAgZHN0WzddPXNy
Y1swXTsKK30KKworI2RlZmluZSBjb3B5X250b2hjKGRzdCxzcmMpIGNvcHlfaHRvbmMoZHN0LHNy
YykKKyNkZWZpbmUgY29weV9udG9ocyhkc3Qsc3JjKSBjb3B5X2h0b25zKGRzdCxzcmMpCisjZGVm
aW5lIGNvcHlfbnRvaGwoZHN0LHNyYykgY29weV9odG9ubChkc3Qsc3JjKQorI2RlZmluZSBjb3B5
X250b2hsbChkc3Qsc3JjKSBjb3B5X2h0b25sbChkc3Qsc3JjKQorCisjZW5kaWYKKworI2lmbmRl
ZiBudG9obGwKKyNkZWZpbmUgbnRvaGxsKHgpIChodG9ubGwoeCkpCisjZW5kaWYKKworLyogZmxv
YXRpbmcgcG9pbnQgc3R1ZmYgKi8KKworI2lmZGVmIFRTRl9IQVZFX0lFRUVfRkxPQVQKKworI2lm
ZGVmIE5FRURfSU5UX0NPTlZFUlNJT04KKyNkZWZpbmUgTkVFRF9GTE9BVF9DT05WRVJTSU9OCisj
ZW5kaWYKKworc3RhdGljIGlubGluZSBmbG9hdCBodG9uZihmbG9hdCB4KSB7CisgICAgdWludDMy
X3QgcmV0PWh0b25sKCooKGxvbmcqKSZ4KSk7CisgICAgcmV0dXJuICooKGZsb2F0KikmcmV0KTsK
K30KKworc3RhdGljIGlubGluZSBkb3VibGUgaHRvbmQoZG91YmxlIHgpIHsKKyAgICB1aW50NjRf
dCByZXQ9aHRvbmxsKCooKHVpbnQ2NF90KikmeCkpOworICAgIHJldHVybiAqKChkb3VibGUqKSZy
ZXQpOworfQorCisjZGVmaW5lIG50b2hmKHgpIChodG9uZih4KSkKKyNkZWZpbmUgbnRvaGQoeCkg
KGh0b25kKHgpKQorCisjaWYgIWRlZmluZWQoTkVFRF9JTlRfQ09OVkVSU0lPTikgJiZcCisgICAg
ZGVmaW5lZChDQU5fRE9fTUlTQUxJR05FRF9MRFNUKSAmJlwKKyAgICAhZGVmaW5lZChDQU5fRE9f
RkxPQVRfTUlTQUxJR05FRF9MRFNUKQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRvbmYodWlu
dDhfdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc3JjKSB7
CisgICAgZHN0WzBdPXNyY1swXTsKKyAgICBkc3RbMV09c3JjWzFdOworICAgIGRzdFsyXT1zcmNb
Ml07CisgICAgZHN0WzNdPXNyY1szXTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaHRv
bmQodWludDhfdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
c3JjKSB7CisgICAgZHN0WzBdPXNyY1swXTsKKyAgICBkc3RbMV09c3JjWzFdOworICAgIGRzdFsy
XT1zcmNbMl07CisgICAgZHN0WzNdPXNyY1szXTsKKyAgICBkc3RbNF09c3JjWzRdOworICAgIGRz
dFs1XT1zcmNbNV07CisgICAgZHN0WzZdPXNyY1s2XTsKKyAgICBkc3RbN109c3JjWzddOworfQor
I2Vsc2UKKyNkZWZpbmUgY29weV9odG9uZihkc3Qsc3JjKSBjb3B5X2h0b25sKGRzdCxzcmMpCisj
ZGVmaW5lIGNvcHlfaHRvbmQoZHN0LHNyYykgY29weV9odG9ubGwoZHN0LHNyYykKKyNlbmRpZgor
CisjZGVmaW5lIGNvcHlfbnRvaGYoZHN0LHNyYykgY29weV9odG9uZihkc3Qsc3JjKQorI2RlZmlu
ZSBjb3B5X250b2hkKGRzdCxzcmMpIGNvcHlfaHRvbmQoZHN0LHNyYykKKworI2Vsc2UKKworI2Rl
ZmluZSBORUVEX0ZMT0FUX0NPTlZFUlNJT04KKworI2Vycm9yICJDdXJyZW50bHksIHdlIG9ubHkg
c3VwcG9ydCBJRUVFIGZsb2F0cyEiCisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChORUVEX0ZMT0FU
X0NPTlZFUlNJT04pIHx8IGRlZmluZWQoTkVFRF9JTlRfQ09WRVJTSU9OKQorI2RlZmluZSBORUVE
X0NPTlZFUlNJT04KKyNlbmRpZgorCisvKiBkZXN0aW5hdGlvbi1pbmNyZW1lbnRpbmcgbWlzYWxp
Z25lZCBjb3B5IG1hY3Jvcy4gIHRoZXNlIGRvCisgKiBubyBib3VuZHMgY2hlY2tpbmcuICovCisK
KyNkZWZpbmUgY29weV9odG9uY19pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlf
aHRvbmMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgo
KHVpbnQ4X3QqKShkc3QpKSsxKTsgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9u
dG9oY19pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGMoZHN0LHNyYyk7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQ4X3QqKShkc3Qp
KSsxKTsgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9uc19pbmNkc3QoZHN0
LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbnMoZHN0LHNyYyk7ICAgICAgICAgICAgICAg
ICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQxNl90KikoZHN0KSkrMSk7ICAgIFwKK30g
d2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oc19pbmNkc3QoZHN0LHNyYykgZG8geyAgICAg
XAorICAgIGNvcHlfbnRvaHMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRz
dCk9KHZvaWQqKSgoKHVpbnQxNl90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNk
ZWZpbmUgY29weV9odG9ubF9pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRv
bmwoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVp
bnQzMl90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9o
bF9pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGwoZHN0LHNyYyk7ICAg
ICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQzMl90KikoZHN0KSkr
MSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9ubGxfaW5jZHN0KGRzdCxz
cmMpIGRvIHsgICAgXAorICAgIGNvcHlfaHRvbmxsKGRzdCxzcmMpOyAgICAgICAgICAgICAgICAg
ICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKHVpbnQ2NF90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hp
bGUgKDApCisKKyNkZWZpbmUgY29weV9udG9obGxfaW5jZHN0KGRzdCxzcmMpIGRvIHsgICAgXAor
ICAgIGNvcHlfbnRvaGxsKGRzdCxzcmMpOyAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9
KHZvaWQqKSgoKHVpbnQ2NF90KikoZHN0KSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZp
bmUgY29weV9odG9uZl9pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbmYo
ZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKGZsb2F0
KikoZHN0KSkrMSk7ICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oZl9p
bmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGYoZHN0LHNyYyk7ICAgICAg
ICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZvaWQqKSgoKGZsb2F0KikoZHN0KSkrMSk7ICAg
ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9uZF9pbmNkc3QoZHN0LHNyYykg
ZG8geyAgICAgXAorICAgIGNvcHlfaHRvbmQoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgKGRzdCk9KHZvaWQqKSgoKGRvdWJsZSopKGRzdCkpKzEpOyAgICAgIFwKK30gd2hpbGUg
KDApCisKKyNkZWZpbmUgY29weV9udG9oZF9pbmNkc3QoZHN0LHNyYykgZG8geyAgICAgXAorICAg
IGNvcHlfbnRvaGQoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRzdCk9KHZv
aWQqKSgoKGRvdWJsZSopKGRzdCkpKzEpOyAgICAgIFwKK30gd2hpbGUgKDApCisKKy8qIHNvdXJj
ZS1pbmNyZW1lbnRpbmcgbWlzYWxpZ25lZCBjb3B5IG1hY3Jvcy4gIHRoZXNlIGRvCisgKiBubyBi
b3VuZHMgY2hlY2tpbmcuICovCisKKyNkZWZpbmUgY29weV9odG9uY19pbmNzcmMoZHN0LHNyYykg
ZG8geyAgICAgXAorICAgIGNvcHlfaHRvbmMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQ4X3QqKShzcmMpKSsxKTsgICAgIFwKK30gd2hpbGUg
KDApCisKKyNkZWZpbmUgY29weV9udG9oY19pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAg
IGNvcHlfbnRvaGMoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZv
aWQqKSgoKHVpbnQ4X3QqKShzcmMpKSsxKTsgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUg
Y29weV9odG9uc19pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbnMoZHN0
LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQxNl90
Kikoc3JjKSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oc19pbmNz
cmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaHMoZHN0LHNyYyk7ICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQxNl90Kikoc3JjKSkrMSk7ICAg
IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9ubF9pbmNzcmMoZHN0LHNyYykgZG8g
eyAgICAgXAorICAgIGNvcHlfaHRvbmwoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQzMl90Kikoc3JjKSkrMSk7ICAgIFwKK30gd2hpbGUgKDAp
CisKKyNkZWZpbmUgY29weV9udG9obF9pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNv
cHlfbnRvaGwoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQq
KSgoKHVpbnQzMl90Kikoc3JjKSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29w
eV9odG9ubGxfaW5jc3JjKGRzdCxzcmMpIGRvIHsgICAgXAorICAgIGNvcHlfaHRvbmxsKGRzdCxz
cmMpOyAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQ2NF90Kiko
c3JjKSkrMSk7ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9obGxfaW5jc3Jj
KGRzdCxzcmMpIGRvIHsgICAgXAorICAgIGNvcHlfbnRvaGxsKGRzdCxzcmMpOyAgICAgICAgICAg
ICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKHVpbnQ2NF90Kikoc3JjKSkrMSk7ICAgIFwK
K30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9odG9uZl9pbmNzcmMoZHN0LHNyYykgZG8geyAg
ICAgXAorICAgIGNvcHlfaHRvbmYoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAg
KHNyYyk9KHZvaWQqKSgoKGZsb2F0Kikoc3JjKSkrMSk7ICAgICAgIFwKK30gd2hpbGUgKDApCisK
KyNkZWZpbmUgY29weV9udG9oZl9pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlf
bnRvaGYoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgo
KGZsb2F0Kikoc3JjKSkrMSk7ICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9o
dG9uZF9pbmNzcmMoZHN0LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfaHRvbmQoZHN0LHNyYyk7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKGRvdWJsZSopKHNyYykp
KzEpOyAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgY29weV9udG9oZF9pbmNzcmMoZHN0
LHNyYykgZG8geyAgICAgXAorICAgIGNvcHlfbnRvaGQoZHN0LHNyYyk7ICAgICAgICAgICAgICAg
ICAgICBcCisgICAgKHNyYyk9KHZvaWQqKSgoKGRvdWJsZSopKHNyYykpKzEpOyAgICAgIFwKK30g
d2hpbGUgKDApCisKKy8qIHNvdXJjZS1pbmNyZW1lbnRpbmcgbWlzYWxpZ25lZCBjb3B5IG1hY3Jv
cy4gIHRoZXNlIGRvCisgKiBib3VuZHMgY2hlY2tzLiAgd2hlbiBhIGJvdW5kcyBjaGVjayBmYWls
cywgdGhleSBqdW1wIHRvCisgKiB0aGUgbGFiZWwgeW91IGdpdmUgdGhlbS4gKi8KKworI2RlZmlu
ZSBjb3B5X2h0b25jX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAg
aWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDEpIHsgICAgICAgIFwKKyAg
ICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgY29weV9odG9uYyhkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDhfdCopKHNyYykpKzEpOyAgICAgICAgICAgICAg
ICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hjX2luY3NyY19iYyhkc3Qsc3Jj
LGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhf
dCopKHNyYykpPDEpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9udG9oYyhkc3Qsc3JjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDhf
dCopKHNyYykpKzEpOyAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBj
b3B5X2h0b25zX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYg
KCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDIpIHsgICAgICAgIFwKKyAgICAg
ICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgY29weV9odG9ucyhkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAoc3JjKT0odm9pZCopKCgodWludDE2X3QqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAg
XAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hzX2luY3NyY19iYyhkc3Qsc3JjLGVu
ZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCop
KHNyYykpPDIpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9udG9ocyhkc3Qsc3JjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDE2X3Qq
KShzcmMpKSsxKTsgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5
X2h0b25sX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgo
dWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDQpIHsgICAgICAgIFwKKyAgICAgICAg
Z290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
Y29weV9odG9ubChkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAoc3JjKT0odm9pZCopKCgodWludDMyX3QqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAgXAor
fSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hsX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxs
YWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNy
YykpPDQpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9udG9obChkc3Qsc3JjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDMyX3QqKShz
cmMpKSsxKTsgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2h0
b25sbF9pbmNzcmNfYmMoZHN0LHNyYyxlbmQsbGFiZWwpIGRvIHsgICBcCisgICAgaWYgKCgodWlu
dDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDgpIHsgICAgICAgIFwKKyAgICAgICAgZ290
byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29w
eV9odG9ubGwoZHN0LHNyYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAo
c3JjKT0odm9pZCopKCgodWludDY0X3QqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAgXAorfSB3
aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hsbF9pbmNzcmNfYmMoZHN0LHNyYyxlbmQsbGFi
ZWwpIGRvIHsgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykp
PDgpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgY29weV9udG9obGwoZHN0LHNyYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgodWludDY0X3QqKShzcmMp
KSsxKTsgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2h0b25m
X2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhf
dCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDQpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBs
YWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9o
dG9uZihkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3Jj
KT0odm9pZCopKCgoZmxvYXQqKShzcmMpKSsxKTsgICAgICAgICAgICAgICAgICAgXAorfSB3aGls
ZSAoMCkKKworI2RlZmluZSBjb3B5X250b2hmX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkg
ZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDQp
IHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgY29weV9udG9oZihkc3Qsc3JjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgoZmxvYXQqKShzcmMpKSsxKTsg
ICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2h0b25kX2lu
Y3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8geyAgICBcCisgICAgaWYgKCgodWludDhfdCop
KGVuZCkpLSgodWludDhfdCopKHNyYykpPDgpIHsgICAgICAgIFwKKyAgICAgICAgZ290byBsYWJl
bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV9odG9u
ZChkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0o
dm9pZCopKCgoZG91YmxlKikoc3JjKSkrMSk7ICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAo
MCkKKworI2RlZmluZSBjb3B5X250b2hkX2luY3NyY19iYyhkc3Qsc3JjLGVuZCxsYWJlbCkgZG8g
eyAgICBcCisgICAgaWYgKCgodWludDhfdCopKGVuZCkpLSgodWludDhfdCopKHNyYykpPDgpIHsg
ICAgICAgIFwKKyAgICAgICAgZ290byBsYWJlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgY29weV9udG9oZChkc3Qsc3JjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAoc3JjKT0odm9pZCopKCgoZG91YmxlKikoc3JjKSkrMSk7ICAg
ICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworc3RhdGljIGlubGluZSBzaXplX3Qgc2l6
ZV9vZl90c2ZfaW50ZWdlcih0c2ZfaW50ZWdlcl90IHNyYykgeworICAgIGlmIChzcmMgPj0gLVRT
Rl9JTlRFR0VSX1NNQUxMX0xJTSAmJiBzcmMgPCBUU0ZfSU5URUdFUl9TTUFMTF9MSU0pIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIGlmIChzcmMgPj0gLVRTRl9JTlRFR0VS
X01FRElVTV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSkgeworICAgICAgICBy
ZXR1cm4gMjsKKyAgICB9CisgICAgCisgICAgaWYgKHNyYyA+PSAtVFNGX0lOVEVHRVJfTEFSR0Vf
TElNICYmIHNyYyA8IFRTRl9JTlRFR0VSX0xBUkdFX0xJTSkgeworICAgICAgICByZXR1cm4gNDsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIDU7Cit9CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHNp
emVfb2ZfdHNmX3Vuc2lnbmVkKHRzZl91bnNpZ25lZF90IHNyYykgeworICAgIGlmIChzcmMgPCBU
U0ZfVU5TSUdORURfU01BTExfTElNKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAK
KyAgICBpZiAoc3JjIDwgVFNGX1VOU0lHTkVEX01FRElVTV9MSU0pIHsKKyAgICAgICAgcmV0dXJu
IDI7CisgICAgfQorICAgIAorICAgIGlmIChzcmMgPCBUU0ZfVU5TSUdORURfTEFSR0VfTElNKSB7
CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gNTsKK30KKworc3Rh
dGljIGlubGluZSBzaXplX3Qgc2l6ZV9vZl90c2ZfbG9uZyh0c2ZfbG9uZ190IHNyYykgeworICAg
IGlmIChzcmMgPj0gLVRTRl9JTlRFR0VSX1NNQUxMX0xJTSAmJiBzcmMgPCBUU0ZfSU5URUdFUl9T
TUFMTF9MSU0pIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIGlmIChzcmMg
Pj0gLVRTRl9JTlRFR0VSX01FRElVTV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJ
TSkgeworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgCisgICAgaWYgKHNyYyA+PSAtVFNG
X0lOVEVHRVJfTEFSR0VfTElNICYmIHNyYyA8IFRTRl9JTlRFR0VSX0xBUkdFX0xJTSkgeworICAg
ICAgICByZXR1cm4gNDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgc2l6ZV90IHdyaXRlX3RzZl9pbnRlZ2VyKHVpbnQ4X3QgKmRzdCwgdHNmX2ludGVnZXJf
dCBzcmMpIHsKKyAgICBpZiAoc3JjID49IC1UU0ZfSU5URUdFUl9TTUFMTF9MSU0gJiYgc3JjIDwg
VFNGX0lOVEVHRVJfU01BTExfTElNKSB7CisgICAgICAgIGRzdFswXSA9ICgodWludDhfdCkoaW50
OF90KXNyYykgJiB+VFNGX0lOVEVHRVJfTUVESVVNX0JJVDsKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgfQorICAgIAorICAgIC8qIEZJWE1FOiBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZnVuY3Rpb24g
Y291bGQgYmUgYW4gb3V0LW9mLWxpbmUgc2xvdyBwYXRoLiAqLworICAgIAorICAgIGlmIChzcmMg
Pj0gLVRTRl9JTlRFR0VSX01FRElVTV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJ
TSkgeworICAgICAgICBpZiAoc3JjIDwgMCkgeworICAgICAgICAgICAgc3JjICs9IFRTRl9JTlRF
R0VSX1NNQUxMX0xJTTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNyYyAtPSBUU0Zf
SU5URUdFUl9TTUFMTF9MSU07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRzdFswXSA9
CisgICAgICAgICAgICAoKChpbnQ4X3QpKChzcmMgPj4gOCkgJiAyNTUpKSAtIFRTRl9JTlRFR0VS
X01FRElVTV9ESUZGKSB8CisgICAgICAgICAgICBUU0ZfSU5URUdFUl9NRURJVU1fQklUOworICAg
ICAgICBkc3RbMV0gPSBzcmMgJiAyNTU7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICAK
KyAgICBpZiAoc3JjID49IC1UU0ZfSU5URUdFUl9MQVJHRV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVH
RVJfTEFSR0VfTElNKSB7CisgICAgICAgIGlmIChzcmMgPCAwKSB7CisgICAgICAgICAgICBzcmMg
Kz0gVFNGX0lOVEVHRVJfTUVESVVNX0xJTTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNyYyAtPSBUU0ZfSU5URUdFUl9NRURJVU1fTElNOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9MQVJHRV9UQUc7CisgICAgICAgIGRzdFsxXSA9IChz
cmMgPj4gMTYpICYgMjU1OworICAgICAgICBkc3RbMl0gPSAoc3JjID4+IDgpICYgMjU1OworICAg
ICAgICBkc3RbM10gPSBzcmMgJiAyNTU7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICAK
KyAgICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9IVUdFX1RBRzsKKyAgICBkc3RbMV0gPSAoc3JjID4+
IDI0KSAmIDI1NTsKKyAgICBkc3RbMl0gPSAoc3JjID4+IDE2KSAmIDI1NTsKKyAgICBkc3RbM10g
PSAoc3JjID4+IDgpICYgMjU1OworICAgIGRzdFs0XSA9IHNyYyAmIDI1NTsKKyAgICByZXR1cm4g
NTsKK30KKworc3RhdGljIGlubGluZSBzaXplX3Qgd3JpdGVfdHNmX3Vuc2lnbmVkKHVpbnQ4X3Qg
KmRzdCwgdHNmX3Vuc2lnbmVkX3Qgc3JjKSB7CisgICAgaWYgKHNyYyA8IFRTRl9VTlNJR05FRF9T
TUFMTF9MSU0pIHsKKyAgICAgICAgZHN0WzBdID0gc3JjOworICAgICAgICByZXR1cm4gMTsKKyAg
ICB9CisgICAgCisgICAgLyogRklYTUU6IFRoZSByZW1haW5kZXIgb2YgdGhpcyBmdW5jdGlvbiBj
b3VsZCBiZSBhbiBvdXQtb2YtbGluZSBzbG93IHBhdGguICovCisgICAgCisgICAgaWYgKHNyYyA8
IFRTRl9VTlNJR05FRF9NRURJVU1fTElNKSB7CisgICAgICAgIHNyYyAtPSBUU0ZfVU5TSUdORURf
U01BTExfTElNOworICAgICAgICAKKyAgICAgICAgZHN0WzBdID0gKChzcmMgPj4gOCkgJiAyNTUp
IHwgVFNGX1VOU0lHTkVEX01FRElVTV9CSVQ7CisgICAgICAgIGRzdFsxXSA9IHNyYyAmIDI1NTsK
KyAgICAgICAgcmV0dXJuIDI7CisgICAgfQorICAgIAorICAgIGlmIChzcmMgPCBUU0ZfVU5TSUdO
RURfTEFSR0VfTElNKSB7CisgICAgICAgIHNyYyAtPSBUU0ZfVU5TSUdORURfTUVESVVNX0xJTTsK
KyAgICAgICAgCisgICAgICAgIGRzdFswXSA9IFRTRl9VTlNJR05FRF9MQVJHRV9UQUc7CisgICAg
ICAgIGRzdFsxXSA9IChzcmMgPj4gMTYpICYgMjU1OworICAgICAgICBkc3RbMl0gPSAoc3JjID4+
IDgpICYgMjU1OworICAgICAgICBkc3RbM10gPSBzcmMgJiAyNTU7CisgICAgICAgIHJldHVybiA0
OworICAgIH0KKyAgICAKKyAgICBkc3RbMF0gPSBUU0ZfVU5TSUdORURfSFVHRV9UQUc7CisgICAg
ZHN0WzFdID0gKHNyYyA+PiAyNCkgJiAyNTU7CisgICAgZHN0WzJdID0gKHNyYyA+PiAxNikgJiAy
NTU7CisgICAgZHN0WzNdID0gKHNyYyA+PiA4KSAmIDI1NTsKKyAgICBkc3RbNF0gPSBzcmMgJiAy
NTU7CisgICAgcmV0dXJuIDU7Cit9CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHdyaXRlX3RzZl9s
b25nKHVpbnQ4X3QgKmRzdCwgdHNmX2xvbmdfdCBzcmMpIHsKKyAgICBpZiAoc3JjID49IC1UU0Zf
SU5URUdFUl9TTUFMTF9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfU01BTExfTElNKSB7CisgICAg
ICAgIGRzdFswXSA9ICgodWludDhfdCkoaW50OF90KXNyYykgJiB+VFNGX0lOVEVHRVJfTUVESVVN
X0JJVDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIC8qIEZJWE1FOiBUaGUg
cmVtYWluZGVyIG9mIHRoaXMgZnVuY3Rpb24gY291bGQgYmUgYW4gb3V0LW9mLWxpbmUgc2xvdyBw
YXRoLiAqLworICAgIAorICAgIGlmIChzcmMgPj0gLVRTRl9JTlRFR0VSX01FRElVTV9MSU0gJiYg
c3JjIDwgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSkgeworICAgICAgICBpZiAoc3JjIDwgMCkgewor
ICAgICAgICAgICAgc3JjICs9IFRTRl9JTlRFR0VSX1NNQUxMX0xJTTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHNyYyAtPSBUU0ZfSU5URUdFUl9TTUFMTF9MSU07CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGRzdFswXSA9CisgICAgICAgICAgICAoKChpbnQ4X3QpKChzcmMg
Pj4gOCkgJiAyNTUpKSAtIFRTRl9JTlRFR0VSX01FRElVTV9ESUZGKSB8CisgICAgICAgICAgICBU
U0ZfSU5URUdFUl9NRURJVU1fQklUOworICAgICAgICBkc3RbMV0gPSBzcmMgJiAyNTU7CisgICAg
ICAgIHJldHVybiAyOworICAgIH0KKyAgICAKKyAgICBpZiAoc3JjID49IC1UU0ZfSU5URUdFUl9M
QVJHRV9MSU0gJiYgc3JjIDwgVFNGX0lOVEVHRVJfTEFSR0VfTElNKSB7CisgICAgICAgIGlmIChz
cmMgPCAwKSB7CisgICAgICAgICAgICBzcmMgKz0gVFNGX0lOVEVHRVJfTUVESVVNX0xJTTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNyYyAtPSBUU0ZfSU5URUdFUl9NRURJVU1fTElN
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9MQVJH
RV9UQUc7CisgICAgICAgIGRzdFsxXSA9IChzcmMgPj4gMTYpICYgMjU1OworICAgICAgICBkc3Rb
Ml0gPSAoc3JjID4+IDgpICYgMjU1OworICAgICAgICBkc3RbM10gPSBzcmMgJiAyNTU7CisgICAg
ICAgIHJldHVybiA0OworICAgIH0KKyAgICAKKyAgICBkc3RbMF0gPSBUU0ZfSU5URUdFUl9IVUdF
X1RBRzsKKyAgICBkc3RbMV0gPSAoc3JjID4+IDU2KSAmIDI1NTsKKyAgICBkc3RbMl0gPSAoc3Jj
ID4+IDQ4KSAmIDI1NTsKKyAgICBkc3RbM10gPSAoc3JjID4+IDQwKSAmIDI1NTsKKyAgICBkc3Rb
NF0gPSAoc3JjID4+IDMyKSAmIDI1NTsKKyAgICBkc3RbNV0gPSAoc3JjID4+IDI0KSAmIDI1NTsK
KyAgICBkc3RbNl0gPSAoc3JjID4+IDE2KSAmIDI1NTsKKyAgICBkc3RbN10gPSAoc3JjID4+IDgp
ICYgMjU1OworICAgIGRzdFs4XSA9IHNyYyAmIDI1NTsKKyAgICByZXR1cm4gOTsKK30KKworc3Rh
dGljIGlubGluZSBzaXplX3Qgc2l6ZV9vZl9lbmNvZGVkX3RzZl9pbnRlZ2VyKGludDhfdCB2YWx1
ZSkgeworICAgIGlmICghKHZhbHVlICYgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpIHsKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNl
IFRTRl9JTlRFR0VSX0xBUkdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBUU0Zf
SU5URUdFUl9IVUdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIDI7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHNpemVfdCBzaXplX29mX2Vu
Y29kZWRfdHNmX3Vuc2lnbmVkKHVpbnQ4X3QgdmFsdWUpIHsKKyAgICBpZiAoISh2YWx1ZSAmIFRT
Rl9VTlNJR05FRF9NRURJVU1fQklUKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAg
CisgICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgVFNGX1VOU0lHTkVEX0xBUkdFX1RBRzoK
KyAgICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBUU0ZfVU5TSUdORURfSFVHRV9UQUc6CisgICAg
ICAgIHJldHVybiA1OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAyOworICAgIH0KK30K
Kworc3RhdGljIGlubGluZSBzaXplX3Qgc2l6ZV9vZl9lbmNvZGVkX3RzZl9sb25nKGludDhfdCB2
YWx1ZSkgeworICAgIGlmICghKHZhbHVlICYgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBj
YXNlIFRTRl9JTlRFR0VSX0xBUkdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBU
U0ZfSU5URUdFUl9IVUdFX1RBRzoKKyAgICAgICAgcmV0dXJuIDk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIDI7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHNpemVfdCByZWFkX3Rz
Zl9pbnRlZ2VyKHRzZl9pbnRlZ2VyX3QgKmRzdCwgdWludDhfdCAqc3JjLCBzaXplX3Qgc3JjX3Jl
bWFpbmluZykgeworICAgIGlmICghc3JjX3JlbWFpbmluZykKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgaW50OF90IGhlYWRfdmFsdWUgPSBzcmNbMF07CisgICAgaWYgKCEoaGVhZF92YWx1
ZSAmIFRTRl9JTlRFR0VSX01FRElVTV9CSVQpKSB7CisgICAgICAgICpkc3QgPSAoKGludDhfdCko
aGVhZF92YWx1ZSA8PCAxKSkgPj4gMTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAor
ICAgIC8qIEZJWE1FOiBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZnVuY3Rpb24gY291bGQgYmUgYW4g
b3V0LW9mLWxpbmUgc2xvdyBwYXRoLiAqLworICAgIAorICAgIHN3aXRjaCAoaGVhZF92YWx1ZSkg
eworICAgIGNhc2UgVFNGX0lOVEVHRVJfTEFSR0VfVEFHOiB7CisgICAgICAgIGlmIChzcmNfcmVt
YWluaW5nIDwgNCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpbnQzMl90IHZhbHVl
ID0KKyAgICAgICAgICAgICgoKGludDMyX3QpKGludDhfdClzcmNbMV0pIDw8IDE2KSB8CisgICAg
ICAgICAgICAoKChpbnQzMl90KSh1aW50MzJfdClzcmNbMl0pIDw8IDgpIHwKKyAgICAgICAgICAg
ICgoaW50MzJfdCkodWludDMyX3Qpc3JjWzNdKTsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAg
ICAgICAgICAgIHZhbHVlIC09IFRTRl9JTlRFR0VSX01FRElVTV9MSU07CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHZhbHVlICs9IFRTRl9JTlRFR0VSX01FRElVTV9MSU07CisgICAgICAgICpk
c3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgfQorICAgIGNhc2UgVFNGX0lOVEVH
RVJfSFVHRV9UQUc6IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCA1KQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGludDMyX3QgdmFsdWUgPQorICAgICAgICAgICAgKCgoaW50
MzJfdCkoaW50OF90KXNyY1sxXSkgPDwgMjQpIHwKKyAgICAgICAgICAgICgoKGludDMyX3QpKHVp
bnQzMl90KXNyY1syXSkgPDwgMTYpIHwKKyAgICAgICAgICAgICgoKGludDMyX3QpKHVpbnQzMl90
KXNyY1szXSkgPDwgOCkgfAorICAgICAgICAgICAgKChpbnQzMl90KSh1aW50MzJfdClzcmNbNF0p
OworICAgICAgICAqZHN0ID0gdmFsdWU7CisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICBk
ZWZhdWx0OiB7CisgICAgICAgIGlmIChzcmNfcmVtYWluaW5nIDwgMikKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICBpbnQzMl90IHZhbHVlID0KKyAgICAgICAgICAgICgoaW50MzJfdCko
dWludDMyX3Qpc3JjWzFdKSB8CisgICAgICAgICAgICAoKChpbnQzMl90KSgoKChpbnQ4X3QpKGhl
YWRfdmFsdWUgPDwgMSkpID4+IDEpICsgVFNGX0lOVEVHRVJfTUVESVVNX0RJRkYpKSA8PCA4KTsK
KyAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgIHZhbHVlIC09IFRTRl9JTlRFR0VS
X1NNQUxMX0xJTTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgKz0gVFNGX0lOVEVH
RVJfU01BTExfTElNOworICAgICAgICAqZHN0ID0gdmFsdWU7CisgICAgICAgIHJldHVybiAyOwor
ICAgIH0gfQorfQorCitzdGF0aWMgaW5saW5lIHNpemVfdCByZWFkX3RzZl91bnNpZ25lZCh0c2Zf
dW5zaWduZWRfdCAqZHN0LCB1aW50OF90ICpzcmMsIHNpemVfdCBzcmNfcmVtYWluaW5nKSB7Cisg
ICAgaWYgKCFzcmNfcmVtYWluaW5nKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICB1aW50
OF90IGhlYWRfdmFsdWUgPSBzcmNbMF07CisgICAgaWYgKCEoaGVhZF92YWx1ZSAmIFRTRl9VTlNJ
R05FRF9NRURJVU1fQklUKSkgeworICAgICAgICAqZHN0ID0gaGVhZF92YWx1ZTsKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIC8qIEZJWE1FOiBUaGUgcmVtYWluZGVyIG9mIHRo
aXMgZnVuY3Rpb24gY291bGQgYmUgYW4gb3V0LW9mLWxpbmUgc2xvdyBwYXRoLiAqLworICAgIAor
ICAgIHN3aXRjaCAoaGVhZF92YWx1ZSkgeworICAgIGNhc2UgVFNGX1VOU0lHTkVEX0xBUkdFX1RB
RzogeworICAgICAgICBpZiAoc3JjX3JlbWFpbmluZyA8IDQpCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9CisgICAgICAgICAgICAoKChpbnQzMl90KShpbnQ4
X3Qpc3JjWzFdKSA8PCAxNikgfAorICAgICAgICAgICAgKCgoaW50MzJfdCkodWludDMyX3Qpc3Jj
WzJdKSA8PCA4KSB8CisgICAgICAgICAgICAoKGludDMyX3QpKHVpbnQzMl90KXNyY1szXSk7Cisg
ICAgICAgIHZhbHVlICs9IFRTRl9VTlNJR05FRF9NRURJVU1fTElNOworICAgICAgICAqZHN0ID0g
dmFsdWU7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICBjYXNlIFRTRl9VTlNJR05FRF9I
VUdFX1RBRzogeworICAgICAgICBpZiAoc3JjX3JlbWFpbmluZyA8IDUpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9CisgICAgICAgICAgICAoKChpbnQzMl90
KShpbnQ4X3Qpc3JjWzFdKSA8PCAyNCkgfAorICAgICAgICAgICAgKCgoaW50MzJfdCkodWludDMy
X3Qpc3JjWzJdKSA8PCAxNikgfAorICAgICAgICAgICAgKCgoaW50MzJfdCkodWludDMyX3Qpc3Jj
WzNdKSA8PCA4KSB8CisgICAgICAgICAgICAoKGludDMyX3QpKHVpbnQzMl90KXNyY1s0XSk7Cisg
ICAgICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfQorICAgIGRlZmF1
bHQ6IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCAyKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGludDMyX3QgdmFsdWUgPQorICAgICAgICAgICAgKChpbnQzMl90KSh1aW50
MzJfdClzcmNbMV0pIHwKKyAgICAgICAgICAgICgoaGVhZF92YWx1ZSAmIH5UU0ZfVU5TSUdORURf
TUVESVVNX0JJVCkgPDwgOCk7CisgICAgICAgIHZhbHVlICs9IFRTRl9VTlNJR05FRF9TTUFMTF9M
SU07CisgICAgICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfSB9Cit9
CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHJlYWRfdHNmX2xvbmcodHNmX2xvbmdfdCAqZHN0LCB1
aW50OF90ICpzcmMsIHNpemVfdCBzcmNfcmVtYWluaW5nKSB7CisgICAgaWYgKCFzcmNfcmVtYWlu
aW5nKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpbnQ4X3QgaGVhZF92YWx1ZSA9IHNy
Y1swXTsKKyAgICBpZiAoIShoZWFkX3ZhbHVlICYgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpIHsK
KyAgICAgICAgKmRzdCA9ICgoaW50OF90KShoZWFkX3ZhbHVlIDw8IDEpKSA+PiAxOworICAgICAg
ICByZXR1cm4gMTsKKyAgICB9CisgICAgCisgICAgLyogRklYTUU6IFRoZSByZW1haW5kZXIgb2Yg
dGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBhbiBvdXQtb2YtbGluZSBzbG93IHBhdGguICovCisgICAg
CisgICAgc3dpdGNoIChoZWFkX3ZhbHVlKSB7CisgICAgY2FzZSBUU0ZfSU5URUdFUl9MQVJHRV9U
QUc6IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCA0KQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGludDY0X3QgdmFsdWUgPQorICAgICAgICAgICAgKCgoaW50NjRfdCkoaW50
OF90KXNyY1sxXSkgPDwgMTYpIHwKKyAgICAgICAgICAgICgoKGludDY0X3QpKHVpbnQ2NF90KXNy
Y1syXSkgPDwgOCkgfAorICAgICAgICAgICAgKChpbnQ2NF90KSh1aW50NjRfdClzcmNbM10pOwor
ICAgICAgICBpZiAodmFsdWUgPCAwKQorICAgICAgICAgICAgdmFsdWUgLT0gVFNGX0lOVEVHRVJf
TUVESVVNX0xJTTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgKz0gVFNGX0lOVEVH
RVJfTUVESVVNX0xJTTsKKyAgICAgICAgKmRzdCA9IHZhbHVlOworICAgICAgICByZXR1cm4gNDsK
KyAgICB9CisgICAgY2FzZSBUU0ZfSU5URUdFUl9IVUdFX1RBRzogeworICAgICAgICBpZiAoc3Jj
X3JlbWFpbmluZyA8IDkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaW50NjRfdCB2
YWx1ZSA9CisgICAgICAgICAgICAoKChpbnQ2NF90KShpbnQ4X3Qpc3JjWzFdKSA8PCA1NikgfAor
ICAgICAgICAgICAgKCgoaW50NjRfdCkodWludDY0X3Qpc3JjWzJdKSA8PCA0OCkgfAorICAgICAg
ICAgICAgKCgoaW50NjRfdCkodWludDY0X3Qpc3JjWzNdKSA8PCA0MCkgfAorICAgICAgICAgICAg
KCgoaW50NjRfdCkodWludDY0X3Qpc3JjWzRdKSA8PCAzMikgfAorICAgICAgICAgICAgKCgoaW50
NjRfdCkodWludDY0X3Qpc3JjWzVdKSA8PCAyNCkgfAorICAgICAgICAgICAgKCgoaW50NjRfdCko
dWludDY0X3Qpc3JjWzZdKSA8PCAxNikgfAorICAgICAgICAgICAgKCgoaW50NjRfdCkodWludDY0
X3Qpc3JjWzddKSA8PCA4KSB8CisgICAgICAgICAgICAoKGludDY0X3QpKHVpbnQ2NF90KXNyY1s4
XSk7CisgICAgICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDk7CisgICAgfQorICAg
IGRlZmF1bHQ6IHsKKyAgICAgICAgaWYgKHNyY19yZW1haW5pbmcgPCAyKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGludDY0X3QgdmFsdWUgPQorICAgICAgICAgICAgKChpbnQ2NF90
KSh1aW50NjRfdClzcmNbMV0pIHwKKyAgICAgICAgICAgICgoKGludDY0X3QpKCgoKGludDhfdCko
aGVhZF92YWx1ZSA8PCAxKSkgPj4gMSkgKyBUU0ZfSU5URUdFUl9NRURJVU1fRElGRikpIDw8IDgp
OworICAgICAgICBpZiAodmFsdWUgPCAwKQorICAgICAgICAgICAgdmFsdWUgLT0gVFNGX0lOVEVH
RVJfU01BTExfTElNOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSArPSBUU0ZfSU5U
RUdFUl9TTUFMTF9MSU07CisgICAgICAgICpkc3QgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIDI7
CisgICAgfSB9Cit9CisKKyNkZWZpbmUgcmVhZF90c2ZfaW50ZWdlcl9pbmNzcmMoZHN0LCBzcmMs
IGVuZCwgYm91bmRzX2Vycm9yKSBkbyB7ICAgICAgIFwKKyAgICAgICAgc2l6ZV90IHRvdGFsX2J5
dGVzX3JlYWQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHJlYWRfdHNmX2ludGVnZXIoKGRzdCksIChzcmMpLCAoZW5kKSAtIChzcmMpKTsgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKCF0b3RhbF9ieXRlc19yZWFkKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGdvdG8gYm91bmRzX2Vy
cm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKHNyYykgKz0gdG90YWxfYnl0ZXNf
cmVhZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
ICgwKQorCisjZGVmaW5lIHJlYWRfdHNmX3Vuc2lnbmVkX2luY3NyYyhkc3QsIHNyYywgZW5kLCBi
b3VuZHNfZXJyb3IpIGRvIHsgICAgICBcCisgICAgICAgIHNpemVfdCB0b3RhbF9ieXRlc19yZWFk
ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBy
ZWFkX3RzZl91bnNpZ25lZCgoZHN0KSwgKHNyYyksIChlbmQpIC0gKHNyYykpOyAgICAgICAgICAg
ICBcCisgICAgICAgIGlmICghdG90YWxfYnl0ZXNfcmVhZCkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBnb3RvIGJvdW5kc19lcnJvcjsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIChzcmMpICs9IHRvdGFsX2J5dGVzX3JlYWQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKwor
I2RlZmluZSByZWFkX3RzZl9sb25nX2luY3NyYyhkc3QsIHNyYywgZW5kLCBib3VuZHNfZXJyb3Ip
IGRvIHsgICAgICAgICAgXAorICAgICAgICBzaXplX3QgdG90YWxfYnl0ZXNfcmVhZCA9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmVhZF90c2Zf
bG9uZygoZHN0KSwgKHNyYyksIChlbmQpIC0gKHNyYykpOyAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBpZiAoIXRvdGFsX2J5dGVzX3JlYWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgZ290byBib3VuZHNfZXJyb3I7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAoc3JjKSArPSB0b3RhbF9ieXRlc19yZWFkOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyBp
bmxpbmUgc2l6ZV90IHNraXBfc3RyaW5nKGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICpl
bmQpIHsKKyAgICBjb25zdCBjaGFyICpjdXIgPSBzdGFydDsKKyAgICBmb3IgKDs7KSB7CisgICAg
ICAgIGlmIChjdXIgPj0gZW5kKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICgh
KmN1cikKKyAgICAgICAgICAgIHJldHVybiBjdXIgKyAxIC0gc3RhcnQ7CisgICAgICAgIGN1cisr
OworICAgIH0KK30KKworLyogaW50ZXJuYWwgcmVjdXJzaXZlIGZ1bmN0aW9uIGZvciByZWFkaW5n
IHR5cGVzICovCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9yZWFkX3JlYyh0c2ZfcmVhZGVyX3QgcmVh
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1pdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXB0aCk7CisKKy8qIHJlYWQgYSB0eXBlIHRhYmxl
ICovCit0c2ZfdHlwZV90YWJsZV90KiB0c2ZfdHlwZV90YWJsZV9yZWFkKGNvbnN0IGNoYXIgKm5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWFkZXJfdCBy
ZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1p
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemVf
bGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRl
cHRoKTsKKworLyogY2xvbmVzIGEgdHlwZSwgcmV0dXJuaW5nIGEgbmV3IG9uZSBqdXN0IGxpa2Ug
aXQuIG5vdGUgdGhpcyBpcworICogYWN0dWFsbHkgZGVlcCBjb3B5LiAqLwordHNmX3R5cGVfdCog
dHNmX3R5cGVfY2xvbmUodHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGdpdmVzIHlvdSBhIHZlcnNp
b24gb2YgdGhlIGdpdmVuIHR5cGUgdGhhdCB5b3Ugb3duOyBpLmUuIGlmIHlvdSBtYWtlCisgKiBj
aGFuZ2VzIHRvIGl0IGluLXBsYWNlIHRoZW4gbm9ib2R5IGVsc2Ugd2lsbCBub3RpY2UuIHRoaXMg
aXMgYSBPKDEpCisgKiBvcGVyYXRpb24gdGhhdCByZXR1cm5zIHRoZSBwYXNzZWQtaW4gdHlwZSBv
YmplY3QgaWYgaXQgYWxyZWFkeSBoYXMgYQorICogcmVmZXJlbmNlIGNvdW50IG9mIDEuIG90aGVy
d2lzZSB0aGUgdHlwZSBpcyBjb3BpZWQgdXNpbmcKKyAqIHRzZl90eXBlX2Nsb25lKCkuICovCit0
c2ZfdHlwZV90KiB0c2ZfdHlwZV9vd25fYmVnaW4odHNmX3R5cGVfdCAqdHlwZSk7CisKKy8qIGNv
bW1pdHMgdG8gYW4gb3duZXJzaGlwIG9wZXJhdGlvbiBieSByZWxpbnF1aXNoaW5nIG91ciByZWZl
cmVuY2UgdG8KKyAqIHRoZSBvcmlnaW5hbCB0eXBlLiAqLwordm9pZCB0c2ZfdHlwZV9vd25fY29t
bWl0KHRzZl90eXBlX3QgKipkc3QsIHRzZl90eXBlX3QgKnJldCk7CisKKy8qIHVuZG9lcyBhbiBv
d25lcnNoaXAgb3BlcmF0aW9uIGJ5IGRlbGV0aW5nIHRoZSBjbG9uZSBpZiBuZWNlc3NhcnkuICov
Cit2b2lkIHRzZl90eXBlX293bl9hYm9ydCh0c2ZfdHlwZV90ICpkc3QsIHRzZl90eXBlX3QgKnJl
dCk7CisKKy8qIHJlY29tcHV0ZSB0aGUgaGFzaCBjb2RlICovCit2b2lkIHRzZl90eXBlX3JlY29t
cHV0ZV9oYXNoKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBjcmVhdGUgYSB0c2ZfYnVmZmVyIGlu
IHdoaWNoIHRoZSBjYWxsZXIgb3ducyB0aGUgdHNmX2J1ZmZlciBvYmplY3QgaXRzZWxmCisgICBh
bmQgdGhlIG9yaWdpbmFsIGJhY2tpbmcgc3RvcmUuIHRoaXMgY2FuIGJlIHVzZWQgdG8gcmVhZCBz
dGFjay1hbGxvY2F0ZWQKKyAgIGJ1ZmZlcnMuIHRoaXMgbXVzdCBiZSBkZXN0cm95ZWQgd2l0aCB0
c2ZfYnVmZmVyX2Rlc3Ryb3lfY3VzdG9tKCkuIGZldworICAgZnVuY3Rpb25zIHdvcmsgb24gdGhl
IGJ1ZmZlciB0aGF0IHRoaXMgcmV0dXJucy4gdGhlIHRzZl9idWZmZXJfcmVhZF9zaW1wbGUKKyAg
IGFuZCB0c2ZfYnVmZmVyX3JlYWRfc21hbGxfd2l0aF90eXBlX2NvZGUgZnVuY3Rpb25zIGFyZSB0
d28gZnVuY3Rpb25zIHRoYXQKKyAgIGRvIHdvcmsgd2l0aCBjdXN0b20gYnVmZmVycy4KKworICAg
bm90ZSB0aGF0IHRoaXMgcmVhbGx5IG5lZWRzIHRvIGJlIGludGVybmFsIEFQSSwgc2luY2UgaXQg
cmVxdWlyZXMgdGhhdCB0aGUKKyAgIGNhbGxlciBrbm93cyBleGFjdGx5IHRoZSBzaXplb2YodHNm
X2J1ZmZlcl90KS4gaWYgd2Ugd2FudGVkIGFuIGV4dGVybmFsCisgICB2ZXNpb24gb2YgdGhpcyBB
UEksIHdlJ2QgaGF2ZSB0aGUgdXNlciBqdXN0IHBhc3MgaW4gYSBiYWNraW5nIHN0b3JlIGFuZCB3
ZSdkCisgICBwYXJ0aXRpb24gaXQgaW50byBhIHRzZl9idWZmZXJfdCBhbmQgdGhlIGFjdHVhbCBi
YWNraW5nIHN0b3JlLiB3ZSdkIGFsc28KKyAgIGtpbmRseSByZXBvcnQgZXJyb3IgaWYgdGhlIGJ1
ZmZlciB3YXNuJ3QgYmlnIGVub3VnaCBmb3IgYSB0c2ZfYnVmZmVyX3QuICovCit2b2lkIHRzZl9i
dWZmZXJfaW5pdGlhbGl6ZV9jdXN0b20odHNmX2J1ZmZlcl90ICpidWYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYmFja2luZ19zdG9yZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgYmFja2luZ19zdG9yZV9zaXplKTsKKworLyogZGVz
dHJveSBhIHRzZl9idWZmZXIgY3JlYXRlZCB3aXRoIHRzZl9idWZmZXJfaW5pdGlhbGl6ZV9jdXN0
b20oKS4gKi8KK3ZvaWQgdHNmX2J1ZmZlcl9kZXN0cm95X2N1c3RvbSh0c2ZfYnVmZmVyX3QgKmJ1
Zik7CisKKy8qIGNyZWF0ZSBhIHRzZl9idWZmZXIgdGhhdCBpcyByZWFkeSBmb3IgdXNlIHdpdGgg
dHNmX2J1ZmZlcl9yZWFkX3NpbXBsZSwKKyAgIHRzZl9idWZmZXJfcmVhZF9zbWFsbF93aXRoX3R5
cGVfY29kZSwgYW5kIHRoZSBHUEMgZ2VuZXJhdG9yLiAqLwordHNmX2J1ZmZlcl90ICp0c2ZfYnVm
ZmVyX2NyZWF0ZV9iYXJlKHZvaWQpOworCisvKiBjcmVhdGUgYSB0c2ZfYnVmZmVyIHRoYXQgaXMg
cmVhZHkgZm9yIHVzZSB3aXRoIEdQQyBnZW5lcmF0b3Igd2l0aCBhIG5vbi1OVUxMCisgKiByZWdp
b24uICovCit0c2ZfYnVmZmVyX3QgKnRzZl9idWZmZXJfY3JlYXRlX2JhcmVfaW4odm9pZCogcmVn
aW9uKTsKKworLyogZGVzdHJveSBhIHRzZl9idWZmZXIgdGhhdCB3YXMgY3JlYXRlZCB3aXRoIHRz
Zl9idWZmZXJfY3JlYXRlX2JhcmUoKQorICAgYnV0IGRpZG4ndCB5ZXQgaGF2ZSBhbnl0aGluZyBl
bHNlIGRvbmUgdG8gaXQuICovCit2b2lkIHRzZl9idWZmZXJfZGVzdHJveV9iYXJlKHRzZl9idWZm
ZXJfdCAqYnVmKTsKKworLyogcmVhZC93cml0ZSBhIGJ1ZmZlciB1c2luZyB0aGUgb2xkIGJ1ZmZl
ciBmcmFtaW5nIGZvcm1hdCwgd2hpY2ggaXMgc3RpbGwKKyAqIGFwcHJvcHJpYXRlIGZvciBsYXJn
ZSBidWZmZXJzLiAqLwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3JlYWRfc2ltcGxlKHRzZl9idWZm
ZXJfdCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2lu
X21hcF90ICplbmNsb3NpbmdfdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHNmX3JlYWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0
c190ICpsaW1pdHMpOwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3dyaXRlX3NpbXBsZSh0c2ZfYnVm
ZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
dHlwZV9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9v
dXRfbWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphcmcpOworCisvKiByZWFkL3dyaXRlIGEgc21hbGwgYnVmZmVyIHVzaW5nIHRoZSBuZXcg
ZnJhbWluZyBmb3JtYXQsIHdoaWNoIG9ubHkgd29ya3MKKyAqIGZvciBzbWFsbCBidWZmZXJzLiAq
LwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX3JlYWRfc21hbGxfd2l0aF90eXBlX2NvZGUodHNmX2J1
ZmZlcl90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCB0eXBlX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqZW5jbG9zaW5nX3R5cGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlYWRlcl90
IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRzZl9saW1pdHNfdCAqbGltaXRzKTsKK3RzZl9ib29sX3QgdHNmX2J1ZmZlcl93cml0ZV9z
bWFsbF93aXRoX3R5cGVfY29kZSh0c2ZfYnVmZmVyX3QgKmJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVf
bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl93cml0ZXJfdCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqYXJnKTsKKworLyogcmVhZCBpbnRvIGFuIGFscmVhZHktY3JlYXRl
ZCBidWZmZXIuIHRoZSBidWZmZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkCisgICB1c2luZyBl
aXRoZXIgdHNmX2J1ZmZlcl9pbml0aWFsaXplX2N1c3RvbSgpIG9yIHRzZl9idWZmZXJfY3JlYXRl
X2JhcmUoKSAqLwordHNmX2Jvb2xfdCB0c2Zfc2VyaWFsX2luX21hbl9yZWFkX2V4aXN0aW5nX2J1
ZmZlcih0c2Zfc2VyaWFsX2luX21hbl90ICppbl9tYW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmKTsKKworLyogcmVh
ZCBhIGJ1ZmZlciBmcm9tIGEgZmlsZSB0aGF0IHdhcyBvcGVubmVkIGZvciByZWFkaW5nIHVzaW5n
IGFuIGFscmVhZHktY3JlYXRlZAorICAgYnVmZmVyLiAqLwordHNmX2Jvb2xfdCB0c2Zfc3RyZWFt
X2ZpbGVfaW5wdXRfcmVhZF9leGlzdGluZ19idWZmZXIodHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0c2ZfYnVmZmVyX3QgKmJ1Zik7CisKKy8qIGdlbmVyYXRlIGludG8gYW4gZXhpc3Rpbmcg
YnVmZmVyIGNyZWF0ZWQgdXNpZ24gdHNmX2J1ZmZlcl9pbml0aWFsaXplX2N1c3RvbSgpLiAqLwor
dHNmX2Jvb2xfdCB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2V4aXN0aW5nX2J1ZmZlcih0c2ZfZ2Vu
cnRyX3QgKmdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX2J1ZmZlcl90ICpidWYpOworCisvKiB3cml0ZSBhIHR5cGUgYWNjb3Jk
aW5nIHRvIHRoZSBzZXJpYWwgcHJvdG9jb2wgKi8KK3RzZl9ib29sX3QgdHNmX3NlcmlhbF9vdXRf
bWFuX3dyaXRlX3R5cGUodHNmX3dyaXRlcl90IHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlKTsKKworLyogdmVyaWZ5IHRoYXQgdGhl
IGRhdGEgaXMgdmFsaWQuICBiYXNpY2FsbHkganVzdCBkb2VzIE5VTEwgY2hlY2tzLiAqLwordHNm
X2Jvb2xfdCB0c2ZfcmVmbGVjdF92ZXJpZnkodHNmX3JlZmxlY3RfdCAqZGF0YSk7CisKKy8qIGdl
bmVyYXRlIGEgZ3BpbnQgcHJvdG90eXBlIGZvciBhIGdlbmVyYXRvci4gIGEgZ2VuZXJhdG9yIHRh
a2VzCisgKiB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2s6IGEgcG9pbnRlciB0
byBhIHRzZl90eXBlX3QsCisgKiBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIHN0cnVjdHVyZS4g
IHRoZSBnZW5lcmF0b3IgcmV0dXJucyBhCisgKiBwb2ludGVyIHRvIGEgdHNmX2J1ZmZlcl90LCBv
ciAwIGlmIGFuIGVycm9yIG9jY3VycmVkLiAqLworZ3BjX3Byb3RvX3QgKnRzZl9ncGNfY29kZV9n
ZW5fZ2VuZXJhdGVfZ2VuZXJhdG9yKHRzZl90eXBlX3QgKnR5cGUpOworCisvKiBnZW5lcmF0ZSBh
IGdwaW50IHByb3RvdHlwZSBmb3IgYSBwYXJzZXIuICBhIHBhcnNlciB0YWtlcyB0aGUKKyAqIGZv
bGxvd2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrOiBhIHBvaW50ZXIgdG8gYSB0c2ZfYnVmZmVy
X3QuCisgKiBpdCByZXR1cm5zIGEgcG9pbnRlciB0byBhIHVzZXIgc3RydWN0dXJlIHRoYXQgaXMg
YWxzbyBhIHJlZ2lvbi4gKi8KK2dwY19wcm90b190ICp0c2ZfZ3BjX2NvZGVfZ2VuX2dlbmVyYXRl
X3BhcnNlcih0c2ZfdHlwZV90ICpkZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqc3JjX3R5cGUpOworCisvKiBnZW5lcmF0
ZSBhIGdwaW50IHByb3RvdHlwZSBmb3IgYSBjb252ZXJ0ZXIuICBhIGNvbnZlcnRlciB0YWtlcwor
ICogdGhlIGZvbGxvd2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrOiBhIHBvaW50ZXIgdG8gdGhl
IGRlc3RpbmF0aW9uLAorICogd2hpY2ggbWF5IGJlIE5VTEwgaW5kaWNhdGluZyB0aGF0IHRoZSBk
ZXN0aW5hdGlvbiBzaG91bGQgYmUKKyAqIGFsbG9jYXRlZCwgYW5kIGEgcG9pbnRlciB0byB0aGUg
c291cmNlLiAgdGhlIHJlZ2lvbiByZWdpc3RlcgorICogbWF5IGJlIE5VTEwgb25seSBpZiB0aGUg
ZGVzdGluYXRpb24gaXMgTlVMTDsgaWYgdGhlIHJlZ2lvbgorICogaXMgTlVMTCBpdCBtZWFucyB0
aGF0IGEgbmV3IHJlZ2lvbiBzaG91bGQgYmUgYWxsb2NhdGVkLiAgYQorICogY29udmVydGVyIHJl
dHVybnMgdGhlIGRlc3RpbmF0aW9uLiAqLworZ3BjX3Byb3RvX3QgKnRzZl9ncGNfY29kZV9nZW5f
Z2VuZXJhdGVfY29udmVydGVyKHRzZl90eXBlX3QgKmRlc3RfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICpzcmNfdHlwZSk7
CisKKy8qIGdlbmVyYXRlIGEgZ3BpbnQgcHJvdG90eXBlIGZvciBhIGRlc3Ryb3llci4gIGEgZGVz
dHJveWVyIHRha2VzIHRoZQorICogZm9sbG93aW5nIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2s6IGEg
cG9pbnRlciB0byB0aGUgdXNlciBzdHJ1Y3R1cmUuCisgKiBpdCByZXR1cm5zIDAuICovCitncGNf
cHJvdG9fdCAqdHNmX2dwY19jb2RlX2dlbl9nZW5lcmF0ZV9kZXN0cm95ZXIodHNmX3R5cGVfdCAq
dHlwZSk7CisKKy8qIGludGVybmFsIEZTREIgcHV0IGZ1bmN0aW9uLiAganVzdCBnaXZlcyB5b3Ug
YSBmaWxlIGRlc2NyaXB0b3IKKyAqIGZvciB3cml0aW5nIHRvIHRoZSBmaWxlIGFuZCB0aGUgZmls
ZSBuYW1lLiAqLwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9ndXRzX3B1dCh0c2ZfZnNkYl90ICpmc2Ri
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtleSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKnBhcnRmbG5tKTsKKworLyogaW50ZXJuYWwgRlNEQiBjb21taXQgZnVuY3Rp
b24uICovCit0c2ZfYm9vbF90IHRzZl9mc2RiX2d1dHNfY29tbWl0KHRzZl9mc2RiX3QgKmZzZGIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcnRmbG5tLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmtleSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmRhdGFmbG5tKTsKKworLyogaW50ZXJuYWwgRlNE
QiBhYm9ydCBmdW5jdGlvbi4gKi8KK3RzZl9ib29sX3QgdHNmX2ZzZGJfZ3V0c19hYm9ydCh0c2Zf
ZnNkYl90ICpmc2RiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcnRm
bG5tKTsKKworLyogaW50ZXJuYWwgRlNEQiBnZXQgZnVuY3Rpb24uICovCit0c2ZfYm9vbF90IHRz
Zl9mc2RiX2d1dHNfZ2V0KHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRzZl9idWZmZXJfdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgKmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqZGF0YWZsbm0pOwor
CisvKiBpbnRlcm5hbCBGU0RCIHJtIGZ1bmN0aW9uLiAqLwordHNmX2Jvb2xfdCB0c2ZfZnNkYl9n
dXRzX3JtKHRzZl9mc2RiX3QgKmZzZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X2J1ZmZlcl90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmRhdGFm
bG5tKTsKKworLyogYWJvcnQgYmVjYXVzZSB3ZSBzY3Jld2VkIHVwIGJpZyB0aW1lICovCisjZGVm
aW5lIHRzZl9hYm9ydChtc2cpIGRvIHsJCQkJCQlcCisJZnByaW50ZihzdGRlcnIsInRzZl9hYm9y
dChcIiVzXCIpOiBjYWxsZWQgYXQgJXM6JWRcbiIsCQlcCisJCW1zZyxfX0ZJTEVfXyxfX0xJTkVf
Xyk7CQkJCQlcCisJYWJvcnQoKTsJCQkJCQkJXAorICAgIH0gd2hpbGUgKDApCisKKy8qIGZ1bmN0
aW9uIHZlcnNpb24gb2YgYWJvcnQgKi8KK3ZvaWQgdHNmX2ZfYWJvcnQoY29uc3QgY2hhciAqbXNn
KTsKKworLyogbWFrZSBhbiBhc3NlcnRpb24gdGhhdCwgaWYgaXQgZmFpbHMsIGNhdXNlcyB1cyB0
byBhYm9ydC4gd2UgZG9uJ3QKKyAqIHN1cHBvcnQgdGhlIG5vdGlvbiBvZiBvcHRpb25hbCBhc3Nl
cnRpb25zOyB0aGV5IGFyZSBhbHdheXMgZW5hYmxlZC4gKi8KKyNkZWZpbmUgdHNmX2Fzc2VydChl
eHApIGRvIHsJCQkJCQlcCisJaWYgKCEoZXhwKSkgewkJCQkJCQlcCisJICAgIGZwcmludGYoc3Rk
ZXJyLCJ0c2ZfYXNzZXJ0KCVzKTogZmFpbGVkIGF0ICVzOiVkXG4iLAkJXAorCQkgICAgI2V4cCxf
X0ZJTEVfXyxfX0xJTkVfXyk7CQkJCVwKKwkgICAgYWJvcnQoKTsJCQkJCQkJXAorCX0JCQkJCQkJ
CVwKKyAgICB9IHdoaWxlICgwKQorCisjZW5kaWYKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsX2NvbmZpZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaW50ZXJuYWxfY29uZmln
LmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9pbnRlcm5hbF9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
RklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpM
TyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisvKgorICogVGhpcyBmaWxlIGhvbGRzIHRzZl9pbnRlcm5hbF9jb25maWdfc3R1Yi5oLCB3aGlj
aCBpcyBhdXRvLWdlbmVyYXRlZC4KKyAqCisgKiBTaW5jZSB0aGlzIGNvbnRhaW5zIGludGVybmFs
IGNvbmZpZ3VyYXRpb24sIGl0IHNob3VsZCBvbmx5IGJlOgorICogLT4gSW5jbHVkZWQgZnJvbSBv
dXIgb3duIEMgZmlsZXMgKGVpdGhlciBmaWxlcyBpbiB0aGUgZGlzdHJpYnV0aW9uIG9yCisgKiAg
ICBDIGZpbGVzIHdlIGNvZGUtZ2VuZXJhdGUgdGhhdCBkbyBub3QgZGlyZWN0bHkgY29udGFpbiBh
bnkgdXNlciBjb2RlKQorICogLT4gSW5jbHVkZWQgaW4gQyBmaWxlcyEhICBJZiB0aGVyZSBpcyBl
dmVyIGFueSBDKysgY29kZSwgaXQgc2hvdWxkIG5vdAorICogICAgaW5jbHVkZSB0aGlzIHVubGVz
cyB0aGluZ3MgYXJlIGNoYW5nZWQgYXJvdW5kLiAgVGhpcyBpcyBiZWNhdXNlIHRoaXMKKyAqICAg
IGNvbmZpZyBtYXkgcmVkZWZpbmUgaW5saW5lIChhbmQgcG90ZW50aWFsbHkgb3RoZXIgdGhpbmdz
KSB0aGF0IHdvdWxkCisgKiAgICBwcm9iYWJseSBzY3JldyB1cCBhIGxvdCBvZiBDKysgY29kZS4K
KyAqLworCisjaWZuZGVmIEZQX1RTRl9JTlRFUk5BTF9DT05GSUdfSAorI2RlZmluZSBGUF9UU0Zf
SU5URVJOQUxfQ09ORklHX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjZXJyb3IgIlRoaXMgaGVh
ZGVyIHNob3VsZCBORVZFUiBiZSBpbmNsdWRlZCBpbiBDKysgY29kZSIKKyNlbmRpZgorCisjaW5j
bHVkZSAidHNmX2ludGVybmFsX2NvbmZpZ19zdHViLmgiCisKKyNlbmRpZgorCkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludGVybmFsX2NvbmZpZ19zdHVi
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl9pbnRlcm5hbF9jb25maWdfc3R1Yi5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaW50ZXJuYWxfY29uZmlnX3N0dWIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM0MiBAQAorLyogbGlicmFyeS9jb25maWcuaC4gIEdlbmVyYXRl
ZCBmcm9tIGNvbmZpZy5oLmluIGJ5IGNvbmZpZ3VyZS4gICovCisvKiBsaWJyYXJ5L2NvbmZpZy5o
LmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLworCisv
KiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICov
CisvKiAjdW5kZWYgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxEICovCisKKy8qIGRlZmluZXMgaG93
IHRvIHRocm93IGluIHRoZSBub2lubGluZSBhdHRyaWJ1dGUgKi8KKyNkZWZpbmUgQVRUUklCVVRF
X05PSU5MSU5FIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKworLyogRGVmaW5lZCBpZiB5b3Ug
Y2FuIGRvIG1pc2FsaWduZWQgbG9hZHMgYW5kIHN0b3JlcyBvbiBmbG9hdHMgKi8KKyNkZWZpbmUg
Q0FOX0RPX0ZMT0FUX01JU0FMSUdORURfTERTVCAxCisKKy8qIERlZmluZWQgaWYgeW91IGNhbiBk
byBtaXNhbGlnbmVkIGxvYWRzIGFuZCBzdG9yZXMgKi8KKyNkZWZpbmUgQ0FOX0RPX01JU0FMSUdO
RURfTERTVCAxCisKKy8qIERldGVybWluZXMgdGhlIHByZWZpeCBmb3IgaW5jbHVkaW5nIFRTRiBm
aWxlcyBmcm9tIGdlbmVyYXRlZCBjb2RlICovCisjZGVmaW5lIENPREVfR0VOX0lOQ0xVREVfUFJF
RklYICJ0c2YvIgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFjY2VwdCcgZnVu
Y3Rpb24uICovCisjZGVmaW5lIEhBVkVfQUNDRVBUIDAKKworLyogRGVmaW5lZCBpZiB3ZSBjYW4g
dGFrZSBhZGRyZXNzZXMgb2YgbGFiZWxzICovCisvLyNkZWZpbmUgSEFWRV9BRERSRVNTX09GX0xB
QkVMIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhcnBhL2luZXQuaD4gaGVh
ZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfQVJQQV9JTkVUX0ggMQorCisvKiBEZWZpbmVkIGlm
IHdlIGFyZSBvbiBhIGJpZyBlbmRpYW4gbWFjaGluZSAqLworLyogI3VuZGVmIEhBVkVfQklHX0VO
RElBTiAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJpbmQnIGZ1bmN0aW9u
LiAqLworLy8jZGVmaW5lIEhBVkVfQklORCAxCisKKy8qIERlZmllbmQgaWYgeW91didlIGdvdCBC
U0Qgc29ja2V0cyAqLworLy8jZGVmaW5lIEhBVkVfQlNEU09DS1MgMQorCisvKiBEZWZpbmVkIGlm
IHdlIGhhdmUgX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcCAqLworLy8jZGVmaW5lIEhBVkVf
QlVJTFRJTl9DQVMgMQorCisvKiBEZWZpbmVkIGlmIHdlIGhhdmUgX19zeW5jX2ZldGNoX2FuZF9h
ZGQgKi8KKy8vI2RlZmluZSBIQVZFX0JVSUxUSU5fWEFERCAxCisKKy8qIERlZmluZWQgaWYgd2Ug
aGF2ZSBsaWJiemlwMiAqLworLyogI3VuZGVmIEhBVkVfQlpJUDIgKi8KKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBjb25uZWN0JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZF
X0NPTk5FQ1QgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRsZmNuLmg+IGhl
YWRlciBmaWxlLiAqLworLy8jZGVmaW5lIEhBVkVfRExGQ05fSCAxCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgZm9yaycgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9GT1JL
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRhZGRyaW5mbycgZnVuY3Rp
b24uICovCisvLyNkZWZpbmUgSEFWRV9HRVRBRERSSU5GTyAxCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgZ2V0aG9zdGJ5bmFtZScgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFW
RV9HRVRIT1NUQllOQU1FIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRo
b3N0YnluYW1lX3InIGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9S
ICovCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0b3B0JyBmdW5jdGlvbi4g
Ki8KKyNkZWZpbmUgSEFWRV9HRVRPUFQgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgYGdldHBhZ2VzaXplJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9HRVRQQUdFU0laRSAx
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0dGltZW9mZGF5JyBmdW5jdGlv
bi4gKi8KKyNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQorCisvKiBEZXRlcm1pbmVzIGlmIHdl
IGhhdmUgSUVFRSBmbG9hdGluZyBwb2ludCAqLworI2RlZmluZSBIQVZFX0lFRUVfRkxPQVQgMQor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvYScgZnVuY3Rpb24uICov
CisjZGVmaW5lIEhBVkVfSU5FVF9OVE9BIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBpbmV0X250b3AnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0lORVRfTlRPUCAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUu
ICovCisjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgbScgbGlicmFyeSAoLWxtKS4gKi8KKyNkZWZpbmUgSEFWRV9MSUJNIDEKKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsaXN0ZW4nIGZ1bmN0aW9uLiAqLworLy8jZGVm
aW5lIEhBVkVfTElTVEVOIDEKKworLyogRGVmaW5lZCBpZiB3ZSBhcmUgb24gYSBsaXR0bGUgZW5k
aWFuIG1hY2hpbmUgKi8KKyNkZWZpbmUgSEFWRV9MSVRUTEVfRU5ESUFOIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWUnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBI
QVZFX0xPQ0FMVElNRSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9jYWx0
aW1lX3InIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0xPQ0FMVElNRV9SIDEKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb25nam1wJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmlu
ZSBIQVZFX0xPTkdKTVAgMQorCisvKiBEZWZpbmVkIGlmIHRoZSBNQVBfQU5PTiBjb25zdGFudCBp
cyBkZWZpbmVkLiAqLworLy8jZGVmaW5lIEhBVkVfTUFQX0FOT04gMQorCisvKiBEZWZpbmVkIGlm
IHRoZSBNQVBfQU5PTllNT1VTIGNvbnN0YW50IGlzIGRlZmluZWQuICovCisvLyNkZWZpbmUgSEFW
RV9NQVBfQU5PTllNT1VTIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1v
cnkuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZHRlbXAnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5l
IEhBVkVfTUtEVEVNUCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcg
ZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9NTUFQIDEKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGBtcHJvdGVjdCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9NUFJP
VEVDVCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXVubWFwJyBmdW5jdGlv
bi4gKi8KKy8vI2RlZmluZSBIQVZFX01VTk1BUCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUEFUSENPTkYg
MQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByZWFkJyBmdW5jdGlvbi4gKi8K
Ky8vI2RlZmluZSBIQVZFX1BSRUFEIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBwcmVhZHYnIGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIEhBVkVfUFJFQURWICovCisKKy8qIERl
ZmluZWQgaWYgd2UgaGF2ZSBwdGhyZWFkcyAqLworLy8jZGVmaW5lIEhBVkVfUFRIUkVBRCAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlJyBmdW5jdGlvbi4gKi8KKy8v
I2RlZmluZSBIQVZFX1BXUklURSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg
cHdyaXRldicgZnVuY3Rpb24uICovCisvKiAjdW5kZWYgSEFWRV9QV1JJVEVWICovCisKKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcXNvcnQnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBI
QVZFX1FTT1JUIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkZGlyX3In
IGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfUkVBRERJUl9SIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGByZWFkdicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9S
RUFEViAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVnY29tcCcgZnVuY3Rp
b24uICovCisvLyNkZWZpbmUgSEFWRV9SRUdDT01QIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGByZWdlcnJvcicgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9SRUdFUlJP
UiAxCisKKy8qIERlZmluZWQgaWYgeW91J3ZlIGdvdCByZWdleCBmdW5jdGlvbnMgKi8KKy8vI2Rl
ZmluZSBIQVZFX1JFR0VYIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWdl
eGVjJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1JFR0VYRUMgMQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2ZyZWUnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhB
VkVfUkVHRlJFRSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2NoZWQuaD4g
aGVhZGVyIGZpbGUuICovCisvLyNkZWZpbmUgSEFWRV9TQ0hFRF9IIDEKKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF95aWVsZCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUg
SEFWRV9TQ0hFRF9ZSUVMRCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0
am1wJyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1NFVEpNUCAxCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0dmJ1ZicgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVf
U0VUVkJVRiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc29ja2V0JyBmdW5j
dGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1NPQ0tFVCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NURElO
VF9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpby5oPiBoZWFkZXIg
ZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TVERJT19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RETElC
X0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cGNweScgZnVuY3Rpb24u
ICovCisjZGVmaW5lIEhBVkVfU1RQQ1BZIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NUUklOR1NfSCAx
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxl
LiAqLworI2RlZmluZSBIQVZFX1NUUklOR19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBzdHJzaWduYWwnIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5lIEhBVkVfU1RSU0lHTkFM
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIg
ZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVf
U1lTX1RZUEVTX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91aW8u
aD4gaGVhZGVyIGZpbGUuICovCisvLyNkZWZpbmUgSEFWRV9TWVNfVUlPX0ggMQorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRlbXBuYW0nIGZ1bmN0aW9uLiAqLworLy8jZGVmaW5l
IEhBVkVfVEVNUE5BTSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3Rk
Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGB2YXNwcmludGYnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBI
QVZFX1ZBU1BSSU5URiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd3JpdGV2
JyBmdW5jdGlvbi4gKi8KKy8vI2RlZmluZSBIQVZFX1dSSVRFViAxCisKKy8qIERlZmluZWQgaWYg
d2UgY2FuIHVzZSBYODYgaW5saW5lIGFzc2VtYmx5IGZvciBmZW5jZXMgKi8KKy8vI2RlZmluZSBI
QVZFX1g4Nl9JTkxJTkVfQVNNX0ZFTkNFUyAxCisKKy8qIERlZmluZWQgaWYgd2UgaGF2ZSBaTGli
ICovCisvLyNkZWZpbmUgSEFWRV9aTElCIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBfbG9uZ2ptcCcgZnVuY3Rpb24uICovCisvLyNkZWZpbmUgSEFWRV9fTE9OR0pNUCAxCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX3NldGptcCcgZnVuY3Rpb24uICovCisv
KiAjdW5kZWYgSEFWRV9fU0VUSk1QICovCisKKy8qIERlZmluZWQgd2hlbiB5b3UncmUgb24gYSBz
ZW5zaWJsZSBPUywgdW5saWtlIE5ldEJTRC4gKi8KKyNkZWZpbmUgSU5UVFlQRVNfV09SS19SSUdI
VCAxCisKKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSBpbiB3aGljaCBsaWJ0b29sIHN0
b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuCisgICAqLworI2RlZmluZSBMVF9PQkpESVIgIi5s
aWJzLyIKKworLyogVGVsbCB5b3UgdGhlIG5hdGl2ZSBhbGlnbm1lbnQgb2YgeW91ciBwbGF0Zm9y
bSAqLworI2RlZmluZSBOQVRJVkVfQUxJR05NRU5UIDE2CisKKy8qIE5hbWUgb2YgcGFja2FnZSAq
LworI2RlZmluZSBQQUNLQUdFICJ0c2YiCisKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVy
ZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI2RlZmlu
ZSBQQUNLQUdFX0JVR1JFUE9SVCAicGl6bG9AbWFjLmNvbSIKKworLyogRGVmaW5lIHRvIHRoZSBm
dWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX05BTUUgInRzZiIK
KworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdl
LiAqLworI2RlZmluZSBQQUNLQUdFX1NUUklORyAidHNmIDEuMS4wIgorCisvKiBEZWZpbmUgdG8g
dGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBB
Q0tBR0VfVEFSTkFNRSAidHNmIgorCisvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhp
cyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX1VSTCAiIgorCisvKiBEZWZpbmUgdG8gdGhl
IHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEu
MS4wIgorCisvKiBUaGUgc2l6ZSBvZiBgZG91YmxlJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAq
LworI2RlZmluZSBTSVpFT0ZfRE9VQkxFIDgKKworLyogVGhlIHNpemUgb2YgYGZsb2F0JywgYXMg
Y29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfRkxPQVQgNAorCisvKiBUaGUg
c2l6ZSBvZiBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9G
X0xPTkcgNAorCisvKiBUaGUgc2l6ZSBvZiBgbG9uZyBkb3VibGUnLCBhcyBjb21wdXRlZCBieSBz
aXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9MT05HX0RPVUJMRSAxNgorCisvKiBUaGUgc2l6ZSBv
ZiBgbG9uZyBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0Zf
TE9OR19MT05HIDgKKworLyogVGhlIHNpemUgb2YgYG9mZl90JywgYXMgY29tcHV0ZWQgYnkgc2l6
ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfT0ZGX1QgOAorCisvKiBUaGUgc2l6ZSBvZiBgc2l6ZV90
JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfU0laRV9UIDQKKwor
LyogVGhlIHNpemUgb2YgYHZvaWQgKicsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZp
bmUgU0laRU9GX1ZPSURfUCA0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJ
IEMgaGVhZGVyIGZpbGVzLiAqLworI2RlZmluZSBTVERDX0hFQURFUlMgMQorCisvKiBEZXRlcm1p
bmVzIHdoZXJlIHRvIHBsYWNlIHRlbXBvcmFyeSBmaWxlcyAqLworI2RlZmluZSBUTVBfRElSRUNU
T1JZICIvdG1wIgorCisvKiBWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlICovCisjZGVmaW5lIFZF
UlNJT04gIjEuMS4wIgorCisvKiBUU0YgbWFqb3IgdmVyc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUg
VkVSU0lPTl9NQUpPUiAxCisKKy8qIFRTRiBtaW5vciB2ZXJzaW9uIG51bWJlciAqLworI2RlZmlu
ZSBWRVJTSU9OX01JTk9SIDEKKworLyogVFNGIHBhdGNoIHZlcnNpb24gbnVtYmVyICovCisjZGVm
aW5lIFZFUlNJT05fUEFUQ0ggMAorCisvKiBEZWZpbmUgV09SRFNfQklHRU5ESUFOIHRvIDEgaWYg
eW91ciBwcm9jZXNzb3Igc3RvcmVzIHdvcmRzIHdpdGggdGhlIG1vc3QKKyAgIHNpZ25pZmljYW50
IGJ5dGUgZmlyc3QgKGxpa2UgTW90b3JvbGEgYW5kIFNQQVJDLCB1bmxpa2UgSW50ZWwpLiAqLwor
I2lmIGRlZmluZWQgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECisjIGlmIGRlZmluZWQgX19CSUdf
RU5ESUFOX18KKyMgIGRlZmluZSBXT1JEU19CSUdFTkRJQU4gMQorIyBlbmRpZgorI2Vsc2UKKyMg
aWZuZGVmIFdPUkRTX0JJR0VORElBTgorLyogIyAgdW5kZWYgV09SRFNfQklHRU5ESUFOICovCisj
IGVuZGlmCisjZW5kaWYKKworLyogRW5hYmxlIGxhcmdlIGlub2RlIG51bWJlcnMgb24gTWFjIE9T
IFggMTAuNS4gICovCisjaWZuZGVmIF9EQVJXSU5fVVNFXzY0X0JJVF9JTk9ERQorIyBkZWZpbmUg
X0RBUldJTl9VU0VfNjRfQklUX0lOT0RFIDEKKyNlbmRpZgorCisvKiBOdW1iZXIgb2YgYml0cyBp
biBhIGZpbGUgb2Zmc2V0LCBvbiBob3N0cyB3aGVyZSB0aGlzIGlzIHNldHRhYmxlLiAqLworLyog
I3VuZGVmIF9GSUxFX09GRlNFVF9CSVRTICovCisKKy8qIERlZmluZSBmb3IgbGFyZ2UgZmlsZXMs
IG9uIEFJWC1zdHlsZSBob3N0cy4gKi8KKy8qICN1bmRlZiBfTEFSR0VfRklMRVMgKi8KKworLyog
RGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICov
CisvKiAjdW5kZWYgY29uc3QgKi8KKworLyogRGVmaW5lIHRvIGBfX2lubGluZV9fJyBvciBgX19p
bmxpbmUnIGlmIHRoYXQncyB3aGF0IHRoZSBDIGNvbXBpbGVyCisgICBjYWxscyBpdCwgb3IgdG8g
bm90aGluZyBpZiAnaW5saW5lJyBpcyBub3Qgc3VwcG9ydGVkIHVuZGVyIGFueSBuYW1lLiAgKi8K
KyNpZm5kZWYgX19jcGx1c3BsdXMKKy8qICN1bmRlZiBpbmxpbmUgKi8KKyNlbmRpZgorCisvKiBE
ZWZpbmUgdG8gZW1wdHkgaWYgdGhlIGtleXdvcmQgYHZvbGF0aWxlJyBkb2VzIG5vdCB3b3JrLiBX
YXJuaW5nOiB2YWxpZAorICAgY29kZSB1c2luZyBgdm9sYXRpbGUnIGNhbiBiZWNvbWUgaW5jb3Jy
ZWN0IHdpdGhvdXQuIERpc2FibGUgd2l0aCBjYXJlLiAqLworLyogI3VuZGVmIHZvbGF0aWxlICov
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ludHR5cGVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl9pbnR0eXBlcy5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfaW50dHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUEla
TE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisvKgorICog
SGFja3MgaW50dHlwZXMgdG8gd29yayByaWdodCBvbiBOZXRCU0QgKGFuZCBwb3NzaWJseSBvdGhl
ciBzeXN0ZW1zKSBhbmQgQysrLgorICovCisKKy8qIHRoZXNlIGFyZSB0aGUgdHdvIGxpYnJhcmll
cyB0aGF0IG1pZ2h0ICNkZWZpbmUgdGhlIGludFhYWCBtYWNyb3MuCisgICBpbmNsdWRpbmcgdGhl
bSBoZXJlIHByZXZlbnRzIHRoZW0gZnJvbSBiZWluZyBpbmNsdWRlZCBhZnRlciBJJ3ZlCisgICBh
bHJlYWR5ICN1bmRlZmluZWQgdGhlIG1hY3Jvcy4gKi8KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgor
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWZuZGVmIFRTRl9JTlRUWVBFU19XT1JLX1JJR0hU
CisjdW5kZWYgaW50OF90CisjdW5kZWYgdWludDhfdAorI3VuZGVmIGludDE2X3QKKyN1bmRlZiB1
aW50MTZfdAorI3VuZGVmIGludDMyX3QKKyN1bmRlZiB1aW50MzJfdAorI3VuZGVmIGludDY0X3QK
KyN1bmRlZiB1aW50NjRfdAorI2VuZGlmCisKKy8qIHdvdy4gIGp1c3Qgd293LiAgdGhlIHdheSBD
Kysgc2Fib3RhZ2VzIGludHR5cGVzLmggaXMgc3BlY3RhY3VsYXIuICovCisjaWZuZGVmIFVJTlQz
Ml9NQVgKKyNkZWZpbmUgVUlOVDMyX01BWCAoKCh1aW50MzJfdCkwKS0oKHVpbnQzMl90KTEpKQor
I2VuZGlmCisKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl9pby5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2ZfaW8uYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
d2FzbS90c2YvdHNmX2lvLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJ
WkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j
bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwordHNmX2Jvb2xfdCB0c2ZfZmRf
d3JpdGVyKHZvaWQgKmFyZywgY29uc3Qgdm9pZCAqZGF0YSwgdWludDMyX3QgbGVuKSB7CisgICAg
dWludDhfdCAqY3VyID0gKHVpbnQ4X3QqKWRhdGE7CisgICAgaW50IGZkID0gKigoaW50Kilhcmcp
OworICAgIHdoaWxlIChsZW4pIHsKKyAgICAgICAgaW50IHJlcyA9IHdyaXRlKGZkLCBjdXIsIGxl
bik7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlO
VFIpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHRzZl9zZXRfZXJybm8oIkNhbGxpbmcgd3JpdGUoKSBpbiB0c2ZfZmRfd3JpdGVyKCkiKTsK
KyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgY3VyICs9
IHJlczsKKyAgICAgICAgbGVuIC09IHJlczsKKyAgICB9CisgICAgcmV0dXJuIHRzZl90cnVlOwor
fQorCit0c2ZfYm9vbF90IHRzZl9mZF9yZWFkZXIodm9pZCAqYXJnLCB2b2lkICpkYXRhLCB1aW50
MzJfdCBsZW4pIHsKKyAgICB1aW50OF90ICpjdXI9ZGF0YTsKKyAgICBpbnQgZmQ9KigoaW50Kilh
cmcpOworICAgIHdoaWxlIChsZW4pIHsKKyAgICAgICAgaW50IHJlcz1yZWFkKGZkLGN1cixsZW4p
OworICAgICAgICBpZiAocmVzPDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubz09RUlOVFIpIHsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRz
Zl9zZXRfZXJybm8oIkNhbGxpbmcgcmVhZCgpIGluIHRzZl9mZF9yZWFkZXIoKSIpOworICAgICAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzPT0wKSB7
CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKCh2b2lkKiljdXI9PWRhdGE/CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRTRl9FX1VORVhQRUNURURfRU9GOlRTRl9FX0VSUk9ORU9VU19FT0Ys
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfZmRfcmVh
ZGVyKCkiKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgY3VyKz1yZXM7CisgICAgICAgIGxlbi09cmVzOworICAgIH0KKyAgICByZXR1cm4gdHNmX3Ry
dWU7Cit9CisKK2ludDMyX3QgdHNmX2ZkX3BhcnRpYWxfcmVhZGVyKHZvaWQgKmFyZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICBpbnQgZmQ9KigoaW50KilhcmcpOworICAg
IGZvciAoOzspIHsKKyAgICAgICAgaW50IHJlcz1yZWFkKGZkLGRhdGEsbGVuKTsKKyAgICAgICAg
aWYgKHJlczwwKSB7CisgICAgICAgICAgICBpZiAoZXJybm89PUVJTlRSKSB7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5v
KCJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfZmRfcGFydGlhbF9yZWFkZXIoKSIpOworICAgICAgICAg
ICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChyZXM9PTApIHsKKyAgICAgICAg
ICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfVU5FWFBFQ1RFRF9FT0YsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDYWxsaW5nIHJlYWQoKSBpbiB0c2ZfZmRfcGFydGlhbF9yZWFkZXIoKSIpOwor
ICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXM7Cisg
ICAgfQorfQorCit0c2ZfYm9vbF90IHRzZl9jb21wYXJpbmdfd3JpdGVyKHZvaWQgKmFyZywKKwkJ
CQljb25zdCB2b2lkICpidWYsCisJCQkJdWludDMyX3QgbGVuKSB7CisgICAgdHNmX2NvbXBhcmlu
Z193cml0ZXJfdCAqc2VsZj1hcmc7CisgICAgdm9pZCAqbXlfYnVmPW1hbGxvYyhsZW4pOworICAg
IGlmIChteV9idWY9PU5VTEwpIHsKKwl0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUg
dGVtcG9yYXJ5IGJ1ZmZlciIpOworCXJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIGlmIChz
ZWxmLT5yZWFkZXIoc2VsZi0+YXJnLG15X2J1ZixsZW4pKSB7CisJaW50IHJlcz1tZW1jbXAoYnVm
LG15X2J1ZixsZW4pOworCWZyZWUobXlfYnVmKTsKKwlpZiAocmVzPT0wKSB7CisJICAgIHJldHVy
biB0c2ZfdHJ1ZTsKKwl9IGVsc2UgeworCSAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0NPTVBBUkVf
RkFJTCxOVUxMKTsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKwl9CisgICAgfSBlbHNlIHsKKwlm
cmVlKG15X2J1Zik7CisJcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cit9CisKK3RzZl9ib29sX3Qg
dHNmX2hhc2hpbmdfd3JpdGVyKHZvaWQgKmFyZywKKwkJCSAgICAgIGNvbnN0IHZvaWQgKl9idWYs
CisJCQkgICAgICB1aW50MzJfdCBsZW4pIHsKKyAgICB1aW50OF90ICpidWYgPSAodWludDhfdCop
X2J1ZjsKKyAgICB1aW50MzJfdCAqaGFzaCA9IGFyZzsKKyAgICB1aW50MzJfdCBoID0gKmhhc2gs
IGc7CisgICAgCisgICAgLyogdGhpcyBpcyB0aGUgRUxGIGhhc2gsIGF0IGxlYXN0IGFjY29yZGlu
ZyB0byBteSBoYXNodGFibGUKKyAgICAgICBsaWJyYXJ5LiAqLworICAgIHdoaWxlIChsZW4gLS0+
IDApIHsKKwloID0gKGggPDwgNCkgKyBidWZbbGVuXTsKKwlnID0gaCAmIDB4ZjAwMDAwMDA7CisJ
aWYgKGcpIHsKKwkgICAgaCBePSBnID4+IDI0OworCX0KKwloICY9IH5nOworICAgIH0KKworICAg
ICpoYXNoID0gaDsKKworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2Zf
c2l6ZV9jYWxjX3dyaXRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbGVuKSB7CisgICAgdWludDMyX3QgKnRvdGFsX2xlbj1hcmc7CisgICAgKCp0b3RhbF9s
ZW4pKz1sZW47CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9zaXpl
X2F3YXJlX3JlYWRlcih2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBs
ZW4pIHsKKyAgICB0c2Zfc2l6ZV9hd2FyZV9yZHJfdCAqc2VsZj1hcmc7CisgICAgCisgICAgaWYg
KHNlbGYtPmxpbWl0PGxlbikgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VS
Uk9SLAorICAgICAgICAgICAgICAgICAgICAgICJPdmVycmFuIHNpemUgbGltaXQgZm9yICVzIixz
ZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
aWYgKCFzZWxmLT5yZWFkZXIoc2VsZi0+YXJnLGJ1ZixsZW4pKSB7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHNlbGYtPmxpbWl0LT1sZW47CisgICAgCisgICAg
cmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9idWZmZXJfb25seV93cml0ZXIo
dm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsK
KyAgICB1aW50OF90ICoqY3VyID0gYXJnOworICAgIG1lbWNweSgqY3VyLCBidWYsIGxlbik7Cisg
ICAgKCpjdXIpICs9IGxlbjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3Qg
dHNmX3Jlc2l6YWJsZV9idWZmZXJfd3JpdGVyKHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbikgeworICAgIHRzZl9yZXNpemFibGVf
YnVmZmVyX3QgKnJlc2l6YWJsZSA9IGFyZzsKKyAgICAKKyAgICBpZiAocmVzaXphYmxlLT5lbmQg
LSByZXNpemFibGUtPmN1ciA8IGxlbikgeworICAgICAgICBzaXplX3Qgb2xkX3NpemU7CisgICAg
ICAgIHNpemVfdCBuZXdfc2l6ZTsKKyAgICAgICAgdWludDhfdCAqbmV3X2Jhc2U7CisgICAgICAg
IAorICAgICAgICBvbGRfc2l6ZSA9IHJlc2l6YWJsZS0+ZW5kIC0gcmVzaXphYmxlLT5iYXNlOwor
ICAgICAgICBuZXdfc2l6ZSA9IChvbGRfc2l6ZSArIGxlbikgPDwgMTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChyZXNpemFibGUtPmJhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgbmV3X2Jhc2Ug
PSBtYWxsb2MobmV3X3NpemUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV3X2Jh
c2UgPSByZWFsbG9jKHJlc2l6YWJsZS0+YmFzZSwgbmV3X3NpemUpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAobmV3X2Jhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IG1hbGxvYyByZXNpemFibGUgYnVmZmVyIik7CisgICAgICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXNpemFi
bGUtPmVuZCA9IG5ld19iYXNlICsgbmV3X3NpemU7CisgICAgICAgIHJlc2l6YWJsZS0+Y3VyID0g
bmV3X2Jhc2UgKyAocmVzaXphYmxlLT5jdXIgLSByZXNpemFibGUtPmJhc2UpOworICAgICAgICBy
ZXNpemFibGUtPmJhc2UgPSBuZXdfYmFzZTsKKyAgICB9CisgICAgCisgICAgbWVtY3B5KHJlc2l6
YWJsZS0+Y3VyLCBidWYsIGxlbik7CisgICAgcmVzaXphYmxlLT5jdXIgKz0gbGVuOworICAgIHJl
dHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfYnVmZmVyX29ubHlfcmVhZGVyKHZv
aWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpidWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVuKSB7CisgICAgdHNm
X2xpZ2h0X2J1ZmZlcl90ICpzdGF0ZT1hcmc7CisgICAgaWYgKHN0YXRlLT5jdXIgPT0gc3RhdGUt
PmVuZCkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1VORVhQRUNURURfRU9GLAorICAg
ICAgICAgICAgICAgICAgICAgICJCdWZmZXIgaXMgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICB9CisgICAgaWYgKHN0YXRlLT5jdXIrbGVuID4gc3RhdGUtPmVuZCkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0VSUk9ORU9VU19FT0YsCisgICAgICAgICAgICAg
ICAgICAgICAgIkJ1ZmZlciBkb2VzIG5vdCBoYXZlIHJlcXVlc3RlZCBkYXRhIik7CisgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIG1lbWNweShidWYsc3RhdGUtPmN1cixsZW4p
OworICAgIHN0YXRlLT5jdXIrPWxlbjsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKKwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pb191dGlscy5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaW9f
dXRpbHMuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX2lvX3V0aWxzLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBG
SUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxP
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisKK2No
YXIgKnRzZl9yZWFkX3N0cmluZyh0c2ZfcmVhZGVyX3QgcmVhZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X3NpemUp
IHsKKyAgICB1aW50OF90IHVpOF90bXA7CisKKyAgICBjb25zdCBzaXplX3Qgc3RlcD0xMjg7Cisg
ICAgc2l6ZV90IHNpemU9c3RlcDsKKyAgICAKKyAgICB1aW50MzJfdCBpPTA7CisgICAgCisgICAg
Y2hhciAqc3RyPW1hbGxvYyhzaXplKTsKKyAgICAKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHVp
bnQzMl90IG47CisgICAgICAgIHRzZl9ib29sX3QgZG9uZT10c2ZfZmFsc2U7CisgICAgICAgIAor
ICAgICAgICBpZiAoc3RyPT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgKG18cmUpYWxsb2Mgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yIChuPXN0ZXA7bi0tPjA7KSB7CisgICAgICAg
ICAgICBpZiAoIXJlYWRlcihhcmcsJnVpOF90bXAsMSkpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cltpKytdPXVpOF90bXA7Cisg
ICAgICAgICAgICBpZiAodWk4X3RtcD09MCkgeworICAgICAgICAgICAgICAgIGRvbmU9dHNmX3Ry
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChkb25lKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgc2l6ZSs9c3RlcDsKKyAgICAgICAgaWYgKHNpemU+bWF4X3Np
emUpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJSZW1vdGUgZW5kIGF0dGVtcHRlZCB0byBzZW5kIGEgc3Ry
aW5nIHRoYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZWVkZWQgb3VyIGxpbWl0
IG9mICIgZnN6ICIuIixtYXhfc2l6ZSk7CisgICAgICAgICAgICBmcmVlKHN0cik7CisgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzdHI9cmVhbGxvYyhzdHIsc2l6
ZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBzdHI7Cit9CisKK3RzZl9ib29sX3QgdHNmX3dy
aXRlX3N0cmluZyh0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpz
dHIpIHsKKyAgICBjb25zdCBjaGFyICpjdXJfY2hhcj1zdHI7CisKKyAgICBkbyB7CisgICAgICAg
IGlmICghd3JpdGVyKGFyZywodm9pZCopY3VyX2NoYXIsMSkpIHsKKyAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9IHdoaWxlICgqY3VyX2NoYXIrKyk7CisgICAg
CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9mdWxsX3JlYWRfb2Zf
cGFydGlhbCh0c2ZfcGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisJCQkJICAgIHZvaWQgKmFyZywK
KwkJCQkgICAgdm9pZCAqX2RhdGEsCisJCQkJICAgIHVpbnQzMl90IGxlbikgeworICAgIHVpbnQ4
X3QgKmRhdGE9X2RhdGE7CisgICAgd2hpbGUgKGxlbj4wKSB7CisJaW50MzJfdCByZXM9cmVhZGVy
KGFyZyxkYXRhLGxlbik7CisJaWYgKHJlczwwKSB7CisJICAgIGlmICh0c2ZfZ2V0X2Vycm9yX2Nv
ZGUoKT09VFNGX0VfVU5FWFBFQ1RFRF9FT0YKKwkJJiYgZGF0YSE9X2RhdGEpIHsKKyAgICAgICAg
ICAgICAgICBjaGFyICpwcmV2aW91c19lcnJvciA9IHN0cmR1cCh0c2ZfZ2V0X2Vycm9yKCkpOwor
CQl0c2Zfc2V0X2Vycm9yKFRTRl9FX0VSUk9ORU9VU19FT0YsCisJCQkgICAgICAiRW5kLW9mLWZp
bGUgYWZ0ZXIgcGFydCBvZiBhIGZ1bGwgcmVhZDsgb3JpZ2luYWwgIgorCQkJICAgICAgImVycm9y
OiAlcyIsIHByZXZpb3VzX2Vycm9yKTsKKyAgICAgICAgICAgICAgICBmcmVlKHByZXZpb3VzX2Vy
cm9yKTsKKwkgICAgfQorCSAgICByZXR1cm4gdHNmX2ZhbHNlOworCX0KKwlkYXRhKz1yZXM7CisJ
bGVuLT1yZXM7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pci5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfaXIuYwkobm9uZXhpc3RlbnQp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyLmMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNDgxIEBACisvKiAuL3Rlc3RzL3N1aXRlcy90b3lpci90c2Zf
aXIuYyAtLSBnZW5lcmF0ZWQgYnkgdHNmX2RlZmluZSBmcm9tIC4vdGVzdHMvc3VpdGVzL3RveWly
L3RzZl9pci50ICovCisKKyNpbmNsdWRlICJ0c2ZfaXIuaCIKKyNpbmNsdWRlICJ0c2ZfZGVmaW5l
X2hlbHBlcnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCitzdGF0aWMgdHNmX3R5cGVfdCAqT3Bl
cmFuZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRz
Zl90eXBlX3QgKlR5cGVfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3N0YXRpYyB0c2ZfdHlwZV90ICpDb2RlT2Zmc2V0X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqVmFyaWFibGVEZWNsX19idWlsZF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqSW5z
dHJ1Y3Rpb25fX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRp
YyB0c2ZfdHlwZV90ICpEZWJ1Z0RhdGFfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9jZWR1cmVfX2J1aWxkX3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9jZWR1cmVEZWNs
X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5
cGVfdCAqUHJvY2VkdXJlRGVmbl9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOworc3RhdGljIHRzZl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19idWlsZF90eXBlKHZvaWQp
IFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqUHJvZ3JhbV9fYnVp
bGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3Qg
Kkluc3RydWN0aW9uX19tb3ZfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYWRkX19idWlsZF90eXBlKHZvaWQp
IFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25f
X2FsbG9jX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMg
dHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX3JldF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkluc3RydWN0aW9uX19qdW1wX19idWls
ZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAq
SW5zdHJ1Y3Rpb25fX2NhbGxfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fYnVpbGRfdHlw
ZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKmludGVn
ZXJfX2FycmF5X19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0
aWMgdHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9jZWR1cmVEZWZu
X192YXJpYWJsZXNfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0
YXRpYyB0c2ZfdHlwZV90ICpWYXJpYWJsZURlY2xfX2FycmF5X19idWlsZF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9f
Y29kZV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRz
Zl90eXBlX3QgKkluc3RydWN0aW9uX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2RlYnVnX19i
dWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVf
dCAqRGVidWdEYXRhX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOworc3RhdGljIHRzZl90eXBlX3QgKlByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUodm9p
ZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpQcm9ncmFtRWxl
bWVudF9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKwor
dHNmX3R5cGVfdCAqT3BlcmFuZF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAq
cmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FvZShUU0ZfVEtfSU5URUdFUik7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqVHlwZV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAg
dHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FvZShUU0ZfVEtfU1RSSU5HKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpDb2RlT2Zmc2V0X19idWlsZF90
eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYW9l
KFRTRl9US19JTlRFR0VSKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpW
YXJpYWJsZURlY2xfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9
IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9h
b2Uoc2l6ZW9mKFZhcmlhYmxlRGVjbF90KSwgKHZvaWQoKikodm9pZCopKVZhcmlhYmxlRGVjbF9f
ZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRf
ZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgInR5cGUiLCBUeXBlX19nZXRfdHlwZSwg
dHNmX29mZnNldG9mKFZhcmlhYmxlRGVjbF90LCB0eXBlKSk7CisgICAgdHNmX3N0cnVjdF90eXBl
X2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAibmFtZSIsIFRT
Rl9US19TVFJJTkcsIHRzZl9vZmZzZXRvZihWYXJpYWJsZURlY2xfdCwgbmFtZSkpOworICAgIHRz
Zl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiVmFyaWFibGVEZWNsIik7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2J1aWxkX3R5cGUodm9pZCkg
eworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9u
YXRpdmVfbWFwX2FvZSgmcmVzdWx0LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9u
X3QsIHZhbHVlKSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX3QsIHUpLCBzaXplb2YoSW5zdHJ1
Y3Rpb25fdCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX2FvZSgmcmVz
dWx0LCAibm9wIiwgVFNGX1RLX1ZPSUQpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJv
bV9jYWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0LCAibW92IiwgSW5zdHJ1Y3Rpb25fX21vdl9f
Z2V0X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRf
ZHVwX2FvZSgmcmVzdWx0LCAiYWRkIiwgSW5zdHJ1Y3Rpb25fX2FkZF9fZ2V0X3R5cGUpOworICAg
IHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0
LCAiYWxsb2MiLCBJbnN0cnVjdGlvbl9fYWxsb2NfX2dldF90eXBlKTsKKyAgICB0c2ZfY2hvaWNl
X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF9hb2UoJnJlc3VsdCwgInJldCIsIElu
c3RydWN0aW9uX19yZXRfX2dldF90eXBlKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zy
b21fY2FsbGJhY2tfYW5kX2R1cF9hb2UoJnJlc3VsdCwgImp1bXAiLCBJbnN0cnVjdGlvbl9fanVt
cF9fZ2V0X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19h
bmRfZHVwX2FvZSgmcmVzdWx0LCAiY2FsbCIsIEluc3RydWN0aW9uX19jYWxsX19nZXRfdHlwZSk7
CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfYW9lKCZy
ZXN1bHQsICJicmFuY2haZXJvIiwgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2dldF90eXBlKTsK
KyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkluc3RydWN0aW9uIik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX21vdl9fYnVpbGRf
dHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0
cnVjdF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplb2YoSW5zdHJ1Y3Rpb25fX21vdl90KSk7Cisg
ICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRp
dmVfbWFwX2FvZSgmcmVzdWx0LCAiZGVzdCIsIE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0
b2YoSW5zdHJ1Y3Rpb25fX21vdl90LCBkZXN0KSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVu
ZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAic3Jj
IiwgT3BlcmFuZF9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRvZihJbnN0cnVjdGlvbl9fbW92X3QsIHNy
YykpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiSW5zdHJ1Y3Rpb25fX21v
diIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19h
ZGRfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBl
X2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hb2Uoc2l6ZW9mKEluc3RydWN0aW9uX19h
ZGRfdCkpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVw
X3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRlc3QiLCBPcGVyYW5kX19nZXRfdHlwZSwg
dHNmX29mZnNldG9mKEluc3RydWN0aW9uX19hZGRfdCwgZGVzdCkpOworICAgIHRzZl9zdHJ1Y3Rf
dHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJl
c3VsdCwgInNyYyIsIE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoSW5zdHJ1Y3Rpb25f
X2FkZF90LCBzcmMpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkluc3Ry
dWN0aW9uX19hZGQiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpJbnN0
cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3Vs
dCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rv
cl9hb2Uoc2l6ZW9mKEluc3RydWN0aW9uX19hbGxvY190KSwgKHZvaWQoKikodm9pZCopKUluc3Ry
dWN0aW9uX19hbGxvY19fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJv
bV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgInR5cGUiLCBU
eXBlX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX19hbGxvY190LCB0eXBlKSk7
CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJJbnN0cnVjdGlvbl9fYWxsb2Mi
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fcmV0
X19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9j
cmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW9lKHNpemVvZihJbnN0cnVjdGlvbl9fcmV0
X3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93
aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJzcmMiLCBPcGVyYW5kX19nZXRfdHlwZSwgdHNm
X29mZnNldG9mKEluc3RydWN0aW9uX19yZXRfdCwgc3JjKSk7CisgICAgdHNmX3R5cGVfc2V0X25h
bWVfYW9lKCZyZXN1bHQsICJJbnN0cnVjdGlvbl9fcmV0Iik7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2p1bXBfX2J1aWxkX3R5cGUodm9pZCkgewor
ICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRp
dmVfc2l6ZV9hb2Uoc2l6ZW9mKEluc3RydWN0aW9uX19qdW1wX3QpKTsKKyAgICB0c2Zfc3RydWN0
X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZy
ZXN1bHQsICJ0YXJnZXQiLCBDb2RlT2Zmc2V0X19nZXRfdHlwZSwgdHNmX29mZnNldG9mKEluc3Ry
dWN0aW9uX19qdW1wX3QsIHRhcmdldCkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVz
dWx0LCAiSW5zdHJ1Y3Rpb25fX2p1bXAiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2Zf
dHlwZV90ICpJbnN0cnVjdGlvbl9fY2FsbF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5
cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2Fu
ZF9kZXN0cnVjdG9yX2FvZShzaXplb2YoSW5zdHJ1Y3Rpb25fX2NhbGxfdCksICh2b2lkKCopKHZv
aWQqKSlJbnN0cnVjdGlvbl9fY2FsbF9fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9h
cHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwg
ImRlc3QiLCBPcGVyYW5kX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX19jYWxs
X3QsIGRlc3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5k
X2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJjYWxsZWUiLCBPcGVyYW5kX19nZXRf
dHlwZSwgdHNmX29mZnNldG9mKEluc3RydWN0aW9uX19jYWxsX3QsIGNhbGxlZSkpOworICAgIHRz
Zl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21h
cF9hb2UoJnJlc3VsdCwgImFyZ3MiLCBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fZ2V0X3R5cGUs
IHRzZl9vZmZzZXRvZihJbnN0cnVjdGlvbl9fY2FsbF90LCBhcmdzKSk7CisgICAgdHNmX3R5cGVf
c2V0X25hbWVfYW9lKCZyZXN1bHQsICJJbnN0cnVjdGlvbl9fY2FsbCIpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKmludGVnZXJfX2FycmF5X19idWlsZF90eXBlKHZvaWQp
IHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJyYXlfYW9lKHRz
Zl90eXBlX2NyZWF0ZV9hb2UoVFNGX1RLX0lOVEVHRVIpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fYnVpbGRfdHlwZSh2b2lk
KSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRo
X25hdGl2ZV9zaXplX2FvZShzaXplb2YoSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCkpOworICAg
IHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZl
X21hcF9hb2UoJnJlc3VsdCwgInNyYyIsIE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2Yo
SW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCwgc3JjKSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2Fw
cGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAi
dGFyZ2V0IiwgQ29kZU9mZnNldF9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRvZihJbnN0cnVjdGlvbl9f
YnJhbmNoWmVyb190LCB0YXJnZXQpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3Vs
dCwgIkluc3RydWN0aW9uX19icmFuY2haZXJvIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dHNmX3R5cGVfdCAqRGVidWdEYXRhX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90
ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW5kX2Rl
c3RydWN0b3JfYW9lKHNpemVvZihEZWJ1Z0RhdGFfdCksICh2b2lkKCopKHZvaWQqKSlEZWJ1Z0Rh
dGFfX2Rlc3RydWN0KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRo
X25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJzdGFydE9mZnNldCIsIFRTRl9US19JTlRFR0VSLCB0
c2Zfb2Zmc2V0b2YoRGVidWdEYXRhX3QsIHN0YXJ0T2Zmc2V0KSk7CisgICAgdHNmX3N0cnVjdF90
eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAic3BhblNp
emUiLCBUU0ZfVEtfSU5URUdFUiwgdHNmX29mZnNldG9mKERlYnVnRGF0YV90LCBzcGFuU2l6ZSkp
OworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0aXZlX21hcF9h
b2UoJnJlc3VsdCwgImRhdGEiLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zmc2V0b2YoRGVidWdEYXRh
X3QsIGRhdGEpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRlYnVnRGF0
YSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2NlZHVyZV9fYnVp
bGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRl
X3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2FvZShzaXplb2YoUHJvY2Vk
dXJlX3QpLCAodm9pZCgqKSh2b2lkKikpUHJvY2VkdXJlX19kZXN0cnVjdCk7CisgICAgdHNmX3N0
cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAi
bmFtZSIsIFRTRl9US19TVFJJTkcsIHRzZl9vZmZzZXRvZihQcm9jZWR1cmVfdCwgbmFtZSkpOwor
ICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiUHJvY2VkdXJlIik7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVjbF9fYnVpbGRfdHlwZSh2
b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93
aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2FvZShzaXplb2YoUHJvY2VkdXJlRGVjbF90
KSwgKHZvaWQoKikodm9pZCopKVByb2NlZHVyZURlY2xfX2Rlc3RydWN0KTsKKyAgICB0c2Zfc3Ry
dWN0X3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJu
YW1lIiwgVFNGX1RLX1NUUklORywgdHNmX29mZnNldG9mKFByb2NlZHVyZURlY2xfdCwgbmFtZSkp
OworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiUHJvY2VkdXJlRGVjbCIpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2J1aWxk
X3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9z
dHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKFByb2NlZHVy
ZURlZm5fdCksICh2b2lkKCopKHZvaWQqKSlQcm9jZWR1cmVEZWZuX19kZXN0cnVjdCk7CisgICAg
dHNmX3N0cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVz
dWx0LCAibmFtZSIsIFRTRl9US19TVFJJTkcsIHRzZl9vZmZzZXRvZihQcm9jZWR1cmVEZWZuX3Qs
IG5hbWUpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1
cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJ2YXJpYWJsZXMiLCBQcm9jZWR1cmVEZWZu
X192YXJpYWJsZXNfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoUHJvY2VkdXJlRGVmbl90LCB2YXJp
YWJsZXMpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1
cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJjb2RlIiwgUHJvY2VkdXJlRGVmbl9fY29k
ZV9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRvZihQcm9jZWR1cmVEZWZuX3QsIGNvZGUpKTsKKyAgICB0
c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25hdGl2ZV9t
YXBfYW9lKCZyZXN1bHQsICJkZWJ1ZyIsIFByb2NlZHVyZURlZm5fX2RlYnVnX19nZXRfdHlwZSwg
dHNmX29mZnNldG9mKFByb2NlZHVyZURlZm5fdCwgZGVidWcpKTsKKyAgICB0c2ZfdHlwZV9zZXRf
bmFtZV9hb2UoJnJlc3VsdCwgIlByb2NlZHVyZURlZm4iKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0c2ZfdHlwZV90ICpWYXJpYWJsZURlY2xfX2FycmF5X19idWlsZF90eXBlKHZvaWQpIHsK
KyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJyYXlfYW9lKHRzZl90
eXBlX2R1cChWYXJpYWJsZURlY2xfX2dldF90eXBlKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgewor
ICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9hcnJheV9hb2UodHNmX3R5
cGVfZHVwKEluc3RydWN0aW9uX19nZXRfdHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordHNmX3R5cGVfdCAqRGVidWdEYXRhX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAg
dHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FycmF5X2FvZSh0c2ZfdHlwZV9k
dXAoRGVidWdEYXRhX19nZXRfdHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNm
X3R5cGVfdCAqUHJvZ3JhbUVsZW1lbnRfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBl
X3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgm
cmVzdWx0LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKFByb2dyYW1FbGVtZW50X3QsIHZhbHVlKSwg
dHNmX29mZnNldG9mKFByb2dyYW1FbGVtZW50X3QsIHUpLCBzaXplb2YoUHJvZ3JhbUVsZW1lbnRf
dCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2Fv
ZSgmcmVzdWx0LCAicHJvY2VkdXJlRGVjbCIsIFByb2NlZHVyZURlY2xfX2dldF90eXBlKTsKKyAg
ICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF9hb2UoJnJlc3Vs
dCwgInByb2NlZHVyZURlZm4iLCBQcm9jZWR1cmVEZWZuX19nZXRfdHlwZSk7CisgICAgdHNmX3R5
cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJQcm9ncmFtRWxlbWVudCIpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2dyYW1fX2J1aWxkX3R5cGUodm9pZCkgeworICAg
IHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVf
c2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKFByb2dyYW1fdCksICh2b2lkKCopKHZvaWQq
KSlQcm9ncmFtX19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2Nh
bGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAiZ2xvYmFscyIsIFBy
b2dyYW1fX2dsb2JhbHNfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoUHJvZ3JhbV90LCBnbG9iYWxz
KSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJQcm9ncmFtIik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19i
dWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVh
dGVfYXJyYXlfYW9lKHRzZl90eXBlX2R1cChQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUoKSkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19jYWxsX19h
cmdzX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlw
ZV9kdXAoaW50ZWdlcl9fYXJyYXlfX2dldF90eXBlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fYnVpbGRfdHlwZSh2b2lk
KSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfZHVwKFZhcmlhYmxlRGVjbF9f
YXJyYXlfX2dldF90eXBlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3Qg
KlByb2NlZHVyZURlZm5fX2NvZGVfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3Qg
KnJlc3VsdCA9IHRzZl90eXBlX2R1cChJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90eXBlKCkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2RlYnVn
X19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9k
dXAoRGVidWdEYXRhX19hcnJheV9fZ2V0X3R5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordHNmX3R5cGVfdCAqUHJvZ3JhbV9fZ2xvYmFsc19fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAg
dHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNmX3R5cGVfZHVwKFByb2dyYW1FbGVtZW50X19hcnJheV9f
Z2V0X3R5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHRzZl90eXBlX3Qg
KiB2b2xhdGlsZSBPcGVyYW5kX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2
b2xhdGlsZSBPcGVyYW5kX19nZW5ydHIgPSBOVUxMOworc3RhdGljIHRzZl9wYXJzZXJfdCAqIHZv
bGF0aWxlIE9wZXJhbmRfX3BhcnNlciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9Q
T0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgT3BlcmFuZF9fdHlwZV9fb2MgPSBQVEhSRUFE
X09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIE9wZXJhbmRfX3R5cGVfX2J1aWxkZXIodm9pZCkgewor
ICAgIE9wZXJhbmRfX3R5cGUgPSBPcGVyYW5kX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKk9wZXJhbmRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBPcGVy
YW5kX19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKk9wZXJhbmRfX2dldF90
eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRz
Zl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmT3BlcmFuZF9fdHlwZSwgT3BlcmFu
ZF9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmT3BlcmFuZF9fdHlw
ZV9fb2MsIE9wZXJhbmRfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBPcGVyYW5kX190eXBl
OworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgT3BlcmFuZF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3Rh
dGljIHZvaWQgT3BlcmFuZF9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBPcGVyYW5kX19n
ZW5ydHIgPSB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShPcGVyYW5kX19nZXRfdHlwZSgpKTsKK30KKyNl
bHNlCitzdGF0aWMgdm9pZCAqT3BlcmFuZF9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBy
ZXR1cm4gdHNmX2dlbmVyYXRvcl9jcmVhdGUoT3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5k
aWYKK3RzZl9nZW5ydHJfdCAqT3BlcmFuZF9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0
X3BvaW50ZXIoKHZvaWQqKikmT3BlcmFuZF9fZ2VucnRyLCBPcGVyYW5kX19nZW5ydHJfX2J1aWxk
ZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJk9wZXJhbmRfX2dlbnJ0cl9fb2MsIE9wZXJh
bmRfX2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIE9wZXJhbmRfX2dlbnJ0cjsKKyNlbmRp
ZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25j
ZV90IE9wZXJhbmRfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lk
IE9wZXJhbmRfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgT3BlcmFuZF9fcGFyc2VyID0g
dHNmX3BhcnNlcl9jcmVhdGUoT3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKk9wZXJhbmRfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9w
YXJzZXJfY3JlYXRlKE9wZXJhbmRfX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfcGFyc2Vy
X3QgKk9wZXJhbmRfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9J
TlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiop
Jk9wZXJhbmRfX3BhcnNlciwgT3BlcmFuZF9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAg
cHRocmVhZF9vbmNlKCZPcGVyYW5kX19wYXJzZXJfX29jLCBPcGVyYW5kX19wYXJzZXJfX2J1aWxk
ZXIpOworICAgIHJldHVybiBPcGVyYW5kX19wYXJzZXI7CisjZW5kaWYKK30KKwordHNmX2Jvb2xf
dCBPcGVyYW5kX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgT3BlcmFuZF90
ICpkYXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgT3BlcmFuZF9f
Z2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworT3BlcmFuZF90ICpPcGVyYW5kX19yZWFkKHRz
Zl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9y
ZWFkKGluLCBPcGVyYW5kX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IE9wZXJhbmRf
X3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIE9wZXJhbmRfdCAqcmVzdWx0
KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgT3BlcmFuZF9fZ2V0
X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIFR5
cGVfX3R5cGUgPSBOVUxMOworc3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIFR5cGVfX2dl
bnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgVHlwZV9fcGFyc2Vy
ID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBUeXBlX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQg
VHlwZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgVHlwZV9fdHlwZSA9IFR5cGVfX2J1aWxk
X3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqVHlwZV9fdHlwZV9fYnVpbGRlcih2b2lk
KSB7CisgICAgcmV0dXJuIFR5cGVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVf
dCAqVHlwZV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
ICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZUeXBlX190
eXBlLCBUeXBlX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZUeXBl
X190eXBlX19vYywgVHlwZV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFR5cGVfX3R5cGU7
CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhy
ZWFkX29uY2VfdCBUeXBlX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMg
dm9pZCBUeXBlX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIFR5cGVfX2dlbnJ0ciA9IHRz
Zl9nZW5lcmF0b3JfY3JlYXRlKFR5cGVfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2
b2lkICpUeXBlX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2VuZXJh
dG9yX2NyZWF0ZShUeXBlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpU
eXBlX19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
KyAgICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZUeXBl
X19nZW5ydHIsIFR5cGVfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25j
ZSgmVHlwZV9fZ2VucnRyX19vYywgVHlwZV9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4g
VHlwZV9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CitzdGF0aWMgcHRocmVhZF9vbmNlX3QgVHlwZV9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05DRV9J
TklUOworc3RhdGljIHZvaWQgVHlwZV9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBUeXBl
X19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShUeXBlX19nZXRfdHlwZSgpKTsKK30KKyNlbHNl
CitzdGF0aWMgdm9pZCAqVHlwZV9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4g
dHNmX3BhcnNlcl9jcmVhdGUoVHlwZV9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJz
ZXJfdCAqVHlwZV9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lO
VEVSCisgICAgcmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikm
VHlwZV9fcGFyc2VyLCBUeXBlX19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFk
X29uY2UoJlR5cGVfX3BhcnNlcl9fb2MsIFR5cGVfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0
dXJuIFR5cGVfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBUeXBlX19kZXN0cnVjdChUeXBlX3Qg
KmRhdGEpIHsKKyAgICBmcmVlKCpkYXRhKTsKK30KKwordHNmX2Jvb2xfdCBUeXBlX193cml0ZSh0
c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgVHlwZV90ICpkYXRhKSB7CisgICAgcmV0dXJu
IHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgVHlwZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsK
K30KKworVHlwZV90ICpUeXBlX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgewor
ICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBUeXBlX19nZXRfcGFyc2VyKCkpOwor
fQorCit0c2ZfYm9vbF90IFR5cGVfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAq
aW4sIFR5cGVfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50
byhpbiwgVHlwZV9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVf
dCAqIHZvbGF0aWxlIENvZGVPZmZzZXRfX3R5cGUgPSBOVUxMOworc3RhdGljIHRzZl9nZW5ydHJf
dCAqIHZvbGF0aWxlIENvZGVPZmZzZXRfX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNl
cl90ICogdm9sYXRpbGUgQ29kZU9mZnNldF9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBDb2RlT2Zmc2V0X190eXBl
X19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgQ29kZU9mZnNldF9fdHlwZV9f
YnVpbGRlcih2b2lkKSB7CisgICAgQ29kZU9mZnNldF9fdHlwZSA9IENvZGVPZmZzZXRfX2J1aWxk
X3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgcmV0dXJuIENvZGVPZmZzZXRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRp
ZgordHNmX3R5cGVfdCAqQ29kZU9mZnNldF9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9I
QVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRl
cigodm9pZCoqKSZDb2RlT2Zmc2V0X190eXBlLCBDb2RlT2Zmc2V0X190eXBlX19idWlsZGVyKTsK
KyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZDb2RlT2Zmc2V0X190eXBlX19vYywgQ29kZU9mZnNl
dF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIENvZGVPZmZzZXRfX3R5cGU7CisjZW5kaWYK
K30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2Vf
dCBDb2RlT2Zmc2V0X19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9p
ZCBDb2RlT2Zmc2V0X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIENvZGVPZmZzZXRfX2dl
bnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKENvZGVPZmZzZXRfX2dldF90eXBlKCkpOworfQor
I2Vsc2UKK3N0YXRpYyB2b2lkICpDb2RlT2Zmc2V0X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShDb2RlT2Zmc2V0X19nZXRfdHlwZSgpKTsK
K30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpDb2RlT2Zmc2V0X19nZXRfZ2VuZXJhdG9yKHZvaWQp
IHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5ydHJf
dCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZDb2RlT2Zmc2V0X19nZW5ydHIsIENvZGVPZmZz
ZXRfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmQ29kZU9mZnNl
dF9fZ2VucnRyX19vYywgQ29kZU9mZnNldF9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4g
Q29kZU9mZnNldF9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9Q
T0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgQ29kZU9mZnNldF9fcGFyc2VyX19vYyA9IFBU
SFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgQ29kZU9mZnNldF9fcGFyc2VyX19idWlsZGVy
KHZvaWQpIHsKKyAgICBDb2RlT2Zmc2V0X19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShDb2Rl
T2Zmc2V0X19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqQ29kZU9mZnNldF9f
cGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoQ29k
ZU9mZnNldF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqQ29kZU9mZnNl
dF9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAg
cmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmQ29kZU9mZnNl
dF9fcGFyc2VyLCBDb2RlT2Zmc2V0X19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhy
ZWFkX29uY2UoJkNvZGVPZmZzZXRfX3BhcnNlcl9fb2MsIENvZGVPZmZzZXRfX3BhcnNlcl9fYnVp
bGRlcik7CisgICAgcmV0dXJuIENvZGVPZmZzZXRfX3BhcnNlcjsKKyNlbmRpZgorfQorCit0c2Zf
Ym9vbF90IENvZGVPZmZzZXRfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBD
b2RlT2Zmc2V0X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfd3JpdGUob3V0
LCBDb2RlT2Zmc2V0X19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitDb2RlT2Zmc2V0X3Qg
KkNvZGVPZmZzZXRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluKSB7CisgICAgcmV0
dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIENvZGVPZmZzZXRfX2dldF9wYXJzZXIoKSk7Cit9
CisKK3RzZl9ib29sX3QgQ29kZU9mZnNldF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1
dF90ICppbiwgQ29kZU9mZnNldF90ICpyZXN1bHQpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2Rh
dGFfcmVhZF9pbnRvKGluLCBDb2RlT2Zmc2V0X19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisK
K3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgVmFyaWFibGVEZWNsX190eXBlID0gTlVMTDsK
K3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGlsZSBWYXJpYWJsZURlY2xfX2dlbnJ0ciA9IE5V
TEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgVmFyaWFibGVEZWNsX19wYXJzZXIg
PSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRf
b25jZV90IFZhcmlhYmxlRGVjbF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRp
YyB2b2lkIFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgVmFyaWFibGVE
ZWNsX190eXBlID0gVmFyaWFibGVEZWNsX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKlZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFZh
cmlhYmxlRGVjbF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpWYXJpYWJs
ZURlY2xfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAg
ICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmVmFyaWFibGVE
ZWNsX190eXBlLCBWYXJpYWJsZURlY2xfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhy
ZWFkX29uY2UoJlZhcmlhYmxlRGVjbF9fdHlwZV9fb2MsIFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVp
bGRlcik7CisgICAgcmV0dXJuIFZhcmlhYmxlRGVjbF9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZu
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFZhcmlhYmxl
RGVjbF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgVmFyaWFi
bGVEZWNsX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIFZhcmlhYmxlRGVjbF9fZ2VucnRy
ID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUoVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNl
bHNlCitzdGF0aWMgdm9pZCAqVmFyaWFibGVEZWNsX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShWYXJpYWJsZURlY2xfX2dldF90eXBlKCkp
OworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKlZhcmlhYmxlRGVjbF9fZ2V0X2dlbmVyYXRvcih2
b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2Vu
cnRyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmVmFyaWFibGVEZWNsX19nZW5ydHIsIFZh
cmlhYmxlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZW
YXJpYWJsZURlY2xfX2dlbnJ0cl9fb2MsIFZhcmlhYmxlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsK
KyAgICByZXR1cm4gVmFyaWFibGVEZWNsX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBWYXJpYWJsZURlY2xf
X3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFZhcmlhYmxlRGVj
bF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBWYXJpYWJsZURlY2xfX3BhcnNlciA9IHRz
Zl9wYXJzZXJfY3JlYXRlKFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKlZhcmlhYmxlRGVjbF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1
cm4gdHNmX3BhcnNlcl9jcmVhdGUoVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNlbmRp
ZgordHNmX3BhcnNlcl90ICpWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5p
dF9wb2ludGVyKCh2b2lkKiopJlZhcmlhYmxlRGVjbF9fcGFyc2VyLCBWYXJpYWJsZURlY2xfX3Bh
cnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmVmFyaWFibGVEZWNsX19w
YXJzZXJfX29jLCBWYXJpYWJsZURlY2xfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIFZh
cmlhYmxlRGVjbF9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lkIFZhcmlhYmxlRGVjbF9fZGVzdHJ1
Y3QoVmFyaWFibGVEZWNsX3QgKmRhdGEpIHsKKyAgICBUeXBlX19kZXN0cnVjdCgmZGF0YS0+dHlw
ZSk7CisgICAgZnJlZSgqJmRhdGEtPm5hbWUpOworfQorCit0c2ZfYm9vbF90IFZhcmlhYmxlRGVj
bF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFZhcmlhYmxlRGVjbF90ICpk
YXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgVmFyaWFibGVEZWNs
X19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitWYXJpYWJsZURlY2xfdCAqVmFyaWFibGVE
ZWNsX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2Zf
dHlwZWRfZGF0YV9yZWFkKGluLCBWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSk7Cit9CisKK3Rz
Zl9ib29sX3QgVmFyaWFibGVEZWNsX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmluLCBWYXJpYWJsZURlY2xfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRh
X3JlYWRfaW50byhpbiwgVmFyaWFibGVEZWNsX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisK
K3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgSW5zdHJ1Y3Rpb25fX3R5cGUgPSBOVUxMOwor
c3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19nZW5ydHIgPSBOVUxM
Oworc3RhdGljIHRzZl9wYXJzZXJfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19wYXJzZXIgPSBO
VUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25j
ZV90IEluc3RydWN0aW9uX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZv
aWQgSW5zdHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX190
eXBlID0gSW5zdHJ1Y3Rpb25fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAq
SW5zdHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBJbnN0cnVjdGlv
bl9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fZ2V0
X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAo
dHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9fdHlwZSwg
SW5zdHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJklu
c3RydWN0aW9uX190eXBlX19vYywgSW5zdHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIpOworICAgIHJl
dHVybiBJbnN0cnVjdGlvbl9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lO
SVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19nZW5ydHJfX29j
ID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBJbnN0cnVjdGlvbl9fZ2VucnRyX19i
dWlsZGVyKHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9j
cmVhdGUoSW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpJ
bnN0cnVjdGlvbl9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2dlbmVy
YXRvcl9jcmVhdGUoSW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfZ2Vu
cnRyX3QgKkluc3RydWN0aW9uX19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRl
cigodm9pZCoqKSZJbnN0cnVjdGlvbl9fZ2VucnRyLCBJbnN0cnVjdGlvbl9fZ2VucnRyX19idWls
ZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZJbnN0cnVjdGlvbl9fZ2VucnRyX19vYywg
SW5zdHJ1Y3Rpb25fX2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIEluc3RydWN0aW9uX19n
ZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCBJbnN0cnVjdGlvbl9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05DRV9J
TklUOworc3RhdGljIHZvaWQgSW5zdHJ1Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgSW5zdHJ1Y3Rpb25fX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKEluc3RydWN0aW9uX19n
ZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqSW5zdHJ1Y3Rpb25fX3BhcnNlcl9f
YnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9wYXJzZXJfY3JlYXRlKEluc3RydWN0aW9u
X19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpJbnN0cnVjdGlvbl9fZ2V0
X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJu
ICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25fX3Bh
cnNlciwgSW5zdHJ1Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRf
b25jZSgmSW5zdHJ1Y3Rpb25fX3BhcnNlcl9fb2MsIEluc3RydWN0aW9uX19wYXJzZXJfX2J1aWxk
ZXIpOworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lkIElu
c3RydWN0aW9uX19kZXN0cnVjdChJbnN0cnVjdGlvbl90ICpkYXRhKSB7CisgICAgc3dpdGNoIChk
YXRhLT52YWx1ZSkgeworICAgIGNhc2UgMzoKKyAgICAgICAgSW5zdHJ1Y3Rpb25fX2FsbG9jX19k
ZXN0cnVjdCgmZGF0YS0+dS5hbGxvYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNjoKKyAg
ICAgICAgSW5zdHJ1Y3Rpb25fX2NhbGxfX2Rlc3RydWN0KCZkYXRhLT51LmNhbGwpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RzZl9i
b29sX3QgSW5zdHJ1Y3Rpb25fX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBJ
bnN0cnVjdGlvbl90ICpkYXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91
dCwgSW5zdHJ1Y3Rpb25fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK0luc3RydWN0aW9u
X3QgKkluc3RydWN0aW9uX19yZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAg
IHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigp
KTsKK30KKwordHNmX2Jvb2xfdCBJbnN0cnVjdGlvbl9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmls
ZV9pbnB1dF90ICppbiwgSW5zdHJ1Y3Rpb25fdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90
eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgSW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSwgcmVzdWx0
KTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEZWJ1Z0RhdGFfX3R5cGUgPSBO
VUxMOworc3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIERlYnVnRGF0YV9fZ2VucnRyID0g
TlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSBEZWJ1Z0RhdGFfX3BhcnNlciA9
IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9v
bmNlX3QgRGVidWdEYXRhX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZv
aWQgRGVidWdEYXRhX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEZWJ1Z0RhdGFfX3R5cGUg
PSBEZWJ1Z0RhdGFfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRGVidWdE
YXRhX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRGVidWdEYXRhX19idWlsZF90
eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRlYnVnRGF0YV9fZ2V0X3R5cGUodm9pZCkg
eworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCop
dHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEZWJ1Z0RhdGFfX3R5cGUsIERlYnVnRGF0YV9fdHlw
ZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRGVidWdEYXRhX190eXBlX19v
YywgRGVidWdEYXRhX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRGVidWdEYXRhX190eXBl
OworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgRGVidWdEYXRhX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7Citz
dGF0aWMgdm9pZCBEZWJ1Z0RhdGFfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRGVidWdE
YXRhX19nZW5ydHIgPSB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShEZWJ1Z0RhdGFfX2dldF90eXBlKCkp
OworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEZWJ1Z0RhdGFfX2dlbnJ0cl9fYnVpbGRlcih2b2lk
KSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERlYnVnRGF0YV9fZ2V0X3R5cGUo
KSk7Cit9CisjZW5kaWYKK3RzZl9nZW5ydHJfdCAqRGVidWdEYXRhX19nZXRfZ2VuZXJhdG9yKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5y
dHJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEZWJ1Z0RhdGFfX2dlbnJ0ciwgRGVidWdE
YXRhX19nZW5ydHJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRlYnVnRGF0
YV9fZ2VucnRyX19vYywgRGVidWdEYXRhX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBE
ZWJ1Z0RhdGFfX2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9J
TlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERlYnVnRGF0YV9fcGFyc2VyX19vYyA9IFBUSFJF
QURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRGVidWdEYXRhX19wYXJzZXJfX2J1aWxkZXIodm9p
ZCkgeworICAgIERlYnVnRGF0YV9fcGFyc2VyID0gdHNmX3BhcnNlcl9jcmVhdGUoRGVidWdEYXRh
X19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRGVidWdEYXRhX19wYXJzZXJf
X2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShEZWJ1Z0RhdGFf
X2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKkRlYnVnRGF0YV9fZ2V0X3Bh
cnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0
c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRGVidWdEYXRhX19wYXJzZXIs
IERlYnVnRGF0YV9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZE
ZWJ1Z0RhdGFfX3BhcnNlcl9fb2MsIERlYnVnRGF0YV9fcGFyc2VyX19idWlsZGVyKTsKKyAgICBy
ZXR1cm4gRGVidWdEYXRhX19wYXJzZXI7CisjZW5kaWYKK30KK3ZvaWQgRGVidWdEYXRhX19kZXN0
cnVjdChEZWJ1Z0RhdGFfdCAqZGF0YSkgeworICAgIGZyZWUoKiZkYXRhLT5kYXRhKTsKK30KKwor
dHNmX2Jvb2xfdCBEZWJ1Z0RhdGFfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0
LCBEZWJ1Z0RhdGFfdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV93cml0ZShv
dXQsIERlYnVnRGF0YV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworRGVidWdEYXRhX3Qg
KkRlYnVnRGF0YV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1
cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRGVidWdEYXRhX19nZXRfcGFyc2VyKCkpOworfQor
Cit0c2ZfYm9vbF90IERlYnVnRGF0YV9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90
ICppbiwgRGVidWdEYXRhX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9y
ZWFkX2ludG8oaW4sIERlYnVnRGF0YV9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0
aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIFByb2NlZHVyZV9fdHlwZSA9IE5VTEw7CitzdGF0aWMg
dHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgUHJvY2VkdXJlX19nZW5ydHIgPSBOVUxMOworc3RhdGlj
IHRzZl9wYXJzZXJfdCAqIHZvbGF0aWxlIFByb2NlZHVyZV9fcGFyc2VyID0gTlVMTDsKKworI2lm
bmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9jZWR1
cmVfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9jZWR1cmVf
X3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIFByb2NlZHVyZV9fdHlwZSA9IFByb2NlZHVyZV9f
YnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVfX3R5cGVfX2J1
aWxkZXIodm9pZCkgeworICAgIHJldHVybiBQcm9jZWR1cmVfX2J1aWxkX3R5cGUoKTsKK30KKyNl
bmRpZgordHNmX3R5cGVfdCAqUHJvY2VkdXJlX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJlByb2NlZHVyZV9fdHlwZSwgUHJvY2VkdXJlX190eXBlX19idWlsZGVyKTsK
KyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZQcm9jZWR1cmVfX3R5cGVfX29jLCBQcm9jZWR1cmVf
X3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBQcm9jZWR1cmVfX3R5cGU7CisjZW5kaWYKK30K
KworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQ
cm9jZWR1cmVfX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFBy
b2NlZHVyZV9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1cmVfX2dlbnJ0ciA9
IHRzZl9nZW5lcmF0b3JfY3JlYXRlKFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQor
c3RhdGljIHZvaWQgKlByb2NlZHVyZV9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1
cm4gdHNmX2dlbmVyYXRvcl9jcmVhdGUoUHJvY2VkdXJlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRp
ZgordHNmX2dlbnJ0cl90ICpQcm9jZWR1cmVfX2dldF9nZW5lcmF0b3Iodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0cl90Kil0c2ZfaW5p
dF9wb2ludGVyKCh2b2lkKiopJlByb2NlZHVyZV9fZ2VucnRyLCBQcm9jZWR1cmVfX2dlbnJ0cl9f
YnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvY2VkdXJlX19nZW5ydHJfX29j
LCBQcm9jZWR1cmVfX2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZV9fZ2Vu
cnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMg
cHRocmVhZF9vbmNlX3QgUHJvY2VkdXJlX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7
CitzdGF0aWMgdm9pZCBQcm9jZWR1cmVfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJv
Y2VkdXJlX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9jZWR1cmVfX2dldF90eXBlKCkp
OworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVfX3BhcnNlcl9fYnVpbGRlcih2b2lk
KSB7CisgICAgcmV0dXJuIHRzZl9wYXJzZXJfY3JlYXRlKFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7
Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJlX19nZXRfcGFyc2VyKHZvaWQpIHsK
KyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCop
dHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1cmVfX3BhcnNlciwgUHJvY2VkdXJlX19w
YXJzZXJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJlByb2NlZHVyZV9fcGFy
c2VyX19vYywgUHJvY2VkdXJlX19wYXJzZXJfX2J1aWxkZXIpOworICAgIHJldHVybiBQcm9jZWR1
cmVfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBQcm9jZWR1cmVfX2Rlc3RydWN0KFByb2NlZHVy
ZV90ICpkYXRhKSB7CisgICAgZnJlZSgqJmRhdGEtPm5hbWUpOworfQorCit0c2ZfYm9vbF90IFBy
b2NlZHVyZV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFByb2NlZHVyZV90
ICpkYXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgUHJvY2VkdXJl
X19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitQcm9jZWR1cmVfdCAqUHJvY2VkdXJlX19y
ZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRf
ZGF0YV9yZWFkKGluLCBQcm9jZWR1cmVfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3Qg
UHJvY2VkdXJlX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluLCBQcm9jZWR1
cmVfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwg
UHJvY2VkdXJlX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90
ICogdm9sYXRpbGUgUHJvY2VkdXJlRGVjbF9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNmX2dlbnJ0
cl90ICogdm9sYXRpbGUgUHJvY2VkdXJlRGVjbF9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2Zf
cGFyc2VyX3QgKiB2b2xhdGlsZSBQcm9jZWR1cmVEZWNsX19wYXJzZXIgPSBOVUxMOworCisjaWZu
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2NlZHVy
ZURlY2xfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9jZWR1
cmVEZWNsX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1cmVEZWNsX190eXBlID0g
UHJvY2VkdXJlRGVjbF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9j
ZWR1cmVEZWNsX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVj
bF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpQcm9jZWR1cmVEZWNsX19n
ZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJu
ICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2NlZHVyZURlY2xfX3R5
cGUsIFByb2NlZHVyZURlY2xfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29u
Y2UoJlByb2NlZHVyZURlY2xfX3R5cGVfX29jLCBQcm9jZWR1cmVEZWNsX190eXBlX19idWlsZGVy
KTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVjbF9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2NlZHVyZURl
Y2xfX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2NlZHVy
ZURlY2xfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJvY2VkdXJlRGVjbF9fZ2VucnRy
ID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUoUHJvY2VkdXJlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9Cisj
ZWxzZQorc3RhdGljIHZvaWQgKlByb2NlZHVyZURlY2xfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKFByb2NlZHVyZURlY2xfX2dldF90eXBl
KCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKlByb2NlZHVyZURlY2xfX2dldF9nZW5lcmF0
b3Iodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNm
X2dlbnJ0cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2NlZHVyZURlY2xfX2dlbnJ0
ciwgUHJvY2VkdXJlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9v
bmNlKCZQcm9jZWR1cmVEZWNsX19nZW5ydHJfX29jLCBQcm9jZWR1cmVEZWNsX19nZW5ydHJfX2J1
aWxkZXIpOworICAgIHJldHVybiBQcm9jZWR1cmVEZWNsX19nZW5ydHI7CisjZW5kaWYKK30KKwor
I2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9j
ZWR1cmVEZWNsX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQ
cm9jZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIFByb2NlZHVyZURlY2xf
X3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKFByb2NlZHVyZURlY2xfX2dldF90eXBlKCkpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIodm9p
ZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9jZWR1cmVEZWNsX19nZXRfdHlw
ZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2Vy
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9w
YXJzZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1cmVEZWNsX19wYXJzZXIs
IFByb2NlZHVyZURlY2xfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25j
ZSgmUHJvY2VkdXJlRGVjbF9fcGFyc2VyX19vYywgUHJvY2VkdXJlRGVjbF9fcGFyc2VyX19idWls
ZGVyKTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVjbF9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lk
IFByb2NlZHVyZURlY2xfX2Rlc3RydWN0KFByb2NlZHVyZURlY2xfdCAqZGF0YSkgeworICAgIGZy
ZWUoKiZkYXRhLT5uYW1lKTsKK30KKwordHNmX2Jvb2xfdCBQcm9jZWR1cmVEZWNsX193cml0ZSh0
c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgUHJvY2VkdXJlRGVjbF90ICpkYXRhKSB7Cisg
ICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgUHJvY2VkdXJlRGVjbF9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhKTsKK30KKworUHJvY2VkdXJlRGVjbF90ICpQcm9jZWR1cmVEZWNsX19y
ZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRf
ZGF0YV9yZWFkKGluLCBQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9v
bF90IFByb2NlZHVyZURlY2xfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4s
IFByb2NlZHVyZURlY2xfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3Jl
YWRfaW50byhpbiwgUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitz
dGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIFByb2NlZHVyZURlZm5fX3R5cGUgPSBOVUxMOwor
c3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIFByb2NlZHVyZURlZm5fX2dlbnJ0ciA9IE5V
TEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgUHJvY2VkdXJlRGVmbl9fcGFyc2Vy
ID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBQcm9jZWR1cmVEZWZuX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3Rh
dGljIHZvaWQgUHJvY2VkdXJlRGVmbl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJvY2Vk
dXJlRGVmbl9fdHlwZSA9IFByb2NlZHVyZURlZm5fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitz
dGF0aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0
dXJuIFByb2NlZHVyZURlZm5fX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAq
UHJvY2VkdXJlRGVmbl9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9J
TlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQ
cm9jZWR1cmVEZWZuX190eXBlLCBQcm9jZWR1cmVEZWZuX190eXBlX19idWlsZGVyKTsKKyNlbHNl
CisgICAgcHRocmVhZF9vbmNlKCZQcm9jZWR1cmVEZWZuX190eXBlX19vYywgUHJvY2VkdXJlRGVm
bl9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX3R5cGU7CisjZW5k
aWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29u
Y2VfdCBQcm9jZWR1cmVEZWZuX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0
aWMgdm9pZCBQcm9jZWR1cmVEZWZuX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIFByb2Nl
ZHVyZURlZm5fX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKFByb2NlZHVyZURlZm5fX2dl
dF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9jZWR1cmVEZWZuX19nZW5ydHJf
X2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShQcm9jZWR1
cmVEZWZuX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpQcm9jZWR1cmVE
ZWZuX19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
KyAgICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9j
ZWR1cmVEZWZuX19nZW5ydHIsIFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxz
ZQorICAgIHB0aHJlYWRfb25jZSgmUHJvY2VkdXJlRGVmbl9fZ2VucnRyX19vYywgUHJvY2VkdXJl
RGVmbl9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fZ2VucnRy
OworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgUHJvY2VkdXJlRGVmbl9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05DRV9JTklU
Oworc3RhdGljIHZvaWQgUHJvY2VkdXJlRGVmbl9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAg
ICBQcm9jZWR1cmVEZWZuX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9jZWR1cmVEZWZu
X19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fcGFy
c2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoUHJvY2Vk
dXJlRGVmbl9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJl
RGVmbl9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisg
ICAgcmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmUHJvY2Vk
dXJlRGVmbl9fcGFyc2VyLCBQcm9jZWR1cmVEZWZuX19wYXJzZXJfX2J1aWxkZXIpOworI2Vsc2UK
KyAgICBwdGhyZWFkX29uY2UoJlByb2NlZHVyZURlZm5fX3BhcnNlcl9fb2MsIFByb2NlZHVyZURl
Zm5fX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX3BhcnNlcjsK
KyNlbmRpZgorfQordm9pZCBQcm9jZWR1cmVEZWZuX19kZXN0cnVjdChQcm9jZWR1cmVEZWZuX3Qg
KmRhdGEpIHsKKyAgICBmcmVlKComZGF0YS0+bmFtZSk7CisgICAgUHJvY2VkdXJlRGVmbl9fdmFy
aWFibGVzX19kZXN0cnVjdCgmZGF0YS0+dmFyaWFibGVzKTsKKyAgICBQcm9jZWR1cmVEZWZuX19j
b2RlX19kZXN0cnVjdCgmZGF0YS0+Y29kZSk7CisgICAgUHJvY2VkdXJlRGVmbl9fZGVidWdfX2Rl
c3RydWN0KCZkYXRhLT5kZWJ1Zyk7Cit9CisKK3RzZl9ib29sX3QgUHJvY2VkdXJlRGVmbl9fd3Jp
dGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFByb2NlZHVyZURlZm5fdCAqZGF0YSkg
eworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV93cml0ZShvdXQsIFByb2NlZHVyZURlZm5fX2dl
dF9nZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK1Byb2NlZHVyZURlZm5fdCAqUHJvY2VkdXJlRGVm
bl9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5
cGVkX2RhdGFfcmVhZChpbiwgUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcigpKTsKK30KKwordHNm
X2Jvb2xfdCBQcm9jZWR1cmVEZWZuX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmluLCBQcm9jZWR1cmVEZWZuX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV9yZWFkX2ludG8oaW4sIFByb2NlZHVyZURlZm5fX2dldF9wYXJzZXIoKSwgcmVzdWx0KTsKK30K
Kworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBQcm9ncmFtRWxlbWVudF9fdHlwZSA9IE5V
TEw7CitzdGF0aWMgdHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0
ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgUHJvZ3JhbUVsZW1lbnRf
X3BhcnNlciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMg
cHRocmVhZF9vbmNlX3QgUHJvZ3JhbUVsZW1lbnRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lO
SVQ7CitzdGF0aWMgdm9pZCBQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgUHJvZ3JhbUVsZW1lbnRfX3R5cGUgPSBQcm9ncmFtRWxlbWVudF9fYnVpbGRfdHlwZSgpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lk
KSB7CisgICAgcmV0dXJuIFByb2dyYW1FbGVtZW50X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYK
K3RzZl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2lu
dGVyKCh2b2lkKiopJlByb2dyYW1FbGVtZW50X190eXBlLCBQcm9ncmFtRWxlbWVudF9fdHlwZV9f
YnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvZ3JhbUVsZW1lbnRfX3R5cGVf
X29jLCBQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2dyYW1F
bGVtZW50X190eXBlOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CitzdGF0aWMgcHRocmVhZF9vbmNlX3QgUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0cl9fb2MgPSBQVEhS
RUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxk
ZXIodm9pZCkgeworICAgIFByb2dyYW1FbGVtZW50X19nZW5ydHIgPSB0c2ZfZ2VuZXJhdG9yX2Ny
ZWF0ZShQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQg
KlByb2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2Zf
Z2VuZXJhdG9yX2NyZWF0ZShQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYK
K3RzZl9nZW5ydHJfdCAqUHJvZ3JhbUVsZW1lbnRfX2dldF9nZW5lcmF0b3Iodm9pZCkgeworI2lm
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0cl90Kil0c2Zf
aW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2dyYW1FbGVtZW50X19nZW5ydHIsIFByb2dyYW1FbGVt
ZW50X19nZW5ydHJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJlByb2dyYW1F
bGVtZW50X19nZW5ydHJfX29jLCBQcm9ncmFtRWxlbWVudF9fZ2VucnRyX19idWlsZGVyKTsKKyAg
ICByZXR1cm4gUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1FbGVtZW50
X19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9ncmFtRWxl
bWVudF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9ncmFtRWxlbWVudF9fcGFyc2Vy
ID0gdHNmX3BhcnNlcl9jcmVhdGUoUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOworfQorI2Vs
c2UKK3N0YXRpYyB2b2lkICpQcm9ncmFtRWxlbWVudF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsK
KyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkp
OworfQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKlByb2dyYW1FbGVtZW50X19nZXRfcGFyc2VyKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJz
ZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9ncmFtRWxlbWVudF9fcGFyc2VyLCBQ
cm9ncmFtRWxlbWVudF9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNl
KCZQcm9ncmFtRWxlbWVudF9fcGFyc2VyX19vYywgUHJvZ3JhbUVsZW1lbnRfX3BhcnNlcl9fYnVp
bGRlcik7CisgICAgcmV0dXJuIFByb2dyYW1FbGVtZW50X19wYXJzZXI7CisjZW5kaWYKK30KK3Zv
aWQgUHJvZ3JhbUVsZW1lbnRfX2Rlc3RydWN0KFByb2dyYW1FbGVtZW50X3QgKmRhdGEpIHsKKyAg
ICBzd2l0Y2ggKGRhdGEtPnZhbHVlKSB7CisgICAgY2FzZSAwOgorICAgICAgICBQcm9jZWR1cmVE
ZWNsX19kZXN0cnVjdCgmZGF0YS0+dS5wcm9jZWR1cmVEZWNsKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAxOgorICAgICAgICBQcm9jZWR1cmVEZWZuX19kZXN0cnVjdCgmZGF0YS0+dS5wcm9j
ZWR1cmVEZWZuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit0c2ZfYm9vbF90IFByb2dyYW1FbGVtZW50X193cml0ZSh0c2Zfc3RyZWFt
X2ZpbGVfb3V0cHV0X3QgKm91dCwgUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YSkgeworICAgIHJldHVy
biB0c2ZfdHlwZWRfZGF0YV93cml0ZShvdXQsIFByb2dyYW1FbGVtZW50X19nZXRfZ2VuZXJhdG9y
KCksIGRhdGEpOworfQorCitQcm9ncmFtRWxlbWVudF90ICpQcm9ncmFtRWxlbWVudF9fcmVhZCh0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFf
cmVhZChpbiwgUHJvZ3JhbUVsZW1lbnRfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3Qg
UHJvZ3JhbUVsZW1lbnRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIFBy
b2dyYW1FbGVtZW50X3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFk
X2ludG8oaW4sIFByb2dyYW1FbGVtZW50X19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0
YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgUHJvZ3JhbV9fdHlwZSA9IE5VTEw7CitzdGF0aWMg
dHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgUHJvZ3JhbV9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0
c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSBQcm9ncmFtX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1fX3R5
cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBQcm9ncmFtX190eXBlX19i
dWlsZGVyKHZvaWQpIHsKKyAgICBQcm9ncmFtX190eXBlID0gUHJvZ3JhbV9fYnVpbGRfdHlwZSgp
OworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9ncmFtX190eXBlX19idWlsZGVyKHZvaWQpIHsK
KyAgICByZXR1cm4gUHJvZ3JhbV9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90
ICpQcm9ncmFtX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2dy
YW1fX3R5cGUsIFByb2dyYW1fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29u
Y2UoJlByb2dyYW1fX3R5cGVfX29jLCBQcm9ncmFtX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1
cm4gUHJvZ3JhbV9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9J
TlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1fX2dlbnJ0cl9fb2MgPSBQVEhSRUFE
X09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFByb2dyYW1fX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7
CisgICAgUHJvZ3JhbV9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUoUHJvZ3JhbV9fZ2V0
X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKlByb2dyYW1fX2dlbnJ0cl9fYnVpbGRl
cih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKFByb2dyYW1fX2dldF90
eXBlKCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKlByb2dyYW1fX2dldF9nZW5lcmF0b3Io
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dl
bnJ0cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJlByb2dyYW1fX2dlbnJ0ciwgUHJvZ3Jh
bV9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZQcm9ncmFtX19n
ZW5ydHJfX29jLCBQcm9ncmFtX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBQcm9ncmFt
X19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0
YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9ncmFtX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNFX0lO
SVQ7CitzdGF0aWMgdm9pZCBQcm9ncmFtX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIFBy
b2dyYW1fX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKFByb2dyYW1fX2dldF90eXBlKCkpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpQcm9ncmFtX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShQcm9ncmFtX19nZXRfdHlwZSgpKTsKK30KKyNl
bmRpZgordHNmX3BhcnNlcl90ICpQcm9ncmFtX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRf
cG9pbnRlcigodm9pZCoqKSZQcm9ncmFtX19wYXJzZXIsIFByb2dyYW1fX3BhcnNlcl9fYnVpbGRl
cik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvZ3JhbV9fcGFyc2VyX19vYywgUHJvZ3Jh
bV9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gUHJvZ3JhbV9fcGFyc2VyOworI2VuZGlm
Cit9Cit2b2lkIFByb2dyYW1fX2Rlc3RydWN0KFByb2dyYW1fdCAqZGF0YSkgeworICAgIFByb2dy
YW1fX2dsb2JhbHNfX2Rlc3RydWN0KCZkYXRhLT5nbG9iYWxzKTsKK30KKwordHNmX2Jvb2xfdCBQ
cm9ncmFtX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgUHJvZ3JhbV90ICpk
YXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgUHJvZ3JhbV9fZ2V0
X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworUHJvZ3JhbV90ICpQcm9ncmFtX19yZWFkKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFk
KGluLCBQcm9ncmFtX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IFByb2dyYW1fX3Jl
YWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIFByb2dyYW1fdCAqcmVzdWx0KSB7
CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgUHJvZ3JhbV9fZ2V0X3Bh
cnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3Ry
dWN0aW9uX19tb3ZfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
Ugorc3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19tb3ZfX3R5cGVfX29jID0gUFRI
UkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBJbnN0cnVjdGlvbl9fbW92X190eXBlX19idWls
ZGVyKHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fbW92X190eXBlID0gSW5zdHJ1Y3Rpb25fX21v
dl9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpJbnN0cnVjdGlvbl9fbW92
X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX21vdl9fYnVp
bGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fbW92X19nZXRf
dHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0
c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkluc3RydWN0aW9uX19tb3ZfX3R5
cGUsIEluc3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFk
X29uY2UoJkluc3RydWN0aW9uX19tb3ZfX3R5cGVfX29jLCBJbnN0cnVjdGlvbl9fbW92X190eXBl
X19idWlsZGVyKTsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX21vdl9fdHlwZTsKKyNlbmRpZgor
fQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19hZGRfX3R5cGUg
PSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRf
b25jZV90IEluc3RydWN0aW9uX19hZGRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7Citz
dGF0aWMgdm9pZCBJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBJ
bnN0cnVjdGlvbl9fYWRkX190eXBlID0gSW5zdHJ1Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSgpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZv
aWQpIHsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSgpOworfQorI2Vu
ZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYWRkX19nZXRfdHlwZSh2b2lkKSB7CisjaWZk
ZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5p
dF9wb2ludGVyKCh2b2lkKiopJkluc3RydWN0aW9uX19hZGRfX3R5cGUsIEluc3RydWN0aW9uX19h
ZGRfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkluc3RydWN0aW9u
X19hZGRfX3R5cGVfX29jLCBJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKTsKKyAgICBy
ZXR1cm4gSW5zdHJ1Y3Rpb25fX2FkZF9fdHlwZTsKKyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5
cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9uX19hbGxvY19fdHlwZSA9IE5VTEw7CisKKyNpZm5k
ZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgSW5zdHJ1Y3Rp
b25fX2FsbG9jX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgSW5z
dHJ1Y3Rpb25fX2FsbG9jX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9f
YWxsb2NfX3R5cGUgPSBJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNl
CitzdGF0aWMgdm9pZCAqSW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlX19idWlsZGVyKHZvaWQpIHsK
KyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2FsbG9jX19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYK
K3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19hbGxvY19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRf
cG9pbnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9fYWxsb2NfX3R5cGUsIEluc3RydWN0aW9uX19h
bGxvY19fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmSW5zdHJ1Y3Rp
b25fX2FsbG9jX190eXBlX19vYywgSW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlX19idWlsZGVyKTsK
KyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlOworI2VuZGlmCit9Cit2b2lkIElu
c3RydWN0aW9uX19hbGxvY19fZGVzdHJ1Y3QoSW5zdHJ1Y3Rpb25fX2FsbG9jX3QgKmRhdGEpIHsK
KyAgICBUeXBlX19kZXN0cnVjdCgmZGF0YS0+dHlwZSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90
ICogdm9sYXRpbGUgSW5zdHJ1Y3Rpb25fX3JldF9fdHlwZSA9IE5VTEw7CisKKyNpZm5kZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgSW5zdHJ1Y3Rpb25fX3Jl
dF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9u
X19yZXRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX19yZXRfX3R5cGUg
PSBJbnN0cnVjdGlvbl9fcmV0X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQg
Kkluc3RydWN0aW9uX19yZXRfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBJbnN0
cnVjdGlvbl9fcmV0X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkluc3Ry
dWN0aW9uX19yZXRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5z
dHJ1Y3Rpb25fX3JldF9fdHlwZSwgSW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcik7Cisj
ZWxzZQorICAgIHB0aHJlYWRfb25jZSgmSW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fb2MsIEluc3Ry
dWN0aW9uX19yZXRfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fcmV0
X190eXBlOworI2VuZGlmCit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgSW5zdHJ1
Y3Rpb25fX2p1bXBfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
Ugorc3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19qdW1wX190eXBlX19vYyA9IFBU
SFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgSW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1
aWxkZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX19qdW1wX190eXBlID0gSW5zdHJ1Y3Rpb25f
X2p1bXBfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqSW5zdHJ1Y3Rpb25f
X2p1bXBfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fanVt
cF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fanVt
cF9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJl
dHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9f
anVtcF9fdHlwZSwgSW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAg
ICBwdGhyZWFkX29uY2UoJkluc3RydWN0aW9uX19qdW1wX190eXBlX19vYywgSW5zdHJ1Y3Rpb25f
X2p1bXBfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fanVtcF9fdHlw
ZTsKKyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9u
X19jYWxsX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0
YXRpYyBwdGhyZWFkX29uY2VfdCBJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MgPSBQVEhSRUFE
X09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9uX19jYWxsX190eXBlX19idWlsZGVy
KHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZSA9IEluc3RydWN0aW9uX19jYWxs
X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkluc3RydWN0aW9uX19jYWxs
X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2NhbGxfX2J1
aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2NhbGxfX2dl
dF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4g
KHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25fX2NhbGxf
X3R5cGUsIEluc3RydWN0aW9uX19jYWxsX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRo
cmVhZF9vbmNlKCZJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MsIEluc3RydWN0aW9uX19jYWxs
X190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2NhbGxfX3R5cGU7Cisj
ZW5kaWYKK30KK3ZvaWQgSW5zdHJ1Y3Rpb25fX2NhbGxfX2Rlc3RydWN0KEluc3RydWN0aW9uX19j
YWxsX3QgKmRhdGEpIHsKKyAgICBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fZGVzdHJ1Y3QoJmRh
dGEtPmFyZ3MpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIEluc3RydWN0aW9u
X19jYWxsX19hcmdzX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fdHlwZV9f
b2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9uX19jYWxsX19h
cmdzX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19f
dHlwZSA9IEluc3RydWN0aW9uX19jYWxsX19hcmdzX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQor
c3RhdGljIHZvaWQgKkluc3RydWN0aW9uX19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKHZvaWQp
IHsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX2J1aWxkX3R5cGUoKTsKK30K
KyNlbmRpZgordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX2dldF90eXBlKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBl
X3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5
cGUsIEluc3RydWN0aW9uX19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAg
cHRocmVhZF9vbmNlKCZJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fdHlwZV9fb2MsIEluc3RydWN0
aW9uX19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gSW5zdHJ1Y3Rpb25f
X2NhbGxfX2FyZ3NfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgSW5zdHJ1Y3Rpb25fX2NhbGxfX2Fy
Z3NfX2Rlc3RydWN0KEluc3RydWN0aW9uX19jYWxsX19hcmdzX3QgKmRhdGEpIHsKKyAgICBpbnRl
Z2VyX19hcnJheV9fZGVzdHJ1Y3QoZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9s
YXRpbGUgaW50ZWdlcl9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lO
SVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IGludGVnZXJfX2FycmF5X190eXBlX19v
YyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgaW50ZWdlcl9fYXJyYXlfX3R5cGVf
X2J1aWxkZXIodm9pZCkgeworICAgIGludGVnZXJfX2FycmF5X190eXBlID0gaW50ZWdlcl9fYXJy
YXlfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqaW50ZWdlcl9fYXJyYXlf
X3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBpbnRlZ2VyX19hcnJheV9fYnVpbGRf
dHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICppbnRlZ2VyX19hcnJheV9fZ2V0X3R5cGUo
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5
cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZpbnRlZ2VyX19hcnJheV9fdHlwZSwgaW50
ZWdlcl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJmlu
dGVnZXJfX2FycmF5X190eXBlX19vYywgaW50ZWdlcl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOwor
ICAgIHJldHVybiBpbnRlZ2VyX19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCBpbnRlZ2Vy
X19hcnJheV9fZGVzdHJ1Y3QoaW50ZWdlcl9fYXJyYXlfdCAqZGF0YSkgeworICAgIGZyZWUoZGF0
YS0+ZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgSW5zdHJ1Y3Rpb25f
X2JyYW5jaFplcm9fX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
Ugorc3RhdGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19icmFuY2haZXJvX190eXBlX19v
YyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgSW5zdHJ1Y3Rpb25fX2JyYW5jaFpl
cm9fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIEluc3RydWN0aW9uX19icmFuY2haZXJvX190
eXBlID0gSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitz
dGF0aWMgdm9pZCAqSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fYnVpbGRfdHlwZSgpOworfQor
I2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fZ2V0X3R5cGUodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVf
dCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fdHlw
ZSwgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBw
dGhyZWFkX29uY2UoJkluc3RydWN0aW9uX19icmFuY2haZXJvX190eXBlX19vYywgSW5zdHJ1Y3Rp
b25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBJbnN0cnVjdGlvbl9f
YnJhbmNoWmVyb19fdHlwZTsKKyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0
aWxlIFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fdHlwZSA9IE5VTEw7CisKKyNpZm5kZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgUHJvY2VkdXJlRGVmbl9f
dmFyaWFibGVzX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgUHJv
Y2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1
cmVEZWZuX192YXJpYWJsZXNfX3R5cGUgPSBQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2J1aWxk
X3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVz
X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fdmFyaWFi
bGVzX19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5f
X3ZhcmlhYmxlc19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
UgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9j
ZWR1cmVEZWZuX192YXJpYWJsZXNfX3R5cGUsIFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fdHlw
ZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmUHJvY2VkdXJlRGVmbl9fdmFy
aWFibGVzX190eXBlX19vYywgUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBlX19idWlsZGVy
KTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBlOworI2VuZGlmCit9
Cit2b2lkIFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fZGVzdHJ1Y3QoUHJvY2VkdXJlRGVmbl9f
dmFyaWFibGVzX3QgKmRhdGEpIHsKKyAgICBWYXJpYWJsZURlY2xfX2FycmF5X19kZXN0cnVjdChk
YXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBWYXJpYWJsZURlY2xfX2Fy
cmF5X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCBWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19vYyA9IFBUSFJFQURf
T05DRV9JTklUOworc3RhdGljIHZvaWQgVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZSA9IFZhcmlhYmxlRGVjbF9f
YXJyYXlfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqVmFyaWFibGVEZWNs
X19hcnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFZhcmlhYmxlRGVjbF9f
YXJyYXlfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqVmFyaWFibGVEZWNs
X19hcnJheV9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
ICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZWYXJpYWJs
ZURlY2xfX2FycmF5X190eXBlLCBWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19idWlsZGVyKTsK
KyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19vYywg
VmFyaWFibGVEZWNsX19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFZhcmlhYmxl
RGVjbF9fYXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgVmFyaWFibGVEZWNsX19hcnJheV9f
ZGVzdHJ1Y3QoVmFyaWFibGVEZWNsX19hcnJheV90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaTsK
KyAgICBmb3IgKGkgPSBkYXRhLT5sZW47IGktLTspCisgICAgICAgIFZhcmlhYmxlRGVjbF9fZGVz
dHJ1Y3QoKGRhdGEtPmRhdGEgKyBpKSk7CisgICAgZnJlZShkYXRhLT5kYXRhKTsKK30KKworc3Rh
dGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlID0gTlVM
TDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2Vf
dCBQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3Rh
dGljIHZvaWQgUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAg
UHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZSA9IFByb2NlZHVyZURlZm5fX2NvZGVfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9f
YnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX2NvZGVfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9fY29kZV9fZ2V0X3R5
cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNm
X3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9jZWR1cmVEZWZuX19jb2RlX190
eXBlLCBQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRo
cmVhZF9vbmNlKCZQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlX19vYywgUHJvY2VkdXJlRGVmbl9f
Y29kZV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2NlZHVyZURlZm5fX2NvZGVfX3R5
cGU7CisjZW5kaWYKK30KK3ZvaWQgUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVzdHJ1Y3QoUHJvY2Vk
dXJlRGVmbl9fY29kZV90ICpkYXRhKSB7CisgICAgSW5zdHJ1Y3Rpb25fX2FycmF5X19kZXN0cnVj
dChkYXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBJbnN0cnVjdGlvbl9f
YXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3Rh
dGljIHB0aHJlYWRfb25jZV90IEluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MgPSBQVEhSRUFE
X09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIEluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgSW5zdHJ1Y3Rpb25fX2FycmF5X190eXBlID0gSW5zdHJ1Y3Rpb25fX2Fy
cmF5X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkluc3RydWN0aW9uX19h
cnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIEluc3RydWN0aW9uX19hcnJh
eV9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpJbnN0cnVjdGlvbl9fYXJy
YXlfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICBy
ZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmSW5zdHJ1Y3Rpb25f
X2FycmF5X190eXBlLCBJbnN0cnVjdGlvbl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UK
KyAgICBwdGhyZWFkX29uY2UoJkluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MsIEluc3RydWN0
aW9uX19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIEluc3RydWN0aW9uX19hcnJh
eV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCBJbnN0cnVjdGlvbl9fYXJyYXlfX2Rlc3RydWN0KElu
c3RydWN0aW9uX19hcnJheV90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaTsKKyAgICBmb3IgKGkg
PSBkYXRhLT5sZW47IGktLTspCisgICAgICAgIEluc3RydWN0aW9uX19kZXN0cnVjdCgoZGF0YS0+
ZGF0YSArIGkpKTsKKyAgICBmcmVlKGRhdGEtPmRhdGEpOworfQorCitzdGF0aWMgdHNmX3R5cGVf
dCAqIHZvbGF0aWxlIFByb2NlZHVyZURlZm5fX2RlYnVnX190eXBlID0gTlVMTDsKKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBQcm9jZWR1cmVE
ZWZuX19kZWJ1Z19fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIFBy
b2NlZHVyZURlZm5fX2RlYnVnX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBQcm9jZWR1cmVE
ZWZuX19kZWJ1Z19fdHlwZSA9IFByb2NlZHVyZURlZm5fX2RlYnVnX19idWlsZF90eXBlKCk7Cit9
CisjZWxzZQorc3RhdGljIHZvaWQgKlByb2NlZHVyZURlZm5fX2RlYnVnX190eXBlX19idWlsZGVy
KHZvaWQpIHsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fZGVidWdfX2J1aWxkX3R5cGUoKTsK
K30KKyNlbmRpZgordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9fZGVidWdfX2dldF90eXBlKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBl
X3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmUHJvY2VkdXJlRGVmbl9fZGVidWdfX3R5cGUs
IFByb2NlZHVyZURlZm5fX2RlYnVnX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVh
ZF9vbmNlKCZQcm9jZWR1cmVEZWZuX19kZWJ1Z19fdHlwZV9fb2MsIFByb2NlZHVyZURlZm5fX2Rl
YnVnX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gUHJvY2VkdXJlRGVmbl9fZGVidWdfX3R5
cGU7CisjZW5kaWYKK30KK3ZvaWQgUHJvY2VkdXJlRGVmbl9fZGVidWdfX2Rlc3RydWN0KFByb2Nl
ZHVyZURlZm5fX2RlYnVnX3QgKmRhdGEpIHsKKyAgICBEZWJ1Z0RhdGFfX2FycmF5X19kZXN0cnVj
dChkYXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEZWJ1Z0RhdGFfX2Fy
cmF5X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCBEZWJ1Z0RhdGFfX2FycmF5X190eXBlX19vYyA9IFBUSFJFQURfT05D
RV9JTklUOworc3RhdGljIHZvaWQgRGVidWdEYXRhX19hcnJheV9fdHlwZV9fYnVpbGRlcih2b2lk
KSB7CisgICAgRGVidWdEYXRhX19hcnJheV9fdHlwZSA9IERlYnVnRGF0YV9fYXJyYXlfX2J1aWxk
X3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRGVidWdEYXRhX19hcnJheV9fdHlwZV9f
YnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERlYnVnRGF0YV9fYXJyYXlfX2J1aWxkX3R5cGUo
KTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRGVidWdEYXRhX19hcnJheV9fZ2V0X3R5cGUodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVf
dCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEZWJ1Z0RhdGFfX2FycmF5X190eXBlLCBEZWJ1
Z0RhdGFfX2FycmF5X190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZE
ZWJ1Z0RhdGFfX2FycmF5X190eXBlX19vYywgRGVidWdEYXRhX19hcnJheV9fdHlwZV9fYnVpbGRl
cik7CisgICAgcmV0dXJuIERlYnVnRGF0YV9fYXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQg
RGVidWdEYXRhX19hcnJheV9fZGVzdHJ1Y3QoRGVidWdEYXRhX19hcnJheV90ICpkYXRhKSB7Cisg
ICAgdWludDMyX3QgaTsKKyAgICBmb3IgKGkgPSBkYXRhLT5sZW47IGktLTspCisgICAgICAgIERl
YnVnRGF0YV9fZGVzdHJ1Y3QoKGRhdGEtPmRhdGEgKyBpKSk7CisgICAgZnJlZShkYXRhLT5kYXRh
KTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBQcm9ncmFtX19nbG9iYWxzX190
eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhy
ZWFkX29uY2VfdCBQcm9ncmFtX19nbG9iYWxzX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklU
Oworc3RhdGljIHZvaWQgUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZV9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZSA9IFByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUo
KTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgcmV0dXJuIFByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUoKTsKK30K
KyNlbmRpZgordHNmX3R5cGVfdCAqUHJvZ3JhbV9fZ2xvYmFsc19fZ2V0X3R5cGUodm9pZCkgewor
I2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNm
X2luaXRfcG9pbnRlcigodm9pZCoqKSZQcm9ncmFtX19nbG9iYWxzX190eXBlLCBQcm9ncmFtX19n
bG9iYWxzX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZQcm9ncmFt
X19nbG9iYWxzX190eXBlX19vYywgUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZV9fYnVpbGRlcik7Cisg
ICAgcmV0dXJuIFByb2dyYW1fX2dsb2JhbHNfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgUHJvZ3Jh
bV9fZ2xvYmFsc19fZGVzdHJ1Y3QoUHJvZ3JhbV9fZ2xvYmFsc190ICpkYXRhKSB7CisgICAgUHJv
Z3JhbUVsZW1lbnRfX2FycmF5X19kZXN0cnVjdChkYXRhKTsKK30KKworc3RhdGljIHRzZl90eXBl
X3QgKiB2b2xhdGlsZSBQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZu
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IFByb2dyYW1F
bGVtZW50X19hcnJheV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lk
IFByb2dyYW1FbGVtZW50X19hcnJheV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgUHJvZ3Jh
bUVsZW1lbnRfX2FycmF5X190eXBlID0gUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19idWlsZF90eXBl
KCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKlByb2dyYW1FbGVtZW50X19hcnJheV9fdHlwZV9f
YnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIFByb2dyYW1FbGVtZW50X19hcnJheV9fYnVpbGRf
dHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2dl
dF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4g
KHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmUHJvZ3JhbUVsZW1lbnRfX2Fy
cmF5X190eXBlLCBQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UK
KyAgICBwdGhyZWFkX29uY2UoJlByb2dyYW1FbGVtZW50X19hcnJheV9fdHlwZV9fb2MsIFByb2dy
YW1FbGVtZW50X19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIFByb2dyYW1FbGVt
ZW50X19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCBQcm9ncmFtRWxlbWVudF9fYXJyYXlf
X2Rlc3RydWN0KFByb2dyYW1FbGVtZW50X19hcnJheV90ICpkYXRhKSB7CisgICAgdWludDMyX3Qg
aTsKKyAgICBmb3IgKGkgPSBkYXRhLT5sZW47IGktLTspCisgICAgICAgIFByb2dyYW1FbGVtZW50
X19kZXN0cnVjdCgoZGF0YS0+ZGF0YSArIGkpKTsKKyAgICBmcmVlKGRhdGEtPmRhdGEpOworfQor
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pci5o
CShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2ZfaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3MSBAQAorLyogLi90ZXN0cy9zdWl0
ZXMvdG95aXIvdHNmX2lyLmggLS0gZ2VuZXJhdGVkIGJ5IHRzZl9kZWZpbmUgZnJvbSAuL3Rlc3Rz
L3N1aXRlcy90b3lpci90c2ZfaXIudCAqLworCisjaW5jbHVkZSAidHNmLmgiCisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NU
UlVDVF9ERUNMX1ZhcmlhYmxlRGVjbAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1Zh
cmlhYmxlRGVjbAorc3RydWN0IFZhcmlhYmxlRGVjbF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNG
X0RFRklORV9TVFJVQ1RfREVDTF9JbnN0cnVjdGlvbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX0luc3RydWN0aW9uCitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fczsKKyNlbmRpZgorCisjaWZu
ZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRGVidWdEYXRhCisjZGVmaW5lIFRTRl9ERUZJTkVf
U1RSVUNUX0RFQ0xfRGVidWdEYXRhCitzdHJ1Y3QgRGVidWdEYXRhX3M7CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1Byb2NlZHVyZQorI2RlZmluZSBUU0ZfREVGSU5F
X1NUUlVDVF9ERUNMX1Byb2NlZHVyZQorc3RydWN0IFByb2NlZHVyZV9zOworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9Qcm9jZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9E
RUZJTkVfU1RSVUNUX0RFQ0xfUHJvY2VkdXJlRGVjbAorc3RydWN0IFByb2NlZHVyZURlY2xfczsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfUHJvY2VkdXJlRGVmbgor
I2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1Byb2NlZHVyZURlZm4KK3N0cnVjdCBQcm9j
ZWR1cmVEZWZuX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX1By
b2dyYW1FbGVtZW50CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfUHJvZ3JhbUVsZW1l
bnQKK3N0cnVjdCBQcm9ncmFtRWxlbWVudF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklO
RV9TVFJVQ1RfREVDTF9Qcm9ncmFtCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfUHJv
Z3JhbQorc3RydWN0IFByb2dyYW1fczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RS
VUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX21vdgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNM
X0luc3RydWN0aW9uX19tb3YKK3N0cnVjdCBJbnN0cnVjdGlvbl9fbW92X3M7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0luc3RydWN0aW9uX19hZGQKKyNkZWZpbmUg
VFNGX0RFRklORV9TVFJVQ1RfREVDTF9JbnN0cnVjdGlvbl9fYWRkCitzdHJ1Y3QgSW5zdHJ1Y3Rp
b25fX2FkZF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9JbnN0
cnVjdGlvbl9fYWxsb2MKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9JbnN0cnVjdGlv
bl9fYWxsb2MKK3N0cnVjdCBJbnN0cnVjdGlvbl9fYWxsb2NfczsKKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX3JldAorI2RlZmluZSBUU0ZfREVG
SU5FX1NUUlVDVF9ERUNMX0luc3RydWN0aW9uX19yZXQKK3N0cnVjdCBJbnN0cnVjdGlvbl9fcmV0
X3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0luc3RydWN0aW9u
X19qdW1wCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX2p1bXAK
K3N0cnVjdCBJbnN0cnVjdGlvbl9fanVtcF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklO
RV9TVFJVQ1RfREVDTF9JbnN0cnVjdGlvbl9fY2FsbAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX0luc3RydWN0aW9uX19jYWxsCitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2NhbGxfczsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfaW50ZWdlcl9fYXJyYXkKKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9pbnRlZ2VyX19hcnJheQorc3RydWN0IGludGVn
ZXJfX2FycmF5X3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0lu
c3RydWN0aW9uX19icmFuY2haZXJvCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfSW5z
dHJ1Y3Rpb25fX2JyYW5jaFplcm8KK3N0cnVjdCBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zOwor
I2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9WYXJpYWJsZURlY2xfX2Fy
cmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfVmFyaWFibGVEZWNsX19hcnJheQor
c3RydWN0IFZhcmlhYmxlRGVjbF9fYXJyYXlfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RS
VUNUX0RFQ0xfSW5zdHJ1Y3Rpb25fX2FycmF5CitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2FycmF5X3M7
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RlYnVnRGF0YV9fYXJy
YXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9EZWJ1Z0RhdGFfX2FycmF5CitzdHJ1
Y3QgRGVidWdEYXRhX19hcnJheV9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJV
Q1RfREVDTF9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1Rf
REVDTF9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKK3N0cnVjdCBQcm9ncmFtRWxlbWVudF9fYXJyYXlf
czsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9WYXJpYWJsZURlY2wKKyNk
ZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX1ZhcmlhYmxlRGVjbAordHlwZWRlZiBzdHJ1Y3QgVmFy
aWFibGVEZWNsX3MgVmFyaWFibGVEZWNsX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X1RZUEVERUZfSW5zdHJ1Y3Rpb24KKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0
aW9uCit0eXBlZGVmIHN0cnVjdCBJbnN0cnVjdGlvbl9zIEluc3RydWN0aW9uX3Q7CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfRGVidWdEYXRhCisjZGVmaW5lIFRTRl9ERUZJ
TkVfVFlQRURFRl9EZWJ1Z0RhdGEKK3R5cGVkZWYgc3RydWN0IERlYnVnRGF0YV9zIERlYnVnRGF0
YV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZQorI2Rl
ZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfUHJvY2VkdXJlCit0eXBlZGVmIHN0cnVjdCBQcm9jZWR1
cmVfcyBQcm9jZWR1cmVfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9Q
cm9jZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9jZWR1cmVEZWNsCit0
eXBlZGVmIHN0cnVjdCBQcm9jZWR1cmVEZWNsX3MgUHJvY2VkdXJlRGVjbF90OworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm4KKyNkZWZpbmUgVFNGX0RF
RklORV9UWVBFREVGX1Byb2NlZHVyZURlZm4KK3R5cGVkZWYgc3RydWN0IFByb2NlZHVyZURlZm5f
cyBQcm9jZWR1cmVEZWZuX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZf
UHJvZ3JhbUVsZW1lbnQKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX1Byb2dyYW1FbGVtZW50
Cit0eXBlZGVmIHN0cnVjdCBQcm9ncmFtRWxlbWVudF9zIFByb2dyYW1FbGVtZW50X3Q7CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfUHJvZ3JhbQorI2RlZmluZSBUU0ZfREVG
SU5FX1RZUEVERUZfUHJvZ3JhbQordHlwZWRlZiBzdHJ1Y3QgUHJvZ3JhbV9zIFByb2dyYW1fdDsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0cnVjdGlvbl9fbW92Cisj
ZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0cnVjdGlvbl9fbW92Cit0eXBlZGVmIHN0cnVj
dCBJbnN0cnVjdGlvbl9fbW92X3MgSW5zdHJ1Y3Rpb25fX21vdl90OworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19hZGQKKyNkZWZpbmUgVFNGX0RFRklO
RV9UWVBFREVGX0luc3RydWN0aW9uX19hZGQKK3R5cGVkZWYgc3RydWN0IEluc3RydWN0aW9uX19h
ZGRfcyBJbnN0cnVjdGlvbl9fYWRkX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZ
UEVERUZfSW5zdHJ1Y3Rpb25fX2FsbG9jCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0
cnVjdGlvbl9fYWxsb2MKK3R5cGVkZWYgc3RydWN0IEluc3RydWN0aW9uX19hbGxvY19zIEluc3Ry
dWN0aW9uX19hbGxvY190OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0lu
c3RydWN0aW9uX19yZXQKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19y
ZXQKK3R5cGVkZWYgc3RydWN0IEluc3RydWN0aW9uX19yZXRfcyBJbnN0cnVjdGlvbl9fcmV0X3Q7
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfSW5zdHJ1Y3Rpb25fX2p1bXAK
KyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19qdW1wCit0eXBlZGVmIHN0
cnVjdCBJbnN0cnVjdGlvbl9fanVtcF9zIEluc3RydWN0aW9uX19qdW1wX3Q7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfSW5zdHJ1Y3Rpb25fX2NhbGwKKyNkZWZpbmUgVFNG
X0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19jYWxsCit0eXBlZGVmIHN0cnVjdCBJbnN0cnVj
dGlvbl9fY2FsbF9zIEluc3RydWN0aW9uX19jYWxsX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1RZUEVERUZfaW50ZWdlcl9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVG
X2ludGVnZXJfX2FycmF5Cit0eXBlZGVmIHN0cnVjdCBpbnRlZ2VyX19hcnJheV9zIGludGVnZXJf
X2FycmF5X3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfSW5zdHJ1Y3Rp
b25fX2JyYW5jaFplcm8KKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19i
cmFuY2haZXJvCit0eXBlZGVmIHN0cnVjdCBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zIEluc3Ry
dWN0aW9uX19icmFuY2haZXJvX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVE
RUZfVmFyaWFibGVEZWNsX19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfVmFyaWFi
bGVEZWNsX19hcnJheQordHlwZWRlZiBzdHJ1Y3QgVmFyaWFibGVEZWNsX19hcnJheV9zIFZhcmlh
YmxlRGVjbF9fYXJyYXlfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9J
bnN0cnVjdGlvbl9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9u
X19hcnJheQordHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2FycmF5X3MgSW5zdHJ1Y3Rpb25f
X2FycmF5X3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfRGVidWdEYXRh
X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRGVidWdEYXRhX19hcnJheQordHlw
ZWRlZiBzdHJ1Y3QgRGVidWdEYXRhX19hcnJheV9zIERlYnVnRGF0YV9fYXJyYXlfdDsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNk
ZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX1Byb2dyYW1FbGVtZW50X19hcnJheQordHlwZWRlZiBz
dHJ1Y3QgUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3MgUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3Q7Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfT3BlcmFuZAorI2RlZmluZSBUU0Zf
REVGSU5FX1RZUEVERUZfT3BlcmFuZAordHlwZWRlZiB0c2ZfaW50ZWdlcl90IE9wZXJhbmRfdDsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9UeXBlCisjZGVmaW5lIFRTRl9E
RUZJTkVfVFlQRURFRl9UeXBlCit0eXBlZGVmIGNoYXIqIFR5cGVfdDsKKyNlbmRpZgorCisjaWZu
ZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9Db2RlT2Zmc2V0CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQ
RURFRl9Db2RlT2Zmc2V0Cit0eXBlZGVmIHRzZl9pbnRlZ2VyX3QgQ29kZU9mZnNldF90OworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0luc3RydWN0aW9uX19jYWxsX19hcmdz
CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9JbnN0cnVjdGlvbl9fY2FsbF9fYXJncwordHlw
ZWRlZiBpbnRlZ2VyX19hcnJheV90IEluc3RydWN0aW9uX19jYWxsX19hcmdzX3Q7CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1RZUEVERUZfUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzCisj
ZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9Qcm9jZWR1cmVEZWZuX192YXJpYWJsZXMKK3R5cGVk
ZWYgVmFyaWFibGVEZWNsX19hcnJheV90IFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc190OworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm5fX2NvZGUKKyNk
ZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm5fX2NvZGUKK3R5cGVkZWYgSW5z
dHJ1Y3Rpb25fX2FycmF5X3QgUHJvY2VkdXJlRGVmbl9fY29kZV90OworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9UWVBFREVGX1Byb2NlZHVyZURlZm5fX2RlYnVnCisjZGVmaW5lIFRTRl9E
RUZJTkVfVFlQRURFRl9Qcm9jZWR1cmVEZWZuX19kZWJ1ZwordHlwZWRlZiBEZWJ1Z0RhdGFfX2Fy
cmF5X3QgUHJvY2VkdXJlRGVmbl9fZGVidWdfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJ
TkVfVFlQRURFRl9Qcm9ncmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9Q
cm9ncmFtX19nbG9iYWxzCit0eXBlZGVmIFByb2dyYW1FbGVtZW50X19hcnJheV90IFByb2dyYW1f
X2dsb2JhbHNfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9WYXJp
YWJsZURlY2wKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX1ZhcmlhYmxlRGVjbAorc3Ry
dWN0IFZhcmlhYmxlRGVjbF9zIHsKKyAgICBUeXBlX3QgdHlwZTsKKyAgICBjaGFyKiBuYW1lOwor
fTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9f
bW92CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fbW92CitzdHJ1
Y3QgSW5zdHJ1Y3Rpb25fX21vdl9zIHsKKyAgICBPcGVyYW5kX3QgZGVzdDsKKyAgICBPcGVyYW5k
X3Qgc3JjOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0
cnVjdGlvbl9fYWRkCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9f
YWRkCitzdHJ1Y3QgSW5zdHJ1Y3Rpb25fX2FkZF9zIHsKKyAgICBPcGVyYW5kX3QgZGVzdDsKKyAg
ICBPcGVyYW5kX3Qgc3JjOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNU
X0RFRl9JbnN0cnVjdGlvbl9fYWxsb2MKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0lu
c3RydWN0aW9uX19hbGxvYworc3RydWN0IEluc3RydWN0aW9uX19hbGxvY19zIHsKKyAgICBUeXBl
X3QgdHlwZTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5z
dHJ1Y3Rpb25fX3JldAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25f
X3JldAorc3RydWN0IEluc3RydWN0aW9uX19yZXRfcyB7CisgICAgT3BlcmFuZF90IHNyYzsKK307
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25fX2p1
bXAKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0luc3RydWN0aW9uX19qdW1wCitzdHJ1
Y3QgSW5zdHJ1Y3Rpb25fX2p1bXBfcyB7CisgICAgQ29kZU9mZnNldF90IHRhcmdldDsKK307Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfaW50ZWdlcl9fYXJyYXkKKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX2ludGVnZXJfX2FycmF5CitzdHJ1Y3QgaW50ZWdl
cl9fYXJyYXlfcyB7CisgICAgdHNmX2ludGVnZXJfdCAqZGF0YTsKKyAgICB1aW50MzJfdCBsZW47
Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0luc3RydWN0aW9u
X19jYWxsCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fY2FsbAor
c3RydWN0IEluc3RydWN0aW9uX19jYWxsX3MgeworICAgIE9wZXJhbmRfdCBkZXN0OworICAgIE9w
ZXJhbmRfdCBjYWxsZWU7CisgICAgSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCBhcmdzOworfTsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fYnJh
bmNoWmVybworI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25fX2JyYW5j
aFplcm8KK3N0cnVjdCBJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zIHsKKyAgICBPcGVyYW5kX3Qg
c3JjOworICAgIENvZGVPZmZzZXRfdCB0YXJnZXQ7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNG
X0RFRklORV9TVFJVQ1RfREVGX0luc3RydWN0aW9uCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNU
X0RFRl9JbnN0cnVjdGlvbgorc3RydWN0IEluc3RydWN0aW9uX3MgeworICAgIHRzZl9jaG9pY2Vf
dCB2YWx1ZTsKKyAgICB1bmlvbiB7CisgICAgICAgIEluc3RydWN0aW9uX19tb3ZfdCBtb3Y7Cisg
ICAgICAgIEluc3RydWN0aW9uX19hZGRfdCBhZGQ7CisgICAgICAgIEluc3RydWN0aW9uX19hbGxv
Y190IGFsbG9jOworICAgICAgICBJbnN0cnVjdGlvbl9fcmV0X3QgcmV0OworICAgICAgICBJbnN0
cnVjdGlvbl9fanVtcF90IGp1bXA7CisgICAgICAgIEluc3RydWN0aW9uX19jYWxsX3QgY2FsbDsK
KyAgICAgICAgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCBicmFuY2haZXJvOworICAgIH0gdTsK
K307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRGVidWdEYXRhCisj
ZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EZWJ1Z0RhdGEKK3N0cnVjdCBEZWJ1Z0RhdGFf
cyB7CisgICAgdHNmX2ludGVnZXJfdCBzdGFydE9mZnNldDsKKyAgICB0c2ZfaW50ZWdlcl90IHNw
YW5TaXplOworICAgIGNoYXIqIGRhdGE7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklO
RV9TVFJVQ1RfREVGX1Byb2NlZHVyZQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfUHJv
Y2VkdXJlCitzdHJ1Y3QgUHJvY2VkdXJlX3MgeworICAgIGNoYXIqIG5hbWU7Cit9OworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2NlZHVyZURlY2wKKyNkZWZpbmUg
VFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2NlZHVyZURlY2wKK3N0cnVjdCBQcm9jZWR1cmVEZWNs
X3MgeworICAgIGNoYXIqIG5hbWU7Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9T
VFJVQ1RfREVGX1ZhcmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1Rf
REVGX1ZhcmlhYmxlRGVjbF9fYXJyYXkKK3N0cnVjdCBWYXJpYWJsZURlY2xfX2FycmF5X3Mgewor
ICAgIFZhcmlhYmxlRGVjbF90ICpkYXRhOworICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfSW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVm
aW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9JbnN0cnVjdGlvbl9fYXJyYXkKK3N0cnVjdCBJbnN0
cnVjdGlvbl9fYXJyYXlfcyB7CisgICAgSW5zdHJ1Y3Rpb25fdCAqZGF0YTsKKyAgICB1aW50MzJf
dCBsZW47Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RlYnVn
RGF0YV9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RlYnVnRGF0YV9fYXJy
YXkKK3N0cnVjdCBEZWJ1Z0RhdGFfX2FycmF5X3MgeworICAgIERlYnVnRGF0YV90ICpkYXRhOwor
ICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVD
VF9ERUZfUHJvY2VkdXJlRGVmbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfUHJvY2Vk
dXJlRGVmbgorc3RydWN0IFByb2NlZHVyZURlZm5fcyB7CisgICAgY2hhciogbmFtZTsKKyAgICBQ
cm9jZWR1cmVEZWZuX192YXJpYWJsZXNfdCB2YXJpYWJsZXM7CisgICAgUHJvY2VkdXJlRGVmbl9f
Y29kZV90IGNvZGU7CisgICAgUHJvY2VkdXJlRGVmbl9fZGVidWdfdCBkZWJ1ZzsKK307CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfUHJvZ3JhbUVsZW1lbnQKKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2dyYW1FbGVtZW50CitzdHJ1Y3QgUHJvZ3JhbUVs
ZW1lbnRfcyB7CisgICAgdHNmX2Nob2ljZV90IHZhbHVlOworICAgIHVuaW9uIHsKKyAgICAgICAg
UHJvY2VkdXJlRGVjbF90IHByb2NlZHVyZURlY2w7CisgICAgICAgIFByb2NlZHVyZURlZm5fdCBw
cm9jZWR1cmVEZWZuOworICAgIH0gdTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X1NUUlVDVF9ERUZfUHJvZ3JhbUVsZW1lbnRfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RS
VUNUX0RFRl9Qcm9ncmFtRWxlbWVudF9fYXJyYXkKK3N0cnVjdCBQcm9ncmFtRWxlbWVudF9fYXJy
YXlfcyB7CisgICAgUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YTsKKyAgICB1aW50MzJfdCBsZW47Cit9
OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2dyYW0KKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX1Byb2dyYW0KK3N0cnVjdCBQcm9ncmFtX3MgeworICAg
IFByb2dyYW1fX2dsb2JhbHNfdCBnbG9iYWxzOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9E
RUZJTkVfQ0hPSUNFX0RFRlNfSW5zdHJ1Y3Rpb24KKyNkZWZpbmUgVFNGX0RFRklORV9DSE9JQ0Vf
REVGU19JbnN0cnVjdGlvbgorI2RlZmluZSBJbnN0cnVjdGlvbl9fbm9wIDAKKyNkZWZpbmUgSW5z
dHJ1Y3Rpb25fX21vdiAxCisjZGVmaW5lIEluc3RydWN0aW9uX19hZGQgMgorI2RlZmluZSBJbnN0
cnVjdGlvbl9fYWxsb2MgMworI2RlZmluZSBJbnN0cnVjdGlvbl9fcmV0IDQKKyNkZWZpbmUgSW5z
dHJ1Y3Rpb25fX2p1bXAgNQorI2RlZmluZSBJbnN0cnVjdGlvbl9fY2FsbCA2CisjZGVmaW5lIElu
c3RydWN0aW9uX19icmFuY2haZXJvIDcKK3N0YXRpYyBUU0ZfaW5saW5lIGNvbnN0IGNoYXIgKklu
c3RydWN0aW9uX190b19zdHIodHNmX2Nob2ljZV90IHZhbHVlKSB7CisgICAgc3dpdGNoICh2YWx1
ZSkgeworICAgIGNhc2UgMDogcmV0dXJuICJub3AiOworICAgIGNhc2UgMTogcmV0dXJuICJtb3Yi
OworICAgIGNhc2UgMjogcmV0dXJuICJhZGQiOworICAgIGNhc2UgMzogcmV0dXJuICJhbGxvYyI7
CisgICAgY2FzZSA0OiByZXR1cm4gInJldCI7CisgICAgY2FzZSA1OiByZXR1cm4gImp1bXAiOwor
ICAgIGNhc2UgNjogcmV0dXJuICJjYWxsIjsKKyAgICBjYXNlIDc6IHJldHVybiAiYnJhbmNoWmVy
byI7CisgICAgY2FzZSBVSU5UMzJfTUFYOiByZXR1cm4gIjx1bmtub3duPiI7CisgICAgZGVmYXVs
dDogYWJvcnQoKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0NIT0lD
RV9ERUZTX1Byb2dyYW1FbGVtZW50CisjZGVmaW5lIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfUHJv
Z3JhbUVsZW1lbnQKKyNkZWZpbmUgUHJvZ3JhbUVsZW1lbnRfX3Byb2NlZHVyZURlY2wgMAorI2Rl
ZmluZSBQcm9ncmFtRWxlbWVudF9fcHJvY2VkdXJlRGVmbiAxCitzdGF0aWMgVFNGX2lubGluZSBj
b25zdCBjaGFyICpQcm9ncmFtRWxlbWVudF9fdG9fc3RyKHRzZl9jaG9pY2VfdCB2YWx1ZSkgewor
ICAgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlIDA6IHJldHVybiAicHJvY2VkdXJlRGVjbCI7
CisgICAgY2FzZSAxOiByZXR1cm4gInByb2NlZHVyZURlZm4iOworICAgIGNhc2UgVUlOVDMyX01B
WDogcmV0dXJuICI8dW5rbm93bj4iOworICAgIGRlZmF1bHQ6IGFib3J0KCk7CisgICAgfQorfQor
I2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19PcGVyYW5kCisjZGVmaW5lIFRTRl9E
RUZJTkVfRlVOQ1NfT3BlcmFuZAordHNmX3R5cGVfdCAqT3BlcmFuZF9fZ2V0X3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgT3BlcmFuZF9f
ZGVzdHJ1Y3QoT3BlcmFuZF90ICpkYXRhKSB7IH0KK3RzZl9nZW5ydHJfdCAqT3BlcmFuZF9fZ2V0
X2dlbmVyYXRvcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX3BhcnNlcl90ICpP
cGVyYW5kX19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMg
VFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX09wZXJhbmQodHNmX3R5cGVfdCAqdHlw
ZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBPcGVyYW5kX19nZXRfdHlwZSgp
KTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBidWZfaW5zdGFuY2VvZl9fT3BlcmFu
ZCh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1Ziwg
T3BlcmFuZF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAq
T3BlcmFuZF9fZ2VuZXJhdGUodm9pZCAqZGF0YSkgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5l
cmF0ZShPcGVyYW5kX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYnVmZmVyX3QgKk9wZXJhbmRfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJl
Z2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihPcGVyYW5kX19nZXRfZ2Vu
ZXJhdG9yKCksIGRhdGEsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIE9wZXJhbmRfdCAq
T3BlcmFuZF9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChPcGVyYW5kX3QqKXRz
Zl9wYXJzZXJfcGFyc2UoT3BlcmFuZF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNG
X2lubGluZSBPcGVyYW5kX3QgKk9wZXJhbmRfX3BhcnNlX2luKHRzZl9idWZmZXJfdCAqYnVmLCB2
b2lkICpyZWdpb24pIHsgcmV0dXJuIChPcGVyYW5kX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4oT3Bl
cmFuZF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRz
Zl9ib29sX3QgT3BlcmFuZF9fcGFyc2VfaW50byh0c2ZfYnVmZmVyX3QgKmJ1ZiwgT3BlcmFuZF90
ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhPcGVy
YW5kX19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBPcGVy
YW5kX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgT3BlcmFuZF90ICpkYXRh
KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworT3BlcmFuZF90ICpPcGVyYW5kX19yZWFkKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbnApIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfYm9v
bF90IE9wZXJhbmRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBPcGVy
YW5kX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfRlVOQ1NfVHlwZQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX1R5cGUKK3Rz
Zl90eXBlX3QgKlR5cGVfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2
b2lkIFR5cGVfX2Rlc3RydWN0KFR5cGVfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKlR5cGVfX2dl
dF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAq
VHlwZV9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRT
Rl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19UeXBlKHRzZl90eXBlX3QgKnR5cGUpIHsg
cmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgVHlwZV9fZ2V0X3R5cGUoKSk7IH0KK3N0
YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX1R5cGUodHNmX2J1ZmZl
cl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIFR5cGVfX2dldF90
eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlR5cGVfX2dlbmVyYXRl
KHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGUoVHlwZV9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpUeXBl
X19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5l
cmF0b3JfZ2VuZXJhdGVfaW4oVHlwZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9
CitzdGF0aWMgVFNGX2lubGluZSBUeXBlX3QgKlR5cGVfX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVm
KSB7IHJldHVybiAoVHlwZV90Kil0c2ZfcGFyc2VyX3BhcnNlKFR5cGVfX2dldF9wYXJzZXIoKSwg
YnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgVHlwZV90ICpUeXBlX19wYXJzZV9pbih0c2ZfYnVm
ZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoVHlwZV90Kil0c2ZfcGFyc2VyX3Bh
cnNlX2luKFR5cGVfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lu
bGluZSB0c2ZfYm9vbF90IFR5cGVfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIFR5cGVf
dCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oVHlw
ZV9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgVHlwZV9f
d3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIFR5cGVfdCAqZGF0YSkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKK1R5cGVfdCAqVHlwZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBUeXBlX19yZWFk
X2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgVHlwZV90ICpyZXN1bHQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0Nv
ZGVPZmZzZXQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19Db2RlT2Zmc2V0Cit0c2ZfdHlwZV90
ICpDb2RlT2Zmc2V0X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3Rh
dGljIFRTRl9pbmxpbmUgdm9pZCBDb2RlT2Zmc2V0X19kZXN0cnVjdChDb2RlT2Zmc2V0X3QgKmRh
dGEpIHsgfQordHNmX2dlbnJ0cl90ICpDb2RlT2Zmc2V0X19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkNvZGVPZmZzZXRfX2dldF9wYXJz
ZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9i
b29sX3QgaW5zdGFuY2VvZl9fQ29kZU9mZnNldCh0c2ZfdHlwZV90ICp0eXBlKSB7IHJldHVybiB0
c2ZfdHlwZV9pbnN0YW5jZW9mKHR5cGUsIENvZGVPZmZzZXRfX2dldF90eXBlKCkpOyB9CitzdGF0
aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19Db2RlT2Zmc2V0KHRzZl9i
dWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBDb2RlT2Zm
c2V0X19nZXRfdHlwZSgpKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpDb2Rl
T2Zmc2V0X19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVy
YXRlKENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5s
aW5lIHRzZl9idWZmZXJfdCAqQ29kZU9mZnNldF9fZ2VuZXJhdGVfaW4odm9pZCAqZGF0YSwgdm9p
ZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2luKENvZGVPZmZzZXRf
X2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgQ29k
ZU9mZnNldF90ICpDb2RlT2Zmc2V0X19wYXJzZSh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4g
KENvZGVPZmZzZXRfdCopdHNmX3BhcnNlcl9wYXJzZShDb2RlT2Zmc2V0X19nZXRfcGFyc2VyKCks
IGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIENvZGVPZmZzZXRfdCAqQ29kZU9mZnNldF9fcGFy
c2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKENvZGVPZmZz
ZXRfdCopdHNmX3BhcnNlcl9wYXJzZV9pbihDb2RlT2Zmc2V0X19nZXRfcGFyc2VyKCksIGJ1Ziwg
cmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBDb2RlT2Zmc2V0X19wYXJz
ZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBDb2RlT2Zmc2V0X3QgKmRhdGEsIHZvaWQgKnJlZ2lv
bikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKENvZGVPZmZzZXRfX2dldF9wYXJzZXIo
KSwgYnVmLCBkYXRhLCByZWdpb24pOyB9Cit0c2ZfYm9vbF90IENvZGVPZmZzZXRfX3dyaXRlKHRz
Zl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBDb2RlT2Zmc2V0X3QgKmRhdGEpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7CitDb2RlT2Zmc2V0X3QgKkNvZGVPZmZzZXRfX3JlYWQodHNmX3N0cmVh
bV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3Qg
Q29kZU9mZnNldF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIENvZGVP
ZmZzZXRfdCAqcmVzdWx0KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9GVU5DU19WYXJpYWJsZURlY2wKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5D
U19WYXJpYWJsZURlY2wKK3RzZl90eXBlX3QgKlZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgVmFyaWFibGVEZWNsX19kZXN0cnVjdChWYXJp
YWJsZURlY2xfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKlZhcmlhYmxlRGVjbF9fZ2V0X2dlbmVy
YXRvcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX3BhcnNlcl90ICpWYXJpYWJs
ZURlY2xfX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBU
U0ZfaW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fVmFyaWFibGVEZWNsKHRzZl90eXBlX3Qg
KnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgVmFyaWFibGVEZWNsX19n
ZXRfdHlwZSgpKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBidWZfaW5zdGFuY2Vv
Zl9fVmFyaWFibGVEZWNsKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2lu
c3RhbmNlb2YoYnVmLCBWYXJpYWJsZURlY2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lu
bGluZSB0c2ZfYnVmZmVyX3QgKlZhcmlhYmxlRGVjbF9fZ2VuZXJhdGUodm9pZCAqZGF0YSkgeyBy
ZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZShWYXJpYWJsZURlY2xfX2dldF9nZW5lcmF0b3Io
KSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqVmFyaWFibGVEZWNs
X19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5l
cmF0b3JfZ2VuZXJhdGVfaW4oVmFyaWFibGVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEsIHJl
Z2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIFZhcmlhYmxlRGVjbF90ICpWYXJpYWJsZURlY2xf
X3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAoVmFyaWFibGVEZWNsX3QqKXRzZl9w
YXJzZXJfcGFyc2UoVmFyaWFibGVEZWNsX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIFZhcmlhYmxlRGVjbF90ICpWYXJpYWJsZURlY2xfX3BhcnNlX2luKHRzZl9idWZm
ZXJfdCAqYnVmLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIChWYXJpYWJsZURlY2xfdCopdHNmX3Bh
cnNlcl9wYXJzZV9pbihWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9
CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IFZhcmlhYmxlRGVjbF9fcGFyc2VfaW50byh0
c2ZfYnVmZmVyX3QgKmJ1ZiwgVmFyaWFibGVEZWNsX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyBy
ZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcigpLCBi
dWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgVmFyaWFibGVEZWNsX193cml0ZSh0c2Zf
c3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgVmFyaWFibGVEZWNsX3QgKmRhdGEpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7CitWYXJpYWJsZURlY2xfdCAqVmFyaWFibGVEZWNsX19yZWFkKHRzZl9z
dHJlYW1fZmlsZV9pbnB1dF90ICppbnApIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfYm9v
bF90IFZhcmlhYmxlRGVjbF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAs
IFZhcmlhYmxlRGVjbF90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uCisjZGVmaW5lIFRTRl9ERUZJ
TkVfRlVOQ1NfSW5zdHJ1Y3Rpb24KK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19nZXRfdHlwZSh2
b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBJbnN0cnVjdGlvbl9fZGVzdHJ1Y3Qo
SW5zdHJ1Y3Rpb25fdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKkluc3RydWN0aW9uX19nZXRfZ2Vu
ZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkluc3Ry
dWN0aW9uX19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMg
VFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX0luc3RydWN0aW9uKHRzZl90eXBlX3Qg
KnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgSW5zdHJ1Y3Rpb25fX2dl
dF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9m
X19JbnN0cnVjdGlvbih0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0
YW5jZW9mKGJ1ZiwgSW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYnVmZmVyX3QgKkluc3RydWN0aW9uX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVy
biB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKEluc3RydWN0aW9uX19nZXRfZ2VuZXJhdG9yKCksIGRh
dGEpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkluc3RydWN0aW9uX19nZW5l
cmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3Jf
Z2VuZXJhdGVfaW4oSW5zdHJ1Y3Rpb25fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsg
fQorc3RhdGljIFRTRl9pbmxpbmUgSW5zdHJ1Y3Rpb25fdCAqSW5zdHJ1Y3Rpb25fX3BhcnNlKHRz
Zl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAoSW5zdHJ1Y3Rpb25fdCopdHNmX3BhcnNlcl9wYXJz
ZShJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNGX2lubGluZSBJ
bnN0cnVjdGlvbl90ICpJbnN0cnVjdGlvbl9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZv
aWQgKnJlZ2lvbikgeyByZXR1cm4gKEluc3RydWN0aW9uX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4o
SW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lu
bGluZSB0c2ZfYm9vbF90IEluc3RydWN0aW9uX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVm
LCBJbnN0cnVjdGlvbl90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9wYXJzZXJf
cGFyc2VfaW50byhJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7
IH0KK3RzZl9ib29sX3QgSW5zdHJ1Y3Rpb25fX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRf
dCAqb3V0LCBJbnN0cnVjdGlvbl90ICpkYXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworSW5z
dHJ1Y3Rpb25fdCAqSW5zdHJ1Y3Rpb25fX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlu
cCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgSW5zdHJ1Y3Rpb25fX3JlYWRf
aW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBJbnN0cnVjdGlvbl90ICpyZXN1bHQp
IFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZV
TkNTX0RlYnVnRGF0YQorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RlYnVnRGF0YQordHNmX3R5
cGVfdCAqRGVidWdEYXRhX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
dm9pZCBEZWJ1Z0RhdGFfX2Rlc3RydWN0KERlYnVnRGF0YV90ICpkYXRhKTsKK3RzZl9nZW5ydHJf
dCAqRGVidWdEYXRhX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7
Cit0c2ZfcGFyc2VyX3QgKkRlYnVnRGF0YV9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19EZWJ1
Z0RhdGEodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBl
LCBEZWJ1Z0RhdGFfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90
IGJ1Zl9pbnN0YW5jZW9mX19EZWJ1Z0RhdGEodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRz
Zl9idWZmZXJfaW5zdGFuY2VvZihidWYsIERlYnVnRGF0YV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRGVidWdEYXRhX19nZW5lcmF0ZSh2b2lkICpkYXRh
KSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERlYnVnRGF0YV9fZ2V0X2dlbmVyYXRv
cigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpEZWJ1Z0RhdGFf
X2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVy
YXRvcl9nZW5lcmF0ZV9pbihEZWJ1Z0RhdGFfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9u
KTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRGVidWdEYXRhX3QgKkRlYnVnRGF0YV9fcGFyc2UodHNm
X2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChEZWJ1Z0RhdGFfdCopdHNmX3BhcnNlcl9wYXJzZShE
ZWJ1Z0RhdGFfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRGVidWdE
YXRhX3QgKkRlYnVnRGF0YV9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lv
bikgeyByZXR1cm4gKERlYnVnRGF0YV90Kil0c2ZfcGFyc2VyX3BhcnNlX2luKERlYnVnRGF0YV9f
Z2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29s
X3QgRGVidWdEYXRhX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBEZWJ1Z0RhdGFfdCAq
ZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oRGVidWdE
YXRhX19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEZWJ1
Z0RhdGFfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEZWJ1Z0RhdGFfdCAq
ZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK0RlYnVnRGF0YV90ICpEZWJ1Z0RhdGFfX3Jl
YWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3RzZl9ib29sX3QgRGVidWdEYXRhX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmlucCwgRGVidWdEYXRhX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJlCisjZGVmaW5lIFRTRl9ERUZJ
TkVfRlVOQ1NfUHJvY2VkdXJlCit0c2ZfdHlwZV90ICpQcm9jZWR1cmVfX2dldF90eXBlKHZvaWQp
IFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIFByb2NlZHVyZV9fZGVzdHJ1Y3QoUHJvY2Vk
dXJlX3QgKmRhdGEpOwordHNmX2dlbnJ0cl90ICpQcm9jZWR1cmVfX2dldF9nZW5lcmF0b3Iodm9p
ZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJlX19nZXRf
cGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYm9vbF90IGluc3RhbmNlb2ZfX1Byb2NlZHVyZSh0c2ZfdHlwZV90ICp0eXBlKSB7IHJldHVy
biB0c2ZfdHlwZV9pbnN0YW5jZW9mKHR5cGUsIFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7IH0KK3N0
YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX1Byb2NlZHVyZSh0c2Zf
YnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgUHJvY2Vk
dXJlX19nZXRfdHlwZSgpKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpQcm9j
ZWR1cmVfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJh
dGUoUHJvY2VkdXJlX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYnVmZmVyX3QgKlByb2NlZHVyZV9fZ2VuZXJhdGVfaW4odm9pZCAqZGF0YSwgdm9pZCAq
cmVnaW9uKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlX2luKFByb2NlZHVyZV9fZ2V0
X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSBQcm9jZWR1
cmVfdCAqUHJvY2VkdXJlX19wYXJzZSh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gKFByb2Nl
ZHVyZV90Kil0c2ZfcGFyc2VyX3BhcnNlKFByb2NlZHVyZV9fZ2V0X3BhcnNlcigpLCBidWYpOyB9
CitzdGF0aWMgVFNGX2lubGluZSBQcm9jZWR1cmVfdCAqUHJvY2VkdXJlX19wYXJzZV9pbih0c2Zf
YnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoUHJvY2VkdXJlX3QqKXRzZl9w
YXJzZXJfcGFyc2VfaW4oUHJvY2VkdXJlX19nZXRfcGFyc2VyKCksIGJ1ZiwgcmVnaW9uKTsgfQor
c3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBQcm9jZWR1cmVfX3BhcnNlX2ludG8odHNmX2J1
ZmZlcl90ICpidWYsIFByb2NlZHVyZV90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRz
Zl9wYXJzZXJfcGFyc2VfaW50byhQcm9jZWR1cmVfX2dldF9wYXJzZXIoKSwgYnVmLCBkYXRhLCBy
ZWdpb24pOyB9Cit0c2ZfYm9vbF90IFByb2NlZHVyZV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291
dHB1dF90ICpvdXQsIFByb2NlZHVyZV90ICpkYXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
UHJvY2VkdXJlX3QgKlByb2NlZHVyZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5w
KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBQcm9jZWR1cmVfX3JlYWRfaW50
byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBQcm9jZWR1cmVfdCAqcmVzdWx0KSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19Q
cm9jZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJlRGVjbAordHNm
X3R5cGVfdCAqUHJvY2VkdXJlRGVjbF9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK3ZvaWQgUHJvY2VkdXJlRGVjbF9fZGVzdHJ1Y3QoUHJvY2VkdXJlRGVjbF90ICpkYXRh
KTsKK3RzZl9nZW5ydHJfdCAqUHJvY2VkdXJlRGVjbF9fZ2V0X2dlbmVyYXRvcih2b2lkKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOwordHNmX3BhcnNlcl90ICpQcm9jZWR1cmVEZWNsX19nZXRfcGFy
c2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2Zf
Ym9vbF90IGluc3RhbmNlb2ZfX1Byb2NlZHVyZURlY2wodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1
cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBQcm9jZWR1cmVEZWNsX19nZXRfdHlwZSgpKTsg
fQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBidWZfaW5zdGFuY2VvZl9fUHJvY2VkdXJl
RGVjbCh0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1
ZiwgUHJvY2VkdXJlRGVjbF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9i
dWZmZXJfdCAqUHJvY2VkdXJlRGVjbF9fZ2VuZXJhdGUodm9pZCAqZGF0YSkgeyByZXR1cm4gdHNm
X2dlbmVyYXRvcl9nZW5lcmF0ZShQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEp
OyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlByb2NlZHVyZURlY2xfX2dlbmVy
YXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9n
ZW5lcmF0ZV9pbihQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEsIHJlZ2lvbik7
IH0KK3N0YXRpYyBUU0ZfaW5saW5lIFByb2NlZHVyZURlY2xfdCAqUHJvY2VkdXJlRGVjbF9fcGFy
c2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChQcm9jZWR1cmVEZWNsX3QqKXRzZl9wYXJz
ZXJfcGFyc2UoUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNG
X2lubGluZSBQcm9jZWR1cmVEZWNsX3QgKlByb2NlZHVyZURlY2xfX3BhcnNlX2luKHRzZl9idWZm
ZXJfdCAqYnVmLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIChQcm9jZWR1cmVEZWNsX3QqKXRzZl9w
YXJzZXJfcGFyc2VfaW4oUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7
IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgUHJvY2VkdXJlRGVjbF9fcGFyc2VfaW50
byh0c2ZfYnVmZmVyX3QgKmJ1ZiwgUHJvY2VkdXJlRGVjbF90ICpkYXRhLCB2b2lkICpyZWdpb24p
IHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2Vy
KCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBQcm9jZWR1cmVEZWNsX193cml0
ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgUHJvY2VkdXJlRGVjbF90ICpkYXRhKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOworUHJvY2VkdXJlRGVjbF90ICpQcm9jZWR1cmVEZWNsX19y
ZWFkKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnApIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7
Cit0c2ZfYm9vbF90IFByb2NlZHVyZURlY2xfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfdCAqaW5wLCBQcm9jZWR1cmVEZWNsX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJlRGVmbgorI2Rl
ZmluZSBUU0ZfREVGSU5FX0ZVTkNTX1Byb2NlZHVyZURlZm4KK3RzZl90eXBlX3QgKlByb2NlZHVy
ZURlZm5fX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIFByb2Nl
ZHVyZURlZm5fX2Rlc3RydWN0KFByb2NlZHVyZURlZm5fdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3Qg
KlByb2NlZHVyZURlZm5fX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3RzZl9wYXJzZXJfdCAqUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9m
X19Qcm9jZWR1cmVEZWZuKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3Rh
bmNlb2YodHlwZSwgUHJvY2VkdXJlRGVmbl9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5s
aW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX1Byb2NlZHVyZURlZm4odHNmX2J1ZmZlcl90
ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIFByb2NlZHVyZURlZm5f
X2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlByb2NlZHVy
ZURlZm5fX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJh
dGUoUHJvY2VkdXJlRGVmbl9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9p
bmxpbmUgdHNmX2J1ZmZlcl90ICpQcm9jZWR1cmVEZWZuX19nZW5lcmF0ZV9pbih2b2lkICpkYXRh
LCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4oUHJvY2Vk
dXJlRGVmbl9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lu
bGluZSBQcm9jZWR1cmVEZWZuX3QgKlByb2NlZHVyZURlZm5fX3BhcnNlKHRzZl9idWZmZXJfdCAq
YnVmKSB7IHJldHVybiAoUHJvY2VkdXJlRGVmbl90Kil0c2ZfcGFyc2VyX3BhcnNlKFByb2NlZHVy
ZURlZm5fX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgUHJvY2VkdXJl
RGVmbl90ICpQcm9jZWR1cmVEZWZuX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAq
cmVnaW9uKSB7IHJldHVybiAoUHJvY2VkdXJlRGVmbl90Kil0c2ZfcGFyc2VyX3BhcnNlX2luKFBy
b2NlZHVyZURlZm5fX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lu
bGluZSB0c2ZfYm9vbF90IFByb2NlZHVyZURlZm5fX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpi
dWYsIFByb2NlZHVyZURlZm5fdCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFy
c2VyX3BhcnNlX2ludG8oUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJl
Z2lvbik7IH0KK3RzZl9ib29sX3QgUHJvY2VkdXJlRGVmbl9fd3JpdGUodHNmX3N0cmVhbV9maWxl
X291dHB1dF90ICpvdXQsIFByb2NlZHVyZURlZm5fdCAqZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lO
TElORTsKK1Byb2NlZHVyZURlZm5fdCAqUHJvY2VkdXJlRGVmbl9fcmVhZCh0c2Zfc3RyZWFtX2Zp
bGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBQcm9j
ZWR1cmVEZWZuX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgUHJvY2Vk
dXJlRGVmbl90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX0ZVTkNTX1Byb2dyYW1FbGVtZW50CisjZGVmaW5lIFRTRl9ERUZJTkVf
RlVOQ1NfUHJvZ3JhbUVsZW1lbnQKK3RzZl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19nZXRfdHlw
ZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBQcm9ncmFtRWxlbWVudF9fZGVz
dHJ1Y3QoUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKlByb2dyYW1FbGVt
ZW50X19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFy
c2VyX3QgKlByb2dyYW1FbGVtZW50X19nZXRfcGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3RhbmNlb2ZfX1Byb2dyYW1F
bGVtZW50KHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlw
ZSwgUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2Zf
Ym9vbF90IGJ1Zl9pbnN0YW5jZW9mX19Qcm9ncmFtRWxlbWVudCh0c2ZfYnVmZmVyX3QgKmJ1Zikg
eyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgUHJvZ3JhbUVsZW1lbnRfX2dldF90
eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKlByb2dyYW1FbGVtZW50
X19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKFBy
b2dyYW1FbGVtZW50X19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYnVmZmVyX3QgKlByb2dyYW1FbGVtZW50X19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2
b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4oUHJvZ3JhbUVs
ZW1lbnRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxp
bmUgUHJvZ3JhbUVsZW1lbnRfdCAqUHJvZ3JhbUVsZW1lbnRfX3BhcnNlKHRzZl9idWZmZXJfdCAq
YnVmKSB7IHJldHVybiAoUHJvZ3JhbUVsZW1lbnRfdCopdHNmX3BhcnNlcl9wYXJzZShQcm9ncmFt
RWxlbWVudF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNGX2lubGluZSBQcm9ncmFt
RWxlbWVudF90ICpQcm9ncmFtRWxlbWVudF9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZv
aWQgKnJlZ2lvbikgeyByZXR1cm4gKFByb2dyYW1FbGVtZW50X3QqKXRzZl9wYXJzZXJfcGFyc2Vf
aW4oUHJvZ3JhbUVsZW1lbnRfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMg
VFNGX2lubGluZSB0c2ZfYm9vbF90IFByb2dyYW1FbGVtZW50X19wYXJzZV9pbnRvKHRzZl9idWZm
ZXJfdCAqYnVmLCBQcm9ncmFtRWxlbWVudF90ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJu
IHRzZl9wYXJzZXJfcGFyc2VfaW50byhQcm9ncmFtRWxlbWVudF9fZ2V0X3BhcnNlcigpLCBidWYs
IGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgUHJvZ3JhbUVsZW1lbnRfX3dyaXRlKHRzZl9z
dHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBQcm9ncmFtRWxlbWVudF90ICpkYXRhKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOworUHJvZ3JhbUVsZW1lbnRfdCAqUHJvZ3JhbUVsZW1lbnRfX3JlYWQo
dHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3Rz
Zl9ib29sX3QgUHJvZ3JhbUVsZW1lbnRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
dCAqaW5wLCBQcm9ncmFtRWxlbWVudF90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX1Byb2dyYW0KKyNkZWZpbmUgVFNG
X0RFRklORV9GVU5DU19Qcm9ncmFtCit0c2ZfdHlwZV90ICpQcm9ncmFtX19nZXRfdHlwZSh2b2lk
KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBQcm9ncmFtX19kZXN0cnVjdChQcm9ncmFt
X3QgKmRhdGEpOwordHNmX2dlbnJ0cl90ICpQcm9ncmFtX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKlByb2dyYW1fX2dldF9wYXJzZXIo
dm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29s
X3QgaW5zdGFuY2VvZl9fUHJvZ3JhbSh0c2ZfdHlwZV90ICp0eXBlKSB7IHJldHVybiB0c2ZfdHlw
ZV9pbnN0YW5jZW9mKHR5cGUsIFByb2dyYW1fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lu
bGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19Qcm9ncmFtKHRzZl9idWZmZXJfdCAqYnVm
KSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBQcm9ncmFtX19nZXRfdHlwZSgp
KTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpQcm9ncmFtX19nZW5lcmF0ZSh2
b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKFByb2dyYW1fX2dldF9n
ZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqUHJv
Z3JhbV9fZ2VuZXJhdGVfaW4odm9pZCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2Zf
Z2VuZXJhdG9yX2dlbmVyYXRlX2luKFByb2dyYW1fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVn
aW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgUHJvZ3JhbV90ICpQcm9ncmFtX19wYXJzZSh0c2Zf
YnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gKFByb2dyYW1fdCopdHNmX3BhcnNlcl9wYXJzZShQcm9n
cmFtX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIFByb2dyYW1fdCAq
UHJvZ3JhbV9fcGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1
cm4gKFByb2dyYW1fdCopdHNmX3BhcnNlcl9wYXJzZV9pbihQcm9ncmFtX19nZXRfcGFyc2VyKCks
IGJ1ZiwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBQcm9ncmFtX19w
YXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBQcm9ncmFtX3QgKmRhdGEsIHZvaWQgKnJlZ2lv
bikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKFByb2dyYW1fX2dldF9wYXJzZXIoKSwg
YnVmLCBkYXRhLCByZWdpb24pOyB9Cit0c2ZfYm9vbF90IFByb2dyYW1fX3dyaXRlKHRzZl9zdHJl
YW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBQcm9ncmFtX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7CitQcm9ncmFtX3QgKlByb2dyYW1fX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3Qg
KmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgUHJvZ3JhbV9fcmVhZF9p
bnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIFByb2dyYW1fdCAqcmVzdWx0KSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19J
bnN0cnVjdGlvbl9fbW92CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX21v
dgordHNmX3R5cGVfdCAqSW5zdHJ1Y3Rpb25fX21vdl9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgSW5zdHJ1Y3Rpb25fX21vdl9f
ZGVzdHJ1Y3QoSW5zdHJ1Y3Rpb25fX21vdl90ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2FkZAorI2RlZmluZSBUU0ZfREVGSU5FX0ZV
TkNTX0luc3RydWN0aW9uX19hZGQKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19hZGRfX2dldF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lk
IEluc3RydWN0aW9uX19hZGRfX2Rlc3RydWN0KEluc3RydWN0aW9uX19hZGRfdCAqZGF0YSkgeyB9
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19hbGxvYwor
I2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19hbGxvYwordHNmX3R5cGVfdCAq
SW5zdHJ1Y3Rpb25fX2FsbG9jX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Owordm9pZCBJbnN0cnVjdGlvbl9fYWxsb2NfX2Rlc3RydWN0KEluc3RydWN0aW9uX19hbGxvY190
ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25f
X3JldAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19yZXQKK3RzZl90eXBl
X3QgKkluc3RydWN0aW9uX19yZXRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJ
TkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIEluc3RydWN0aW9uX19yZXRfX2Rlc3RydWN0KElu
c3RydWN0aW9uX19yZXRfdCAqZGF0YSkgeyB9CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X0ZVTkNTX0luc3RydWN0aW9uX19qdW1wCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1
Y3Rpb25fX2p1bXAKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19qdW1wX19nZXRfdHlwZSh2b2lk
KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCBJbnN0cnVj
dGlvbl9fanVtcF9fZGVzdHJ1Y3QoSW5zdHJ1Y3Rpb25fX2p1bXBfdCAqZGF0YSkgeyB9CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19jYWxsCisjZGVmaW5l
IFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2NhbGwKK3RzZl90eXBlX3QgKkluc3RydWN0
aW9uX19jYWxsX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBJ
bnN0cnVjdGlvbl9fY2FsbF9fZGVzdHJ1Y3QoSW5zdHJ1Y3Rpb25fX2NhbGxfdCAqZGF0YSk7Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19jYWxsX19hcmdz
CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3MKK3RzZl90
eXBlX3QgKkluc3RydWN0aW9uX19jYWxsX19hcmdzX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOwordm9pZCBJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fZGVzdHJ1Y3QoSW5z
dHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX0ZVTkNTX2ludGVnZXJfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfaW50ZWdl
cl9fYXJyYXkKKyNkZWZpbmUgaW50ZWdlcl9fYXJyYXlfX2dldF90eXBlIGludGVnZXJfX2FycmF5
TEJQMTcweEVpWkltcnV6WjBpUDl0XzJDT1hOallfdXlZckFrMXBmX19nZXRfdHlwZQorI2RlZmlu
ZSBpbnRlZ2VyX19hcnJheV9fZGVzdHJ1Y3QgaW50ZWdlcl9fYXJyYXlMQlAxNzB4RWlaSW1ydXpa
MGlQOXRfMkNPWE5qWV91eVlyQWsxcGZfX2Rlc3RydWN0Cit0c2ZfdHlwZV90ICppbnRlZ2VyX19h
cnJheV9fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgaW50ZWdl
cl9fYXJyYXlfX2Rlc3RydWN0KGludGVnZXJfX2FycmF5X3QgKmRhdGEpOworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9GVU5DU19JbnN0cnVjdGlvbl9fYnJhbmNoWmVybworI2RlZmluZSBU
U0ZfREVGSU5FX0ZVTkNTX0luc3RydWN0aW9uX19icmFuY2haZXJvCit0c2ZfdHlwZV90ICpJbnN0
cnVjdGlvbl9fYnJhbmNoWmVyb19fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3N0YXRpYyBUU0ZfaW5saW5lIHZvaWQgSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2Rlc3Ry
dWN0KEluc3RydWN0aW9uX19icmFuY2haZXJvX3QgKmRhdGEpIHsgfQorI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9GVU5DU19Qcm9jZWR1cmVEZWZuX192YXJpYWJsZXMKKyNkZWZpbmUgVFNG
X0RFRklORV9GVU5DU19Qcm9jZWR1cmVEZWZuX192YXJpYWJsZXMKK3RzZl90eXBlX3QgKlByb2Nl
ZHVyZURlZm5fX3ZhcmlhYmxlc19fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElO
RTsKK3ZvaWQgUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX19kZXN0cnVjdChQcm9jZWR1cmVEZWZu
X192YXJpYWJsZXNfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNT
X1ZhcmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19WYXJpYWJsZURl
Y2xfX2FycmF5CisjZGVmaW5lIFZhcmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlIFZhcmlhYmxl
RGVjbF9fYXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVlyQWsxcGZfX2dldF90
eXBlCisjZGVmaW5lIFZhcmlhYmxlRGVjbF9fYXJyYXlfX2Rlc3RydWN0IFZhcmlhYmxlRGVjbF9f
YXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVlyQWsxcGZfX2Rlc3RydWN0Cit0
c2ZfdHlwZV90ICpWYXJpYWJsZURlY2xfX2FycmF5X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklC
VVRFX05PSU5MSU5FOwordm9pZCBWYXJpYWJsZURlY2xfX2FycmF5X19kZXN0cnVjdChWYXJpYWJs
ZURlY2xfX2FycmF5X3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5D
U19Qcm9jZWR1cmVEZWZuX19jb2RlCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvY2VkdXJl
RGVmbl9fY29kZQordHNmX3R5cGVfdCAqUHJvY2VkdXJlRGVmbl9fY29kZV9fZ2V0X3R5cGUodm9p
ZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVz
dHJ1Y3QoUHJvY2VkdXJlRGVmbl9fY29kZV90ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfRlVOQ1NfSW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVO
Q1NfSW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIEluc3RydWN0aW9uX19hcnJheV9fZ2V0X3R5
cGUgSW5zdHJ1Y3Rpb25fX2FycmF5TEJQMTcweEVpWkltcnV6WjBpUDl0XzJDT1hOallfdXlZckFr
MXBmX19nZXRfdHlwZQorI2RlZmluZSBJbnN0cnVjdGlvbl9fYXJyYXlfX2Rlc3RydWN0IEluc3Ry
dWN0aW9uX19hcnJheUxCUDE3MHhFaVpJbXJ1elowaVA5dF8yQ09YTmpZX3V5WXJBazFwZl9fZGVz
dHJ1Y3QKK3RzZl90eXBlX3QgKkluc3RydWN0aW9uX19hcnJheV9fZ2V0X3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgSW5zdHJ1Y3Rpb25fX2FycmF5X19kZXN0cnVjdChJ
bnN0cnVjdGlvbl9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5F
X0ZVTkNTX1Byb2NlZHVyZURlZm5fX2RlYnVnCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJv
Y2VkdXJlRGVmbl9fZGVidWcKK3RzZl90eXBlX3QgKlByb2NlZHVyZURlZm5fX2RlYnVnX19nZXRf
dHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBQcm9jZWR1cmVEZWZuX19k
ZWJ1Z19fZGVzdHJ1Y3QoUHJvY2VkdXJlRGVmbl9fZGVidWdfdCAqZGF0YSk7CisjZW5kaWYKKwor
I2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RlYnVnRGF0YV9fYXJyYXkKKyNkZWZpbmUgVFNGX0RF
RklORV9GVU5DU19EZWJ1Z0RhdGFfX2FycmF5CisjZGVmaW5lIERlYnVnRGF0YV9fYXJyYXlfX2dl
dF90eXBlIERlYnVnRGF0YV9fYXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVly
QWsxcGZfX2dldF90eXBlCisjZGVmaW5lIERlYnVnRGF0YV9fYXJyYXlfX2Rlc3RydWN0IERlYnVn
RGF0YV9fYXJyYXlMQlAxNzB4RWlaSW1ydXpaMGlQOXRfMkNPWE5qWV91eVlyQWsxcGZfX2Rlc3Ry
dWN0Cit0c2ZfdHlwZV90ICpEZWJ1Z0RhdGFfX2FycmF5X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOwordm9pZCBEZWJ1Z0RhdGFfX2FycmF5X19kZXN0cnVjdChEZWJ1Z0Rh
dGFfX2FycmF5X3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5DU19Q
cm9ncmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvZ3JhbV9fZ2xvYmFs
cwordHNmX3R5cGVfdCAqUHJvZ3JhbV9fZ2xvYmFsc19fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3ZvaWQgUHJvZ3JhbV9fZ2xvYmFsc19fZGVzdHJ1Y3QoUHJvZ3JhbV9f
Z2xvYmFsc190ICpkYXRhKTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfUHJv
Z3JhbUVsZW1lbnRfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfUHJvZ3JhbUVsZW1l
bnRfX2FycmF5CisjZGVmaW5lIFByb2dyYW1FbGVtZW50X19hcnJheV9fZ2V0X3R5cGUgUHJvZ3Jh
bUVsZW1lbnRfX2FycmF5TEJQMTcweEVpWkltcnV6WjBpUDl0XzJDT1hOallfdXlZckFrMXBmX19n
ZXRfdHlwZQorI2RlZmluZSBQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2Rlc3RydWN0IFByb2dyYW1F
bGVtZW50X19hcnJheUxCUDE3MHhFaVpJbXJ1elowaVA5dF8yQ09YTmpZX3V5WXJBazFwZl9fZGVz
dHJ1Y3QKK3RzZl90eXBlX3QgKlByb2dyYW1FbGVtZW50X19hcnJheV9fZ2V0X3R5cGUodm9pZCkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19kZXN0
cnVjdChQcm9ncmFtRWxlbWVudF9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9OworI2VuZGlmCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfaXJfZGlmZmVyZW50LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pcl9kaWZmZXJlbnQuYwkobm9uZXhpc3RlbnQp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyX2RpZmZlcmVu
dC5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMyOCBAQAorLyogLi90ZXN0cy9zdWl0ZXMv
dG95aXIvdHNmX2lyX2RpZmZlcmVudC5jIC0tIGdlbmVyYXRlZCBieSB0c2ZfZGVmaW5lIGZyb20g
Li90ZXN0cy9zdWl0ZXMvdG95aXIvdHNmX2lyX2RpZmZlcmVudC50ICovCisKKyNpbmNsdWRlICJ0
c2ZfaXJfZGlmZmVyZW50LmgiCisjaW5jbHVkZSAidHNmX2RlZmluZV9oZWxwZXJzLmgiCisjaW5j
bHVkZSA8c3RkaW8uaD4KKworc3RhdGljIHRzZl90eXBlX3QgKkRPcGVyYW5kX19idWlsZF90eXBl
KHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqRFR5cGVf
X2J1aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlw
ZV90ICpEQ29kZU9mZnNldF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIHRzZl90eXBlX3QgKkRWYXJpYWJsZURlY2xfX2J1aWxkX3R5cGUodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2J1
aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90
ICpEUHJvY2VkdXJlX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Citz
dGF0aWMgdHNmX3R5cGVfdCAqRFByb2NlZHVyZURlY2xfX2J1aWxkX3R5cGUodm9pZCkgVFNGX0FU
VFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpEUHJvY2VkdXJlRGVmbl9fYnVp
bGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3Qg
KkRQcm9ncmFtRWxlbWVudF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIHRzZl90eXBlX3QgKkRQcm9ncmFtX19idWlsZF90eXBlKHZvaWQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19tb3ZfX2J1
aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90
ICpESW5zdHJ1Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUo
dm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90ICpESW5zdHJ1
Y3Rpb25fX3JldF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3Rh
dGljIHRzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fanVtcF9fYnVpbGRfdHlwZSh2b2lkKSBUU0Zf
QVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fY2Fs
bF9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90
eXBlX3QgKkRJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKmludDE2X19hcnJheV9fYnVpbGRf
dHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRJ
bnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05P
SU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2J1
aWxkX3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyB0c2ZfdHlwZV90
ICpEVmFyaWFibGVEZWNsX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05P
SU5MSU5FOworc3RhdGljIHRzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX19jb2RlX19idWlsZF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqRElu
c3RydWN0aW9uX19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIHRzZl90eXBlX3QgKkRQcm9ncmFtX19nbG9iYWxzX19idWlsZF90eXBlKHZvaWQp
IFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgdHNmX3R5cGVfdCAqRFByb2dyYW1FbGVt
ZW50X19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworCit0
c2ZfdHlwZV90ICpET3BlcmFuZF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAq
cmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX2FvZShUU0ZfVEtfSU5UMTYpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRUeXBlX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0
c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYW9lKFRTRl9US19TVFJJTkcpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRDb2RlT2Zmc2V0X19idWlsZF90
eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYW9l
KFRTRl9US19JTlQxNik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqRFZh
cmlhYmxlRGVjbF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0g
dHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2Fv
ZShzaXplb2YoRFZhcmlhYmxlRGVjbF90KSwgKHZvaWQoKikodm9pZCopKURWYXJpYWJsZURlY2xf
X2Rlc3RydWN0KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5k
X2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJ0eXBlIiwgRFR5cGVfX2dldF90eXBl
LCB0c2Zfb2Zmc2V0b2YoRFZhcmlhYmxlRGVjbF90LCB0eXBlKSk7CisgICAgdHNmX3R5cGVfc2V0
X25hbWVfYW9lKCZyZXN1bHQsICJEVmFyaWFibGVEZWNsIik7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0
c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfY2hvaWNlX3dpdGhfbmF0aXZlX21h
cF9hb2UoJnJlc3VsdCwgdHNmX3RydWUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fdCwgdmFs
dWUpLCB0c2Zfb2Zmc2V0b2YoREluc3RydWN0aW9uX3QsIHUpLCBzaXplb2YoREluc3RydWN0aW9u
X3QpKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX3ByaW1pdGl2ZV9hb2UoJnJlc3VsdCwg
Im5vcCIsIFRTRl9US19WT0lEKTsKKyAgICB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kX2Zyb21fY2Fs
bGJhY2tfYW5kX2R1cF9hb2UoJnJlc3VsdCwgIm1vdiIsIERJbnN0cnVjdGlvbl9fbW92X19nZXRf
dHlwZSk7CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBf
YW9lKCZyZXN1bHQsICJhZGQiLCBESW5zdHJ1Y3Rpb25fX2FkZF9fZ2V0X3R5cGUpOworICAgIHRz
Zl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0LCAi
YWxsb2MiLCBESW5zdHJ1Y3Rpb25fX2FsbG9jX19nZXRfdHlwZSk7CisgICAgdHNmX2Nob2ljZV90
eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfYW9lKCZyZXN1bHQsICJyZXQiLCBESW5z
dHJ1Y3Rpb25fX3JldF9fZ2V0X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJv
bV9jYWxsYmFja19hbmRfZHVwX2FvZSgmcmVzdWx0LCAianVtcCIsIERJbnN0cnVjdGlvbl9fanVt
cF9fZ2V0X3R5cGUpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19h
bmRfZHVwX2FvZSgmcmVzdWx0LCAiY2FsbCIsIERJbnN0cnVjdGlvbl9fY2FsbF9fZ2V0X3R5cGUp
OworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX2FvZSgm
cmVzdWx0LCAiYnJhbmNoWmVybyIsIERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fZ2V0X3R5cGUp
OworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiREluc3RydWN0aW9uIik7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19tb3ZfX2J1
aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0
ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hb2Uoc2l6ZW9mKERJbnN0cnVjdGlvbl9fbW92X3Qp
KTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRo
X25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJkZXN0IiwgRE9wZXJhbmRfX2dldF90eXBlLCB0c2Zf
b2Zmc2V0b2YoREluc3RydWN0aW9uX19tb3ZfdCwgZGVzdCkpOworICAgIHRzZl9zdHJ1Y3RfdHlw
ZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3Vs
dCwgInNyYyIsIERPcGVyYW5kX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJbnN0cnVjdGlvbl9f
bW92X3QsIHNyYykpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0LCAiREluc3Ry
dWN0aW9uX19tb3YiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpESW5z
dHJ1Y3Rpb25fX2FkZF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0
ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplb2YoRElu
c3RydWN0aW9uX19hZGRfdCkpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxs
YmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRlc3QiLCBET3BlcmFu
ZF9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fX2FkZF90LCBkZXN0KSk7Cisg
ICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRp
dmVfbWFwX2FvZSgmcmVzdWx0LCAic3JjIiwgRE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0
b2YoREluc3RydWN0aW9uX19hZGRfdCwgc3JjKSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9l
KCZyZXN1bHQsICJESW5zdHJ1Y3Rpb25fX2FkZCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUodm9pZCkgeworICAg
IHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVf
c2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9mKERJbnN0cnVjdGlvbl9fYWxsb2NfdCksICh2
b2lkKCopKHZvaWQqKSlESW5zdHJ1Y3Rpb25fX2FsbG9jX19kZXN0cnVjdCk7CisgICAgdHNmX3N0
cnVjdF90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2Fv
ZSgmcmVzdWx0LCAidHlwZSIsIERUeXBlX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJbnN0cnVj
dGlvbl9fYWxsb2NfdCwgdHlwZSkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVzdWx0
LCAiREluc3RydWN0aW9uX19hbGxvYyIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90
eXBlX3QgKkRJbnN0cnVjdGlvbl9fcmV0X19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlw
ZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dpdGhfbmF0aXZlX3NpemVfYW9l
KHNpemVvZihESW5zdHJ1Y3Rpb25fX3JldF90KSk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVu
ZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAic3Jj
IiwgRE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoREluc3RydWN0aW9uX19yZXRfdCwg
c3JjKSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJESW5zdHJ1Y3Rpb25f
X3JldCIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlv
bl9fanVtcF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNm
X3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FvZShzaXplb2YoREluc3RydWN0
aW9uX19qdW1wX3QpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kX2Zyb21fY2FsbGJhY2tf
YW5kX2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJ0YXJnZXQiLCBEQ29kZU9mZnNl
dF9fZ2V0X3R5cGUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fX2p1bXBfdCwgdGFyZ2V0KSk7
CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZyZXN1bHQsICJESW5zdHJ1Y3Rpb25fX2p1bXAi
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2Nh
bGxfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBl
X2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9hb2Uoc2l6ZW9m
KERJbnN0cnVjdGlvbl9fY2FsbF90KSwgKHZvaWQoKikodm9pZCopKURJbnN0cnVjdGlvbl9fY2Fs
bF9fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19h
bmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgImRlc3QiLCBET3BlcmFuZF9fZ2V0
X3R5cGUsIHRzZl9vZmZzZXRvZihESW5zdHJ1Y3Rpb25fX2NhbGxfdCwgZGVzdCkpOworICAgIHRz
Zl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21h
cF9hb2UoJnJlc3VsdCwgImNhbGxlZSIsIERPcGVyYW5kX19nZXRfdHlwZSwgdHNmX29mZnNldG9m
KERJbnN0cnVjdGlvbl9fY2FsbF90LCBjYWxsZWUpKTsKKyAgICB0c2Zfc3RydWN0X3R5cGVfYXBw
ZW5kX2Zyb21fY2FsbGJhY2tfYW5kX2R1cF93aXRoX25hdGl2ZV9tYXBfYW9lKCZyZXN1bHQsICJh
cmdzIiwgREluc3RydWN0aW9uX19jYWxsX19hcmdzX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJ
bnN0cnVjdGlvbl9fY2FsbF90LCBhcmdzKSk7CisgICAgdHNmX3R5cGVfc2V0X25hbWVfYW9lKCZy
ZXN1bHQsICJESW5zdHJ1Y3Rpb25fX2NhbGwiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
c2ZfdHlwZV90ICppbnQxNl9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBl
X3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9hcnJheV9hb2UodHNmX3R5cGVfY3JlYXRlX2Fv
ZShUU0ZfVEtfSU5UMTYpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpE
SW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBl
X3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hb2Uo
c2l6ZW9mKERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb190KSk7CisgICAgdHNmX3N0cnVjdF90eXBl
X2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0
LCAic3JjIiwgRE9wZXJhbmRfX2dldF90eXBlLCB0c2Zfb2Zmc2V0b2YoREluc3RydWN0aW9uX19i
cmFuY2haZXJvX3QsIHNyYykpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfZnJvbV9jYWxs
YmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgInRhcmdldCIsIERDb2Rl
T2Zmc2V0X19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb190
LCB0YXJnZXQpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRJbnN0cnVj
dGlvbl9fYnJhbmNoWmVybyIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3Qg
KkRQcm9jZWR1cmVfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3VsdCA9
IHRzZl90eXBlX2NyZWF0ZV9zdHJ1Y3Rfd2l0aF9uYXRpdmVfc2l6ZV9hbmRfZGVzdHJ1Y3Rvcl9h
b2Uoc2l6ZW9mKERQcm9jZWR1cmVfdCksICh2b2lkKCopKHZvaWQqKSlEUHJvY2VkdXJlX19kZXN0
cnVjdCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZF9wcmltaXRpdmVfd2l0aF9uYXRpdmVf
bWFwX2FvZSgmcmVzdWx0LCAibmFtZSIsIFRTRl9US19TVFJJTkcsIHRzZl9vZmZzZXRvZihEUHJv
Y2VkdXJlX3QsIG5hbWUpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRQ
cm9jZWR1cmUiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpEUHJvY2Vk
dXJlRGVjbF9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0gdHNm
X3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0cnVjdG9yX2FvZShz
aXplb2YoRFByb2NlZHVyZURlY2xfdCksICh2b2lkKCopKHZvaWQqKSlEUHJvY2VkdXJlRGVjbF9f
ZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0aXZlX3dpdGhfbmF0
aXZlX21hcF9hb2UoJnJlc3VsdCwgIm5hbWUiLCBUU0ZfVEtfU1RSSU5HLCB0c2Zfb2Zmc2V0b2Yo
RFByb2NlZHVyZURlY2xfdCwgbmFtZSkpOworICAgIHRzZl90eXBlX3NldF9uYW1lX2FvZSgmcmVz
dWx0LCAiRFByb2NlZHVyZURlY2wiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2ZfdHlw
ZV90ICpEUHJvY2VkdXJlRGVmbl9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAq
cmVzdWx0ID0gdHNmX3R5cGVfY3JlYXRlX3N0cnVjdF93aXRoX25hdGl2ZV9zaXplX2FuZF9kZXN0
cnVjdG9yX2FvZShzaXplb2YoRFByb2NlZHVyZURlZm5fdCksICh2b2lkKCopKHZvaWQqKSlEUHJv
Y2VkdXJlRGVmbl9fZGVzdHJ1Y3QpOworICAgIHRzZl9zdHJ1Y3RfdHlwZV9hcHBlbmRfcHJpbWl0
aXZlX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3VsdCwgIm5hbWUiLCBUU0ZfVEtfU1RSSU5HLCB0
c2Zfb2Zmc2V0b2YoRFByb2NlZHVyZURlZm5fdCwgbmFtZSkpOworICAgIHRzZl9zdHJ1Y3RfdHlw
ZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVwX3dpdGhfbmF0aXZlX21hcF9hb2UoJnJlc3Vs
dCwgInZhcmlhYmxlcyIsIERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2dldF90eXBlLCB0c2Zf
b2Zmc2V0b2YoRFByb2NlZHVyZURlZm5fdCwgdmFyaWFibGVzKSk7CisgICAgdHNmX3N0cnVjdF90
eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVz
dWx0LCAiY29kZSIsIERQcm9jZWR1cmVEZWZuX19jb2RlX19nZXRfdHlwZSwgdHNmX29mZnNldG9m
KERQcm9jZWR1cmVEZWZuX3QsIGNvZGUpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJl
c3VsdCwgIkRQcm9jZWR1cmVEZWZuIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5
cGVfdCAqRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90
eXBlX3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9hcnJheV9hb2UodHNmX3R5cGVfZHVwKERW
YXJpYWJsZURlY2xfX2dldF90eXBlKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2Zf
dHlwZV90ICpESW5zdHJ1Y3Rpb25fX2FycmF5X19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2Zf
dHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfYXJyYXlfYW9lKHRzZl90eXBlX2R1cChE
SW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0c2Zf
dHlwZV90ICpEUHJvZ3JhbUVsZW1lbnRfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBl
X3QgKnJlc3VsdCA9IHRzZl90eXBlX2NyZWF0ZV9jaG9pY2Vfd2l0aF9uYXRpdmVfbWFwX2FvZSgm
cmVzdWx0LCB0c2ZfdHJ1ZSwgdHNmX29mZnNldG9mKERQcm9ncmFtRWxlbWVudF90LCB2YWx1ZSks
IHRzZl9vZmZzZXRvZihEUHJvZ3JhbUVsZW1lbnRfdCwgdSksIHNpemVvZihEUHJvZ3JhbUVsZW1l
bnRfdCkpOworICAgIHRzZl9jaG9pY2VfdHlwZV9hcHBlbmRfZnJvbV9jYWxsYmFja19hbmRfZHVw
X2FvZSgmcmVzdWx0LCAicHJvY2VkdXJlRGVjbCIsIERQcm9jZWR1cmVEZWNsX19nZXRfdHlwZSk7
CisgICAgdHNmX2Nob2ljZV90eXBlX2FwcGVuZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfYW9lKCZy
ZXN1bHQsICJwcm9jZWR1cmVEZWZuIiwgRFByb2NlZHVyZURlZm5fX2dldF90eXBlKTsKKyAgICB0
c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRQcm9ncmFtRWxlbWVudCIpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3RzZl90eXBlX3QgKkRQcm9ncmFtX19idWlsZF90eXBlKHZvaWQp
IHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGVfc3RydWN0X3dpdGhf
bmF0aXZlX3NpemVfYW5kX2Rlc3RydWN0b3JfYW9lKHNpemVvZihEUHJvZ3JhbV90KSwgKHZvaWQo
Kikodm9pZCopKURQcm9ncmFtX19kZXN0cnVjdCk7CisgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVu
ZF9mcm9tX2NhbGxiYWNrX2FuZF9kdXBfd2l0aF9uYXRpdmVfbWFwX2FvZSgmcmVzdWx0LCAiZ2xv
YmFscyIsIERQcm9ncmFtX19nbG9iYWxzX19nZXRfdHlwZSwgdHNmX29mZnNldG9mKERQcm9ncmFt
X3QsIGdsb2JhbHMpKTsKKyAgICB0c2ZfdHlwZV9zZXRfbmFtZV9hb2UoJnJlc3VsdCwgIkRQcm9n
cmFtIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqRFByb2dyYW1FbGVt
ZW50X19hcnJheV9fYnVpbGRfdHlwZSh2b2lkKSB7CisgICAgdHNmX3R5cGVfdCAqcmVzdWx0ID0g
dHNmX3R5cGVfY3JlYXRlX2FycmF5X2FvZSh0c2ZfdHlwZV9kdXAoRFByb2dyYW1FbGVtZW50X19n
ZXRfdHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqREluc3Ry
dWN0aW9uX19jYWxsX19hcmdzX19idWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpy
ZXN1bHQgPSB0c2ZfdHlwZV9kdXAoaW50MTZfX2FycmF5X19nZXRfdHlwZSgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0c2ZfdHlwZV90ICpEUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX19i
dWlsZF90eXBlKHZvaWQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9kdXAo
RFZhcmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3RzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX19jb2RlX19idWlsZF90eXBlKHZvaWQpIHsK
KyAgICB0c2ZfdHlwZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9kdXAoREluc3RydWN0aW9uX19hcnJh
eV9fZ2V0X3R5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqRFBy
b2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUodm9pZCkgeworICAgIHRzZl90eXBlX3QgKnJlc3Vs
dCA9IHRzZl90eXBlX2R1cChEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19nZXRfdHlwZSgpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERPcGVy
YW5kX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGlsZSBET3BlcmFu
ZF9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2b2xhdGlsZSBET3BlcmFu
ZF9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRp
YyBwdGhyZWFkX29uY2VfdCBET3BlcmFuZF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsK
K3N0YXRpYyB2b2lkIERPcGVyYW5kX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBET3BlcmFu
ZF9fdHlwZSA9IERPcGVyYW5kX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQg
KkRPcGVyYW5kX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRE9wZXJhbmRfX2J1
aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRE9wZXJhbmRfX2dldF90eXBlKHZv
aWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBl
X3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRE9wZXJhbmRfX3R5cGUsIERPcGVyYW5kX190
eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZET3BlcmFuZF9fdHlwZV9f
b2MsIERPcGVyYW5kX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRE9wZXJhbmRfX3R5cGU7
CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhy
ZWFkX29uY2VfdCBET3BlcmFuZF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3Rh
dGljIHZvaWQgRE9wZXJhbmRfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRE9wZXJhbmRf
X2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKERPcGVyYW5kX19nZXRfdHlwZSgpKTsKK30K
KyNlbHNlCitzdGF0aWMgdm9pZCAqRE9wZXJhbmRfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7Cisg
ICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERPcGVyYW5kX19nZXRfdHlwZSgpKTsKK30K
KyNlbmRpZgordHNmX2dlbnJ0cl90ICpET3BlcmFuZF9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7Cisj
aWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRz
Zl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRE9wZXJhbmRfX2dlbnJ0ciwgRE9wZXJhbmRfX2dlbnJ0
cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRE9wZXJhbmRfX2dlbnJ0cl9f
b2MsIERPcGVyYW5kX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBET3BlcmFuZF9fZ2Vu
cnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMg
cHRocmVhZF9vbmNlX3QgRE9wZXJhbmRfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsK
K3N0YXRpYyB2b2lkIERPcGVyYW5kX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIERPcGVy
YW5kX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShET3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9
CisjZWxzZQorc3RhdGljIHZvaWQgKkRPcGVyYW5kX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShET3BlcmFuZF9fZ2V0X3R5cGUoKSk7Cit9Cisj
ZW5kaWYKK3RzZl9wYXJzZXJfdCAqRE9wZXJhbmRfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5p
dF9wb2ludGVyKCh2b2lkKiopJkRPcGVyYW5kX19wYXJzZXIsIERPcGVyYW5kX19wYXJzZXJfX2J1
aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRPcGVyYW5kX19wYXJzZXJfX29jLCBE
T3BlcmFuZF9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRE9wZXJhbmRfX3BhcnNlcjsK
KyNlbmRpZgorfQorCit0c2ZfYm9vbF90IERPcGVyYW5kX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVf
b3V0cHV0X3QgKm91dCwgRE9wZXJhbmRfdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRf
ZGF0YV93cml0ZShvdXQsIERPcGVyYW5kX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitE
T3BlcmFuZF90ICpET3BlcmFuZF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsK
KyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRE9wZXJhbmRfX2dldF9wYXJzZXIo
KSk7Cit9CisKK3RzZl9ib29sX3QgRE9wZXJhbmRfX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVf
aW5wdXRfdCAqaW4sIERPcGVyYW5kX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRf
ZGF0YV9yZWFkX2ludG8oaW4sIERPcGVyYW5kX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisK
K3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgRFR5cGVfX3R5cGUgPSBOVUxMOworc3RhdGlj
IHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIERUeXBlX19nZW5ydHIgPSBOVUxMOworc3RhdGljIHRz
Zl9wYXJzZXJfdCAqIHZvbGF0aWxlIERUeXBlX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERUeXBlX190eXBlX19v
YyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFR5cGVfX3R5cGVfX2J1aWxkZXIo
dm9pZCkgeworICAgIERUeXBlX190eXBlID0gRFR5cGVfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNl
CitzdGF0aWMgdm9pZCAqRFR5cGVfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBE
VHlwZV9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpEVHlwZV9fZ2V0X3R5
cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNm
X3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEVHlwZV9fdHlwZSwgRFR5cGVfX3R5
cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRUeXBlX190eXBlX19vYywg
RFR5cGVfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBEVHlwZV9fdHlwZTsKKyNlbmRpZgor
fQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90
IERUeXBlX19nZW5ydHJfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEVHlw
ZV9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICBEVHlwZV9fZ2VucnRyID0gdHNmX2dlbmVy
YXRvcl9jcmVhdGUoRFR5cGVfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpE
VHlwZV9fZ2VucnRyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX2dlbmVyYXRvcl9j
cmVhdGUoRFR5cGVfX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKkRUeXBl
X19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAg
ICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEVHlwZV9f
Z2VucnRyLCBEVHlwZV9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNl
KCZEVHlwZV9fZ2VucnRyX19vYywgRFR5cGVfX2dlbnJ0cl9fYnVpbGRlcik7CisgICAgcmV0dXJu
IERUeXBlX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEVHlwZV9fcGFyc2VyX19vYyA9IFBUSFJFQURfT05D
RV9JTklUOworc3RhdGljIHZvaWQgRFR5cGVfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAg
RFR5cGVfX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKERUeXBlX19nZXRfdHlwZSgpKTsKK30K
KyNlbHNlCitzdGF0aWMgdm9pZCAqRFR5cGVfX3BhcnNlcl9fYnVpbGRlcih2b2lkKSB7CisgICAg
cmV0dXJuIHRzZl9wYXJzZXJfY3JlYXRlKERUeXBlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgor
dHNmX3BhcnNlcl90ICpEVHlwZV9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVf
SU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50ZXIo
KHZvaWQqKikmRFR5cGVfX3BhcnNlciwgRFR5cGVfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQor
ICAgIHB0aHJlYWRfb25jZSgmRFR5cGVfX3BhcnNlcl9fb2MsIERUeXBlX19wYXJzZXJfX2J1aWxk
ZXIpOworICAgIHJldHVybiBEVHlwZV9fcGFyc2VyOworI2VuZGlmCit9Cit2b2lkIERUeXBlX19k
ZXN0cnVjdChEVHlwZV90ICpkYXRhKSB7CisgICAgZnJlZSgqZGF0YSk7Cit9CisKK3RzZl9ib29s
X3QgRFR5cGVfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEVHlwZV90ICpk
YXRhKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgRFR5cGVfX2dldF9n
ZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK0RUeXBlX3QgKkRUeXBlX19yZWFkKHRzZl9zdHJlYW1f
ZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBE
VHlwZV9fZ2V0X3BhcnNlcigpKTsKK30KKwordHNmX2Jvb2xfdCBEVHlwZV9fcmVhZF9pbnRvKHRz
Zl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwgRFR5cGVfdCAqcmVzdWx0KSB7CisgICAgcmV0dXJu
IHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgRFR5cGVfX2dldF9wYXJzZXIoKSwgcmVzdWx0
KTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEQ29kZU9mZnNldF9fdHlwZSA9
IE5VTEw7CitzdGF0aWMgdHNmX2dlbnJ0cl90ICogdm9sYXRpbGUgRENvZGVPZmZzZXRfX2dlbnJ0
ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgRENvZGVPZmZzZXRfX3Bh
cnNlciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgRENvZGVPZmZzZXRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7Citz
dGF0aWMgdm9pZCBEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRENvZGVP
ZmZzZXRfX3R5cGUgPSBEQ29kZU9mZnNldF9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRp
YyB2b2lkICpEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERD
b2RlT2Zmc2V0X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRDb2RlT2Zm
c2V0X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAg
cmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRDb2RlT2Zmc2V0
X190eXBlLCBEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRf
b25jZSgmRENvZGVPZmZzZXRfX3R5cGVfX29jLCBEQ29kZU9mZnNldF9fdHlwZV9fYnVpbGRlcik7
CisgICAgcmV0dXJuIERDb2RlT2Zmc2V0X190eXBlOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNG
X0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRENvZGVPZmZzZXRfX2dl
bnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERDb2RlT2Zmc2V0X19n
ZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIERDb2RlT2Zmc2V0X19nZW5ydHIgPSB0c2ZfZ2Vu
ZXJhdG9yX2NyZWF0ZShEQ29kZU9mZnNldF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGlj
IHZvaWQgKkRDb2RlT2Zmc2V0X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0
c2ZfZ2VuZXJhdG9yX2NyZWF0ZShEQ29kZU9mZnNldF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYK
K3RzZl9nZW5ydHJfdCAqRENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3Iodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0cl90Kil0c2ZfaW5p
dF9wb2ludGVyKCh2b2lkKiopJkRDb2RlT2Zmc2V0X19nZW5ydHIsIERDb2RlT2Zmc2V0X19nZW5y
dHJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRDb2RlT2Zmc2V0X19nZW5y
dHJfX29jLCBEQ29kZU9mZnNldF9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRENvZGVP
ZmZzZXRfX2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
Ugorc3RhdGljIHB0aHJlYWRfb25jZV90IERDb2RlT2Zmc2V0X19wYXJzZXJfX29jID0gUFRIUkVB
RF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEQ29kZU9mZnNldF9fcGFyc2VyX19idWlsZGVyKHZv
aWQpIHsKKyAgICBEQ29kZU9mZnNldF9fcGFyc2VyID0gdHNmX3BhcnNlcl9jcmVhdGUoRENvZGVP
ZmZzZXRfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEQ29kZU9mZnNldF9f
cGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoRENv
ZGVPZmZzZXRfX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKkRDb2RlT2Zm
c2V0X19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAg
ICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEQ29kZU9m
ZnNldF9fcGFyc2VyLCBEQ29kZU9mZnNldF9fcGFyc2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAg
cHRocmVhZF9vbmNlKCZEQ29kZU9mZnNldF9fcGFyc2VyX19vYywgRENvZGVPZmZzZXRfX3BhcnNl
cl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERDb2RlT2Zmc2V0X19wYXJzZXI7CisjZW5kaWYKK30K
KwordHNmX2Jvb2xfdCBEQ29kZU9mZnNldF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90
ICpvdXQsIERDb2RlT2Zmc2V0X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFf
d3JpdGUob3V0LCBEQ29kZU9mZnNldF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworRENv
ZGVPZmZzZXRfdCAqRENvZGVPZmZzZXRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlu
KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIERDb2RlT2Zmc2V0X19nZXRf
cGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IERDb2RlT2Zmc2V0X19yZWFkX2ludG8odHNmX3N0
cmVhbV9maWxlX2lucHV0X3QgKmluLCBEQ29kZU9mZnNldF90ICpyZXN1bHQpIHsKKyAgICByZXR1
cm4gdHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBEQ29kZU9mZnNldF9fZ2V0X3BhcnNlcigp
LCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERWYXJpYWJsZURl
Y2xfX3R5cGUgPSBOVUxMOworc3RhdGljIHRzZl9nZW5ydHJfdCAqIHZvbGF0aWxlIERWYXJpYWJs
ZURlY2xfX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUgRFZh
cmlhYmxlRGVjbF9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEVmFyaWFibGVEZWNsX190eXBlX19vYyA9IFBUSFJF
QURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcih2
b2lkKSB7CisgICAgRFZhcmlhYmxlRGVjbF9fdHlwZSA9IERWYXJpYWJsZURlY2xfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgcmV0dXJuIERWYXJpYWJsZURlY2xfX2J1aWxkX3R5cGUoKTsKK30KKyNl
bmRpZgordHNmX3R5cGVfdCAqRFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRf
cG9pbnRlcigodm9pZCoqKSZEVmFyaWFibGVEZWNsX190eXBlLCBEVmFyaWFibGVEZWNsX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEVmFyaWFibGVEZWNsX190eXBl
X19vYywgRFZhcmlhYmxlRGVjbF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIERWYXJpYWJs
ZURlY2xfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEVmFyaWFibGVEZWNsX19nZW5ydHJfX29jID0gUFRIUkVB
RF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEVmFyaWFibGVEZWNsX19nZW5ydHJfX2J1aWxkZXIo
dm9pZCkgeworICAgIERWYXJpYWJsZURlY2xfX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRl
KERWYXJpYWJsZURlY2xfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEVmFy
aWFibGVEZWNsX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfZ2VuZXJh
dG9yX2NyZWF0ZShEVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dl
bnJ0cl90ICpEVmFyaWFibGVEZWNsX19nZXRfZ2VuZXJhdG9yKHZvaWQpIHsKKyNpZmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9nZW5ydHJfdCopdHNmX2luaXRfcG9p
bnRlcigodm9pZCoqKSZEVmFyaWFibGVEZWNsX19nZW5ydHIsIERWYXJpYWJsZURlY2xfX2dlbnJ0
cl9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRFZhcmlhYmxlRGVjbF9fZ2Vu
cnRyX19vYywgRFZhcmlhYmxlRGVjbF9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFZh
cmlhYmxlRGVjbF9fZ2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9Q
T0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRFZhcmlhYmxlRGVjbF9fcGFyc2VyX19vYyA9
IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFZhcmlhYmxlRGVjbF9fcGFyc2VyX19i
dWlsZGVyKHZvaWQpIHsKKyAgICBEVmFyaWFibGVEZWNsX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2Ny
ZWF0ZShEVmFyaWFibGVEZWNsX19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAq
RFZhcmlhYmxlRGVjbF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3Bh
cnNlcl9jcmVhdGUoRFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9w
YXJzZXJfdCAqRFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcih2b2lkKSB7CisjaWZkZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfcGFyc2VyX3QqKXRzZl9pbml0X3BvaW50
ZXIoKHZvaWQqKikmRFZhcmlhYmxlRGVjbF9fcGFyc2VyLCBEVmFyaWFibGVEZWNsX19wYXJzZXJf
X2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRWYXJpYWJsZURlY2xfX3BhcnNl
cl9fb2MsIERWYXJpYWJsZURlY2xfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERWYXJp
YWJsZURlY2xfX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBEVmFyaWFibGVEZWNsX19kZXN0cnVj
dChEVmFyaWFibGVEZWNsX3QgKmRhdGEpIHsKKyAgICBEVHlwZV9fZGVzdHJ1Y3QoJmRhdGEtPnR5
cGUpOworfQorCit0c2ZfYm9vbF90IERWYXJpYWJsZURlY2xfX3dyaXRlKHRzZl9zdHJlYW1fZmls
ZV9vdXRwdXRfdCAqb3V0LCBEVmFyaWFibGVEZWNsX3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNm
X3R5cGVkX2RhdGFfd3JpdGUob3V0LCBEVmFyaWFibGVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRh
dGEpOworfQorCitEVmFyaWFibGVEZWNsX3QgKkRWYXJpYWJsZURlY2xfX3JlYWQodHNmX3N0cmVh
bV9maWxlX2lucHV0X3QgKmluKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4s
IERWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgRFZhcmlhYmxl
RGVjbF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbiwgRFZhcmlhYmxlRGVj
bF90ICpyZXN1bHQpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBE
VmFyaWFibGVEZWNsX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlw
ZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2Vu
cnRyX3QgKiB2b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNm
X3BhcnNlcl90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19wYXJzZXIgPSBOVUxMOworCisjaWZu
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERJbnN0cnVj
dGlvbl9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERJbnN0cnVj
dGlvbl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgREluc3RydWN0aW9uX190eXBlID0gRElu
c3RydWN0aW9uX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0cnVj
dGlvbl9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fYnVp
bGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2dldF90eXBl
KHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90
eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX190eXBlLCBESW5z
dHJ1Y3Rpb25fX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRJbnN0
cnVjdGlvbl9fdHlwZV9fb2MsIERJbnN0cnVjdGlvbl9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0
dXJuIERJbnN0cnVjdGlvbl9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lO
SVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERJbnN0cnVjdGlvbl9fZ2VucnRyX19v
YyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgREluc3RydWN0aW9uX19nZW5ydHJf
X2J1aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlvbl9fZ2VucnRyID0gdHNmX2dlbmVyYXRv
cl9jcmVhdGUoREluc3RydWN0aW9uX19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9p
ZCAqREluc3RydWN0aW9uX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2Zf
Z2VuZXJhdG9yX2NyZWF0ZShESW5zdHJ1Y3Rpb25fX2dldF90eXBlKCkpOworfQorI2VuZGlmCit0
c2ZfZ2VucnRyX3QgKkRJbnN0cnVjdGlvbl9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0
X3BvaW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX19nZW5ydHIsIERJbnN0cnVjdGlvbl9fZ2Vu
cnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1Y3Rpb25fX2dl
bnJ0cl9fb2MsIERJbnN0cnVjdGlvbl9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRElu
c3RydWN0aW9uX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BP
SU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rpb25fX3BhcnNlcl9fb2MgPSBQ
VEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERJbnN0cnVjdGlvbl9fcGFyc2VyX19idWls
ZGVyKHZvaWQpIHsKKyAgICBESW5zdHJ1Y3Rpb25fX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRl
KERJbnN0cnVjdGlvbl9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0
cnVjdGlvbl9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9j
cmVhdGUoREluc3RydWN0aW9uX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90
ICpESW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRf
UE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lk
KiopJkRJbnN0cnVjdGlvbl9fcGFyc2VyLCBESW5zdHJ1Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcik7
CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmREluc3RydWN0aW9uX19wYXJzZXJfX29jLCBESW5z
dHJ1Y3Rpb25fX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fcGFy
c2VyOworI2VuZGlmCit9Cit2b2lkIERJbnN0cnVjdGlvbl9fZGVzdHJ1Y3QoREluc3RydWN0aW9u
X3QgKmRhdGEpIHsKKyAgICBzd2l0Y2ggKGRhdGEtPnZhbHVlKSB7CisgICAgY2FzZSAzOgorICAg
ICAgICBESW5zdHJ1Y3Rpb25fX2FsbG9jX19kZXN0cnVjdCgmZGF0YS0+dS5hbGxvYyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgNjoKKyAgICAgICAgREluc3RydWN0aW9uX19jYWxsX19kZXN0
cnVjdCgmZGF0YS0+dS5jYWxsKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCit0c2ZfYm9vbF90IERJbnN0cnVjdGlvbl9fd3JpdGUodHNm
X3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERJbnN0cnVjdGlvbl90ICpkYXRhKSB7CisgICAg
cmV0dXJuIHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgREluc3RydWN0aW9uX19nZXRfZ2VuZXJh
dG9yKCksIGRhdGEpOworfQorCitESW5zdHJ1Y3Rpb25fdCAqREluc3RydWN0aW9uX19yZWFkKHRz
Zl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9y
ZWFkKGluLCBESW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgRElu
c3RydWN0aW9uX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluLCBESW5zdHJ1
Y3Rpb25fdCAqcmVzdWx0KSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhp
biwgREluc3RydWN0aW9uX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2Zf
dHlwZV90ICogdm9sYXRpbGUgRFByb2NlZHVyZV9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNmX2dl
bnJ0cl90ICogdm9sYXRpbGUgRFByb2NlZHVyZV9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2Zf
cGFyc2VyX3QgKiB2b2xhdGlsZSBEUHJvY2VkdXJlX19wYXJzZXIgPSBOVUxMOworCisjaWZuZGVm
IFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9jZWR1cmVf
X3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvY2VkdXJlX190
eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvY2VkdXJlX190eXBlID0gRFByb2NlZHVyZV9f
YnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvY2VkdXJlX190eXBlX19i
dWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2NlZHVyZV9fYnVpbGRfdHlwZSgpOworfQor
I2VuZGlmCit0c2ZfdHlwZV90ICpEUHJvY2VkdXJlX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJkRQcm9jZWR1cmVfX3R5cGUsIERQcm9jZWR1cmVfX3R5cGVfX2J1aWxk
ZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9jZWR1cmVfX3R5cGVfX29jLCBEUHJv
Y2VkdXJlX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZV9fdHlwZTsKKyNl
bmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRf
b25jZV90IERQcm9jZWR1cmVfX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRp
YyB2b2lkIERQcm9jZWR1cmVfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVy
ZV9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9jcmVhdGUoRFByb2NlZHVyZV9fZ2V0X3R5cGUoKSk7
Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1cmVfX2dlbnJ0cl9fYnVpbGRlcih2b2lk
KSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVfX2dldF90eXBl
KCkpOworfQorI2VuZGlmCit0c2ZfZ2VucnRyX3QgKkRQcm9jZWR1cmVfX2dldF9nZW5lcmF0b3Io
dm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dl
bnJ0cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9jZWR1cmVfX2dlbnJ0ciwgRFBy
b2NlZHVyZV9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJv
Y2VkdXJlX19nZW5ydHJfX29jLCBEUHJvY2VkdXJlX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJl
dHVybiBEUHJvY2VkdXJlX19nZW5ydHI7CisjZW5kaWYKK30KKworI2lmbmRlZiBUU0ZfSEFWRV9J
TklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlX19wYXJzZXJfX29j
ID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvY2VkdXJlX19wYXJzZXJfX2J1
aWxkZXIodm9pZCkgeworICAgIERQcm9jZWR1cmVfX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRl
KERQcm9jZWR1cmVfX2dldF90eXBlKCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvY2Vk
dXJlX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0
ZShEUHJvY2VkdXJlX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpEUHJv
Y2VkdXJlX19nZXRfcGFyc2VyKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
KyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEUHJv
Y2VkdXJlX19wYXJzZXIsIERQcm9jZWR1cmVfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQorICAg
IHB0aHJlYWRfb25jZSgmRFByb2NlZHVyZV9fcGFyc2VyX19vYywgRFByb2NlZHVyZV9fcGFyc2Vy
X19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZV9fcGFyc2VyOworI2VuZGlmCit9Cit2
b2lkIERQcm9jZWR1cmVfX2Rlc3RydWN0KERQcm9jZWR1cmVfdCAqZGF0YSkgeworICAgIGZyZWUo
KiZkYXRhLT5uYW1lKTsKK30KKwordHNmX2Jvb2xfdCBEUHJvY2VkdXJlX193cml0ZSh0c2Zfc3Ry
ZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgRFByb2NlZHVyZV90ICpkYXRhKSB7CisgICAgcmV0dXJu
IHRzZl90eXBlZF9kYXRhX3dyaXRlKG91dCwgRFByb2NlZHVyZV9fZ2V0X2dlbmVyYXRvcigpLCBk
YXRhKTsKK30KKworRFByb2NlZHVyZV90ICpEUHJvY2VkdXJlX19yZWFkKHRzZl9zdHJlYW1fZmls
ZV9pbnB1dF90ICppbikgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkKGluLCBEUHJv
Y2VkdXJlX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IERQcm9jZWR1cmVfX3JlYWRf
aW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIERQcm9jZWR1cmVfdCAqcmVzdWx0KSB7
CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWRfaW50byhpbiwgRFByb2NlZHVyZV9fZ2V0
X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERQ
cm9jZWR1cmVEZWNsX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3QgKiB2b2xhdGls
ZSBEUHJvY2VkdXJlRGVjbF9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFyc2VyX3QgKiB2
b2xhdGlsZSBEUHJvY2VkdXJlRGVjbF9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlRGVjbF9fdHlw
ZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQcm9jZWR1cmVEZWNsX190
eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvY2VkdXJlRGVjbF9fdHlwZSA9IERQcm9jZWR1
cmVEZWNsX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1cmVE
ZWNsX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2NlZHVyZURlY2xfX2J1
aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRFByb2NlZHVyZURlY2xfX2dldF90
eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRz
Zl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2NlZHVyZURlY2xfX3R5cGUs
IERQcm9jZWR1cmVEZWNsX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNl
KCZEUHJvY2VkdXJlRGVjbF9fdHlwZV9fb2MsIERQcm9jZWR1cmVEZWNsX190eXBlX19idWlsZGVy
KTsKKyAgICByZXR1cm4gRFByb2NlZHVyZURlY2xfX3R5cGU7CisjZW5kaWYKK30KKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJl
RGVjbF9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFByb2Nl
ZHVyZURlY2xfX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZURlY2xfX2dl
bnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVEZWNsX19nZXRfdHlwZSgpKTsK
K30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFByb2NlZHVyZURlY2xfX2dlbnJ0cl9fYnVpbGRlcih2
b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVEZWNsX19n
ZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpEUHJvY2VkdXJlRGVjbF9fZ2V0
X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0
dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2NlZHVyZURl
Y2xfX2dlbnJ0ciwgRFByb2NlZHVyZURlY2xfX2dlbnJ0cl9fYnVpbGRlcik7CisjZWxzZQorICAg
IHB0aHJlYWRfb25jZSgmRFByb2NlZHVyZURlY2xfX2dlbnJ0cl9fb2MsIERQcm9jZWR1cmVEZWNs
X19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBEUHJvY2VkdXJlRGVjbF9fZ2VucnRyOwor
I2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVh
ZF9vbmNlX3QgRFByb2NlZHVyZURlY2xfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsK
K3N0YXRpYyB2b2lkIERQcm9jZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAg
IERQcm9jZWR1cmVEZWNsX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShEUHJvY2VkdXJlRGVj
bF9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1cmVEZWNsX19w
YXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2NyZWF0ZShEUHJv
Y2VkdXJlRGVjbF9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJfdCAqRFByb2Nl
ZHVyZURlY2xfX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
UgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQ
cm9jZWR1cmVEZWNsX19wYXJzZXIsIERQcm9jZWR1cmVEZWNsX19wYXJzZXJfX2J1aWxkZXIpOwor
I2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9jZWR1cmVEZWNsX19wYXJzZXJfX29jLCBEUHJv
Y2VkdXJlRGVjbF9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZURlY2xf
X3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBEUHJvY2VkdXJlRGVjbF9fZGVzdHJ1Y3QoRFByb2Nl
ZHVyZURlY2xfdCAqZGF0YSkgeworICAgIGZyZWUoKiZkYXRhLT5uYW1lKTsKK30KKwordHNmX2Jv
b2xfdCBEUHJvY2VkdXJlRGVjbF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQs
IERQcm9jZWR1cmVEZWNsX3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfd3Jp
dGUob3V0LCBEUHJvY2VkdXJlRGVjbF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsKK30KKworRFBy
b2NlZHVyZURlY2xfdCAqRFByb2NlZHVyZURlY2xfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0
X3QgKmluKSB7CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIERQcm9jZWR1cmVE
ZWNsX19nZXRfcGFyc2VyKCkpOworfQorCit0c2ZfYm9vbF90IERQcm9jZWR1cmVEZWNsX19yZWFk
X2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluLCBEUHJvY2VkdXJlRGVjbF90ICpyZXN1
bHQpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBEUHJvY2VkdXJl
RGVjbF9fZ2V0X3BhcnNlcigpLCByZXN1bHQpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZv
bGF0aWxlIERQcm9jZWR1cmVEZWZuX190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2VucnRyX3Qg
KiB2b2xhdGlsZSBEUHJvY2VkdXJlRGVmbl9fZ2VucnRyID0gTlVMTDsKK3N0YXRpYyB0c2ZfcGFy
c2VyX3QgKiB2b2xhdGlsZSBEUHJvY2VkdXJlRGVmbl9fcGFyc2VyID0gTlVMTDsKKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJl
RGVmbl9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQcm9jZWR1
cmVEZWZuX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvY2VkdXJlRGVmbl9fdHlwZSA9
IERQcm9jZWR1cmVEZWZuX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQ
cm9jZWR1cmVEZWZuX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2NlZHVy
ZURlZm5fX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRFByb2NlZHVyZURl
Zm5fX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICBy
ZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2NlZHVyZURl
Zm5fX3R5cGUsIERQcm9jZWR1cmVEZWZuX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRo
cmVhZF9vbmNlKCZEUHJvY2VkdXJlRGVmbl9fdHlwZV9fb2MsIERQcm9jZWR1cmVEZWZuX190eXBl
X19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2NlZHVyZURlZm5fX3R5cGU7CisjZW5kaWYKK30K
KworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBE
UHJvY2VkdXJlRGVmbl9fZ2VucnRyX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZv
aWQgRFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVy
ZURlZm5fX2dlbnJ0ciA9IHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1cmVEZWZuX19nZXRf
dHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFByb2NlZHVyZURlZm5fX2dlbnJ0cl9f
YnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIHRzZl9nZW5lcmF0b3JfY3JlYXRlKERQcm9jZWR1
cmVEZWZuX19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX2dlbnJ0cl90ICpEUHJvY2VkdXJl
RGVmbl9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFBy
b2NlZHVyZURlZm5fX2dlbnJ0ciwgRFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fYnVpbGRlcik7Cisj
ZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRFByb2NlZHVyZURlZm5fX2dlbnJ0cl9fb2MsIERQcm9j
ZWR1cmVEZWZuX19nZW5ydHJfX2J1aWxkZXIpOworICAgIHJldHVybiBEUHJvY2VkdXJlRGVmbl9f
Z2VucnRyOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0
aWMgcHRocmVhZF9vbmNlX3QgRFByb2NlZHVyZURlZm5fX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQcm9jZWR1cmVEZWZuX19wYXJzZXJfX2J1aWxkZXIodm9p
ZCkgeworICAgIERQcm9jZWR1cmVEZWZuX19wYXJzZXIgPSB0c2ZfcGFyc2VyX2NyZWF0ZShEUHJv
Y2VkdXJlRGVmbl9fZ2V0X3R5cGUoKSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9jZWR1
cmVEZWZuX19wYXJzZXJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2ZfcGFyc2VyX2Ny
ZWF0ZShEUHJvY2VkdXJlRGVmbl9fZ2V0X3R5cGUoKSk7Cit9CisjZW5kaWYKK3RzZl9wYXJzZXJf
dCAqRFByb2NlZHVyZURlZm5fX2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lO
SVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2
b2lkKiopJkRQcm9jZWR1cmVEZWZuX19wYXJzZXIsIERQcm9jZWR1cmVEZWZuX19wYXJzZXJfX2J1
aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9jZWR1cmVEZWZuX19wYXJzZXJf
X29jLCBEUHJvY2VkdXJlRGVmbl9fcGFyc2VyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2Nl
ZHVyZURlZm5fX3BhcnNlcjsKKyNlbmRpZgorfQordm9pZCBEUHJvY2VkdXJlRGVmbl9fZGVzdHJ1
Y3QoRFByb2NlZHVyZURlZm5fdCAqZGF0YSkgeworICAgIGZyZWUoKiZkYXRhLT5uYW1lKTsKKyAg
ICBEUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX19kZXN0cnVjdCgmZGF0YS0+dmFyaWFibGVzKTsK
KyAgICBEUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVzdHJ1Y3QoJmRhdGEtPmNvZGUpOworfQorCit0
c2ZfYm9vbF90IERQcm9jZWR1cmVEZWZuX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3Qg
Km91dCwgRFByb2NlZHVyZURlZm5fdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0
YV93cml0ZShvdXQsIERQcm9jZWR1cmVEZWZuX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQor
CitEUHJvY2VkdXJlRGVmbl90ICpEUHJvY2VkdXJlRGVmbl9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVf
aW5wdXRfdCAqaW4pIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRFByb2Nl
ZHVyZURlZm5fX2dldF9wYXJzZXIoKSk7Cit9CisKK3RzZl9ib29sX3QgRFByb2NlZHVyZURlZm5f
X3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIERQcm9jZWR1cmVEZWZuX3Qg
KnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFkX2ludG8oaW4sIERQcm9j
ZWR1cmVEZWZuX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90
ICogdm9sYXRpbGUgRFByb2dyYW1FbGVtZW50X190eXBlID0gTlVMTDsKK3N0YXRpYyB0c2ZfZ2Vu
cnRyX3QgKiB2b2xhdGlsZSBEUHJvZ3JhbUVsZW1lbnRfX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMg
dHNmX3BhcnNlcl90ICogdm9sYXRpbGUgRFByb2dyYW1FbGVtZW50X19wYXJzZXIgPSBOVUxMOwor
CisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQ
cm9ncmFtRWxlbWVudF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lk
IERQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2dyYW1FbGVt
ZW50X190eXBlID0gRFByb2dyYW1FbGVtZW50X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKkRQcm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0
dXJuIERQcm9ncmFtRWxlbWVudF9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90
ICpEUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklU
X1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQq
KikmRFByb2dyYW1FbGVtZW50X190eXBlLCBEUHJvZ3JhbUVsZW1lbnRfX3R5cGVfX2J1aWxkZXIp
OworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtRWxlbWVudF9fdHlwZV9fb2MsIERQ
cm9ncmFtRWxlbWVudF9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFtRWxlbWVu
dF9fdHlwZTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3Rh
dGljIHB0aHJlYWRfb25jZV90IERQcm9ncmFtRWxlbWVudF9fZ2VucnRyX19vYyA9IFBUSFJFQURf
T05DRV9JTklUOworc3RhdGljIHZvaWQgRFByb2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxkZXIo
dm9pZCkgeworICAgIERQcm9ncmFtRWxlbWVudF9fZ2VucnRyID0gdHNmX2dlbmVyYXRvcl9jcmVh
dGUoRFByb2dyYW1FbGVtZW50X19nZXRfdHlwZSgpKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAq
RFByb2dyYW1FbGVtZW50X19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiB0c2Zf
Z2VuZXJhdG9yX2NyZWF0ZShEUHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOworfQorI2VuZGlm
Cit0c2ZfZ2VucnRyX3QgKkRQcm9ncmFtRWxlbWVudF9fZ2V0X2dlbmVyYXRvcih2b2lkKSB7Cisj
aWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfZ2VucnRyX3QqKXRz
Zl9pbml0X3BvaW50ZXIoKHZvaWQqKikmRFByb2dyYW1FbGVtZW50X19nZW5ydHIsIERQcm9ncmFt
RWxlbWVudF9fZ2VucnRyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJv
Z3JhbUVsZW1lbnRfX2dlbnJ0cl9fb2MsIERQcm9ncmFtRWxlbWVudF9fZ2VucnRyX19idWlsZGVy
KTsKKyAgICByZXR1cm4gRFByb2dyYW1FbGVtZW50X19nZW5ydHI7CisjZW5kaWYKK30KKworI2lm
bmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvZ3Jh
bUVsZW1lbnRfX3BhcnNlcl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERQ
cm9ncmFtRWxlbWVudF9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvZ3JhbUVsZW1l
bnRfX3BhcnNlciA9IHRzZl9wYXJzZXJfY3JlYXRlKERQcm9ncmFtRWxlbWVudF9fZ2V0X3R5cGUo
KSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9ncmFtRWxlbWVudF9fcGFyc2VyX19idWls
ZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoRFByb2dyYW1FbGVtZW50
X19nZXRfdHlwZSgpKTsKK30KKyNlbmRpZgordHNmX3BhcnNlcl90ICpEUHJvZ3JhbUVsZW1lbnRf
X2dldF9wYXJzZXIodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJl
dHVybiAodHNmX3BhcnNlcl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtRWxl
bWVudF9fcGFyc2VyLCBEUHJvZ3JhbUVsZW1lbnRfX3BhcnNlcl9fYnVpbGRlcik7CisjZWxzZQor
ICAgIHB0aHJlYWRfb25jZSgmRFByb2dyYW1FbGVtZW50X19wYXJzZXJfX29jLCBEUHJvZ3JhbUVs
ZW1lbnRfX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFtRWxlbWVudF9fcGFy
c2VyOworI2VuZGlmCit9Cit2b2lkIERQcm9ncmFtRWxlbWVudF9fZGVzdHJ1Y3QoRFByb2dyYW1F
bGVtZW50X3QgKmRhdGEpIHsKKyAgICBzd2l0Y2ggKGRhdGEtPnZhbHVlKSB7CisgICAgY2FzZSAw
OgorICAgICAgICBEUHJvY2VkdXJlRGVjbF9fZGVzdHJ1Y3QoJmRhdGEtPnUucHJvY2VkdXJlRGVj
bCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgRFByb2NlZHVyZURlZm5f
X2Rlc3RydWN0KCZkYXRhLT51LnByb2NlZHVyZURlZm4pOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RzZl9ib29sX3QgRFByb2dyYW1F
bGVtZW50X193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKm91dCwgRFByb2dyYW1FbGVt
ZW50X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfd3JpdGUob3V0LCBEUHJv
Z3JhbUVsZW1lbnRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7Cit9CisKK0RQcm9ncmFtRWxlbWVu
dF90ICpEUHJvZ3JhbUVsZW1lbnRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmluKSB7
CisgICAgcmV0dXJuIHRzZl90eXBlZF9kYXRhX3JlYWQoaW4sIERQcm9ncmFtRWxlbWVudF9fZ2V0
X3BhcnNlcigpKTsKK30KKwordHNmX2Jvb2xfdCBEUHJvZ3JhbUVsZW1lbnRfX3JlYWRfaW50byh0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4sIERQcm9ncmFtRWxlbWVudF90ICpyZXN1bHQpIHsK
KyAgICByZXR1cm4gdHNmX3R5cGVkX2RhdGFfcmVhZF9pbnRvKGluLCBEUHJvZ3JhbUVsZW1lbnRf
X2dldF9wYXJzZXIoKSwgcmVzdWx0KTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGls
ZSBEUHJvZ3JhbV9fdHlwZSA9IE5VTEw7CitzdGF0aWMgdHNmX2dlbnJ0cl90ICogdm9sYXRpbGUg
RFByb2dyYW1fX2dlbnJ0ciA9IE5VTEw7CitzdGF0aWMgdHNmX3BhcnNlcl90ICogdm9sYXRpbGUg
RFByb2dyYW1fX3BhcnNlciA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVS
CitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRFByb2dyYW1fX3R5cGVfX29jID0gUFRIUkVBRF9PTkNF
X0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvZ3JhbV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAg
RFByb2dyYW1fX3R5cGUgPSBEUHJvZ3JhbV9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRp
YyB2b2lkICpEUHJvZ3JhbV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERQcm9n
cmFtX19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRQcm9ncmFtX19nZXRf
dHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0
c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtX190eXBlLCBEUHJv
Z3JhbV9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRFByb2dyYW1f
X3R5cGVfX29jLCBEUHJvZ3JhbV9fdHlwZV9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFt
X190eXBlOworI2VuZGlmCit9CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0
aWMgcHRocmVhZF9vbmNlX3QgRFByb2dyYW1fX2dlbnJ0cl9fb2MgPSBQVEhSRUFEX09OQ0VfSU5J
VDsKK3N0YXRpYyB2b2lkIERQcm9ncmFtX19nZW5ydHJfX2J1aWxkZXIodm9pZCkgeworICAgIERQ
cm9ncmFtX19nZW5ydHIgPSB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShEUHJvZ3JhbV9fZ2V0X3R5cGUo
KSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRQcm9ncmFtX19nZW5ydHJfX2J1aWxkZXIodm9p
ZCkgeworICAgIHJldHVybiB0c2ZfZ2VuZXJhdG9yX2NyZWF0ZShEUHJvZ3JhbV9fZ2V0X3R5cGUo
KSk7Cit9CisjZW5kaWYKK3RzZl9nZW5ydHJfdCAqRFByb2dyYW1fX2dldF9nZW5lcmF0b3Iodm9p
ZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX2dlbnJ0
cl90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtX19nZW5ydHIsIERQcm9ncmFt
X19nZW5ydHJfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtX19n
ZW5ydHJfX29jLCBEUHJvZ3JhbV9fZ2VucnRyX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2dy
YW1fX2dlbnJ0cjsKKyNlbmRpZgorfQorCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgor
c3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9ncmFtX19wYXJzZXJfX29jID0gUFRIUkVBRF9PTkNF
X0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvZ3JhbV9fcGFyc2VyX19idWlsZGVyKHZvaWQpIHsKKyAg
ICBEUHJvZ3JhbV9fcGFyc2VyID0gdHNmX3BhcnNlcl9jcmVhdGUoRFByb2dyYW1fX2dldF90eXBl
KCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvZ3JhbV9fcGFyc2VyX19idWlsZGVyKHZv
aWQpIHsKKyAgICByZXR1cm4gdHNmX3BhcnNlcl9jcmVhdGUoRFByb2dyYW1fX2dldF90eXBlKCkp
OworfQorI2VuZGlmCit0c2ZfcGFyc2VyX3QgKkRQcm9ncmFtX19nZXRfcGFyc2VyKHZvaWQpIHsK
KyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl9wYXJzZXJfdCop
dHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEUHJvZ3JhbV9fcGFyc2VyLCBEUHJvZ3JhbV9fcGFy
c2VyX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJvZ3JhbV9fcGFyc2Vy
X19vYywgRFByb2dyYW1fX3BhcnNlcl9fYnVpbGRlcik7CisgICAgcmV0dXJuIERQcm9ncmFtX19w
YXJzZXI7CisjZW5kaWYKK30KK3ZvaWQgRFByb2dyYW1fX2Rlc3RydWN0KERQcm9ncmFtX3QgKmRh
dGEpIHsKKyAgICBEUHJvZ3JhbV9fZ2xvYmFsc19fZGVzdHJ1Y3QoJmRhdGEtPmdsb2JhbHMpOwor
fQorCit0c2ZfYm9vbF90IERQcm9ncmFtX193cml0ZSh0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3Qg
Km91dCwgRFByb2dyYW1fdCAqZGF0YSkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV93cml0
ZShvdXQsIERQcm9ncmFtX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOworfQorCitEUHJvZ3JhbV90
ICpEUHJvZ3JhbV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW4pIHsKKyAgICByZXR1
cm4gdHNmX3R5cGVkX2RhdGFfcmVhZChpbiwgRFByb2dyYW1fX2dldF9wYXJzZXIoKSk7Cit9CisK
K3RzZl9ib29sX3QgRFByb2dyYW1fX3JlYWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAq
aW4sIERQcm9ncmFtX3QgKnJlc3VsdCkgeworICAgIHJldHVybiB0c2ZfdHlwZWRfZGF0YV9yZWFk
X2ludG8oaW4sIERQcm9ncmFtX19nZXRfcGFyc2VyKCksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyB0
c2ZfdHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19tb3ZfX3R5cGUgPSBOVUxMOworCisj
aWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERJbnN0
cnVjdGlvbl9fbW92X190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQg
REluc3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlv
bl9fbW92X190eXBlID0gREluc3RydWN0aW9uX19tb3ZfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNl
CitzdGF0aWMgdm9pZCAqREluc3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIodm9pZCkgewor
ICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX21vdl9fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0
c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX21vdl9fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9p
bnRlcigodm9pZCoqKSZESW5zdHJ1Y3Rpb25fX21vdl9fdHlwZSwgREluc3RydWN0aW9uX19tb3Zf
X3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRJbnN0cnVjdGlvbl9f
bW92X190eXBlX19vYywgREluc3RydWN0aW9uX19tb3ZfX3R5cGVfX2J1aWxkZXIpOworICAgIHJl
dHVybiBESW5zdHJ1Y3Rpb25fX21vdl9fdHlwZTsKKyNlbmRpZgorfQorCitzdGF0aWMgdHNmX3R5
cGVfdCAqIHZvbGF0aWxlIERJbnN0cnVjdGlvbl9fYWRkX190eXBlID0gTlVMTDsKKworI2lmbmRl
ZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rp
b25fX2FkZF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERJbnN0
cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBESW5zdHJ1Y3Rpb25fX2Fk
ZF9fdHlwZSA9IERJbnN0cnVjdGlvbl9fYWRkX19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3Rh
dGljIHZvaWQgKkRJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBy
ZXR1cm4gREluc3RydWN0aW9uX19hZGRfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5
cGVfdCAqREluc3RydWN0aW9uX19hZGRfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIo
KHZvaWQqKikmREluc3RydWN0aW9uX19hZGRfX3R5cGUsIERJbnN0cnVjdGlvbl9fYWRkX190eXBl
X19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1Y3Rpb25fX2FkZF9f
dHlwZV9fb2MsIERJbnN0cnVjdGlvbl9fYWRkX190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4g
REluc3RydWN0aW9uX19hZGRfX3R5cGU7CisjZW5kaWYKK30KKworc3RhdGljIHRzZl90eXBlX3Qg
KiB2b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBU
U0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rpb25f
X2FsbG9jX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgREluc3Ry
dWN0aW9uX19hbGxvY19fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgREluc3RydWN0aW9uX19h
bGxvY19fdHlwZSA9IERJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNl
CitzdGF0aWMgdm9pZCAqREluc3RydWN0aW9uX19hbGxvY19fdHlwZV9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fYWxsb2NfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRp
ZgordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19hbGxvY19fZ2V0X3R5cGUodm9pZCkgeworI2lm
ZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2lu
aXRfcG9pbnRlcigodm9pZCoqKSZESW5zdHJ1Y3Rpb25fX2FsbG9jX190eXBlLCBESW5zdHJ1Y3Rp
b25fX2FsbG9jX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5z
dHJ1Y3Rpb25fX2FsbG9jX190eXBlX19vYywgREluc3RydWN0aW9uX19hbGxvY19fdHlwZV9fYnVp
bGRlcik7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fYWxsb2NfX3R5cGU7CisjZW5kaWYKK30K
K3ZvaWQgREluc3RydWN0aW9uX19hbGxvY19fZGVzdHJ1Y3QoREluc3RydWN0aW9uX19hbGxvY190
ICpkYXRhKSB7CisgICAgRFR5cGVfX2Rlc3RydWN0KCZkYXRhLT50eXBlKTsKK30KKworc3RhdGlj
IHRzZl90eXBlX3QgKiB2b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX3JldF9fdHlwZSA9IE5VTEw7CisK
KyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRElu
c3RydWN0aW9uX19yZXRfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9p
ZCBESW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgREluc3RydWN0
aW9uX19yZXRfX3R5cGUgPSBESW5zdHJ1Y3Rpb25fX3JldF9fYnVpbGRfdHlwZSgpOworfQorI2Vs
c2UKK3N0YXRpYyB2b2lkICpESW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7
CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fcmV0X19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYK
K3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fcmV0X19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fcmV0X190eXBlLCBESW5zdHJ1Y3Rpb25fX3Jl
dF9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmREluc3RydWN0aW9u
X19yZXRfX3R5cGVfX29jLCBESW5zdHJ1Y3Rpb25fX3JldF9fdHlwZV9fYnVpbGRlcik7CisgICAg
cmV0dXJuIERJbnN0cnVjdGlvbl9fcmV0X190eXBlOworI2VuZGlmCit9CisKK3N0YXRpYyB0c2Zf
dHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19qdW1wX190eXBlID0gTlVMTDsKKworI2lm
bmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1
Y3Rpb25fX2p1bXBfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBE
SW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlv
bl9fanVtcF9fdHlwZSA9IERJbnN0cnVjdGlvbl9fanVtcF9fYnVpbGRfdHlwZSgpOworfQorI2Vs
c2UKK3N0YXRpYyB2b2lkICpESW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIodm9pZCkg
eworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2p1bXBfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRp
ZgordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19qdW1wX19nZXRfdHlwZSh2b2lkKSB7CisjaWZk
ZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5p
dF9wb2ludGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fanVtcF9fdHlwZSwgREluc3RydWN0aW9u
X19qdW1wX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1
Y3Rpb25fX2p1bXBfX3R5cGVfX29jLCBESW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGVfX2J1aWxkZXIp
OworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2p1bXBfX3R5cGU7CisjZW5kaWYKK30KKworc3Rh
dGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBESW5zdHJ1Y3Rpb25fX2NhbGxfX3R5cGUgPSBOVUxM
OworCisjaWZuZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90
IERJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRp
YyB2b2lkIERJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRElu
c3RydWN0aW9uX19jYWxsX190eXBlID0gREluc3RydWN0aW9uX19jYWxsX19idWlsZF90eXBlKCk7
Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fYnVpbGRl
cih2b2lkKSB7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fY2FsbF9fYnVpbGRfdHlwZSgpOwor
fQorI2VuZGlmCit0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2NhbGxfX2dldF90eXBlKHZvaWQp
IHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3Qq
KXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX19jYWxsX190eXBlLCBESW5z
dHJ1Y3Rpb25fX2NhbGxfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2Uo
JkRJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9fb2MsIERJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZV9f
YnVpbGRlcik7CisgICAgcmV0dXJuIERJbnN0cnVjdGlvbl9fY2FsbF9fdHlwZTsKKyNlbmRpZgor
fQordm9pZCBESW5zdHJ1Y3Rpb25fX2NhbGxfX2Rlc3RydWN0KERJbnN0cnVjdGlvbl9fY2FsbF90
ICpkYXRhKSB7CisgICAgREluc3RydWN0aW9uX19jYWxsX19hcmdzX19kZXN0cnVjdCgmZGF0YS0+
YXJncyk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19j
YWxsX19hcmdzX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIK
K3N0YXRpYyBwdGhyZWFkX29uY2VfdCBESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX29j
ID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBESW5zdHJ1Y3Rpb25fX2NhbGxfX2Fy
Z3NfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19f
dHlwZSA9IERJbnN0cnVjdGlvbl9fY2FsbF9fYXJnc19fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UK
K3N0YXRpYyB2b2lkICpESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX2J1aWxkZXIodm9p
ZCkgeworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX2J1aWxkX3R5cGUoKTsK
K30KKyNlbmRpZgordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19jYWxsX19hcmdzX19nZXRfdHlw
ZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2Zf
dHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fY2FsbF9fYXJn
c19fdHlwZSwgREluc3RydWN0aW9uX19jYWxsX19hcmdzX190eXBlX19idWlsZGVyKTsKKyNlbHNl
CisgICAgcHRocmVhZF9vbmNlKCZESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX29jLCBE
SW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBESW5z
dHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgREluc3RydWN0aW9u
X19jYWxsX19hcmdzX19kZXN0cnVjdChESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCAqZGF0YSkg
eworICAgIGludDE2X19hcnJheV9fZGVzdHJ1Y3QoZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlw
ZV90ICogdm9sYXRpbGUgaW50MTZfX2FycmF5X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0Zf
SEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBpbnQxNl9fYXJyYXlfX3R5
cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBpbnQxNl9fYXJyYXlfX3R5
cGVfX2J1aWxkZXIodm9pZCkgeworICAgIGludDE2X19hcnJheV9fdHlwZSA9IGludDE2X19hcnJh
eV9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICppbnQxNl9fYXJyYXlfX3R5
cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBpbnQxNl9fYXJyYXlfX2J1aWxkX3R5cGUo
KTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqaW50MTZfX2FycmF5X19nZXRfdHlwZSh2b2lkKSB7
CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0
c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJmludDE2X19hcnJheV9fdHlwZSwgaW50MTZfX2FycmF5
X190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZpbnQxNl9fYXJyYXlf
X3R5cGVfX29jLCBpbnQxNl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBpbnQx
Nl9fYXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQgaW50MTZfX2FycmF5X19kZXN0cnVjdChp
bnQxNl9fYXJyYXlfdCAqZGF0YSkgeworICAgIGZyZWUoZGF0YS0+ZGF0YSk7Cit9CisKK3N0YXRp
YyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19icmFuY2haZXJvX190eXBlID0g
TlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29u
Y2VfdCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lO
SVQ7CitzdGF0aWMgdm9pZCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIo
dm9pZCkgeworICAgIERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fdHlwZSA9IERJbnN0cnVjdGlv
bl9fYnJhbmNoWmVyb19fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkICpESW5z
dHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBE
SW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5
cGVfdCAqREluc3RydWN0aW9uX19icmFuY2haZXJvX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYg
VFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9w
b2ludGVyKCh2b2lkKiopJkRJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19fdHlwZSwgREluc3RydWN0
aW9uX19icmFuY2haZXJvX190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNl
KCZESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX3R5cGVfX29jLCBESW5zdHJ1Y3Rpb25fX2JyYW5j
aFplcm9fX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2JyYW5jaFpl
cm9fX3R5cGU7CisjZW5kaWYKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEUHJv
Y2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9J
TklUX1BPSU5URVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEUHJvY2VkdXJlRGVmbl9fdmFyaWFi
bGVzX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFByb2NlZHVy
ZURlZm5fX3ZhcmlhYmxlc19fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZURl
Zm5fX3ZhcmlhYmxlc19fdHlwZSA9IERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2J1aWxkX3R5
cGUoKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCAqRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19f
dHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJuIERQcm9jZWR1cmVEZWZuX192YXJpYWJs
ZXNfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVfdCAqRFByb2NlZHVyZURlZm5f
X3ZhcmlhYmxlc19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lOSVRfUE9JTlRF
UgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9pZCoqKSZEUHJv
Y2VkdXJlRGVmbl9fdmFyaWFibGVzX190eXBlLCBEUHJvY2VkdXJlRGVmbl9fdmFyaWFibGVzX190
eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEUHJvY2VkdXJlRGVmbl9f
dmFyaWFibGVzX190eXBlX19vYywgRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fdHlwZV9fYnVp
bGRlcik7CisgICAgcmV0dXJuIERQcm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX3R5cGU7CisjZW5k
aWYKK30KK3ZvaWQgRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlc19fZGVzdHJ1Y3QoRFByb2NlZHVy
ZURlZm5fX3ZhcmlhYmxlc190ICpkYXRhKSB7CisgICAgRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2Rl
c3RydWN0KGRhdGEpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0aWxlIERWYXJpYWJs
ZURlY2xfX2FycmF5X190eXBlID0gTlVMTDsKKworI2lmbmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5U
RVIKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBEVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZV9fb2Mg
PSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0YXRpYyB2b2lkIERWYXJpYWJsZURlY2xfX2FycmF5X190
eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEVmFyaWFibGVEZWNsX19hcnJheV9fdHlwZSA9IERW
YXJpYWJsZURlY2xfX2FycmF5X19idWlsZF90eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQg
KkRWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICByZXR1cm4g
RFZhcmlhYmxlRGVjbF9fYXJyYXlfX2J1aWxkX3R5cGUoKTsKK30KKyNlbmRpZgordHNmX3R5cGVf
dCAqRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFW
RV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRzZl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIo
KHZvaWQqKikmRFZhcmlhYmxlRGVjbF9fYXJyYXlfX3R5cGUsIERWYXJpYWJsZURlY2xfX2FycmF5
X190eXBlX19idWlsZGVyKTsKKyNlbHNlCisgICAgcHRocmVhZF9vbmNlKCZEVmFyaWFibGVEZWNs
X19hcnJheV9fdHlwZV9fb2MsIERWYXJpYWJsZURlY2xfX2FycmF5X190eXBlX19idWlsZGVyKTsK
KyAgICByZXR1cm4gRFZhcmlhYmxlRGVjbF9fYXJyYXlfX3R5cGU7CisjZW5kaWYKK30KK3ZvaWQg
RFZhcmlhYmxlRGVjbF9fYXJyYXlfX2Rlc3RydWN0KERWYXJpYWJsZURlY2xfX2FycmF5X3QgKmRh
dGEpIHsKKyAgICB1aW50MzJfdCBpOworICAgIGZvciAoaSA9IGRhdGEtPmxlbjsgaS0tOykKKyAg
ICAgICAgRFZhcmlhYmxlRGVjbF9fZGVzdHJ1Y3QoKGRhdGEtPmRhdGEgKyBpKSk7CisgICAgZnJl
ZShkYXRhLT5kYXRhKTsKK30KKworc3RhdGljIHRzZl90eXBlX3QgKiB2b2xhdGlsZSBEUHJvY2Vk
dXJlRGVmbl9fY29kZV9fdHlwZSA9IE5VTEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lO
VEVSCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgRFByb2NlZHVyZURlZm5fX2NvZGVfX3R5cGVfX29j
ID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvY2VkdXJlRGVmbl9fY29kZV9f
dHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgRFByb2NlZHVyZURlZm5fX2NvZGVfX3R5cGUgPSBE
UHJvY2VkdXJlRGVmbl9fY29kZV9fYnVpbGRfdHlwZSgpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lk
ICpEUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9fYnVpbGRlcih2b2lkKSB7CisgICAgcmV0dXJu
IERQcm9jZWR1cmVEZWZuX19jb2RlX19idWlsZF90eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBl
X3QgKkRQcm9jZWR1cmVEZWZuX19jb2RlX19nZXRfdHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hB
VkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVy
KCh2b2lkKiopJkRQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlLCBEUHJvY2VkdXJlRGVmbl9fY29k
ZV9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0aHJlYWRfb25jZSgmRFByb2NlZHVyZURl
Zm5fX2NvZGVfX3R5cGVfX29jLCBEUHJvY2VkdXJlRGVmbl9fY29kZV9fdHlwZV9fYnVpbGRlcik7
CisgICAgcmV0dXJuIERQcm9jZWR1cmVEZWZuX19jb2RlX190eXBlOworI2VuZGlmCit9Cit2b2lk
IERQcm9jZWR1cmVEZWZuX19jb2RlX19kZXN0cnVjdChEUHJvY2VkdXJlRGVmbl9fY29kZV90ICpk
YXRhKSB7CisgICAgREluc3RydWN0aW9uX19hcnJheV9fZGVzdHJ1Y3QoZGF0YSk7Cit9CisKK3N0
YXRpYyB0c2ZfdHlwZV90ICogdm9sYXRpbGUgREluc3RydWN0aW9uX19hcnJheV9fdHlwZSA9IE5V
TEw7CisKKyNpZm5kZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCitzdGF0aWMgcHRocmVhZF9vbmNl
X3QgREluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MgPSBQVEhSRUFEX09OQ0VfSU5JVDsKK3N0
YXRpYyB2b2lkIERJbnN0cnVjdGlvbl9fYXJyYXlfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAg
IERJbnN0cnVjdGlvbl9fYXJyYXlfX3R5cGUgPSBESW5zdHJ1Y3Rpb25fX2FycmF5X19idWlsZF90
eXBlKCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgKkRJbnN0cnVjdGlvbl9fYXJyYXlfX3R5cGVf
X2J1aWxkZXIodm9pZCkgeworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2FycmF5X19idWlsZF90
eXBlKCk7Cit9CisjZW5kaWYKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90
eXBlKHZvaWQpIHsKKyNpZmRlZiBUU0ZfSEFWRV9JTklUX1BPSU5URVIKKyAgICByZXR1cm4gKHRz
Zl90eXBlX3QqKXRzZl9pbml0X3BvaW50ZXIoKHZvaWQqKikmREluc3RydWN0aW9uX19hcnJheV9f
dHlwZSwgREluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fYnVpbGRlcik7CisjZWxzZQorICAgIHB0
aHJlYWRfb25jZSgmREluc3RydWN0aW9uX19hcnJheV9fdHlwZV9fb2MsIERJbnN0cnVjdGlvbl9f
YXJyYXlfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBESW5zdHJ1Y3Rpb25fX2FycmF5X190
eXBlOworI2VuZGlmCit9Cit2b2lkIERJbnN0cnVjdGlvbl9fYXJyYXlfX2Rlc3RydWN0KERJbnN0
cnVjdGlvbl9fYXJyYXlfdCAqZGF0YSkgeworICAgIHVpbnQzMl90IGk7CisgICAgZm9yIChpID0g
ZGF0YS0+bGVuOyBpLS07KQorICAgICAgICBESW5zdHJ1Y3Rpb25fX2Rlc3RydWN0KChkYXRhLT5k
YXRhICsgaSkpOworICAgIGZyZWUoZGF0YS0+ZGF0YSk7Cit9CisKK3N0YXRpYyB0c2ZfdHlwZV90
ICogdm9sYXRpbGUgRFByb2dyYW1fX2dsb2JhbHNfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRT
Rl9IQVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9ncmFtX19nbG9i
YWxzX190eXBlX19vYyA9IFBUSFJFQURfT05DRV9JTklUOworc3RhdGljIHZvaWQgRFByb2dyYW1f
X2dsb2JhbHNfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIERQcm9ncmFtX19nbG9iYWxzX190
eXBlID0gRFByb2dyYW1fX2dsb2JhbHNfX2J1aWxkX3R5cGUoKTsKK30KKyNlbHNlCitzdGF0aWMg
dm9pZCAqRFByb2dyYW1fX2dsb2JhbHNfX3R5cGVfX2J1aWxkZXIodm9pZCkgeworICAgIHJldHVy
biBEUHJvZ3JhbV9fZ2xvYmFsc19fYnVpbGRfdHlwZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90
ICpEUHJvZ3JhbV9fZ2xvYmFsc19fZ2V0X3R5cGUodm9pZCkgeworI2lmZGVmIFRTRl9IQVZFX0lO
SVRfUE9JTlRFUgorICAgIHJldHVybiAodHNmX3R5cGVfdCopdHNmX2luaXRfcG9pbnRlcigodm9p
ZCoqKSZEUHJvZ3JhbV9fZ2xvYmFsc19fdHlwZSwgRFByb2dyYW1fX2dsb2JhbHNfX3R5cGVfX2J1
aWxkZXIpOworI2Vsc2UKKyAgICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtX19nbG9iYWxzX190eXBl
X19vYywgRFByb2dyYW1fX2dsb2JhbHNfX3R5cGVfX2J1aWxkZXIpOworICAgIHJldHVybiBEUHJv
Z3JhbV9fZ2xvYmFsc19fdHlwZTsKKyNlbmRpZgorfQordm9pZCBEUHJvZ3JhbV9fZ2xvYmFsc19f
ZGVzdHJ1Y3QoRFByb2dyYW1fX2dsb2JhbHNfdCAqZGF0YSkgeworICAgIERQcm9ncmFtRWxlbWVu
dF9fYXJyYXlfX2Rlc3RydWN0KGRhdGEpOworfQorCitzdGF0aWMgdHNmX3R5cGVfdCAqIHZvbGF0
aWxlIERQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGUgPSBOVUxMOworCisjaWZuZGVmIFRTRl9I
QVZFX0lOSVRfUE9JTlRFUgorc3RhdGljIHB0aHJlYWRfb25jZV90IERQcm9ncmFtRWxlbWVudF9f
YXJyYXlfX3R5cGVfX29jID0gUFRIUkVBRF9PTkNFX0lOSVQ7CitzdGF0aWMgdm9pZCBEUHJvZ3Jh
bUVsZW1lbnRfX2FycmF5X190eXBlX19idWlsZGVyKHZvaWQpIHsKKyAgICBEUHJvZ3JhbUVsZW1l
bnRfX2FycmF5X190eXBlID0gRFByb2dyYW1FbGVtZW50X19hcnJheV9fYnVpbGRfdHlwZSgpOwor
fQorI2Vsc2UKK3N0YXRpYyB2b2lkICpEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X190eXBlX19idWls
ZGVyKHZvaWQpIHsKKyAgICByZXR1cm4gRFByb2dyYW1FbGVtZW50X19hcnJheV9fYnVpbGRfdHlw
ZSgpOworfQorI2VuZGlmCit0c2ZfdHlwZV90ICpEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X19nZXRf
dHlwZSh2b2lkKSB7CisjaWZkZWYgVFNGX0hBVkVfSU5JVF9QT0lOVEVSCisgICAgcmV0dXJuICh0
c2ZfdHlwZV90Kil0c2ZfaW5pdF9wb2ludGVyKCh2b2lkKiopJkRQcm9ncmFtRWxlbWVudF9fYXJy
YXlfX3R5cGUsIERQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGVfX2J1aWxkZXIpOworI2Vsc2UK
KyAgICBwdGhyZWFkX29uY2UoJkRQcm9ncmFtRWxlbWVudF9fYXJyYXlfX3R5cGVfX29jLCBEUHJv
Z3JhbUVsZW1lbnRfX2FycmF5X190eXBlX19idWlsZGVyKTsKKyAgICByZXR1cm4gRFByb2dyYW1F
bGVtZW50X19hcnJheV9fdHlwZTsKKyNlbmRpZgorfQordm9pZCBEUHJvZ3JhbUVsZW1lbnRfX2Fy
cmF5X19kZXN0cnVjdChEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3QgKmRhdGEpIHsKKyAgICB1aW50
MzJfdCBpOworICAgIGZvciAoaSA9IGRhdGEtPmxlbjsgaS0tOykKKyAgICAgICAgRFByb2dyYW1F
bGVtZW50X19kZXN0cnVjdCgoZGF0YS0+ZGF0YSArIGkpKTsKKyAgICBmcmVlKGRhdGEtPmRhdGEp
OworfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2ly
X2RpZmZlcmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL3RzZi90c2ZfaXJfZGlmZmVyZW50LmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pcl9kaWZmZXJlbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY5NSBAQAorLyogLi90ZXN0cy9zdWl0ZXMvdG95aXIvdHNmX2lyX2RpZmZl
cmVudC5oIC0tIGdlbmVyYXRlZCBieSB0c2ZfZGVmaW5lIGZyb20gLi90ZXN0cy9zdWl0ZXMvdG95
aXIvdHNmX2lyX2RpZmZlcmVudC50ICovCisKKyNpbmNsdWRlICJ0c2YuaCIKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RS
VUNUX0RFQ0xfRFZhcmlhYmxlRGVjbAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RW
YXJpYWJsZURlY2wKK3N0cnVjdCBEVmFyaWFibGVEZWNsX3M7CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlvbgorI2RlZmluZSBUU0ZfREVGSU5FX1NU
UlVDVF9ERUNMX0RJbnN0cnVjdGlvbgorc3RydWN0IERJbnN0cnVjdGlvbl9zOworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9EUHJvY2VkdXJlCisjZGVmaW5lIFRTRl9E
RUZJTkVfU1RSVUNUX0RFQ0xfRFByb2NlZHVyZQorc3RydWN0IERQcm9jZWR1cmVfczsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2NlZHVyZURlY2wKKyNkZWZp
bmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9EUHJvY2VkdXJlRGVjbAorc3RydWN0IERQcm9jZWR1
cmVEZWNsX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RQcm9j
ZWR1cmVEZWZuCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2NlZHVyZURlZm4K
K3N0cnVjdCBEUHJvY2VkdXJlRGVmbl9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9T
VFJVQ1RfREVDTF9EUHJvZ3JhbUVsZW1lbnQKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVD
TF9EUHJvZ3JhbUVsZW1lbnQKK3N0cnVjdCBEUHJvZ3JhbUVsZW1lbnRfczsKKyNlbmRpZgorCisj
aWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2dyYW0KKyNkZWZpbmUgVFNGX0RFRklO
RV9TVFJVQ1RfREVDTF9EUHJvZ3JhbQorc3RydWN0IERQcm9ncmFtX3M7CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlvbl9fbW92CisjZGVmaW5lIFRT
Rl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9uX19tb3YKK3N0cnVjdCBESW5zdHJ1Y3Rp
b25fX21vdl9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5z
dHJ1Y3Rpb25fX2FkZAorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlv
bl9fYWRkCitzdHJ1Y3QgREluc3RydWN0aW9uX19hZGRfczsKKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9uX19hbGxvYworI2RlZmluZSBUU0ZfREVG
SU5FX1NUUlVDVF9ERUNMX0RJbnN0cnVjdGlvbl9fYWxsb2MKK3N0cnVjdCBESW5zdHJ1Y3Rpb25f
X2FsbG9jX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0
cnVjdGlvbl9fcmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9u
X19yZXQKK3N0cnVjdCBESW5zdHJ1Y3Rpb25fX3JldF9zOworI2VuZGlmCisKKyNpZm5kZWYgVFNG
X0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2p1bXAKKyNkZWZpbmUgVFNGX0RFRklO
RV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2p1bXAKK3N0cnVjdCBESW5zdHJ1Y3Rpb25fX2p1
bXBfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0
aW9uX19jYWxsCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfREluc3RydWN0aW9uX19j
YWxsCitzdHJ1Y3QgREluc3RydWN0aW9uX19jYWxsX3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1NUUlVDVF9ERUNMX2ludDE2X19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVD
VF9ERUNMX2ludDE2X19hcnJheQorc3RydWN0IGludDE2X19hcnJheV9zOworI2VuZGlmCisKKyNp
Zm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm8KKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm8KK3N0
cnVjdCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9E
RUZJTkVfU1RSVUNUX0RFQ0xfRFZhcmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklO
RV9TVFJVQ1RfREVDTF9EVmFyaWFibGVEZWNsX19hcnJheQorc3RydWN0IERWYXJpYWJsZURlY2xf
X2FycmF5X3M7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUNMX0RJbnN0
cnVjdGlvbl9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9ESW5zdHJ1Y3Rp
b25fX2FycmF5CitzdHJ1Y3QgREluc3RydWN0aW9uX19hcnJheV9zOworI2VuZGlmCisKKyNpZm5k
ZWYgVFNGX0RFRklORV9TVFJVQ1RfREVDTF9EUHJvZ3JhbUVsZW1lbnRfX2FycmF5CisjZGVmaW5l
IFRTRl9ERUZJTkVfU1RSVUNUX0RFQ0xfRFByb2dyYW1FbGVtZW50X19hcnJheQorc3RydWN0IERQ
cm9ncmFtRWxlbWVudF9fYXJyYXlfczsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQ
RURFRl9EVmFyaWFibGVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EVmFyaWFibGVE
ZWNsCit0eXBlZGVmIHN0cnVjdCBEVmFyaWFibGVEZWNsX3MgRFZhcmlhYmxlRGVjbF90OworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbgorI2RlZmluZSBU
U0ZfREVGSU5FX1RZUEVERUZfREluc3RydWN0aW9uCit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rp
b25fcyBESW5zdHJ1Y3Rpb25fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURF
Rl9EUHJvY2VkdXJlCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EUHJvY2VkdXJlCit0eXBl
ZGVmIHN0cnVjdCBEUHJvY2VkdXJlX3MgRFByb2NlZHVyZV90OworI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9UWVBFREVGX0RQcm9jZWR1cmVEZWNsCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQ
RURFRl9EUHJvY2VkdXJlRGVjbAordHlwZWRlZiBzdHJ1Y3QgRFByb2NlZHVyZURlY2xfcyBEUHJv
Y2VkdXJlRGVjbF90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQcm9j
ZWR1cmVEZWZuCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EUHJvY2VkdXJlRGVmbgordHlw
ZWRlZiBzdHJ1Y3QgRFByb2NlZHVyZURlZm5fcyBEUHJvY2VkdXJlRGVmbl90OworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQcm9ncmFtRWxlbWVudAorI2RlZmluZSBUU0Zf
REVGSU5FX1RZUEVERUZfRFByb2dyYW1FbGVtZW50Cit0eXBlZGVmIHN0cnVjdCBEUHJvZ3JhbUVs
ZW1lbnRfcyBEUHJvZ3JhbUVsZW1lbnRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVf
VFlQRURFRl9EUHJvZ3JhbQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRFByb2dyYW0KK3R5
cGVkZWYgc3RydWN0IERQcm9ncmFtX3MgRFByb2dyYW1fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRT
Rl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX21vdgorI2RlZmluZSBUU0ZfREVGSU5FX1RZ
UEVERUZfREluc3RydWN0aW9uX19tb3YKK3R5cGVkZWYgc3RydWN0IERJbnN0cnVjdGlvbl9fbW92
X3MgREluc3RydWN0aW9uX19tb3ZfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQ
RURFRl9ESW5zdHJ1Y3Rpb25fX2FkZAorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfREluc3Ry
dWN0aW9uX19hZGQKK3R5cGVkZWYgc3RydWN0IERJbnN0cnVjdGlvbl9fYWRkX3MgREluc3RydWN0
aW9uX19hZGRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1
Y3Rpb25fX2FsbG9jCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX2Fs
bG9jCit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rpb25fX2FsbG9jX3MgREluc3RydWN0aW9uX19h
bGxvY190OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlv
bl9fcmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX3JldAordHlw
ZWRlZiBzdHJ1Y3QgREluc3RydWN0aW9uX19yZXRfcyBESW5zdHJ1Y3Rpb25fX3JldF90OworI2Vu
ZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbl9fanVtcAorI2Rl
ZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfREluc3RydWN0aW9uX19qdW1wCit0eXBlZGVmIHN0cnVj
dCBESW5zdHJ1Y3Rpb25fX2p1bXBfcyBESW5zdHJ1Y3Rpb25fX2p1bXBfdDsKKyNlbmRpZgorCisj
aWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1Y3Rpb25fX2NhbGwKKyNkZWZpbmUgVFNG
X0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbl9fY2FsbAordHlwZWRlZiBzdHJ1Y3QgREluc3Ry
dWN0aW9uX19jYWxsX3MgREluc3RydWN0aW9uX19jYWxsX3Q7CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX1RZUEVERUZfaW50MTZfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURF
Rl9pbnQxNl9fYXJyYXkKK3R5cGVkZWYgc3RydWN0IGludDE2X19hcnJheV9zIGludDE2X19hcnJh
eV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RJbnN0cnVjdGlvbl9f
YnJhbmNoWmVybworI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfREluc3RydWN0aW9uX19icmFu
Y2haZXJvCit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fcyBESW5zdHJ1
Y3Rpb25fX2JyYW5jaFplcm9fdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURF
Rl9EVmFyaWFibGVEZWNsX19hcnJheQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRFZhcmlh
YmxlRGVjbF9fYXJyYXkKK3R5cGVkZWYgc3RydWN0IERWYXJpYWJsZURlY2xfX2FycmF5X3MgRFZh
cmlhYmxlRGVjbF9fYXJyYXlfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURF
Rl9ESW5zdHJ1Y3Rpb25fX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9ESW5zdHJ1
Y3Rpb25fX2FycmF5Cit0eXBlZGVmIHN0cnVjdCBESW5zdHJ1Y3Rpb25fX2FycmF5X3MgREluc3Ry
dWN0aW9uX19hcnJheV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQ
cm9ncmFtRWxlbWVudF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RQcm9ncmFt
RWxlbWVudF9fYXJyYXkKK3R5cGVkZWYgc3RydWN0IERQcm9ncmFtRWxlbWVudF9fYXJyYXlfcyBE
UHJvZ3JhbUVsZW1lbnRfX2FycmF5X3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZ
UEVERUZfRE9wZXJhbmQKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RPcGVyYW5kCit0eXBl
ZGVmIGludDE2X3QgRE9wZXJhbmRfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQ
RURFRl9EVHlwZQorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRFR5cGUKK3R5cGVkZWYgY2hh
ciogRFR5cGVfdDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfVFlQRURFRl9EQ29kZU9m
ZnNldAorI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRENvZGVPZmZzZXQKK3R5cGVkZWYgaW50
MTZfdCBEQ29kZU9mZnNldF90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVG
X0RJbnN0cnVjdGlvbl9fY2FsbF9fYXJncworI2RlZmluZSBUU0ZfREVGSU5FX1RZUEVERUZfRElu
c3RydWN0aW9uX19jYWxsX19hcmdzCit0eXBlZGVmIGludDE2X19hcnJheV90IERJbnN0cnVjdGlv
bl9fY2FsbF9fYXJnc190OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQ
cm9jZWR1cmVEZWZuX192YXJpYWJsZXMKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RQcm9j
ZWR1cmVEZWZuX192YXJpYWJsZXMKK3R5cGVkZWYgRFZhcmlhYmxlRGVjbF9fYXJyYXlfdCBEUHJv
Y2VkdXJlRGVmbl9fdmFyaWFibGVzX3Q7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1RZ
UEVERUZfRFByb2NlZHVyZURlZm5fX2NvZGUKKyNkZWZpbmUgVFNGX0RFRklORV9UWVBFREVGX0RQ
cm9jZWR1cmVEZWZuX19jb2RlCit0eXBlZGVmIERJbnN0cnVjdGlvbl9fYXJyYXlfdCBEUHJvY2Vk
dXJlRGVmbl9fY29kZV90OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9UWVBFREVGX0RQ
cm9ncmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfVFlQRURFRl9EUHJvZ3JhbV9fZ2xv
YmFscwordHlwZWRlZiBEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3QgRFByb2dyYW1fX2dsb2JhbHNf
dDsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EVmFyaWFibGVEZWNs
CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EVmFyaWFibGVEZWNsCitzdHJ1Y3QgRFZh
cmlhYmxlRGVjbF9zIHsKKyAgICBEVHlwZV90IHR5cGU7Cit9OworI2VuZGlmCisKKyNpZm5kZWYg
VFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fbW92CisjZGVmaW5lIFRTRl9ERUZJ
TkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX21vdgorc3RydWN0IERJbnN0cnVjdGlvbl9fbW92
X3MgeworICAgIERPcGVyYW5kX3QgZGVzdDsKKyAgICBET3BlcmFuZF90IHNyYzsKK307CisjZW5k
aWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19hZGQKKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fYWRkCitzdHJ1Y3QgRElu
c3RydWN0aW9uX19hZGRfcyB7CisgICAgRE9wZXJhbmRfdCBkZXN0OworICAgIERPcGVyYW5kX3Qg
c3JjOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1
Y3Rpb25fX2FsbG9jCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25f
X2FsbG9jCitzdHJ1Y3QgREluc3RydWN0aW9uX19hbGxvY19zIHsKKyAgICBEVHlwZV90IHR5cGU7
Cit9OworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlv
bl9fcmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX3JldAor
c3RydWN0IERJbnN0cnVjdGlvbl9fcmV0X3MgeworICAgIERPcGVyYW5kX3Qgc3JjOworfTsKKyNl
bmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX2p1bXAK
KyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fanVtcAorc3RydWN0
IERJbnN0cnVjdGlvbl9fanVtcF9zIHsKKyAgICBEQ29kZU9mZnNldF90IHRhcmdldDsKK307Cisj
ZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfaW50MTZfX2FycmF5CisjZGVm
aW5lIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9pbnQxNl9fYXJyYXkKK3N0cnVjdCBpbnQxNl9fYXJy
YXlfcyB7CisgICAgaW50MTZfdCAqZGF0YTsKKyAgICB1aW50MzJfdCBsZW47Cit9OworI2VuZGlm
CisKKyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fY2FsbAorI2Rl
ZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19jYWxsCitzdHJ1Y3QgRElu
c3RydWN0aW9uX19jYWxsX3MgeworICAgIERPcGVyYW5kX3QgZGVzdDsKKyAgICBET3BlcmFuZF90
IGNhbGxlZTsKKyAgICBESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCBhcmdzOworfTsKKyNlbmRp
ZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9ESW5zdHJ1Y3Rpb25fX2JyYW5jaFpl
cm8KKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RJbnN0cnVjdGlvbl9fYnJhbmNoWmVy
bworc3RydWN0IERJbnN0cnVjdGlvbl9fYnJhbmNoWmVyb19zIHsKKyAgICBET3BlcmFuZF90IHNy
YzsKKyAgICBEQ29kZU9mZnNldF90IHRhcmdldDsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0Zf
REVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uCisjZGVmaW5lIFRTRl9ERUZJTkVfU1RSVUNU
X0RFRl9ESW5zdHJ1Y3Rpb24KK3N0cnVjdCBESW5zdHJ1Y3Rpb25fcyB7CisgICAgdHNmX2Nob2lj
ZV90IHZhbHVlOworICAgIHVuaW9uIHsKKyAgICAgICAgREluc3RydWN0aW9uX19tb3ZfdCBtb3Y7
CisgICAgICAgIERJbnN0cnVjdGlvbl9fYWRkX3QgYWRkOworICAgICAgICBESW5zdHJ1Y3Rpb25f
X2FsbG9jX3QgYWxsb2M7CisgICAgICAgIERJbnN0cnVjdGlvbl9fcmV0X3QgcmV0OworICAgICAg
ICBESW5zdHJ1Y3Rpb25fX2p1bXBfdCBqdW1wOworICAgICAgICBESW5zdHJ1Y3Rpb25fX2NhbGxf
dCBjYWxsOworICAgICAgICBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fdCBicmFuY2haZXJvOwor
ICAgIH0gdTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRFBy
b2NlZHVyZQorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRFByb2NlZHVyZQorc3RydWN0
IERQcm9jZWR1cmVfcyB7CisgICAgY2hhciogbmFtZTsKK307CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX1NUUlVDVF9ERUZfRFByb2NlZHVyZURlY2wKKyNkZWZpbmUgVFNGX0RFRklORV9T
VFJVQ1RfREVGX0RQcm9jZWR1cmVEZWNsCitzdHJ1Y3QgRFByb2NlZHVyZURlY2xfcyB7CisgICAg
Y2hhciogbmFtZTsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZf
RFZhcmlhYmxlRGVjbF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RWYXJp
YWJsZURlY2xfX2FycmF5CitzdHJ1Y3QgRFZhcmlhYmxlRGVjbF9fYXJyYXlfcyB7CisgICAgRFZh
cmlhYmxlRGVjbF90ICpkYXRhOworICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19hcnJheQorI2RlZmluZSBU
U0ZfREVGSU5FX1NUUlVDVF9ERUZfREluc3RydWN0aW9uX19hcnJheQorc3RydWN0IERJbnN0cnVj
dGlvbl9fYXJyYXlfcyB7CisgICAgREluc3RydWN0aW9uX3QgKmRhdGE7CisgICAgdWludDMyX3Qg
bGVuOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EUHJvY2Vk
dXJlRGVmbgorI2RlZmluZSBUU0ZfREVGSU5FX1NUUlVDVF9ERUZfRFByb2NlZHVyZURlZm4KK3N0
cnVjdCBEUHJvY2VkdXJlRGVmbl9zIHsKKyAgICBjaGFyKiBuYW1lOworICAgIERQcm9jZWR1cmVE
ZWZuX192YXJpYWJsZXNfdCB2YXJpYWJsZXM7CisgICAgRFByb2NlZHVyZURlZm5fX2NvZGVfdCBj
b2RlOworfTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfU1RSVUNUX0RFRl9EUHJvZ3Jh
bUVsZW1lbnQKKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFtRWxlbWVudAor
c3RydWN0IERQcm9ncmFtRWxlbWVudF9zIHsKKyAgICB0c2ZfY2hvaWNlX3QgdmFsdWU7CisgICAg
dW5pb24geworICAgICAgICBEUHJvY2VkdXJlRGVjbF90IHByb2NlZHVyZURlY2w7CisgICAgICAg
IERQcm9jZWR1cmVEZWZuX3QgcHJvY2VkdXJlRGVmbjsKKyAgICB9IHU7Cit9OworI2VuZGlmCisK
KyNpZm5kZWYgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNk
ZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFtRWxlbWVudF9fYXJyYXkKK3N0cnVj
dCBEUHJvZ3JhbUVsZW1lbnRfX2FycmF5X3MgeworICAgIERQcm9ncmFtRWxlbWVudF90ICpkYXRh
OworICAgIHVpbnQzMl90IGxlbjsKK307CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX1NU
UlVDVF9ERUZfRFByb2dyYW0KKyNkZWZpbmUgVFNGX0RFRklORV9TVFJVQ1RfREVGX0RQcm9ncmFt
CitzdHJ1Y3QgRFByb2dyYW1fcyB7CisgICAgRFByb2dyYW1fX2dsb2JhbHNfdCBnbG9iYWxzOwor
fTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfREluc3RydWN0aW9u
CisjZGVmaW5lIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfREluc3RydWN0aW9uCisjZGVmaW5lIERJ
bnN0cnVjdGlvbl9fbm9wIDAKKyNkZWZpbmUgREluc3RydWN0aW9uX19tb3YgMQorI2RlZmluZSBE
SW5zdHJ1Y3Rpb25fX2FkZCAyCisjZGVmaW5lIERJbnN0cnVjdGlvbl9fYWxsb2MgMworI2RlZmlu
ZSBESW5zdHJ1Y3Rpb25fX3JldCA0CisjZGVmaW5lIERJbnN0cnVjdGlvbl9fanVtcCA1CisjZGVm
aW5lIERJbnN0cnVjdGlvbl9fY2FsbCA2CisjZGVmaW5lIERJbnN0cnVjdGlvbl9fYnJhbmNoWmVy
byA3CitzdGF0aWMgVFNGX2lubGluZSBjb25zdCBjaGFyICpESW5zdHJ1Y3Rpb25fX3RvX3N0cih0
c2ZfY2hvaWNlX3QgdmFsdWUpIHsKKyAgICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gIm5vcCI7CisgICAgY2FzZSAxOiByZXR1cm4gIm1vdiI7CisgICAgY2FzZSAyOiByZXR1
cm4gImFkZCI7CisgICAgY2FzZSAzOiByZXR1cm4gImFsbG9jIjsKKyAgICBjYXNlIDQ6IHJldHVy
biAicmV0IjsKKyAgICBjYXNlIDU6IHJldHVybiAianVtcCI7CisgICAgY2FzZSA2OiByZXR1cm4g
ImNhbGwiOworICAgIGNhc2UgNzogcmV0dXJuICJicmFuY2haZXJvIjsKKyAgICBjYXNlIFVJTlQz
Ml9NQVg6IHJldHVybiAiPHVua25vd24+IjsKKyAgICBkZWZhdWx0OiBhYm9ydCgpOworICAgIH0K
K30KKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfRFByb2dyYW1FbGVt
ZW50CisjZGVmaW5lIFRTRl9ERUZJTkVfQ0hPSUNFX0RFRlNfRFByb2dyYW1FbGVtZW50CisjZGVm
aW5lIERQcm9ncmFtRWxlbWVudF9fcHJvY2VkdXJlRGVjbCAwCisjZGVmaW5lIERQcm9ncmFtRWxl
bWVudF9fcHJvY2VkdXJlRGVmbiAxCitzdGF0aWMgVFNGX2lubGluZSBjb25zdCBjaGFyICpEUHJv
Z3JhbUVsZW1lbnRfX3RvX3N0cih0c2ZfY2hvaWNlX3QgdmFsdWUpIHsKKyAgICBzd2l0Y2ggKHZh
bHVlKSB7CisgICAgY2FzZSAwOiByZXR1cm4gInByb2NlZHVyZURlY2wiOworICAgIGNhc2UgMTog
cmV0dXJuICJwcm9jZWR1cmVEZWZuIjsKKyAgICBjYXNlIFVJTlQzMl9NQVg6IHJldHVybiAiPHVu
a25vd24+IjsKKyAgICBkZWZhdWx0OiBhYm9ydCgpOworICAgIH0KK30KKyNlbmRpZgorCisjaWZu
ZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRE9wZXJhbmQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19E
T3BlcmFuZAordHNmX3R5cGVfdCAqRE9wZXJhbmRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIERPcGVyYW5kX19kZXN0cnVjdChE
T3BlcmFuZF90ICpkYXRhKSB7IH0KK3RzZl9nZW5ydHJfdCAqRE9wZXJhbmRfX2dldF9nZW5lcmF0
b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRE9wZXJhbmRf
X2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5s
aW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fRE9wZXJhbmQodHNmX3R5cGVfdCAqdHlwZSkgeyBy
ZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBET3BlcmFuZF9fZ2V0X3R5cGUoKSk7IH0K
K3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX0RPcGVyYW5kKHRz
Zl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBET3Bl
cmFuZF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRE9w
ZXJhbmRfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJh
dGUoRE9wZXJhbmRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5l
IHRzZl9idWZmZXJfdCAqRE9wZXJhbmRfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJl
Z2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihET3BlcmFuZF9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSBET3BlcmFuZF90
ICpET3BlcmFuZF9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChET3BlcmFuZF90
Kil0c2ZfcGFyc2VyX3BhcnNlKERPcGVyYW5kX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIERPcGVyYW5kX3QgKkRPcGVyYW5kX19wYXJzZV9pbih0c2ZfYnVmZmVyX3Qg
KmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoRE9wZXJhbmRfdCopdHNmX3BhcnNlcl9wYXJz
ZV9pbihET3BlcmFuZF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0Zf
aW5saW5lIHRzZl9ib29sX3QgRE9wZXJhbmRfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYs
IERPcGVyYW5kX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJz
ZV9pbnRvKERPcGVyYW5kX19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNm
X2Jvb2xfdCBET3BlcmFuZF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERP
cGVyYW5kX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitET3BlcmFuZF90ICpET3Bl
cmFuZF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05P
SU5MSU5FOwordHNmX2Jvb2xfdCBET3BlcmFuZF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1fZmlsZV9p
bnB1dF90ICppbnAsIERPcGVyYW5kX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRFR5cGUKKyNkZWZpbmUgVFNGX0RF
RklORV9GVU5DU19EVHlwZQordHNmX3R5cGVfdCAqRFR5cGVfX2dldF90eXBlKHZvaWQpIFRTRl9B
VFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERUeXBlX19kZXN0cnVjdChEVHlwZV90ICpkYXRhKTsK
K3RzZl9nZW5ydHJfdCAqRFR5cGVfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRFR5cGVfX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9f
RFR5cGUodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBl
LCBEVHlwZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVm
X2luc3RhbmNlb2ZfX0RUeXBlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVy
X2luc3RhbmNlb2YoYnVmLCBEVHlwZV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5l
IHRzZl9idWZmZXJfdCAqRFR5cGVfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9n
ZW5lcmF0b3JfZ2VuZXJhdGUoRFR5cGVfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRFR5cGVfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEs
IHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihEVHlwZV9f
Z2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSBEVHlw
ZV90ICpEVHlwZV9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChEVHlwZV90Kil0
c2ZfcGFyc2VyX3BhcnNlKERUeXBlX19nZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0Zf
aW5saW5lIERUeXBlX3QgKkRUeXBlX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAq
cmVnaW9uKSB7IHJldHVybiAoRFR5cGVfdCopdHNmX3BhcnNlcl9wYXJzZV9pbihEVHlwZV9fZ2V0
X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3Qg
RFR5cGVfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIERUeXBlX3QgKmRhdGEsIHZvaWQg
KnJlZ2lvbikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKERUeXBlX19nZXRfcGFyc2Vy
KCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEVHlwZV9fd3JpdGUodHNmX3N0
cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERUeXBlX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7CitEVHlwZV90ICpEVHlwZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5w
KSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBEVHlwZV9fcmVhZF9pbnRvKHRz
Zl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIERUeXBlX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRENvZGVPZmZz
ZXQKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19EQ29kZU9mZnNldAordHNmX3R5cGVfdCAqRENv
ZGVPZmZzZXRfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMg
VFNGX2lubGluZSB2b2lkIERDb2RlT2Zmc2V0X19kZXN0cnVjdChEQ29kZU9mZnNldF90ICpkYXRh
KSB7IH0KK3RzZl9nZW5ydHJfdCAqRENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRENvZGVPZmZzZXRfX2dldF9wYXJz
ZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9i
b29sX3QgaW5zdGFuY2VvZl9fRENvZGVPZmZzZXQodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4g
dHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBEQ29kZU9mZnNldF9fZ2V0X3R5cGUoKSk7IH0KK3N0
YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX0RDb2RlT2Zmc2V0KHRz
Zl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3RhbmNlb2YoYnVmLCBEQ29k
ZU9mZnNldF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAq
RENvZGVPZmZzZXRfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3Jf
Z2VuZXJhdGUoRENvZGVPZmZzZXRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRENvZGVPZmZzZXRfX2dlbmVyYXRlX2luKHZvaWQgKmRh
dGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihEQ29k
ZU9mZnNldF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lu
bGluZSBEQ29kZU9mZnNldF90ICpEQ29kZU9mZnNldF9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYp
IHsgcmV0dXJuIChEQ29kZU9mZnNldF90Kil0c2ZfcGFyc2VyX3BhcnNlKERDb2RlT2Zmc2V0X19n
ZXRfcGFyc2VyKCksIGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIERDb2RlT2Zmc2V0X3QgKkRD
b2RlT2Zmc2V0X19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJl
dHVybiAoRENvZGVPZmZzZXRfdCopdHNmX3BhcnNlcl9wYXJzZV9pbihEQ29kZU9mZnNldF9fZ2V0
X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3Qg
RENvZGVPZmZzZXRfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIERDb2RlT2Zmc2V0X3Qg
KmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX3BhcnNlcl9wYXJzZV9pbnRvKERDb2Rl
T2Zmc2V0X19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBE
Q29kZU9mZnNldF9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERDb2RlT2Zm
c2V0X3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitEQ29kZU9mZnNldF90ICpEQ29k
ZU9mZnNldF9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRF
X05PSU5MSU5FOwordHNmX2Jvb2xfdCBEQ29kZU9mZnNldF9fcmVhZF9pbnRvKHRzZl9zdHJlYW1f
ZmlsZV9pbnB1dF90ICppbnAsIERDb2RlT2Zmc2V0X3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRFZhcmlhYmxlRGVj
bAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RWYXJpYWJsZURlY2wKK3RzZl90eXBlX3QgKkRW
YXJpYWJsZURlY2xfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lk
IERWYXJpYWJsZURlY2xfX2Rlc3RydWN0KERWYXJpYWJsZURlY2xfdCAqZGF0YSk7Cit0c2ZfZ2Vu
cnRyX3QgKkRWYXJpYWJsZURlY2xfX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9O
T0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcih2b2lkKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0
YW5jZW9mX19EVmFyaWFibGVEZWNsKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBl
X2luc3RhbmNlb2YodHlwZSwgRFZhcmlhYmxlRGVjbF9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBU
U0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2ZfX0RWYXJpYWJsZURlY2wodHNmX2J1
ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIERWYXJpYWJs
ZURlY2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkRW
YXJpYWJsZURlY2xfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3Jf
Z2VuZXJhdGUoRFZhcmlhYmxlRGVjbF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGlj
IFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpEVmFyaWFibGVEZWNsX19nZW5lcmF0ZV9pbih2b2lk
ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJhdGVfaW4o
RFZhcmlhYmxlRGVjbF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMg
VFNGX2lubGluZSBEVmFyaWFibGVEZWNsX3QgKkRWYXJpYWJsZURlY2xfX3BhcnNlKHRzZl9idWZm
ZXJfdCAqYnVmKSB7IHJldHVybiAoRFZhcmlhYmxlRGVjbF90Kil0c2ZfcGFyc2VyX3BhcnNlKERW
YXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRFZh
cmlhYmxlRGVjbF90ICpEVmFyaWFibGVEZWNsX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwg
dm9pZCAqcmVnaW9uKSB7IHJldHVybiAoRFZhcmlhYmxlRGVjbF90Kil0c2ZfcGFyc2VyX3BhcnNl
X2luKERWYXJpYWJsZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMg
VFNGX2lubGluZSB0c2ZfYm9vbF90IERWYXJpYWJsZURlY2xfX3BhcnNlX2ludG8odHNmX2J1ZmZl
cl90ICpidWYsIERWYXJpYWJsZURlY2xfdCAqZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0
c2ZfcGFyc2VyX3BhcnNlX2ludG8oRFZhcmlhYmxlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYsIGRh
dGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgRFZhcmlhYmxlRGVjbF9fd3JpdGUodHNmX3N0cmVh
bV9maWxlX291dHB1dF90ICpvdXQsIERWYXJpYWJsZURlY2xfdCAqZGF0YSkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK0RWYXJpYWJsZURlY2xfdCAqRFZhcmlhYmxlRGVjbF9fcmVhZCh0c2Zfc3Ry
ZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xf
dCBEVmFyaWFibGVEZWNsX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwg
RFZhcmlhYmxlRGVjbF90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlvbgorI2RlZmluZSBUU0ZfREVG
SU5FX0ZVTkNTX0RJbnN0cnVjdGlvbgordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19nZXRfdHlw
ZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBESW5zdHJ1Y3Rpb25fX2Rlc3Ry
dWN0KERJbnN0cnVjdGlvbl90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqREluc3RydWN0aW9uX19n
ZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3Qg
KkRJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
c3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19ESW5zdHJ1Y3Rpb24odHNm
X3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBESW5zdHJ1
Y3Rpb25fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9p
bnN0YW5jZW9mX19ESW5zdHJ1Y3Rpb24odHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9i
dWZmZXJfaW5zdGFuY2VvZihidWYsIERJbnN0cnVjdGlvbl9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRp
YyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqREluc3RydWN0aW9uX19nZW5lcmF0ZSh2b2lkICpk
YXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERJbnN0cnVjdGlvbl9fZ2V0X2dl
bmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpESW5z
dHJ1Y3Rpb25fX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4g
dHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihESW5zdHJ1Y3Rpb25fX2dldF9nZW5lcmF0b3IoKSwg
ZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgREluc3RydWN0aW9uX3QgKkRJbnN0
cnVjdGlvbl9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIChESW5zdHJ1Y3Rpb25f
dCopdHNmX3BhcnNlcl9wYXJzZShESW5zdHJ1Y3Rpb25fX2dldF9wYXJzZXIoKSwgYnVmKTsgfQor
c3RhdGljIFRTRl9pbmxpbmUgREluc3RydWN0aW9uX3QgKkRJbnN0cnVjdGlvbl9fcGFyc2VfaW4o
dHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERJbnN0cnVjdGlvbl90
Kil0c2ZfcGFyc2VyX3BhcnNlX2luKERJbnN0cnVjdGlvbl9fZ2V0X3BhcnNlcigpLCBidWYsIHJl
Z2lvbik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgREluc3RydWN0aW9uX19wYXJz
ZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBESW5zdHJ1Y3Rpb25fdCAqZGF0YSwgdm9pZCAqcmVn
aW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oREluc3RydWN0aW9uX19nZXRfcGFy
c2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBESW5zdHJ1Y3Rpb25fX3dy
aXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBESW5zdHJ1Y3Rpb25fdCAqZGF0YSkg
VFNGX0FUVFJJQlVURV9OT0lOTElORTsKK0RJbnN0cnVjdGlvbl90ICpESW5zdHJ1Y3Rpb25fX3Jl
YWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3RzZl9ib29sX3QgREluc3RydWN0aW9uX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lucHV0
X3QgKmlucCwgREluc3RydWN0aW9uX3QgKnJlc3VsdCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
KyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZQorI2RlZmluZSBU
U0ZfREVGSU5FX0ZVTkNTX0RQcm9jZWR1cmUKK3RzZl90eXBlX3QgKkRQcm9jZWR1cmVfX2dldF90
eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQcm9jZWR1cmVfX2Rlc3Ry
dWN0KERQcm9jZWR1cmVfdCAqZGF0YSk7Cit0c2ZfZ2VucnRyX3QgKkRQcm9jZWR1cmVfX2dldF9n
ZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJzZXJfdCAqRFBy
b2NlZHVyZV9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGlj
IFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19EUHJvY2VkdXJlKHRzZl90eXBlX3Qg
KnR5cGUpIHsgcmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgRFByb2NlZHVyZV9fZ2V0
X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNlb2Zf
X0RQcm9jZWR1cmUodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0dXJuIHRzZl9idWZmZXJfaW5zdGFu
Y2VvZihidWYsIERQcm9jZWR1cmVfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYnVmZmVyX3QgKkRQcm9jZWR1cmVfX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRz
Zl9nZW5lcmF0b3JfZ2VuZXJhdGUoRFByb2NlZHVyZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsg
fQorc3RhdGljIFRTRl9pbmxpbmUgdHNmX2J1ZmZlcl90ICpEUHJvY2VkdXJlX19nZW5lcmF0ZV9p
bih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJh
dGVfaW4oRFByb2NlZHVyZV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0
aWMgVFNGX2lubGluZSBEUHJvY2VkdXJlX3QgKkRQcm9jZWR1cmVfX3BhcnNlKHRzZl9idWZmZXJf
dCAqYnVmKSB7IHJldHVybiAoRFByb2NlZHVyZV90Kil0c2ZfcGFyc2VyX3BhcnNlKERQcm9jZWR1
cmVfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRFByb2NlZHVyZV90
ICpEUHJvY2VkdXJlX19wYXJzZV9pbih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7
IHJldHVybiAoRFByb2NlZHVyZV90Kil0c2ZfcGFyc2VyX3BhcnNlX2luKERQcm9jZWR1cmVfX2dl
dF9wYXJzZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90
IERQcm9jZWR1cmVfX3BhcnNlX2ludG8odHNmX2J1ZmZlcl90ICpidWYsIERQcm9jZWR1cmVfdCAq
ZGF0YSwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oRFByb2Nl
ZHVyZV9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgRFBy
b2NlZHVyZV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpvdXQsIERQcm9jZWR1cmVf
dCAqZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK0RQcm9jZWR1cmVfdCAqRFByb2NlZHVy
ZV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOwordHNmX2Jvb2xfdCBEUHJvY2VkdXJlX19yZWFkX2ludG8odHNmX3N0cmVhbV9maWxlX2lu
cHV0X3QgKmlucCwgRFByb2NlZHVyZV90ICpyZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7
CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9jZWR1cmVEZWNsCisjZGVm
aW5lIFRTRl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZURlY2wKK3RzZl90eXBlX3QgKkRQcm9jZWR1
cmVEZWNsX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEUHJv
Y2VkdXJlRGVjbF9fZGVzdHJ1Y3QoRFByb2NlZHVyZURlY2xfdCAqZGF0YSk7Cit0c2ZfZ2VucnRy
X3QgKkRQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9J
TkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkRQcm9jZWR1cmVEZWNsX19nZXRfcGFyc2VyKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGluc3Rh
bmNlb2ZfX0RQcm9jZWR1cmVEZWNsKHRzZl90eXBlX3QgKnR5cGUpIHsgcmV0dXJuIHRzZl90eXBl
X2luc3RhbmNlb2YodHlwZSwgRFByb2NlZHVyZURlY2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMg
VFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19EUHJvY2VkdXJlRGVjbCh0c2Zf
YnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5jZW9mKGJ1ZiwgRFByb2Nl
ZHVyZURlY2xfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3Qg
KkRQcm9jZWR1cmVEZWNsX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJh
dG9yX2dlbmVyYXRlKERQcm9jZWR1cmVEZWNsX19nZXRfZ2VuZXJhdG9yKCksIGRhdGEpOyB9Citz
dGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkRQcm9jZWR1cmVEZWNsX19nZW5lcmF0ZV9p
bih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9nZW5lcmF0b3JfZ2VuZXJh
dGVfaW4oRFByb2NlZHVyZURlY2xfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQor
c3RhdGljIFRTRl9pbmxpbmUgRFByb2NlZHVyZURlY2xfdCAqRFByb2NlZHVyZURlY2xfX3BhcnNl
KHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAoRFByb2NlZHVyZURlY2xfdCopdHNmX3BhcnNl
cl9wYXJzZShEUHJvY2VkdXJlRGVjbF9fZ2V0X3BhcnNlcigpLCBidWYpOyB9CitzdGF0aWMgVFNG
X2lubGluZSBEUHJvY2VkdXJlRGVjbF90ICpEUHJvY2VkdXJlRGVjbF9fcGFyc2VfaW4odHNmX2J1
ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERQcm9jZWR1cmVEZWNsX3QqKXRz
Zl9wYXJzZXJfcGFyc2VfaW4oRFByb2NlZHVyZURlY2xfX2dldF9wYXJzZXIoKSwgYnVmLCByZWdp
b24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IERQcm9jZWR1cmVEZWNsX19wYXJz
ZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBEUHJvY2VkdXJlRGVjbF90ICpkYXRhLCB2b2lkICpy
ZWdpb24pIHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhEUHJvY2VkdXJlRGVjbF9fZ2V0
X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29sX3QgRFByb2NlZHVyZURl
Y2xfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEUHJvY2VkdXJlRGVjbF90
ICpkYXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworRFByb2NlZHVyZURlY2xfdCAqRFByb2Nl
ZHVyZURlY2xfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJQlVU
RV9OT0lOTElORTsKK3RzZl9ib29sX3QgRFByb2NlZHVyZURlY2xfX3JlYWRfaW50byh0c2Zfc3Ry
ZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBEUHJvY2VkdXJlRGVjbF90ICpyZXN1bHQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9j
ZWR1cmVEZWZuCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZURlZm4KK3RzZl90
eXBlX3QgKkRQcm9jZWR1cmVEZWZuX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5M
SU5FOwordm9pZCBEUHJvY2VkdXJlRGVmbl9fZGVzdHJ1Y3QoRFByb2NlZHVyZURlZm5fdCAqZGF0
YSk7Cit0c2ZfZ2VucnRyX3QgKkRQcm9jZWR1cmVEZWZuX19nZXRfZ2VuZXJhdG9yKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3QgKkRQcm9jZWR1cmVEZWZuX19nZXRf
cGFyc2VyKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB0
c2ZfYm9vbF90IGluc3RhbmNlb2ZfX0RQcm9jZWR1cmVEZWZuKHRzZl90eXBlX3QgKnR5cGUpIHsg
cmV0dXJuIHRzZl90eXBlX2luc3RhbmNlb2YodHlwZSwgRFByb2NlZHVyZURlZm5fX2dldF90eXBl
KCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IGJ1Zl9pbnN0YW5jZW9mX19EUHJv
Y2VkdXJlRGVmbih0c2ZfYnVmZmVyX3QgKmJ1ZikgeyByZXR1cm4gdHNmX2J1ZmZlcl9pbnN0YW5j
ZW9mKGJ1ZiwgRFByb2NlZHVyZURlZm5fX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGlu
ZSB0c2ZfYnVmZmVyX3QgKkRQcm9jZWR1cmVEZWZuX19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJl
dHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERQcm9jZWR1cmVEZWZuX19nZXRfZ2VuZXJhdG9y
KCksIGRhdGEpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYnVmZmVyX3QgKkRQcm9jZWR1cmVE
ZWZuX19nZW5lcmF0ZV9pbih2b2lkICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9n
ZW5lcmF0b3JfZ2VuZXJhdGVfaW4oRFByb2NlZHVyZURlZm5fX2dldF9nZW5lcmF0b3IoKSwgZGF0
YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9pbmxpbmUgRFByb2NlZHVyZURlZm5fdCAqRFByb2Nl
ZHVyZURlZm5fX3BhcnNlKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiAoRFByb2NlZHVyZURl
Zm5fdCopdHNmX3BhcnNlcl9wYXJzZShEUHJvY2VkdXJlRGVmbl9fZ2V0X3BhcnNlcigpLCBidWYp
OyB9CitzdGF0aWMgVFNGX2lubGluZSBEUHJvY2VkdXJlRGVmbl90ICpEUHJvY2VkdXJlRGVmbl9f
cGFyc2VfaW4odHNmX2J1ZmZlcl90ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERQcm9j
ZWR1cmVEZWZuX3QqKXRzZl9wYXJzZXJfcGFyc2VfaW4oRFByb2NlZHVyZURlZm5fX2dldF9wYXJz
ZXIoKSwgYnVmLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9vbF90IERQcm9j
ZWR1cmVEZWZuX19wYXJzZV9pbnRvKHRzZl9idWZmZXJfdCAqYnVmLCBEUHJvY2VkdXJlRGVmbl90
ICpkYXRhLCB2b2lkICpyZWdpb24pIHsgcmV0dXJuIHRzZl9wYXJzZXJfcGFyc2VfaW50byhEUHJv
Y2VkdXJlRGVmbl9fZ2V0X3BhcnNlcigpLCBidWYsIGRhdGEsIHJlZ2lvbik7IH0KK3RzZl9ib29s
X3QgRFByb2NlZHVyZURlZm5fX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBE
UHJvY2VkdXJlRGVmbl90ICpkYXRhKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworRFByb2NlZHVy
ZURlZm5fdCAqRFByb2NlZHVyZURlZm5fX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlu
cCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgRFByb2NlZHVyZURlZm5fX3Jl
YWRfaW50byh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wLCBEUHJvY2VkdXJlRGVmbl90ICpy
ZXN1bHQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVG
SU5FX0ZVTkNTX0RQcm9ncmFtRWxlbWVudAorI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9n
cmFtRWxlbWVudAordHNmX3R5cGVfdCAqRFByb2dyYW1FbGVtZW50X19nZXRfdHlwZSh2b2lkKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEUHJvZ3JhbUVsZW1lbnRfX2Rlc3RydWN0KERQ
cm9ncmFtRWxlbWVudF90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqRFByb2dyYW1FbGVtZW50X19n
ZXRfZ2VuZXJhdG9yKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit0c2ZfcGFyc2VyX3Qg
KkRQcm9ncmFtRWxlbWVudF9fZ2V0X3BhcnNlcih2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5F
Oworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCBpbnN0YW5jZW9mX19EUHJvZ3JhbUVsZW1l
bnQodHNmX3R5cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBE
UHJvZ3JhbUVsZW1lbnRfX2dldF90eXBlKCkpOyB9CitzdGF0aWMgVFNGX2lubGluZSB0c2ZfYm9v
bF90IGJ1Zl9pbnN0YW5jZW9mX19EUHJvZ3JhbUVsZW1lbnQodHNmX2J1ZmZlcl90ICpidWYpIHsg
cmV0dXJuIHRzZl9idWZmZXJfaW5zdGFuY2VvZihidWYsIERQcm9ncmFtRWxlbWVudF9fZ2V0X3R5
cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRFByb2dyYW1FbGVtZW50
X19nZW5lcmF0ZSh2b2lkICpkYXRhKSB7IHJldHVybiB0c2ZfZ2VuZXJhdG9yX2dlbmVyYXRlKERQ
cm9ncmFtRWxlbWVudF9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhKTsgfQorc3RhdGljIFRTRl9pbmxp
bmUgdHNmX2J1ZmZlcl90ICpEUHJvZ3JhbUVsZW1lbnRfX2dlbmVyYXRlX2luKHZvaWQgKmRhdGEs
IHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihEUHJvZ3Jh
bUVsZW1lbnRfX2dldF9nZW5lcmF0b3IoKSwgZGF0YSwgcmVnaW9uKTsgfQorc3RhdGljIFRTRl9p
bmxpbmUgRFByb2dyYW1FbGVtZW50X3QgKkRQcm9ncmFtRWxlbWVudF9fcGFyc2UodHNmX2J1ZmZl
cl90ICpidWYpIHsgcmV0dXJuIChEUHJvZ3JhbUVsZW1lbnRfdCopdHNmX3BhcnNlcl9wYXJzZShE
UHJvZ3JhbUVsZW1lbnRfX2dldF9wYXJzZXIoKSwgYnVmKTsgfQorc3RhdGljIFRTRl9pbmxpbmUg
RFByb2dyYW1FbGVtZW50X3QgKkRQcm9ncmFtRWxlbWVudF9fcGFyc2VfaW4odHNmX2J1ZmZlcl90
ICpidWYsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gKERQcm9ncmFtRWxlbWVudF90Kil0c2ZfcGFy
c2VyX3BhcnNlX2luKERQcm9ncmFtRWxlbWVudF9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7
IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgRFByb2dyYW1FbGVtZW50X19wYXJzZV9p
bnRvKHRzZl9idWZmZXJfdCAqYnVmLCBEUHJvZ3JhbUVsZW1lbnRfdCAqZGF0YSwgdm9pZCAqcmVn
aW9uKSB7IHJldHVybiB0c2ZfcGFyc2VyX3BhcnNlX2ludG8oRFByb2dyYW1FbGVtZW50X19nZXRf
cGFyc2VyKCksIGJ1ZiwgZGF0YSwgcmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEUHJvZ3JhbUVsZW1l
bnRfX3dyaXRlKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0LCBEUHJvZ3JhbUVsZW1lbnRf
dCAqZGF0YSkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK0RQcm9ncmFtRWxlbWVudF90ICpEUHJv
Z3JhbUVsZW1lbnRfX3JlYWQodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKK3RzZl9ib29sX3QgRFByb2dyYW1FbGVtZW50X19yZWFkX2ludG8odHNm
X3N0cmVhbV9maWxlX2lucHV0X3QgKmlucCwgRFByb2dyYW1FbGVtZW50X3QgKnJlc3VsdCkgVFNG
X0FUVFJJQlVURV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1Nf
RFByb2dyYW0KKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19EUHJvZ3JhbQordHNmX3R5cGVfdCAq
RFByb2dyYW1fX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQ
cm9ncmFtX19kZXN0cnVjdChEUHJvZ3JhbV90ICpkYXRhKTsKK3RzZl9nZW5ydHJfdCAqRFByb2dy
YW1fX2dldF9nZW5lcmF0b3Iodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3RzZl9wYXJz
ZXJfdCAqRFByb2dyYW1fX2dldF9wYXJzZXIodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsK
K3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgaW5zdGFuY2VvZl9fRFByb2dyYW0odHNmX3R5
cGVfdCAqdHlwZSkgeyByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZih0eXBlLCBEUHJvZ3JhbV9f
Z2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgYnVmX2luc3RhbmNl
b2ZfX0RQcm9ncmFtKHRzZl9idWZmZXJfdCAqYnVmKSB7IHJldHVybiB0c2ZfYnVmZmVyX2luc3Rh
bmNlb2YoYnVmLCBEUHJvZ3JhbV9fZ2V0X3R5cGUoKSk7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRz
Zl9idWZmZXJfdCAqRFByb2dyYW1fX2dlbmVyYXRlKHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRzZl9n
ZW5lcmF0b3JfZ2VuZXJhdGUoRFByb2dyYW1fX2dldF9nZW5lcmF0b3IoKSwgZGF0YSk7IH0KK3N0
YXRpYyBUU0ZfaW5saW5lIHRzZl9idWZmZXJfdCAqRFByb2dyYW1fX2dlbmVyYXRlX2luKHZvaWQg
KmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4gdHNmX2dlbmVyYXRvcl9nZW5lcmF0ZV9pbihE
UHJvZ3JhbV9fZ2V0X2dlbmVyYXRvcigpLCBkYXRhLCByZWdpb24pOyB9CitzdGF0aWMgVFNGX2lu
bGluZSBEUHJvZ3JhbV90ICpEUHJvZ3JhbV9fcGFyc2UodHNmX2J1ZmZlcl90ICpidWYpIHsgcmV0
dXJuIChEUHJvZ3JhbV90Kil0c2ZfcGFyc2VyX3BhcnNlKERQcm9ncmFtX19nZXRfcGFyc2VyKCks
IGJ1Zik7IH0KK3N0YXRpYyBUU0ZfaW5saW5lIERQcm9ncmFtX3QgKkRQcm9ncmFtX19wYXJzZV9p
bih0c2ZfYnVmZmVyX3QgKmJ1Ziwgdm9pZCAqcmVnaW9uKSB7IHJldHVybiAoRFByb2dyYW1fdCop
dHNmX3BhcnNlcl9wYXJzZV9pbihEUHJvZ3JhbV9fZ2V0X3BhcnNlcigpLCBidWYsIHJlZ2lvbik7
IH0KK3N0YXRpYyBUU0ZfaW5saW5lIHRzZl9ib29sX3QgRFByb2dyYW1fX3BhcnNlX2ludG8odHNm
X2J1ZmZlcl90ICpidWYsIERQcm9ncmFtX3QgKmRhdGEsIHZvaWQgKnJlZ2lvbikgeyByZXR1cm4g
dHNmX3BhcnNlcl9wYXJzZV9pbnRvKERQcm9ncmFtX19nZXRfcGFyc2VyKCksIGJ1ZiwgZGF0YSwg
cmVnaW9uKTsgfQordHNmX2Jvb2xfdCBEUHJvZ3JhbV9fd3JpdGUodHNmX3N0cmVhbV9maWxlX291
dHB1dF90ICpvdXQsIERQcm9ncmFtX3QgKmRhdGEpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitE
UHJvZ3JhbV90ICpEUHJvZ3JhbV9fcmVhZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW5wKSBU
U0ZfQVRUUklCVVRFX05PSU5MSU5FOwordHNmX2Jvb2xfdCBEUHJvZ3JhbV9fcmVhZF9pbnRvKHRz
Zl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbnAsIERQcm9ncmFtX3QgKnJlc3VsdCkgVFNGX0FUVFJJ
QlVURV9OT0lOTElORTsKKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfREluc3Ry
dWN0aW9uX19tb3YKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19ESW5zdHJ1Y3Rpb25fX21vdgor
dHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19tb3ZfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJV
VEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2b2lkIERJbnN0cnVjdGlvbl9fbW92X19k
ZXN0cnVjdChESW5zdHJ1Y3Rpb25fX21vdl90ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVm
IFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19hZGQKKyNkZWZpbmUgVFNGX0RFRklORV9G
VU5DU19ESW5zdHJ1Y3Rpb25fX2FkZAordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19hZGRfX2dl
dF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7CitzdGF0aWMgVFNGX2lubGluZSB2
b2lkIERJbnN0cnVjdGlvbl9fYWRkX19kZXN0cnVjdChESW5zdHJ1Y3Rpb25fX2FkZF90ICpkYXRh
KSB7IH0KKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19h
bGxvYworI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlvbl9fYWxsb2MKK3RzZl90
eXBlX3QgKkRJbnN0cnVjdGlvbl9fYWxsb2NfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVf
Tk9JTkxJTkU7Cit2b2lkIERJbnN0cnVjdGlvbl9fYWxsb2NfX2Rlc3RydWN0KERJbnN0cnVjdGlv
bl9fYWxsb2NfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RJ
bnN0cnVjdGlvbl9fcmV0CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19y
ZXQKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fcmV0X19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRU
UklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCBESW5zdHJ1Y3Rpb25fX3Jl
dF9fZGVzdHJ1Y3QoREluc3RydWN0aW9uX19yZXRfdCAqZGF0YSkgeyB9CisjZW5kaWYKKworI2lm
bmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlvbl9fanVtcAorI2RlZmluZSBUU0ZfREVG
SU5FX0ZVTkNTX0RJbnN0cnVjdGlvbl9fanVtcAordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19q
dW1wX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9p
bmxpbmUgdm9pZCBESW5zdHJ1Y3Rpb25fX2p1bXBfX2Rlc3RydWN0KERJbnN0cnVjdGlvbl9fanVt
cF90ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVfRlVOQ1NfREluc3Ry
dWN0aW9uX19jYWxsCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfREluc3RydWN0aW9uX19jYWxs
Cit0c2ZfdHlwZV90ICpESW5zdHJ1Y3Rpb25fX2NhbGxfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRS
SUJVVEVfTk9JTkxJTkU7Cit2b2lkIERJbnN0cnVjdGlvbl9fY2FsbF9fZGVzdHJ1Y3QoREluc3Ry
dWN0aW9uX19jYWxsX3QgKmRhdGEpOworI2VuZGlmCisKKyNpZm5kZWYgVFNGX0RFRklORV9GVU5D
U19ESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3MKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19ESW5z
dHJ1Y3Rpb25fX2NhbGxfX2FyZ3MKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fY2FsbF9fYXJn
c19fZ2V0X3R5cGUodm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgREluc3RydWN0
aW9uX19jYWxsX19hcmdzX19kZXN0cnVjdChESW5zdHJ1Y3Rpb25fX2NhbGxfX2FyZ3NfdCAqZGF0
YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX2ludDE2X19hcnJheQorI2Rl
ZmluZSBUU0ZfREVGSU5FX0ZVTkNTX2ludDE2X19hcnJheQorI2RlZmluZSBpbnQxNl9fYXJyYXlf
X2dldF90eXBlIGludDE2X19hcnJheVc3Qk9BZ3dMZXBKa09wZUNjQl9vS0tfcmJTQ2ZGcV9BdXRY
dEpFcUhOUEltZlhCTnFjWHpfX2dldF90eXBlCisjZGVmaW5lIGludDE2X19hcnJheV9fZGVzdHJ1
Y3QgaW50MTZfX2FycmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5Q
SW1mWEJOcWNYel9fZGVzdHJ1Y3QKK3RzZl90eXBlX3QgKmludDE2X19hcnJheV9fZ2V0X3R5cGUo
dm9pZCkgVFNGX0FUVFJJQlVURV9OT0lOTElORTsKK3ZvaWQgaW50MTZfX2FycmF5X19kZXN0cnVj
dChpbnQxNl9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZV
TkNTX0RJbnN0cnVjdGlvbl9fYnJhbmNoWmVybworI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNTX0RJ
bnN0cnVjdGlvbl9fYnJhbmNoWmVybwordHNmX3R5cGVfdCAqREluc3RydWN0aW9uX19icmFuY2ha
ZXJvX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOworc3RhdGljIFRTRl9p
bmxpbmUgdm9pZCBESW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm9fX2Rlc3RydWN0KERJbnN0cnVjdGlv
bl9fYnJhbmNoWmVyb190ICpkYXRhKSB7IH0KKyNlbmRpZgorCisjaWZuZGVmIFRTRl9ERUZJTkVf
RlVOQ1NfRFByb2NlZHVyZURlZm5fX3ZhcmlhYmxlcworI2RlZmluZSBUU0ZfREVGSU5FX0ZVTkNT
X0RQcm9jZWR1cmVEZWZuX192YXJpYWJsZXMKK3RzZl90eXBlX3QgKkRQcm9jZWR1cmVEZWZuX192
YXJpYWJsZXNfX2dldF90eXBlKHZvaWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQ
cm9jZWR1cmVEZWZuX192YXJpYWJsZXNfX2Rlc3RydWN0KERQcm9jZWR1cmVEZWZuX192YXJpYWJs
ZXNfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RWYXJpYWJs
ZURlY2xfX2FycmF5CisjZGVmaW5lIFRTRl9ERUZJTkVfRlVOQ1NfRFZhcmlhYmxlRGVjbF9fYXJy
YXkKKyNkZWZpbmUgRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2dldF90eXBlIERWYXJpYWJsZURlY2xf
X2FycmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1mWEJOcWNY
el9fZ2V0X3R5cGUKKyNkZWZpbmUgRFZhcmlhYmxlRGVjbF9fYXJyYXlfX2Rlc3RydWN0IERWYXJp
YWJsZURlY2xfX2FycmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5Q
SW1mWEJOcWNYel9fZGVzdHJ1Y3QKK3RzZl90eXBlX3QgKkRWYXJpYWJsZURlY2xfX2FycmF5X19n
ZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEVmFyaWFibGVEZWNs
X19hcnJheV9fZGVzdHJ1Y3QoRFZhcmlhYmxlRGVjbF9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYK
KworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9jZWR1cmVEZWZuX19jb2RlCisjZGVmaW5l
IFRTRl9ERUZJTkVfRlVOQ1NfRFByb2NlZHVyZURlZm5fX2NvZGUKK3RzZl90eXBlX3QgKkRQcm9j
ZWR1cmVEZWZuX19jb2RlX19nZXRfdHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwor
dm9pZCBEUHJvY2VkdXJlRGVmbl9fY29kZV9fZGVzdHJ1Y3QoRFByb2NlZHVyZURlZm5fX2NvZGVf
dCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBUU0ZfREVGSU5FX0ZVTkNTX0RJbnN0cnVjdGlv
bl9fYXJyYXkKKyNkZWZpbmUgVFNGX0RFRklORV9GVU5DU19ESW5zdHJ1Y3Rpb25fX2FycmF5Cisj
ZGVmaW5lIERJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90eXBlIERJbnN0cnVjdGlvbl9fYXJyYXlX
N0JPQWd3TGVwSmtPcGVDY0Jfb0tLX3JiU0NmRnFfQXV0WHRKRXFITlBJbWZYQk5xY1h6X19nZXRf
dHlwZQorI2RlZmluZSBESW5zdHJ1Y3Rpb25fX2FycmF5X19kZXN0cnVjdCBESW5zdHJ1Y3Rpb25f
X2FycmF5VzdCT0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1mWEJOcWNY
el9fZGVzdHJ1Y3QKK3RzZl90eXBlX3QgKkRJbnN0cnVjdGlvbl9fYXJyYXlfX2dldF90eXBlKHZv
aWQpIFRTRl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERJbnN0cnVjdGlvbl9fYXJyYXlfX2Rl
c3RydWN0KERJbnN0cnVjdGlvbl9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRlZiBU
U0ZfREVGSU5FX0ZVTkNTX0RQcm9ncmFtX19nbG9iYWxzCisjZGVmaW5lIFRTRl9ERUZJTkVfRlVO
Q1NfRFByb2dyYW1fX2dsb2JhbHMKK3RzZl90eXBlX3QgKkRQcm9ncmFtX19nbG9iYWxzX19nZXRf
dHlwZSh2b2lkKSBUU0ZfQVRUUklCVVRFX05PSU5MSU5FOwordm9pZCBEUHJvZ3JhbV9fZ2xvYmFs
c19fZGVzdHJ1Y3QoRFByb2dyYW1fX2dsb2JhbHNfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmbmRl
ZiBUU0ZfREVGSU5FX0ZVTkNTX0RQcm9ncmFtRWxlbWVudF9fYXJyYXkKKyNkZWZpbmUgVFNGX0RF
RklORV9GVU5DU19EUHJvZ3JhbUVsZW1lbnRfX2FycmF5CisjZGVmaW5lIERQcm9ncmFtRWxlbWVu
dF9fYXJyYXlfX2dldF90eXBlIERQcm9ncmFtRWxlbWVudF9fYXJyYXlXN0JPQWd3TGVwSmtPcGVD
Y0Jfb0tLX3JiU0NmRnFfQXV0WHRKRXFITlBJbWZYQk5xY1h6X19nZXRfdHlwZQorI2RlZmluZSBE
UHJvZ3JhbUVsZW1lbnRfX2FycmF5X19kZXN0cnVjdCBEUHJvZ3JhbUVsZW1lbnRfX2FycmF5VzdC
T0Fnd0xlcEprT3BlQ2NCX29LS19yYlNDZkZxX0F1dFh0SkVxSE5QSW1mWEJOcWNYel9fZGVzdHJ1
Y3QKK3RzZl90eXBlX3QgKkRQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2dldF90eXBlKHZvaWQpIFRT
Rl9BVFRSSUJVVEVfTk9JTkxJTkU7Cit2b2lkIERQcm9ncmFtRWxlbWVudF9fYXJyYXlfX2Rlc3Ry
dWN0KERQcm9ncmFtRWxlbWVudF9fYXJyYXlfdCAqZGF0YSk7CisjZW5kaWYKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9OworI2VuZGlmCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfaXJfc3BlZWQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2lyX3NwZWVkLmMJKG5vbmV4aXN0ZW50KQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9pcl9zcGVlZC5jCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzY3IEBACisjaW5jbHVkZSAidHNmX2lyLmgiCisjaW5jbHVkZSAi
dHNmX2lyX2RpZmZlcmVudC5oIgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8aW50dHlw
ZXMuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaWZkZWYg
VFNGX0JVSUxEX1NZU1RFTQorI2luY2x1ZGUgInRzZi5oIgorI2Vsc2UKKyNpbmNsdWRlIDx0c2Yv
dHNmLmg+CisjZW5kaWYKKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkgeworICAgIGZwcmludGYo
c3RkZXJyLCAiVXNhZ2U6IHRzZl9pcl9zcGVlZCBbPGNvdW50Pl1cbiIpOworICAgIGV4aXQoMSk7
Cit9CisKK3N0YXRpYyBkb3VibGUgbWlsbGlUaW1lKHZvaWQpIHsKKyAgICBzdHJ1Y3QgdGltZXZh
bCB0djsKKyAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKyAgICByZXR1cm4gdHYudHZfc2Vj
ICogMTAwMC4gKyB0di50dl91c2VjIC8gMTAwMC47Cit9CisKKyNkZWZpbmUgVElNRUlUKHN0YXRl
bWVudCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgZG91YmxlIF9fdGlfYmVmb3JlID0gbWlsbGlUaW1lKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGVtZW50OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG91YmxlIF9fdGlfYWZ0
ZXIgPSBtaWxsaVRpbWUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcHJpbnRmKCIlczogJS4zbGYgbXNcbiIsICNzdGF0ZW1lbnQsIF9fdGlfYWZ0ZXIgLSBfX3Rp
X2JlZm9yZSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBJZiB0aGUgZXhwcmVzc2lvbiBldmFs
dWF0ZXMgZmFsc2UgdGhlbiBpdCBhc3N1bWVzIGFuIGVycm9yIGFuZCBleGl0cy4gKi8KKyNkZWZp
bmUgQ1QoZXhwKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKCEoZXhwKSkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXM6JWQ6ICVzOiAlc1xuIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwLCB0c2ZfZ2V0X2Vycm9yKCkpOyAg
ICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
ICgwKQorI2RlZmluZSBDUyhleHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIShleHApKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50
IG15RXJybm8gPSBlcnJubzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczolZDogJXM6ICVzXG4iLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5F
X18sICNleHAsIHN0cmVycm9yKG15RXJybm8pKTsgICAgICAgXAorICAgICAgICAgICAgZXhpdCgx
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyB2b2lkIHdyaXRlVGVz
dChjb25zdCBjaGFyICpmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBw
cm9ncmFtU2l6ZSwgdW5zaWduZWQgbnVtUHJvZ3JhbXMsCisgICAgICAgICAgICAgICAgICAgICAg
dHNmX3ppcF9tb2RlX3QgemlwTW9kZSkgeworICAgIHRzZl96aXBfd3RyX2F0dHJfdCB6aXBBdHRy
aWJ1dGVzOworICAgIHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqb3V0OworICAgIHVuc2lnbmVk
IHByb2dyYW1JbmRleDsKKyAgICBjaGFyIGJ1ZlsyNTZdOworICAgIAorICAgIENUKHRzZl96aXBf
d3RyX2F0dHJfZ2V0X2Zvcl9tb2RlKCZ6aXBBdHRyaWJ1dGVzLCB6aXBNb2RlKSk7CisgICAgQ1Qo
b3V0ID0gdHNmX3N0cmVhbV9maWxlX291dHB1dF9vcGVuKGZpbGVuYW1lLCB0c2ZfZmFsc2UsICZ6
aXBBdHRyaWJ1dGVzKSk7CisgICAgCisgICAgZm9yIChwcm9ncmFtSW5kZXggPSAwOyBwcm9ncmFt
SW5kZXggPCBudW1Qcm9ncmFtczsgKytwcm9ncmFtSW5kZXgpIHsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgbnVtRGVjbHMgPSAyNTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgbnVtRGVmbnMgPSAy
NTsKKyAgICAgICAgCisgICAgICAgIFByb2dyYW1fdCAqcHJvZ3JhbTsKKyAgICAgICAgdW5zaWdu
ZWQgZWxlbWVudEluZGV4OworCisgICAgICAgIENTKHByb2dyYW0gPSB0c2ZfcmVnaW9uX2NyZWF0
ZShzaXplb2YoUHJvZ3JhbV90KSkpOworICAgICAgICAKKyAgICAgICAgcHJvZ3JhbS0+Z2xvYmFs
cy5sZW4gPSBudW1EZWNscyArIG51bURlZm5zOworICAgICAgICBDUyhwcm9ncmFtLT5nbG9iYWxz
LmRhdGEgPSB0c2ZfcmVnaW9uX2FsbG9jKAorICAgICAgICAgICAgICAgcHJvZ3JhbSwgc2l6ZW9m
KFByb2dyYW1FbGVtZW50X3QpICogcHJvZ3JhbS0+Z2xvYmFscy5sZW4pKTsKKyAgICAgICAgICAg
IAorICAgICAgICBmb3IgKGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8IG51bURlY2xz
OyArK2VsZW1lbnRJbmRleCkgeworICAgICAgICAgICAgUHJvZ3JhbUVsZW1lbnRfdCAqZWxlbWVu
dDsKKyAgICAgICAgICAgIFByb2NlZHVyZURlY2xfdCAqcHJvY2VkdXJlOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgZWxlbWVudCA9IHByb2dyYW0tPmdsb2JhbHMuZGF0YSArIGVsZW1l
bnRJbmRleDsKKyAgICAgICAgICAgIGVsZW1lbnQtPnZhbHVlID0gUHJvZ3JhbUVsZW1lbnRfX3By
b2NlZHVyZURlY2w7CisgICAgICAgICAgICBwcm9jZWR1cmUgPSAmZWxlbWVudC0+dS5wcm9jZWR1
cmVEZWNsOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgc25wcmludGYoYnVmLCBzaXpl
b2YoYnVmKSwgImZvbyV1IiwgZWxlbWVudEluZGV4KTsKKyAgICAgICAgICAgIHByb2NlZHVyZS0+
bmFtZSA9IHRzZl9yZWdpb25fc3RyZHVwKHByb2dyYW0sIGJ1Zik7CisgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICBmb3IgKGVsZW1lbnRJbmRleCA9IG51bURlY2xzOworICAgICAgICAg
ICAgIGVsZW1lbnRJbmRleCA8IG51bURlY2xzICsgbnVtRGVmbnM7CisgICAgICAgICAgICAgKytl
bGVtZW50SW5kZXgpIHsKKyAgICAgICAgICAgIFByb2dyYW1FbGVtZW50X3QgKmVsZW1lbnQ7Cisg
ICAgICAgICAgICBQcm9jZWR1cmVEZWZuX3QgKnByb2NlZHVyZTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcyA9IChwcm9ncmFtSW5kZXggJSBwcm9n
cmFtU2l6ZSkgKyAxOworICAgICAgICAgICAgdW5zaWduZWQgbnVtSW5zdHJ1Y3Rpb25zID0gKHBy
b2dyYW1JbmRleCAlIHByb2dyYW1TaXplKSAqIDIgKyAxOworICAgICAgICAgICAgdW5zaWduZWQg
bnVtRGVidWdEYXRhcyA9IChudW1JbnN0cnVjdGlvbnMgKyA1KSAvIDY7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHVuc2lnbmVkIHZhcmlhYmxlSW5kZXg7CisgICAgICAgICAgICB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkluZGV4OworICAgICAgICAgICAgdW5zaWduZWQgZGVidWdEYXRhSW5kZXg7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBlbGVtZW50ID0gcHJvZ3JhbS0+Z2xvYmFs
cy5kYXRhICsgZWxlbWVudEluZGV4OworICAgICAgICAgICAgZWxlbWVudC0+dmFsdWUgPSBQcm9n
cmFtRWxlbWVudF9fcHJvY2VkdXJlRGVmbjsKKyAgICAgICAgICAgIHByb2NlZHVyZSA9ICZlbGVt
ZW50LT51LnByb2NlZHVyZURlZm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBzbnBy
aW50ZihidWYsIHNpemVvZihidWYpLCAiYmFyJXUiLCBlbGVtZW50SW5kZXgpOworICAgICAgICAg
ICAgcHJvY2VkdXJlLT5uYW1lID0gdHNmX3JlZ2lvbl9zdHJkdXAocHJvZ3JhbSwgYnVmKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHByb2NlZHVyZS0+dmFyaWFibGVzLmxlbiA9IG51
bVZhcmlhYmxlczsKKyAgICAgICAgICAgIENTKHByb2NlZHVyZS0+dmFyaWFibGVzLmRhdGEgPSB0
c2ZfcmVnaW9uX2FsbG9jKAorICAgICAgICAgICAgICAgICAgIHByb2dyYW0sIHNpemVvZihWYXJp
YWJsZURlY2xfdCkgKiBudW1WYXJpYWJsZXMpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZvciAodmFyaWFibGVJbmRleCA9IDA7IHZhcmlhYmxlSW5kZXggPCBudW1WYXJpYWJsZXM7
ICsrdmFyaWFibGVJbmRleCkgeworICAgICAgICAgICAgICAgIFZhcmlhYmxlRGVjbF90ICp2YXJp
YWJsZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBw
cm9jZWR1cmUtPnZhcmlhYmxlcy5kYXRhICsgdmFyaWFibGVJbmRleDsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCh2YXJpYWJsZUluZGV4ICsgcHJvZ3JhbUluZGV4
KSAlIDMpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT50eXBlID0gImZvbyI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnR5cGUgPSAi
YmFyIjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAy
OgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+dHlwZSA9ICJiYXoiOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBhYm9ydCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc25wcmludGYoYnVmLCBz
aXplb2YoYnVmKSwgIngldSIsIHZhcmlhYmxlSW5kZXgpOworICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5uYW1lID0gdHNmX3JlZ2lvbl9zdHJkdXAocHJvZ3JhbSwgYnVmKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHByb2NlZHVyZS0+Y29kZS5sZW4gPSBu
dW1JbnN0cnVjdGlvbnM7CisgICAgICAgICAgICBDUyhwcm9jZWR1cmUtPmNvZGUuZGF0YSA9IHRz
Zl9yZWdpb25fYWxsb2MoCisgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSwgc2l6ZW9mKEluc3Ry
dWN0aW9uX3QpICogbnVtSW5zdHJ1Y3Rpb25zKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICBmb3IgKGluc3RydWN0aW9uSW5kZXggPSAwOworICAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbkluZGV4IDwgbnVtSW5zdHJ1Y3Rpb25zOworICAgICAgICAgICAgICAgICArK2luc3RydWN0
aW9uSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbl90ICppbnN0cnVjdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gPSBwcm9j
ZWR1cmUtPmNvZGUuZGF0YSArIGluc3RydWN0aW9uSW5kZXg7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHN3aXRjaCAoKGluc3RydWN0aW9uSW5kZXggKyBwcm9ncmFtSW5k
ZXgpICUgOCkgeworICAgICAgICAgICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25fX25vcDogeworICAg
ICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dmFsdWUgPSBJbnN0cnVjdGlvbl9fbm9wOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEluc3RydWN0aW9uX19tb3Y6IHsK
KyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24tPnZhbHVlID0gSW5zdHJ1Y3Rpb25fX21v
djsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24tPnUubW92LmRlc3QgPQorICAgICAg
ICAgICAgICAgICAgICAgICAgKGluc3RydWN0aW9uSW5kZXggKyBwcm9ncmFtSW5kZXgpICUgbnVt
VmFyaWFibGVzOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dS5tb3Yuc3JjID0K
KyAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0cnVjdGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4
ICsgMSkgJSBudW1WYXJpYWJsZXM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNh
c2UgSW5zdHJ1Y3Rpb25fX2FkZDogeworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+
dmFsdWUgPSBJbnN0cnVjdGlvbl9fYWRkOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bi0+dS5hZGQuZGVzdCA9CisgICAgICAgICAgICAgICAgICAgICAgICAoaW5zdHJ1Y3Rpb25JbmRl
eCArIHByb2dyYW1JbmRleCArIDIpICUgbnVtVmFyaWFibGVzOworICAgICAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbi0+dS5hZGQuc3JjID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0
cnVjdGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4ICsgMykgJSBudW1WYXJpYWJsZXM7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25fX2FsbG9jOiB7CisgICAg
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLT52YWx1ZSA9IEluc3RydWN0aW9uX19hbGxvYzsK
KyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzbnByaW50Zihi
dWYsIHNpemVvZihidWYpLCAidCV1IiwgaW5zdHJ1Y3Rpb25JbmRleCArIHByb2dyYW1JbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLT51LmFsbG9jLnR5cGUgPSB0c2ZfcmVn
aW9uX3N0cmR1cChwcm9ncmFtLCBidWYpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBjYXNlIEluc3RydWN0aW9uX19yZXQ6IHsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b24tPnZhbHVlID0gSW5zdHJ1Y3Rpb25fX3JldDsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1
Y3Rpb24tPnUucmV0LnNyYyA9CisgICAgICAgICAgICAgICAgICAgICAgICAoaW5zdHJ1Y3Rpb25J
bmRleCArIHByb2dyYW1JbmRleCArIDQpICUgbnVtVmFyaWFibGVzOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBjYXNlIEluc3RydWN0aW9uX19qdW1wOiB7CisgICAgICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9uLT52YWx1ZSA9IEluc3RydWN0aW9uX19qdW1wOworICAgICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbi0+dS5qdW1wLnRhcmdldCA9CisgICAgICAgICAgICAgICAg
ICAgICAgICAoaW5zdHJ1Y3Rpb25JbmRleCArIHByb2dyYW1JbmRleCkgJSBudW1JbnN0cnVjdGlv
bnM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25fX2Nh
bGw6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXJncyA9IChpbnN0cnVjdGlv
bkluZGV4ICsgcHJvZ3JhbUluZGV4KSAlIDEwOworICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4OworICAgICAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLT52YWx1ZSA9IEluc3RydWN0
aW9uX19jYWxsOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dS5jYWxsLmRlc3Qg
PQorICAgICAgICAgICAgICAgICAgICAgICAgKGluc3RydWN0aW9uSW5kZXggKyBwcm9ncmFtSW5k
ZXggKyA3KSAlIG51bVZhcmlhYmxlczsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24t
PnUuY2FsbC5jYWxsZWUgPQorICAgICAgICAgICAgICAgICAgICAgICAgKChpbnN0cnVjdGlvbklu
ZGV4ICsgcHJvZ3JhbUluZGV4KSAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKG51bVZhcmlh
YmxlcyArIG51bURlY2xzICsgbnVtRGVmbnMpKSAtCisgICAgICAgICAgICAgICAgICAgICAgICBu
dW1EZWNscyAtIG51bURlZm5zOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIGluc3RydWN0aW9uLT51LmNhbGwuYXJncy5sZW4gPSBudW1BcmdzOworICAgICAg
ICAgICAgICAgICAgICBDUyhpbnN0cnVjdGlvbi0+dS5jYWxsLmFyZ3MuZGF0YSA9IHRzZl9yZWdp
b25fYWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLCBzaXplb2YoT3Bl
cmFuZF90KSAqIG51bUFyZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBmb3IgKGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBudW1BcmdzOyArK2FyZ0lu
ZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi0+dS5jYWxsLmFyZ3Mu
ZGF0YVthcmdJbmRleF0gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0cnVjdGlv
bkluZGV4ICsgcHJvZ3JhbUluZGV4ICsgYXJnSW5kZXgpICUgbnVtVmFyaWFibGVzOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgSW5z
dHJ1Y3Rpb25fX2JyYW5jaFplcm86IHsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24t
PnZhbHVlID0gSW5zdHJ1Y3Rpb25fX2JyYW5jaFplcm87CisgICAgICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9uLT51LmJyYW5jaFplcm8uc3JjID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChp
bnN0cnVjdGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4ICsgNSkgJSBudW1WYXJpYWJsZXM7CisgICAg
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLT51LmJyYW5jaFplcm8udGFyZ2V0ID0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIChpbnN0cnVjdGlvbkluZGV4ICsgcHJvZ3JhbUluZGV4ICsgNikg
JSBudW1JbnN0cnVjdGlvbnM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGFib3J0KCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgcHJvY2VkdXJlLT5kZWJ1Zy5sZW4gPSBudW1EZWJ1Z0RhdGFzOworICAgICAgICAg
ICAgQ1MocHJvY2VkdXJlLT5kZWJ1Zy5kYXRhID0gdHNmX3JlZ2lvbl9hbGxvYygKKyAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtLCBzaXplb2YoRGVidWdEYXRhX3QpICogbnVtRGVidWdEYXRhcykp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGRlYnVnRGF0YUluZGV4ID0gMDsgZGVi
dWdEYXRhSW5kZXggPCBudW1EZWJ1Z0RhdGFzOyArK2RlYnVnRGF0YUluZGV4KSB7CisgICAgICAg
ICAgICAgICAgRGVidWdEYXRhX3QgKmRlYnVnRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgZGVidWdEYXRhID0gcHJvY2VkdXJlLT5kZWJ1Zy5kYXRhICsgZGVidWdE
YXRhSW5kZXg7CisgICAgICAgICAgICAgICAgZGVidWdEYXRhLT5zdGFydE9mZnNldCA9IGRlYnVn
RGF0YUluZGV4OworICAgICAgICAgICAgICAgIGRlYnVnRGF0YS0+c3BhblNpemUgPSAxOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1Ziks
ICJkZWJ1ZyV1IiwgZGVidWdEYXRhSW5kZXgpOworICAgICAgICAgICAgICAgIGRlYnVnRGF0YS0+
ZGF0YSA9IHRzZl9yZWdpb25fc3RyZHVwKHByb2dyYW0sIGJ1Zik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBQcm9ncmFtX193cml0ZShvdXQsIHByb2dy
YW0pOworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocHJvZ3JhbSk7CisgICAgfQorICAgIAorICAg
IENUKHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfY2xvc2Uob3V0KSk7Cit9CisKK3N0YXRpYyB2b2lk
IHJlYWRUZXN0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1bnNpZ25lZCBudW1Qcm9ncmFtcykgewor
ICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90ICppbjsKKyAgICB1bnNpZ25lZCBjb3VudDsKKyAg
ICAKKyAgICBDVChpbiA9IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9vcGVuKGZpbGVuYW1lLCBOVUxM
LCBOVUxMKSk7CisgICAgCisgICAgY291bnQgPSAwOworICAgIGZvciAoOzspIHsKKyAgICAgICAg
UHJvZ3JhbV90ICpwcm9ncmFtID0gUHJvZ3JhbV9fcmVhZChpbik7CisgICAgICAgIGlmICghcHJv
Z3JhbSkgeworICAgICAgICAgICAgQ1QodHNmX2dldF9lcnJvcl9jb2RlKCkgPT0gVFNGX0VfRU9G
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb3Vu
dCsrOworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocHJvZ3JhbSk7CisgICAgfQorICAgIAorICAg
IGlmIChjb3VudCAhPSBudW1Qcm9ncmFtcykKKyAgICAgICAgYWJvcnQoKTsKKyAgICAKKyAgICB0
c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfY2xvc2UoaW4pOworfQorCitzdGF0aWMgdm9pZCByZWFkTWFs
bG9jVGVzdChjb25zdCBjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQgbnVtUHJvZ3JhbXMpIHsKKyAg
ICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW47CisgICAgdW5zaWduZWQgY291bnQ7CisgICAg
CisgICAgQ1QoaW4gPSB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfb3BlbihmaWxlbmFtZSwgTlVMTCwg
TlVMTCkpOworICAgIAorICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIFBy
b2dyYW1fdCBwcm9ncmFtOworICAgICAgICBpZiAoIVByb2dyYW1fX3JlYWRfaW50byhpbiwgJnBy
b2dyYW0pKSB7CisgICAgICAgICAgICBDVCh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSA9PSBUU0ZfRV9F
T0YpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNv
dW50Kys7CisgICAgICAgIFByb2dyYW1fX2Rlc3RydWN0KCZwcm9ncmFtKTsKKyAgICB9CisgICAg
CisgICAgaWYgKGNvdW50ICE9IG51bVByb2dyYW1zKQorICAgICAgICBhYm9ydCgpOworICAgIAor
ICAgIHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9jbG9zZShpbik7Cit9CisKK3N0YXRpYyB2b2lkIHJl
YWRDb252ZXJ0VGVzdChjb25zdCBjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQgbnVtUHJvZ3JhbXMp
IHsKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqaW47CisgICAgdW5zaWduZWQgY291bnQ7
CisgICAgCisgICAgQ1QoaW4gPSB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfb3BlbihmaWxlbmFtZSwg
TlVMTCwgTlVMTCkpOworICAgIAorICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAg
ICAgIERQcm9ncmFtX3QgKnByb2dyYW0gPSBEUHJvZ3JhbV9fcmVhZChpbik7CisgICAgICAgIGlm
ICghcHJvZ3JhbSkgeworICAgICAgICAgICAgQ1QodHNmX2dldF9lcnJvcl9jb2RlKCkgPT0gVFNG
X0VfRU9GKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBjb3VudCsrOworICAgICAgICB0c2ZfcmVnaW9uX2ZyZWUocHJvZ3JhbSk7CisgICAgfQorICAg
IAorICAgIGlmIChjb3VudCAhPSBudW1Qcm9ncmFtcykKKyAgICAgICAgYWJvcnQoKTsKKyAgICAK
KyAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfY2xvc2UoaW4pOworfQorCitpbnQgbWFpbihpbnQg
YywgY2hhciAqKnYpIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqZmlsZW5hbWUgPSAidHNmX2ly
X3NwZWVkX3Rlc3RfZmlsZS50c2YiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICp6aXBGaWxlbmFt
ZSA9ICJ0c2ZfaXJfc3BlZWRfdGVzdF96aXBfZmlsZS50c2YiOworICAgIAorICAgIHVuc2lnbmVk
IGNvdW50OworICAgIAorICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgMToKKyAgICAgICAgLyog
VXNlIGEgc21hbGwgcHJvYmxlbSBzaXplIHN1aXRhYmxlIGZvciByZWdyZXNzaW9uIHRlc3Rpbmcu
ICovCisgICAgICAgIGNvdW50ID0gMTAwMDsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAg
IGNhc2UgMjoKKyAgICAgICAgaWYgKHNzY2FuZih2WzFdLCAiJXUiLCAmY291bnQpICE9IDEpIHsK
KyAgICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAg
IAorICAgIGRlZmF1bHQ6CisgICAgICAgIHVzYWdlKCk7CisgICAgICAgIHJldHVybiAxOworICAg
IH0KKyAgICAKKyAgICBwcmludGYoIldyaXRpbmcgJXUgcHJvZ3JhbXMuXG4iLCBjb3VudCk7Cisg
ICAgaWYgKGNvdW50ICE9IDEwMDAwKQorICAgICAgICBwcmludGYoIldBUk5JTkc6IElmIHlvdSBh
cmUgYmVuY2htYXJraW5nLCBwbGVhc2UgdXNlIGNvdW50ID0gMTAwMDAuXG4iKTsKKyAgICAKKyAg
ICBUSU1FSVQod3JpdGVUZXN0KGZpbGVuYW1lLCAxMDAsIGNvdW50LCBUU0ZfWklQX05PTkUpKTsK
KyAgICBUSU1FSVQocmVhZFRlc3QoZmlsZW5hbWUsIGNvdW50KSk7CisgICAgVElNRUlUKHJlYWRN
YWxsb2NUZXN0KGZpbGVuYW1lLCBjb3VudCkpOworICAgIFRJTUVJVChyZWFkQ29udmVydFRlc3Qo
ZmlsZW5hbWUsIGNvdW50KSk7CisgICAgCisgICAgaWYgKHRzZl96bGliX3N1cHBvcnRlZCgpKSB7
CisgICAgICAgIFRJTUVJVCh3cml0ZVRlc3QoemlwRmlsZW5hbWUsIDEwMCwgY291bnQsIFRTRl9a
SVBfWkxJQikpOworICAgICAgICBUSU1FSVQocmVhZFRlc3QoemlwRmlsZW5hbWUsIGNvdW50KSk7
CisgICAgICAgIFRJTUVJVChyZWFkTWFsbG9jVGVzdChmaWxlbmFtZSwgY291bnQpKTsKKyAgICAg
ICAgVElNRUlUKHJlYWRDb252ZXJ0VGVzdCh6aXBGaWxlbmFtZSwgY291bnQpKTsKKyAgICB9Cisg
ICAgCisgICAgLyogV2UgZG9uJ3QgYmVuY2htYXJrIGJ6aXAyIGJlY2F1c2UgaXQncyBqdXN0IHRv
byBzbG93IHRvIGJlIGludGVyZXN0aW5nLiAqLworICAgIAorICAgIHJldHVybiAwOworfQorCklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX2xpbWl0cy5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbGlt
aXRzLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9saW1pdHMuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
dHNmX2ludGVybmFsLmgiCisKK3RzZl9saW1pdHNfdCAqdHNmX2xpbWl0c19jcmVhdGUoKSB7Cisg
ICAgdHNmX2xpbWl0c190ICpyZXN1bHQ9bWFsbG9jKHNpemVvZih0c2ZfbGltaXRzX3QpKTsKKyAg
ICBpZiAocmVzdWx0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBt
YWxsb2MgdHNmX2xpbWl0c190Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAK
KyAgICByZXN1bHQtPm1heF90eXBlcyAgICAgICAgICAgPSBVSU5UMzJfTUFYOworICAgIHJlc3Vs
dC0+bWF4X3R5cGVfc2l6ZSAgICAgICA9IFVJTlQzMl9NQVg7CisgICAgcmVzdWx0LT5tYXhfdG90
YWxfdHlwZV9zaXplID0gVUlOVDMyX01BWDsKKyAgICByZXN1bHQtPm1heF9idWZfc2l6ZSAgICAg
ICAgPSBVSU5UMzJfTUFYOworICAgIHJlc3VsdC0+ZGVwdGhfbGltaXQgICAgICAgICA9IFVJTlQz
Ml9NQVg7CisgICAgbWVtc2V0KCYocmVzdWx0LT5hbGxvd190eXBlX2tpbmQpLDI1NSwzMik7Cisg
ICAgcmVzdWx0LT5tYXhfYXJyYXlfbGVuZ3RoICAgID0gVUlOVDMyX01BWDsKKyAgICByZXN1bHQt
Pm1heF9zdHJ1Y3Rfc2l6ZSAgICAgPSBVSU5UMzJfTUFYOworICAgIHJlc3VsdC0+bWF4X2Nob2lj
ZV9zaXplICAgICA9IFVJTlQzMl9NQVg7CisgICAgcmVzdWx0LT5tYXhfc3RyaW5nX3NpemUgICAg
ID0gVUlOVDMyX01BWDsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHRzZl9s
aW1pdHNfZGVzdHJveSh0c2ZfbGltaXRzX3QgKmxpbWl0cykgeworICAgIGlmIChsaW1pdHM9PU5V
TEwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmcmVlKGxpbWl0cyk7Cit9CisKK3Rz
Zl9saW1pdHNfdCAqdHNmX2xpbWl0c19jbG9uZSh0c2ZfbGltaXRzX3QgKmxpbWl0cykgeworICAg
IHRzZl9saW1pdHNfdCAqcmVzdWx0PW1hbGxvYyhzaXplb2YodHNmX2xpbWl0c190KSk7CisgICAg
aWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFs
bG9jIHRzZl9saW1pdHNfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisg
ICAgbWVtY3B5KHJlc3VsdCxsaW1pdHMsc2l6ZW9mKHRzZl9saW1pdHNfdCkpOworICAgIAorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKworCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2ZfbmFtZWRfdHlwZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbmFtZWRfdHlwZS5jCShub25leGlzdGVudCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfbmFtZWRfdHlwZS5j
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVy
bmFsLmgiCisKK3RzZl9uYW1lZF90eXBlX3QgKnRzZl9uYW1lZF90eXBlX2NyZWF0ZShjb25zdCBj
aGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90
eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgaW5kZXgpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpub2RlPW1hbGxvYyhzaXplb2Yo
dHNmX25hbWVkX3R5cGVfdCkpOworICAgIGlmIChub2RlPT1OVUxMKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX25hbWVkX3R5cGVfdCIpOworICAgICAgICBn
b3RvIGZhaWx1cmVfMTsKKyAgICB9CisgICAgCisgICAgaWYgKHN0cmxlbihuYW1lKSsxPlRTRl9T
VFJfU0laRSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1NUUl9PVkVSRkxPVywKKyAg
ICAgICAgICAgICAgICAgICAgICAiU3RyaW5nICclcycgaXMgdG9vIGxvbmcgdG8gYmUgdXNlZCBh
cyBhbiBlbGVtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsbmFtZSk7CisgICAg
ICAgIGdvdG8gZmFpbHVyZV8yOworICAgIH0KKyAgICAKKyAgICBub2RlLT5uYW1lPXN0cmR1cChu
YW1lKTsKKyAgICBpZiAobm9kZS0+bmFtZT09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5v
KCJDb3VsZCBub3QgYWxsb2NhdGUgbmFtZSIpOworICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAg
ICB9CisgICAgCisgICAgbm9kZS0+dHlwZT10eXBlOworICAgIG5vZGUtPm9wdGlvbmFsPXRzZl9m
YWxzZTsKKyAgICBub2RlLT5oYXNfb2Zmc2V0PXRzZl9mYWxzZTsKKyAgICBub2RlLT5vZmZzZXQ9
MDsKKyAgICBub2RlLT5pbmRleD1pbmRleDsKKyAgICBub2RlLT5jb21tZW50PU5VTEw7CisgICAg
CisgICAgcmV0dXJuIG5vZGU7CisgICAgCitmYWlsdXJlXzI6CisgICAgZnJlZShub2RlKTsKK2Zh
aWx1cmVfMToKKyAgICB0c2ZfdHlwZV9kZXN0cm95KHR5cGUpOworICAgIHJldHVybiBOVUxMOwor
fQorCit2b2lkIHRzZl9uYW1lZF90eXBlX2Rlc3Ryb3kodHNmX25hbWVkX3R5cGVfdCAqbm9kZSkg
eworICAgIHRzZl90eXBlX2Rlc3Ryb3kobm9kZS0+dHlwZSk7CisgICAgZnJlZShub2RlLT5uYW1l
KTsKKyAgICBpZiAobm9kZS0+Y29tbWVudCE9TlVMTCkgeworICAgICAgICBmcmVlKG5vZGUtPmNv
bW1lbnQpOworICAgIH0KKyAgICBmcmVlKG5vZGUpOworfQorCitjb25zdCBjaGFyICp0c2ZfbmFt
ZWRfdHlwZV9nZXRfbmFtZSh0c2ZfbmFtZWRfdHlwZV90ICpub2RlKSB7CisgICAgcmV0dXJuIG5v
ZGUtPm5hbWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9uYW1lZF90eXBlX2dldF90eXBlKHRzZl9u
YW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gbm9kZS0+dHlwZTsKK30KKwordWludDMy
X3QgdHNmX25hbWVkX3R5cGVfZ2V0X2luZGV4KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAg
ICByZXR1cm4gbm9kZS0+aW5kZXg7Cit9CisKK3RzZl9ib29sX3QgdHNmX25hbWVkX3R5cGVfZ2V0
X29wdGlvbmFsKHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gbm9kZS0+b3B0
aW9uYWw7Cit9CisKK3ZvaWQgdHNmX25hbWVkX3R5cGVfc2V0X29wdGlvbmFsKHRzZl9uYW1lZF90
eXBlX3QgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYm9vbF90
IG9wdGlvbmFsKSB7CisgICAgbm9kZS0+b3B0aW9uYWwgPSBvcHRpb25hbDsKK30KKworY29uc3Qg
Y2hhciAqdHNmX25hbWVkX3R5cGVfZ2V0X2NvbW1lbnQodHNmX25hbWVkX3R5cGVfdCAqbm9kZSkg
eworICAgIHJldHVybiBub2RlLT5jb21tZW50OworfQorCit0c2ZfYm9vbF90IHRzZl9uYW1lZF90
eXBlX2hhc19jb21tZW50KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gbm9k
ZS0+Y29tbWVudCAhPSBOVUxMOworfQorCit0c2ZfYm9vbF90IHRzZl9uYW1lZF90eXBlX3NldF9j
b21tZW50KHRzZl9uYW1lZF90eXBlX3QgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICBjaGFyICpjb21tZW50X2Nv
cHk7CisgICAgCisgICAgaWYgKHN0cmxlbihjb21tZW50KSsxPlRTRl9NQVhfQ09NTUVOVF9TSVpF
KSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfU1RSX09WRVJGTE9XLAorICAgICAgICAg
ICAgICAgICAgICAgICJDb21tZW50IHN0cmluZyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJu
IHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgY29tbWVudF9jb3B5PXN0cmR1cChjb21tZW50
KTsKKyAgICBpZiAoY29tbWVudF9jb3B5PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8o
IkNvdWxkIG5vdCBzdHJjcHkgY29tbWVudCIpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKyAgICBmcmVlKG5vZGUtPmNvbW1lbnQpOworICAgIG5vZGUtPmNvbW1lbnQ9Y29tbWVu
dF9jb3B5OworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworaW50IHRzZl9uYW1lZF90
eXBlX2dldF9oYXNoKHRzZl9uYW1lZF90eXBlX3QgKm5vZGUpIHsKKyAgICByZXR1cm4gdHNmX3N0
X3N0cmhhc2gobm9kZS0+bmFtZSl8CisgICAgICAgICAgICh0c2ZfdHlwZV9nZXRfaGFzaChub2Rl
LT50eXBlKTw8OCl8CisJICAgbm9kZS0+b3B0aW9uYWw8PDE2OworfQorCisKKwpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9uYXRpdmUuYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX25hdGl2ZS5jCShu
b25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
bmF0aXZlLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBG
SUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxP
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisjaW5j
bHVkZSA8c3RyaW5nLmg+CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV90eXBlX2hhc19zdHJ1Y3Rf
bWFwcGluZyh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgLyogcHJpbnRmKCJpbiBoYXMgc3RydWN0
IG1hcHBpbmc6IHR5cGUgPSAlcFxuIix0eXBlKTsgKi8KKyAgICBzd2l0Y2ggKHR5cGUtPmtpbmRf
Y29kZSkgeworICAgIGNhc2UgVFNGX1RLX0FSUkFZOiB7CisgICAgICAgIC8qIGFuIGFycmF5IGhh
cyBhIHN0cnVjdCBtYXBwaW5nIGlmIGl0cyBlbGVtZW50cyBoYXZlCisgICAgICAgICAqIHN0cnVj
dCBtYXBwaW5ncyAqLworICAgICAgICByZXR1cm4gdHNmX25hdGl2ZV90eXBlX2hhc19zdHJ1Y3Rf
bWFwcGluZygKKyAgICAgICAgICAgIHR5cGUtPnUuYS5lbGVtZW50X3R5cGUpOworICAgIH0KKyAg
ICBjYXNlIFRTRl9US19TVFJVQ1Q6IHsKKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgaWYg
KCF0eXBlLT51LnMuaGFzX3NpemUpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVt
X2VsZW1lbnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghdHNmX3N0cnVjdF90eXBl
X2dldF9lbGVtZW50KHR5cGUsIGkpLT5oYXNfb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdHNmX25hdGl2
ZV90eXBlX2hhc19zdHJ1Y3RfbWFwcGluZygKKyAgICAgICAgICAgICAgICAgICAgdHNmX3N0cnVj
dF90eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpLT50eXBlKSkgeworICAgICAgICAgICAgICAgIHJl
dHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgVFNGX1RLX0NIT0lDRTogeworICAgICAgICB1aW50MzJfdCBpOwor
ICAgICAgICBpZiAoIXR5cGUtPnUuaC5oYXNfbWFwcGluZykgeworICAgICAgICAgICAgcmV0dXJu
IHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX2Nob2lj
ZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7ICsraSkgeworICAgICAgICAgICAgaWYgKCF0
c2ZfbmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9tYXBwaW5nKAorICAgICAgICAgICAgICAgICAgICB0
c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQodHlwZSwgaSktPnR5cGUpKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogcHJpbWl0aXZlcywgYml0
cywgYW5kIHZvaWRzIGhhdmUgc3RydWN0IG1hcHBpbmdzICovCisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3NpemVfdCB0c2ZfbmF0aXZlX3R5
cGVfZ2V0X3NpemUodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIC8qIHByaW50ZigiaW4gZ2V0IHNp
emU6IHR5cGUgPSAlcFxuIix0eXBlKTsgKi8KKyAgICB0c2ZfYXNzZXJ0KHRzZl9uYXRpdmVfdHlw
ZV9oYXNfc3RydWN0X21hcHBpbmcodHlwZSkpOworICAgIAorICAgIHN3aXRjaCAodHlwZS0+a2lu
ZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQVJSQVk6CisgICAgICAgIGlmICh0eXBlLT51LmEu
ZWxlbWVudF90eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0JJVCkgeworICAgICAgICAgICAgcmV0
dXJuIHNpemVvZih0c2ZfbmF0aXZlX2JpdHZlY3Rvcl90KTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodHlwZS0+dS5hLmVsZW1lbnRfdHlwZS0+a2luZF9jb2RlID09IFRTRl9US19WT0lEKSB7Cisg
ICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHRzZl9uYXRpdmVfdm9pZF9hcnJheV90KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gc2l6ZW9mKHRzZl9uYXRpdmVfYXJyYXlfdCk7CisgICAgY2Fz
ZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICByZXR1cm4gdHlwZS0+dS5zLnNpemU7CisgICAgY2Fz
ZSBUU0ZfVEtfQklUOgorICAgICAgICByZXR1cm4gc2l6ZW9mKHRzZl9ib29sX3QpOworICAgIGNh
c2UgVFNGX1RLX1ZPSUQ6CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgVFNGX1RLX0NIT0lD
RToKKyAgICAgICAgcmV0dXJuIHR5cGUtPnUuaC5zaXplOworICAgIGNhc2UgVFNGX1RLX1NUUklO
RzoKKyAgICAgICAgcmV0dXJuIHNpemVvZihjaGFyKik7CisgICAgY2FzZSBUU0ZfVEtfQU5ZOgor
ICAgICAgICByZXR1cm4gc2l6ZW9mKHRzZl9idWZmZXJfdCopOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9zaXplX29mKHR5cGUtPmtpbmRfY29k
ZSk7CisgICAgfQorfQorCitzdGF0aWMgc2l6ZV90IHNhdHVyYXRlZF9wbHVzKHNpemVfdCBhLCBz
aXplX3QgYikgeworICAgIHNpemVfdCByZXN1bHQgPSBhICsgYjsKKyAgICBpZiAocmVzdWx0IDwg
YSB8fCByZXN1bHQgPCBiKSB7CisgICAgICAgIHJlc3VsdCA9IFVJTlRQVFJfTUFYOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBleHRyYV9zaXplX29mX2luZGly
ZWN0KHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Km1heCkgeworICAgIHN3aXRjaCAodHlwZS0+a2luZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtf
QVJSQVk6CisgICAgY2FzZSBUU0ZfVEtfQU5ZOiB7CisgICAgICAgICptYXggPSBVSU5UUFRSX01B
WDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIFRTRl9US19TVFJV
Q1Q6IHsKKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRzZl9z
dHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAgICAgIGV4
dHJhX3NpemVfb2ZfaW5kaXJlY3QodHNmX3N0cnVjdF90eXBlX2dldF9lbGVtZW50KHR5cGUsIGkp
LT50eXBlLCBtaW4sIG1heCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
ICAgICAKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6IHsKKyAgICAgICAgdWludDMyX3QgaTsKKyAg
ICAgICAgc2l6ZV90IG15X21pbiA9IDAsIG15X21heCA9IDA7CisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCB0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAg
ICAgICAgICB0c2ZfdHlwZV90ICplbGVfdHlwZTsKKyAgICAgICAgICAgIHNpemVfdCB0aGlzX21p
biwgdGhpc19tYXg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGVsZV90eXBlID0gdHNmX2No
b2ljZV90eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpLT50eXBlOworICAgICAgICAgICAgdGhpc19t
aW4gPSAwOworICAgICAgICAgICAgdGhpc19tYXggPSAwOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAodHNmX25hdGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9wbGFjZSh0eXBlKSkgeworICAg
ICAgICAgICAgICAgIGV4dHJhX3NpemVfb2ZfaW5kaXJlY3QoZWxlX3R5cGUsICZ0aGlzX21pbiwg
JnRoaXNfbWF4KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHNmX25h
dGl2ZV90eXBlX2dldF90b3RhbF9zaXplX2JvdW5kcyhlbGVfdHlwZSwgJnRoaXNfbWluLCAmdGhp
c19tYXgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBteV9taW4g
PSB0c2ZfbWF4KG15X21pbiwgdGhpc19taW4pOworICAgICAgICAgICAgbXlfbWF4ID0gdHNmX21h
eChteV9tYXgsIHRoaXNfbWF4KTsKKyAgICAgICAgfQorICAgICAgICAqbWluID0gc2F0dXJhdGVk
X3BsdXMoKm1pbiwgbXlfbWluKTsKKyAgICAgICAgKm1heCA9IHNhdHVyYXRlZF9wbHVzKCptYXgs
IG15X21heCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIHRzZl9uYXRpdmVfdHlwZV9nZXRfdG90
YWxfc2l6ZV9ib3VuZHModHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm1heCkgeworICAgIHNpemVfdCBiYXNlX3NpemUs
IG15X21pbiwgbXlfbWF4OworICAgIAorICAgIGJhc2Vfc2l6ZSA9IHRzZl9uYXRpdmVfdHlwZV9n
ZXRfc2l6ZSh0eXBlKTsKKyAgICAKKyAgICBteV9taW4gPSAwOworICAgIG15X21heCA9IDA7Cisg
ICAgZXh0cmFfc2l6ZV9vZl9pbmRpcmVjdCh0eXBlLCAmbXlfbWluLCAmbXlfbWF4KTsKKyAgICAK
KyAgICAqbWluID0gc2F0dXJhdGVkX3BsdXMoYmFzZV9zaXplLCBteV9taW4pOworICAgICptYXgg
PSBzYXR1cmF0ZWRfcGx1cyhiYXNlX3NpemUsIG15X21heCk7Cit9CisKK3N0YXRpYyB0c2ZfYm9v
bF90IG5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UodHNmX3R5cGVfdCAqZGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqc3Jj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVzdF9zaXplKSB7CisgICAgdWludDMyX3QgaTsKKyAgICBzaXplX3Qgc3ViX2Rlc3Rfc2l6ZTsK
KyAgICBpZiAoZGVzdC0+a2luZF9jb2RlIT1zcmMtPmtpbmRfY29kZSkgeworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICBpZiAoZGVzdF9zaXplPT0wKSB7CisgICAgICAgIGRl
c3Rfc2l6ZT10c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoZGVzdCk7CisgICAgfQorICAgIGlmICh0
c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUoc3JjKSA+IGRlc3Rfc2l6ZSkgeworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICBzd2l0Y2ggKGRlc3QtPmtpbmRfY29kZSkgeworICAg
ICAgICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgY2FzZSBUU0ZfVEtfU1RSSU5HOgorICAg
ICAgICBjYXNlIFRTRl9US19BTlk6CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
ICAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgICAgICBpZiAodHNmX2Nob2ljZV90eXBl
X2dldF9udW1fZWxlbWVudHMoc3JjKSA+CisgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBl
X2dldF9udW1fZWxlbWVudHMoZGVzdCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCh0c2ZfY2hvaWNlX3R5cGVfaGFz
X25vbl92b2lkKHNyYykgJiYKKyAgICAgICAgICAgICAgICAgc3JjLT51LmguZGF0YV9vZmZzZXQg
IT0gZGVzdC0+dS5oLmRhdGFfb2Zmc2V0KSB8fAorICAgICAgICAgICAgICAgIHNyYy0+dS5oLnZh
bHVlX29mZnNldCAhPSBkZXN0LT51LmgudmFsdWVfb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZXN0LT51
LmgudmFsdWVfb2Zmc2V0ID4gZGVzdC0+dS5oLmRhdGFfb2Zmc2V0KSB7CisgICAgICAgICAgICAg
ICAgc3ViX2Rlc3Rfc2l6ZT1kZXN0LT51LmgudmFsdWVfb2Zmc2V0LWRlc3QtPnUuaC5kYXRhX29m
ZnNldDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3ViX2Rlc3Rfc2l6
ZT1kZXN0LT51Lmguc2l6ZS1kZXN0LT51LmguZGF0YV9vZmZzZXQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBmb3IgKGk9MDtpPHRzZl9jaG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHNy
Yyk7KytpKSB7CisgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqc249dHNmX2Nob2lj
ZV90eXBlX2dldF9lbGVtZW50KHNyYyxpKTsKKyAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlw
ZV90ICpkbj10c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQoZGVzdCxpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoc3RyY21wKHNuLT5uYW1lLGRuLT5uYW1lKSkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoIW5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UoZG4tPnR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuLT50eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJfZGVzdF9zaXplKSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAg
IH0KKwkJaWYgKGRuLT50eXBlLT5raW5kX2NvZGUhPVRTRl9US19WT0lEICYmCisJCSAgICAoIXRz
Zl9uYXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxhY2UoZGVzdCkgfHwKKwkJICAgICAhdHNmX25h
dGl2ZV9jaG9pY2VfdHlwZV9pc19pbl9wbGFjZShzcmMpKSkgeworCQkgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKwkJfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVFNGX1RLX1NUUlVDVDoKKyAgICAgICAgICAgIGlmIChkZXN0LT51LnMuY29uc3RydWN0b3Ig
IT0gTlVMTCB8fAorICAgICAgICAgICAgICAgIGRlc3QtPnUucy5wcmVfZGVzdHJ1Y3RvciAhPSBO
VUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChpPTA7aTx0c2Zfc3RydWN0X3R5cGVfZ2V0
X251bV9lbGVtZW50cyhkZXN0KTsrK2kpIHsKKyAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlw
ZV90ICpkbj10c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQoZGVzdCxpKTsKKyAgICAgICAgICAg
ICAgICB0c2ZfbmFtZWRfdHlwZV90ICpzbjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBpZiAodHNmX3R5cGVfZ2V0X3N0YXRpY19zaXplKGRuLT50eXBlKT09MCkgeworICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgc249dHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShzcmMsZG4t
Pm5hbWUpOworICAgICAgICAgICAgICAgIGlmIChzbj09TlVMTCkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UoZG4t
PnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNuLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZG4tPm9m
ZnNldCAhPSBzbi0+b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9uYXRpdmVfdHlwZV9jYW5fYmxp
dCh0c2ZfdHlwZV90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHNmX3R5cGVfdCAqc3JjKSB7CisgICAgaWYgKCF0c2ZfbmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9t
YXBwaW5nKGRlc3QpIHx8CisgICAgICAgICF0c2ZfbmF0aXZlX3R5cGVfaGFzX3N0cnVjdF9tYXBw
aW5nKHNyYykpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIG5hdGl2ZV90eXBlX2Nhbl9ibGl0X3JlY3Vyc2UoZGVzdCxzcmMsMCk7Cit9CisKK3Np
emVfdCB0c2ZfbmF0aXZlX25hbWVkX3R5cGVfZ2V0X29mZnNldCh0c2ZfbmFtZWRfdHlwZV90ICpu
b2RlKSB7CisgICAgcmV0dXJuIG5vZGUtPm9mZnNldDsKK30KKwordHNmX2Jvb2xfdCB0c2ZfbmF0
aXZlX3N0cnVjdF90eXBlX21hcCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkgeworICAgIHRzZl90eXBlX3QgKnJl
dDsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgIC8qIHVpbnQzMl90IGk7ICovCisgICAg
CisgICAgcmV0ID0gdHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAgICBpZiAocmV0ID09IE5V
TEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbiA9IHRz
Zl9zdHJ1Y3RfdHlwZV9maW5kX25vZGUocmV0LG5hbWUpOworICAgIAorICAgIGlmIChuID09IE5V
TEwpIHsKKyAgICAgICAgdHNmX3R5cGVfb3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICBy
ZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKworICAgIC8qIEFnZXMgYWdvLCB3ZSB1c2VkIHRvIHZl
cmlmeSB0aGUgc3RydWN0IG1hcHBpbmcgaGVyZSBieSBleGFtaW5pbmcgYWxsIG9mZnNldHMKKyAg
ICAgKiBhbmQgdGhlIHNpemUuIFRoaXMgd2FzIHNsb3cgYW5kIGl0IHdhcyBhbHNvIG5vdCBwYXJ0
aWN1bGFybHkgZWZmZWN0aXZlIGF0CisgICAgICogY2F0Y2hpbmcgYnVncy4gU28sIHdlIGRvbid0
IGRvIHRoYXQgYW55bW9yZS4gKi8KKyAgICAKKyAgICBuLT5oYXNfb2Zmc2V0ID0gdHNmX3RydWU7
CisgICAgbi0+b2Zmc2V0ID0gb2Zmc2V0OworICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQo
dHlwZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX25h
dGl2ZV9zdHJ1Y3RfdHlwZV9zZXRfY29uc3RydWN0b3IodHNmX3R5cGVfdCAqKnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpjb25z
KSh2b2lkKikpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ9dHNmX3R5cGVfb3duX2JlZ2luKCp0eXBl
KTsKKyAgICBpZiAocmV0PT1OVUxMKSB7CisJcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAg
ICByZXQtPnUucy5jb25zdHJ1Y3RvciA9IGNvbnM7CisKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0
KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9u
YXRpdmVfc3RydWN0X3R5cGVfc2V0X3ByZV9kZXN0cnVjdG9yKHRzZl90eXBlX3QgKip0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICgqcHJlX2Rlc3QpKHZvaWQqKSkgeworICAgIHRzZl90eXBlX3QgKnJldD10c2ZfdHlwZV9vd25f
YmVnaW4oKnR5cGUpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKwlyZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKworICAgIHJldC0+dS5zLnByZV9kZXN0cnVjdG9yID0gcHJlX2Rlc3Q7CisKKyAgICB0
c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQor
Cit0c2ZfYm9vbF90IHRzZl9uYXRpdmVfc3RydWN0X3R5cGVfc2V0X2Rlc3RydWN0b3IodHNmX3R5
cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAoKmRlc3QpKHZvaWQqKSkgeworICAgIHRzZl90eXBlX3QgKnJldD10c2ZfdHlw
ZV9vd25fYmVnaW4oKnR5cGUpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKwlyZXR1cm4gdHNmX2Zh
bHNlOworICAgIH0KKworICAgIHJldC0+dS5zLmRlc3RydWN0b3IgPSBkZXN0OworCisgICAgdHNm
X3R5cGVfb3duX2NvbW1pdCh0eXBlLCByZXQpOworICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwor
dm9pZCAoKnRzZl9uYXRpdmVfc3RydWN0X3R5cGVfZ2V0X2NvbnN0cnVjdG9yKHRzZl90eXBlX3Qg
KnR5cGUpKSh2b2lkKikgeworICAgIHJldHVybiB0eXBlLT51LnMuY29uc3RydWN0b3I7Cit9CisK
K3ZvaWQgKCp0c2ZfbmF0aXZlX3N0cnVjdF90eXBlX2dldF9wcmVfZGVzdHJ1Y3Rvcih0c2ZfdHlw
ZV90ICp0eXBlKSkodm9pZCopIHsKKyAgICByZXR1cm4gdHlwZS0+dS5zLnByZV9kZXN0cnVjdG9y
OworfQorCit2b2lkICgqdHNmX25hdGl2ZV9zdHJ1Y3RfdHlwZV9nZXRfZGVzdHJ1Y3Rvcih0c2Zf
dHlwZV90ICp0eXBlKSkodm9pZCopIHsKKyAgICByZXR1cm4gdHlwZS0+dS5zLmRlc3RydWN0b3I7
Cit9CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV9zdHJ1Y3RfdHlwZV9zZXRfc2l6ZSh0c2ZfdHlw
ZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSkgeworICAgIHRzZl90eXBlX3QgKnJldD10c2ZfdHlwZV9vd25fYmVnaW4oKnR5
cGUpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICByZXQtPnUucy5oYXNfc2l6ZT10c2ZfdHJ1ZTsKKyAgICByZXQtPnUu
cy5zaXplPXNpemU7CisKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAg
cmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9uYXRpdmVfY2hvaWNlX3R5cGVf
bWFwKHRzZl90eXBlX3QgKip0eXBlLAorCQkJCSAgICAgIHRzZl9ib29sX3QgaW5fcGxhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZV9vZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX29mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpIHsK
KyAgICB0c2ZfdHlwZV90ICpyZXQ9dHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAgICBpZiAo
cmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisg
ICAgcmV0LT51LmguaGFzX21hcHBpbmcgPSB0c2ZfdHJ1ZTsKKyAgICByZXQtPnUuaC5pbl9wbGFj
ZSA9IGluX3BsYWNlOworICAgIHJldC0+dS5oLnZhbHVlX29mZnNldCA9IHZhbHVlX29mZnNldDsK
KyAgICByZXQtPnUuaC5kYXRhX29mZnNldCA9IGRhdGFfb2Zmc2V0OworICAgIHJldC0+dS5oLnNp
emUgPSBzaXplOworICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAg
ICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV90eXBlX3Byb2R1
Y2Vfc29tZV9tYXBwaW5nKHRzZl90eXBlX3QgKip0eXBlLAorCQkJCQkJdHNmX2Jvb2xfdCBkb19h
bGlnbikgeworICAgIHRzZl90eXBlX3QgKnJldCA9IHRzZl90eXBlX293bl9iZWdpbigqdHlwZSk7
CisgICAgdWludDMyX3QgaTsKKyAgICBzaXplX3QgdG90YWxfc2l6ZTsKKyAgICAKKyAgICBpZiAo
cmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisg
ICAgc3dpdGNoICgoKnR5cGUpLT5raW5kX2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19BUlJBWToK
KyAgICAgICAgaWYgKCF0c2ZfbmF0aXZlX3R5cGVfcHJvZHVjZV9zb21lX21hcHBpbmcoJnJldC0+
dS5hLmVsZW1lbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9fYWxpZ24pKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9vd25fYWJvcnQo
KnR5cGUsIHJldCk7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAgICAgICAgdG90YWxfc2l6
ZSA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgZm9yIChpID0gMDsKKyAgICAgICAgICAgICBp
IDwgdHNmX3R5cGVfdGFibGVfZ2V0X251bV9lbGVtZW50cyhyZXQtPnUucy50dCk7CisgICAgICAg
ICAgICAgKytpKSB7CisgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuID0KKyAgICAgICAg
ICAgICAgICB0c2ZfdHlwZV90YWJsZV9maW5kX2J5X2luZGV4KHJldC0+dS5zLnR0LCBpKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdHNmX25hdGl2ZV90eXBlX3Byb2R1Y2Vf
c29tZV9tYXBwaW5nKCZuLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9fYWxpZ24pKSB7CisgICAgICAgICAgICAgICAgdHNmX3R5
cGVfb3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZG9f
YWxpZ24pIHsKKyAgICAgICAgICAgICAgICBuLT5vZmZzZXQgPSBUU0ZfQUxJR04odG90YWxfc2l6
ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG4tPm9mZnNldCA9IHRv
dGFsX3NpemU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuLT5oYXNfb2Zmc2V0ID0gdHNm
X3RydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0b3RhbF9zaXplID0gbi0+b2Zm
c2V0ICsgdHNmX25hdGl2ZV90eXBlX2dldF9zaXplKG4tPnR5cGUpOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgcmV0LT51LnMuc2l6ZSA9IHRvdGFsX3NpemU7CisgICAgICAgIHJl
dC0+dS5zLmhhc19zaXplID0gdHNmX3RydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNG
X1RLX0NIT0lDRToKKyAgICAgICAgcmV0LT51LmguaW5fcGxhY2UgPSB0c2ZfdHJ1ZTsKKwkgICAg
CisgICAgICAgIHRvdGFsX3NpemUgPSAwOworICAgICAgICAgICAgCisgICAgICAgIGZvciAoaSA9
IDA7CisgICAgICAgICAgICAgaSA8IHRzZl90eXBlX3RhYmxlX2dldF9udW1fZWxlbWVudHMocmV0
LT51LmgudHQpOworICAgICAgICAgICAgICsraSkgeworICAgICAgICAgICAgdHNmX25hbWVkX3R5
cGVfdCAqbiA9CisgICAgICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRleChy
ZXQtPnUuaC50dCxpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemVfdCBzaXpl
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c2ZfbmF0aXZlX3R5cGVfcHJv
ZHVjZV9zb21lX21hcHBpbmcoJm4tPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb19hbGlnbikpIHsKKyAgICAgICAgICAgICAgICB0
c2ZfdHlwZV9vd25fYWJvcnQoKnR5cGUsIHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHNp
emUgPSB0c2ZfbmF0aXZlX3R5cGVfZ2V0X3NpemUobi0+dHlwZSk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAoc2l6ZSA+IHRvdGFsX3NpemUpIHsKKyAgICAgICAgICAgICAgICB0
b3RhbF9zaXplID0gc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
dC0+dS5oLnZhbHVlX29mZnNldCA9IDA7CisKKyAgICAgICAgaWYgKGRvX2FsaWduKSB7CisgICAg
ICAgICAgICByZXQtPnUuaC5kYXRhX29mZnNldCA9IFRTRl9BTElHTihzaXplb2YodHNmX2Nob2lj
ZV90KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXQtPnUuaC5kYXRhX29mZnNl
dCA9IHNpemVvZih0c2ZfY2hvaWNlX3QpOworICAgICAgICB9CisKKyAgICAgICAgcmV0LT51Lmgu
c2l6ZSA9IHJldC0+dS5oLmRhdGFfb2Zmc2V0ICsgdG90YWxfc2l6ZTsKKyAgICAgICAgcmV0LT51
LmguaGFzX21hcHBpbmcgPSB0c2ZfdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlw
ZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9uYXRp
dmVfc3RydWN0X3R5cGVfY3JlYXRlKHNpemVfdCBzaXplKSB7CisgICAgdHNmX3R5cGVfdCAqcmVz
dWx0ID0gdHNmX3R5cGVfY3JlYXRlKFRTRl9US19TVFJVQ1QpOworICAgIGlmIChyZXN1bHQgPT0g
TlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKCF0c2Zf
bmF0aXZlX3N0cnVjdF90eXBlX3NldF9zaXplKCZyZXN1bHQsIHNpemUpKSB7CisgICAgICAgIHRz
Zl90eXBlX2Rlc3Ryb3kocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl9ib29sX3QgdHNmX25hdGl2ZV9zdHJ1Y3Rf
dHlwZV9hcHBlbmQodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKmVsZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0KSB7CisgICAgaWYgKCF0c2Zf
c3RydWN0X3R5cGVfYXBwZW5kKHR5cGUsIG5hbWUsIGVsZV90eXBlKSkgeworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoIXRzZl9uYXRpdmVfc3RydWN0X3R5
cGVfbWFwKHR5cGUsIG5hbWUsIG9mZnNldCkpIHsKKyAgICAgICAgdHNmX3N0cnVjdF90eXBlX3Jl
bW92ZSh0eXBlLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9uYXRpdmVfY2hvaWNlX3R5
cGVfY3JlYXRlKHRzZl9ib29sX3QgaW5fcGxhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgdmFsdWVfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfb2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpIHsKKyAgICB0c2ZfdHlw
ZV90ICpyZXN1bHQgPSB0c2ZfdHlwZV9jcmVhdGUoVFNGX1RLX0NIT0lDRSk7CisgICAgaWYgKHJl
c3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIXRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfbWFwKCZyZXN1bHQsIGluX3BsYWNlLCB2YWx1ZV9v
ZmZzZXQsIGRhdGFfb2Zmc2V0LCBzaXplKSkgeworICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit0c2ZfYm9vbF90IHRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfaXNfaW5fcGxhY2Uo
dHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHJldHVybiB0eXBlLT51LmguaW5fcGxhY2U7Cit9CisK
K3NpemVfdCB0c2ZfbmF0aXZlX2Nob2ljZV90eXBlX2dldF9kYXRhX29mZnNldCh0c2ZfdHlwZV90
ICp0eXBlKSB7CisgICAgcmV0dXJuIHR5cGUtPnUuaC5kYXRhX29mZnNldDsKK30KKworc2l6ZV90
IHRzZl9uYXRpdmVfY2hvaWNlX3R5cGVfZ2V0X3ZhbHVlX29mZnNldCh0c2ZfdHlwZV90ICp0eXBl
KSB7CisgICAgcmV0dXJuIHR5cGUtPnUuaC52YWx1ZV9vZmZzZXQ7Cit9CisKK3NpemVfdCB0c2Zf
bmF0aXZlX2Nob2ljZV90eXBlX2dldF9zaXplKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1
cm4gdHlwZS0+dS5oLnNpemU7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
d2FzbS90c2YvdHNmX3BhcnNlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0
U3RyZWFtMi93YXNtL3RzZi90c2ZfcGFyc2VyLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9wYXJzZXIuYwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAxNCwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5o
IgorI2luY2x1ZGUgInRzZl9yZWdpb24uaCIKKyNpbmNsdWRlICJncGMuaCIKKyNpbmNsdWRlIDx1
bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWZk
ZWYgSEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKK3N0YXRpYyBp
bnQgdGFibGVfZGVzdHJveV9wYWlyKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncGNfcHJvZ3JhbV90ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgICAg
Z3BjX3Byb2dyYW1fZGVzdHJveSh2YWx1ZSk7CisgICAgcmV0dXJuIFRTRl9TVF9DT05USU5VRTsK
K30KKwordHNmX3BhcnNlcl90ICp0c2ZfcGFyc2VyX2NyZWF0ZSh0c2ZfdHlwZV90ICp0eXBlKSB7
CisgICAgdHNmX3BhcnNlcl90ICpyZXN1bHQ7CisgICAgCisgICAgaWYgKCF0c2ZfbmF0aXZlX3R5
cGVfaGFzX3N0cnVjdF9tYXBwaW5nKHR5cGUpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNG
X0VfTk9fU1RSVUNUX01BUCwgTlVMTCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg
ICAKKyAgICByZXN1bHQgPSBtYWxsb2Moc2l6ZW9mKHRzZl9wYXJzZXJfdCkpOworICAgIGlmIChy
ZXN1bHQgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9j
IHRzZl9wYXJzZXJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAg
cmVzdWx0LT5wYXJzZXJzID0gdHNmX3N0X2luaXRfcHRydGFibGUoKTsKKyAgICBpZiAocmVzdWx0
LT5wYXJzZXJzID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShyZXN1bHQpOworICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2luaXRfdHlwZXRhYmxlKCkiKTsKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+ZXhwZWN0ZWRfdHlwZSA9IHRz
Zl90eXBlX2R1cCh0eXBlKTsKKyAgICByZXN1bHQtPmV4cGVjdGVkX3R5cGVfc2l6ZSA9IHRzZl9u
YXRpdmVfdHlwZV9nZXRfc2l6ZShyZXN1bHQtPmV4cGVjdGVkX3R5cGUpOworICAgIAorICAgIHJl
c3VsdC0+Y2FjaGVkX3Byb2dyYW0gPSBOVUxMOworICAgIHJlc3VsdC0+Y2FjaGVkX3R5cGUgPSBO
VUxMOworCisgICAgdHNmX211dGV4X2luaXQoJnJlc3VsdC0+bG9jayk7CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZCB0c2ZfcGFyc2VyX2Rlc3Ryb3kodHNmX3BhcnNlcl90ICpw
YXJzZXIpIHsKKyAgICB0c2ZfbXV0ZXhfZGVzdHJveSgmcGFyc2VyLT5sb2NrKTsKKyAgICB0c2Zf
c3RfZm9yZWFjaChwYXJzZXItPnBhcnNlcnMsCisgICAgICAgICAgICAgICAgICAgKHRzZl9zdF9m
dW5jX3QpdGFibGVfZGVzdHJveV9wYWlyLAorICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAg
IHRzZl9zdF9mcmVlX3RhYmxlKHBhcnNlci0+cGFyc2Vycyk7CisgICAgdHNmX3R5cGVfZGVzdHJv
eShwYXJzZXItPmV4cGVjdGVkX3R5cGUpOworICAgIGZyZWUocGFyc2VyKTsKK30KKwordWludDMy
X3QgdHNmX3BhcnNlcl9udW1fY29kZXModHNmX3BhcnNlcl90ICpwYXJzZXIpIHsKKyAgICByZXR1
cm4gcGFyc2VyLT5wYXJzZXJzLT5udW1fZW50cmllczsKK30KKworc3RhdGljIGlubGluZSBncGNf
cHJvZ3JhbV90ICpjYWNoZWRfcHJvZ3JhbV9sb29rdXAodHNmX3BhcnNlcl90ICpwYXJzZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV90ICp0eXBlKSB7CisgICAgaWYgKHBhcnNlci0+Y2FjaGVkX3R5cGUgPT0gdHlwZSAmJiBwYXJz
ZXItPmNhY2hlZF9wcm9ncmFtKSB7CisgICAgICAgIHJldHVybiBwYXJzZXItPmNhY2hlZF9wcm9n
cmFtOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3Rh
dGljIGdwY19wcm9ncmFtX3QgKm5vcm1hbF9wcm9ncmFtX2xvb2t1cCh0c2ZfcGFyc2VyX3QgKnBh
cnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfdCAqdHlwZSkgeworICAgIGdwY19wcm9ncmFtX3QgKnByb2dyYW07CisgICAgCisgICAgaWYg
KCF0c2Zfc3RfbG9va3VwX3B0cnRhYmxlKHBhcnNlci0+cGFyc2VycywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHZvaWQqKSZwcm9ncmFtKSkgeworICAgICAgICAvKiBub3QgZm91bmQsIG11c3QgY3JlYXRlISAq
LworICAgICAgICAKKyAgICAgICAgZ3BjX3Byb3RvX3QgKnByb3RvID0KKyAgICAgICAgICAgIHRz
Zl9ncGNfY29kZV9nZW5fZ2VuZXJhdGVfcGFyc2VyKHBhcnNlci0+ZXhwZWN0ZWRfdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHByb3RvID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBncGNfY29kZV9nZW5fZGVidWcoInBhcnNl
ciIsIHByb3RvKTsKKyAgICAgICAgCisgICAgICAgIHByb2dyYW0gPSBncGNfcHJvZ3JhbV9mcm9t
X3Byb3RvKHByb3RvKTsKKyAgICAgICAgCisgICAgICAgIGdwY19wcm90b19kZXN0cm95KHByb3Rv
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChwcm9ncmFtID09IE5VTEwpIHsKKyAgICAgICAgICAg
IHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0eXBlID0gdHNmX3R5
cGVfZHVwKHR5cGUpOworICAgICAgICAKKyAgICAgICAgaWYgKHRzZl9zdF9pbnNlcnQocGFyc2Vy
LT5wYXJzZXJzLCAoY2hhciopdHlwZSwgcHJvZ3JhbSkgPCAwKSB7CisgICAgICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2luc2VydCgpIGluICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRzZl9wYXJzZXJfcGFyc2UoKSIpOworICAgICAgICAgICAgdHNmX3R5cGVf
ZGVzdHJveSh0eXBlKTsKKyAgICAgICAgICAgIGdwY19wcm9ncmFtX2Rlc3Ryb3kocHJvZ3JhbSk7
CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIHRzZl9hc3NlcnQoISFwYXJzZXItPmNhY2hlZF90eXBlID09ICEhcGFyc2VyLT5jYWNoZWRf
cHJvZ3JhbSk7CisgICAgICAgIGlmICghcGFyc2VyLT5jYWNoZWRfdHlwZSkgeworICAgICAgICAg
ICAgcGFyc2VyLT5jYWNoZWRfdHlwZSA9IHR5cGU7CisgICAgICAgICAgICBwYXJzZXItPmNhY2hl
ZF9wcm9ncmFtID0gcHJvZ3JhbTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4g
cHJvZ3JhbTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfcGFyc2VyX3BhcnNlX2ludG8odHNmX3BhcnNl
cl90ICpwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVy
X3QgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlc3Vs
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlZ2lvbikgeworICAg
IHRzZl90eXBlX3QgKnR5cGU7CisgICAgZ3BjX3Byb2dyYW1fdCAqcHJvZ3JhbTsKKyAgICBncGNf
Y2VsbF90IGFyZ3NbMl07CisKKyAgICB0eXBlID0gYnVmZmVyLT50eXBlOworCisgICAgdHlwZSA9
IHRzZl90eXBlX21lbW8odHlwZSk7CisgICAgaWYgKCF0eXBlKSB7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorI2lmZGVmIFRTRl9IQVZFX0ZFTkNFUworICAgIHByb2dy
YW0gPSBjYWNoZWRfcHJvZ3JhbV9sb29rdXAocGFyc2VyLCB0eXBlKTsKKyAgICBpZiAocHJvZ3Jh
bSAhPSBOVUxMKSB7CisgICAgICAgIHRzZl9iYXNpY19mZW5jZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRzZl9tdXRleF9sb2NrKCZwYXJzZXItPmxvY2spOworICAgICAgICBwcm9ncmFtID0g
bm9ybWFsX3Byb2dyYW1fbG9va3VwKHBhcnNlciwgdHlwZSk7CisgICAgICAgIHRzZl9tdXRleF91
bmxvY2soJnBhcnNlci0+bG9jayk7CisgICAgICAgIGlmIChwcm9ncmFtID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAg
IHRzZl9tdXRleF9sb2NrKCZwYXJzZXItPmxvY2spOworICAgIHByb2dyYW0gPSBjYWNoZWRfcHJv
Z3JhbV9sb29rdXAocGFyc2VyLCB0eXBlKTsKKyAgICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7Cisg
ICAgICAgIHByb2dyYW0gPSBub3JtYWxfcHJvZ3JhbV9sb29rdXAocGFyc2VyLCB0eXBlKTsKKyAg
ICB9CisgICAgdHNmX211dGV4X3VubG9jaygmcGFyc2VyLT5sb2NrKTsKKyAgICBpZiAocHJvZ3Jh
bSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorI2VuZGlmCisg
ICAgCisgICAgYXJnc1swXSA9IChncGNfY2VsbF90KXJlc3VsdDsKKyAgICBhcmdzWzFdID0gKGdw
Y19jZWxsX3QpYnVmZmVyOworICAgIAorICAgIHJldHVybiAodHNmX2Jvb2xfdClncGNfcHJvZ3Jh
bV9ydW4ocHJvZ3JhbSwgcmVnaW9uLCBhcmdzKTsKK30KKwordm9pZCAqdHNmX3BhcnNlcl9wYXJz
ZSh0c2ZfcGFyc2VyX3QgKnBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgdHNmX2J1ZmZl
cl90ICpidWZmZXIpIHsKKyAgICB2b2lkICpyZXN1bHQgPSB0c2ZfcmVnaW9uX2NyZWF0ZShwYXJz
ZXItPmV4cGVjdGVkX3R5cGVfc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IHRzZl9yZWdpb25fY3JlYXRlKCkiKTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghdHNmX3BhcnNlcl9wYXJzZV9pbnRvKHBhcnNlciwg
YnVmZmVyLCByZXN1bHQsIHJlc3VsdCkpIHsKKyAgICAgICAgdHNmX3JlZ2lvbl9mcmVlKHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkICp0c2ZfcGFyc2VyX3BhcnNlX2luKHRzZl9wYXJzZXJfdCAqcGFyc2VyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICB0c2ZfYnVmZmVyX3QgKmJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgdm9pZCAqcmVzdWx0OworICAgIGlmIChy
ZWdpb24pIHsKKyAgICAgICAgcmVzdWx0ID0gdHNmX3JlZ2lvbl9hbGxvYyhyZWdpb24sIHBhcnNl
ci0+ZXhwZWN0ZWRfdHlwZV9zaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZWdpb24gPSBy
ZXN1bHQgPSB0c2ZfcmVnaW9uX2NyZWF0ZShwYXJzZXItPmV4cGVjdGVkX3R5cGVfc2l6ZSk7Cisg
ICAgfQorICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCB0c2ZfcmVnaW9uX2FsbG9jKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IGlmICghdHNmX3BhcnNlcl9wYXJzZV9pbnRvKHBhcnNlciwgYnVmZmVyLCByZXN1bHQsIHJlZ2lv
bikpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSByZWdpb24pIHsKKyAgICAgICAgICAgIHRzZl9y
ZWdpb25fZnJlZShyZWdpb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3ByaW1pdGl2ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcHJpbWl0aXZlLmMJKG5vbmV4aXN0ZW50KQor
KysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9wcmltaXRpdmUuYwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFs
LmgiCisKKy8qIEZJWE1FOiBwcmltaXRpdmUgdHlwZSBzaG91bGQgcmVhbGx5IGp1c3QgYWxsIGJl
IGluc3RhbmNlcyBvZiBlYWNoIG90aGVyLiAqLwordHNmX2Jvb2xfdCB0c2ZfcHJpbWl0aXZlX3R5
cGVfa2luZF9pbnN0YW5jZW9mKHRzZl90eXBlX2tpbmRfdCBvbmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfa2luZF90IHR3bykgeworICAg
IHJldHVybiAodHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfbG93ZXJfYm91bmQob25lKQorICAgICAg
ICAgICAgPj0gdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfbG93ZXJfYm91bmQodHdvKSkKKwkmJiAo
dHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQob25lKQorICAgICAgICAgICAgPD0g
dHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQodHdvKSkKKwkmJiAodHNmX3ByaW1p
dGl2ZV90eXBlX2tpbmRfcHJlY2lzaW9uKG9uZSkKKyAgICAgICAgICAgIDw9IHRzZl9wcmltaXRp
dmVfdHlwZV9raW5kX3ByZWNpc2lvbih0d28pKTsKK30KKworI2RlZmluZSB0ZXN0X3R5cGVfa2lu
ZChraW5kX2NvZGUpIFwKKyAgICBpZiAobG93ZXJfYm91bmQgPj0gdHNmX3ByaW1pdGl2ZV90eXBl
X2tpbmRfbG93ZXJfYm91bmQoa2luZF9jb2RlKSAmJiBcCisJdXBwZXJfYm91bmQgPD0gdHNmX3By
aW1pdGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQoa2luZF9jb2RlKSAmJiBcCisJcHJlY2lzaW9u
IDw9IHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX3ByZWNpc2lvbihraW5kX2NvZGUpKSB7IFwKKwly
ZXR1cm4ga2luZF9jb2RlOyBcCisgICAgfQorCit0c2ZfdHlwZV9raW5kX3QgdHNmX3ByaW1pdGl2
ZV90eXBlX2tpbmRfZm9yX3NwZWMoaW50MzJfdCBsb3dlcl9ib3VuZCwKKwkJCQkJCSBpbnQzMl90
IHVwcGVyX2JvdW5kLAorCQkJCQkJIGludDMyX3QgcHJlY2lzaW9uKSB7CisgICAgdGVzdF90eXBl
X2tpbmQoVFNGX1RLX0lOVDgpOworICAgIHRlc3RfdHlwZV9raW5kKFRTRl9US19VSU5UOCk7Cisg
ICAgdGVzdF90eXBlX2tpbmQoVFNGX1RLX0lOVDE2KTsKKyAgICB0ZXN0X3R5cGVfa2luZChUU0Zf
VEtfVUlOVDE2KTsKKyAgICB0ZXN0X3R5cGVfa2luZChUU0ZfVEtfSU5UMzIpOworICAgIHRlc3Rf
dHlwZV9raW5kKFRTRl9US19VSU5UMzIpOworICAgIHRlc3RfdHlwZV9raW5kKFRTRl9US19JTlQ2
NCk7CisgICAgdGVzdF90eXBlX2tpbmQoVFNGX1RLX1VJTlQ2NCk7CisgICAgdGVzdF90eXBlX2tp
bmQoVFNGX1RLX0ZMT0FUKTsKKyAgICByZXR1cm4gVFNGX1RLX0RPVUJMRTsKK30KKwordHNmX3R5
cGVfa2luZF90IHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX21peCh0c2ZfdHlwZV9raW5kX3Qgb25l
LAorCQkJCQkgICAgdHNmX3R5cGVfa2luZF90IHR3bykgeworICAgIHJldHVybiB0c2ZfcHJpbWl0
aXZlX3R5cGVfa2luZF9mb3Jfc3BlYworCSh0c2ZfbWluKHRzZl9wcmltaXRpdmVfdHlwZV9raW5k
X2xvd2VyX2JvdW5kKG9uZSksCisJCSB0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF9sb3dlcl9ib3Vu
ZCh0d28pKSwKKwkgdHNmX21heCh0c2ZfcHJpbWl0aXZlX3R5cGVfa2luZF91cHBlcl9ib3VuZChv
bmUpLAorCQkgdHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfdXBwZXJfYm91bmQodHdvKSksCisJIHRz
Zl9tYXgodHNmX3ByaW1pdGl2ZV90eXBlX2tpbmRfcHJlY2lzaW9uKG9uZSksCisJCSB0c2ZfcHJp
bWl0aXZlX3R5cGVfa2luZF9wcmVjaXNpb24odHdvKSkpOworfQorCisKKworCisKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmFfdHlwZV9tYW4uYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JhX3R5
cGVfbWFuLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dh
c20vdHNmL3RzZl9yYV90eXBlX21hbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklM
SVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisKK3RzZl9yYV90eXBlX21hbl90ICp0c2ZfcmFfdHlw
ZV9tYW5fY3JlYXRlKHZvaWQpIHsKKyAgICB0c2ZfcmFfdHlwZV9tYW5fdCAqcmVzdWx0PW1hbGxv
YyhzaXplb2YodHNmX3JhX3R5cGVfbWFuX3QpKTsKKyAgICByZXN1bHQtPm91dF9tYXA9dHNmX3N0
X2luaXRfdHlwZXRhYmxlKCk7CisgICAgaWYgKHJlc3VsdC0+b3V0X21hcD09TlVMTCkgeworCXJl
dHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHQtPmluX21hcD10c2Zfc3RfaW5pdF9udW10YWJs
ZSgpOworICAgIGlmIChyZXN1bHQtPmluX21hcD09TlVMTCkgeworCXRzZl9zdF9mcmVlX3RhYmxl
KHJlc3VsdC0+b3V0X21hcCk7CisJcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdC0+dHlw
ZV9jb2Rlcz1OVUxMOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgdHNmX3JhX3R5cGVf
bWFuX2Rlc3Ryb3kodHNmX3JhX3R5cGVfbWFuX3QgKm1hbikgeworICAgIHRzZl9yYV90Y19ub2Rl
X3QgKm47CisgICAgdHNmX3N0X2l0ZXJhdG9yIGl0ZXI7CisKKyAgICBuPW1hbi0+dHlwZV9jb2Rl
czsKKyAgICB3aGlsZSAobiE9TlVMTCkgeworCXRzZl9yYV90Y19ub2RlX3QgKnZpY3RpbT1uOwor
CW49bi0+bmV4dDsKKwlmcmVlKHZpY3RpbSk7CisgICAgfQorICAgIAorICAgIGZvciAodHNmX3N0
X2l0ZXJhdG9yX2luaXQobWFuLT5vdXRfbWFwLCZpdGVyKTsKKwkgdHNmX3N0X2l0ZXJhdG9yX3Zh
bGlkKCZpdGVyKTsKKwkgdHNmX3N0X2l0ZXJhdG9yX25leHQoJml0ZXIpKSB7CisJdHNmX3R5cGVf
dCAqdHlwZTsKKwl0c2ZfcmFfdHlwZV9pbmZvX3QgKmluZm87CisJdHNmX3N0X2l0ZXJhdG9yX2dl
dCgmaXRlciwoY2hhcioqKSZ0eXBlLCh2b2lkKikmaW5mbyk7CisJdHNmX3R5cGVfZGVzdHJveSh0
eXBlKTsKKwlmcmVlKGluZm8pOworICAgIH0KKworICAgIHRzZl9zdF9mcmVlX3RhYmxlKG1hbi0+
aW5fbWFwKTsKKyAgICB0c2Zfc3RfZnJlZV90YWJsZShtYW4tPm91dF9tYXApOworfQorCit0c2Zf
Ym9vbF90IHRzZl9yYV90eXBlX21hbl9pbnNlcnQodHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJ
CQkgIHRzZl90eXBlX3QgKnR5cGUsCisJCQkJICB1aW50MzJfdCB0eXBlX2NvZGUsCisJCQkJICB1
aW50NjRfdCByZWZfY291bnQpIHsKKyAgICB0c2ZfcmFfdHlwZV9pbmZvX3QgKmluZm87CisgICAg
CisgICAgaW5mbz1tYWxsb2Moc2l6ZW9mKHRzZl9yYV90eXBlX2luZm9fdCkpOworICAgIGlmIChp
bmZvPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNm
X3JhX3R5cGVfaW5mb190Iik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIGluZm8tPnR5cGVfY29kZT10eXBlX2NvZGU7CisgICAgaW5mby0+cmVmX2NvdW50PXJl
Zl9jb3VudDsKKyAgICAKKyAgICB0eXBlPXRzZl90eXBlX2R1cCh0eXBlKTsKKyAgICAKKyAgICBp
ZiAodHNmX3N0X2FkZF9kaXJlY3QobWFuLT5vdXRfbWFwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY2hhciopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyk8MCkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2FkZF9kaXJlY3QoKSIpOwor
ICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHR5cGUpOworICAgICAgICBmcmVlKGluZm8pOworICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAodHNmX3N0X2FkZF9k
aXJlY3QobWFuLT5pbl9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikodWlu
dHB0cl90KXR5cGVfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpIHsKKyAg
ICAgICAgdHNmX3R5cGVfdCAqdG9fZGVsZXRlOworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgdHNmX3N0X2FkZF9kaXJlY3QoKSIpOworICAgICAgICB0b19kZWxldGUgPSB0eXBlOwor
ICAgICAgICB0c2Zfc3RfZGVsZXRlKG1hbi0+b3V0X21hcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAoY2hhcioqKSZ0b19kZWxldGUsCisgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAg
ICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgICAgICAgIGZyZWUoaW5mbyk7CisgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30K
Kwordm9pZCB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJ
CQkgICAgdHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHRzZl9yYV90eXBlX2luZm9fdCAqaW5mbzsK
KyAgICB1aW50cHRyX3QgdHlwZV9jb2RlOworICAgIHRzZl9yYV90Y19ub2RlX3QgKm47CisgICAg
dHNmX3R5cGVfdCAqdHlwZV90b19kZWxldGU7CisgICAgCisgICAgdHlwZV90b19kZWxldGUgPSB0
eXBlOworICAgIHRzZl9hc3NlcnQodHNmX3N0X2RlbGV0ZShtYW4tPm91dF9tYXAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjaGFyKiopJnR5cGVfdG9fZGVsZXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZpbmZvKSk7CisgICAgCisgICAgdHlwZV9jb2Rl
ID0gaW5mby0+dHlwZV9jb2RlOworICAgIAorICAgIHRzZl9hc3NlcnQodHNmX3N0X2RlbGV0ZSht
YW4tPmluX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKikmdHlwZV9j
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CisgICAgCisgICAgbj1t
YWxsb2Moc2l6ZW9mKHRzZl9yYV90Y19ub2RlX3QpKTsKKyAgICBpZiAobiE9TlVMTCkgeworICAg
ICAgICBuLT5uZXh0PW1hbi0+dHlwZV9jb2RlczsKKyAgICAgICAgbi0+dHlwZV9jb2RlPXR5cGVf
Y29kZTsKKyAgICAgICAgbWFuLT50eXBlX2NvZGVzPW47CisgICAgfSAvKiBlbHNlIHdlIHdvdWxk
IHNpZ25hbCBhbiBlcnJvciBidXQgdGhhdCB3b3VsZCBiZSBiYWQgc28gd2UgaW5zdGVhZAorICAg
ICAgICoganVzdCBsZWFrIHRoaXMgdHlwZSBjb2RlLiAqLworICAgIAorICAgIHRzZl90eXBlX2Rl
c3Ryb3kodHlwZSk7CisgICAgZnJlZShpbmZvKTsKK30KKworLyogbWF5YmUgdGhpcyBzaG91bGRu
J3QgYmUgc2V0dGluZyB0aGUgZXJyb3Igd2hlbiB0aGUgdHlwZSBpc24ndAorICAgZm91bmQ/ICBh
ZnRlcmFsbCwgYWxsIHVzZXMgb2YgdGhpcyBmdW5jdGlvbiBjdXJyZW50bHkgc2V0CisgICB0aGVp
ciBvd24gZXJyb3IgY29kZS4gKi8KK3RzZl90eXBlX3QgKnRzZl9yYV90eXBlX21hbl9maW5kKHRz
Zl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJIHVpbnQzMl90IHR5cGVfY29kZSkgeworICAgIHRz
Zl90eXBlX3QgKnR5cGU7CisKKyAgICBpZiAoIXRzZl9zdF9sb29rdXAobWFuLT5pbl9tYXAsCisg
ICAgICAgICAgICAgICAgICAgICAgIChjaGFyKikodWludHB0cl90KXR5cGVfY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQqKikmdHlwZSkpIHsKKwl0c2Zfc2V0X2Vycm9yKFRTRl9F
X0VMRV9OT1RfRk9VTkQsCisJCSAgICAgICJFbGVtZW50IG5vdCBmb3VuZCBpbiB0c2ZfcmFfdHlw
ZV9tYW5fZmluZCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gdHlwZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfcmFfdHlwZV9tYW5faGFzX3R5cGUodHNm
X3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkgICAgdHNmX3R5cGVfdCAqdHlwZSkgeworICAgIGlm
ICh0c2Zfc3RfbG9va3VwKG1hbi0+b3V0X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAoY2hh
ciopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkgeworICAgICAgICByZXR1cm4g
dHNmX3RydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKKy8qIGNh
bGwgdGhpcyBvbmx5IG9uY2UgeW91IGtub3cgdGhhdCB5b3Uga25vdyBhYm91dCB0aGUgdHlwZS4g
Ki8KK3VpbnQzMl90IHRzZl9yYV90eXBlX21hbl9nZXRfdHlwZV9jb2RlKHRzZl9yYV90eXBlX21h
bl90ICptYW4sCisJCQkJICAgICAgIHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICB0c2ZfcmFfdHlw
ZV9pbmZvX3QgKmluZm87CisgICAgCisgICAgdHNmX2Fzc2VydCh0c2Zfc3RfbG9va3VwKG1hbi0+
b3V0X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiopJmluZm8pKTsKKyAgICAKKyAgICByZXR1
cm4gaW5mby0+dHlwZV9jb2RlOworfQorCit0c2ZfYm9vbF90IHRzZl9yYV90eXBlX21hbl9nZXRf
cmVmZXJlbmNlKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSB0c2ZfdHlwZV90ICp0eXBl
KSB7CisgICAgdHNmX3JhX3R5cGVfaW5mb190ICppbmZvOworICAgIAorICAgIGlmICghdHNmX3N0
X2xvb2t1cChtYW4tPm91dF9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKil0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZpbmZvKSkgeworICAgICAgICB1aW50
MzJfdCB0eXBlX2NvZGU7CisgICAgICAgIHRzZl9yYV90Y19ub2RlX3QgKm49bWFuLT50eXBlX2Nv
ZGVzOworICAgICAgICAKKyAgICAgICAgaWYgKG49PU5VTEwpIHsKKyAgICAgICAgICAgIC8qIGlm
IHRoZXJlIGFyZSBub25lIGluIHRoZSBmcmVlIGxpc3QsIHRoZW4gdGhhdCBtZWFucworICAgICAg
ICAgICAgICogdGhhdCBhbGwgY29udGlndW91cyB0eXBlIGNvZGVzIGFyZSB1c2VkIHVwIHRvIHRo
ZQorICAgICAgICAgICAgICogbnVtYmVyIG9mIGxpdmUgdHlwZSBjb2Rlcy4gIGhlbmNlIHdlIGNh
biB1c2UgdGhlCisgICAgICAgICAgICAgKiBudW1fZW50cmllcyBmaWVsZCBvbiBlaXRoZXIgaGFz
aCB0YWJsZSBhcyB0aGUgbmV4dAorICAgICAgICAgICAgICogdHlwZSBjb2RlLiAqLworICAgICAg
ICAgICAgdHlwZV9jb2RlPW1hbi0+b3V0X21hcC0+bnVtX2VudHJpZXM7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB0eXBlX2NvZGU9bi0+dHlwZV9jb2RlOworICAgICAgICAgICAgbWFu
LT50eXBlX2NvZGVzPW4tPm5leHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICgh
dHNmX3JhX3R5cGVfbWFuX2luc2VydChtYW4sCisJCQkJICAgIHR5cGUsCisJCQkJICAgIHR5cGVf
Y29kZSwKKwkJCQkgICAgMSkpIHsKKyAgICAgICAgICAgIG1hbi0+dHlwZV9jb2Rlcz1uOworICAg
ICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKG4hPU5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUobik7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiB0c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaW5mby0+cmVmX2Nv
dW50Kys7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit2b2lkIHRzZl9yYV90eXBl
X21hbl9yZW1vdmVfcmVmZXJlbmNlKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJICAgICAg
dHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHRzZl9yYV90eXBlX2luZm9fdCAqaW5mbzsKKyAgICAK
KyAgICB0c2ZfYXNzZXJ0KHRzZl9zdF9sb29rdXAobWFuLT5vdXRfbWFwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY2hhciopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHZvaWQqKikmaW5mbykpOworICAgIAorICAgIGlmICgtLWluZm8tPnJlZl9jb3VudD09MCkg
eworICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlKG1hbix0eXBlKTsKKyAgICB9Cit9CisK
K3VpbnQzMl90IHRzZl9yYV90eXBlX21hbl9udW1fdHlwZXModHNmX3JhX3R5cGVfbWFuX3QgKm1h
bikgeworICAgIHJldHVybiBtYW4tPm91dF9tYXAtPm51bV9lbnRyaWVzOworfQorCit0c2ZfYm9v
bF90IHRzZl9yYV90eXBlX21hbl9oYXNfYnVmX3R5cGVzKHRzZl9yYV90eXBlX21hbl90ICptYW4s
CisJCQkJCSB0c2ZfYnVmZmVyX3QgKmJ1ZikgeworICAgIHVpbnQzMl90IGk7CisgICAgCisgICAg
aWYgKCF0c2ZfcmFfdHlwZV9tYW5faGFzX3R5cGUobWFuLGJ1Zi0+dHlwZSkpIHsKKyAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgZm9yIChpPTA7CisgICAgICAgICBp
PHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVzKGJ1Zi0+dHlwZXMpOworICAgICAgICAgKytp
KSB7CisgICAgICAgIGlmICghdHNmX3JhX3R5cGVfbWFuX2hhc190eXBlKG1hbiwKKyAgICAgICAg
ICAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2dldF90eXBlKGJ1Zi0+dHlwZXMsaSkpKSB7CisgICAg
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJl
dHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfcmFfdHlwZV9tYW5fZ2V0X2J1Zl9y
ZWZlcmVuY2VzKHRzZl9yYV90eXBlX21hbl90ICptYW4sCisJCQkJCSAgICAgIHRzZl9idWZmZXJf
dCAqYnVmKSB7CisgICAgdWludDMyX3QgaTsKKworICAgIGlmICghdHNmX3JhX3R5cGVfbWFuX2dl
dF9yZWZlcmVuY2UobWFuLGJ1Zi0+dHlwZSkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgZm9yIChpPTA7CisgICAgICAgICBpPHRzZl90eXBlX2luX21hcF9n
ZXRfbnVtX3R5cGVzKGJ1Zi0+dHlwZXMpOworICAgICAgICAgKytpKSB7CisgICAgICAgIGlmICgh
dHNmX3JhX3R5cGVfbWFuX2dldF9yZWZlcmVuY2UobWFuLAorICAgICAgICAgICAgICAgICB0c2Zf
dHlwZV9pbl9tYXBfZ2V0X3R5cGUoYnVmLT50eXBlcyxpKSkpIHsKKyAgICAgICAgICAgIHVpbnQz
Ml90IGo7CisgICAgICAgICAgICBmb3IgKGo9MDtqPGk7KytqKSB7CisgICAgICAgICAgICAgICAg
dHNmX3JhX3R5cGVfbWFuX3JlbW92ZV9yZWZlcmVuY2UobWFuLAorICAgICAgICAgICAgICAgICAg
ICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoYnVmLT50eXBlcyxqKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlX3JlZmVyZW5jZShtYW4sYnVmLT50
eXBlKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit2b2lkIHRzZl9yYV90eXBlX21hbl9yZW1v
dmVfYnVmX3JlZmVyZW5jZXModHNmX3JhX3R5cGVfbWFuX3QgKm1hbiwKKwkJCQkJICAgdHNmX2J1
ZmZlcl90ICpidWYpIHsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIHRzZl9yYV90eXBlX21h
bl9yZW1vdmVfcmVmZXJlbmNlKG1hbixidWYtPnR5cGUpOworICAgIAorICAgIGZvciAoaT0wOwor
ICAgICAgICAgaTx0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhidWYtPnR5cGVzKTsKKyAg
ICAgICAgICsraSkgeworICAgICAgICB0c2ZfcmFfdHlwZV9tYW5fcmVtb3ZlX3JlZmVyZW5jZSht
YW4sCisgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoYnVmLT50eXBlcyxpKSk7
CisgICAgfQorfQorCit0c2ZfcmFfdHlwZV9tYW5fdCAqdHNmX3JhX3R5cGVfbWFuX3JlYWQodHNm
X3JlYWRlcl90IHJlYWRlciwKKwkJCQkJdm9pZCAqYXJnKSB7CisgICAgdHNmX3JhX3R5cGVfbWFu
X3QgKnJlc3VsdDsKKyAgICB1aW50MzJfdCBudW1fdHlwZXM7CisgICAgdWludDMyX3QgdHlwZV9j
b2RlOworICAgIHVpbnQzMl90ICp0eXBlX2NvZGVzOworICAgIHVpbnQ2NF90IHJlZl9jb3VudDsK
KyAgICB1aW50MzJfdCBuLGk7CisgICAgdHNmX2Jvb2xfdCB0cmVzOworCisgICAgaWYgKCFyZWFk
ZXIoYXJnLCZudW1fdHlwZXMsc2l6ZW9mKG51bV90eXBlcykpKSB7CisJcmV0dXJuIE5VTEw7Cisg
ICAgfQorCisgICAgbnVtX3R5cGVzPW50b2hsKG51bV90eXBlcyk7CisKKyAgICByZXN1bHQ9dHNm
X3JhX3R5cGVfbWFuX2NyZWF0ZSgpOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKwlyZXR1cm4g
TlVMTDsKKyAgICB9CisKKyAgICB0eXBlX2NvZGVzPW1hbGxvYyhzaXplb2YodWludDMyX3QpKm51
bV90eXBlcyk7CisgICAgaWYgKHR5cGVfY29kZXM9PU5VTEwpIHsKKwl0c2Zfc2V0X2Vycm5vKCJD
b3VsZCBub3QgbWFwIHR5cGUgY29kZSBhcnJheSIpOworCXRzZl9yYV90eXBlX21hbl9kZXN0cm95
KHJlc3VsdCk7CisJcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChuPW51bV90eXBlcztu
LS0+MDspIHsKKwl0c2ZfdHlwZV90ICp0eXBlOworCQorCWlmICghcmVhZGVyKGFyZywmdHlwZV9j
b2RlLHNpemVvZih0eXBlX2NvZGUpKSkgeworCSAgICBmcmVlKHR5cGVfY29kZXMpOworCSAgICB0
c2ZfcmFfdHlwZV9tYW5fZGVzdHJveShyZXN1bHQpOworCSAgICByZXR1cm4gTlVMTDsKKwl9CisK
KyAgICAgICAgdHlwZV9jb2RlPW50b2hsKHR5cGVfY29kZSk7CisJdHlwZV9jb2Rlc1tuXT10eXBl
X2NvZGU7CisKKwlpZiAoIXJlYWRlcihhcmcsJnJlZl9jb3VudCxzaXplb2YocmVmX2NvdW50KSkp
IHsKKwkgICAgZnJlZSh0eXBlX2NvZGVzKTsKKwkgICAgdHNmX3JhX3R5cGVfbWFuX2Rlc3Ryb3ko
cmVzdWx0KTsKKwkgICAgcmV0dXJuIE5VTEw7CisJfQorCisJcmVmX2NvdW50PW50b2hsbChyZWZf
Y291bnQpOworCisJdHlwZT10c2ZfdHlwZV9yZWFkKHJlYWRlcixhcmcsTlVMTCk7CisJaWYgKHR5
cGU9PU5VTEwpIHsKKwkgICAgZnJlZSh0eXBlX2NvZGVzKTsKKwkgICAgdHNmX3JhX3R5cGVfbWFu
X2Rlc3Ryb3kocmVzdWx0KTsKKwkgICAgcmV0dXJuIE5VTEw7CisJfQorCisJdHJlcz10c2ZfcmFf
dHlwZV9tYW5faW5zZXJ0KHJlc3VsdCwKKwkJCQkgICAgdHlwZSwKKwkJCQkgICAgdHlwZV9jb2Rl
LAorCQkJCSAgICByZWZfY291bnQpOworCisJdHNmX3R5cGVfZGVzdHJveSh0eXBlKTsKKworCWlm
ICghdHJlcykgeworCSAgICBmcmVlKHR5cGVfY29kZXMpOworCSAgICB0c2ZfcmFfdHlwZV9tYW5f
ZGVzdHJveShyZXN1bHQpOworCSAgICByZXR1cm4gTlVMTDsKKwl9CisgICAgfQorCisgICAgdHNm
X3VpMzJfc29ydCh0eXBlX2NvZGVzLG51bV90eXBlcyk7CisKKyAgICBpZiAobnVtX3R5cGVzPjAp
IHsKKwlmb3IgKGk9MDtpPG51bV90eXBlcy0xOysraSkgeworCSAgICB0c2ZfYXNzZXJ0KHR5cGVf
Y29kZXNbaV08dHlwZV9jb2Rlc1tpKzFdKTsKKyAgICAgICAgICAgIAorCSAgICBmb3IgKHR5cGVf
Y29kZT10eXBlX2NvZGVzW2ldKzE7CisJCSB0eXBlX2NvZGU8dHlwZV9jb2Rlc1tpKzFdOworCQkg
Kyt0eXBlX2NvZGUpIHsKKwkJdHNmX3JhX3RjX25vZGVfdCAqbj1tYWxsb2Moc2l6ZW9mKHRzZl9y
YV90Y19ub2RlX3QpKTsKKwkJaWYgKG49PU5VTEwpIHsKKwkJICAgIGZyZWUodHlwZV9jb2Rlcyk7
CisJCSAgICB0c2ZfcmFfdHlwZV9tYW5fZGVzdHJveShyZXN1bHQpOworCQkgICAgcmV0dXJuIE5V
TEw7CisJCX0KKyAgICAgICAgICAgICAgICAKKwkJbi0+bmV4dD1yZXN1bHQtPnR5cGVfY29kZXM7
CisJCW4tPnR5cGVfY29kZT10eXBlX2NvZGU7CisJCXJlc3VsdC0+dHlwZV9jb2Rlcz1uOworCSAg
ICB9CisJfQorICAgIH0KKworICAgIGZyZWUodHlwZV9jb2Rlcyk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit0c2ZfYm9vbF90IHRzZl9yYV90eXBlX21hbl93cml0ZSh0c2ZfcmFfdHlwZV9t
YW5fdCAqbWFuLAorCQkJCSB0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorCQkJCSB2b2lkICphcmcpIHsK
KyAgICB1aW50MzJfdCBudW1fdHlwZXM7CisgICAgdHNmX3N0X2l0ZXJhdG9yIGl0ZXI7CisgICAg
CisgICAgbnVtX3R5cGVzPWh0b25sKG1hbi0+b3V0X21hcC0+bnVtX2VudHJpZXMpOworICAgIGlm
ICghd3JpdGVyKGFyZywmbnVtX3R5cGVzLHNpemVvZihudW1fdHlwZXMpKSkgeworCXJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorCisgICAgZm9yICh0c2Zfc3RfaXRlcmF0b3JfaW5pdChtYW4tPm91
dF9tYXAsJml0ZXIpOworCSB0c2Zfc3RfaXRlcmF0b3JfdmFsaWQoJml0ZXIpOworCSB0c2Zfc3Rf
aXRlcmF0b3JfbmV4dCgmaXRlcikpIHsKKwl0c2ZfdHlwZV90ICp0eXBlOworCXRzZl9yYV90eXBl
X2luZm9fdCAqaW5mbzsKKwl1aW50MzJfdCB0eXBlX2NvZGU7CisJdWludDY0X3QgcmVmX2NvdW50
OworCXRzZl9zdF9pdGVyYXRvcl9nZXQoJml0ZXIsKGNoYXIqKikmdHlwZSwodm9pZCopJmluZm8p
OworCXR5cGVfY29kZT1odG9ubChpbmZvLT50eXBlX2NvZGUpOworCXJlZl9jb3VudD1odG9ubGwo
aW5mby0+cmVmX2NvdW50KTsKKwlpZiAoIXdyaXRlcihhcmcsJnR5cGVfY29kZSxzaXplb2YodHlw
ZV9jb2RlKSkpIHsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsKKwl9CisJaWYgKCF3cml0ZXIoYXJn
LCZyZWZfY291bnQsc2l6ZW9mKHJlZl9jb3VudCkpKSB7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7
CisJfQorCWlmICghdHNmX3R5cGVfd3JpdGUodHlwZSx3cml0ZXIsYXJnKSkgeworCSAgICByZXR1
cm4gdHNmX2ZhbHNlOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3Vp
bnQzMl90IHRzZl9yYV90eXBlX21hbl9nZXRfdHlwZV9jb2RlX2ZyZWVfbGlzdF9zaXplKHRzZl9y
YV90eXBlX21hbl90ICptYW4pIHsKKyAgICB1aW50MzJfdCByZXQ9MDsKKyAgICB0c2ZfcmFfdGNf
bm9kZV90ICpjdXI7CisgICAgCisgICAgZm9yIChjdXI9bWFuLT50eXBlX2NvZGVzOworICAgICAg
ICAgY3VyIT1OVUxMOworICAgICAgICAgY3VyPWN1ci0+bmV4dCkgeworICAgICAgICArK3JldDsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKworCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZmxlY3QuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZmxlY3QuYwkobm9uZXhpc3Rl
bnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZmxlY3Qu
Ywkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQ
SVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisKKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmZGVmIEhBVkVfU1RSSU5HU19I
CisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BUSFJFQUQKKyNp
bmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKworI2lmZGVmIERFQlVHX1JFRkxFQ1RfQUxMT0MK
K3N0YXRpYyBpbnQ2NF90IHJlZmxlY3RfYmFsYW5jZSA9IDA7CisKK2ludDY0X3QgdHNmX3JlZmxl
Y3RfZ2V0X2JhbGFuY2UoKSB7CisgICAgcmV0dXJuIHJlZmxlY3RfYmFsYW5jZTsKK30KKworI2Rl
ZmluZSBpbmNyZW1lbnRfcmVmbGVjdF9iYWxhbmNlKCkgZG8ge1wKKyAgICByZWZsZWN0X2JhbGFu
Y2UrKztcCit9IHdoaWxlKDApCisKKyNkZWZpbmUgZGVjcmVtZW50X3JlZmxlY3RfYmFsYW5jZSgp
IGRvIHtcCisgICAgcmVmbGVjdF9iYWxhbmNlLS07XAorfSB3aGlsZSgwKQorCisjZWxzZQorCisj
ZGVmaW5lIGluY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKSBkbyB7XAorfSB3aGlsZSgwKQorCisj
ZGVmaW5lIGRlY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKSBkbyB7XAorfSB3aGlsZSgwKQorCisj
ZW5kaWYKKworI2RlZmluZSBpc19zdHJ1Y3Rfb3JfYXJyYXkodHlwZSkgXAorICAgICh0eXBlLT5r
aW5kX2NvZGUgPT0gVFNGX1RLX1NUUlVDVCB8fCBcCisgICAgIHR5cGUtPmtpbmRfY29kZSA9PSBU
U0ZfVEtfQVJSQVkpCisKK3RzZl9yZWZsZWN0X3QgKnRzZl9yZWZsZWN0X2NyZWF0ZSh0c2ZfdHlw
ZV90ICp0eXBlKSB7CisgICAgdHNmX3JlZmxlY3RfdCAqcmV0OworICAgIAorICAgIGlmICh0eXBl
ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldCA9
IG1hbGxvYyhzaXplb2YodHNmX3JlZmxlY3RfdCkpOworICAgIGlmIChyZXQgPT0gTlVMTCkgewor
ICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgdHNmX3JlZmxlY3RfdCBz
dHJ1Y3R1cmUuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQt
PnR5cGUgPSB0c2ZfdHlwZV9kdXAodHlwZSk7CisgICAgCisgICAgc3dpdGNoICh0eXBlLT5raW5k
X2NvZGUpIHsKKyAgICBjYXNlIFRTRl9US19BUlJBWToKKyAgICAgICAgcmV0LT51LmMuYXJyYXkg
PSBOVUxMOworICAgICAgICByZXQtPnUuYy5zaXplID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICByZXQtPnUuYy5zaXplID0gdHNmX3N0cnVjdF90
eXBlX2dldF9udW1fZWxlbWVudHModHlwZSk7CisgICAgICAgIHJldC0+dS5jLmFycmF5ID0gbWFs
bG9jKHNpemVvZih0c2ZfcmVmbGVjdF90KikgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXQtPnUuYy5zaXplKTsKKyAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5ID09IE5VTEwp
IHsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3ko
cmV0LT50eXBlKTsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0
ZSBhcnJheSBvZiBwb2ludGVycyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2Zf
cmVmbGVjdF9jcmVhdGUoKSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0K
KyAgICAgICAgYnplcm8ocmV0LT51LmMuYXJyYXksIHNpemVvZih0c2ZfcmVmbGVjdF90KikgKiBy
ZXQtPnUuYy5zaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgor
ICAgICAgICByZXQtPnUuaC5jaG9pY2UgPSBVSU5UMzJfTUFYOworICAgICAgICByZXQtPnUuaC5k
YXRhID0gTlVMTDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKyAgICBj
YXNlIFRTRl9US19VSU5UODoKKyAgICBjYXNlIFRTRl9US19JTlQxNjoKKyAgICBjYXNlIFRTRl9U
S19VSU5UMTY6CisgICAgY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfVUlOVDMy
OgorICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAgIGNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICBj
YXNlIFRTRl9US19JTlRFR0VSOgorICAgIGNhc2UgVFNGX1RLX0xPTkc6CisgICAgY2FzZSBUU0Zf
VEtfRkxPQVQ6CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOgorICAgIGNhc2UgVFNGX1RLX0JJVDoK
KyAgICBjYXNlIFRTRl9US19WT0lEOgorICAgIGNhc2UgVFNGX1RLX1NUUklORzoKKyAgICBjYXNl
IFRTRl9US19BTlk6CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEVfS0lORCwK
KyAgICAgICAgICAgICAgICAgICAgICAiVG8gY3JlYXRlIHRzZl9yZWZsZWN0X3Qgb2JqZWN0cyBv
ZiB0eXBlICIKKyAgICAgICAgICAgICAgICAgICAgICAiJXMsIHVzZSB0c2ZfcmVmbGVjdF9jcmVh
dGVfJXMoKSIsCisgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfa2luZF90c2ZfbmFtZSh0
eXBlLT5raW5kX2NvZGUpLAorICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2tpbmRfbGNf
bmFtZSh0eXBlLT5raW5kX2NvZGUpKTsKKyAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5
cGUpOworICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldCA9IE5VTEw7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsK
KyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAgICAgICAg
ICAgICAgICAgICInIiBmdWk4ICInIGlzIG5vdCBhIHZhbGlkIGtpbmQgdHlwZSBmb3IgIgorICAg
ICAgICAgICAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9jcmVhdGUoKSIsCisgICAgICAgICAgICAg
ICAgICAgICAgdHlwZS0+a2luZF9jb2RlKTsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICBy
ZXQgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpbmNyZW1lbnRfcmVmbGVj
dF9iYWxhbmNlKCk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKworI2RlZmluZSBERUZJTkVf
UkVGTEVDVF9DUkVBVEVfR0VUKHR5cGVfbGNfbmFtZSwgdHlwZV9sYywgdHlwZV91YykgICAgICAg
XAorICAgIHRzZl9yZWZsZWN0X3QgKnRzZl9yZWZsZWN0X2NyZWF0ZV8jI3R5cGVfbGNfbmFtZSh0
eXBlX2xjIHZhbHVlKSB7ICAgXAorICAgICAgICB0c2ZfcmVmbGVjdF90ICpyZXQ7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXQgPSBtYWxsb2Moc2l6ZW9mKHRzZl9yZWZsZWN0X3QpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAocmV0ID09IE5VTEwpIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdHNmX3NldF9l
cnJubygiQ291bGQgbm90IGFsbG9jYXRlIHRzZl9yZWZsZWN0X3Qgc3RydWN0dXJlLiIpOyBcCisg
ICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldC0+dHlwZSA9IHRzZl90eXBlX2NyZWF0ZSh0eXBlX3VjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHJldC0+dS5wXyMjdHlwZV9sY19uYW1lID0gdmFsdWU7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGluY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiByZXQ7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZV9sYyB0c2ZfIyN0eXBlX2xjX25hbWUj
I19yZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7ICAgICBcCisgICAgICAgIHJldHVy
biBkYXRhLT51LnBfIyN0eXBlX2xjX25hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfQorCitERUZJTkVfUkVGTEVDVF9DUkVBVEVfR0VUKGludDE2X3QsIGludDE2X3Qs
IFRTRl9US19JTlQxNikKK0RFRklORV9SRUZMRUNUX0NSRUFURV9HRVQodWludDE2X3QsIHVpbnQx
Nl90LCBUU0ZfVEtfVUlOVDE2KQorREVGSU5FX1JFRkxFQ1RfQ1JFQVRFX0dFVChpbnQzMl90LCBp
bnQzMl90LCBUU0ZfVEtfSU5UMzIpCitERUZJTkVfUkVGTEVDVF9DUkVBVEVfR0VUKHVpbnQzMl90
LCB1aW50MzJfdCwgVFNGX1RLX1VJTlQzMikKK0RFRklORV9SRUZMRUNUX0NSRUFURV9HRVQoaW50
NjRfdCwgaW50NjRfdCwgVFNGX1RLX0lOVDY0KQorREVGSU5FX1JFRkxFQ1RfQ1JFQVRFX0dFVCh1
aW50NjRfdCwgdWludDY0X3QsIFRTRl9US19VSU5UNjQpCitERUZJTkVfUkVGTEVDVF9DUkVBVEVf
R0VUKGludGVnZXIsIGludDMyX3QsIFRTRl9US19JTlRFR0VSKQorREVGSU5FX1JFRkxFQ1RfQ1JF
QVRFX0dFVChsb25nLCBpbnQ2NF90LCBUU0ZfVEtfTE9ORykKK0RFRklORV9SRUZMRUNUX0NSRUFU
RV9HRVQoZmxvYXQsIGZsb2F0LCBUU0ZfVEtfRkxPQVQpCitERUZJTkVfUkVGTEVDVF9DUkVBVEVf
R0VUKGRvdWJsZSwgZG91YmxlLCBUU0ZfVEtfRE9VQkxFKQorCitzdGF0aWMgdHNmX3JlZmxlY3Rf
dCBpbnQ4X2RhdGFbMjU2XTsKK3N0YXRpYyB0c2ZfcmVmbGVjdF90IHVpbnQ4X2RhdGFbMjU2XTsK
K3N0YXRpYyB0c2ZfcmVmbGVjdF90IGJpdF9kYXRhX3RydWUsCisgICAgICAgICAgICAgICAgICAg
ICBiaXRfZGF0YV9mYWxzZTsKK3N0YXRpYyB0c2ZfcmVmbGVjdF90IHZvaWRfZGF0YTsKKworc3Rh
dGljIHZvaWQgaW5pdF9yZWZsZWN0KHZvaWQpIHsKKyAgICB1bnNpZ25lZCBpOworICAgIAorICAg
IGZvciAoaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAgICBpbnQ4X2RhdGFbaV0udHlwZSA9
IHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfSU5UOCk7CisgICAgICAgIGludDhfZGF0YVtpXS51LnBf
aW50OF90ID0gaSAtIDEyODsKKyAgICAgICAgCisgICAgICAgIHVpbnQ4X2RhdGFbaV0udHlwZSA9
IHRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfVUlOVDgpOworICAgICAgICB1aW50OF9kYXRhW2ldLnUu
cF91aW50OF90ID0gaTsKKyAgICB9CisgICAgCisgICAgYml0X2RhdGFfdHJ1ZS50eXBlID0gdHNm
X3R5cGVfY3JlYXRlKFRTRl9US19CSVQpOworICAgIGJpdF9kYXRhX3RydWUudS5iaXQgPSB0c2Zf
dHJ1ZTsKKyAgICAKKyAgICBiaXRfZGF0YV9mYWxzZS50eXBlID0gdHNmX3R5cGVfY3JlYXRlKFRT
Rl9US19CSVQpOworICAgIGJpdF9kYXRhX2ZhbHNlLnUuYml0ID0gdHNmX2ZhbHNlOworICAgIAor
ICAgIHZvaWRfZGF0YS50eXBlID0gdHNmX3R5cGVfY3JlYXRlKFRTRl9US19WT0lEKTsKK30KKwor
c3RhdGljIHRzZl9vbmNlX3Qgb25jZV9jb250cm9sID0gVFNGX09OQ0VfSU5JVDsKK3N0YXRpYyB2
b2lkIGNoZWNrX2luaXRfcmVmbGVjdCh2b2lkKSB7CisgICAgdHNmX29uY2UoJm9uY2VfY29udHJv
bCwgaW5pdF9yZWZsZWN0KTsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY3JlYXRl
X2ludDhfdChpbnQ4X3QgdmFsdWUpIHsKKyAgICBjaGVja19pbml0X3JlZmxlY3QoKTsKKyAgICBy
ZXR1cm4gaW50OF9kYXRhICsgdmFsdWUgKyAxMjg7Cit9CisKK3RzZl9yZWZsZWN0X3QgKnRzZl9y
ZWZsZWN0X2NyZWF0ZV91aW50OF90KHVpbnQ4X3QgdmFsdWUpIHsKKyAgICBjaGVja19pbml0X3Jl
ZmxlY3QoKTsKKyAgICByZXR1cm4gdWludDhfZGF0YSArIHZhbHVlOworfQorCitpbnQ4X3QgdHNm
X2ludDhfdF9yZWZsZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRh
dGEtPnUucF9pbnQ4X3Q7Cit9CisKK3VpbnQ4X3QgdHNmX3VpbnQ4X3RfcmVmbGVjdF9nZXQodHNm
X3JlZmxlY3RfdCAqZGF0YSkgeworICAgIHJldHVybiBkYXRhLT51LnBfdWludDhfdDsKK30KKwor
dHNmX3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY3JlYXRlX2JpdCh0c2ZfYm9vbF90IHZhbHVlKSB7
CisgICAgY2hlY2tfaW5pdF9yZWZsZWN0KCk7CisgICAgcmV0dXJuIHZhbHVlID8gJmJpdF9kYXRh
X3RydWUgOiAmYml0X2RhdGFfZmFsc2U7Cit9CisKK3RzZl9yZWZsZWN0X3QgKnRzZl9yZWZsZWN0
X2NyZWF0ZV92b2lkKHZvaWQpIHsKKyAgICBjaGVja19pbml0X3JlZmxlY3QoKTsKKyAgICByZXR1
cm4gJnZvaWRfZGF0YTsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY3JlYXRlX3N0
cmluZyhjb25zdCBjaGFyICpzdHIpIHsKKyAgICB0c2ZfcmVmbGVjdF90ICpyZXQgPSBtYWxsb2Mo
c2l6ZW9mKHRzZl9yZWZsZWN0X3QpKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAg
dHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2ZfcmVmbGVjdF90Iik7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGUgPSB0c2ZfdHlwZV9jcmVh
dGUoVFNGX1RLX1NUUklORyk7CisgICAgcmV0LT51LnN0ciA9IHN0cmR1cChzdHIpOworICAgIAor
ICAgIGlmIChyZXQtPnUuc3RyID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qgc3RyZHVwKCkiKTsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorICAgIAorICAgIGluY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKTsKKyAgICAK
KyAgICByZXR1cm4gcmV0OworfQorCit0c2ZfcmVmbGVjdF90ICp0c2ZfcmVmbGVjdF9jcmVhdGVf
YW55KHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdHNmX3JlZmxlY3RfdCAqcmV0PW1hbGxvYyhz
aXplb2YodHNmX3JlZmxlY3RfdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2ZfcmVmbGVjdF90Iik7CisgICAgICAgIHRz
Zl9idWZmZXJfZGVzdHJveShidWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAg
CisgICAgcmV0LT50eXBlPXRzZl90eXBlX2NyZWF0ZShUU0ZfVEtfQU5ZKTsKKyAgICByZXQtPnUu
YW55PWJ1ZjsKKyAgICAKKyAgICBpbmNyZW1lbnRfcmVmbGVjdF9iYWxhbmNlKCk7CisgICAgCisg
ICAgcmV0dXJuIHJldDsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNmX3JlZmxlY3RfY2xvbmUodHNm
X3JlZmxlY3RfdCAqZGF0YSkgeworICAgIHVpbnQzMl90IGk7CisgICAgdHNmX3JlZmxlY3RfdCAq
cmV0OworICAgIAorICAgIHN3aXRjaCAoZGF0YS0+dHlwZS0+a2luZF9jb2RlKSB7CisgICAgY2Fz
ZSBUU0ZfVEtfVUlOVDg6CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKyAgICBjYXNlIFRTRl9US19C
SVQ6CisgICAgY2FzZSBUU0ZfVEtfVk9JRDoKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldCA9IG1hbGxvYyhzaXpl
b2YodHNmX3JlZmxlY3RfdCkpOworICAgIAorICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgdHNmX3JlZmxlY3RfdCBzdHJ1Y3R1
cmUuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGUg
PSB0c2ZfdHlwZV9kdXAoZGF0YS0+dHlwZSk7CisgICAgCisgICAgaWYgKGlzX3N0cnVjdF9vcl9h
cnJheShkYXRhLT50eXBlKSkgeworICAgICAgICByZXQtPnUuYy5zaXplID0gZGF0YS0+dS5jLnNp
emU7CisgICAgICAgIHJldC0+dS5jLmFycmF5ID0gbWFsbG9jKHNpemVvZih0c2ZfcmVmbGVjdF90
KikgKiByZXQtPnUuYy5zaXplKTsKKyAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5ID09IE5VTEwp
IHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBhcnJheSBv
ZiBwb2ludGVycyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9j
bG9uZSgpIik7CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAg
ICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLyogc2V0IHRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXkgdG8gTlVM
TCBzbyB0aGF0IGRlc3Ryb3kKKyAgICAgICAgICogd29ya3MuICovCisgICAgICAgIGJ6ZXJvKHJl
dC0+dS5jLmFycmF5LAorICAgICAgICAgICAgICBzaXplb2YodHNmX3JlZmxlY3RfdCopICogcmV0
LT51LmMuc2l6ZSk7CisgICAgICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmV0LT51LmMu
c2l6ZTsgKytpKSB7CisgICAgICAgICAgICBpZiAoZGF0YS0+dS5jLmFycmF5W2ldID09IE5VTEwp
IHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgcmV0LT51LmMuYXJyYXlbaV0gPSB0c2ZfcmVmbGVjdF9jbG9uZShkYXRh
LT51LmMuYXJyYXlbaV0pOworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5V
TEwpIHsKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAg
ICAgICAgICAgICAgdHNmX3JlZmxlY3RfZGVzdHJveShyZXQpOworICAgICAgICAgICAgICAgIHJl
dHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkYXRh
LT50eXBlLT5raW5kX2NvZGUgPT0gVFNGX1RLX0NIT0lDRSkgeworICAgICAgICByZXQtPnUuaC5j
aG9pY2UgPSBkYXRhLT51LmguY2hvaWNlOworICAgICAgICByZXQtPnUuaC5kYXRhID0gdHNmX3Jl
ZmxlY3RfY2xvbmUoZGF0YS0+dS5oLmRhdGEpOworICAgICAgICBpZiAocmV0LT51LmguZGF0YSA9
PSBOVUxMKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAg
ICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19TVFJJTkcpIHsK
KyAgICAgICAgcmV0LT51LnN0ciA9IHN0cmR1cChkYXRhLT51LnN0cik7CisgICAgICAgIGlmIChy
ZXQtPnUuc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5v
dCBzdHJkdXAoKSIpOworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOwor
ICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQU5ZKSB7
CisgICAgICAgIHJldC0+dS5hbnkgPSB0c2ZfYnVmZmVyX2R1cChkYXRhLT51LmFueSk7CisgICAg
ICAgIGlmIChyZXQtPnUuYW55ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ry
b3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyoganVzdCBjb3B5IHRo
ZSBiaXRzICovCisgICAgICAgIHJldC0+dSA9IGRhdGEtPnU7CisgICAgfQorICAgIAorICAgIGlu
Y3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1cm4gcmV0OworfQorCit2
b2lkIHRzZl9yZWZsZWN0X2Rlc3Ryb3kodHNmX3JlZmxlY3RfdCAqZGF0YSkgeworICAgIHVpbnQz
Ml90IGk7CisgICAgCisgICAgc3dpdGNoIChkYXRhLT50eXBlLT5raW5kX2NvZGUpIHsKKyAgICBj
YXNlIFRTRl9US19VSU5UODoKKyAgICBjYXNlIFRTRl9US19JTlQ4OgorICAgIGNhc2UgVFNGX1RL
X0JJVDoKKyAgICBjYXNlIFRTRl9US19WT0lEOgorICAgICAgICByZXR1cm47CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGRlY3JlbWVudF9yZWZsZWN0X2Jh
bGFuY2UoKTsKKyAgICAKKyAgICBpZiAoaXNfc3RydWN0X29yX2FycmF5KGRhdGEtPnR5cGUpKSB7
CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkYXRhLT51LmMuc2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAoZGF0YS0+dS5jLmFycmF5W2ldID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHNmX3Jl
ZmxlY3RfZGVzdHJveShkYXRhLT51LmMuYXJyYXlbaV0pOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpZiAoZGF0YS0+dS5jLmFycmF5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUo
ZGF0YS0+dS5jLmFycmF5KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGF0YS0+dHlwZS0+
a2luZF9jb2RlID09IFRTRl9US19DSE9JQ0UpIHsKKyAgICAgICAgaWYgKGRhdGEtPnUuaC5kYXRh
ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZGF0YS0+dS5oLmRh
dGEpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkYXRhLT50eXBlLT5raW5kX2NvZGUgPT0g
VFNGX1RLX1NUUklORykgeworICAgICAgICBmcmVlKGRhdGEtPnUuc3RyKTsKKyAgICB9IGVsc2Ug
aWYgKGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQU5ZKSB7CisgICAgICAgIHRzZl9i
dWZmZXJfZGVzdHJveShkYXRhLT51LmFueSk7CisgICAgfQorICAgIAorICAgIHRzZl90eXBlX2Rl
c3Ryb3koZGF0YS0+dHlwZSk7CisKKyAgICBmcmVlKGRhdGEpOworfQorCit0c2ZfYm9vbF90IHRz
Zl9yZWZsZWN0X3ZlcmlmeSh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaTsK
KyAgICAKKyAgICBpZiAoIWlzX3N0cnVjdF9vcl9hcnJheShkYXRhLT50eXBlKSkgeworICAgICAg
ICByZXR1cm4gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCBkYXRh
LT51LmMuc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChkYXRhLT51LmMuYXJyYXlbaV0gPT0gTlVM
TCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9FTEVNRU5UX05VTEwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJJbiAlcyBhdCBpbmRleCA9ICIgZnVpMzIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQVJSQVkg
PworICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gYXJyYXkiIDogImEgc3RydWN0IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworLyog
ZG9lcyBhIHByZXBhc3MgZm9yIHByb2R1Y2luZyBhIGJ1ZmZlciAqLworc3RhdGljIHVpbnQzMl90
IHdyaXRlX2NhbGNfc2l6ZSh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgdWludDMyX3QgaSwg
bnVtX2JpdHMgPSAwLCByZXQgPSAwOworICAgIAorICAgIHN3aXRjaCAoZGF0YS0+dHlwZS0+a2lu
ZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjoKKyAgICAgICAgcmV0dXJuIHNpemVf
b2ZfdHNmX2ludGVnZXIoZGF0YS0+dS5wX2ludGVnZXIpOworICAgIGNhc2UgVFNGX1RLX0xPTkc6
CisgICAgICAgIHJldHVybiBzaXplX29mX3RzZl9sb25nKGRhdGEtPnUucF9sb25nKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2tp
bmRfaXNfcHJpbWl0aXZlKGRhdGEtPnR5cGUtPmtpbmRfY29kZSkpIHsKKyAgICAgICAgcmV0dXJu
IHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX3NpemVfb2YoZGF0YS0+dHlwZS0+a2luZF9jb2RlKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQklU
KSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAKKyAgICBpZiAoZGF0YS0+dHlwZS0+
a2luZF9jb2RlID09IFRTRl9US19WT0lEKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICAKKyAgICBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19TVFJJTkcpIHsKKyAg
ICAgICAgcmV0dXJuIHN0cmxlbihkYXRhLT51LnN0cikgKyAxOworICAgIH0KKyAgICAKKyAgICBp
ZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19BTlkpIHsKKyAgICAgICAgcmV0dXJu
IHRzZl9idWZmZXJfY2FsY19zaXplKGRhdGEtPnUuYW55KTsKKyAgICB9CisgICAgCisgICAgaWYg
KGRhdGEtPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQ0hPSUNFKSB7CisgICAgICAgIGlmICh0
c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyhkYXRhLT50eXBlKSA+PSAyNTYpIHsKKyAg
ICAgICAgICAgIGlmIChkYXRhLT50eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29yZCkgeworICAg
ICAgICAgICAgICAgIHJldCArPSA0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICByZXQgKz0gc2l6ZV9vZl90c2ZfdW5zaWduZWQoZGF0YS0+dS5oLmNob2ljZSArIDEpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0ICs9IDE7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEtPnUuaC5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAg
ICAgIHJldCArPSB3cml0ZV9jYWxjX3NpemUoZGF0YS0+dS5oLmRhdGEpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIAorICAgIGlmIChkYXRhLT50eXBlLT5raW5k
X2NvZGUgPT0gVFNGX1RLX0FSUkFZKSB7CisgICAgICAgIGlmIChkYXRhLT51LmMuc2l6ZSA+PSAy
NTUpIHsKKyAgICAgICAgICAgIHJldCArPSA1OworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcmV0ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZm9yIChpID0gMDsgaSA8
IGRhdGEtPnUuYy5zaXplOyArK2kpIHsKKyAgICAgICAgaWYgKGRhdGEtPnUuYy5hcnJheVtpXS0+
dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICsrbnVtX2JpdHM7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXQgKz0gd3JpdGVfY2FsY19zaXplKGRh
dGEtPnUuYy5hcnJheVtpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0ICs9ICgo
bnVtX2JpdHMgKyA3KSA+PiAzKTsKKyAgICAKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMg
dHNmX2Jvb2xfdCB3cml0ZV9tYWlucGFzcyh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfb3V0X21hcF90ICp0eXBlX21hcCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKipidWYpIHsKKyAgICBzd2l0
Y2ggKGRhdGEtPnR5cGUtPmtpbmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RLX0lOVDg6CisgICAg
Y2FzZSBUU0ZfVEtfVUlOVDg6CisgICAgY2FzZSBUU0ZfVEtfQklUOgorICAgICAgICBjb3B5X2h0
b25jX2luY2RzdCgqYnVmLCAmZGF0YS0+dS5wX3VpbnQ4X3QpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFRTRl9US19JTlQxNjoKKyAgICBjYXNlIFRTRl9US19VSU5UMTY6CisgICAgICAgIGNv
cHlfaHRvbnNfaW5jZHN0KCpidWYsICh1aW50OF90KikmZGF0YS0+dS5wX3VpbnQxNl90KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfVUlO
VDMyOgorICAgICAgICBjb3B5X2h0b25sX2luY2RzdCgqYnVmLCAodWludDhfdCopJmRhdGEtPnUu
cF91aW50MzJfdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDY0OgorICAg
IGNhc2UgVFNGX1RLX1VJTlQ2NDoKKyAgICAgICAgY29weV9odG9ubGxfaW5jZHN0KCpidWYsICh1
aW50OF90KikmZGF0YS0+dS5wX3VpbnQ2NF90KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfSU5URUdFUjoKKyAgICAgICAgKmJ1ZiArPSB3cml0ZV90c2ZfaW50ZWdlcigqYnVmLCBk
YXRhLT51LnBfaW50ZWdlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0xPTkc6
CisgICAgICAgICpidWYgKz0gd3JpdGVfdHNmX2xvbmcoKmJ1ZiwgZGF0YS0+dS5wX2xvbmcpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19GTE9BVDoKKyAgICAgICAgY29weV9odG9u
Zl9pbmNkc3QoKmJ1ZiwgKHVpbnQ4X3QqKSZkYXRhLT51LnBfZmxvYXQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFRTRl9US19ET1VCTEU6CisgICAgICAgIGNvcHlfaHRvbmRfaW5jZHN0KCpi
dWYsICh1aW50OF90KikmZGF0YS0+dS5wX2RvdWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVFNGX1RLX0FSUkFZOiB7CisgICAgICAgIHVpbnQ4X3QgdG1wOworICAgICAgICBpZiAoZGF0
YS0+dS5jLnNpemUgPj0gMjU1KSB7CisgICAgICAgICAgICB0bXAgPSAodWludDhfdCkyNTU7Cisg
ICAgICAgICAgICBjb3B5X2h0b25jX2luY2RzdCgqYnVmLCAmdG1wKTsKKyAgICAgICAgICAgIGNv
cHlfaHRvbmxfaW5jZHN0KCpidWYsICh1aW50OF90KikmZGF0YS0+dS5jLnNpemUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdG1wID0gKHVpbnQ4X3QpZGF0YS0+dS5jLnNpemU7Cisg
ICAgICAgICAgICBjb3B5X2h0b25jX2luY2RzdCgqYnVmLCAmdG1wKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodHNmX3R5cGVfZ2V0X2tpbmRfY29kZSgKKyAgICAgICAgICAgICAgICB0c2ZfYXJy
YXlfdHlwZV9nZXRfZWxlbWVudF90eXBlKGRhdGEtPnR5cGUpKQorICAgICAgICAgICAgPT0gVFNG
X1RLX0JJVCkgeworICAgICAgICAgICAgdWludDMyX3QgaSwgajsKKyAgICAgICAgICAgIHVpbnQ4
X3QgdmFsdWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgKyA3IDwg
ZGF0YS0+dS5jLnNpemU7IGkgKz0gOCkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKKyAg
ICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgODsgKytqKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChkYXRhLT51LmMuYXJyYXlbaSArIGpdLT51LmJpdCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgfD0gKDEgPDwgaik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoKmJ1ZiwgJnZh
bHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkYXRhLT51LmMuc2l6ZSA+IGkp
IHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChqID0g
MDsgaiA8IGRhdGEtPnUuYy5zaXplIC0gaTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChkYXRhLT51LmMuYXJyYXlbaSArIGpdLT51LmJpdCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgfD0gKDEgPDwgaik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoKmJ1ZiwgJnZhbHVlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGk7
CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGF0YS0+dS5jLnNpemU7ICsraSkgeworICAg
ICAgICAgICAgICAgIGlmICghd3JpdGVfbWFpbnBhc3MoZGF0YS0+dS5jLmFycmF5W2ldLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9tYXAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWYpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRTRl9US19TVFJVQ1Q6IHsKKyAgICAg
ICAgdWludDMyX3QgaTsKKyAgICAgICAgdWludDhfdCB2YWx1ZSwgYml0OworICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgZGF0YS0+dS5jLnNpemU7ICsraSkgeworICAgICAgICAgICAgaWYgKGRhdGEt
PnUuYy5hcnJheVtpXS0+dHlwZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghd3JpdGVf
bWFpbnBhc3MoZGF0YS0+dS5jLmFycmF5W2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmKSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgdmFsdWUgPSAwOworICAgICAgICBiaXQgPSAwOworICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgZGF0YS0+dS5jLnNpemU7ICsraSkgeworICAgICAgICAgICAgaWYgKGRhdGEtPnUu
Yy5hcnJheVtpXS0+dHlwZS0+a2luZF9jb2RlICE9IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkYXRhLT51LmMu
YXJyYXlbaV0tPnUuYml0KSB7CisgICAgICAgICAgICAgICAgdmFsdWUgfD0gKDEgPDwgYml0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrYml0OworICAgICAgICAgICAgaWYgKGJpdCA9
PSA4KSB7CisgICAgICAgICAgICAgICAgY29weV9odG9uY19pbmNkc3QoKmJ1ZiwgJnZhbHVlKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgYml0ID0gMDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoYml0KSB7CisgICAgICAgICAgICBj
b3B5X2h0b25jX2luY2RzdCgqYnVmLCAmdmFsdWUpOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgIGlmICh0c2ZfY2hvaWNl
X3R5cGVfZ2V0X251bV9lbGVtZW50cyhkYXRhLT50eXBlKSA+PSAyNTYpIHsKKyAgICAgICAgICAg
IGlmIChkYXRhLT50eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29yZCkgeworICAgICAgICAgICAg
ICAgIGNvcHlfaHRvbmxfaW5jZHN0KCpidWYsICh1aW50OF90KikmZGF0YS0+dS5oLmNob2ljZSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpidWYgKz0gd3JpdGVfdHNm
X3Vuc2lnbmVkKCpidWYsIGRhdGEtPnUuaC5jaG9pY2UgKyAxKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgY2hvaWNlXzhiaXQ7CisgICAgICAg
ICAgICBpZiAoZGF0YS0+dS5oLmNob2ljZSA9PSBVSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAg
ICAgY2hvaWNlXzhiaXQgPSAyNTU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGNob2ljZV84Yml0ID0gZGF0YS0+dS5oLmNob2ljZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvcHlfaHRvbmNfaW5jZHN0KCpidWYsICZjaG9pY2VfOGJpdCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGRhdGEtPnUuaC5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICgh
d3JpdGVfbWFpbnBhc3MoZGF0YS0+dS5oLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYpKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19WT0lEOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFRTRl9US19TVFJJTkc6CisjaWZkZWYgSEFWRV9TVFBDUFkKKyAgICAgICAg
KmJ1ZiA9ICh1aW50OF90KilzdHBjcHkoKGNoYXIqKSpidWYsIGRhdGEtPnUuc3RyKSArIDE7Cisj
ZWxzZQorICAgICAgICBzdHJjcHkoKGNoYXIqKSpidWYsIGRhdGEtPnUuc3RyKTsKKyAgICAgICAg
KmJ1ZiArPSBzdHJsZW4oZGF0YS0+dS5zdHIpICsgMTsKKyNlbmRpZgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRTRl9US19BTlk6CisgICAgICAgIGlmICghdHNmX2J1ZmZlcl93cml0ZV90b19i
dWYoZGF0YS0+dS5hbnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmKSkgeworICAg
ICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0JBRF9UWVBFX0tJTkQsCisg
ICAgICAgICAgICAgICAgICAgICAgZnVpOCAiIGlzIG5vdCBhIHJlY29nbml6ZWQga2luZCBjb2Rl
LiIsCisgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+dHlwZS0+a2luZF9jb2RlKTsKKyAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOwor
fQorCit0c2ZfYnVmZmVyX3QgKnRzZl9yZWZsZWN0X21ha2VfYnVmZmVyKHRzZl9yZWZsZWN0X3Qg
KmRhdGEpIHsKKyAgICB1aW50MzJfdCBzaXplOworICAgIHVpbnQ4X3QgKmJ1ZiwqY3VyOworICAg
IHRzZl90eXBlX291dF9tYXBfdCAqdHlwZV9tYXA7CisgICAgdHNmX3R5cGVfaW5fbWFwX3QgKnR5
cGVzOworICAgIAorICAgIGlmICghdHNmX3JlZmxlY3RfdmVyaWZ5KGRhdGEpKSB7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBzaXplPXdyaXRlX2NhbGNfc2l6ZShkYXRh
KTsKKworICAgIGJ1Zj1tYWxsb2Moc2l6ZSk7CisgICAgY3VyPWJ1ZjsKKyAgICAKKyAgICBpZiAo
YnVmPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSBk
YXRhIGZvciBidWZmZXIgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9t
YWtlX2J1ZmZlcigpLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAg
aWYgKHRzZl90eXBlX2lzX2R5bmFtaWMoZGF0YS0+dHlwZSkpIHsKKyAgICAgICAgdHlwZV9tYXA9
dHNmX3R5cGVfb3V0X21hcF9jcmVhdGUoKTsKKyAgICAgICAgaWYgKHR5cGVfbWFwPT1OVUxMKSB7
CisgICAgICAgICAgICBmcmVlKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHR5cGVfbWFwPU5VTEw7CisgICAgfQorICAgIAor
ICAgIGlmICghd3JpdGVfbWFpbnBhc3MoZGF0YSx0eXBlX21hcCwmY3VyKSkgeworICAgICAgICBp
ZiAodHlwZV9tYXAhPU5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX291dF9tYXBfZGVzdHJv
eSh0eXBlX21hcCk7CisgICAgICAgIH0KKyAgICAgICAgZnJlZShidWYpOworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKGN1ciE9YnVmK3NpemUpIHsKKyAgICAgICAg
dHNmX3NldF9lcnJvcihUU0ZfRV9JTlRFUk5BTCwKKyAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9t
YWtlX2J1ZmZlcigpIHdhcyBleHBlY3RlZCB0byB3cml0ZSAiCisgICAgICAgICAgICBmdWkzMiAi
IGJ5dGVzLCBidXQgIiBmc3ogIiBieXRlcyB3ZXJlIHdyaXR0ZW4gaW5zdGVhZC4iLAorICAgICAg
ICAgICAgc2l6ZSxjdXItYnVmKTsKKyAgICAgICAgaWYgKHR5cGVfbWFwIT1OVUxMKSB7CisgICAg
ICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX2Rlc3Ryb3kodHlwZV9tYXApOworICAgICAgICB9Cisg
ICAgICAgIGZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAg
IGlmICh0eXBlX21hcD09TlVMTCkgeworICAgICAgICB0eXBlcz10c2ZfdHlwZV9pbl9tYXBfZ2V0
X2VtcHR5X3NpbmdsZXRvbigpOworICAgIH0gZWxzZSB7CisgICAgICAgIHR5cGVzPXRzZl90eXBl
X2luX21hcF9mcm9tX3R5cGVfb3V0X21hcCh0eXBlX21hcCk7CisgICAgICAgIGlmICh0eXBlcz09
TlVMTCkgeworICAgICAgICAgICAgZnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl9idWZmZXJfY3JlYXRlKGRh
dGEtPnR5cGUsdHlwZXMsYnVmLHNpemUsdHNmX3RydWUpOworfQorCit0c2ZfcmVmbGVjdF90ICpy
ZWFkX21haW5wYXNzKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRzZl90eXBlX2luX21hcF90ICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
ZW5kKSB7CisgICAgdHNmX3JlZmxlY3RfdCAqcmV0ID0gTlVMTDsgICAgLyogbWFrZSBHQ0MgaGFw
cHkgKi8KKyAgICB1aW50OF90IHVpOF90bXA7CisgICAgaW50OF90IGk4X3RtcDsKKyAgICAKKyAg
ICAvKiBtdXN0IHNwZWNpYWwtY2FzZSBzaW5nbGV0b25zISEgKi8KKyAgICBzd2l0Y2ggKHR5cGUt
PmtpbmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RLX0lOVDg6CisgICAgICAgIGNvcHlfbnRvaGNf
aW5jc3JjX2JjKCh1aW50OF90KikmaThfdG1wLCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmQsc2luZ2xldG9uX2JvdW5kc19lcnJvcik7CisgICAgICAgIHJldHVybiBpbnQ4
X2RhdGEgKyBpOF90bXAgKyAxMjg7CisgICAgY2FzZSBUU0ZfVEtfVUlOVDg6CisgICAgICAgIGNv
cHlfbnRvaGNfaW5jc3JjX2JjKCZ1aThfdG1wLCAqYnVmLCBlbmQsIHNpbmdsZXRvbl9ib3VuZHNf
ZXJyb3IpOworICAgICAgICByZXR1cm4gdWludDhfZGF0YSArIHVpOF90bXA7CisgICAgY2FzZSBU
U0ZfVEtfQklUOgorICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdWk4X3RtcCwgKmJ1Ziwg
ZW5kLCBzaW5nbGV0b25fYm91bmRzX2Vycm9yKTsKKyAgICAgICAgaWYgKHVpOF90bXAgIT0gMCkg
eworICAgICAgICAgICAgcmV0dXJuICZiaXRfZGF0YV90cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiAmYml0X2RhdGFfZmFsc2U7CisgICAgY2FzZSBUU0ZfVEtfVk9JRDoKKyAgICAgICAg
cmV0dXJuICZ2b2lkX2RhdGE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIHJldD1tYWxsb2Moc2l6ZW9mKHRzZl9yZWZsZWN0X3QpKTsKKyAgICBpZiAocmV0
PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBhbGxvY2F0ZSB0c2Zf
cmVmbGVjdF90Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQt
PnR5cGU9dHNmX3R5cGVfZHVwKHR5cGUpOworICAgIAorICAgIHN3aXRjaCAodHlwZS0+a2luZF9j
b2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfSU5UODoKKyAgICBjYXNlIFRTRl9US19VSU5UODoKKyAg
ICAgICAgdHNmX2Fib3J0KCJTaG91bGQgaGF2ZSBiZWVuIGhhbmRsZWQgYWJvdmUuIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0lOVDE2OgorICAgIGNhc2UgVFNGX1RLX1VJTlQx
NjoKKyAgICAgICAgY29weV9udG9oc19pbmNzcmNfYmMoKHVpbnQ4X3QqKSZyZXQtPnUucF91aW50
MTZfdCwgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBib3VuZHNfZXJy
b3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19JTlQzMjoKKyAgICBjYXNlIFRT
Rl9US19VSU5UMzI6CisgICAgICAgIGNvcHlfbnRvaGxfaW5jc3JjX2JjKCh1aW50OF90KikmcmV0
LT51LnBfdWludDMyX3QsICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCwg
Ym91bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6Cisg
ICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgICAgICBjb3B5X250b2hsbF9pbmNzcmNfYmMoKHVp
bnQ4X3QqKSZyZXQtPnUucF91aW50NjRfdCwgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0Zf
VEtfSU5URUdFUjoKKyAgICAgICAgcmVhZF90c2ZfaW50ZWdlcl9pbmNzcmMoJnJldC0+dS5wX2lu
dGVnZXIsICpidWYsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUU0ZfVEtfTE9ORzoKKyAgICAgICAgcmVhZF90c2ZfbG9uZ19pbmNzcmMoJnJldC0+dS5wX2xv
bmcsICpidWYsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfRkxPQVQ6CisgICAgICAgIGNvcHlfbnRvaGZfaW5jc3JjX2JjKCh1aW50OF90KikmcmV0
LT51LnBfZmxvYXQsICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCwgYm91
bmRzX2Vycm9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfRE9VQkxFOgorICAg
ICAgICBjb3B5X250b2hkX2luY3NyY19iYygodWludDhfdCopJnJldC0+dS5wX2RvdWJsZSwgKmJ1
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBib3VuZHNfZXJyb3IpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19CSVQ6CisgICAgICAgIHRzZl9hYm9ydCgiU2hv
dWxkIGhhdmUgYmVlbiBoYW5kbGVkIGFib3ZlLiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRTRl9US19BUlJBWTogeworICAgICAgICB1aW50MzJfdCBpOworICAgICAgICB0c2ZfdHlwZV90
ICplbGVfdHlwZSA9IHRzZl9hcnJheV90eXBlX2dldF9lbGVtZW50X3R5cGUodHlwZSk7CisgICAg
ICAgIHVpbnQ4X3QgdG1wOworCisgICAgICAgIGNvcHlfbnRvaGNfaW5jc3JjX2JjKCZ0bXAsICpi
dWYsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAgICAgaWYgKHRtcCA9PSAyNTUpIHsKKyAgICAg
ICAgICAgIGNvcHlfbnRvaGxfaW5jc3JjX2JjKCh1aW50OF90KikmcmV0LT51LmMuc2l6ZSwgKmJ1
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCwgYm91bmRzX2Vycm9yKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldC0+dS5jLnNpemUgPSB0bXA7CisgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgcmV0LT51LmMuYXJyYXkgPSBtYWxsb2Mo
c2l6ZW9mKHRzZl9yZWZsZWN0X3QqKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldC0+dS5jLnNpemUpOworICAgICAgICBpZiAocmV0LT51LmMuYXJyYXkgPT0gTlVMTCkgewor
ICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFsbG9jYXRlIGFycnJheSBvZiBw
b2ludGVycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0c2ZfcmVmbGVjdF9mcm9t
X2J1ZmZlcl9pbXBsKCkiKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBl
KTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIGlmICh0c2ZfdHlwZV9nZXRfa2luZF9j
b2RlKGVsZV90eXBlKSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICB1aW50MzJfdCBpLGos
azsKKyAgICAgICAgICAgIHVpbnQ4X3QgdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZm9yIChpID0gMDsgaSArIDcgPCByZXQtPnUuYy5zaXplOyBpICs9IDgpIHsKKyAg
ICAgICAgICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdmFsdWUsICpidWYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBiaXRzX2JvdW5kc19lcnJvcik7Cisg
ICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDg7ICsraikgeworICAgICAgICAgICAgICAg
ICAgICByZXQtPnUuYy5hcnJheVtpICsgal0gPQorICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X3JlZmxlY3RfY3JlYXRlX2JpdCgodmFsdWUgJiAoMSA8PCBqKSkgIT0gMCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXQtPnUuYy5hcnJheVtpICsgal0gPT0gTlVMTCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGkgKyBqOyArK2spIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95KHJldC0+dS5jLmFycmF5W2tdKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90
eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUocmV0
LT51LmMuYXJyYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmV0LT51LmMu
c2l6ZSA+IGkpIHsKKyAgICAgICAgICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmdmFsdWUs
ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLCBiaXRzX2Jv
dW5kc19lcnJvcik7CisgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHJldC0+dS5jLnNp
emUgLSBpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0LT51LmMuYXJyYXlbaSArIGpd
ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWZsZWN0X2NyZWF0ZV9iaXQoKHZhbHVl
ICYgKDEgPDwgaikpICE9IDApOworICAgICAgICAgICAgICAgICAgICBpZiAocmV0LT51LmMuYXJy
YXlbaSArIGpdID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7
IGsgPCBpICsgajsgKytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxl
Y3RfZGVzdHJveShyZXQtPnUuYy5hcnJheVtrXSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldC0+dHlwZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHJldC0+dS5jLmFycmF5KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBi
aXRzX2JvdW5kc19lcnJvcjoKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyArK2opIHsK
KyAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95KHJldC0+dS5jLmFycmF5W2pdKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyZWUocmV0LT51LmMuYXJyYXkpOworICAgICAg
ICAgICAgZ290byBib3VuZHNfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgZm9yIChpID0gMDsgaSA8IHJldC0+dS5jLnNpemU7ICsraSkgeworICAgICAgICAgICAg
cmV0LT51LmMuYXJyYXlbaV0gPSByZWFkX21haW5wYXNzKGVsZV90eXBlLCB0eXBlcywgYnVmLCBl
bmQpOworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5VTEwpIHsKKyAgICAg
ICAgICAgICAgICB1aW50MzJfdCBqOworICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBp
OyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfZGVzdHJveShyZXQtPnUu
Yy5hcnJheVtqXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZyZWUocmV0
LT51LmMuYXJyYXkpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBl
KTsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgVFNGX1RLX1NUUlVDVDogeworICAgICAgICB1aW50MzJfdCBpOworICAgICAgICB1aW50
OF90IGJpdDsKKyAgICAgICAgdWludDhfdCB2YWx1ZSA9IDA7IC8qIGFzc2lnbm1lbnQgb25seSB0
byBtYWtlIGdjYyBoYXBweSAqLworICAgICAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgICAg
ICAgICAgICAgIAorICAgICAgICByZXQtPnUuYy5zaXplID0gdHNmX3N0cnVjdF90eXBlX2dldF9u
dW1fZWxlbWVudHModHlwZSk7CisgICAgICAgIHJldC0+dS5jLmFycmF5ID0gbWFsbG9jKHNpemVv
Zih0c2ZfcmVmbGVjdF90KikgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2Zf
c3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKSk7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgIGlmIChyZXQtPnUuYy5hcnJheSA9PSBOVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgYXJycmF5IG9mIHBvaW50ZXJzICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgImluIHRzZl9yZWZsZWN0X2Zyb21fYnVmZmVyX2ltcGwoKSIpOwor
ICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUpOworICAgICAgICAgICAgZnJl
ZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2Vs
ZW1lbnRzKHR5cGUpOyArK2kpIHsKKyAgICAgICAgICAgIG4gPSB0c2Zfc3RydWN0X3R5cGVfZ2V0
X2VsZW1lbnQodHlwZSwgaSk7CisgICAgICAgICAgICBpZiAobi0+dHlwZS0+a2luZF9jb2RlID09
IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldC0+dS5jLmFycmF5W2ldID0gcmVhZF9tYWlucGFzcyhuLT50eXBlLCB0
eXBlcywgYnVmLCBlbmQpOworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5V
TEwpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBqOworICAgICAgICAgICAgICAgIGZvciAo
aiA9IDA7IGogPCBpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgbiA9IHRzZl9zdHJ1Y3Rf
dHlwZV9nZXRfZWxlbWVudCh0eXBlLGopOworICAgICAgICAgICAgICAgICAgICBpZiAobi0+dHlw
ZS0+a2luZF9jb2RlID09IFRTRl9US19CSVQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRzZl9y
ZWZsZWN0X2Rlc3Ryb3kocmV0LT51LmMuYXJyYXlbal0pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmcmVlKHJldC0+dS5jLmFycmF5KTsKKyAgICAgICAgICAgICAgICB0c2Zf
dHlwZV9kZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAg
ICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGJpdCA9IDg7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0c2Zfc3RydWN0X3R5cGVfZ2V0
X251bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAgICAgICAgICBuID0gdHNmX3N0cnVjdF90
eXBlX2dldF9lbGVtZW50KHR5cGUsIGkpOworICAgICAgICAgICAgaWYgKG4tPnR5cGUtPmtpbmRf
Y29kZSAhPSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoYml0ID09IDgpIHsKKyAgICAgICAgICAgICAgICBjb3B5
X250b2hjX2luY3NyY19iYygmdmFsdWUsICpidWYsIGVuZCwgYm91bmRzX2Vycm9yKTsKKyAgICAg
ICAgICAgICAgICBiaXQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0LT51LmMu
YXJyYXlbaV0gPQorICAgICAgICAgICAgICAgIHRzZl9yZWZsZWN0X2NyZWF0ZV9iaXQoKHZhbHVl
ICYgKDEgPDwgYml0KSkpOworICAgICAgICAgICAgaWYgKHJldC0+dS5jLmFycmF5W2ldID09IE5V
TEwpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBqOworICAgICAgICAgICAgICAgIGZvciAo
aiA9IDA7IGogPCBpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfZGVz
dHJveShyZXQtPnUuYy5hcnJheVtpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGZyZWUocmV0LT51LmMuYXJyYXkpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ry
b3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2JpdDsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAg
ICAgICBpZiAodHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHlwZSkgPj0gMjU2KSB7
CisgICAgICAgICAgICBpZiAodHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpIHsKKyAgICAg
ICAgICAgICAgICBjb3B5X2h0b25sX2luY3NyY19iYygodWludDhfdCopJnJldC0+dS5oLmNob2lj
ZSwgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQsIGJvdW5k
c19lcnJvcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRzZl91bnNp
Z25lZF90IGNob2ljZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZWFkX3RzZl91bnNpZ25lZF9p
bmNzcmMoJmNob2ljZV92YWx1ZSwgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAgICAgICAgIHJldC0+dS5o
LmNob2ljZSA9IGNob2ljZV92YWx1ZSAtIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB1aW50OF90IGNob2ljZV84Yml0OworICAgICAgICAgICAgY29weV9o
dG9uY19pbmNzcmNfYmMoJmNob2ljZV84Yml0LCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAgICAgcmV0LT51LmguY2hv
aWNlID0KKyAgICAgICAgICAgICAgICBjaG9pY2VfOGJpdCA9PSAyNTUgPyBVSU5UMzJfTUFYIDog
Y2hvaWNlXzhiaXQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldC0+dS5oLmNob2ljZSAhPSBV
SU5UMzJfTUFYKSB7CisgICAgICAgICAgICBpZiAocmV0LT51LmguY2hvaWNlID49IHRzZl9jaG9p
Y2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgdHNmX3Nl
dF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDaG9pY2UgaXMgb3V0IG9mIGJvdW5kcyBvZiB3aGF0IHdlIGtub3c6ICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0aGUgdmFsdWUgd2Ugc2VlIGlzICIgZnVpMzIgIiBidXQgdGhl
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudW1iZXIgb2YgZWxlbWVudHMgaW4g
dGhlIGNob2ljZSB0eXBlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1aTMy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LT51LmguY2hvaWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMo
dHlwZSkpOworICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAg
ICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXQtPnUuaC5kYXRhID0gcmVhZF9tYWlucGFzcygK
KyAgICAgICAgICAgICAgICB0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQodHlwZSwgcmV0LT51
LmguY2hvaWNlKS0+dHlwZSwKKyAgICAgICAgICAgICAgICB0eXBlcywgYnVmLCBlbmQpOworICAg
ICAgICAgICAgaWYgKHJldC0+dS5oLmRhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRz
Zl90eXBlX2Rlc3Ryb3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICByZXQtPnUuaC5kYXRhID0gTlVMTDsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFRTRl9US19WT0lEOgorICAgICAgICB0c2ZfYWJvcnQoIlNob3Vs
ZCBoYXZlIGJlZW4gaGFuZGxlZCBhYm92ZS4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
U0ZfVEtfU1RSSU5HOgorICAgIHsKKyAgICAgICAgY29uc3Qgc2l6ZV90IHN0ZXAgPSAxMjg7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gc3RlcDsKKyAgICAgICAgdWludDMyX3QgaSA9IDA7CisgICAg
ICAgIHJldC0+dS5zdHIgPSBtYWxsb2Moc2l6ZSk7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAg
ICAgICAgIHVpbnQzMl90IG47CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KHJldC0+dS5zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNv
dWxkIG5vdCAobXxyZSlhbGxvYyBzdHJpbmciKTsKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV9k
ZXN0cm95KHJldC0+dHlwZSk7CisgICAgICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZvciAobiA9IHN0ZXA7IG4tLT4wOykgeworICAgICAgICAgICAgICAgIHVp
bnQ4X3QgYzsKKyAgICAgICAgICAgICAgICBjb3B5X250b2hjX2luY3NyY19iYygmYywgKmJ1Ziwg
ZW5kLCBib3VuZHNfZXJyb3IpOworICAgICAgICAgICAgICAgIHJldC0+dS5zdHJbaSsrXSA9IGM7
CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmV0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBzaXplICs9IHN0ZXA7CisgICAgICAgICAgICByZXQtPnUuc3Ry
ID0gcmVhbGxvYyhyZXQtPnUuc3RyLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICB0c2ZfYXNz
ZXJ0KCEidW5yZWFjaGFibGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVFNG
X1RLX0FOWTogeworICAgICAgICByZXQtPnUuYW55ID0gdHNmX2J1ZmZlcl9yZWFkX2Zyb21fYnVm
KHR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAg
ICAgIGlmIChyZXQtPnUuYW55ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ry
b3kocmV0LT50eXBlKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVEVSTkFMLAorICAgICAgICAgICAgICAgICAg
ICAgIGZ1aTMyICIgaXMgbm90IGEgcmVjb2duaXplZCBraW5kIGNvZGUuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICB0eXBlLT5raW5kX2NvZGUpOworICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJl
dC0+dHlwZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
fQorICAgIAorICAgIGluY3JlbWVudF9yZWZsZWN0X2JhbGFuY2UoKTsKKyAgICAKKyAgICByZXR1
cm4gcmV0OworCitib3VuZHNfZXJyb3I6CisgICAgdHNmX3R5cGVfZGVzdHJveShyZXQtPnR5cGUp
OworICAgIGZyZWUocmV0KTsKK3NpbmdsZXRvbl9ib3VuZHNfZXJyb3I6CisgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICJCb3VuZHMgZXJyb3Ig
aW4gcmVmbGVjdGluZyBwYXJzZXIiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwordHNmX3JlZmxl
Y3RfdCAqdHNmX3JlZmxlY3RfZnJvbV9idWZmZXIodHNmX2J1ZmZlcl90ICpidWYpIHsKKyAgICB1
aW50OF90ICpkYXRhOworICAgIHRzZl9yZWZsZWN0X3QgKnJldDsKKworICAgIGNoZWNrX2luaXRf
cmVmbGVjdCgpOworCisgICAgZGF0YT1idWYtPmRhdGE7CisgICAgCisgICAgcmV0PXJlYWRfbWFp
bnBhc3MoYnVmLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgIGJ1Zi0+dHlwZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90
KilidWYtPmRhdGEpK2J1Zi0+c2l6ZSk7CisgICAgaWYgKHJldD09TlVMTCkgeworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYgKGRhdGEhPSgodWludDhfdCopYnVmLT5k
YXRhKStidWYtPnNpemUpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJP
UiwKKyAgICAgICAgICAgICJ0c2ZfcmVmbGVjdF9mcm9tX2J1ZmZlcl9pbXBsKCkgd2FzIGV4cGVj
dGVkIHRvIHJlYWQgIgorICAgICAgICAgICAgZnVpMzIgIiBieXRlcywgYnV0ICIgZnN6ICIgYnl0
ZXMgd2VyZSByZWFkIGluc3RlYWQuIiwKKyAgICAgICAgICAgIGJ1Zi0+c2l6ZSwoKHVpbnQ4X3Qq
KWRhdGEpLSgodWludDhfdCopYnVmLT5kYXRhKSk7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ry
b3kocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldHVybiBy
ZXQ7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9yZWZsZWN0X2dldF90eXBlKHRzZl9yZWZsZWN0X3Qg
KmRhdGEpIHsKKyAgICByZXR1cm4gZGF0YS0+dHlwZTsKK30KKwordHNmX3R5cGVfa2luZF90IHRz
Zl9yZWZsZWN0X2dldF9raW5kX2NvZGUodHNmX3JlZmxlY3RfdCAqZGF0YSkgeworICAgIHJldHVy
biB0c2ZfdHlwZV9nZXRfa2luZF9jb2RlKHRzZl9yZWZsZWN0X2dldF90eXBlKGRhdGEpKTsKK30K
Kworc3RhdGljIHRzZl9ib29sX3Qgc3RydWN0X3NldF9lbGVtZW50X2ltcGwodHNmX25hbWVkX3R5
cGVfdCAqbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9y
ZWZsZWN0X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfcmVmbGVjdF90ICplbGVfZGF0YSkgeworICAgIHVpbnQzMl90IGluZGV4OworCisgICAg
aWYgKCF0c2ZfdHlwZV9jb21wYXJlKG4tPnR5cGUsZWxlX2RhdGEtPnR5cGUpKSB7CisgICAgICAg
IHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAgICAgICAiVGhpcmQgYXJndW1l
bnQgdG8gdHNmX3N0cnVjdF9zZXRfZWxlbWVudCgpIGRvZXMgIgorICAgICAgICAgICAgIm5vdCBo
YXZlIHRoZSByaWdodCB0eXBlLiIpOworICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95KGVsZV9k
YXRhKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaW5kZXg9
dHNmX25hbWVkX3R5cGVfZ2V0X2luZGV4KG4pOworICAgIAorICAgIGlmIChkYXRhLT51LmMuYXJy
YXlbaW5kZXhdIT1OVUxMKSB7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZGF0YS0+dS5j
LmFycmF5W2luZGV4XSk7CisgICAgfQorICAgIGRhdGEtPnUuYy5hcnJheVtpbmRleF09ZWxlX2Rh
dGE7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJ1Y3RfcmVm
bGVjdF9zZXRfZWxlbWVudCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9yZWZsZWN0X3QgKmVsZV9kYXRhKSB7Cisg
ICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICBpZiAoZWxlX2RhdGE9PU5VTEwpIHsK
KyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKGRhdGEtPnR5
cGUtPmtpbmRfY29kZSE9VFNGX1RLX1NUUlVDVCkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRT
Rl9FX0JBRF9UWVBFLAorICAgICAgICAgICAgIkZpcnN0IGFyZ3VtZW50IHRvIHRzZl9zdHJ1Y3Rf
cmVmbGVjdF9zZXRfZWxlbWVudCgpIGlzICIKKyAgICAgICAgICAgICJub3QgYSBzdHJ1Y3QuIik7
CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZWxlX2RhdGEpOworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBuPXRzZl9zdHJ1Y3RfdHlwZV9maW5kX25vZGUo
ZGF0YS0+dHlwZSxuYW1lKTsKKyAgICBpZiAobj09TlVMTCkgeworICAgICAgICB0c2ZfcmVmbGVj
dF9kZXN0cm95KGVsZV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gc3RydWN0X3NldF9lbGVtZW50X2ltcGwobixkYXRhLGVsZV9kYXRhKTsKK30K
KwordHNmX2Jvb2xfdCB0c2Zfc3RydWN0X3JlZmxlY3Rfc2V0X2VsZW1lbnRfYnlfaW5kZXgodHNm
X3JlZmxlY3RfdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlX2RhdGEpIHsKKyAgICBp
ZiAoZWxlX2RhdGE9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlIT1UU0ZfVEtfU1RSVUNUKSB7CisgICAgICAg
IHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAgICAgICAgICAgICAgICAgIkZp
cnN0IGFyZ3VtZW50IHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3N0cnVjdF9yZWZs
ZWN0X3NldF9lbGVtZW50X2J5X2luZGV4KCkgaXMgbm90IGEgIgorICAgICAgICAgICAgICAgICAg
ICAgICJzdHJ1Y3QuIik7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZWxlX2RhdGEpOwor
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoaW5kZXg+PXRz
Zl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRhdGEtPnR5cGUpKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfSU5WQUxJRF9BUkcsCisgICAgICAgICAgICAgICAgICAgICAgIklu
ZGV4ICIgZnVpMzIgIiBpcyBvdXQgb2YgYm91bmRzIG9mIHZhbGlkIGVsZW1lbnQgIgorICAgICAg
ICAgICAgICAgICAgICAgICJpbmRpY2VzICh1cHBlciBib3VuZCBpcyAiIGZ1aTMyICIpIGluICIK
KyAgICAgICAgICAgICAgICAgICAgICAidHNmX3N0cnVjdF9yZWZsZWN0X3NldF9lbGVtZW50X2J5
X2luZGV4KCkiLAorICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgIHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKGRhdGEtPnR5cGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RydWN0X3NldF9l
bGVtZW50X2ltcGwodHNmX3N0cnVjdF90eXBlX2dldF9lbGVtZW50KGRhdGEtPnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZV9kYXRhKTsKK30KKwordHNmX3JlZmxl
Y3RfdCAqdHNmX3N0cnVjdF9yZWZsZWN0X2dldF9lbGVtZW50KHRzZl9yZWZsZWN0X3QgKmRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqbmFtZSkgeworICAgIHRzZl9uYW1lZF90eXBlX3QgKm47CisKKyAgICBpZiAoZGF0YS0+dHlw
ZS0+a2luZF9jb2RlIT1UU0ZfVEtfU1RSVUNUKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNG
X0VfQkFEX1RZUEUsCisgICAgICAgICAgICAiRmlyc3QgYXJndW1lbnQgdG8gdHNmX3N0cnVjdF9y
ZWZsZWN0X2dldF9lbGVtZW50KCkgaXMgIgorICAgICAgICAgICAgIm5vdCBhIHN0cnVjdC4iKTsK
KyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbj10c2Zfc3RydWN0
X3R5cGVfZmluZF9ub2RlKGRhdGEtPnR5cGUsbmFtZSk7CisgICAgaWYgKG49PU5VTEwpIHsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldHVybiBkYXRhLT51LmMuYXJy
YXlbdHNmX25hbWVkX3R5cGVfZ2V0X2luZGV4KG4pXTsKK30KKwordHNmX3JlZmxlY3RfdCAqdHNm
X3N0cnVjdF9yZWZsZWN0X2dldF9lbGVtZW50X2J5X2luZGV4KHRzZl9yZWZsZWN0X3QgKmRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgaW5kZXgpIHsKKyAgICBpZiAoZGF0YS0+dHlwZS0+a2luZF9jb2RlIT1UU0ZfVEtf
U1RSVUNUKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAg
ICAgICAiRmlyc3QgYXJndW1lbnQgdG8gdHNmX3N0cnVjdF9yZWZsZWN0X2dldF9lbGVtZW50KCkg
aXMgIgorICAgICAgICAgICAgIm5vdCBhIHN0cnVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKGluZGV4Pj10c2Zfc3RydWN0X3R5cGVfZ2V0X251
bV9lbGVtZW50cyhkYXRhLT50eXBlKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lO
VkFMSURfQVJHLAorICAgICAgICAgICAgICAgICAgICAgICJJbmRleCAiIGZ1aTMyICIgaXMgb3V0
IG9mIGJvdW5kcyBvZiB2YWxpZCBlbGVtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAiaW5k
aWNlcyAodXBwZXIgYm91bmQgaXMgIiBmdWkzMiAiKSBpbiAiCisgICAgICAgICAgICAgICAgICAg
ICAgInRzZl9zdHJ1Y3RfcmVmbGVjdF9nZXRfZWxlbWVudF9ieV9pbmRleCgpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICB0c2Zfc3RydWN0X3R5
cGVfZ2V0X251bV9lbGVtZW50cyhkYXRhLT50eXBlKSk7CisgICAgICAgIHJldHVybiB0c2ZfZmFs
c2U7CisgICAgfQorICAgIAorICAgIHJldHVybiBkYXRhLT51LmMuYXJyYXlbaW5kZXhdOworfQor
Cit1aW50MzJfdCB0c2Zfc3RydWN0X2VmbGVjdF9nZXRfbnVtX2VsZW1lbnRzKHRzZl9yZWZsZWN0
X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX3N0cnVjdF90eXBlX2dldF9udW1fZWxlbWVudHMo
dHNmX3JlZmxlY3RfZ2V0X3R5cGUoZGF0YSkpOworfQorCit0c2ZfYm9vbF90IHRzZl9hcnJheV9y
ZWZsZWN0X2FwcGVuZCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxlX2RhdGEpIHsKKyAgICBpZiAoZWxlX2Rh
dGE9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
aWYgKGRhdGEtPnR5cGUtPmtpbmRfY29kZSE9VFNGX1RLX0FSUkFZKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfQkFEX1RZUEUsCisgICAgICAgICAgICAiRmlyc3QgYXJndW1lbnQgdG8g
dHNmX2FycmF5X3JlZmxlY3RfYXBwZW5kKCkgaXMgIgorICAgICAgICAgICAgIm5vdCBhbiBhcnJh
eS4iKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKCF0
c2ZfdHlwZV9jb21wYXJlKGVsZV9kYXRhLT50eXBlLAorICAgICAgICAgICAgdHNmX2FycmF5X3R5
cGVfZ2V0X2VsZW1lbnRfdHlwZShkYXRhLT50eXBlKSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJv
cihUU0ZfRV9CQURfVFlQRSwKKyAgICAgICAgICAgICJTZWNvbmQgYXJndW1lbnQgdG8gdHNmX2Fy
cmF5X3JlZmxlY3RfYXBwZW5kKCkgZG9lcyAiCisgICAgICAgICAgICAibWF0Y2ggdGhlIGVsZW1l
bnQgdHlwZSBvZiB0aGUgYXJyYXkuIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
fQorICAgIAorICAgIGlmIChkYXRhLT51LmMuYXJyYXk9PU5VTEwpIHsKKyAgICAgICAgZGF0YS0+
dS5jLmFycmF5PW1hbGxvYyhzaXplb2YodHNmX3JlZmxlY3RfdCopKTsKKyAgICAgICAgaWYgKGRh
dGEtPnUuYy5hcnJheT09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IGFsbG9jYXRlIGFycmF5IG9mIHRzZl9yZWZsZWN0X3QqIik7CisgICAgICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHNmX3JlZmxl
Y3RfdCAqKm5ld19hcnJheT1yZWFsbG9jKGRhdGEtPnUuYy5hcnJheSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0c2ZfcmVmbGVjdF90KikqCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YS0+dS5jLnNpemUrMSkp
OworICAgICAgICBpZiAobmV3X2FycmF5PT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vy
cm5vKCJDb3VsZCBub3QgYWxsb2NhdGUgYXJyYXkgb2YgdHNmX3JlZmxlY3RfdCoiKTsKKyAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS0+dS5jLmFy
cmF5PW5ld19hcnJheTsKKyAgICB9CisgICAgCisgICAgZGF0YS0+dS5jLmFycmF5W2RhdGEtPnUu
Yy5zaXplKytdPWVsZV9kYXRhOworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworc3Rh
dGljIHRzZl9ib29sX3QgY2hvaWNlX3NldF9pbXBsKHRzZl9uYW1lZF90eXBlX3QgKm4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfcmVmbGVjdF90ICplbGVfZGF0YSkgewor
ICAgIGlmICghdHNmX3R5cGVfY29tcGFyZShuLT50eXBlLGVsZV9kYXRhLT50eXBlKSkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0JBRF9UWVBFLAorICAgICAgICAgICAgIlRoaXJkIGFy
Z3VtZW50IHRvIHRzZl9jaG9pY2VfcmVmbGVjdF9zZXQoKSBkb2VzICIKKyAgICAgICAgICAgICJu
b3QgaGF2ZSB0aGUgY29ycmVjdCB0eXBlLiIpOworICAgICAgICB0c2ZfcmVmbGVjdF9kZXN0cm95
KGVsZV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
ZGF0YS0+dS5oLmRhdGEhPU5VTEwpIHsKKyAgICAgICAgdHNmX3JlZmxlY3RfZGVzdHJveShkYXRh
LT51LmguZGF0YSk7CisgICAgfQorICAgIAorICAgIGRhdGEtPnUuaC5jaG9pY2U9bi0+aW5kZXg7
CisgICAgZGF0YS0+dS5oLmRhdGE9ZWxlX2RhdGE7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVl
OworfQorCit0c2ZfYm9vbF90IHRzZl9jaG9pY2VfcmVmbGVjdF9zZXQodHNmX3JlZmxlY3RfdCAq
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaG9p
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3JlZmxlY3RfdCAqZWxl
X2RhdGEpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgIAorICAgIGlmIChjaG9pY2U9
PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9jaG9pY2VfcmVmbGVjdF9zZXRfdW5rbm93bihk
YXRhKTsKKyAgICB9CisKKyAgICBpZiAoZWxlX2RhdGE9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJu
IHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgbj10c2ZfY2hvaWNlX3R5cGVfZmluZF9ub2Rl
KGRhdGEtPnR5cGUsY2hvaWNlKTsKKyAgICBpZiAobj09TlVMTCkgeworICAgICAgICB0c2ZfcmVm
bGVjdF9kZXN0cm95KGVsZV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIGNob2ljZV9zZXRfaW1wbChuLGRhdGEsZWxlX2RhdGEpOworfQor
Cit0c2ZfYm9vbF90IHRzZl9jaG9pY2VfcmVmbGVjdF9zZXRfYnlfaW5kZXgodHNmX3JlZmxlY3Rf
dCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfcmVmbGVjdF90ICplbGVfZGF0YSkgeworICAgIGlmIChpbmRleD09VUlOVDMyX01BWCkgewor
ICAgICAgICByZXR1cm4gdHNmX2Nob2ljZV9yZWZsZWN0X3NldF91bmtub3duKGRhdGEpOworICAg
IH0KKworICAgIGlmIChlbGVfZGF0YT09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgIH0KKworICAgIGlmIChpbmRleD49dHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVu
dHMoZGF0YS0+dHlwZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9JTlZBTElEX0FS
RywKKyAgICAgICAgICAgICAgICAgICAgICAiSW5kZXggIiBmdWkzMiAiIGlzIG91dCBvZiBib3Vu
ZHMgb2YgdmFsaWQgZWxlbWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgImluZGljZXMgKHVw
cGVyIGJvdW5kIGlzICIgZnVpMzIgIikgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICJ0c2Zf
Y2hvaWNlX3JlZmxlY3Rfc2V0X2J5X2luZGV4KCkiLAorICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgIHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1l
bnRzKGRhdGEtPnR5cGUpKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIGNob2ljZV9zZXRfaW1wbCh0c2ZfY2hvaWNlX3R5cGVfZ2V0X2VsZW1lbnQo
ZGF0YS0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlX2RhdGEpOworfQorCit0c2ZfYm9vbF90IHRzZl9j
aG9pY2VfcmVmbGVjdF9zZXRfdW5rbm93bih0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgaWYg
KGRhdGEtPnUuaC5kYXRhIT1OVUxMKSB7CisgICAgICAgIHRzZl9yZWZsZWN0X2Rlc3Ryb3koZGF0
YS0+dS5oLmRhdGEpOworICAgIH0KKyAgICAKKyAgICBkYXRhLT51LmguY2hvaWNlPVVJTlQzMl9N
QVg7CisgICAgZGF0YS0+dS5oLmRhdGE9TlVMTDsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7
Cit9CisKK3VpbnQzMl90IHRzZl9jaG9pY2VfcmVmbGVjdF9nZXRfaW5kZXgodHNmX3JlZmxlY3Rf
dCAqZGF0YSkgeworICAgIHJldHVybiBkYXRhLT51LmguY2hvaWNlOworfQorCit0c2ZfYm9vbF90
IHRzZl9jaG9pY2VfcmVmbGVjdF9pc19rbm93bih0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAg
cmV0dXJuIHRzZl9jaG9pY2VfcmVmbGVjdF9nZXRfaW5kZXgoZGF0YSkgIT0gVFNGX1VJTlQzMl9N
QVg7Cit9CisKK2NvbnN0IGNoYXIgKnRzZl9jaG9pY2VfcmVmbGVjdF9nZXRfY2hvaWNlKHRzZl9y
ZWZsZWN0X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gdHNmX2Nob2ljZV9yZWZsZWN0X2lzX2tub3du
KGRhdGEpID8KKyAgICAgICAgdHNmX2Nob2ljZV90eXBlX2dldF9lbGVtZW50KGRhdGEtPnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT51LmguY2hvaWNlKS0+
bmFtZSA6CisgICAgICAgIE5VTEw7Cit9CisKK3RzZl9yZWZsZWN0X3QgKnRzZl9jaG9pY2VfcmVm
bGVjdF9nZXRfZGF0YSh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGEtPnUu
aC5kYXRhOworfQorCit0c2ZfcmVmbGVjdF90ICp0c2ZfYXJyYXlfcmVmbGVjdF9nZXRfZWxlbWVu
dCh0c2ZfcmVmbGVjdF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgaW5kZXgpIHsKKyAgICByZXR1cm4gZGF0YS0+dS5jLmFycmF5
W2luZGV4XTsKK30KKwordWludDMyX3QgdHNmX2FycmF5X3JlZmxlY3RfZ2V0X251bV9lbGVtZW50
cyh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGEtPnUuYy5zaXplOworfQor
Cit0c2ZfYm9vbF90IHRzZl9iaXRfcmVmbGVjdF9nZXQodHNmX3JlZmxlY3RfdCAqZGF0YSkgewor
ICAgIHJldHVybiBkYXRhLT51LmJpdDsKK30KKworY29uc3QgY2hhciogdHNmX3N0cmluZ19yZWZs
ZWN0X2dldCh0c2ZfcmVmbGVjdF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGEtPnUuc3RyOwor
fQorCit0c2ZfYnVmZmVyX3QgKnRzZl9hbnlfcmVmbGVjdF9nZXRfYnVmZmVyKHRzZl9yZWZsZWN0
X3QgKmRhdGEpIHsKKyAgICByZXR1cm4gZGF0YS0+dS5hbnk7Cit9CisKKwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9yZWdpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3JlZ2lvbi5oCShub25l
eGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfcmVn
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJ
UCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8q
CisgKiBSZWdpb24gbWVtb3J5IG1hbmFnZW1lbnQgQVBJIHNwZWNpZmljYWxseSBmb3IgY29tcGxl
eCBvYmplY3RzIHRoYXQgY29uc2lzdCBvZiBsb3RzIG9mCisgKiBzbWFsbCBjaHVua3Mgb2YgbWVt
b3J5LiBUaGlzIGNvZGUgd2lsbCBjb21waWxlIGFzIGJvdGggQyBhbmQgQysrLgorICovCisKKyNp
Zm5kZWYgRlBfVFNGX1JFR0lPTl9ICisjZGVmaW5lIEZQX1RTRl9SRUdJT05fSAorCisjaW5jbHVk
ZSAidHNmX2NvbmZpZy5oIgorI2luY2x1ZGUgInRzZl90eXBlcy5oIgorCisjaW5jbHVkZSA8c3Ry
aW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKy8qIHByaXZhdGUgc3R1ZmYgKi8KKyNkZWZp
bmUgVFNGX0FMSUdOKHNpemUpIFwKKyAgICAoKHNpemUgKyBUU0ZfTkFUSVZFX0FMSUdOTUVOVCAt
IDEpICYgKH4oVFNGX05BVElWRV9BTElHTk1FTlQgLSAxKSkpCisKKy8qIHRoZSBmb2xsb3dpbmcg
aW52YXJpYW50IG11c3QgaG9sZDogVFNGX1JFR0lPTl9TSVpFX0JJVFMgPCAxNiAqLworI2RlZmlu
ZSBUU0ZfUkVHSU9OX1NJWkVfQklUUyAxMAorI2RlZmluZSBUU0ZfUkVHSU9OX1NJWkVfVU5JVCAo
MSA8PCBUU0ZfUkVHSU9OX1NJWkVfQklUUykKKworLyogb25seSBwYXNzIGFuIGFsaWduZWQgc2l6
ZSAqLworI2RlZmluZSBUU0ZfU0laRV9GT1JfUkVHSU9OKHNpemVfbmVlZGVkKSBcCisgICAgKChz
aXplX25lZWRlZCArIFRTRl9SRUdJT05fU0laRV9VTklUIC0gMSkgJiB+KFRTRl9SRUdJT05fU0la
RV9VTklUIC0gMSkpCisjZGVmaW5lIFRTRl9JTklUSUFMX1NJWkVfRk9SX1JFR0lPTihzaXplX25l
ZWRlZCkgXAorICAgIFRTRl9TSVpFX0ZPUl9SRUdJT04oc2l6ZV9uZWVkZWQpCisKK3N0cnVjdCB0
c2ZfcmVnaW9uOworc3RydWN0IHRzZl9yZWdpb25fY2JhY2tfbm9kZTsKK3R5cGVkZWYgc3RydWN0
IHRzZl9yZWdpb24gdHNmX3JlZ2lvbl90OwordHlwZWRlZiBzdHJ1Y3QgdHNmX3JlZ2lvbl9jYmFj
a19ub2RlIHRzZl9yZWdpb25fY2JhY2tfbm9kZV90OworCit0eXBlZGVmIHZvaWQgKCp0c2ZfcmVn
aW9uX2NiYWNrX3QpKHZvaWQgKmFyZyk7CisKK3N0cnVjdCB0c2ZfcmVnaW9uX2NiYWNrX25vZGUg
eworICAgIHRzZl9yZWdpb25fY2JhY2tfdCBjYmFjazsKKyAgICB2b2lkICphcmc7CisgICAgdHNm
X3JlZ2lvbl9jYmFja19ub2RlX3QgKm5leHQ7Cit9OworCitzdHJ1Y3QgdHNmX3JlZ2lvbiB7Cisg
ICAgdHNmX3JlZ2lvbl90ICpuZXh0OworICAgIHVpbnQ4X3QgKmFsbG9jOworICAgIHNpemVfdCBz
aXplOworCisgICAgdHNmX3JlZ2lvbl9jYmFja19ub2RlX3QgKmNiYWNrX2hlYWQ7CisKKyAgICAv
KiB3YW5uYSBtYWtlIHRoaXMgc3RydWN0dXJlIG5hdGl2ZSBhbGlnbmVkLiAqLworI2lmICgoKE5B
VElWRV9BTElHTk1FTlQgLSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIChTSVpFT0Zf
Vk9JRF9QICogMyArIFNJWkVPRl9TSVpFX1QpKSAmICAgXAorICAgICAgKE5BVElWRV9BTElHTk1F
TlQgLSAxKSkgIT0gMCkKKyAgICBjaGFyIHBhZGRpbmdbKFRTRl9OQVRJVkVfQUxJR05NRU5UIC0K
KyAgICAgICAgICAgICAgICAgIChUU0ZfU0laRU9GX1ZPSURfUCAqIDMgKyBUU0ZfU0laRU9GX1NJ
WkVfVCkpCisgICAgICAgICAgICAgICAgICYgKFRTRl9OQVRJVkVfQUxJR05NRU5UIC0gMSldOwor
I2VuZGlmCit9OworCitzdGF0aWMgVFNGX2lubGluZSB2b2lkICp0c2ZfcmVnaW9uX2NyZWF0ZShz
aXplX3Qgc2l6ZSkgeworICAgIHNpemVfdCByZWdpb25fc2l6ZTsKKyAgICB0c2ZfcmVnaW9uX3Qg
KnJlZ2lvbjsKKyAgICAKKyAgICBzaXplID0gVFNGX0FMSUdOKHNpemUpOworICAgIHJlZ2lvbl9z
aXplID0gVFNGX0lOSVRJQUxfU0laRV9GT1JfUkVHSU9OKHNpemUpOworICAgIAorICAgIC8qIHN0
YXJ0IGEgbmV3IHJlZ2lvbiBhbmQgYWxsb2NhdGUgdGhlIHJvb3Qgb2JqZWN0ICovCisgICAgCisg
ICAgcmVnaW9uID0gKHRzZl9yZWdpb25fdCopCisgICAgICAgIG1hbGxvYyhzaXplb2YodHNmX3Jl
Z2lvbl90KSArIHJlZ2lvbl9zaXplKTsKKyAgICBpZiAocmVnaW9uID09IE5VTEwpIHsKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJlZ2lvbi0+bmV4dCA9IHJlZ2lvbjsK
KyAgICByZWdpb24tPmFsbG9jID0gKCh1aW50OF90KikocmVnaW9uICsgMSkpICsgc2l6ZTsKKyAg
ICByZWdpb24tPnNpemUgPSByZWdpb25fc2l6ZTsKKyAgICByZWdpb24tPmNiYWNrX2hlYWQgPSBO
VUxMOworICAgIAorICAgIHJldHVybiByZWdpb24gKyAxOworfQorCitzdGF0aWMgVFNGX2lubGlu
ZSB2b2lkICp0c2ZfcmVnaW9uX2FsbG9jKHZvaWQgKnJvb3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7CisgICAgdHNmX3JlZ2lvbl90ICpy
ZWdpb247CisgICAgdHNmX3JlZ2lvbl90ICpuZXh0OworICAgIHZvaWQgKnJlc3VsdDsKKworICAg
IHNpemUgPSBUU0ZfQUxJR04oc2l6ZSk7CisgICAgCisgICAgcmVnaW9uID0gKCh0c2ZfcmVnaW9u
X3QqKXJvb3QpIC0gMTsKKyAgICBuZXh0ID0gcmVnaW9uLT5uZXh0OworICAgIAorICAgIC8qIGFs
bG9jYXRlIG5ldyBvYmplY3QgKi8KKyAgICAKKyAgICAvKiB3ZSBkbyB0aGUgY29tcGFyaXNvbiB0
aGlzIHdheSB0byBhdm9pZCBvdmVyZmxvdyEgKi8KKyAgICBpZiAobmV4dC0+YWxsb2MgLSAoKHVp
bnQ4X3QqKW5leHQpIC0gc2l6ZW9mKHRzZl9yZWdpb25fdCkgKyBzaXplID4gbmV4dC0+c2l6ZSkg
eworICAgICAgICAvKiBhbGxvYyBuZXcgY2h1bmsgKi8KKyAgICAgICAgCisgICAgICAgIHRzZl9y
ZWdpb25fdCAqbmV3X2NodW5rID0gKHRzZl9yZWdpb25fdCopCisgICAgICAgICAgICBtYWxsb2Mo
c2l6ZW9mKHRzZl9yZWdpb25fdCkgKyBUU0ZfU0laRV9GT1JfUkVHSU9OKHNpemUpKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChuZXdfY2h1bmsgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5ld19jaHVuay0+bmV4dCA9IG5l
eHQ7CisgICAgICAgIG5ld19jaHVuay0+YWxsb2MgPSAodWludDhfdCopKG5ld19jaHVuayArIDEp
OworICAgICAgICBuZXdfY2h1bmstPnNpemUgPSBUU0ZfU0laRV9GT1JfUkVHSU9OKHNpemUpOwor
ICAgICAgICBuZXh0PXJlZ2lvbi0+bmV4dCA9IG5ld19jaHVuazsKKyAgICB9CisgICAgCisgICAg
cmVzdWx0ID0gbmV4dC0+YWxsb2M7CisgICAgbmV4dC0+YWxsb2MgKz0gc2l6ZTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGF0aWMgVFNGX2lubGluZSBjaGFyICp0c2ZfcmVnaW9uX3N0cmR1
cCh2b2lkICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqc3RyKSB7CisgICAgc2l6ZV90IHNpemU7CisgICAgY2hhciAqcmVzdWx0Owor
ICAgIAorICAgIHNpemUgPSBzdHJsZW4oc3RyKSArIDE7CisgICAgcmVzdWx0ID0gKGNoYXIqKXRz
Zl9yZWdpb25fYWxsb2Mocm9vdCwgc2l6ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Cisg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBtZW1jcHkocmVzdWx0LCBzdHIs
IHNpemUpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBUU0ZfaW5saW5l
IHZvaWQgKnRzZl9yZWdpb25fcmVhbGxvYyh2b2lkICpyb290LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkgeworICAgIHRzZl9yZWdpb25fdCAq
cmVnaW9uOworICAgIHRzZl9yZWdpb25fdCAqbmV4dDsKKworICAgIHNpemUgPSBUU0ZfQUxJR04o
c2l6ZSk7CisgICAgCisgICAgcmVnaW9uID0gKCh0c2ZfcmVnaW9uX3QqKXJvb3QpIC0gMTsKKyAg
ICBuZXh0ID0gcmVnaW9uLT5uZXh0OworICAgIAorICAgIC8qIHJlc2l6ZSBhbiBleGlzdGluZyBv
YmplY3QgKi8KKyAgICAKKyAgICAvKiB3ZSBkbyB0aGUgY29tcGFyaXNvbiB0aGlzIHdheSB0byBh
dm9pZCBvdmVyZmxvdyEgKi8KKyAgICBpZiAoKCh1aW50OF90KilvYmopIC0gKCh1aW50OF90Kilu
ZXh0KSAtIHNpemVvZih0c2ZfcmVnaW9uX3QpICsgc2l6ZSA+CisgICAgICAgIG5leHQtPnNpemUp
IHsKKyAgICAgICAgCisgICAgICAgIC8qIGNoZWNrIGlmIHRoaXMgaXMgdGhlIG9ubHkgb2JqZWN0
IGluIHRoZSBjaHVuay4gKi8KKyAgICAgICAgaWYgKG5leHQgKyAxID09IG9iaikgeworICAgICAg
ICAgICAgLyogaWYgc28sIHNpbXBseSByZWFsbG9jIHRoZSBjaHVuay4gIHdlIGRvIHRoaXMgdG8g
cHJldmVudAorICAgICAgICAgICAgICogTyhuXjIpIG1lbW9yeSB1c2FnZSBpbiB0aGUgY2FzZSBv
ZiByZXBlYXRlZCByZWFsbG9jcy4gKi8KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV4dCA9
ICh0c2ZfcmVnaW9uX3QqKQorICAgICAgICAgICAgICAgIHJlYWxsb2MobmV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVvZih0c2ZfcmVnaW9uX3QpICsgVFNGX1NJWkVfRk9SX1JFR0lP
TihzaXplKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChuZXh0ID09IE5VTEwpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8qIGFsbG9jIG5ldyBjaHVuayAqLworICAgICAgICAgICAgCisg
ICAgICAgICAgICB0c2ZfcmVnaW9uX3QgKm5ld19jaHVuayA9ICh0c2ZfcmVnaW9uX3QqKQorICAg
ICAgICAgICAgICAgIG1hbGxvYyhzaXplb2YodHNmX3JlZ2lvbl90KSArIFRTRl9TSVpFX0ZPUl9S
RUdJT04oc2l6ZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobmV3X2NodW5rID09
IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgbmV3X2NodW5rLT5uZXh0ID0gbmV4dDsKKyAgICAgICAg
ICAgIG5ld19jaHVuay0+c2l6ZSA9IFRTRl9TSVpFX0ZPUl9SRUdJT04oc2l6ZSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIG1lbWNweShuZXdfY2h1bmsgKyAxLCBvYmosIG5leHQtPmFsbG9j
IC0gKCh1aW50OF90KilvYmopKTsKKyAgICAgICAgCisgICAgICAgICAgICBuZXh0ID0gbmV3X2No
dW5rOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZWdpb24tPm5leHQgPSBuZXh0Owor
ICAgICAgICBvYmogPSBuZXh0ICsgMTsKKyAgICB9CisgICAgCisgICAgbmV4dC0+YWxsb2MgPSAo
KHVpbnQ4X3QqKW9iaikgKyBzaXplOworICAgIHJldHVybiBvYmo7Cit9CisKKy8qIGFsbG9jYXRl
IGVpdGhlciBpbiBhIHJlZ2lvbiBvciB1c2luZyBzdHJhaWdodCBtYWxsb2MuICB3aWxsIHVzZQor
ICogbWFsbG9jIGlmIHJlZ2lvbiBpcyBOVUxMLCBvdGhlcndpc2Ugd2lsbCBjYWxsIHRzZl9yZWdp
b25fYWxsb2MuKCkKKyAqIHRoaXMgY2Fubm90IGNyZWF0ZSBhIG5ldyByZWdpb24uICB0aGlzIGlz
IHVzZWZ1bCBhcyBhIGNvbnZlbmllbmNlCisgKiBmdW5jdGlvbiBmb3IgaW1wbGVtZW50aW5nIGRh
dGEgc3RydWN0dXJlcyB0aGF0IG5lZWQgdG8gYmUgdXNlZCBib3RoCisgKiBpbiBhIHJlZ2lvbiBh
bmQgd2l0aCBtYWxsb2MgJiBmcmVlLiAqLworc3RhdGljIFRTRl9pbmxpbmUgdm9pZCAqdHNmX2Nv
bmRfYWxsb2Modm9pZCAqcm9vdCwgc2l6ZV90IHNpemUpIHsKKyAgICBpZiAocm9vdCA9PSBOVUxM
KSB7CisgICAgICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7CisgICAgfQorICAgIHJldHVybiB0c2Zf
cmVnaW9uX2FsbG9jKHJvb3QsIHNpemUpOworfQorCisvKiByZWFsbG9jYXRlIGVpdGhlciBpbiBh
IHJlZ2lvbiBvciB1c2luZyBzdHJhaWdodCBtYWxsb2MuICovCitzdGF0aWMgVFNGX2lubGluZSB2
b2lkICp0c2ZfY29uZF9yZWFsbG9jKHZvaWQgKnJvb3QsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUp
IHsKKyAgICBpZiAocm9vdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiByZWFsbG9jKHB0ciwg
c2l6ZSk7CisgICAgfQorICAgIHJldHVybiB0c2ZfcmVnaW9uX3JlYWxsb2Mocm9vdCwgcHRyLCBz
aXplKTsKK30KKworc3RhdGljIFRTRl9pbmxpbmUgdHNmX2Jvb2xfdCB0c2ZfcmVnaW9uX2FkZF9j
YmFjayh2b2lkICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfcmVnaW9uX2NiYWNrX3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIHRzZl9yZWdp
b25fdCAqcmVnaW9uID0gKCh0c2ZfcmVnaW9uX3QqKXJvb3QpIC0gMTsKKworICAgIHRzZl9yZWdp
b25fY2JhY2tfbm9kZV90ICpub2RlID0gKHRzZl9yZWdpb25fY2JhY2tfbm9kZV90KikKKyAgICAg
ICAgdHNmX3JlZ2lvbl9hbGxvYyhyb290LCBzaXplb2YodHNmX3JlZ2lvbl9jYmFja19ub2RlX3Qp
KTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIG5vZGUtPm5leHQgPSByZWdpb24tPmNiYWNrX2hlYWQ7CisgICAgbm9k
ZS0+Y2JhY2sgPSBjYmFjazsKKyAgICBub2RlLT5hcmcgPSBhcmc7CisgICAgCisgICAgcmVnaW9u
LT5jYmFja19oZWFkID0gbm9kZTsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKKy8q
IGRlbGV0ZSBhIHJlZ2lvbiByb290ZWQgYXQgdGhlIGdpdmVuIG9iamVjdC4gKi8KK3N0YXRpYyBU
U0ZfaW5saW5lIHZvaWQgdHNmX3JlZ2lvbl9mcmVlKHZvaWQgKnJvb3QpIHsKKyAgICB0c2ZfcmVn
aW9uX3QgKmN1ciA9ICgodHNmX3JlZ2lvbl90Kilyb290KSAtIDE7CisgICAgdHNmX3JlZ2lvbl9j
YmFja19ub2RlX3QgKmNiYWNrX25vZGUgPSBjdXItPmNiYWNrX2hlYWQ7CisgICAgd2hpbGUgKGNi
YWNrX25vZGUgIT0gTlVMTCkgeworICAgICAgICBjYmFja19ub2RlLT5jYmFjayhjYmFja19ub2Rl
LT5hcmcpOworICAgICAgICBjYmFja19ub2RlID0gY2JhY2tfbm9kZS0+bmV4dDsKKyAgICB9Cisg
ICAgZG8geworICAgICAgICB0c2ZfcmVnaW9uX3QgKnRvX2ZyZWUgPSBjdXI7CisgICAgICAgIGN1
ciA9IGN1ci0+bmV4dDsKKyAgICAgICAgZnJlZSh0b19mcmVlKTsKKyAgICB9IHdoaWxlIChjdXIr
MSAhPSByb290KTsKK30KKworLyogZ2V0IHRoZSB0b3RhbCBhbGxvY2F0YWJsZSBzcGFjZSBvY2N1
cGllZCBieSB0aGlzIHJlZ2lvbiAqLworc3RhdGljIFRTRl9pbmxpbmUgc2l6ZV90IHRzZl9yZWdp
b25fc2l6ZSh2b2lkICpyb290KSB7CisgICAgdHNmX3JlZ2lvbl90ICpjdXIgPSAoKHRzZl9yZWdp
b25fdCopcm9vdCkgLSAxOworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGRvIHsKKyAgICAg
ICAgcmVzdWx0ICs9IGN1ci0+c2l6ZTsKKyAgICAgICAgY3VyID0gY3VyLT5uZXh0OworICAgIH0g
d2hpbGUgKGN1ciArIDEgIT0gcm9vdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlm
CisKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJp
YWxfaW5fbWFuLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dh
c20vdHNmL3RzZl9zZXJpYWxfaW5fbWFuLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfaW5fbWFuLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJu
YWwuaCIKKyNpbmNsdWRlICJ0c2Zfc2VyaWFsX3Byb3RvY29sLmgiCisjaW5jbHVkZSAidHNmX2Zv
cm1hdC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs
dWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+Cisj
aW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwordHNmX3NlcmlhbF9pbl9t
YW5fdCAqdHNmX3NlcmlhbF9pbl9tYW5fY3JlYXRlKHRzZl9yZWFkZXJfdCByZWFkZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAq
bGltaXRzKSB7CisgICAgdHNmX3NlcmlhbF9pbl9tYW5fdCAqcmV0PW1hbGxvYyhzaXplb2YodHNm
X3NlcmlhbF9pbl9tYW5fdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3Nl
dF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2Zfc2VyaWFsX2luX21hbl90Iik7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPnR5cGVzPXRzZl90eXBlX2luX21h
cF9jcmVhdGUoKTsKKyAgICBpZiAocmV0LT50eXBlcz09TlVMTCkgeworICAgICAgICBmcmVlKHJl
dCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAobGltaXRzPT1O
VUxMKSB7CisgICAgICAgIHJldC0+bGltaXRzPU5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
cmV0LT5saW1pdHM9dHNmX2xpbWl0c19jbG9uZShsaW1pdHMpOworICAgICAgICBpZiAocmV0LT5s
aW1pdHM9PU5VTEwpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9kZXN0cm95KHJldC0+
dHlwZXMpOworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0LT5zdGF0ZT0wOworICAgIAorICAgIHJl
dC0+dHlwZXNfYnl0ZV9zaXplPTA7CisgICAgCisgICAgcmV0LT5jYmFja3M9TlVMTDsKKyAgICBy
ZXQtPm51bV9jYmFja3M9MDsKKyAgICAKKyAgICByZXQtPnJlYWRlcj1yZWFkZXI7CisgICAgcmV0
LT5hcmc9YXJnOworCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCB0c2Zfc2VyaWFsX2luX21h
bl9kZXN0cm95KHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbikgeworICAgIHRzZl90eXBlX2lu
X21hcF9kZXN0cm95KGluX21hbi0+dHlwZXMpOworICAgIGlmIChpbl9tYW4tPmNiYWNrcyE9TlVM
TCkgeworICAgICAgICBmcmVlKGluX21hbi0+Y2JhY2tzKTsKKyAgICB9CisgICAgCisgICAgdHNm
X2xpbWl0c19kZXN0cm95KGluX21hbi0+bGltaXRzKTsKKyAgICAKKyAgICBmcmVlKGluX21hbik7
Cit9CisKK3RzZl9ib29sX3QgdHNmX3NlcmlhbF9pbl9tYW5fcmVhZF9yZXNldF90eXBlcyh0c2Zf
c2VyaWFsX2luX21hbl90ICppbl9tYW4pIHsKKyAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqbmV3X3R5
cGVzOworICAgIGNoYXIgYnVmW1RTRl9TUF9NQUdJQ19MRU5dOworICAgIHRzZl9ib29sX3QgcmVz
dWx0PXRzZl90cnVlOworICAgIAorICAgIG5ld190eXBlcz10c2ZfdHlwZV9pbl9tYXBfY3JlYXRl
KCk7CisgICAgaWYgKG5ld190eXBlcz09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgIH0KKyAgICAKKyAgICBpZiAoIWluX21hbi0+cmVhZGVyKGluX21hbi0+YXJnLGJ1ZixU
U0ZfU1BfTUFHSUNfTEVOKSkgeworICAgICAgICByZXN1bHQ9dHNmX2ZhbHNlOworICAgICAgICBn
b3RvIGRvbmU7CisgICAgfQorICAgIAorICAgIGlmIChtZW1jbXAoYnVmLFRTRl9TUF9NQUdJQ19D
T0RFLFRTRl9TUF9NQUdJQ19MRU4pKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFS
U0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIlRoZSBpbnB1dCBzdHJlYW0gZGlkIG5v
dCBjb250YWluIGEgdmFsaWQgcmVzZXQgIgorICAgICAgICAgICAgICAgICAgICAgICJ0eXBlcyBj
b21tYW5kIik7CisgICAgICAgIHJlc3VsdD10c2ZfZmFsc2U7CisgICAgICAgIGdvdG8gZG9uZTsK
KyAgICB9CisgICAgCisgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3koaW5fbWFuLT50eXBlcyk7
CisKKyAgICBpbl9tYW4tPnR5cGVzPW5ld190eXBlczsKKyAgICBpbl9tYW4tPnN0YXRlPTA7Cisg
ICAgaW5fbWFuLT50eXBlc19ieXRlX3NpemU9MDsKKworZG9uZToKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfaW5fbWFuX3JlYWRfcmVzZXRfdHlwZXNfZnJv
bV9mZChpbnQgZmQpIHsKKyAgICB0c2Zfc2VyaWFsX2luX21hbl90ICppbl9tYW47CisgICAgdHNm
X2Jvb2xfdCByZXM7CisgICAgCisgICAgaW5fbWFuPXRzZl9zZXJpYWxfaW5fbWFuX2NyZWF0ZSh0
c2ZfZmRfcmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKGluX21h
bj09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBy
ZXM9dHNmX3NlcmlhbF9pbl9tYW5fcmVhZF9yZXNldF90eXBlcyhpbl9tYW4pOworICAgIAorICAg
IHRzZl9zZXJpYWxfaW5fbWFuX2Rlc3Ryb3koaW5fbWFuKTsKKyAgICAKKyAgICByZXR1cm4gcmVz
OworfQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfaW5fbWFuX3JlYWRfcmVzZXRfdHlwZXNfZnJv
bV9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lKSB7CisgICAgaW50IGZkOworICAgIHRzZl9ib29s
X3QgcmVzOworICAgIAorICAgIGZkPW9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZKTsKKyAgICBpZiAo
ZmQ8MCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJUcnlpbmcgdG8gb3BlbiAlcyB0byBjaGVj
ayByZXNldCB0eXBlcyBjb21tYW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7
CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJlcz10c2Zfc2Vy
aWFsX2luX21hbl9yZWFkX3Jlc2V0X3R5cGVzX2Zyb21fZmQoZmQpOworICAgIAorICAgIGNsb3Nl
KGZkKTsKKyAgICAKKyAgICByZXR1cm4gcmVzOworfQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxf
aW5fbWFuX3JlZ2lzdGVyX3R5cGVfY2JhY2sodHNmX3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBl
X2NiYWNrX3QgY2JhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqYXJnKSB7CisgICAgaWYgKGluX21hbi0+Y2JhY2tzPT1OVUxMKSB7Cisg
ICAgICAgIGluX21hbi0+Y2JhY2tzPW1hbGxvYyhzaXplb2YodHNmX3NlcmlhbF9pbl9tYW5fY2Jh
Y2tfdCkpOworICAgICAgICBpZiAoaW5fbWFuLT5jYmFja3M9PU5VTEwpIHsKKyAgICAgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX3NlcmlhbF9pbl9tYW5fY2JhY2tf
dCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRzZl9zZXJpYWxfaW5fbWFuX2NiYWNrX3QgKm5ld19hcnJheT0KKyAgICAgICAgICAg
IHJlYWxsb2MoaW5fbWFuLT5jYmFja3MsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZih0c2Zf
c2VyaWFsX2luX21hbl9jYmFja190KSooaW5fbWFuLT5udW1fY2JhY2tzKzEpKTsKKyAgICAgICAg
aWYgKG5ld19hcnJheT09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IHJlYWxsb2MgYXJyYXkgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAidHNmX3Nl
cmlhbF9pbl9tYW5fY2JhY2tfdCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAg
fQorICAgICAgICBpbl9tYW4tPmNiYWNrcz1uZXdfYXJyYXk7CisgICAgfQorICAgIAorICAgIGlu
X21hbi0+Y2JhY2tzW2luX21hbi0+bnVtX2NiYWNrc10uY2JhY2s9Y2JhY2s7CisgICAgaW5fbWFu
LT5jYmFja3NbaW5fbWFuLT5udW1fY2JhY2tzXS5hcmc9YXJnOworICAgIAorICAgIGluX21hbi0+
bnVtX2NiYWNrcysrOworICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKKworZXJyb3I6CisgICAg
cmV0dXJuIHRzZl9mYWxzZTsKK30KKwordWludDMyX3QgdHNmX3NlcmlhbF9pbl9tYW5fdW5yZWdp
c3Rlcl90eXBlX2NiYWNrKHRzZl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9jYmFja190IGNi
YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmFyZykgeworICAgIHVpbnQzMl90IGkscmV0PTA7CisKKyAgICBmb3IgKGk9MDtpPGluX21h
bi0+bnVtX2NiYWNrczsrK2kpIHsKKyAgICAgICAgaWYgKGluX21hbi0+Y2JhY2tzW2ldLmNiYWNr
PT1jYmFjayAmJgorICAgICAgICAgICAgaW5fbWFuLT5jYmFja3NbaV0uYXJnPT1hcmcpIHsKKyAg
ICAgICAgICAgIG1lbWNweShpbl9tYW4tPmNiYWNrcystLWluX21hbi0+bnVtX2NiYWNrcywKKyAg
ICAgICAgICAgICAgICAgICBpbl9tYW4tPmNiYWNrcytpLS0sCisgICAgICAgICAgICAgICAgICAg
c2l6ZW9mKHRzZl9zZXJpYWxfaW5fbWFuX2NiYWNrX3QpKTsKKyAgICAgICAgICAgIHJldCsrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKwordHNmX2Jvb2xfdCB0c2Zf
c2VyaWFsX2luX21hbl9yZWFkX2V4aXN0aW5nX2J1ZmZlcih0c2Zfc2VyaWFsX2luX21hbl90ICpp
bl9tYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzZl9idWZmZXJfdCAqcmVzdWx0KSB7CisgICAgdHNmX3R5cGVfdCAqdHlwZTsKKyAgICB0c2Zf
Ym9vbF90IHJlczsKKyAgICB1aW50OF90IGNvbW1hbmQ7CisgICAgY2hhciBidWZbMjU2XTsKKyAg
ICB0c2ZfdHlwZV9pbl9tYXBfdCAqbmV3X3R5cGVzOworICAgIHVpbnQzMl90IG47CisgICAgCisg
ICAgZm9yICg7OykgeworICAgICAgICBpZiAoIWluX21hbi0+cmVhZGVyKGluX21hbi0+YXJnLCAm
Y29tbWFuZCwgc2l6ZW9mKGNvbW1hbmQpKSkgeworICAgICAgICAgICAgLyogaWYgdGhlIEVPRiBo
YXBwZW5zIGhlcmUgYW5kIG9ubHkgaGVyZSwgdGhlbiB0aGUgRU9GCisgICAgICAgICAgICAgKiBj
YW4gYmUgc2FpZCB0byBoYXZlIGJlZW4gZXhwZWN0ZWQuICovCisgICAgICAgICAgICBpZiAodHNm
X2dldF9lcnJvcl9jb2RlKCkgPT0gVFNGX0VfVU5FWFBFQ1RFRF9FT0YpIHsKKyAgICAgICAgICAg
ICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0VPRiwgTlVMTCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHN3aXRjaCAoY29tbWFuZCkgeworICAgICAgICBjYXNlIFRTRl9TUF9DX1JFU0VUX1RZUEVTOgor
ICAgICAgICAgICAgLyogZmlyc3QgcmVhZCB0aGUgbWFnaWMgc3RyaW5nICovCisgICAgICAgICAg
ICBpZiAoIWluX21hbi0+cmVhZGVyKGluX21hbi0+YXJnLCBidWYsIFRTRl9TUF9NQUdJQ19TVUZG
SVhfTEVOKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobWVtY21wKGJ1ZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgVFNGX1NQX01BR0lDX1NVRkZJWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVFNGX1NQX01BR0lDX1NVRkZJWF9MRU4pKSB7CisgICAgICAgICAgICAgICAgdHNmX3Nl
dF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJCYWQgbWFnaWMgaGVhZGVyIGZvciBUU0ZfU1BfQ19SRVNFVF9UWVBFUyAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBu
ZXdfdHlwZXMgPSB0c2ZfdHlwZV9pbl9tYXBfY3JlYXRlKCk7CisgICAgICAgICAgICBpZiAobmV3
X3R5cGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdHNmX3R5cGVfaW5fbWFwX2Rlc3Ryb3koaW5fbWFuLT50
eXBlcyk7CisgICAgICAgICAgICBpbl9tYW4tPnR5cGVzID0gbmV3X3R5cGVzOworICAgICAgICAg
ICAgaW5fbWFuLT5zdGF0ZSA9IDA7CisgICAgICAgICAgICBpbl9tYW4tPnR5cGVzX2J5dGVfc2l6
ZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUU0ZfU1BfQ19ORVdfVFlQ
RToKKyAgICAgICAgICAgIGlmICh0c2ZfdHlwZV9pbl9tYXBfZ2V0X251bV90eXBlcyhpbl9tYW4t
PnR5cGVzKQorICAgICAgICAgICAgICAgID09IHRzZl9saW1pdHNfbWF4X3R5cGVzKGluX21hbi0+
bGltaXRzKSkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJS
T1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgdHlwZXMgaW4gb25l
IHN0cmVhbSIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0eXBlID0gdHNmX3R5cGVfcmVhZChp
bl9tYW4tPnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX21hbi0+
YXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fbWFuLT5saW1pdHMpOwor
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAodHNmX3R5cGVfaW5fbWFwX2dldF9udW1fdHlwZXMoaW5fbWFuLT50eXBlcykKKyAgICAgICAg
ICAgICAgICA+IGluX21hbi0+c3RhdGUpIHsKKyAgICAgICAgICAgICAgICAvKiB0aGlzIHNob3Vs
ZCBiZSBhIHR5cGUgdGhhdCB3ZSd2ZSBzZWVuIGFscmVhZHksIHNvCisgICAgICAgICAgICAgICAg
ICoganVzdCB2ZXJpZnkgdGhhdCBpdCBpcyB0aGUgcmlnaHQgb25lLiAqLworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXRzZl90eXBlX2NvbXBhcmUoCisgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfZ2V0X3R5cGUoaW5fbWFuLT50eXBlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4t
PnN0YXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfVU5FWFBFQ1RFRF9UWVBFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJXaGlsZSBpbiBhIHNlZWstYmFjayBzdGF0ZSB3aXRoICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdGUgPSAiIGZ1aTMyICIgYW5k
IG51bV90eXBlcyA9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWkzMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4tPnN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2luX21hcF9nZXRfbnVtX3R5cGVz
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4tPnR5cGVzKSk7
CisgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBhIG5ldyB0eXBlLCBzbyBhcHBlbmQgaXQg
dG8gdGhlIG1hcC4gKi8KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KGluX21hbi0+dHlwZXNfYnl0ZV9zaXplICsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
Z2V0X2J5dGVfc2l6ZSh0eXBlKQorICAgICAgICAgICAgICAgICAgICA+IHRzZl9saW1pdHNfbWF4
X3RvdGFsX3R5cGVfc2l6ZShpbl9tYW4tPmxpbWl0cykpIHsKKyAgICAgICAgICAgICAgICAgICAg
dHNmX3NldF9lcnJvcihUU0ZfRV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVG90YWwgc2l6ZSBvZiB0eXBlcyBpbiBzdHJlYW0gdG9vIGJpZyIpOworICAg
ICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHR5cGUpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaW5fbWFuLT50eXBlc19ieXRlX3NpemUgKz0gdHNmX3R5
cGVfZ2V0X2J5dGVfc2l6ZSh0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgZm9yIChuID0gaW5fbWFuLT5udW1fY2JhY2tzOyBuIC0tPiAwOykgeworICAgICAgICAg
ICAgICAgICAgICBpbl9tYW4tPmNiYWNrc1tuXS5jYmFjayhpbl9tYW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluX21hbi0+Y2JhY2tzW25dLmFyZyk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXMgPSB0
c2ZfdHlwZV9pbl9tYXBfYXBwZW5kKGluX21hbi0+dHlwZXMsIHR5cGUpOworICAgICAgICAgICAg
ICAgIGlmICghcmVzKSB7CisgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlw
ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdHNmX3R5
cGVfZGVzdHJveSh0eXBlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGluX21hbi0+
c3RhdGUrKzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VFNGX1NQX0NfREFUQToKKyAgICAgICAgICAgIHJldHVybiB0c2ZfYnVmZmVyX3JlYWRfc2ltcGxl
KHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX21h
bi0+dHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9t
YW4tPnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
X21hbi0+YXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5f
bWFuLT5saW1pdHMpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKGNvbW1hbmQg
JiBUU0ZfU1BfQ19DRl9EQVRBX0JJVCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfYnVm
ZmVyX3JlYWRfc21hbGxfd2l0aF90eXBlX2NvZGUocmVzdWx0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCAmIH5UU0Zf
U1BfQ19DRl9EQVRBX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluX21hbi0+dHlwZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9tYW4tPnJlYWRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluX21hbi0+YXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5fbWFuLT5saW1pdHMpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCBjb21tYW5kIHJlYWQgZnJvbSBz
ZXJpYWwgc3RyZWFtOiAldSIsICh1bnNpZ25lZCljb21tYW5kKTsKKyAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdHNmX2Fib3J0KCJTaG91
bGQgbmV2ZXIgZ2V0IGhlcmUiKTsKKyAgICByZXR1cm4gdHNmX2ZhbHNlOworfQorCit0c2ZfYnVm
ZmVyX3QgKnRzZl9zZXJpYWxfaW5fbWFuX3JlYWQodHNmX3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFu
KSB7CisgICAgdHNmX2J1ZmZlcl90ICpyZXN1bHQ7CisgICAgCisgICAgcmVzdWx0ID0gdHNmX2J1
ZmZlcl9jcmVhdGVfYmFyZSgpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybiBO
VUxMOworICAgIH0KKyAgICAKKyAgICBpZiAoIXRzZl9zZXJpYWxfaW5fbWFuX3JlYWRfZXhpc3Rp
bmdfYnVmZmVyKGluX21hbiwgcmVzdWx0KSkgeworICAgICAgICB0c2ZfYnVmZmVyX2Rlc3Ryb3lf
YmFyZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordHNmX3NlcmlhbF9pbl9tYW5fc3RhdGVfdCB0c2Zfc2VyaWFsX2lu
X21hbl9nZXRfc3RhdGUodHNmX3NlcmlhbF9pbl9tYW5fdCAqaW5fbWFuKSB7CisgICAgcmV0dXJu
IGluX21hbi0+c3RhdGU7Cit9CisKK3ZvaWQgdHNmX3NlcmlhbF9pbl9tYW5fc2V0X3N0YXRlKHRz
Zl9zZXJpYWxfaW5fbWFuX3QgKmluX21hbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRzZl9zZXJpYWxfaW5fbWFuX3N0YXRlX3Qgc3RhdGUpIHsKKyAgICBpbl9tYW4tPnN0YXRl
ID0gc3RhdGU7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2Zfc2VyaWFsX291dF9tYW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX3NlcmlhbF9vdXRfbWFuLmMJKG5vbmV4aXN0ZW50KQorKysg
UGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfb3V0X21hbi5j
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNm
X2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX3NlcmlhbF9wcm90b2NvbC5oIgorCisjaWZkZWYg
SEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKy8qIEZJWE1FOiBh
ZGQgYW4gcmVjb3ZlcnkgaGVscGVyIG1vZGUsIHdoZXJlIGFmdGVyIHNvbWUgbnVtYmVyIG9mIGJ5
dGVzIFgKKyAqIHN1Y2ggdGhhdCBYL1QgPiBDLCB3aGVyZSBUIGlzIHRoZSBieXRlIHNpemUgb2Yg
b3VyIGN1cnJlbnQgdHlwZSBtYXAsCisgKiB3ZSByZXNldCB0eXBlcy4gIEFsc28gYWRkIGFuIGV4
dGVuZGVkIHJlc2V0IHR5cGVzIGNvbW1hbmQsIHdoaWNoCisgKiBpbmNsdWRlcyBhIGxvbmdlciBt
YWdpYyBzdHJpbmcuICovCisKK3N0YXRpYyB0c2ZfYm9vbF90IHdyaXRlX2NvbW1hbmQodHNmX3dy
aXRlcl90IHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGNvbW1hbmQpIHsKKyAg
ICByZXR1cm4gd3JpdGVyKGFyZywgJmNvbW1hbmQsIHNpemVvZihjb21tYW5kKSk7Cit9CisKK3N0
YXRpYyB0c2ZfYm9vbF90IHdyaXRlX3Jlc2V0KHRzZl93cml0ZXJfdCB3cml0ZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpIHsKKyAgICByZXR1cm4gd3JpdGVyKGFy
ZywgVFNGX1NQX01BR0lDX0NPREUsIFRTRl9TUF9NQUdJQ19MRU4pOworfQorCit0c2Zfc2VyaWFs
X291dF9tYW5fdCAqdHNmX3NlcmlhbF9vdXRfbWFuX2NyZWF0ZSh0c2Zfd3JpdGVyX3Qgd3JpdGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
YXJnKSB7CisgICAgdHNmX3NlcmlhbF9vdXRfbWFuX3QgKnJldD1tYWxsb2Moc2l6ZW9mKHRzZl9z
ZXJpYWxfb3V0X21hbl90KSk7CisgICAgaWYgKHJldD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0
X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRzZl9zZXJpYWxfb3V0X21hbl90IHN0cnVjdHVyZS4i
KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldC0+dHlwZXM9dHNm
X3R5cGVfb3V0X21hcF9jcmVhdGUoKTsKKyAgICBpZiAocmV0LT50eXBlcz09TlVMTCkgeworICAg
ICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBy
ZXQtPndyaXRlcj13cml0ZXI7CisgICAgcmV0LT5hcmc9YXJnOworICAgIAorICAgIGlmICghd3Jp
dGVfcmVzZXQod3JpdGVyLGFyZykpIHsKKyAgICAgICAgdHNmX3R5cGVfb3V0X21hcF9kZXN0cm95
KHJldC0+dHlwZXMpOworICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIHRzZl9zZXJpYWxfb3V0X21h
bl9kZXN0cm95KHRzZl9zZXJpYWxfb3V0X21hbl90ICpvdXRfbWFuKSB7CisgICAgdHNmX3R5cGVf
b3V0X21hcF9kZXN0cm95KG91dF9tYW4tPnR5cGVzKTsKKyAgICBmcmVlKG91dF9tYW4pOworfQor
Cit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfb3V0X21hbl9yZXNldF90eXBlcyh0c2Zfc2VyaWFsX291
dF9tYW5fdCAqb3V0X21hbikgeworICAgIHRzZl90eXBlX291dF9tYXBfdCAqbmV3X3R5cGVzOwor
ICAgIAorICAgIG5ld190eXBlcz10c2ZfdHlwZV9vdXRfbWFwX2NyZWF0ZSgpOworICAgIGlmIChu
ZXdfdHlwZXM9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAg
CisgICAgaWYgKCF3cml0ZV9yZXNldChvdXRfbWFuLT53cml0ZXIsCisgICAgICAgICAgICAgICAg
ICAgICBvdXRfbWFuLT5hcmcpKSB7CisgICAgICAgIHRzZl90eXBlX291dF9tYXBfZGVzdHJveShu
ZXdfdHlwZXMpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICB0
c2ZfdHlwZV9vdXRfbWFwX2Rlc3Ryb3kob3V0X21hbi0+dHlwZXMpOworICAgIG91dF9tYW4tPnR5
cGVzPW5ld190eXBlczsKKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29s
X3QgdHNmX3NlcmlhbF9vdXRfbWFuX3dyaXRlX3R5cGUodHNmX3dyaXRlcl90IHdyaXRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlKSB7Cisg
ICAgaWYgKCF3cml0ZV9jb21tYW5kKHdyaXRlcixhcmcsVFNGX1NQX0NfTkVXX1RZUEUpKSB7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHlwZV93cml0
ZSh0eXBlLHdyaXRlcixhcmcpOworfQorCit0c2ZfYm9vbF90IHRzZl9zZXJpYWxfb3V0X21hbl93
cml0ZSh0c2Zfc2VyaWFsX291dF9tYW5fdCAqb3V0X21hbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmKSB7CisgICAgdWludDMyX3QgaTsKKyAg
ICB0c2ZfYm9vbF90IGNyZWF0ZWQ7CisgICAgdWludDMyX3QgdHlwZV9jb2RlOworICAgIAorICAg
IGlmICghdHNmX3R5cGVfb3V0X21hcF9nZXRfdHlwZV9jb2RlKG91dF9tYW4tPnR5cGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi0+dHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZjcmVhdGVkKSkgeworICAgICAgICBnb3RvIGVycm9yOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoY3JlYXRlZCkgeworICAgICAgICBpZiAoIXRzZl9zZXJpYWxf
b3V0X21hbl93cml0ZV90eXBlKG91dF9tYW4tPndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXRfbWFuLT5hcmcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmLT50eXBlKSkgeworICAgICAgICAgICAgZ290byBl
cnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHNmX3R5
cGVfaW5fbWFwX2dldF9udW1fdHlwZXMoYnVmLT50eXBlcyk7ICsraSkgeworICAgICAgICBpZiAo
IXRzZl90eXBlX291dF9tYXBfZ2V0X3R5cGVfY29kZSgKKwkJb3V0X21hbi0+dHlwZXMsCisJCXRz
Zl90eXBlX2luX21hcF9nZXRfdHlwZShidWYtPnR5cGVzLCBpKSwKKwkJTlVMTCwKKwkJJmNyZWF0
ZWQpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoY3JlYXRlZCkgeworICAgICAgICAgICAgaWYgKCF0c2Zfc2VyaWFsX291dF9tYW5f
d3JpdGVfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIG91dF9tYW4tPndyaXRlciwKKyAgICAg
ICAgICAgICAgICAgICAgIG91dF9tYW4tPmFyZywKKyAgICAgICAgICAgICAgICAgICAgIHRzZl90
eXBlX2luX21hcF9nZXRfdHlwZShidWYtPnR5cGVzLCBpKSkpIHsKKyAgICAgICAgICAgICAgICBn
b3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlm
ICghdHNmX3R5cGVfb3V0X21hcF9nZXRfdHlwZV9jb2RlKG91dF9tYW4tPnR5cGVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi0+dHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZV9jb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7Cisg
ICAgfQorICAgIAorICAgIGlmICh0eXBlX2NvZGUgPCBUU0ZfU1BfQ19DRl9EQVRBX0JJVCAmJiBi
dWYtPnNpemUgPCAyNTYpIHsKKyAgICAgICAgaWYgKCF3cml0ZV9jb21tYW5kKG91dF9tYW4tPndy
aXRlciwgb3V0X21hbi0+YXJnLCBUU0ZfU1BfQ19DRl9EQVRBX0JJVCB8IHR5cGVfY29kZSkpIHsK
KyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlm
ICghdHNmX2J1ZmZlcl93cml0ZV9zbWFsbF93aXRoX3R5cGVfY29kZShidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfbWFuLT50eXBlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9t
YW4tPndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dF9tYW4tPmFyZykpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXdyaXRlX2NvbW1hbmQob3V0X21hbi0+d3Jp
dGVyLCBvdXRfbWFuLT5hcmcsIFRTRl9TUF9DX0RBVEEpKSB7CisgICAgICAgICAgICBnb3RvIGVy
cm9yOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXRzZl9idWZmZXJfd3JpdGVf
c2ltcGxlKGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX2Nv
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X21hbi0+dHlwZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X21hbi0+d3JpdGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9tYW4tPmFyZykpIHsKKyAg
ICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHNm
X3RydWU7CisKK2Vycm9yOgorICAgIHJldHVybiB0c2ZfZmFsc2U7Cit9CisKKwpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zZXJpYWxfcHJvdG9jb2wuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3Nl
cmlhbF9wcm90b2NvbC5oCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3Ry
ZWFtMi93YXNtL3RzZi90c2Zfc2VyaWFsX3Byb3RvY29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBGaWxpcCBQ
aXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworLyogVGhpcyBmaWxlIGhvbGRzIGNvbnN0YW50cyByZXF1aXJlZCBieSB0
aGUgc2VyaWFsIHByb3RvY29sLiAqLworCisjaWZuZGVmIEZQX1RTRl9TRVJJQUxfUFJPVE9DT0xf
SAorI2RlZmluZSBGUF9UU0ZfU0VSSUFMX1BST1RPQ09MX0gKKworI2luY2x1ZGUgInRzZl90eXBl
cy5oIgorCisvKiB0aGUgbGVuZ3RoIG9mIGFsbCBtYWdpYyBjb2RlcyAqLworI2RlZmluZSBUU0Zf
U1BfTUFHSUNfTEVOICAgICAgICAgICAgNAorCisvKiBXaGF0IGZvbGxvd3MgYXJlIHRoZSBzZXJp
YWwgcHJvdG9jb2wgY29tbWFuZCBjb2Rlcy4gKi8KKworLyogSW5kaWNhdGVzIHRoYXQgdGhlIHR5
cGUgbWFwIHNob3VsZCBiZSByZXNldC4gIEV2ZXJ5IHZhbGlkIFRTRiBzdHJlYW0KKyAqIG11c3Qg
YmVnaW4gd2l0aCBhIFRTRl9TUF9SRVNFVF9UWVBFUyBjb21tYW5kLiAgQSBUU0ZfU1BfUkVTRVRf
VFlQRVMKKyAqIGNvbW1hbmQgbXVzdCBiZSBmb2xsb3dlZCBieSB0aGUgVFNGIG1hZ2ljIGNvZGUs
IGRlZmluZWQgaW4gdGhlIGNvbnN0YW50cworICogVFNGX1NQX01BR0lDX1NVRkZJWCBhbmQgVFNG
X1NQX01BR0lDX1NVRkZJWF9MRU4uICovCisjZGVmaW5lIFRTRl9TUF9DX1JFU0VUX1RZUEVTICAg
ICAgICAgICAgICAgICgodWludDhfdCkwKQorCisvKiBJbmRpY2F0ZXMgdGhhdCBhIG5ldyB0eXBl
IGRlZmluaXRpb24gZm9sbG93cy4gIFRoZSBuZXcgdHlwZSBpcyBkZWZpbmVkCisgKiB0byBoYXZl
IHdoYXRldmVyIGNvZGUgY29tZXMgbmV4dC4gIEF0IGxlYXN0IG9uZSBvZiB0aGVzZQorICogbXVz
dCBwcmVjZWRlIHRoZSBmaXJzdCBUU0ZfU1BfQ19EQVRBIGNvbW1hbmQgaW4gYSBzdHJlYW0uICov
CisjZGVmaW5lIFRTRl9TUF9DX05FV19UWVBFICAgICAgICAgICAgICAgICAgICgodWludDhfdCkx
KQorCisvKiBJbmRpY2F0ZXMgdGhhdCBkYXRhIGZvbGxvd3MuICBUaGUgZm9ybWF0IG9mIHNhaWQg
ZGF0YSBpcyBkZXRlcm1pbmVkCisgKiBieSB0aGUgdHNmX2J1ZmZlciBvYmplY3QuICovCisjZGVm
aW5lIFRTRl9TUF9DX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkyKQorCisv
KiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBnb2luZyB0byBjaGFuZ2UgZm9ybWF0cy4gIE5vdGUgdGhh
dCB0aGUKKyAqIHNlcmlhbF9pbl9tYW4gZG9lc24ndCBjYXRjaCB0aGlzOyBpZiB5b3Ugd2FudCB0
byBhbGxvdyBmb3IgemlwIGZvcm1hdHMKKyAqIHRvIGJlIGNoYW5nZWQgb24gdGhlIGZseSwgeW91
IGhhdmUgdG8gY2F0Y2ggdGhpcyB5b3Vyc2VsZi4gIFRoZQorICogdHNmX2FkYXB0aXZlX3JlYWRl
ciBkb2VzIHRoaXMuICovCisjZGVmaW5lIFRTRl9TUF9DX1NXSVRDSF9GT1JNQVQgICAgICAgICAg
ICAgICgodWludDhfdCknVCcpCisKKy8qIElmIHRoaXMgYml0IGluIHRoZSBjb21tYW5kIGNvZGUg
aXMgc2V0LCBpdCBpbmRpY2F0ZXMgdGhhdCBkYXRhIGZvbGxvd3MsCisgKiB3aXRoICJjb21wYWN0
IGZyYW1pbmciIChDRikuIFRoZSBsb3cgYml0cyBhcmUgdGhlbiB1c2VkIGFzIHRoZSB0eXBlCisg
KiBjb2RlLiAqLworI2RlZmluZSBUU0ZfU1BfQ19DRl9EQVRBX0JJVCAgICAgICAgICAgICAgICAo
KHVpbnQ4X3QpMTI4KQorCisvKiBJdCBpcyBhIHJlcXVpcmVtZW50IHRoYXQgYW55IGFkZGl0aW9u
YWwgc2VyaWFsIHByb3RvY29sIGNvbW1hbmQgY29kZXMgbXVzdAorICogYmUgaW1tZWRpYXRlbHkg
Zm9sbG93ZWQgYnkgYSAzMi1iaXQgbGVuZ3RoIHNwZWNpZmllci4gIEl0IGlzIHRoZW4KKyAqIGFj
Y2VwdGFibGUgZm9yIGlucHV0IG1hbmFnZXIgaW1wbGVtZW50YXRpb25zIHRvIHNraXAgb3ZlciB0
aGUgbnVtYmVyIG9mCisgKiBieXRlcyBzcGVjaWZpZWQgYnkgdGhlIGxlbmd0aCBzcGVjaWZpZXIu
ICovCisgCisvKiBUaGUgY29kZSB0aGF0IHNpZ25pZmllcyBhIHN0YW5kYXJkIFRTRiBzdHJlYW0u
ICAoVGhpcyBpcyBqdXN0IGEKKyAqIFRTRl9TUF9DX1JFU0VUX1RZUEVTIGZvbGxvd2VkIGJ5IGEg
VFNGX1NQX01BR0lDX1NVRkZJWC4pKi8KKyNkZWZpbmUgVFNGX1NQX01BR0lDX0NPREUgICAgICAg
ICAgICAgICAgICAgIlwwMDBUU0YiCisKKy8qIFRoZSAnc3VmZml4JyBvZiB0aGUgYWJvdmUgY29k
ZTsgdGhpcyBpcyB0aGUgcGFydCB0aGF0IHdpbGwgZm9sbG93IGEKKyAqIFRTRl9TUF9DX1JFU0VU
X1RZUEVTIGNvbW1hbmQuICovCisjZGVmaW5lIFRTRl9TUF9NQUdJQ19TVUZGSVggICAgICAgICAg
ICAgICAgICJUU0YiCisjZGVmaW5lIFRTRl9TUF9NQUdJQ19TVUZGSVhfTEVOICAgICAgICAgICAg
IDMKKworLyogTWFnaWMgY29kZXMgZm9yIFpMaWIgYW5kIGxpYmJ6aXAyIGZpbGVzLiAgTm90ZSB0
aGF0IGl0IGlzIG5vIGFjY2lkZW50IHRoYXQKKyAqIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhl
c2UgY29kZXMgaGFzIGEgJ1QnIC0gc2VlIFRTRl9TUF9DX1NXSVRDSF9GT1JNQVQKKyAqIGFib3Zl
LiAqLworCisjZGVmaW5lIFRTRl9TUF9aTElCX01BR0lDX0NPREUgICAgICAgICAgICAgICJUU0Z6
IgorCisjZGVmaW5lIFRTRl9TUF9CWklQMl9NQUdJQ19DT0RFICAgICAgICAgICAgICJUU0ZiIgor
CisjZW5kaWYKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2Yv
dHNmX3NoYTEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX3NoYTEuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS90c2YvdHNmX3NoYTEuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4NSBA
QAorLyoKKyAqICB0c2Zfc2hhMS5jCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OCwgMjAwOQor
ICogIFBhdWwgRS4gSm9uZXMgPHBhdWxlakBwYWNrZXRpemVyLmNvbT4KKyAqICBBbGwgUmlnaHRz
IFJlc2VydmVkCisgKiAKKyAqICBGcmVld2FyZSBQdWJsaWMgTGljZW5zZSAoRlBMKQorICogIAor
ICogIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgImZyZWV3YXJlLiIgIFBlcm1pc3Npb24g
dG8gZGlzdHJpYnV0ZQorICogIHRoaXMgc29mdHdhcmUgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIGluY2x1ZGluZyBpbmNvcnBvcmF0aW9uIAorICogIGludG8gb3RoZXIgcHJvZHVjdHMsIGlz
IGhlcmVieSBncmFudGVkIHdpdGhvdXQgYSBmZWUuICBUSElTIFNPRlRXQVJFIAorICogIElTIFBS
T1ZJREVEICdBUyBJUycgQU5EIFdJVEhPVVQgQU5ZIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIAorICogIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSAKKyAqICBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBUSEUgQVVUSE9SIFNIQUxMIE5PVCBCRSBIRUxEIAorICogIExJQUJM
RSBGT1IgQU5ZIERBTUFHRVMgUkVTVUxUSU5HIEZST00gVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFSVRIRVIgCisgKiAgRElSRUNUTFkgT1IgSU5ESVJFQ1RMWSwgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIExPU1MgT0YgREFUQSAKKyAqICBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElO
QUNDVVJBVEUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgJElkOiBzaGExLmMgMTIg
MjAwOS0wNi0yMiAxOTozNDoyNVogcGF1bGVqICQKKyAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoK
KyAqICBEZXNjcmlwdGlvbjoKKyAqICAgICAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIFNlY3Vy
ZSBIYXNoaW5nIFN0YW5kYXJkIGFzIGRlZmluZWQKKyAqICAgICAgaW4gRklQUyBQVUIgMTgwLTEg
cHVibGlzaGVkIEFwcmlsIDE3LCAxOTk1LgorICoKKyAqICAgICAgVGhlIFNlY3VyZSBIYXNoaW5n
IFN0YW5kYXJkLCB3aGljaCB1c2VzIHRoZSBTZWN1cmUgSGFzaGluZworICogICAgICBBbGdvcml0
aG0gKFNIQSksIHByb2R1Y2VzIGEgMTYwLWJpdCBtZXNzYWdlIGRpZ2VzdCBmb3IgYQorICogICAg
ICBnaXZlbiBkYXRhIHN0cmVhbS4gIEluIHRoZW9yeSwgaXQgaXMgaGlnaGx5IGltcHJvYmFibGUg
dGhhdAorICogICAgICB0d28gbWVzc2FnZXMgd2lsbCBwcm9kdWNlIHRoZSBzYW1lIG1lc3NhZ2Ug
ZGlnZXN0LiAgVGhlcmVmb3JlLAorICogICAgICB0aGlzIGFsZ29yaXRobSBjYW4gc2VydmUgYXMg
YSBtZWFucyBvZiBwcm92aWRpbmcgYSAiZmluZ2VycHJpbnQiCisgKiAgICAgIGZvciBhIG1lc3Nh
Z2UuCisgKgorICogIFBvcnRhYmlsaXR5IElzc3VlczoKKyAqICAgICAgU0hBLTEgaXMgZGVmaW5l
ZCBpbiB0ZXJtcyBvZiAzMi1iaXQgIndvcmRzIi4gIFRoaXMgY29kZSB3YXMKKyAqICAgICAgd3Jp
dHRlbiB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZSBwcm9jZXNzb3IgaGFzIGF0IGxlYXN0
CisgKiAgICAgIGEgMzItYml0IG1hY2hpbmUgd29yZCBzaXplLiAgSWYgdGhlIG1hY2hpbmUgd29y
ZCBzaXplIGlzIGxhcmdlciwKKyAqICAgICAgdGhlIGNvZGUgc2hvdWxkIHN0aWxsIGZ1bmN0aW9u
IHByb3Blcmx5LiAgT25lIGNhdmVhdCB0byB0aGF0CisgKiAgICAgIGlzIHRoYXQgdGhlIGlucHV0
IGZ1bmN0aW9ucyB0YWtpbmcgY2hhcmFjdGVycyBhbmQgY2hhcmFjdGVyCisgKiAgICAgIGFycmF5
cyBhc3N1bWUgdGhhdCBvbmx5IDggYml0cyBvZiBpbmZvcm1hdGlvbiBhcmUgc3RvcmVkIGluIGVh
Y2gKKyAqICAgICAgY2hhcmFjdGVyLgorICoKKyAqICBDYXZlYXRzOgorICogICAgICBTSEEtMSBp
cyBkZXNpZ25lZCB0byB3b3JrIHdpdGggbWVzc2FnZXMgbGVzcyB0aGFuIDJeNjQgYml0cworICog
ICAgICBsb25nLiBBbHRob3VnaCBTSEEtMSBhbGxvd3MgYSBtZXNzYWdlIGRpZ2VzdCB0byBiZSBn
ZW5lcmF0ZWQgZm9yCisgKiAgICAgIG1lc3NhZ2VzIG9mIGFueSBudW1iZXIgb2YgYml0cyBsZXNz
IHRoYW4gMl42NCwgdGhpcworICogICAgICBpbXBsZW1lbnRhdGlvbiBvbmx5IHdvcmtzIHdpdGgg
bWVzc2FnZXMgd2l0aCBhIGxlbmd0aCB0aGF0IGlzIGEKKyAqICAgICAgbXVsdGlwbGUgb2YgdGhl
IHNpemUgb2YgYW4gOC1iaXQgY2hhcmFjdGVyLgorICoKKyAqLworCisjaW5jbHVkZSAidHNmX3No
YTEuaCIKKworLyoKKyAqICBEZWZpbmUgdGhlIGNpcmN1bGFyIHNoaWZ0IG1hY3JvCisgKi8KK3N0
YXRpYyBUU0ZfaW5saW5lIHVpbnQzMl90IFNIQTFDaXJjdWxhclNoaWZ0KHVpbnQzMl90IGJpdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3
b3JkKSB7CisgICAgcmV0dXJuICgoKCh3b3JkKSA8PCAoYml0cykpICYgMHhGRkZGRkZGRikgfAor
ICAgICAgICAgICAgKCh3b3JkKSA+PiAoMzItKGJpdHMpKSkpOworfQorCisvKiBGdW5jdGlvbiBw
cm90b3R5cGVzICovCitzdGF0aWMgdm9pZCBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayh0c2ZfU0hB
MUNvbnRleHQgKik7CitzdGF0aWMgdm9pZCBTSEExUGFkTWVzc2FnZSh0c2ZfU0hBMUNvbnRleHQg
Kik7CisKKy8qICAKKyAqICBTSEExUmVzZXQKKyAqCisgKiAgRGVzY3JpcHRpb246CisgKiAgICAg
IFRoaXMgZnVuY3Rpb24gd2lsbCBpbml0aWFsaXplIHRoZSBTSEExQ29udGV4dCBpbiBwcmVwYXJh
dGlvbgorICogICAgICBmb3IgY29tcHV0aW5nIGEgbmV3IG1lc3NhZ2UgZGlnZXN0LgorICoKKyAq
ICBQYXJhbWV0ZXJzOgorICogICAgICBjb250ZXh0OiBbaW4vb3V0XQorICogICAgICAgICAgVGhl
IGNvbnRleHQgdG8gcmVzZXQuCisgKgorICogIFJldHVybnM6CisgKiAgICAgIE5vdGhpbmcuCisg
KgorICogIENvbW1lbnRzOgorICoKKyAqLwordm9pZCB0c2ZfU0hBMVJlc2V0KHRzZl9TSEExQ29u
dGV4dCAqY29udGV4dCkKK3sKKyAgICBjb250ZXh0LT5MZW5ndGhfTG93ICAgICAgICAgICAgID0g
MDsKKyAgICBjb250ZXh0LT5MZW5ndGhfSGlnaCAgICAgICAgICAgID0gMDsKKyAgICBjb250ZXh0
LT5NZXNzYWdlX0Jsb2NrX0luZGV4ICAgID0gMDsKKworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGln
ZXN0WzBdICAgICAgPSAweDY3NDUyMzAxOworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzFd
ICAgICAgPSAweEVGQ0RBQjg5OworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzJdICAgICAg
PSAweDk4QkFEQ0ZFOworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzNdICAgICAgPSAweDEw
MzI1NDc2OworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzRdICAgICAgPSAweEMzRDJFMUYw
OworCisgICAgY29udGV4dC0+Q29tcHV0ZWQgICA9IDA7CisgICAgY29udGV4dC0+Q29ycnVwdGVk
ICA9IDA7Cit9CisKKy8qICAKKyAqICBTSEExUmVzdWx0CisgKgorICogIERlc2NyaXB0aW9uOgor
ICogICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSAxNjAtYml0IG1lc3NhZ2UgZGln
ZXN0IGludG8gdGhlCisgKiAgICAgIE1lc3NhZ2VfRGlnZXN0IGFycmF5IHdpdGhpbiB0aGUgU0hB
MUNvbnRleHQgcHJvdmlkZWQKKyAqCisgKiAgUGFyYW1ldGVyczoKKyAqICAgICAgY29udGV4dDog
W2luL291dF0KKyAqICAgICAgICAgIFRoZSBjb250ZXh0IHRvIHVzZSB0byBjYWxjdWxhdGUgdGhl
IFNIQS0xIGhhc2guCisgKgorICogIFJldHVybnM6CisgKiAgICAgIDEgaWYgc3VjY2Vzc2Z1bCwg
MCBpZiBpdCBmYWlsZWQuCisgKgorICogIENvbW1lbnRzOgorICoKKyAqLworaW50MzJfdCB0c2Zf
U0hBMVJlc3VsdCh0c2ZfU0hBMUNvbnRleHQgKmNvbnRleHQpCit7CisKKyAgICBpZiAoY29udGV4
dC0+Q29ycnVwdGVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYg
KCFjb250ZXh0LT5Db21wdXRlZCkKKyAgICB7CisgICAgICAgIFNIQTFQYWRNZXNzYWdlKGNvbnRl
eHQpOworICAgICAgICBjb250ZXh0LT5Db21wdXRlZCA9IDE7CisgICAgfQorCisgICAgcmV0dXJu
IDE7Cit9CisKKy8qICAKKyAqICBTSEExSW5wdXQKKyAqCisgKiAgRGVzY3JpcHRpb246CisgKiAg
ICAgIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbiBhcnJheSBvZiBvY3RldHMgYXMgdGhlIG5leHQg
cG9ydGlvbiBvZgorICogICAgICB0aGUgbWVzc2FnZS4KKyAqCisgKiAgUGFyYW1ldGVyczoKKyAq
ICAgICAgY29udGV4dDogW2luL291dF0KKyAqICAgICAgICAgIFRoZSBTSEEtMSBjb250ZXh0IHRv
IHVwZGF0ZQorICogICAgICBtZXNzYWdlX2FycmF5OiBbaW5dCisgKiAgICAgICAgICBBbiBhcnJh
eSBvZiBjaGFyYWN0ZXJzIHJlcHJlc2VudGluZyB0aGUgbmV4dCBwb3J0aW9uIG9mIHRoZQorICog
ICAgICAgICAgbWVzc2FnZS4KKyAqICAgICAgbGVuZ3RoOiBbaW5dCisgKiAgICAgICAgICBUaGUg
bGVuZ3RoIG9mIHRoZSBtZXNzYWdlIGluIG1lc3NhZ2VfYXJyYXkKKyAqCisgKiAgUmV0dXJuczoK
KyAqICAgICAgTm90aGluZy4KKyAqCisgKiAgQ29tbWVudHM6CisgKgorICovCit2b2lkIHRzZl9T
SEExSW5wdXQoICAgICB0c2ZfU0hBMUNvbnRleHQgICAgICAgICAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKm1lc3NhZ2VfYXJyYXksCisgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIGxlbmd0aCkKK3sKKyAgICBpZiAoIWxl
bmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+
Q29tcHV0ZWQgfHwgY29udGV4dC0+Q29ycnVwdGVkKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
Q29ycnVwdGVkID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlKGxlbmd0
aC0tICYmICFjb250ZXh0LT5Db3JydXB0ZWQpCisgICAgeworICAgICAgICBjb250ZXh0LT5NZXNz
YWdlX0Jsb2NrW2NvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCptZXNzYWdlX2FycmF5ICYgMHhG
Rik7CisKKyAgICAgICAgY29udGV4dC0+TGVuZ3RoX0xvdyArPSA4OworICAgICAgICAvKiBGb3Jj
ZSBpdCB0byAzMiBiaXRzICovCisgICAgICAgIGNvbnRleHQtPkxlbmd0aF9Mb3cgJj0gMHhGRkZG
RkZGRjsKKyAgICAgICAgaWYgKGNvbnRleHQtPkxlbmd0aF9Mb3cgPT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29udGV4dC0+TGVuZ3RoX0hpZ2grKzsKKyAgICAgICAgICAgIC8qIEZvcmNl
IGl0IHRvIDMyIGJpdHMgKi8KKyAgICAgICAgICAgIGNvbnRleHQtPkxlbmd0aF9IaWdoICY9IDB4
RkZGRkZGRkY7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+TGVuZ3RoX0hpZ2ggPT0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBNZXNzYWdlIGlzIHRvbyBsb25nICovCisg
ICAgICAgICAgICAgICAgY29udGV4dC0+Q29ycnVwdGVkID0gMTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4ID09IDY0
KQorICAgICAgICB7CisgICAgICAgICAgICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayhjb250ZXh0
KTsKKyAgICAgICAgfQorCisgICAgICAgIG1lc3NhZ2VfYXJyYXkrKzsKKyAgICB9Cit9CisKKy8q
ICAKKyAqICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jaworICoKKyAqICBEZXNjcmlwdGlvbjoKKyAq
ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHByb2Nlc3MgdGhlIG5leHQgNTEyIGJpdHMgb2YgdGhl
IG1lc3NhZ2UKKyAqICAgICAgc3RvcmVkIGluIHRoZSBNZXNzYWdlX0Jsb2NrIGFycmF5LgorICoK
KyAqICBQYXJhbWV0ZXJzOgorICogICAgICBOb25lLgorICoKKyAqICBSZXR1cm5zOgorICogICAg
ICBOb3RoaW5nLgorICoKKyAqICBDb21tZW50czoKKyAqICAgICAgTWFueSBvZiB0aGUgdmFyaWFi
bGUgbmFtZXMgaW4gdGhlIFNIQUNvbnRleHQsIGVzcGVjaWFsbHkgdGhlCisgKiAgICAgIHNpbmds
ZSBjaGFyYWN0ZXIgbmFtZXMsIHdlcmUgdXNlZCBiZWNhdXNlIHRob3NlIHdlcmUgdGhlIG5hbWVz
CisgKiAgICAgIHVzZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgorICogICAgICAgICAKKyAqCisgKi8K
K3N0YXRpYyB2b2lkIFNIQTFQcm9jZXNzTWVzc2FnZUJsb2NrKHRzZl9TSEExQ29udGV4dCAqY29u
dGV4dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBLW10gPSAgICAgICAgICAgIC8qIENvbnN0YW50
cyBkZWZpbmVkIGluIFNIQS0xICAgKi8gICAgICAKKyAgICB7CisgICAgICAgIDB4NUE4Mjc5OTks
CisgICAgICAgIDB4NkVEOUVCQTEsCisgICAgICAgIDB4OEYxQkJDREMsCisgICAgICAgIDB4Q0E2
MkMxRDYKKyAgICB9OworICAgIGludDMyX3QgICAgICAgICB0OyAgICAgICAgICAgICAgICAgIC8q
IExvb3AgY291bnRlciAgICAgICAgICAgICAgICAgKi8KKyAgICB1aW50MzJfdCAgICB0ZW1wOyAg
ICAgICAgICAgICAgIC8qIFRlbXBvcmFyeSB3b3JkIHZhbHVlICAgICAgICAgKi8KKyAgICB1aW50
MzJfdCAgICBXWzgwXTsgICAgICAgICAgICAgIC8qIFdvcmQgc2VxdWVuY2UgICAgICAgICAgICAg
ICAgKi8KKyAgICB1aW50MzJfdCAgICBBLCBCLCBDLCBELCBFOyAgICAgIC8qIFdvcmQgYnVmZmVy
cyAgICAgICAgICAgICAgICAgKi8KKworICAgIC8qCisgICAgICogIEluaXRpYWxpemUgdGhlIGZp
cnN0IDE2IHdvcmRzIGluIHRoZSBhcnJheSBXCisgICAgICovCisgICAgZm9yKHQgPSAwOyB0IDwg
MTY7IHQrKykKKyAgICB7CisgICAgICAgIFdbdF0gPSAoKHVuc2lnbmVkKSBjb250ZXh0LT5NZXNz
YWdlX0Jsb2NrW3QgKiA0XSkgPDwgMjQ7CisgICAgICAgIFdbdF0gfD0gKCh1bnNpZ25lZCkgY29u
dGV4dC0+TWVzc2FnZV9CbG9ja1t0ICogNCArIDFdKSA8PCAxNjsKKyAgICAgICAgV1t0XSB8PSAo
KHVuc2lnbmVkKSBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW3QgKiA0ICsgMl0pIDw8IDg7CisgICAg
ICAgIFdbdF0gfD0gKCh1bnNpZ25lZCkgY29udGV4dC0+TWVzc2FnZV9CbG9ja1t0ICogNCArIDNd
KTsKKyAgICB9CisKKyAgICBmb3IodCA9IDE2OyB0IDwgODA7IHQrKykKKyAgICB7CisgICAgICAg
V1t0XSA9IFNIQTFDaXJjdWxhclNoaWZ0KDEsV1t0LTNdIF4gV1t0LThdIF4gV1t0LTE0XSBeIFdb
dC0xNl0pOworICAgIH0KKworICAgIEEgPSBjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFswXTsKKyAg
ICBCID0gY29udGV4dC0+TWVzc2FnZV9EaWdlc3RbMV07CisgICAgQyA9IGNvbnRleHQtPk1lc3Nh
Z2VfRGlnZXN0WzJdOworICAgIEQgPSBjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFszXTsKKyAgICBF
ID0gY29udGV4dC0+TWVzc2FnZV9EaWdlc3RbNF07CisKKyAgICBmb3IodCA9IDA7IHQgPCAyMDsg
dCsrKQorICAgIHsKKyAgICAgICAgdGVtcCA9ICBTSEExQ2lyY3VsYXJTaGlmdCg1LEEpICsKKyAg
ICAgICAgICAgICAgICAoKEIgJiBDKSB8ICgofkIpICYgRCkpICsgRSArIFdbdF0gKyBLWzBdOwor
ICAgICAgICB0ZW1wICY9IDB4RkZGRkZGRkY7CisgICAgICAgIEUgPSBEOworICAgICAgICBEID0g
QzsKKyAgICAgICAgQyA9IFNIQTFDaXJjdWxhclNoaWZ0KDMwLEIpOworICAgICAgICBCID0gQTsK
KyAgICAgICAgQSA9IHRlbXA7CisgICAgfQorCisgICAgZm9yKHQgPSAyMDsgdCA8IDQwOyB0Kysp
CisgICAgeworICAgICAgICB0ZW1wID0gU0hBMUNpcmN1bGFyU2hpZnQoNSxBKSArIChCIF4gQyBe
IEQpICsgRSArIFdbdF0gKyBLWzFdOworICAgICAgICB0ZW1wICY9IDB4RkZGRkZGRkY7CisgICAg
ICAgIEUgPSBEOworICAgICAgICBEID0gQzsKKyAgICAgICAgQyA9IFNIQTFDaXJjdWxhclNoaWZ0
KDMwLEIpOworICAgICAgICBCID0gQTsKKyAgICAgICAgQSA9IHRlbXA7CisgICAgfQorCisgICAg
Zm9yKHQgPSA0MDsgdCA8IDYwOyB0KyspCisgICAgeworICAgICAgICB0ZW1wID0gU0hBMUNpcmN1
bGFyU2hpZnQoNSxBKSArCisgICAgICAgICAgICAgICAoKEIgJiBDKSB8IChCICYgRCkgfCAoQyAm
IEQpKSArIEUgKyBXW3RdICsgS1syXTsKKyAgICAgICAgdGVtcCAmPSAweEZGRkZGRkZGOworICAg
ICAgICBFID0gRDsKKyAgICAgICAgRCA9IEM7CisgICAgICAgIEMgPSBTSEExQ2lyY3VsYXJTaGlm
dCgzMCxCKTsKKyAgICAgICAgQiA9IEE7CisgICAgICAgIEEgPSB0ZW1wOworICAgIH0KKworICAg
IGZvcih0ID0gNjA7IHQgPCA4MDsgdCsrKQorICAgIHsKKyAgICAgICAgdGVtcCA9IFNIQTFDaXJj
dWxhclNoaWZ0KDUsQSkgKyAoQiBeIEMgXiBEKSArIEUgKyBXW3RdICsgS1szXTsKKyAgICAgICAg
dGVtcCAmPSAweEZGRkZGRkZGOworICAgICAgICBFID0gRDsKKyAgICAgICAgRCA9IEM7CisgICAg
ICAgIEMgPSBTSEExQ2lyY3VsYXJTaGlmdCgzMCxCKTsKKyAgICAgICAgQiA9IEE7CisgICAgICAg
IEEgPSB0ZW1wOworICAgIH0KKworICAgIGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzBdID0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIChjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFswXSArIEEpICYg
MHhGRkZGRkZGRjsKKyAgICBjb250ZXh0LT5NZXNzYWdlX0RpZ2VzdFsxXSA9CisgICAgICAgICAg
ICAgICAgICAgICAgICAoY29udGV4dC0+TWVzc2FnZV9EaWdlc3RbMV0gKyBCKSAmIDB4RkZGRkZG
RkY7CisgICAgY29udGV4dC0+TWVzc2FnZV9EaWdlc3RbMl0gPQorICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzJdICsgQykgJiAweEZGRkZGRkZGOworICAg
IGNvbnRleHQtPk1lc3NhZ2VfRGlnZXN0WzNdID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChj
b250ZXh0LT5NZXNzYWdlX0RpZ2VzdFszXSArIEQpICYgMHhGRkZGRkZGRjsKKyAgICBjb250ZXh0
LT5NZXNzYWdlX0RpZ2VzdFs0XSA9CisgICAgICAgICAgICAgICAgICAgICAgICAoY29udGV4dC0+
TWVzc2FnZV9EaWdlc3RbNF0gKyBFKSAmIDB4RkZGRkZGRkY7CisKKyAgICBjb250ZXh0LT5NZXNz
YWdlX0Jsb2NrX0luZGV4ID0gMDsKK30KKworLyogIAorICogIFNIQTFQYWRNZXNzYWdlCisgKgor
ICogIERlc2NyaXB0aW9uOgorICogICAgICBBY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLCB0aGUg
bWVzc2FnZSBtdXN0IGJlIHBhZGRlZCB0byBhbiBldmVuCisgKiAgICAgIDUxMiBiaXRzLiAgVGhl
IGZpcnN0IHBhZGRpbmcgYml0IG11c3QgYmUgYSAnMScuICBUaGUgbGFzdCA2NAorICogICAgICBi
aXRzIHJlcHJlc2VudCB0aGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdlLiAgQWxsIGJp
dHMgaW4KKyAqICAgICAgYmV0d2VlbiBzaG91bGQgYmUgMC4gIFRoaXMgZnVuY3Rpb24gd2lsbCBw
YWQgdGhlIG1lc3NhZ2UKKyAqICAgICAgYWNjb3JkaW5nIHRvIHRob3NlIHJ1bGVzIGJ5IGZpbGxp
bmcgdGhlIE1lc3NhZ2VfQmxvY2sgYXJyYXkKKyAqICAgICAgYWNjb3JkaW5nbHkuICBJdCB3aWxs
IGFsc28gY2FsbCBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jaygpCisgKiAgICAgIGFwcHJvcHJpYXRl
bHkuICBXaGVuIGl0IHJldHVybnMsIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgdGhlCisgKiAgICAg
IG1lc3NhZ2UgZGlnZXN0IGhhcyBiZWVuIGNvbXB1dGVkLgorICoKKyAqICBQYXJhbWV0ZXJzOgor
ICogICAgICBjb250ZXh0OiBbaW4vb3V0XQorICogICAgICAgICAgVGhlIGNvbnRleHQgdG8gcGFk
CisgKgorICogIFJldHVybnM6CisgKiAgICAgIE5vdGhpbmcuCisgKgorICogIENvbW1lbnRzOgor
ICoKKyAqLworc3RhdGljIHZvaWQgU0hBMVBhZE1lc3NhZ2UodHNmX1NIQTFDb250ZXh0ICpjb250
ZXh0KQoreworICAgIC8qCisgICAgICogIENoZWNrIHRvIHNlZSBpZiB0aGUgY3VycmVudCBtZXNz
YWdlIGJsb2NrIGlzIHRvbyBzbWFsbCB0byBob2xkCisgICAgICogIHRoZSBpbml0aWFsIHBhZGRp
bmcgYml0cyBhbmQgbGVuZ3RoLiAgSWYgc28sIHdlIHdpbGwgcGFkIHRoZQorICAgICAqICBibG9j
aywgcHJvY2VzcyBpdCwgYW5kIHRoZW4gY29udGludWUgcGFkZGluZyBpbnRvIGEgc2Vjb25kCisg
ICAgICogIGJsb2NrLgorICAgICAqLworICAgIGlmIChjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0lu
ZGV4ID4gNTUpCisgICAgeworICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQt
Pk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAweDgwOworICAgICAgICB3aGlsZShjb250ZXh0LT5N
ZXNzYWdlX0Jsb2NrX0luZGV4IDwgNjQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
Pk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCsrXSA9IDA7CisgICAg
ICAgIH0KKworICAgICAgICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayhjb250ZXh0KTsKKworICAg
ICAgICB3aGlsZShjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4IDwgNTYpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9j
a19JbmRleCsrXSA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1tjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4Kytd
ID0gMHg4MDsKKyAgICAgICAgd2hpbGUoY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA8IDU2
KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQt
Pk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoK
KyAgICAgKiAgU3RvcmUgdGhlIG1lc3NhZ2UgbGVuZ3RoIGFzIHRoZSBsYXN0IDggb2N0ZXRzCisg
ICAgICovCisgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s1Nl0gPSAoY29udGV4dC0+TGVuZ3Ro
X0hpZ2ggPj4gMjQpICYgMHhGRjsKKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzU3XSA9IChj
b250ZXh0LT5MZW5ndGhfSGlnaCA+PiAxNikgJiAweEZGOworICAgIGNvbnRleHQtPk1lc3NhZ2Vf
QmxvY2tbNThdID0gKGNvbnRleHQtPkxlbmd0aF9IaWdoID4+IDgpICYgMHhGRjsKKyAgICBjb250
ZXh0LT5NZXNzYWdlX0Jsb2NrWzU5XSA9IChjb250ZXh0LT5MZW5ndGhfSGlnaCkgJiAweEZGOwor
ICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNjBdID0gKGNvbnRleHQtPkxlbmd0aF9Mb3cgPj4g
MjQpICYgMHhGRjsKKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzYxXSA9IChjb250ZXh0LT5M
ZW5ndGhfTG93ID4+IDE2KSAmIDB4RkY7CisgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s2Ml0g
PSAoY29udGV4dC0+TGVuZ3RoX0xvdyA+PiA4KSAmIDB4RkY7CisgICAgY29udGV4dC0+TWVzc2Fn
ZV9CbG9ja1s2M10gPSAoY29udGV4dC0+TGVuZ3RoX0xvdykgJiAweEZGOworCisgICAgU0hBMVBy
b2Nlc3NNZXNzYWdlQmxvY2soY29udGV4dCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTEuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTEuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogIHRzZl9zaGExLmgKKyAqCisgKiAgQ29weXJpZ2h0
IChDKSAxOTk4LCAyMDA5CisgKiAgUGF1bCBFLiBKb25lcyA8cGF1bGVqQHBhY2tldGl6ZXIuY29t
PgorICogIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq
ICAkSWQ6IHNoYTEuaCAxMiAyMDA5LTA2LTIyIDE5OjM0OjI1WiBwYXVsZWogJAorICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisgKgorICogIERlc2NyaXB0aW9uOgorICogICAgICBUaGlzIGNsYXNzIGlt
cGxlbWVudHMgdGhlIFNlY3VyZSBIYXNoaW5nIFN0YW5kYXJkIGFzIGRlZmluZWQKKyAqICAgICAg
aW4gRklQUyBQVUIgMTgwLTEgcHVibGlzaGVkIEFwcmlsIDE3LCAxOTk1LgorICoKKyAqICAgICAg
TWFueSBvZiB0aGUgdmFyaWFibGUgbmFtZXMgaW4gdGhlIFNIQTFDb250ZXh0LCBlc3BlY2lhbGx5
IHRoZQorICogICAgICBzaW5nbGUgY2hhcmFjdGVyIG5hbWVzLCB3ZXJlIHVzZWQgYmVjYXVzZSB0
aG9zZSB3ZXJlIHRoZSBuYW1lcworICogICAgICB1c2VkIGluIHRoZSBwdWJsaWNhdGlvbi4KKyAq
CisgKiAgICAgIFBsZWFzZSByZWFkIHRoZSBmaWxlIHNoYTEuYyBmb3IgbW9yZSBpbmZvcm1hdGlv
bi4KKyAqCisgKi8KKworI2lmbmRlZiBUU0ZfU0hBMV9IXworI2RlZmluZSBUU0ZfU0hBMV9IXwor
CisjaW5jbHVkZSAidHNmX3R5cGVzLmgiCisKKy8qIAorICogIFRoaXMgc3RydWN0dXJlIHdpbGwg
aG9sZCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciB0aGUgaGFzaGluZworICogIG9wZXJhdGlvbgor
ICovCit0eXBlZGVmIHN0cnVjdCB0c2ZfU0hBMUNvbnRleHQKK3sKKyAgICB1aW50MzJfdCBNZXNz
YWdlX0RpZ2VzdFs1XTsgLyogTWVzc2FnZSBEaWdlc3QgKG91dHB1dCkgICAgICAgICAgKi8KKwor
ICAgIHVpbnQzMl90IExlbmd0aF9Mb3c7ICAgICAgICAvKiBNZXNzYWdlIGxlbmd0aCBpbiBiaXRz
ICAgICAgICAgICAqLworICAgIHVpbnQzMl90IExlbmd0aF9IaWdoOyAgICAgICAvKiBNZXNzYWdl
IGxlbmd0aCBpbiBiaXRzICAgICAgICAgICAqLworCisgICAgdWludDhfdCBNZXNzYWdlX0Jsb2Nr
WzY0XTsgLyogNTEyLWJpdCBtZXNzYWdlIGJsb2NrcyAgICAgICovCisgICAgaW50MzJfdCBNZXNz
YWdlX0Jsb2NrX0luZGV4OyAgICAvKiBJbmRleCBpbnRvIG1lc3NhZ2UgYmxvY2sgYXJyYXkgICAq
LworCisgICAgaW50MzJfdCBDb21wdXRlZDsgICAgICAgICAgICAgICAvKiBJcyB0aGUgZGlnZXN0
IGNvbXB1dGVkPyAgICAgICAgICAqLworICAgIGludDMyX3QgQ29ycnVwdGVkOyAgICAgICAgICAg
ICAgLyogSXMgdGhlIG1lc3NhZ2UgZGlnZXN0IGNvcnJ1cGVkPyAgKi8KK30gdHNmX1NIQTFDb250
ZXh0OworCisvKgorICogIEZ1bmN0aW9uIFByb3RvdHlwZXMKKyAqLwordm9pZCB0c2ZfU0hBMVJl
c2V0KHRzZl9TSEExQ29udGV4dCAqKTsKK2ludDMyX3QgdHNmX1NIQTFSZXN1bHQodHNmX1NIQTFD
b250ZXh0ICopOwordm9pZCB0c2ZfU0hBMUlucHV0KCB0c2ZfU0hBMUNvbnRleHQgKiwKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqLAorICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCk7CisKKyNlbmRpZgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9zaGExX3dyaXRlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0
U3RyZWFtMi93YXNtL3RzZi90c2Zfc2hhMV93cml0ZXIuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3NoYTFfd3JpdGVyLmMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJuYWwuaCIKKwordHNm
X3NoYTFfd3RyX3QgKnRzZl9zaGExX3dyaXRlcl9jcmVhdGUodm9pZCkgeworICAgIHRzZl9zaGEx
X3d0cl90ICpyZXN1bHQ9bWFsbG9jKHNpemVvZih0c2Zfc2hhMV93dHJfdCkpOworICAgIGlmIChy
ZXN1bHQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0
c2Zfc2hhMV93dHJfdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAg
dHNmX1NIQTFSZXNldCgmcmVzdWx0LT5jdHgpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3ZvaWQgdHNmX3NoYTFfd3JpdGVyX2Rlc3Ryb3kodHNmX3NoYTFfd3RyX3QgKnNoYTEpIHsK
KyAgICBmcmVlKHNoYTEpOworfQorCit0c2ZfYm9vbF90IHRzZl9zaGExX3dyaXRlcl93cml0ZSh2
b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpi
dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pIHsKKyAg
ICB0c2Zfc2hhMV93dHJfdCAqc2hhMT0odHNmX3NoYTFfd3RyX3QqKWFyZzsKKyAgICAKKyAgICBp
ZiAoc2hhMS0+Y3R4LkNvbXB1dGVkKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfQkFE
X1NUQVRFLAorICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgd3JpdGUgdXNpbmcgYSBTSEEx
IHdyaXRlciBhZnRlciAiCisgICAgICAgICAgICAgICAgICAgICAgInRzZl9zaGExX3dyaXRlcl9m
aW5pc2goKSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICB9CisgICAgCisgICAgdHNmX1NIQTFJbnB1dCgmc2hhMS0+Y3R4LCAoY29uc3QgdWludDhfdCop
YnVmLCBsZW4pOworICAgIAorICAgIGlmIChzaGExLT5jdHguQ29ycnVwdGVkKSB7CisgICAgICAg
IHRzZl9zZXRfZXJyb3IoVFNGX0VfSU5URVJOQUwsCisgICAgICAgICAgICAgICAgICAgICAgIlNI
QTEgd3JpdGVyIGhhcyBiZWVuIGNvcnJ1cHRlZC4iKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit1aW50MzJfdCAqdHNm
X3NoYTFfd3JpdGVyX2ZpbmlzaCh0c2Zfc2hhMV93dHJfdCAqc2hhMSkgeworICAgIGludDMyX3Qg
cmVzdWx0PXRzZl9TSEExUmVzdWx0KCZzaGExLT5jdHgpOworICAgIGlmICghcmVzdWx0KSB7Cisg
ICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfSU5URVJOQUwsCisgICAgICAgICAgICAgICAgICAg
ICAgIlNIQTEgd3JpdGVyIGhhcyBiZWVuIGNvcnJ1cHRlZCBhbmQgdGhlIHJlc3VsdCBjYW5ub3Qg
IgorICAgICAgICAgICAgICAgICAgICAgICJiZSBjb21wdXRlZC4iKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2Zfc2hhMV93cml0ZXJfcmVzdWx0KHNo
YTEpOworfQorCit1aW50MzJfdCAqdHNmX3NoYTFfd3JpdGVyX3Jlc3VsdCh0c2Zfc2hhMV93dHJf
dCAqc2hhMSkgeworICAgIHJldHVybiBzaGExLT5jdHguTWVzc2FnZV9EaWdlc3Q7Cit9CisKK2No
YXIgKnRzZl9zaGExX3N1bV90b19zdHIodWludDMyX3QgKnN1bSkgeworICAgIGNvbnN0IGNoYXIg
KmhleD0iMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgdW5zaWduZWQgaTsKKyAgICBjaGFyICpyZXN1
bHQ7CisgICAgY2hhciAqY3VyOworICAgIAorICAgIGlmIChzdW09PU5VTEwpIHsKKyAgICAgICAg
LyogcHJvcGFnYXRlIHRoZSBlcnJvci4gKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIHJlc3VsdD1tYWxsb2MoNDEpOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAg
ICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyByZXN1bHQgaW4gdHNmX3NoYTFf
c3VtX3RvX3N0cigpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBj
dXI9cmVzdWx0OworICAgIAorICAgIGZvciAoaT0wO2k8NTsrK2kpIHsKKyAgICAgICAgdWludDMy
X3Qgd29yZDsKKyAgICAgICAgdW5zaWduZWQgajsKKyAgICAgICAgCisgICAgICAgIHdvcmQ9c3Vt
W2ldOworCisgICAgICAgIGZvciAoaj0wO2o8NDsrK2opIHsKKyAgICAgICAgICAgICpjdXIrKyA9
IGhleFsod29yZD4+MjgpJjB4Rl07CisgICAgICAgICAgICAqY3VyKysgPSBoZXhbKHdvcmQ+PjI0
KSYweEZdOworICAgICAgICAgICAgCisgICAgICAgICAgICB3b3JkPDw9ODsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICAqY3VyPTA7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zb3J0LmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zb3J0
LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNm
L3RzZl9zb3J0LmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwMyBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5h
bC5oIgorCisjaWZkZWYgSEFWRV9RU09SVAorCit2b2lkIHRzZl9zb3J0KHZvaWQgKmJhc2Usc2l6
ZV90IG5tZW1iLHNpemVfdCBzaXplLAorICAgICAgICAgICAgICBpbnQgKCpjb21wYXIpKGNvbnN0
IHZvaWQgKmEsY29uc3Qgdm9pZCAqYikpIHsKKyAgICBxc29ydChiYXNlLG5tZW1iLHNpemUsY29t
cGFyKTsKK30KKworI2Vsc2UKKworI2Vycm9yICJJIGhhdmVuJ3Qgd3JpdHRlbiBteSBvd24gc29y
dGluZyBhbGdvcml0aG0geWV0LiAgQnVtbWVyLiIKKworI2VuZGlmCisKK3N0YXRpYyBpbnQgdWkz
Ml9jb21wYXJlKGNvbnN0IHZvaWQgKnBhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGIpIHsKKyAgICB1aW50MzJfdCBhID0gKigodWludDMyX3QqKXBhKSwKKyAgICAgICAg
ICAgICBiID0gKigodWludDMyX3QqKXBiKTsKKyAgICAKKyAgICBpZiAoYTxiKSB7CisgICAgICAg
IHJldHVybiAtMTsKKyAgICB9IGVsc2UgaWYgKGE9PWIpIHsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCit2b2lkIHRzZl91aTMy
X3NvcnQodWludDMyX3QgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5tZW1iKSB7
CisgICAgdHNmX3NvcnQoYmFzZSxubWVtYixzaXplb2YodWludDMyX3QpLHVpMzJfY29tcGFyZSk7
Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc3Qu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3N0LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20v
dHNmL3RzZl9zdC5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjA0IEBACisvKiB0aGlzIGZp
bGUgaGFzIGJlZW4gbW9kaWZpZWQgYWdhaW4gYnkgRmlsaXAgUGl6bG8sIDIwMDMsIDIwMDQsIDIw
MDUsIHRvIGJlCisgKiBpbmNvcnBvcmF0ZWQgaW50byB0c2YuICovCisvKiB0aGlzIGZpbGUgaGFz
IGJlZW4gbW9kaWZpZWQgYnkgRmlsaXAgUGl6bG8sIDIwMDIsIHRvIHN1cHBvcnQgQysrICovCisv
KiBUaGlzIGlzIGEgcHVibGljIGRvbWFpbiBnZW5lcmFsIHB1cnBvc2UgaGFzaCB0YWJsZSBwYWNr
YWdlIHdyaXR0ZW4gYnkgUGV0ZXIgTW9vcmUgQCBVQ0IuICovCisKKy8qIEZJWE1FOiBtYWtlIHRo
aXMgY29kZSBjaGVjayBmb3Igb3V0LW9mLW1lbW9yeSBlcnJvcnMgYW5kIGRvIHRoZQorICogcmln
aHQgdGhpbmcsIHdoaWNoIHNob3VsZCBpbmNsdWRlIHVzaW5nIHRzZl9zZXRfZXJyb3IoKSBhbmQg
ZnJpZW5kcy4gKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgPHN0ZGlv
Lmg+CisKKyNpZmRlZiBOVAorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2VuZGlmCisKKyNkZWZpbmUg
VFNGX1NUX0RFRkFVTFRfTUFYX0RFTlNJVFkgNQorI2RlZmluZSBUU0ZfU1RfREVGQVVMVF9JTklU
X1RBQkxFX1NJWkUgMTEKKworICAgIC8qCisgICAgICogREVGQVVMVF9NQVhfREVOU0lUWSBpcyB0
aGUgZGVmYXVsdCBmb3IgdGhlIGxhcmdlc3Qgd2UgYWxsb3cgdGhlCisgICAgICogYXZlcmFnZSBu
dW1iZXIgb2YgaXRlbXMgcGVyIGJpbiBiZWZvcmUgaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mCisg
ICAgICogYmlucworICAgICAqCisgICAgICogREVGQVVMVF9JTklUX1RBQkxFX1NJWkUgaXMgdGhl
IGRlZmF1bHQgZm9yIHRoZSBudW1iZXIgb2YgYmlucworICAgICAqIGFsbG9jYXRlZCBpbml0aWFs
bHkKKyAgICAgKgorICAgICAqLworCitzdGF0aWMgaW50IG51bWNtcCgpOworc3RhdGljIGludCBu
dW1oYXNoKCk7CitzdGF0aWMgc3RydWN0IHRzZl9zdF9oYXNoX3R5cGUgdHlwZV9udW1oYXNoID0g
eworICAgIG51bWNtcCwKKyAgICBudW1oYXNoLAorfTsKKworc3RhdGljIGludCBwdHJjbXAoKTsK
K3N0YXRpYyBzdHJ1Y3QgdHNmX3N0X2hhc2hfdHlwZSB0eXBlX3B0cmhhc2ggPSB7CisgICAgcHRy
Y21wLAorICAgIHRzZl9zdF9wdHJoYXNoLAorfTsKKworI3VuZGVmIHN0cmNtcAorZXh0ZXJuIGlu
dCBzdHJjbXAoKTsKK2ludCB0c2Zfc3Rfc3RyaGFzaCgpOworc3RhdGljIHN0cnVjdCB0c2Zfc3Rf
aGFzaF90eXBlIHR5cGVfc3RyaGFzaCA9IHsKKyAgICBzdHJjbXAsCisgICAgdHNmX3N0X3N0cmhh
c2gsCit9OworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZGVmaW5lIHhtYWxsb2MgbWFsbG9jCisj
ZGVmaW5lIHhjYWxsb2MgY2FsbG9jCisjZGVmaW5lIHhyZWFsbG9jIHJlYWxsb2MKKyNkZWZpbmUg
eGZyZWUgZnJlZQorCitzdGF0aWMgaW50IHJlaGFzaCgpOworCisjZGVmaW5lIGFsbG9jKHR5cGUp
ICh0eXBlKil4bWFsbG9jKCh1bnNpZ25lZClzaXplb2YodHlwZSkpCisjZGVmaW5lIENhbGxvYyhu
LHMpIChjaGFyKil4Y2FsbG9jKChuKSwocykpCisKKyNkZWZpbmUgRVFVQUwodGFibGUseCx5KSAo
KHgpPT0oeSkgfHwgKCp0YWJsZS0+dHlwZS0+Y29tcGFyZSkoKHgpLCh5KSkgPT0gMCkKKworI2Rl
ZmluZSBkb19oYXNoKGtleSx0YWJsZSkgKHVuc2lnbmVkIGludCkoKih0YWJsZSktPnR5cGUtPmhh
c2gpKChrZXkpKQorI2RlZmluZSBkb19oYXNoX2JpbihrZXksdGFibGUpIChkb19oYXNoKGtleSwg
dGFibGUpJih0YWJsZSktPm51bV9iaW5zKQorCisvKgorICogTUlOU0laRSBpcyB0aGUgbWluaW11
bSBzaXplIG9mIGEgZGljdGlvbmFyeS4KKyAqLworCisjZGVmaW5lIE1JTlNJWkUgOAorCitzdGF0
aWMgaW50CituZXdfc2l6ZShzaXplKQorICAgIGludCBzaXplOworeworICAgIGludCBpOworCisg
ICAgZm9yIChpPTM7IGk8MzE7IGkrKykgeworICAgICAgICBpZiAoKDE8PGkpID4gc2l6ZSkgcmV0
dXJuIDE8PGk7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKworI2lmZGVmIEhBU0hfTE9HCitz
dGF0aWMgaW50IGNvbGxpc2lvbiA9IDA7CitzdGF0aWMgaW50IGluaXRfc3QgPSAwOworCitzdGF0
aWMgdm9pZAorc3RhdF9jb2woKQoreworICAgIEZJTEUgKmYgPSBmb3BlbigiL3RtcC9jb2wiLCAi
dyIpOworICAgIGZwcmludGYoZiwgImNvbGxpc2lvbjogJWRcbiIsIGNvbGxpc2lvbik7CisgICAg
ZmNsb3NlKGYpOworfQorI2VuZGlmCisKK3RzZl9zdF90YWJsZSoKK3RzZl9zdF9pbml0X3RhYmxl
X3dpdGhfc2l6ZSh0eXBlLCBzaXplKQorICAgIHN0cnVjdCB0c2Zfc3RfaGFzaF90eXBlICp0eXBl
OworICAgIGludCBzaXplOworeworICAgIHRzZl9zdF90YWJsZSAqdGJsOworCisjaWZkZWYgSEFT
SF9MT0cKKyAgICBpZiAoaW5pdF9zdCA9PSAwKSB7CisgICAgICAgIGluaXRfc3QgPSAxOworICAg
ICAgICBhdGV4aXQoc3RhdF9jb2wpOworICAgIH0KKyNlbmRpZgorCisgICAgc2l6ZSA9IG5ld19z
aXplKHNpemUpOyAgICAgIC8qIHJvdW5kIHVwIHRvIHByaW1lIG51bWJlciAqLworCisgICAgdGJs
ID0gYWxsb2ModHNmX3N0X3RhYmxlKTsKKyAgICBpZiAodGJsPT1OVUxMKSB7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICB0YmwtPnR5cGUgPSB0eXBlOworICAgIHRibC0+bnVtX2Vu
dHJpZXMgPSAwOworICAgIHRibC0+bnVtX2JpbnMgPSBzaXplLTE7CisgICAgdGJsLT5iaW5zID0g
KHRzZl9zdF90YWJsZV9lbnRyeSAqKilDYWxsb2Moc2l6ZSwgc2l6ZW9mKHRzZl9zdF90YWJsZV9l
bnRyeSopKTsKKyAgICBpZiAodGJsLT5iaW5zPT1OVUxMKSB7CisgICAgICAgIGZyZWUodGJsKTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHRibDsKK30KKwordHNm
X3N0X3RhYmxlKgordHNmX3N0X2luaXRfdGFibGUodHlwZSkKKyAgICBzdHJ1Y3QgdHNmX3N0X2hh
c2hfdHlwZSAqdHlwZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXpl
KHR5cGUsIDApOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9udW10YWJsZSgpCit7
CisgICAgcmV0dXJuIHRzZl9zdF9pbml0X3RhYmxlKCZ0eXBlX251bWhhc2gpOworfQorCit0c2Zf
c3RfdGFibGUqCit0c2Zfc3RfaW5pdF9udW10YWJsZV93aXRoX3NpemUoc2l6ZSkKKyAgICBpbnQg
c2l6ZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXplKCZ0eXBlX251
bWhhc2gsIHNpemUpOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9wdHJ0YWJsZSgp
Cit7CisgICAgcmV0dXJuIHRzZl9zdF9pbml0X3RhYmxlKCZ0eXBlX3B0cmhhc2gpOworfQorCit0
c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9wdHJ0YWJsZV93aXRoX3NpemUoc2l6ZSkKKyAgICBp
bnQgc2l6ZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXplKCZ0eXBl
X3B0cmhhc2gsIHNpemUpOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9zdHJ0YWJs
ZSgpCit7CisgICAgcmV0dXJuIHRzZl9zdF9pbml0X3RhYmxlKCZ0eXBlX3N0cmhhc2gpOworfQor
Cit0c2Zfc3RfdGFibGUqCit0c2Zfc3RfaW5pdF9zdHJ0YWJsZV93aXRoX3NpemUoc2l6ZSkKKyAg
ICBpbnQgc2l6ZTsKK3sKKyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGVfd2l0aF9zaXplKCZ0
eXBlX3N0cmhhc2gsIHNpemUpOworfQorCit2b2lkCit0c2Zfc3RfZnJlZV90YWJsZSh0YWJsZSkK
KyAgICB0c2Zfc3RfdGFibGUgKnRhYmxlOworeworICAgIHJlZ2lzdGVyIHRzZl9zdF90YWJsZV9l
bnRyeSAqcHRyLCAqbmV4dDsKKyAgICBpbnQgaTsKKworICAgIGZvcihpID0gMDsgaSA8PSB0YWJs
ZS0+bnVtX2JpbnM7IGkrKykgeworICAgICAgICBwdHIgPSB0YWJsZS0+Ymluc1tpXTsKKyAgICAg
ICAgd2hpbGUgKHB0ciAhPSAwKSB7CisgICAgICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OworICAg
ICAgICAgICAgZnJlZShwdHIpOworICAgICAgICAgICAgcHRyID0gbmV4dDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBmcmVlKHRhYmxlLT5iaW5zKTsKKyAgICBmcmVlKHRhYmxlKTsKK30KKworI2Rl
ZmluZSBQVFJfTk9UX0VRVUFMKHRhYmxlLCBwdHIsIGhhc2hfdmFsLCBrZXkpIFwKKygocHRyKSAh
PSAwICYmIChwdHItPmhhc2ggIT0gKGhhc2hfdmFsKSB8fCAhRVFVQUwoKHRhYmxlKSwgKGtleSks
IChwdHIpLT5rZXkpKSkKKworI2lmZGVmIEhBU0hfTE9HCisjZGVmaW5lIENPTExJU0lPTiBjb2xs
aXNpb24rKworI2Vsc2UKKyNkZWZpbmUgQ09MTElTSU9OCisjZW5kaWYKKworI2RlZmluZSBGSU5E
X0VOVFJZKHRhYmxlLCBwdHIsIGhhc2hfdmFsLCBiaW5fcG9zKSBcCitiaW5fcG9zID0gaGFzaF92
YWwmKHRhYmxlKS0+bnVtX2JpbnM7XAorcHRyID0gKHRhYmxlKS0+Ymluc1tiaW5fcG9zXTtcCitp
ZiAoUFRSX05PVF9FUVVBTCh0YWJsZSwgcHRyLCBoYXNoX3ZhbCwga2V5KSkge1wKKyAgICBDT0xM
SVNJT047XAorICAgIHdoaWxlIChQVFJfTk9UX0VRVUFMKHRhYmxlLCBwdHItPm5leHQsIGhhc2hf
dmFsLCBrZXkpKSB7XAorICAgICAgICBwdHIgPSBwdHItPm5leHQ7XAorICAgIH1cCisgICAgcHRy
ID0gcHRyLT5uZXh0O1wKK30KKworaW50Cit0c2Zfc3RfbG9va3VwKHRhYmxlLCBrZXksIHZhbHVl
KQorICAgIHRzZl9zdF90YWJsZSAqdGFibGU7CisgICAgcmVnaXN0ZXIgY2hhciAqa2V5OworICAg
IHZvaWQgKip2YWx1ZTsKK3sKKyAgICB1bnNpZ25lZCBpbnQgaGFzaF92YWwsIGJpbl9wb3M7Cisg
ICAgcmVnaXN0ZXIgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHI7CisKKyAgICBoYXNoX3ZhbCA9IGRv
X2hhc2goa2V5LCB0YWJsZSk7CisgICAgRklORF9FTlRSWSh0YWJsZSwgcHRyLCBoYXNoX3ZhbCwg
YmluX3Bvcyk7CisKKyAgICBpZiAocHRyID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICE9IDApICAqdmFsdWUgPSBwdHItPnJlY29yZDsK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisjZGVmaW5lIEFERF9ESVJFQ1QodGFibGUs
IGtleSwgdmFsdWUsIGhhc2hfdmFsLCBiaW5fcG9zKVwKK3tcCisgICAgdHNmX3N0X3RhYmxlX2Vu
dHJ5ICplbnRyeTtcCisgICAgaWYgKHRhYmxlLT5udW1fZW50cmllcy8odGFibGUtPm51bV9iaW5z
KzEpID4gVFNGX1NUX0RFRkFVTFRfTUFYX0RFTlNJVFkpIHtcCisgICAgICAgIGlmIChyZWhhc2go
dGFibGUpPDApIHtcCisgICAgICAgICAgICByZXR1cm4gLTE7XAorICAgICAgICB9XAorICAgICAg
ICBiaW5fcG9zID0gaGFzaF92YWwgJiB0YWJsZS0+bnVtX2JpbnM7XAorICAgIH1cCisgICAgXAor
ICAgIGVudHJ5ID0gYWxsb2ModHNmX3N0X3RhYmxlX2VudHJ5KTtcCisgICAgaWYgKGVudHJ5PT1O
VUxMKSB7XAorICAgICAgICByZXR1cm4gLTE7XAorICAgIH1cCisgICAgXAorICAgIGVudHJ5LT5o
YXNoID0gaGFzaF92YWw7XAorICAgIGVudHJ5LT5rZXkgPSBrZXk7XAorICAgIGVudHJ5LT5yZWNv
cmQgPSB2YWx1ZTtcCisgICAgZW50cnktPm5leHQgPSB0YWJsZS0+Ymluc1tiaW5fcG9zXTtcCisg
ICAgdGFibGUtPmJpbnNbYmluX3Bvc10gPSBlbnRyeTtcCisgICAgdGFibGUtPm51bV9lbnRyaWVz
Kys7XAorfQorCisvKiBtYWtlIHRoaXMgZnVuY3Rpb24gcmV0dXJuIC0xIG9uIGVycm9yISAqLwor
aW50Cit0c2Zfc3RfaW5zZXJ0KHRhYmxlLCBrZXksIHZhbHVlKQorICAgIHJlZ2lzdGVyIHRzZl9z
dF90YWJsZSAqdGFibGU7CisgICAgcmVnaXN0ZXIgY2hhciAqa2V5OworICAgIHZvaWQgKnZhbHVl
OworeworICAgIHVuc2lnbmVkIGludCBoYXNoX3ZhbCwgYmluX3BvczsKKyAgICByZWdpc3RlciB0
c2Zfc3RfdGFibGVfZW50cnkgKnB0cjsKKworICAgIGhhc2hfdmFsID0gZG9faGFzaChrZXksIHRh
YmxlKTsKKyAgICBGSU5EX0VOVFJZKHRhYmxlLCBwdHIsIGhhc2hfdmFsLCBiaW5fcG9zKTsKKwor
ICAgIGlmIChwdHIgPT0gMCkgeworICAgICAgICBBRERfRElSRUNUKHRhYmxlLCBrZXksIHZhbHVl
LCBoYXNoX3ZhbCwgYmluX3Bvcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHB0ci0+cmVjb3JkID0gdmFsdWU7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30K
KworLyogbWFrZSB0aGlzIGZ1bmN0aW9uIHJldHVybiAtMSBvbiBlcnJvciEgKi8KK2ludAordHNm
X3N0X2luc2VydF9ub3JlcGxhY2UodGFibGUsIGtleSwgdmFsdWUpCisgICAgcmVnaXN0ZXIgdHNm
X3N0X3RhYmxlICp0YWJsZTsKKyAgICByZWdpc3RlciBjaGFyICprZXk7CisgICAgdm9pZCAqdmFs
dWU7Cit7CisgICAgdW5zaWduZWQgaW50IGhhc2hfdmFsLCBiaW5fcG9zOworICAgIHJlZ2lzdGVy
IHRzZl9zdF90YWJsZV9lbnRyeSAqcHRyOworCisgICAgaGFzaF92YWwgPSBkb19oYXNoKGtleSwg
dGFibGUpOworICAgIEZJTkRfRU5UUlkodGFibGUsIHB0ciwgaGFzaF92YWwsIGJpbl9wb3MpOwor
CisgICAgaWYgKHB0ciA9PSAwKSB7CisgICAgICAgIEFERF9ESVJFQ1QodGFibGUsIGtleSwgdmFs
dWUsIGhhc2hfdmFsLCBiaW5fcG9zKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisvKiBtYWtlIHRoaXMgZnVuY3Rpb24gcmV0
dXJuIC0xIG9uIGVycm9yISAqLworaW50Cit0c2Zfc3RfYWRkX2RpcmVjdCh0YWJsZSwga2V5LCB2
YWx1ZSkKKyAgICB0c2Zfc3RfdGFibGUgKnRhYmxlOworICAgIGNoYXIgKmtleTsKKyAgICB2b2lk
ICp2YWx1ZTsKK3sKKyAgICB1bnNpZ25lZCBpbnQgaGFzaF92YWwsIGJpbl9wb3M7CisKKyAgICBo
YXNoX3ZhbCA9IGRvX2hhc2goa2V5LCB0YWJsZSk7CisgICAgYmluX3BvcyA9IGhhc2hfdmFsICYg
dGFibGUtPm51bV9iaW5zOworICAgIEFERF9ESVJFQ1QodGFibGUsIGtleSwgdmFsdWUsIGhhc2hf
dmFsLCBiaW5fcG9zKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorcmVo
YXNoKHRhYmxlKQorICAgIHJlZ2lzdGVyIHRzZl9zdF90YWJsZSAqdGFibGU7Cit7CisgICAgcmVn
aXN0ZXIgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHIsICpuZXh0LCAqKm5ld19iaW5zOworICAgIGlu
dCBpLCBvbGRfbnVtX2JpbnMgPSB0YWJsZS0+bnVtX2JpbnMsIG5ld19udW1fYmluczsKKyAgICB1
bnNpZ25lZCBpbnQgaGFzaF92YWw7CisKKyAgICBuZXdfbnVtX2JpbnMgPSBuZXdfc2l6ZShvbGRf
bnVtX2JpbnMrMSk7CisgICAgbmV3X2JpbnMgPSAodHNmX3N0X3RhYmxlX2VudHJ5KiopQ2FsbG9j
KG5ld19udW1fYmlucywgc2l6ZW9mKHRzZl9zdF90YWJsZV9lbnRyeSopKTsKKyAgICBpZiAobmV3
X2JpbnM9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG5ld19udW1f
Ymlucy0tOworICAgIGZvcihpID0gMDsgaSA8PSBvbGRfbnVtX2JpbnM7IGkrKykgeworICAgICAg
ICBwdHIgPSB0YWJsZS0+Ymluc1tpXTsKKyAgICAgICAgd2hpbGUgKHB0ciAhPSAwKSB7CisgICAg
ICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OworICAgICAgICAgICAgaGFzaF92YWwgPSBwdHItPmhh
c2ggJiBuZXdfbnVtX2JpbnM7CisgICAgICAgICAgICBwdHItPm5leHQgPSBuZXdfYmluc1toYXNo
X3ZhbF07CisgICAgICAgICAgICBuZXdfYmluc1toYXNoX3ZhbF0gPSBwdHI7CisgICAgICAgICAg
ICBwdHIgPSBuZXh0OworICAgICAgICB9CisgICAgfQorICAgIGZyZWUodGFibGUtPmJpbnMpOwor
ICAgIHRhYmxlLT5udW1fYmlucyA9IG5ld19udW1fYmluczsKKyAgICB0YWJsZS0+YmlucyA9IG5l
d19iaW5zOworICAgIAorICAgIHJldHVybiAwOworfQorCit0c2Zfc3RfdGFibGUqCit0c2Zfc3Rf
Y29weShvbGRfdGFibGUpCisgICAgdHNmX3N0X3RhYmxlICpvbGRfdGFibGU7Cit7CisgICAgdHNm
X3N0X3RhYmxlICpuZXdfdGFibGU7CisgICAgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHIsICplbnRy
eTsKKyAgICBpbnQgaSwgbnVtX2JpbnMgPSBvbGRfdGFibGUtPm51bV9iaW5zKzE7CisKKyAgICBu
ZXdfdGFibGUgPSBhbGxvYyh0c2Zfc3RfdGFibGUpOworICAgIGlmIChuZXdfdGFibGUgPT0gTlVM
TCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAqbmV3X3RhYmxlID0gKm9s
ZF90YWJsZTsKKyAgICBuZXdfdGFibGUtPmJpbnMgPSAodHNmX3N0X3RhYmxlX2VudHJ5KiopCisg
ICAgICAgIENhbGxvYygodW5zaWduZWQpbnVtX2JpbnMsIHNpemVvZih0c2Zfc3RfdGFibGVfZW50
cnkqKSk7CisKKyAgICBpZiAobmV3X3RhYmxlLT5iaW5zID09IE5VTEwpIHsKKyAgICAgICAgZnJl
ZShuZXdfdGFibGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IoaSA9
IDA7IGkgPCBudW1fYmluczsgaSsrKSB7CisgICAgICAgIG5ld190YWJsZS0+Ymluc1tpXSA9IDA7
CisgICAgICAgIHB0ciA9IG9sZF90YWJsZS0+Ymluc1tpXTsKKyAgICAgICAgd2hpbGUgKHB0ciAh
PSAwKSB7CisgICAgICAgICAgICBlbnRyeSA9IGFsbG9jKHRzZl9zdF90YWJsZV9lbnRyeSk7Cisg
ICAgICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWUobmV3
X3RhYmxlLT5iaW5zKTsKKyAgICAgICAgICAgICAgICBmcmVlKG5ld190YWJsZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqZW50cnkg
PSAqcHRyOworICAgICAgICAgICAgZW50cnktPm5leHQgPSBuZXdfdGFibGUtPmJpbnNbaV07Cisg
ICAgICAgICAgICBuZXdfdGFibGUtPmJpbnNbaV0gPSBlbnRyeTsKKyAgICAgICAgICAgIHB0ciA9
IHB0ci0+bmV4dDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbmV3X3RhYmxlOworfQor
CitpbnQKK3RzZl9zdF9kZWxldGUodGFibGUsIGtleSwgdmFsdWUpCisgICAgcmVnaXN0ZXIgdHNm
X3N0X3RhYmxlICp0YWJsZTsKKyAgICByZWdpc3RlciBjaGFyICoqa2V5OworICAgIHZvaWQgKip2
YWx1ZTsKK3sKKyAgICB1bnNpZ25lZCBpbnQgaGFzaF92YWw7CisgICAgdHNmX3N0X3RhYmxlX2Vu
dHJ5ICp0bXA7CisgICAgcmVnaXN0ZXIgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHI7CisKKyAgICBo
YXNoX3ZhbCA9IGRvX2hhc2hfYmluKCprZXksIHRhYmxlKTsKKyAgICBwdHIgPSB0YWJsZS0+Ymlu
c1toYXNoX3ZhbF07CisKKyAgICBpZiAocHRyID09IDApIHsKKyAgICAgICAgaWYgKHZhbHVlICE9
IDApICp2YWx1ZSA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChFUVVB
TCh0YWJsZSwgKmtleSwgcHRyLT5rZXkpKSB7CisgICAgICAgIHRhYmxlLT5iaW5zW2hhc2hfdmFs
XSA9IHB0ci0+bmV4dDsKKyAgICAgICAgdGFibGUtPm51bV9lbnRyaWVzLS07CisgICAgICAgIGlm
ICh2YWx1ZSAhPSAwKSAqdmFsdWUgPSBwdHItPnJlY29yZDsKKyAgICAgICAgKmtleSA9IHB0ci0+
a2V5OworICAgICAgICBmcmVlKHB0cik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAg
IGZvcig7IHB0ci0+bmV4dCAhPSAwOyBwdHIgPSBwdHItPm5leHQpIHsKKyAgICAgICAgaWYgKEVR
VUFMKHRhYmxlLCBwdHItPm5leHQtPmtleSwgKmtleSkpIHsKKyAgICAgICAgICAgIHRtcCA9IHB0
ci0+bmV4dDsKKyAgICAgICAgICAgIHB0ci0+bmV4dCA9IHB0ci0+bmV4dC0+bmV4dDsKKyAgICAg
ICAgICAgIHRhYmxlLT5udW1fZW50cmllcy0tOworICAgICAgICAgICAgaWYgKHZhbHVlICE9IDAp
ICp2YWx1ZSA9IHRtcC0+cmVjb3JkOworICAgICAgICAgICAgKmtleSA9IHRtcC0+a2V5OworICAg
ICAgICAgICAgZnJlZSh0bXApOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50Cit0c2Zfc3RfZGVsZXRlX3NhZmUodGFibGUs
IGtleSwgdmFsdWUsIG5ldmVyKQorICAgIHJlZ2lzdGVyIHRzZl9zdF90YWJsZSAqdGFibGU7Cisg
ICAgcmVnaXN0ZXIgY2hhciAqKmtleTsKKyAgICB2b2lkICoqdmFsdWU7CisgICAgY2hhciAqbmV2
ZXI7Cit7CisgICAgdW5zaWduZWQgaW50IGhhc2hfdmFsOworICAgIHJlZ2lzdGVyIHRzZl9zdF90
YWJsZV9lbnRyeSAqcHRyOworCisgICAgaGFzaF92YWwgPSBkb19oYXNoX2Jpbigqa2V5LCB0YWJs
ZSk7CisgICAgcHRyID0gdGFibGUtPmJpbnNbaGFzaF92YWxdOworCisgICAgaWYgKHB0ciA9PSAw
KSB7CisgICAgICAgIGlmICh2YWx1ZSAhPSAwKSAqdmFsdWUgPSAwOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBmb3IoOyBwdHIgIT0gMDsgcHRyID0gcHRyLT5uZXh0KSB7CisgICAg
ICAgIGlmICgocHRyLT5rZXkgIT0gbmV2ZXIpICYmIEVRVUFMKHRhYmxlLCBwdHItPmtleSwgKmtl
eSkpIHsKKyAgICAgICAgICAgIHRhYmxlLT5udW1fZW50cmllcy0tOworICAgICAgICAgICAgKmtl
eSA9IHB0ci0+a2V5OworICAgICAgICAgICAgaWYgKHZhbHVlICE9IDApICp2YWx1ZSA9IHB0ci0+
cmVjb3JkOworICAgICAgICAgICAgcHRyLT5rZXkgPSBwdHItPnJlY29yZCA9IG5ldmVyOworICAg
ICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIGludAorZGVsZXRlX25ldmVyKGtleSwgdmFsdWUsIG5ldmVyKQorICAgIGNoYXIg
KmtleSwgKm5ldmVyOworICAgIHZvaWQgKnZhbHVlOworeworICAgIGlmICh2YWx1ZSA9PSBuZXZl
cikgcmV0dXJuIFRTRl9TVF9ERUxFVEU7CisgICAgcmV0dXJuIFRTRl9TVF9DT05USU5VRTsKK30K
Kwordm9pZAordHNmX3N0X2NsZWFudXBfc2FmZSh0YWJsZSwgbmV2ZXIpCisgICAgdHNmX3N0X3Rh
YmxlICp0YWJsZTsKKyAgICBjaGFyICpuZXZlcjsKK3sKKyAgICBpbnQgbnVtX2VudHJpZXMgPSB0
YWJsZS0+bnVtX2VudHJpZXM7CisKKyAgICB0c2Zfc3RfZm9yZWFjaCh0YWJsZSwgKHRzZl9zdF9m
dW5jX3QpZGVsZXRlX25ldmVyLCBuZXZlcik7CisgICAgdGFibGUtPm51bV9lbnRyaWVzID0gbnVt
X2VudHJpZXM7Cit9CisKK3ZvaWQKK3RzZl9zdF9mb3JlYWNoKHRhYmxlLCBmdW5jLCBhcmcpCisg
ICAgdHNmX3N0X3RhYmxlICp0YWJsZTsKKyAgICB0c2Zfc3RfZnVuY190IGZ1bmM7CisgICAgdm9p
ZCAqYXJnOworeworICAgIHRzZl9zdF90YWJsZV9lbnRyeSAqcHRyLCAqbGFzdCwgKnRtcDsKKyAg
ICBlbnVtIHRzZl9zdF9yZXR2YWwgcmV0dmFsOworICAgIGludCBpOworCisgICAgZm9yKGkgPSAw
OyBpIDw9IHRhYmxlLT5udW1fYmluczsgaSsrKSB7CisgICAgICAgIGxhc3QgPSAwOworICAgICAg
ICBmb3IocHRyID0gdGFibGUtPmJpbnNbaV07IHB0ciAhPSAwOykgeworICAgICAgICAgICAgcmV0
dmFsID0gKCpmdW5jKShwdHItPmtleSwgcHRyLT5yZWNvcmQsIGFyZyk7CisgICAgICAgICAgICBz
d2l0Y2ggKHJldHZhbCkgeworICAgICAgICAgICAgY2FzZSBUU0ZfU1RfQ09OVElOVUU6CisgICAg
ICAgICAgICAgICAgbGFzdCA9IHB0cjsKKyAgICAgICAgICAgICAgICBwdHIgPSBwdHItPm5leHQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRTRl9TVF9TVE9QOgor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgVFNGX1NUX0RFTEVURToK
KyAgICAgICAgICAgICAgICB0bXAgPSBwdHI7CisgICAgICAgICAgICAgICAgaWYgKGxhc3QgPT0g
MCkgeworICAgICAgICAgICAgICAgICAgICB0YWJsZS0+Ymluc1tpXSA9IHB0ci0+bmV4dDsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsYXN0LT5uZXh0ID0g
cHRyLT5uZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdHIgPSBwdHIt
Pm5leHQ7CisgICAgICAgICAgICAgICAgZnJlZSh0bXApOworICAgICAgICAgICAgICAgIHRhYmxl
LT5udW1fZW50cmllcy0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRzZl9zdF9pdGVyYXRvcl9pbml0KHRzZl9zdF90YWJsZSAqdGFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl9zdF9pdGVyYXRvciAqaXRlcikgeworICAgIGl0ZXItPnRhYmxl
PXRhYmxlOworICAgIGl0ZXItPmk9MDsKKyAgICBpdGVyLT5wdHI9TlVMTDsKKyAgICB0c2Zfc3Rf
aXRlcmF0b3JfbmV4dChpdGVyKTsKK30KKwordm9pZCB0c2Zfc3RfaXRlcmF0b3JfZ2V0KHRzZl9z
dF9pdGVyYXRvciAqaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqa2V5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSkgeworICAgIGlmIChrZXkhPU5V
TEwpIHsKKyAgICAgICAgKmtleT1pdGVyLT5wdHItPmtleTsKKyAgICB9CisgICAgaWYgKHZhbHVl
IT1OVUxMKSB7CisgICAgICAgICp2YWx1ZT1pdGVyLT5wdHItPnJlY29yZDsKKyAgICB9Cit9CisK
K3ZvaWQgdHNmX3N0X2l0ZXJhdG9yX25leHQodHNmX3N0X2l0ZXJhdG9yICppdGVyKSB7CisgICAg
aWYgKGl0ZXItPnB0ciE9TlVMTCkgeworICAgICAgICBpdGVyLT5wdHI9aXRlci0+cHRyLT5uZXh0
OworICAgIH0KKyAgICBpZiAoaXRlci0+cHRyPT1OVUxMKSB7CisgICAgICAgIGZvciAoO2l0ZXIt
PnB0cj09TlVMTCAmJiBpdGVyLT5pPD1pdGVyLT50YWJsZS0+bnVtX2JpbnM7CisgICAgICAgICAg
ICAgKytpdGVyLT5pKSB7CisgICAgICAgICAgICBpdGVyLT5wdHI9aXRlci0+dGFibGUtPmJpbnNb
aXRlci0+aV07CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ludCB0c2Zfc3RfaXRlcmF0b3JfdmFs
aWQodHNmX3N0X2l0ZXJhdG9yICppdGVyKSB7CisgICAgcmV0dXJuIGl0ZXItPnB0ciE9TlVMTDsK
K30KKworaW50IHRzZl9zdF9zdHJoYXNoKHN0cmluZykKKyAgICByZWdpc3RlciBjaGFyICpzdHJp
bmc7Cit7CisgICAgcmVnaXN0ZXIgaW50IGM7CisKKyNpZmRlZiBIQVNIX0VMRkhBU0gKKyAgICBy
ZWdpc3RlciB1bnNpZ25lZCBpbnQgaCA9IDAsIGc7CisKKyAgICB3aGlsZSAoKGMgPSAqc3RyaW5n
KyspICE9ICdcMCcpIHsKKyAgICAgICAgaCA9ICggaCA8PCA0ICkgKyBjOworICAgICAgICBpZiAo
IGcgPSBoICYgMHhGMDAwMDAwMCApCisgICAgICAgICAgICBoIF49IGcgPj4gMjQ7CisgICAgICAg
IGggJj0gfmc7CisgICAgfQorICAgIHJldHVybiBoOworI2VsaWYgSEFTSF9QRVJMCisgICAgcmVn
aXN0ZXIgaW50IHZhbCA9IDA7CisKKyAgICB3aGlsZSAoKGMgPSAqc3RyaW5nKyspICE9ICdcMCcp
IHsKKyAgICAgICAgdmFsID0gdmFsKjMzICsgYzsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsICsg
KHZhbD4+NSk7CisjZWxzZQorICAgIHJlZ2lzdGVyIGludCB2YWwgPSAwOworCisgICAgd2hpbGUg
KChjID0gKnN0cmluZysrKSAhPSAnXDAnKSB7CisgICAgICAgIHZhbCA9IHZhbCo5OTcgKyBjOwor
ICAgIH0KKworICAgIHJldHVybiB2YWwgKyAodmFsPj41KTsKKyNlbmRpZgorfQorCitzdGF0aWMg
aW50CitudW1jbXAoeCwgeSkKKyAgICBsb25nIHgsIHk7Cit7CisgICAgcmV0dXJuIHggIT0geTsK
K30KKworc3RhdGljIGludAorbnVtaGFzaChuKQorICAgIGxvbmcgbjsKK3sKKyAgICByZXR1cm4g
bjsKK30KKworc3RhdGljIGludCBwdHJjbXAodm9pZCAqeCwgdm9pZCAqeSkgeworICAgIHJldHVy
biB4ICE9IHk7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3Rz
Zi90c2Zfc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX3N0LmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJl
YW0yL3dhc20vdHNmL3RzZl9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisv
KiB0aGlzIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgYWdhaW4gYnkgRmlsaXAgUGl6bG8sIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMTUsIHRvIGJlCisgKiBpbmNvcnBvcmF0ZWQgaW50byB0c2YuICovCisv
KiB0aGlzIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgYnkgRmlsaXAgUGl6bG8sIDIwMDIsIHRvIHN1
cHBvcnQgQysrICovCisvKiBUaGlzIGlzIGEgcHVibGljIGRvbWFpbiBnZW5lcmFsIHB1cnBvc2Ug
aGFzaCB0YWJsZSBwYWNrYWdlIHdyaXR0ZW4gYnkgUGV0ZXIgTW9vcmUgQCBVQ0IuICovCisKKy8q
IEAoIykgc3QuaCA1LjEgODkvMTIvMTQgKi8KKworI2lmbmRlZiBUU0ZfU1RfSU5DTFVERUQKKwor
I2RlZmluZSBUU0ZfU1RfSU5DTFVERUQKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB0c2Zfc3RfdGFibGUgdHNmX3N0X3RhYmxlOwor
dHlwZWRlZiBzdHJ1Y3QgdHNmX3N0X2l0ZXJhdG9yIHRzZl9zdF9pdGVyYXRvcjsKKworc3RydWN0
IHRzZl9zdF9oYXNoX3R5cGUgeworICAgIGludCAoKmNvbXBhcmUpKCk7CisgICAgaW50ICgqaGFz
aCkoKTsKK307CisKK3R5cGVkZWYgc3RydWN0IHRzZl9zdF90YWJsZV9lbnRyeSB0c2Zfc3RfdGFi
bGVfZW50cnk7CisKK3N0cnVjdCB0c2Zfc3RfdGFibGVfZW50cnkgeworICAgIHVuc2lnbmVkIGlu
dCBoYXNoOworICAgIGNoYXIgKmtleTsKKyAgICB2b2lkICpyZWNvcmQ7CisgICAgdHNmX3N0X3Rh
YmxlX2VudHJ5ICpuZXh0OworfTsKKworc3RydWN0IHRzZl9zdF90YWJsZSB7CisgICAgc3RydWN0
IHRzZl9zdF9oYXNoX3R5cGUgKnR5cGU7CisgICAgaW50IG51bV9iaW5zOworICAgIGludCBudW1f
ZW50cmllczsKKyAgICB0c2Zfc3RfdGFibGVfZW50cnkgKipiaW5zOworfTsKKworc3RydWN0IHRz
Zl9zdF9pdGVyYXRvciB7CisgICAgdHNmX3N0X3RhYmxlICp0YWJsZTsKKyAgICBpbnQgaTsKKyAg
ICBzdHJ1Y3QgdHNmX3N0X3RhYmxlX2VudHJ5ICpwdHI7Cit9OworCisjZGVmaW5lIHRzZl9zdF9p
c19tZW1iZXIodGFibGUsa2V5KSB0c2Zfc3RfbG9va3VwKHRhYmxlLGtleSwoY2hhciAqKikwKQor
CitlbnVtIHRzZl9zdF9yZXR2YWwge1RTRl9TVF9DT05USU5VRSwgVFNGX1NUX1NUT1AsIFRTRl9T
VF9ERUxFVEV9OworCit0eXBlZGVmIGVudW0gdHNmX3N0X3JldHZhbCAoKnRzZl9zdF9mdW5jX3Qp
KHZvaWQqLHZvaWQqLHZvaWQqKTsKKwordHNmX3N0X3RhYmxlICp0c2Zfc3RfaW5pdF90YWJsZShz
dHJ1Y3QgdHNmX3N0X2hhc2hfdHlwZSAqdHlwZSk7Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0
X3RhYmxlX3dpdGhfc2l6ZShzdHJ1Y3QgdHNmX3N0X2hhc2hfdHlwZSAqdHlwZSxpbnQgc2l6ZSk7
Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X251bXRhYmxlKCk7Cit0c2Zfc3RfdGFibGUgKnRz
Zl9zdF9pbml0X251bXRhYmxlX3dpdGhfc2l6ZShpbnQgc2l6ZSk7Cit0c2Zfc3RfdGFibGUgKnRz
Zl9zdF9pbml0X3B0cnRhYmxlKCk7Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3B0cnRhYmxl
X3dpdGhfc2l6ZShpbnQgc2l6ZSk7Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3N0cnRhYmxl
KCk7Cit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3N0cnRhYmxlX3dpdGhfc2l6ZShpbnQgc2l6
ZSk7CitpbnQgICAgIHRzZl9zdF9kZWxldGUodHNmX3N0X3RhYmxlICp0YWJsZSxjaGFyICoqa2V5
LHZvaWQgKip2YWx1ZSksCisgICAgdHNmX3N0X2RlbGV0ZV9zYWZlKHRzZl9zdF90YWJsZSAqdGFi
bGUsY2hhciAqKmtleSwKKyAgICAgICAgdm9pZCAqKnZhbHVlLGNoYXIgKm5ldmVyKTsKK2ludCAg
ICAgdHNmX3N0X2luc2VydCh0c2Zfc3RfdGFibGUgKnRhYmxlLGNoYXIgKmtleSx2b2lkICp2YWx1
ZSksCisgICAgdHNmX3N0X2luc2VydF9ub3JlcGxhY2UodHNmX3N0X3RhYmxlICp0YWJsZSxjaGFy
ICprZXksdm9pZCAqdmFsdWUpLAorICAgIHRzZl9zdF9hZGRfZGlyZWN0KHRzZl9zdF90YWJsZSAq
dGFibGUsY2hhciAqa2V5LHZvaWQgKnZhbHVlKSwKKyAgICB0c2Zfc3RfbG9va3VwKHRzZl9zdF90
YWJsZSAqdGFibGUsY2hhciAqa2V5LHZvaWQgKip2YWx1ZSk7Cit2b2lkICAgIHRzZl9zdF9mb3Jl
YWNoKHRzZl9zdF90YWJsZSAqdGFibGUsdHNmX3N0X2Z1bmNfdCBmdW5jLHZvaWQgKmFyZyksCisg
ICAgdHNmX3N0X2ZyZWVfdGFibGUodHNmX3N0X3RhYmxlICp0YWJsZSksCisgICAgdHNmX3N0X2Ns
ZWFudXBfc2FmZSh0c2Zfc3RfdGFibGUgKnRhYmxlLGNoYXIgKm5ldmVyKTsKK3RzZl9zdF90YWJs
ZSAqdHNmX3N0X2NvcHkodHNmX3N0X3RhYmxlICpvbGRfdGFibGUpOwordm9pZCAgICB0c2Zfc3Rf
aXRlcmF0b3JfaW5pdCh0c2Zfc3RfdGFibGUgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2Zfc3RfaXRlcmF0b3IgKml0ZXIpLAorICAgICAgICB0c2Zfc3RfaXRlcmF0b3Jf
Z2V0KHRzZl9zdF9pdGVyYXRvciAqaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSksCisg
ICAgICAgIHRzZl9zdF9pdGVyYXRvcl9uZXh0KHRzZl9zdF9pdGVyYXRvciAqaXRlcik7CitpbnQg
ICAgIHRzZl9zdF9pdGVyYXRvcl92YWxpZCh0c2Zfc3RfaXRlcmF0b3IgKml0ZXIpOworCitpbnQg
dHNmX3N0X3N0cmhhc2goKTsKKworc3RhdGljIFRTRl9pbmxpbmUgaW50IHRzZl9zdF9wdHJoYXNo
KHZvaWQqIHgpIHsKKyAgICBpbnRwdHJfdCB2YWx1ZSA9IChpbnRwdHJfdCl4OworICAgIHZhbHVl
ID4+PSBzaXplb2Yodm9pZCopOworICAgIHZhbHVlICs9IHZhbHVlID4+IDEzOworICAgIGlmIChz
aXplb2Yodm9pZCopID4gNCkKKyAgICAgICAgdmFsdWUgKz0gKHZhbHVlID4+IDMyKSAqIDc7Cisg
ICAgcmV0dXJuIChpbnQpdmFsdWU7Cit9CisKKy8qIGZhc3QgbG9va3VwIGZvciBwb2ludGVycy4g
Ki8KK3N0YXRpYyBUU0ZfaW5saW5lCitpbnQgdHNmX3N0X2xvb2t1cF9wdHJ0YWJsZSh0c2Zfc3Rf
dGFibGUgKnRhYmxlLCB2b2lkICprZXksIHZvaWQgKip2YWx1ZSkgeworICAgIHVuc2lnbmVkIGlu
dCBoYXNoX3ZhbCwgYmluX3BvczsKKyAgICB0c2Zfc3RfdGFibGVfZW50cnkgKnB0cjsKKworICAg
IGhhc2hfdmFsID0gdHNmX3N0X3B0cmhhc2goa2V5KTsKKyAgICBiaW5fcG9zID0gaGFzaF92YWwm
KHRhYmxlKS0+bnVtX2JpbnM7CisgICAgcHRyID0gKHRhYmxlKS0+Ymluc1tiaW5fcG9zXTsKKyAg
ICBpZiAocHRyICYmIGtleSAhPSBwdHItPmtleSkgeworICAgICAgICB3aGlsZSAocHRyLT5uZXh0
ICYmIGtleSAhPSBwdHItPm5leHQtPmtleSkgeworICAgICAgICAgICAgcHRyID0gcHRyLT5uZXh0
OworICAgICAgICB9CisgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKKyAgICB9CisKKyAgICBpZiAo
cHRyID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KHZhbHVlICE9IDApICAqdmFsdWUgPSBwdHItPnJlY29yZDsKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgfQorfQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogVFNG
X1NUX0lOQ0xVREVEICovCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90
c2YvdHNmX3N0X3R5cGV0YWJsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0
U3RyZWFtMi93YXNtL3RzZi90c2Zfc3RfdHlwZXRhYmxlLmMJKG5vbmV4aXN0ZW50KQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zdF90eXBldGFibGUuYwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIEZp
bGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisKK3N0YXRpYyBp
bnQgdHNmX3R5cGVfY29tcGFyZV9hZGFwdG9yKHRzZl90eXBlX3QgKmEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICpiKSB7CisgICAgcmV0dXJuICF0c2Zf
dHlwZV9jb21wYXJlKGEsYik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdHNmX3N0X2hhc2hfdHlwZSBo
YXNoX3R5cGUgPSB7CisgICAgdHNmX3R5cGVfY29tcGFyZV9hZGFwdG9yLAorICAgIHRzZl90eXBl
X2dldF9oYXNoCit9OworCit0c2Zfc3RfdGFibGUgKnRzZl9zdF9pbml0X3R5cGV0YWJsZSgpIHsK
KyAgICByZXR1cm4gdHNmX3N0X2luaXRfdGFibGUoJmhhc2hfdHlwZSk7Cit9CisKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zfc3RyZWFtX2ZpbGVfaW5wdXQu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3N0cmVhbV9maWxlX2lucHV0LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9K
ZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zdHJlYW1fZmlsZV9pbnB1dC5jCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDE1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisj
aW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorI2luY2x1ZGUgInRzZl9zZXJpYWxfcHJvdG9jb2wuaCIK
KworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3Rk
bGliLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworLyogdGhlIGdldCBtb2RlIGZ1bmN0aW9ucyBh
cmUgaGVyZSBmb3IgaGlzdG9yaWNhbCByZWFzb25zLiAgcmlnaHQgbm93IGFsbCBvZgorICogdGhl
IGFjdHVhbCBkZXRlY3Rpb24gd29yayBoYXBwZW5zIGluIHRoZSBhZGFwdGl2ZSByZWFkZXIuICov
CisKK3RzZl96aXBfbW9kZV90IHRzZl9zdHJlYW1fZmlsZV9nZXRfbW9kZV9mcm9tX2ZkKGludCBm
ZCkgeworICAgIHVpbnQ4X3QgbWFnaWNbVFNGX1NQX01BR0lDX0xFTl07CisgICAgdWludDhfdCAq
Y3VyPW1hZ2ljOworICAgIAorICAgIHdoaWxlIChjdXI8bWFnaWMrVFNGX1NQX01BR0lDX0xFTikg
eworICAgICAgICBpbnQgcmVzPXJlYWQoZmQsY3VyLG1hZ2ljK1RTRl9TUF9NQUdJQ19MRU4tY3Vy
KTsKKyAgICAgICAgaWYgKHJlczwwKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJFcnJv
ciByZWFkaW5nIG1hZ2ljIGNvZGUiKTsKKyAgICAgICAgICAgIHJldHVybiBUU0ZfWklQX1VOS05P
V047CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcz09MCkgeworCSAgICBpZiAoY3VyPT1tYWdp
YykgeworCQl0c2Zfc2V0X2Vycm9yKFRTRl9FX0VPRiwKKwkJCSAgICAgICJFbmQgb2YgZmlsZSBi
ZWZvcmUgbWFnaWMgY29kZSAoZmlsZSBlbXB0eSBvciBjb25uZWN0aW9uIGNsb3NlZCBwcmlvciB0
byB0aGUgdHJhbnNtaXNzaW9uIG9mIGFueSBUU0YgZGF0YSkiKTsKKwkgICAgfSBlbHNlIHsKKwkJ
dHNmX3NldF9lcnJvcihUU0ZfRV9VTkVYUEVDVEVEX0VPRiwKKwkJCSAgICAgICJFbmQgb2YgZmls
ZSBiZWZvcmUgZW5kIG9mIG1hZ2ljIGNvZGUiKTsKKwkgICAgfQorICAgICAgICAgICAgcmV0dXJu
IFRTRl9aSVBfVU5LTk9XTjsKKyAgICAgICAgfQorICAgICAgICBjdXIrPXJlczsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFtZW1jbXAobWFnaWMsVFNGX1NQX01BR0lDX0NPREUsVFNGX1NQX01BR0lD
X0xFTikpIHsKKyAgICAgICAgcmV0dXJuIFRTRl9aSVBfTk9ORTsKKyAgICB9IGVsc2UgaWYgKCFt
ZW1jbXAobWFnaWMsVFNGX1NQX1pMSUJfTUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkgewor
ICAgICAgICByZXR1cm4gVFNGX1pJUF9aTElCOworICAgIH0gZWxzZSBpZiAoIW1lbWNtcChtYWdp
YyxUU0ZfU1BfQlpJUDJfTUFHSUNfQ09ERSxUU0ZfU1BfTUFHSUNfTEVOKSkgeworICAgICAgICBy
ZXR1cm4gVFNGX1pJUF9CWklQMjsKKyAgICB9CisgICAgCisgICAgdHNmX3NldF9lcnJvcihUU0Zf
RV9QQVJTRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICJOb3QgYSB2YWxpZCBtYWdpYyBjb2Rl
IGZvciBhbnkgVFNGIHN0cmVhbSBmaWxlIGZvcm1hdCIpOworICAgIHJldHVybiBUU0ZfWklQX1VO
S05PV047Cit9CisKK3RzZl96aXBfbW9kZV90IHRzZl9zdHJlYW1fZmlsZV9nZXRfbW9kZShjb25z
dCBjaGFyICpmaWxlbmFtZSkgeworICAgIGludCBmZD1vcGVuKGZpbGVuYW1lLE9fUkRPTkxZKTsK
KyAgICB0c2ZfemlwX21vZGVfdCByZXN1bHQ7CisgICAgCisgICAgaWYgKGZkPDApIHsKKyAgICAg
ICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRpbmciLAorICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuIFRTRl9aSVBfVU5LTk9X
TjsKKyAgICB9CisgICAgCisgICAgcmVzdWx0PXRzZl9zdHJlYW1fZmlsZV9nZXRfbW9kZV9mcm9t
X2ZkKGZkKTsKKyAgICAKKyAgICBjbG9zZShmZCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKnRzZl9zdHJlYW1fZmlsZV9pbnB1dF9vcGVu
KGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl96aXBfcmRyX2F0dHJfdCAq
YXR0cikgeworICAgIGludCBmZDsKKyAgICB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqcmVzdWx0
OworICAgIAorICAgIGZkPW9wZW4oZmlsZW5hbWUsT19SRE9OTFkpOworICAgIGlmIChmZDwwKSB7
CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkaW5nIiwK
KyAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICAKKyAgICByZXN1bHQ9dHNmX3N0cmVhbV9maWxlX2lucHV0X2ZkX29wZW4oZmQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3RydWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAgICAg
ICAgY2xvc2UoZmQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKnRzZl9zdHJlYW1fZmls
ZV9pbnB1dF9mZF9vcGVuKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX3Jkcl9h
dHRyX3QgKl9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9ib29sX3Qga2VlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBidWZfc2l6ZSkgeworICAgIHRz
Zl9zdHJlYW1fZmlsZV9pbnB1dF90ICpyZXQ7CisgICAgdHNmX3ppcF9yZHJfYXR0cl90IGF0dHI7
CisgICAgdHNmX3JlYWRlcl90IHJlYWRlcjsKKyAgICAKKyAgICBpZiAoX2F0dHI9PU5VTEwpIHsK
Kwl0c2ZfemlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KCZhdHRyKTsKKyAgICB9IGVsc2UgeworCWF0
dHI9Kl9hdHRyOworICAgIH0KKyAgICAKKyAgICBpZiAoYnVmX3NpemU9PTApIHsKKyAgICAgICAg
YnVmX3NpemU9VFNGX0RFRl9CVUZfU0laRTsKKyAgICB9CisKKyAgICByZXQ9bWFsbG9jKHNpemVv
Zih0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCkpOworICAgIGlmIChyZXQ9PU5VTEwpIHsKKyAgICAg
ICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRf
dCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0LT5mZD1mZDsK
KyAgICByZXQtPmtlZXBfZmQ9a2VlcDsKKyAgICAKKyAgICBpZiAodHNmX3ppcF9yZHJfYXR0cl9p
c19ub3ppcCgmYXR0cikpIHsKKyAgICAgICAgcmV0LT51c2VfYWRwdD10c2ZfZmFsc2U7CisgICAg
ICAgIHJldC0+cmVhZGVyLmJ1Zj10c2ZfYnVmX3JlYWRlcl9jcmVhdGUocmV0LT5mZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfZmFsc2UpOworICAg
ICAgICByZWFkZXI9dHNmX2J1Zl9yZWFkZXJfcmVhZDsKKyAgICB9IGVsc2UgeworCXJldC0+dXNl
X2FkcHQ9dHNmX3RydWU7CisJcmV0LT5yZWFkZXIuYWRwdD10c2ZfYWRhcHRpdmVfcmVhZGVyX2Ny
ZWF0ZSh0c2ZfZmRfcGFydGlhbF9yZWFkZXIsCisJCQkJCQkgICAgJihyZXQtPmZkKSwKKwkJCQkJ
CSAgICBidWZfc2l6ZSwKKwkJCQkJCSAgICAmYXR0cik7CisJcmVhZGVyPXRzZl9hZGFwdGl2ZV9y
ZWFkZXJfcmVhZDsKKyAgICB9CisKKyAgICBpZiAocmV0LT5yZWFkZXIucHRyPT1OVUxMKSB7Cisg
ICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAg
IHJldC0+aW5fbWFuPXRzZl9zZXJpYWxfaW5fbWFuX2NyZWF0ZShyZWFkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC0+cmVhZGVyLnB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzKTsKKyAgICBpZiAocmV0LT5p
bl9tYW49PU5VTEwpIHsKKyAgICAgICAgaWYgKHJldC0+dXNlX2FkcHQpIHsKKyAgICAgICAgICAg
IHRzZl9hZGFwdGl2ZV9yZWFkZXJfZGVzdHJveShyZXQtPnJlYWRlci5hZHB0KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHRzZl9idWZfcmVhZGVyX2Rlc3Ryb3kocmV0LT5yZWFkZXIu
YnVmKTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKHJldCk7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICAKKyAgICAvKiBpZiB3ZSBldmVyIGhhdmUgYQorICAgICAqIHRzZl9zZXJp
YWxfaW5fbWFuX3ByZXRlbmRfdGhhdF95b3V2ZV9yZWFkX3Jlc2V0X3R5cGVzKCkgCisgICAgICog
ZnVuY3Rpb24sIHdlIHNob3VsZCBjYWxsIGl0IGhlcmUuICovCisgICAgCisgICAgcmV0dXJuIHJl
dDsKK30KKwordm9pZCB0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfY2xvc2UodHNmX3N0cmVhbV9maWxl
X2lucHV0X3QgKmZpbGUpIHsKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9kZXN0cm95KGZpbGUtPmlu
X21hbik7CisgICAgaWYgKGZpbGUtPmtlZXBfZmQpIHsKKyAgICAgICAgY2xvc2UoZmlsZS0+ZmQp
OworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIHRyeSB0byBzZWVrIHRoZSBmaWxlIGRlc2NyaXB0
b3IgYmFjayB0byB3aGVyZSBpdCBzaG91bGQgaGF2ZSBiZWVuLAorICAgICAgICAgICBpZiB3ZSBo
YWRuJ3QgYmVlbiByZWFkaW5nIHdpdGggYnVmZmVyaW5nLiAqLworICAgICAgICAKKyAgICAgICAg
dWludDMyX3QgbnVtX3JlbWFpbmluZzsKKyAgICAgICAgCisgICAgICAgIGlmIChmaWxlLT51c2Vf
YWRwdCkgeworICAgICAgICAgICAgbnVtX3JlbWFpbmluZz10c2ZfYWRhcHRpdmVfcmVhZGVyX2dl
dF9yZW1haW5pbmcoZmlsZS0+cmVhZGVyLmFkcHQpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbnVtX3JlbWFpbmluZz10c2ZfYnVmX3JlYWRlcl9nZXRfcmVtYWluaW5nKGZpbGUtPnJl
YWRlci5idWYpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsc2VlayhmaWxlLT5mZCwt
KChvZmZfdCludW1fcmVtYWluaW5nKSxTRUVLX0NVUik7CisgICAgICAgIAorICAgICAgICAvKiBp
Z25vcmUgZXJyb3IsIHNpbmNlIHRoaXMgaXMgYmVzdCBlZmZvcnQgYW55d2F5LiAqLworICAgIH0K
KyAgICBpZiAoZmlsZS0+dXNlX2FkcHQpIHsKKyAgICAgICAgdHNmX2FkYXB0aXZlX3JlYWRlcl9k
ZXN0cm95KGZpbGUtPnJlYWRlci5hZHB0KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0c2ZfYnVm
X3JlYWRlcl9kZXN0cm95KGZpbGUtPnJlYWRlci5idWYpOworICAgIH0KKyAgICBmcmVlKGZpbGUp
OworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9hbGxvd3NfY29tcHJlc3Np
b24odHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUpIHsKKyAgICByZXR1cm4gZmlsZS0+dXNl
X2FkcHQ7Cit9CisKK3RzZl9ib29sX3QgdHNmX3N0cmVhbV9maWxlX2lucHV0X3JlZ2lzdGVyX3R5
cGVfY2JhY2sodHNmX3N0cmVhbV9maWxlX2lucHV0X3QgKmZpbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX2NiYWNrX3QgY2Jh
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmFyZykgeworICAgIHJldHVybiB0c2Zfc2VyaWFsX2luX21hbl9yZWdpc3Rlcl90eXBl
X2NiYWNrKGZpbGUtPmluX21hbiwgY2JhY2ssIGFyZyk7Cit9CisKK3RzZl9ib29sX3QgdHNmX3N0
cmVhbV9maWxlX2lucHV0X3VucmVnaXN0ZXJfdHlwZV9jYmFjayh0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0c2ZfdHlwZV9jYmFja190IGNiYWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykgeworICAgIHJldHVy
biB0c2Zfc2VyaWFsX2luX21hbl91bnJlZ2lzdGVyX3R5cGVfY2JhY2soZmlsZS0+aW5fbWFuLCBj
YmFjaywgYXJnKTsKK30KKwordHNmX2J1ZmZlcl90ICp0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfcmVh
ZCh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSkgeworICAgIGlmIChmaWxlLT51c2VfYWRw
dCkgeworCXRzZl9hZGFwdGl2ZV9yZWFkZXJfaGludF9zd2l0Y2goZmlsZS0+cmVhZGVyLmFkcHQp
OworICAgIH0KKyAgICByZXR1cm4gdHNmX3NlcmlhbF9pbl9tYW5fcmVhZChmaWxlLT5pbl9tYW4p
OworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJlYW1fZmlsZV9pbnB1dF9yZWFkX2V4aXN0aW5nX2J1
ZmZlcih0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmKSB7Cisg
ICAgaWYgKGZpbGUtPnVzZV9hZHB0KSB7CisJdHNmX2FkYXB0aXZlX3JlYWRlcl9oaW50X3N3aXRj
aChmaWxlLT5yZWFkZXIuYWRwdCk7CisgICAgfQorICAgIHJldHVybiB0c2Zfc2VyaWFsX2luX21h
bl9yZWFkX2V4aXN0aW5nX2J1ZmZlcihmaWxlLT5pbl9tYW4sIGJ1Zik7Cit9CisKK3RzZl9ib29s
X3QgdHNmX3N0cmVhbV9maWxlX2lucHV0X2dldF9tYXJrKHRzZl9zdHJlYW1fZmlsZV9pbnB1dF90
ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3N0
cmVhbV9maWxlX21hcmtfdCAqbWFyaykgeworICAgIGlmIChmaWxlLT51c2VfYWRwdCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAg
ICAgICAgInRzZl9zdHJlYW1fZmlsZV9pbnB1dF9nZXRfbWFyaygpIGlzIG5vdCBzdXBwb3J0ZWQg
aWYgIgorCQkgICAgICAiY29tcHJlc3Npb24gaXMgYWxsb3dlZCIpOworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKworICAgIG1hcmstPm9mZnNldCA9IGxzZWVrKGZpbGUtPmZkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZfdCkgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBTRUVLX0NVUik7CisgICAgaWYgKG1hcmstPm9mZnNldDwwKSB7CisgICAgICAgIHRzZl9z
ZXRfZXJybm8oIkNvdWxkIG5vdCBsc2VlaygpIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAi
dHNmX3N0cmVhbV9maWxlX2lucHV0X2dldF9tYXJrX29mX25leHQoKSIpOworICAgICAgICByZXR1
cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBtYXJrLT5vZmZzZXQgLT0gdHNmX2J1Zl9y
ZWFkZXJfZ2V0X3JlbWFpbmluZyhmaWxlLT5yZWFkZXIuYnVmKTsKKyAgICAKKyAgICBtYXJrLT5z
dGF0ZSA9IHRzZl9zZXJpYWxfaW5fbWFuX2dldF9zdGF0ZShmaWxlLT5pbl9tYW4pOworICAgIAor
ICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2Zfc3RyZWFtX2ZpbGVfaW5w
dXRfc2Vlayh0c2Zfc3RyZWFtX2ZpbGVfaW5wdXRfdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHNmX3N0cmVhbV9maWxlX21hcmtfdCAqbWFyaykg
eworICAgIC8qIGlmIHRoZSBmaWxlIGlzIGNvbXByZXNzZWQgdGhlbiB0aGUgdXNlciBzaG91bGQg
bm90IGhhdmUgYmVlbiBhYmxlCisgICAgICogdG8gZ2V0IGEgbWFyay4gKi8KKyAgICB0c2ZfYXNz
ZXJ0KCFmaWxlLT51c2VfYWRwdCk7CisKKyAgICBpZiAobHNlZWsoZmlsZS0+ZmQsCisgICAgICAg
ICAgICAgIG1hcmstPm9mZnNldCwKKyAgICAgICAgICAgICAgU0VFS19TRVQpIDwgMCkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbHNlZWsoKSBpbiAiCisgICAgICAgICAgICAg
ICAgICAgICAgInRzZl9zdHJlYW1fZmlsZV9pbnB1dF9zZWVrX3RvX21hcmsoKSIpOworICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICB0c2ZfYnVmX3JlYWRlcl9yZXNl
dChmaWxlLT5yZWFkZXIuYnVmKTsKKyAgICAKKyAgICB0c2Zfc2VyaWFsX2luX21hbl9zZXRfc3Rh
dGUoZmlsZS0+aW5fbWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrLT5z
dGF0ZSk7CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCisKKworCkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3N0cmVhbV9maWxlX291dHB1dC5j
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2Zf
c3RyZWFtX2ZpbGVfb3V0cHV0LmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9K
ZXRTdHJlYW0yL3dhc20vdHNmL3RzZl9zdHJlYW1fZmlsZV9vdXRwdXQuYwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1
ZGUgInRzZl9zZXJpYWxfcHJvdG9jb2wuaCIKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDxlcnJuby5oPgorCit0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X3QgKnRzZl9zdHJlYW1f
ZmlsZV9vdXRwdXRfb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgYXBwZW5kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X3ppcF93dHJfYXR0cl90ICphdHRyKSB7CisgICAgaW50IGZkOworICAgIHRzZl9zdHJlYW1fZmls
ZV9vdXRwdXRfdCAqcmVzdWx0OworICAgIGludCBmbGFncz1PX1dST05MWXwoYXBwZW5kP09fQVBQ
RU5EOk9fVFJVTkMpOworICAgIHRzZl9ib29sX3QgY3JlYXRlZD10c2ZfZmFsc2U7CisgICAgdHNm
X3ppcF93dHJfYXR0cl90IGRlZmF1bHRzOworCisgICAgaWYgKGF0dHI9PU5VTEwpIHsKKyAgICAg
ICAgYXR0cj0mZGVmYXVsdHM7CisgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQo
YXR0cik7CisgICAgfQorICAgIAorICAgIC8qIHRoaXMgaXMgd3JpdHRlbiBpbiBhIHRvdGFsbHkg
Y3JhenkgZnJpa2tpbicgd2F5IHNvIHRoYXQgaXQgY2xlYW5zCisgICAgICogdXAgYWZ0ZXIgaXRz
ZWxmIGNvcnJlY3RseSBpbiBjYXNlIG9mIGVycm9yLiAqLworICAgIAorICAgIGZvciAoOzspIHsK
KyAgICAgICAgLyogZmlyc3QgdHJ5IHRvIG9wZW4gYW4gZXhpc3RpbmcgZmlsZSAqLworICAgICAg
ICBmZD1vcGVuKGZpbGVuYW1lLGZsYWdzKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmZD49MCkg
eworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChl
cnJubyE9RU5PRU5UKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3Qgb3Bl
biAlcyBmb3Igd3JpdGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKTsK
KyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAv
KiB0aGUgZmlsZSBkaWRuJ3QgZXhpc3QsIHNvIHRyeSBjcmVhdGluZyBpdC4gKi8KKyAgICAgICAg
ZmQ9b3BlbihmaWxlbmFtZSxPX0NSRUFUfE9fRVhDTHxmbGFncywwNjY2KTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChmZD49MCkgeworICAgICAgICAgICAgY3JlYXRlZD10c2ZfdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZXJybm8hPUVF
WElTVCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG9wZW4gJXMgZm9y
IHdyaXRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CisgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXN1bHQ9dHNm
X3N0cmVhbV9maWxlX291dHB1dF9mZF9vcGVuKGZkLGF0dHIsdHNmX3RydWUsMCk7CisgICAgaWYg
KHJlc3VsdD09TlVMTCkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIAorICAgICAgICAv
KiB0aGlzIGlzIHdoZXJlIHRoZSBjcmF6aW5lc3MgYWJvdmUgZ2V0cyB1c2VkLiAgdGhlIGxvb3Ag
YWJvdmUKKyAgICAgICAgICogZW5zdXJlcyB0aGF0IHdlIGFsd2F5cyBrbm93IGlmIHdlIHdlcmUg
dGhlIG9uZXMgd2hvIGNyZWF0ZWQKKyAgICAgICAgICogdGhlIGZpbGUuICBpZiB3ZSB3ZXJlIHRo
ZSBvbmVzIHdobyBjcmVhdGVkLCB3ZSBkZWxldGUgaXQKKyAgICAgICAgICogbm93LiAgYnV0IGlm
IHdlIHdlcmUgbm90IHRoZSBvbmVzIHdobyBjcmVhdGVkLCB3ZSBsZWF2ZSBpdAorICAgICAgICAg
KiBhbG9uZS4gKi8KKwkvKiBGSVhNRTogbm90IHN1cmUgaWYgdGhpcyBpcyBjb3JyZWN0LiAgZXZl
biBpZiB3ZSBkaWRuJ3QgY3JlYXRlCisJICAgdGhlIGZpbGUsIHdlIHN0aWxsIGVuZCB1cCB3cml0
aW5nIGEgYnVuY2ggb2YgZ2FyYmFnZSBpbnRvIGl0LgorCSAgIHNvIG1heWJlIHRoZSBjb3JyZWN0
IHRoaW5nIHRvIGRvIGlzIHRvIGVpdGhlciBhbHdheXMgZGVsZXRlIGl0LAorCSAgIG5ldmVyIGRl
bGV0ZSBpdCwgb3Igc29tZWhvdyBwcmVzZXJ2ZSB0aGUgb2xkIGNvbnRlbnRzIG9mIHRoZSBmaWxl
CisJICAgdG8gYmUgYWJsZSB0byByZXN0b3JlIHNhaWQgY29udGVudHMgaGVyZS4gKi8KKyAgICAg
ICAgaWYgKGNyZWF0ZWQpIHsKKyAgICAgICAgICAgIHVubGluayhmaWxlbmFtZSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK3RzZl9zdHJlYW1fZmlsZV9vdXRwdXRfdCAqdHNmX3N0cmVhbV9maWxlX291dHB1dF9m
ZF9vcGVuKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3Qga2Vl
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGJ1Zl9zaXplKSB7CisgICAgdHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpy
ZXQ7CisgICAgdHNmX3ppcF93dHJfYXR0cl90IGRlZmF1bHRzOworICAgIHRzZl93cml0ZXJfdCB3
cml0ZXI7CisgICAgCisgICAgaWYgKGF0dHI9PU5VTEwpIHsKKyAgICAgICAgYXR0cj0mZGVmYXVs
dHM7CisgICAgICAgIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQoYXR0cik7CisgICAgfQor
ICAgIAorICAgIGlmIChidWZfc2l6ZT09MCkgeworICAgICAgICBidWZfc2l6ZT1UU0ZfREVGX0JV
Rl9TSVpFOworICAgIH0KKyAgICAKKyAgICByZXQ9bWFsbG9jKHNpemVvZih0c2Zfc3RyZWFtX2Zp
bGVfb3V0cHV0X3QpKTsKKyAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJy
bm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX3N0cmVhbV9maWxlX291dHB1dF90Iik7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXQtPmFsbF9nb29kPXRzZl90cnVlOwor
ICAgIHJldC0+ZmQ9ZmQ7CisgICAgcmV0LT5rZWVwX2ZkPWtlZXA7CisgICAgCisgICAgc3dpdGNo
IChhdHRyLT5tb2RlKSB7CisgICAgICAgIGNhc2UgVFNGX1pJUF9OT05FOgorICAgICAgICAgICAg
cmV0LT51c2VfemlwPXRzZl9mYWxzZTsKKyAgICAgICAgICAgIHJldC0+d3JpdGVyLmJ1Zj10c2Zf
YnVmX3dyaXRlcl9jcmVhdGUocmV0LT5mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnVmX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9mYWxzZSk7CisgICAgICAgICAgICB3cml0ZXI9
dHNmX2J1Zl93cml0ZXJfd3JpdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
U0ZfWklQX1pMSUI6CisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAgICAgICAgICAgIGlm
ICghdHNmX2ZkX3dyaXRlcigmZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0
ci0+bW9kZT09VFNGX1pJUF9aTElCPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRT
Rl9TUF9aTElCX01BR0lDX0NPREU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNG
X1NQX0JaSVAyX01BR0lDX0NPREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNG
X1NQX01BR0lDX0xFTikpIHsKKyAgICAgICAgICAgICAgICBmcmVlKHJldCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICByZXQt
PnVzZV96aXA9dHNmX3RydWU7CisgICAgICAgICAgICByZXQtPndyaXRlci56aXA9dHNmX3ppcF93
cml0ZXJfY3JlYXRlKHRzZl9mZF93cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYocmV0LT5mZCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIpOworICAgICAgICAgICAgd3JpdGVyPXRz
Zl96aXBfd3JpdGVyX3dyaXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVkFMSURfQVJHLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiJWQgaXMgbm90IGEgdmFsaWQgemlwIG1vZGUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdHRyLT5tb2RlKTsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChyZXQtPndyaXRlci5wdHI9
PU5VTEwpIHsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisgICAgCisgICAgcmV0LT5vdXRfbWFuPXRzZl9zZXJpYWxfb3V0X21hbl9jcmVhdGUod3JpdGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC0+d3JpdGVy
LnB0cik7CisgICAgaWYgKHJldC0+b3V0X21hbj09TlVMTCkgeworICAgICAgICBpZiAocmV0LT51
c2VfemlwKSB7CisgICAgICAgICAgICB0c2ZfemlwX3dyaXRlcl9kZXN0cm95KHJldC0+d3JpdGVy
LnppcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0c2ZfYnVmX3dyaXRlcl9kZXN0
cm95KHJldC0+d3JpdGVyLmJ1Zik7CisgICAgICAgIH0KKyAgICAgICAgZnJlZShyZXQpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordHNm
X2Jvb2xfdCB0c2Zfc3RyZWFtX2ZpbGVfb3V0cHV0X2Nsb3NlKHRzZl9zdHJlYW1fZmlsZV9vdXRw
dXRfdCAqZmlsZSkgeworICAgIHRzZl9ib29sX3QgcmVzdWx0PXRzZl90cnVlOworICAgIAorICAg
IGlmIChmaWxlLT5hbGxfZ29vZCkgeworICAgICAgICBpZiAoZmlsZS0+dXNlX3ppcCkgeworICAg
ICAgICAgICAgcmVzdWx0PXRzZl96aXBfd3JpdGVyX2ZpbmlzaChmaWxlLT53cml0ZXIuemlwKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdD10c2ZfYnVmX3dyaXRlcl9mbHVz
aChmaWxlLT53cml0ZXIuYnVmKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB0c2Zfc2Vy
aWFsX291dF9tYW5fZGVzdHJveShmaWxlLT5vdXRfbWFuKTsKKyAgICBpZiAoZmlsZS0+dXNlX3pp
cCkgeworICAgICAgICB0c2ZfemlwX3dyaXRlcl9kZXN0cm95KGZpbGUtPndyaXRlci56aXApOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRzZl9idWZfd3JpdGVyX2Rlc3Ryb3koZmlsZS0+d3JpdGVy
LmJ1Zik7CisgICAgfQorICAgIGlmIChmaWxlLT5rZWVwX2ZkKSB7CisgICAgICAgIGNsb3NlKGZp
bGUtPmZkKTsKKyAgICB9CisgICAgZnJlZShmaWxlKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3RzZl9ib29sX3QgdHNmX3N0cmVhbV9maWxlX291dHB1dF9mbHVzaCh0c2Zfc3RyZWFtX2Zp
bGVfb3V0cHV0X3QgKmZpbGUpIHsKKyAgICB0c2ZfYm9vbF90IHJlc3VsdDsKKyAgICBpZiAoZmls
ZS0+dXNlX3ppcCkgeworICAgICAgICByZXN1bHQ9dHNmX3ppcF93cml0ZXJfZmx1c2goZmlsZS0+
d3JpdGVyLnppcCx0c2ZfZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdD10c2Zf
YnVmX3dyaXRlcl9mbHVzaChmaWxlLT53cml0ZXIuYnVmKTsKKyAgICB9CisgICAgaWYgKCFyZXN1
bHQpIHsKKyAgICAgICAgZmlsZS0+YWxsX2dvb2Q9dHNmX2ZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJlYW1fZmlsZV9vdXRwdXRfd3JpdGUo
dHNmX3N0cmVhbV9maWxlX291dHB1dF90ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRzZl9idWZmZXJfdCAqYnVmZmVyKSB7CisgICAgdHNmX2Jvb2xfdCBy
ZXN1bHQ9dHNmX3NlcmlhbF9vdXRfbWFuX3dyaXRlKGZpbGUtPm91dF9tYW4sYnVmZmVyKTsKKyAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICBmaWxlLT5hbGxfZ29vZD10c2ZfZmFsc2U7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGUuYwkobm9uZXhpc3RlbnQpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGUuYwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE2NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMTQsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQSVpMTyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJ0c2ZfaW50ZXJu
YWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4K
KworI2lmZGVmIEhBVkVfUFRIUkVBRAorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCisj
aWZkZWYgREVCVUdfVFlQRV9BTExPQworc3RhdGljIGludDY0X3QgdHlwZV9iYWxhbmNlID0gMDsK
KworaW50NjRfdCB0c2ZfdHlwZV9nZXRfYmFsYW5jZSgpIHsKKyAgICByZXR1cm4gdHlwZV9iYWxh
bmNlOworfQorCisjZGVmaW5lIGluY3JlbWVudF90eXBlX2JhbGFuY2UoKSBkbyB7XAorICAgIHR5
cGVfYmFsYW5jZSsrO1wKK30gd2hpbGUoMCkKKworI2RlZmluZSBkZWNyZW1lbnRfdHlwZV9iYWxh
bmNlKCkgZG8ge1wKKyAgICB0eXBlX2JhbGFuY2UtLTtcCit9IHdoaWxlKDApCisKKyNlbHNlCisK
KyNkZWZpbmUgaW5jcmVtZW50X3R5cGVfYmFsYW5jZSgpIGRvIHtcCit9IHdoaWxlKDApCisKKyNk
ZWZpbmUgZGVjcmVtZW50X3R5cGVfYmFsYW5jZSgpIGRvIHtcCit9IHdoaWxlKDApCisKKyNlbmRp
ZgorCitzdGF0aWMgdHNmX3R5cGVfdCB2b2lkX3R5cGUsCisgICAgICAgICAgICAgICAgICBpbnQ4
X3R5cGUsCisgICAgICAgICAgICAgICAgICB1aW50OF90eXBlLAorICAgICAgICAgICAgICAgICAg
aW50MTZfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHVpbnQxNl90eXBlLAorICAgICAgICAgICAg
ICAgICAgaW50MzJfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHVpbnQzMl90eXBlLAorICAgICAg
ICAgICAgICAgICAgaW50NjRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHVpbnQ2NF90eXBlLAor
ICAgICAgICAgICAgICAgICAgaW50ZWdlcl90eXBlLAorICAgICAgICAgICAgICAgICAgbG9uZ190
eXBlLAorICAgICAgICAgICAgICAgICAgZmxvYXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGRv
dWJsZV90eXBlLAorICAgICAgICAgICAgICAgICAgYml0X3R5cGUsCisgICAgICAgICAgICAgICAg
ICBzdHJpbmdfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGFueV90eXBlOworCitzdGF0aWMgdHNm
X3N0X3RhYmxlICptZW1vX3RhYmxlOworc3RhdGljIHRzZl9tdXRleF90IG1lbW9fbG9jazsKKwor
c3RhdGljIHZvaWQgaW5pdF9iYXNpY190eXBlKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICB0eXBl
LT5pc19keW5hbWljID0gdHNmX2ZhbHNlOworICAgIHR5cGUtPmNvbW1lbnQgPSBOVUxMOworICAg
IHRzZl9hdG9taWNfY291bnRfaW5pdCgmdHlwZS0+cmVmX2NvdW50LCAxKTsKKyAgICB0eXBlLT5i
eXRlX3NpemUgPSAxOworICAgIHR5cGUtPm5hbWUgPSBOVUxMOworICAgIHR5cGUtPnZlcnNpb24g
PSAwOworICAgIHR5cGUtPm1lbW9fbWFzdGVyID0gdHlwZTsKK30KKworc3RhdGljIHZvaWQgaW5p
dF90eXBlcyh2b2lkKSB7CisgICAgdHNmX2Fzc2VydChtZW1vX3RhYmxlID0gdHNmX3N0X2luaXRf
dHlwZXRhYmxlKCkpOworICAgIHRzZl9tdXRleF9pbml0KCZtZW1vX2xvY2spOworICAgIAorICAg
IHZvaWRfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfVk9JRDsKKyAgICB2b2lkX3R5cGUuaGFzaF9j
b2RlID0gVFNGX1RLX1ZPSUQ7CisgICAgaW5pdF9iYXNpY190eXBlKCZ2b2lkX3R5cGUpOworICAg
IAorICAgIGludDhfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5UODsKKyAgICBpbnQ4X3R5cGUu
aGFzaF9jb2RlID0gVFNGX1RLX0lOVDg7CisgICAgaW5pdF9iYXNpY190eXBlKCZpbnQ4X3R5cGUp
OworICAgIAorICAgIHVpbnQ4X3R5cGUua2luZF9jb2RlID0gVFNGX1RLX1VJTlQ4OworICAgIHVp
bnQ4X3R5cGUuaGFzaF9jb2RlID0gVFNGX1RLX1VJTlQ4OworICAgIGluaXRfYmFzaWNfdHlwZSgm
dWludDhfdHlwZSk7CisgICAgCisgICAgaW50MTZfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5U
MTY7CisgICAgaW50MTZfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfSU5UMTY7CisgICAgaW5pdF9i
YXNpY190eXBlKCZpbnQxNl90eXBlKTsKKyAgICAKKyAgICB1aW50MTZfdHlwZS5raW5kX2NvZGUg
PSBUU0ZfVEtfVUlOVDE2OworICAgIHVpbnQxNl90eXBlLmhhc2hfY29kZSA9IFRTRl9US19VSU5U
MTY7CisgICAgaW5pdF9iYXNpY190eXBlKCZ1aW50MTZfdHlwZSk7CisgICAgCisgICAgaW50MzJf
dHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5UMzI7CisgICAgaW50MzJfdHlwZS5oYXNoX2NvZGUg
PSBUU0ZfVEtfSU5UMzI7CisgICAgaW5pdF9iYXNpY190eXBlKCZpbnQzMl90eXBlKTsKKyAgICAK
KyAgICB1aW50MzJfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfVUlOVDMyOworICAgIHVpbnQzMl90
eXBlLmhhc2hfY29kZSA9IFRTRl9US19VSU5UMzI7CisgICAgaW5pdF9iYXNpY190eXBlKCZ1aW50
MzJfdHlwZSk7CisgICAgCisgICAgaW50NjRfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfSU5UNjQ7
CisgICAgaW50NjRfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfSU5UNjQ7CisgICAgaW5pdF9iYXNp
Y190eXBlKCZpbnQ2NF90eXBlKTsKKyAgICAKKyAgICB1aW50NjRfdHlwZS5raW5kX2NvZGUgPSBU
U0ZfVEtfVUlOVDY0OworICAgIHVpbnQ2NF90eXBlLmhhc2hfY29kZSA9IFRTRl9US19VSU5UNjQ7
CisgICAgaW5pdF9iYXNpY190eXBlKCZ1aW50NjRfdHlwZSk7CisgICAgCisgICAgaW50ZWdlcl90
eXBlLmtpbmRfY29kZSA9IFRTRl9US19JTlRFR0VSOworICAgIGludGVnZXJfdHlwZS5oYXNoX2Nv
ZGUgPSBUU0ZfVEtfSU5URUdFUjsKKyAgICBpbml0X2Jhc2ljX3R5cGUoJmludGVnZXJfdHlwZSk7
CisgICAgCisgICAgbG9uZ190eXBlLmtpbmRfY29kZSA9IFRTRl9US19MT05HOworICAgIGxvbmdf
dHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfTE9ORzsKKyAgICBpbml0X2Jhc2ljX3R5cGUoJmxvbmdf
dHlwZSk7CisgICAgCisgICAgZmxvYXRfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfRkxPQVQ7Cisg
ICAgZmxvYXRfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfRkxPQVQ7CisgICAgaW5pdF9iYXNpY190
eXBlKCZmbG9hdF90eXBlKTsKKyAgICAKKyAgICBkb3VibGVfdHlwZS5raW5kX2NvZGUgPSBUU0Zf
VEtfRE9VQkxFOworICAgIGRvdWJsZV90eXBlLmhhc2hfY29kZSA9IFRTRl9US19ET1VCTEU7Cisg
ICAgaW5pdF9iYXNpY190eXBlKCZkb3VibGVfdHlwZSk7CisgICAgCisgICAgYml0X3R5cGUua2lu
ZF9jb2RlID0gVFNGX1RLX0JJVDsKKyAgICBiaXRfdHlwZS5oYXNoX2NvZGUgPSBUU0ZfVEtfQklU
OworICAgIGluaXRfYmFzaWNfdHlwZSgmYml0X3R5cGUpOworICAgIAorICAgIHN0cmluZ190eXBl
LmtpbmRfY29kZSA9IFRTRl9US19TVFJJTkc7CisgICAgc3RyaW5nX3R5cGUuaGFzaF9jb2RlID0g
VFNGX1RLX1NUUklORzsKKyAgICBpbml0X2Jhc2ljX3R5cGUoJnN0cmluZ190eXBlKTsKKyAgICAK
KyAgICBhbnlfdHlwZS5raW5kX2NvZGUgPSBUU0ZfVEtfQU5ZOworICAgIGFueV90eXBlLmhhc2hf
Y29kZSA9IFRTRl9US19BTlk7CisgICAgaW5pdF9iYXNpY190eXBlKCZhbnlfdHlwZSk7CisgICAg
YW55X3R5cGUuaXNfZHluYW1pYyA9IHRzZl90cnVlOworfQorCitzdGF0aWMgdHNmX29uY2VfdCBv
bmNlX2NvbnRyb2wgPSBUU0ZfT05DRV9JTklUOworCitzdGF0aWMgdm9pZCBjaGVja19pbml0X3R5
cGVzKHZvaWQpIHsKKyAgICB0c2Zfb25jZSgmb25jZV9jb250cm9sLCBpbml0X3R5cGVzKTsKK30K
KworI2RlZmluZSBCSUdfTUVUQV9DT0RFX1NXSVRDSChraW5kX2NvZGUpIFwKKyAgICBzd2l0Y2gg
KGtpbmRfY29kZSkgeyAgICAgICAgICAgICAgICBcCisgICAgY2FzZSBUU0ZfVEtfVk9JRDogICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gJnZvaWRfdHlwZTsgICAgICAgICAgICAg
IFwKKyAgICBjYXNlIFRTRl9US19JTlQ4OiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiAmaW50OF90eXBlOyAgICAgICAgICAgICAgXAorICAgIGNhc2UgVFNGX1RLX1VJTlQ4OiAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICZ1aW50OF90eXBlOyAgICAgICAgICAg
ICBcCisgICAgY2FzZSBUU0ZfVEtfSU5UMTY6ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gJmludDE2X3R5cGU7ICAgICAgICAgICAgIFwKKyAgICBjYXNlIFRTRl9US19VSU5UMTY6
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAmdWludDE2X3R5cGU7ICAgICAgICAg
ICAgXAorICAgIGNhc2UgVFNGX1RLX0lOVDMyOiAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuICZpbnQzMl90eXBlOyAgICAgICAgICAgICBcCisgICAgY2FzZSBUU0ZfVEtfVUlOVDMy
OiAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gJnVpbnQzMl90eXBlOyAgICAgICAg
ICAgIFwKKyAgICBjYXNlIFRTRl9US19JTlQ2NDogICAgICAgICAgICAgICAgICBcCisgICAgICAg
IHJldHVybiAmaW50NjRfdHlwZTsgICAgICAgICAgICAgXAorICAgIGNhc2UgVFNGX1RLX1VJTlQ2
NDogICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICZ1aW50NjRfdHlwZTsgICAgICAg
ICAgICBcCisgICAgY2FzZSBUU0ZfVEtfSU5URUdFUjogICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gJmludGVnZXJfdHlwZTsgICAgICAgICAgIFwKKyAgICBjYXNlIFRTRl9US19MT05H
OiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAmbG9uZ190eXBlOyAgICAgICAg
ICAgICAgXAorICAgIGNhc2UgVFNGX1RLX0ZMT0FUOiAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuICZmbG9hdF90eXBlOyAgICAgICAgICAgICBcCisgICAgY2FzZSBUU0ZfVEtfRE9V
QkxFOiAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gJmRvdWJsZV90eXBlOyAgICAg
ICAgICAgIFwKKyAgICBjYXNlIFRTRl9US19CSVQ6ICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldHVybiAmYml0X3R5cGU7ICAgICAgICAgICAgICAgXAorICAgIGNhc2UgVFNGX1RLX1NU
UklORzogICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICZzdHJpbmdfdHlwZTsgICAg
ICAgICAgICBcCisgICAgY2FzZSBUU0ZfVEtfQU5ZOiAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICByZXR1cm4gJmFueV90eXBlOyAgICAgICAgICAgICAgIFwKKyAgICBkZWZhdWx0OiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0KKworc3RhdGljIGlubGluZSB0c2ZfYm9vbF90IGlzX3NpbmdsZXRv
bih0c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlKSB7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsK
KyAgICBjYXNlIFRTRl9US19JTlQ4OgorICAgIGNhc2UgVFNGX1RLX1VJTlQ4OgorICAgIGNhc2Ug
VFNGX1RLX0lOVDE2OgorICAgIGNhc2UgVFNGX1RLX1VJTlQxNjoKKyAgICBjYXNlIFRTRl9US19J
TlQzMjoKKyAgICBjYXNlIFRTRl9US19VSU5UMzI6CisgICAgY2FzZSBUU0ZfVEtfSU5UNjQ6Cisg
ICAgY2FzZSBUU0ZfVEtfVUlOVDY0OgorICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6CisgICAgY2Fz
ZSBUU0ZfVEtfTE9ORzoKKyAgICBjYXNlIFRTRl9US19GTE9BVDoKKyAgICBjYXNlIFRTRl9US19E
T1VCTEU6CisgICAgY2FzZSBUU0ZfVEtfQklUOgorICAgIGNhc2UgVFNGX1RLX1ZPSUQ6CisgICAg
Y2FzZSBUU0ZfVEtfU1RSSU5HOgorICAgIGNhc2UgVFNGX1RLX0FOWToKKyAgICAgICAgcmV0dXJu
IHRzZl90cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAg
fQorfQorCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9jcmVhdGUodHNmX3R5cGVfa2luZF90IGtpbmRf
Y29kZSkgeworICAgIHRzZl90eXBlX3QgKnJldDsKKyAgICAKKyAgICBjaGVja19pbml0X3R5cGVz
KCk7CisgICAgCisgICAgaWYgKGtpbmRfY29kZSA9PSBUU0ZfVEtfQVJSQVkpIHsKKyAgICAgICAg
dHNmX3NldF9lcnJvcihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAg
ICJZb3UgY2Fubm90IHVzZSBUU0ZfVEtfQVJSQVkgd2l0aCB0c2ZfdHlwZV9jcmVhdGUoKTsgIgor
ICAgICAgICAgICAgICAgICAgICAgICJ0byBjcmVhdGUgYW4gYXJyYXkgdHlwZSwgdXNlIHRzZl90
eXBlX2NyZWF0ZV9hcnJheSgpICIKKyAgICAgICAgICAgICAgICAgICAgICAiaW5zdGVhZCIpOwor
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgQklHX01FVEFfQ09ERV9TV0lU
Q0goa2luZF9jb2RlKQorICAgIAorICAgIHJldCA9IG1hbGxvYyhzaXplb2YodHNmX3R5cGVfdCkp
OworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgbWFsbG9jIHRzZl90eXBlX3Qgb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisKKyAgICB0c2ZfYXRvbWljX2NvdW50X2luaXQoJnJldC0+cmVmX2NvdW50LCAxKTsKKyAg
ICAKKyAgICByZXQtPmNvbW1lbnQgPSBOVUxMOworICAgIHJldC0+bmFtZSA9IE5VTEw7CisgICAg
cmV0LT52ZXJzaW9uID0gMDsKKyAgICByZXQtPmtpbmRfY29kZSA9IGtpbmRfY29kZTsKKyAgICBy
ZXQtPmlzX2R5bmFtaWMgPSB0c2ZfZmFsc2U7CisgICAgc3dpdGNoIChraW5kX2NvZGUpIHsKKyAg
ICBjYXNlIFRTRl9US19TVFJVQ1Q6CisgICAgICAgIHJldC0+dS5zLnR0ID0gdHNmX3R5cGVfdGFi
bGVfY3JlYXRlKCk7CisgICAgICAgIGlmIChyZXQtPnUucy50dCA9PSBOVUxMKSB7CisgICAgICAg
ICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAg
ICAgICByZXQtPnUucy5oYXNfc2l6ZSA9IHRzZl9mYWxzZTsKKyAgICAgICAgcmV0LT51LnMuY29u
c3RydWN0b3IgPSBOVUxMOworICAgICAgICByZXQtPnUucy5wcmVfZGVzdHJ1Y3RvciA9IE5VTEw7
CisgICAgICAgIHJldC0+dS5zLmRlc3RydWN0b3IgPSBOVUxMOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAgICAgIHJldC0+dS5oLnR0ID0gdHNmX3R5cGVfdGFi
bGVfY3JlYXRlKCk7CisgICAgICAgIGlmIChyZXQtPnUuaC50dCA9PSBOVUxMKSB7CisgICAgICAg
ICAgICBmcmVlKHJldCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAg
ICAgICByZXQtPnUuaC5oYXNfbWFwcGluZyA9IHRzZl9mYWxzZTsKKyAgICAgICAgcmV0LT51Lmgu
Y2hvaWNlX2FzX2Z1bGxfd29yZCA9IHRzZl9mYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAg
ICAgICAgICAgICAgICAgICInIiBmdWk4ICInIGlzIG5vdCBhIHZhbGlkIGtpbmQgdHlwZSBmb3Ig
IgorICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfdHlwZV9jcmVhdGUoKSIsCisgICAgICAgICAg
ICAgICAgICAgICAga2luZF9jb2RlKTsKKyAgICAgICAgZnJlZShyZXQpOworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgdHNmX3R5cGVfcmVjb21wdXRlX2hhc2gocmV0KTsK
KyAgICAKKyAgICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisgICAgcmV0LT5tZW1vX21hc3RlciA9IE5V
TEw7CisgICAgCisgICAgaW5jcmVtZW50X3R5cGVfYmFsYW5jZSgpOworCisgICAgLyogcHJpbnRm
KCJjcmVhdGVkIGEgdHlwZSBhdCAlcFxuIixyZXQpOyAqLworICAgIAorICAgIHJldHVybiByZXQ7
Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2NyZWF0ZV9hcnJheSh0c2ZfdHlwZV90ICplbGVf
dHlwZSkgeworICAgIHRzZl90eXBlX3QgKnJldDsKKyAgICAKKyAgICBpZiAoZWxlX3R5cGUgPT0g
TlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0ID0gbWFs
bG9jKHNpemVvZih0c2ZfdHlwZV90KSk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgdHNmX3R5cGVfdCIpOworICAgICAgICB0
c2ZfdHlwZV9kZXN0cm95KGVsZV90eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
CisgICAgdHNmX2F0b21pY19jb3VudF9pbml0KCZyZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisg
ICAgcmV0LT5jb21tZW50ID0gTlVMTDsKKyAgICByZXQtPm5hbWUgPSBOVUxMOworICAgIHJldC0+
dmVyc2lvbiA9IDA7CisgICAgcmV0LT5raW5kX2NvZGUgPSBUU0ZfVEtfQVJSQVk7CisgICAgcmV0
LT5pc19keW5hbWljID0gZWxlX3R5cGUtPmlzX2R5bmFtaWM7CisgICAgcmV0LT51LmEuZWxlbWVu
dF90eXBlID0gZWxlX3R5cGU7CisgICAgCisgICAgdHNmX3R5cGVfcmVjb21wdXRlX2hhc2gocmV0
KTsKKyAgICAKKyAgICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisgICAgcmV0LT5tZW1vX21hc3RlciA9
IE5VTEw7CisgICAgCisgICAgaW5jcmVtZW50X3R5cGVfYmFsYW5jZSgpOworCisgICAgLyogcHJp
bnRmKCJjcmVhdGVkIGFuIGFycmF5IHR5cGUgYXQgJXBcbiIscmV0KTsgKi8KKyAgICAKKyAgICBy
ZXR1cm4gcmV0OworfQorCit0eXBlZGVmIHRzZl9ib29sX3QgKCphcHBlbmRfZnVuY190KSh0c2Zf
dHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlw
ZV90ICplbGVfdHlwZSk7CisKK3N0YXRpYyB0c2ZfdHlwZV90ICpjcmVhdGVfc29tZXRoaW5ndih0
c2ZfdHlwZV9raW5kX3Qga2luZF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZF9mdW5jX3QgYXBwZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmZpcnN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFfbGlzdCBsc3QpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQ7Cisg
ICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICB0c2ZfdHlwZV90ICp0eXBlOworICAgIAorICAgIHJl
c3VsdD10c2ZfdHlwZV9jcmVhdGUoa2luZF9jb2RlKTsKKyAgICBpZiAocmVzdWx0PT1OVUxMKSB7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBuYW1lPWZpcnN0X25hbWU7
CisgICAgCisgICAgd2hpbGUgKG5hbWUhPU5VTEwpIHsKKyAgICAgICAgdHlwZT12YV9hcmcobHN0
LHRzZl90eXBlX3QqKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYXBwZW5kKCZyZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgIHR5cGUpKSB7Cisg
ICAgICAgICAgICB3aGlsZSAodmFfYXJnKGxzdCxjb25zdCBjaGFyKikhPU5VTEwpIHsKKyAgICAg
ICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHZhX2FyZyhsc3QsdHNmX3R5cGVfdCopKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmVzdWx0KTsKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuYW1lPXZh
X2FyZyhsc3QsY29uc3QgY2hhciopOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9jcmVhdGVfc3RydWN0dihjb25zdCBjaGFyICpmaXJz
dF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBsc3Qp
IHsKKyAgICByZXR1cm4gY3JlYXRlX3NvbWV0aGluZ3YoVFNGX1RLX1NUUlVDVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX3N0cnVjdF90eXBlX2FwcGVuZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmlyc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbHN0KTsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX3N0cnVjdChjb25zdCBj
aGFyICpmaXJzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4p
IHsKKyAgICB2YV9saXN0IGxzdDsKKyAgICB0c2ZfdHlwZV90ICpyZXN1bHQ7CisgICAgCisgICAg
dmFfc3RhcnQobHN0LGZpcnN0X25hbWUpOworICAgIAorICAgIHJlc3VsdD10c2ZfdHlwZV9jcmVh
dGVfc3RydWN0dihmaXJzdF9uYW1lLGxzdCk7CisgICAgCisgICAgdmFfZW5kKGxzdCk7CisgICAg
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfY3JlYXRlX2No
b2ljZXYoY29uc3QgY2hhciAqZmlyc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhX2xpc3QgbHN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZV9zb21ldGhpbmd2KFRT
Rl9US19DSE9JQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9jaG9pY2VfdHlw
ZV9hcHBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxzdCk7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBl
X2NyZWF0ZV9jaG9pY2UoY29uc3QgY2hhciAqZmlyc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLi4uKSB7CisgICAgdmFfbGlzdCBsc3Q7CisgICAgdHNmX3R5cGVf
dCAqcmVzdWx0OworICAgIAorICAgIHZhX3N0YXJ0KGxzdCxmaXJzdF9uYW1lKTsKKyAgICAKKyAg
ICByZXN1bHQ9dHNmX3R5cGVfY3JlYXRlX2Nob2ljZXYoZmlyc3RfbmFtZSxsc3QpOworICAgIAor
ICAgIHZhX2VuZChsc3QpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB0
c2ZfYm9vbF90IHR5cGVfa2luZF92ZXJpZnkodHNmX3R5cGVfa2luZF90IGNvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGltaXRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfZXJyb3JfdCBlcnJvcikgeworICAgIGlm
ICh0c2ZfbGltaXRzX2lzX3R5cGVfa2luZF9hbGxvd2VkKGxpbWl0cyxjb2RlKSkgeworICAgICAg
ICByZXR1cm4gdHNmX3RydWU7CisgICAgfQorICAgIAorICAgIHRzZl9zZXRfZXJyb3IoZXJyb3Is
CisgICAgICAgICAgICAgICAgICAiJXMgdHlwZSBpcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAg
ICAgICAgICB0c2ZfdHlwZV9raW5kX3RzZl9uYW1lKGNvZGUpKTsKKyAgICByZXR1cm4gdHNmX2Zh
bHNlOworfQorCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9yZWFkX3JlYyh0c2ZfcmVhZGVyX3QgcmVh
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190ICpsaW1pdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXB0aCkgeworICAgIHRzZl90eXBlX3QgKnJldDsK
KyAgICB1aW50OF90IGtpbmRfY29kZTsKKyAgICB1aW50OF90IGNvbW1lbnRfbWFzazsKKyAgICAK
KyAgICBpZiAoZGVwdGg9PXRzZl9saW1pdHNfZGVwdGhfbGltaXQobGltaXRzKSkgeworICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAg
ICJUeXBlIGRlcHRoIGxpbWl0IGV4Y2VlZGVkIHdoaWxlIHBhcnNpbmciKTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICghcmVhZGVyKGFyZywma2luZF9jb2RlLDEp
KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBpZiAoIXR5cGVfa2lu
ZF92ZXJpZnkoa2luZF9jb2RlLGxpbWl0cyxUU0ZfRV9QQVJTRV9FUlJPUikpIHsKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIEJJR19NRVRBX0NPREVfU1dJVENIKGtpbmRf
Y29kZSkKKworICAgIHJldCA9IG1hbGxvYyhzaXplb2YodHNmX3R5cGVfdCkpOworICAgIGlmIChy
ZXQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0c2Zf
dHlwZV90IG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHNm
X2F0b21pY19jb3VudF9pbml0KCZyZXQtPnJlZl9jb3VudCwgMSk7CisgICAgCisgICAgcmV0LT5j
b21tZW50ID0gTlVMTDsKKyAgICByZXQtPm5hbWUgPSBOVUxMOworICAgIHJldC0+dmVyc2lvbiA9
IDA7CisgICAgcmV0LT5raW5kX2NvZGUgPSBraW5kX2NvZGU7CisgICAgcmV0LT5tZW1vX21hc3Rl
ciA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKHJldC0+a2luZF9jb2RlKSB7CisgICAgY2FzZSBUU0Zf
VEtfQVJSQVk6CisgICAgICAgIHJldC0+dS5hLmVsZW1lbnRfdHlwZSA9CisgICAgICAgICAgICB0
c2ZfdHlwZV9yZWFkX3JlYyhyZWFkZXIsIGFyZywgbGltaXRzLCBkZXB0aCArIDEpOworICAgICAg
ICBpZiAocmV0LT51LmEuZWxlbWVudF90eXBlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZyZWUo
cmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldC0+
aXNfZHluYW1pYyA9IHJldC0+dS5hLmVsZW1lbnRfdHlwZS0+aXNfZHluYW1pYzsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICByZXQtPnUucy50dCA9IHRz
Zl90eXBlX3RhYmxlX3JlYWQoIlN0cnVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW1pdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGlt
aXRzX21heF9zdHJ1Y3Rfc2l6ZShsaW1pdHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwdGggKyAxKTsKKyAgICAgICAgaWYgKHJldC0+dS5zLnR0ID09IE5V
TEwpIHsKKyAgICAgICAgICAgIGZyZWUocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwor
ICAgICAgICB9CisgICAgICAgIHJldC0+aXNfZHluYW1pYyA9IHRzZl90eXBlX3RhYmxlX2NvbnRh
aW5zX2R5bmFtaWMocmV0LT51LnMudHQpOworICAgICAgICByZXQtPnUucy5oYXNfc2l6ZSA9IHRz
Zl9mYWxzZTsKKyAgICAgICAgcmV0LT51LnMuY29uc3RydWN0b3IgPSBOVUxMOworICAgICAgICBy
ZXQtPnUucy5wcmVfZGVzdHJ1Y3RvciA9IE5VTEw7CisgICAgICAgIHJldC0+dS5zLmRlc3RydWN0
b3IgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRTRl9US19DSE9JQ0U6CisgICAg
ICAgIHJldC0+dS5oLnR0ID0gdHNmX3R5cGVfdGFibGVfcmVhZCgiQ2hvaWNlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRzZl9saW1pdHNfbWF4X2Nob2ljZV9zaXplKGxpbWl0cyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCArIDEpOworICAgICAgICBp
ZiAocmV0LT51LmgudHQgPT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZShyZXQpOworICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0LT5pc19keW5hbWljID0g
dHNmX3R5cGVfdGFibGVfY29udGFpbnNfZHluYW1pYyhyZXQtPnUuaC50dCk7CisgICAgICAgIHJl
dC0+dS5oLmhhc19tYXBwaW5nID0gdHNmX2ZhbHNlOworICAgICAgICBpZiAodHNmX2Nob2ljZV90
eXBlX2dldF9udW1fZWxlbWVudHMocmV0KSA+PSAyNTYpCisgICAgICAgICAgICByZXQtPnUuaC5j
aG9pY2VfYXNfZnVsbF93b3JkID0gdHNmX3RydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldC0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQgPSB0c2ZfZmFsc2U7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1Is
CisgICAgICAgICAgICAgICAgICAgICAgIiciIGZ1aTggIicgaXMgbm90IGEgdmFsaWQga2luZCB0
eXBlIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfcmVhZCgpIiwKKyAgICAg
ICAgICAgICAgICAgICAgICByZXQtPmtpbmRfY29kZSk7CisgICAgICAgIGZyZWUocmV0KTsKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGluY3JlbWVudF90eXBlX2JhbGFu
Y2UoKTsKKyAgICAKKyAgICBpZiAoIXJlYWRlcihhcmcsICZjb21tZW50X21hc2ssIDEpKSB7Cisg
ICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
fQorICAgIAorICAgIGlmICgoY29tbWVudF9tYXNrICYgMSkmJgorICAgICAgICAhdHNmX2xpbWl0
c19hbGxvd19jb21tZW50cyhsaW1pdHMpKSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0Vf
UEFSU0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIkVuY291bnRlcmVkIGEgY29tbWVu
dGVkIHR5cGUgd2hpbGUgcGFyc2luZywgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAiY29t
bWVudHMgYXJlIG5vdCBhbGxvd2VkIik7CisgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlmICgoY29tbWVudF9tYXNr
ICYgMSkpIHsKKyAgICAgICAgcmV0LT5jb21tZW50ID0gdHNmX3JlYWRfc3RyaW5nKHJlYWRlciwg
YXJnLCBUU0ZfTUFYX0NPTU1FTlRfU0laRSk7CisgICAgICAgIGlmIChyZXQtPmNvbW1lbnQgPT0g
TlVMTCkgeworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShyZXQpOworICAgICAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKChjb21tZW50X21h
c2sgJiAyKSkgeworICAgICAgICByZXQtPm5hbWUgPSB0c2ZfcmVhZF9zdHJpbmcocmVhZGVyLCBh
cmcsIFRTRl9NQVhfTkFNRV9TSVpFKTsKKyAgICAgICAgaWYgKHJldC0+bmFtZSA9PSBOVUxMKSB7
CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldCk7CisgICAgICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoKGNvbW1lbnRfbWFzayAmIDQp
KSB7CisgICAgICAgIGlmICghcmVhZGVyKGFyZywgJnJldC0+dmVyc2lvbiwgc2l6ZW9mKHJldC0+
dmVyc2lvbikpKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KHJldCk7CisgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXQtPnZlcnNpb24gPSBudG9o
bChyZXQtPnZlcnNpb24pOworICAgIH0KKyAgICAKKyAgICBpZiAoKGNvbW1lbnRfbWFzayAmIDgp
KSB7CisgICAgICAgIGlmIChyZXQtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQ0hPSUNFKSB7CisgICAg
ICAgICAgICByZXQtPnUuaC5jaG9pY2VfYXNfZnVsbF93b3JkID0gdHNmX2ZhbHNlOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHRzZl90eXBlX3JlY29tcHV0ZV9oYXNoKHJldCk7CisgICAg
CisgICAgcmV0LT5ieXRlX3NpemUgPSAwOworCisgICAgLyogcHJpbnRmKCJyZWFkIGEgdHlwZSBh
dCAlcFxuIixyZXQpOyAqLworCisgICAgcmV0dXJuIHJldDsKK30KKwordHNmX3R5cGVfdCAqdHNm
X3R5cGVfcmVhZCh0c2ZfcmVhZGVyX3QgcmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9saW1pdHNfdCAqbGlt
aXRzKSB7CisgICAgdHNmX3NpemVfYXdhcmVfcmRyX3Qgc2l6ZV9hd2FyZTsKKyAgICB0c2ZfdHlw
ZV90ICpyZXN1bHQ7CisgICAgCisgICAgY2hlY2tfaW5pdF90eXBlcygpOworICAgIAorICAgIHNp
emVfYXdhcmUucmVhZGVyPXJlYWRlcjsKKyAgICBzaXplX2F3YXJlLmFyZz1hcmc7CisgICAgc2l6
ZV9hd2FyZS5saW1pdD10c2ZfbGltaXRzX21heF90eXBlX3NpemUobGltaXRzKTsKKyAgICBzaXpl
X2F3YXJlLm5hbWU9InR5cGUiOworICAgIAorICAgIHJlc3VsdD10c2ZfdHlwZV9yZWFkX3JlYyh0
c2Zfc2l6ZV9hd2FyZV9yZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXpl
X2F3YXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDApOworICAgIAorICAgIGlmIChyZXN1bHQhPU5VTEwpIHsKKyAg
ICAgICAgcmVzdWx0LT5ieXRlX3NpemU9CisgICAgICAgICAgICB0c2ZfbGltaXRzX21heF90eXBl
X3NpemUobGltaXRzKQorICAgICAgICAgICAgLXNpemVfYXdhcmUubGltaXQ7CisgICAgfQorICAg
IAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfd3JpdGUodHNm
X3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3dyaXRlcl90IHdy
aXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7CisgICAgdWludDhf
dCBjb21tZW50X21hc2s7CisKKyAgICB0c2ZfYXNzZXJ0KHRzZl9hdG9taWNfY291bnRfdmFsdWUo
JnR5cGUtPnJlZl9jb3VudCkgPiAwKTsKKworICAgIGlmICghd3JpdGVyKGFyZywmdHlwZS0+a2lu
ZF9jb2RlLDEpKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAg
IHN3aXRjaCAodHlwZS0+a2luZF9jb2RlKSB7CisgICAgICAgIGNhc2UgVFNGX1RLX0FSUkFZOgor
ICAgICAgICAgICAgaWYgKCF0c2ZfdHlwZV93cml0ZSh0eXBlLT51LmEuZWxlbWVudF90eXBlLHdy
aXRlcixhcmcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRTRl9US19TVFJVQ1Q6Cisg
ICAgICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX3dyaXRlKHR5cGUtPnUucy50dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFRTRl9US19DSE9JQ0U6CisgICAgICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX3dyaXRlKHR5
cGUtPnUuaC50dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAor
ICAgIGlmICh0c2ZfdHlwZV9raW5kX2lzX2NvbW1lbnRhYmxlKHR5cGUtPmtpbmRfY29kZSkpIHsK
KyAgICAgICAgY29tbWVudF9tYXNrID0gMDsKKyAgICAgICAgaWYgKHR5cGUtPmNvbW1lbnQgIT0g
TlVMTCkgeworICAgICAgICAgICAgY29tbWVudF9tYXNrIHw9IDE7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHR5cGUtPm5hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgY29tbWVudF9tYXNrIHw9
IDI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUtPnZlcnNpb24gIT0gMCkgeworICAgICAg
ICAgICAgY29tbWVudF9tYXNrIHw9IDQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUtPmtp
bmRfY29kZSA9PSBUU0ZfVEtfQ0hPSUNFCisgICAgICAgICAgICAmJiB0c2ZfY2hvaWNlX3R5cGVf
Z2V0X251bV9lbGVtZW50cyh0eXBlKSA+PSAyNTYpIHsKKyAgICAgICAgICAgIGNvbW1lbnRfbWFz
ayB8PSA4OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXdyaXRlcihhcmcsICZj
b21tZW50X21hc2ssIDEpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpZiAodHlwZS0+Y29tbWVudCAhPSBOVUxMKSB7CisgICAg
ICAgICAgICBpZiAoIXRzZl93cml0ZV9zdHJpbmcod3JpdGVyLCBhcmcsIHR5cGUtPmNvbW1lbnQp
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHR5cGUtPm5hbWUgIT0gTlVMTCkgeworICAg
ICAgICAgICAgaWYgKCF0c2Zfd3JpdGVfc3RyaW5nKHdyaXRlciwgYXJnLCB0eXBlLT5uYW1lKSkg
eworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlLT52ZXJzaW9uICE9IDApIHsKKyAgICAg
ICAgICAgIHVpbnQzMl90IHZlcnNpb24gPSBodG9ubCh0eXBlLT52ZXJzaW9uKTsKKyAgICAgICAg
ICAgIGlmICghd3JpdGVyKGFyZywgJnZlcnNpb24sIHNpemVvZih2ZXJzaW9uKSkpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5
cGVfZHVwKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSBOVUxMKSB7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBCSUdfTUVUQV9DT0RFX1NXSVRDSCh0
eXBlLT5raW5kX2NvZGUpCisgICAgICAgIAorICAgIHRzZl9hdG9taWNfY291bnRfeGFkZCgmdHlw
ZS0+cmVmX2NvdW50LCAxKTsKKyAgICAKKyAgICBpbmNyZW1lbnRfdHlwZV9iYWxhbmNlKCk7CisK
KyAgICAvKiBwcmludGYoImR1cHBlZCBhIHR5cGUgYXQgJXBcbiIsdHlwZSk7ICovCisgICAgCisg
ICAgcmV0dXJuIHR5cGU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX2Nsb25lKHRzZl90eXBl
X3QgKnR5cGUpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKHR5cGU9PU5V
TEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIEJJR19NRVRBX0NP
REVfU1dJVENIKHR5cGUtPmtpbmRfY29kZSkKKworICAgIGlmICh0eXBlLT5raW5kX2NvZGU9PVRT
Rl9US19BUlJBWSkgeworICAgICAgICByZXQ9dHNmX3R5cGVfY3JlYXRlX2FycmF5KHRzZl90eXBl
X2Nsb25lKHR5cGUtPnUuYS5lbGVtZW50X3R5cGUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBy
ZXQ9dHNmX3R5cGVfY3JlYXRlKHR5cGUtPmtpbmRfY29kZSk7CisgICAgfQorICAgIAorICAgIGlm
IChyZXQ9PU5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIGlm
ICh0c2ZfdHlwZV9nZXRfY29tbWVudCh0eXBlKSE9TlVMTCkgeworICAgICAgICByZXQtPmNvbW1l
bnQ9c3RyZHVwKHRzZl90eXBlX2dldF9jb21tZW50KHR5cGUpKTsKKyAgICAgICAgaWYgKHJldC0+
Y29tbWVudD09TlVMTCkgeworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFs
bG9jYXRlIGNvbW1lbnQiKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmICh0
c2ZfdHlwZV9nZXRfbmFtZSh0eXBlKSE9TlVMTCkgeworICAgICAgICByZXQtPm5hbWU9c3RyZHVw
KHRzZl90eXBlX2dldF9uYW1lKHR5cGUpKTsKKyAgICAgICAgaWYgKHJldC0+bmFtZT09TlVMTCkg
eworICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IGFsbG9jYXRlIG5hbWUiKTsK
KyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldC0+dmVyc2lvbj10eXBlLT52ZXJz
aW9uOworICAgIAorICAgIGlmICh0eXBlLT5raW5kX2NvZGU9PVRTRl9US19TVFJVQ1QpIHsKKyAg
ICAgICAgaWYgKCF0c2ZfdHlwZV90YWJsZV9jb3B5KHJldC0+dS5zLnR0LHR5cGUtPnUucy50dCkp
IHsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldC0+dS5zLmhhc19zaXplPXR5cGUtPnUucy5o
YXNfc2l6ZTsKKyAgICAgICAgcmV0LT51LnMuc2l6ZT10eXBlLT51LnMuc2l6ZTsKKyAgICB9IGVs
c2UgaWYgKHR5cGUtPmtpbmRfY29kZT09VFNGX1RLX0NIT0lDRSkgeworICAgICAgICBpZiAoIXRz
Zl90eXBlX3RhYmxlX2NvcHkocmV0LT51LmgudHQsdHlwZS0+dS5oLnR0KSkgeworICAgICAgICAg
ICAgdHNmX3R5cGVfZGVzdHJveShyZXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0LT51LmguaGFzX21hcHBpbmc9dHlwZS0+dS5oLmhhc19tYXBwaW5n
OworICAgICAgICByZXQtPnUuaC5pbl9wbGFjZT10eXBlLT51LmguaW5fcGxhY2U7CisgICAgICAg
IHJldC0+dS5oLmRhdGFfb2Zmc2V0PXR5cGUtPnUuaC5kYXRhX29mZnNldDsKKyAgICAgICAgcmV0
LT51LmgudmFsdWVfb2Zmc2V0PXR5cGUtPnUuaC52YWx1ZV9vZmZzZXQ7CisgICAgICAgIHJldC0+
dS5oLnNpemU9dHlwZS0+dS5oLnNpemU7CisgICAgfQorICAgIAorICAgIHJldC0+aXNfZHluYW1p
Yz10eXBlLT5pc19keW5hbWljOworICAgIHRzZl90eXBlX3JlY29tcHV0ZV9oYXNoKHJldCk7Cisg
ICAgcmV0LT5ieXRlX3NpemU9dHlwZS0+Ynl0ZV9zaXplOworICAgIAorICAgIHJldHVybiByZXQ7
Cit9CisKK3RzZl90eXBlX3QgKnRzZl90eXBlX293bl9iZWdpbih0c2ZfdHlwZV90ICp0eXBlKSB7
CisgICAgaWYgKHRzZl9hdG9taWNfY291bnRfdmFsdWUoJnR5cGUtPnJlZl9jb3VudCkgPT0gMSkg
eworICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90eXBl
X2Nsb25lKHR5cGUpOworfQorCit2b2lkIHRzZl90eXBlX293bl9jb21taXQodHNmX3R5cGVfdCAq
KmRzdCwgdHNmX3R5cGVfdCAqcmV0KSB7CisgICAgaWYgKCpkc3QgPT0gcmV0KSB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgdHNmX3R5cGVfZGVzdHJveSgqZHN0KTsKKyAgICAq
ZHN0ID0gcmV0OworfQorCit2b2lkIHRzZl90eXBlX293bl9hYm9ydCh0c2ZfdHlwZV90ICpkc3Qs
IHRzZl90eXBlX3QgKnJldCkgeworICAgIGlmIChkc3QgPT0gcmV0KSB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgdHNmX3R5cGVfZGVzdHJveShyZXQpOworfQorCit2b2lkIHRz
Zl90eXBlX2Rlc3Ryb3kodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIC8qIHByaW50ZigidHNmX3R5
cGU6IGRlc3Ryb3k6ICVwXG4iLCB0eXBlKTsgKi8KKyAgICAKKyAgICBpZiAoaXNfc2luZ2xldG9u
KHR5cGUtPmtpbmRfY29kZSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAodHNmX2F0
b21pY19jb3VudF94c3ViKCZ0eXBlLT5yZWZfY291bnQsIDEpID4gMSkgeworICAgICAgICAvKiBw
cmludGYoImRpZG4ndCBkZXN0cm95IGEgdHlwZSBhdCAlcFxuIix0eXBlKTsgKi8KKyAgICAgICAg
cmV0dXJuOyAgICAgCisgICAgfQorICAgIAorICAgIC8qIHByaW50ZigidHNmX3R5cGU6IHJlYWxs
eSBkZXN0cm95OiAlcFxuIiwgdHlwZSk7ICovCisgICAgCisgICAgaWYgKHR5cGUtPm1lbW9fbWFz
dGVyICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHR5cGUtPm1lbW9fbWFzdGVyID09IHR5cGUpIHsK
KyAgICAgICAgICAgIC8qIG5lZWQgdG8gcmVtb3ZlIG15c2VsZiBmcm9tIHRoZSBtZW1vIHRhYmxl
LiAqLworICAgICAgICAgICAgdHNmX3R5cGVfdCAqdG9fZGVsZXRlID0gdHlwZTsKKyAgICAgICAg
ICAgIHRzZl9tdXRleF9sb2NrKCZtZW1vX2xvY2spOworICAgICAgICAgICAgdHNmX3N0X2RlbGV0
ZShtZW1vX3RhYmxlLCAoY2hhcioqKSZ0b19kZWxldGUsIE5VTEwpOworICAgICAgICAgICAgdHNm
X211dGV4X3VubG9jaygmbWVtb19sb2NrKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8qIHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIHRoZSBtZW1vIG1hc3Rlci4gKi8KKyAgICAgICAg
ICAgIC8qIHByaW50ZigiRGVzdHJveWluZyBtZW1vIG1hc3RlcjogJXBcbiIsIHR5cGUtPm1lbW9f
bWFzdGVyKTsgKi8KKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlwZS0+bWVtb19tYXN0
ZXIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN3aXRjaCAodHlwZS0+a2luZF9jb2Rl
KSB7CisgICAgICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgICAgICAgICAgdHNmX3R5cGVfZGVz
dHJveSh0eXBlLT51LmEuZWxlbWVudF90eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFRTRl9US19TVFJVQ1Q6CisgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV9kZXN0cm95
KHR5cGUtPnUucy50dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUU0ZfVEtf
Q0hPSUNFOgorICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfZGVzdHJveSh0eXBlLT51LmgudHQp
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdHNm
X2F0b21pY19jb3VudF9kZXN0cm95KCZ0eXBlLT5yZWZfY291bnQpOworICAgIAorICAgIGlmICh0
eXBlLT5jb21tZW50IT1OVUxMKSB7CisgICAgICAgIGZyZWUodHlwZS0+Y29tbWVudCk7CisgICAg
fQorICAgIAorICAgIGlmICh0eXBlLT5uYW1lIT1OVUxMKSB7CisgICAgICAgIGZyZWUodHlwZS0+
bmFtZSk7CisgICAgfQorICAgIAorICAgIGZyZWUodHlwZSk7CisgICAgCisgICAgZGVjcmVtZW50
X3R5cGVfYmFsYW5jZSgpOworCisgICAgLyogcHJpbnRmKCJkZXN0cm95ZWQgYSB0eXBlIGF0ICVw
XG4iLHR5cGUpOyAqLworfQorCitzdGF0aWMgdHNmX2Jvb2xfdCB0eXBlX3ZlcmlmeV9yZWModHNm
X3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbGlt
aXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBkZXB0aCkgeworICAgIHVpbnQzMl90IGk7CisKKyAgICBpZiAoZGVwdGg9PXRzZl9saW1pdHNf
ZGVwdGhfbGltaXQobGltaXRzKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9B
TExPV0VELAorICAgICAgICAgICAgICAgICAgICAgICJUeXBlIGV4Y2VlZHMgZGVwdGggbGltaXQi
KTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKCF0eXBl
X2tpbmRfdmVyaWZ5KHR5cGUtPmtpbmRfY29kZSxsaW1pdHMsVFNGX0VfTk9UX0FMTE9XRUQpKSB7
CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICh0eXBlLT5j
b21tZW50IT1OVUxMICYmCisgICAgICAgICF0c2ZfbGltaXRzX2FsbG93X2NvbW1lbnRzKGxpbWl0
cykpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfQUxMT1dFRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAiRW5jb3VudGVyZWQgY29tbWVudHMsIGJ1dCBjb21tZW50ZWQgYXJlIG5v
dCBhbGxvd2VkIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAg
IHN3aXRjaCAodHlwZS0+a2luZF9jb2RlKSB7CisgICAgICAgIGNhc2UgVFNGX1RLX0FSUkFZOgor
ICAgICAgICAgICAgaWYgKCF0eXBlX3ZlcmlmeV9yZWModHlwZS0+dS5hLmVsZW1lbnRfdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlcHRoKzEpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFRTRl9US19TVFJVQ1Q6CisgICAgICAgICAgICBpZiAodHNmX3N0cnVjdF90eXBlX2dldF9udW1f
ZWxlbWVudHModHlwZSk+CisgICAgICAgICAgICAgICAgdHNmX2xpbWl0c19tYXhfc3RydWN0X3Np
emUobGltaXRzKSkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfTk9UX0FM
TE9XRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RydWN0dXJlIHR5cGUgc2l6
ZSBsaW1pdCBleGNlZWRlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGk9MDsKKyAgICAgICAgICAgICAgICAgaTx0
c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsKKyAgICAgICAgICAgICAgICAg
KytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRzZl9zdHJ1Y3RfdHlwZV9nZXRfZWxlbWVudCh0
eXBlLGkpLT5jb21tZW50IT1OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICF0c2ZfbGltaXRz
X2FsbG93X2NvbW1lbnRzKGxpbWl0cykpIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9OT1RfQUxMT1dFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRW5jb3VudGVyZWQgY29tbWVudHMsIGJ1dCBjb21tZW50ZWQgYXJlICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgaWYgKCF0eXBlX3ZlcmlmeV9yZWModHNmX3N0cnVjdF90eXBlX2dl
dF9lbGVtZW50KHR5cGUsaSktPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGltaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRo
KzEpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VFNGX1RLX0NIT0lDRToKKyAgICAgICAgICAgIGlmICh0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9l
bGVtZW50cyh0eXBlKT4KKyAgICAgICAgICAgICAgICB0c2ZfbGltaXRzX21heF9jaG9pY2Vfc2l6
ZShsaW1pdHMpKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfQUxM
T1dFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgdHlwZSBzaXplIGxp
bWl0IGV4Y2VlZGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaT0wOworICAgICAgICAgICAgICAgICBpPHRzZl9j
aG9pY2VfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpOworICAgICAgICAgICAgICAgICArK2kp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXR5cGVfdmVyaWZ5X3JlYyh0c2ZfY2hvaWNlX3R5cGVf
Z2V0X2VsZW1lbnQodHlwZSxpKS0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW1pdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVw
dGgrMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3Ry
dWU7Cit9CisKK3VpbnQzMl90IHRzZl90eXBlX2dldF9ieXRlX3NpemUodHNmX3R5cGVfdCAqdHlw
ZSkgeworICAgIHVpbnQzMl90IHNpemU9dHlwZS0+Ynl0ZV9zaXplOworICAgIGlmIChzaXplPT0w
KSB7CisgICAgICAgIHRzZl9ib29sX3QgcmVzdWx0PXRzZl90eXBlX3dyaXRlKHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl9zaXplX2NhbGNfd3JpdGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZSk7CisgICAg
ICAgIHRzZl9hc3NlcnQocmVzdWx0KTsKKyAgICAgICAgdHlwZS0+Ynl0ZV9zaXplPXNpemU7Cisg
ICAgfQorICAgIHJldHVybiBzaXplOworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX3ZlcmlmeSh0
c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX2xpbWl0c190
ICpsaW1pdHMpIHsKKyAgICBpZiAobGltaXRzPT1OVUxMKSB7CisgICAgICAgIHJldHVybiB0c2Zf
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl90eXBlX2dldF9ieXRlX3NpemUodHlwZSk+
CisgICAgICAgIHRzZl9saW1pdHNfbWF4X3R5cGVfc2l6ZShsaW1pdHMpKSB7CisgICAgICAgIHRz
Zl9zZXRfZXJyb3IoVFNGX0VfTk9UX0FMTE9XRUQsCisgICAgICAgICAgICAgICAgICAgICAgIlR5
cGUgaXMgbGFyZ2VyIHRoYW4gdHlwZSBzaXplIGxpbWl0Iik7CisgICAgICAgIHJldHVybiB0c2Zf
ZmFsc2U7CisgICAgfQorICAgIAorICAgIC8qIHZlcmlmeSBhbGwgZWxzZSAqLworICAgIHJldHVy
biB0eXBlX3ZlcmlmeV9yZWModHlwZSxsaW1pdHMsMCk7Cit9CisKK2ludCB0c2ZfdHlwZV9nZXRf
aGFzaCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuIHR5cGUtPmhhc2hfY29kZTsKK30K
Kwordm9pZCB0c2ZfdHlwZV9yZWNvbXB1dGVfaGFzaCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAg
dHlwZS0+aGFzaF9jb2RlID0gdHlwZS0+a2luZF9jb2RlOworICAgIHN3aXRjaCAodHlwZS0+a2lu
ZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQVJSQVk6CisgICAgICAgIHR5cGUtPmhhc2hfY29k
ZSArPSB0c2ZfdHlwZV9nZXRfaGFzaCh0eXBlLT51LmEuZWxlbWVudF90eXBlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUU0ZfVEtfU1RSVUNUOgorICAgICAgICB0eXBlLT5oYXNoX2NvZGUg
Kz0gdHNmX3R5cGVfdGFibGVfZ2V0X2hhc2godHlwZS0+dS5zLnR0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAgICAgICB0eXBlLT5oYXNoX2NvZGUgKz0KKyAg
ICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2dldF9oYXNoKHR5cGUtPnUuaC50dCkgKworICAgICAg
ICAgICAgdHlwZS0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQ7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlw
ZV9jb21wYXJlKHRzZl90eXBlX3QgKmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNm
X3R5cGVfdCAqYikgeworICAgIGlmIChhID09IGIpIHsKKyAgICAgICAgcmV0dXJuIHRzZl90cnVl
OworICAgIH0KKyAgICAKKyAgICBpZiAoYS0+a2luZF9jb2RlICE9IGItPmtpbmRfY29kZSkgewor
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKGEtPmtp
bmRfY29kZSkgeworICAgIGNhc2UgVFNGX1RLX0FSUkFZOgorICAgICAgICBpZiAoIXRzZl90eXBl
X2NvbXBhcmUoYS0+dS5hLmVsZW1lbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGItPnUuYS5lbGVtZW50X3R5cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNl
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDoKKyAg
ICAgICAgaWYgKCF0c2ZfdHlwZV90YWJsZV9jb21wYXJlKGEtPnUucy50dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGItPnUucy50dCkpIHsKKyAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUU0ZfVEtf
Q0hPSUNFOgorICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX2NvbXBhcmUoYS0+dS5oLnR0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi0+dS5oLnR0KSkgeworICAgICAg
ICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYS0+dS5oLmNo
b2ljZV9hc19mdWxsX3dvcmQgIT0gYi0+dS5oLmNob2ljZV9hc19mdWxsX3dvcmQpIHsKKyAgICAg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1
ZTsKK30KKwordHNmX3R5cGVfdCAqdHNmX3R5cGVfbWVtbyh0c2ZfdHlwZV90ICp0eXBlKSB7Cisg
ICAgdHNmX3R5cGVfdCAqcmVzdWx0OworICAgIAorICAgIHJlc3VsdCA9IHR5cGUtPm1lbW9fbWFz
dGVyOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgCisgICAgdHNmX211dGV4X2xvY2soJm1lbW9fbG9jayk7CisgICAgaWYgKHRzZl9zdF9sb29r
dXAobWVtb190YWJsZSwgKGNoYXIqKXR5cGUsICh2b2lkKiopJnJlc3VsdCkpIHsKKyAgICAgICAg
dHlwZS0+bWVtb19tYXN0ZXIgPSB0c2ZfdHlwZV9kdXAocmVzdWx0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAodHNmX3N0X2FkZF9kaXJlY3QobWVtb190YWJsZSwgKGNoYXIqKXR5cGUsICh2
b2lkKil0eXBlKSA8IDApIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBt
ZW1vaXplIHR5cGUiKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB0eXBlLT5tZW1vX21hc3RlciA9IHR5cGU7CisgICAgICAgICAgICBy
ZXN1bHQgPSB0eXBlOworICAgICAgICB9CisgICAgfQorICAgIHRzZl9tdXRleF91bmxvY2soJm1l
bW9fbG9jayk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHNmX2Jvb2xfdCB0c2Zf
dHlwZV9pc19keW5hbWljKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+aXNf
ZHluYW1pYzsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9pbnN0YW5jZW9mKHRzZl90eXBlX3Qg
Km9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0d28pIHsK
KyAgICBpZiAodHdvLT5raW5kX2NvZGU9PVRTRl9US19WT0lEKSB7CisgICAgICAgIHJldHVybiB0
c2ZfdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAodHNmX3R5cGVfa2luZF9pc19wcmltaXRpdmUob25l
LT5raW5kX2NvZGUpIHx8CisJb25lLT5raW5kX2NvZGU9PVRTRl9US19CSVQpIHsKKyAgICAgICAg
cmV0dXJuIHRzZl90eXBlX2tpbmRfaXNfcHJpbWl0aXZlKHR3by0+a2luZF9jb2RlKQorCSAgICB8
fCB0d28tPmtpbmRfY29kZT09VFNGX1RLX0JJVDsKKyAgICB9CisgICAgCisgICAgaWYgKG9uZS0+
a2luZF9jb2RlIT10d28tPmtpbmRfY29kZSkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKworICAgIHN3aXRjaCAob25lLT5raW5kX2NvZGUpIHsKKyAgICAgICAgY2FzZSBUU0Zf
VEtfQVJSQVk6CisgICAgICAgICAgICByZXR1cm4gdHNmX3R5cGVfaW5zdGFuY2VvZihvbmUtPnUu
YS5lbGVtZW50X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
d28tPnUuYS5lbGVtZW50X3R5cGUpOworICAgICAgICBjYXNlIFRTRl9US19TVFJVQ1Q6CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgICAgICAgICBm
b3IgKGk9MDtpPHRzZl9zdHJ1Y3RfdHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR3byk7KytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm49dHNmX3N0cnVjdF90eXBlX2dl
dF9lbGVtZW50KHR3byxpKTsKKyAgICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAq
bjI9CisgICAgICAgICAgICAgICAgICAgICAgICB0c2Zfc3RydWN0X3R5cGVfZmluZF9ub2RlKG9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfbmFtZShu
KSk7CisJCSAgICBpZiAobi0+b3B0aW9uYWwpIHsKKwkJCWNvbnRpbnVlOworCQkgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAobjI9PU5VTEwgfHwgbjItPm9wdGlvbmFsKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmICghdHNmX3R5cGVfaW5zdGFuY2VvZigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0X3R5cGUobjIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfdHlwZShuKSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUU0ZfVEtfQ0hPSUNFOgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGk7CisgICAgICAgICAgICAgICAgZm9yIChpPTA7aTx0c2ZfY2hvaWNl
X3R5cGVfZ2V0X251bV9lbGVtZW50cyhvbmUpOysraSkgeworICAgICAgICAgICAgICAgICAgICB0
c2ZfbmFtZWRfdHlwZV90ICpuPXRzZl9jaG9pY2VfdHlwZV9nZXRfZWxlbWVudChvbmUsaSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4yPQorICAgICAgICAgICAgICAg
ICAgICAgICAgdHNmX2Nob2ljZV90eXBlX2ZpbmRfbm9kZSh0d28sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0X25hbWUobikpOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4yPT1OVUxMKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0c2ZfdHlwZV9pbnN0YW5jZW9mKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfdHlwZShuKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0X3R5cGUobjIp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNm
X3RydWU7Cit9CisKK3RzZl90eXBlX2tpbmRfdCB0c2ZfdHlwZV9nZXRfa2luZF9jb2RlKHRzZl90
eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+a2luZF9jb2RlOworfQorCit1aW50MzJf
dCB0c2ZfdHlwZV9nZXRfc3RhdGljX3NpemUodHNmX3R5cGVfdCAqdHlwZSkgeworICAgIHN3aXRj
aCAodHlwZS0+a2luZF9jb2RlKSB7CisgICAgY2FzZSBUU0ZfVEtfQVJSQVk6CisgICAgICAgIHJl
dHVybiBVSU5UMzJfTUFYOworICAgIGNhc2UgVFNGX1RLX1NUUlVDVDogeworICAgICAgICB1aW50
MzJfdCBpLCBudW1fYml0cyA9IDAsIHJldCA9IDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0
c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0eXBlKTsgKytpKSB7CisgICAgICAgICAg
ICB1aW50MzJfdCB0bXA7CisgICAgICAgICAgICBpZiAodHNmX3N0cnVjdF90eXBlX2dldF9lbGVt
ZW50KHR5cGUsaSktPnR5cGUtPmtpbmRfY29kZSA9PSBUU0ZfVEtfQklUKSB7CisgICAgICAgICAg
ICAgICAgKytudW1fYml0czsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHRtcCA9IHRzZl90eXBlX2dldF9zdGF0aWNfc2l6ZSgKKyAgICAgICAg
ICAgICAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQodHlwZSwgaSktPnR5cGUpOworICAg
ICAgICAgICAgaWYgKHRtcCA9PSBVSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFVJTlQzMl9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXQgKz0gdG1wOworICAg
ICAgICB9CisgICAgICAgIHJldCArPSAoKG51bV9iaXRzICsgNykgPj4gMyk7CisgICAgICAgIHJl
dHVybiByZXQ7CisgICAgfQorICAgIGNhc2UgVFNGX1RLX0NIT0lDRToKKyAgICAgICAgaWYgKHRz
Zl9jaG9pY2VfdHlwZV9oYXNfbm9uX3ZvaWQodHlwZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBV
SU5UMzJfTUFYOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRzZl9jaG9pY2Vf
dHlwZV9nZXRfbnVtX2VsZW1lbnRzKHR5cGUpID49IDI1NikgeworICAgICAgICAgICAgICAgIGlm
ICh0eXBlLT51LmguY2hvaWNlX2FzX2Z1bGxfd29yZCkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gNDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gVUlOVDMyX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNGX1RLX0JJVDoKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgY2FzZSBUU0ZfVEtfVk9JRDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBUU0ZfVEtf
U1RSSU5HOgorICAgICAgICByZXR1cm4gVUlOVDMyX01BWDsKKyAgICBjYXNlIFRTRl9US19BTlk6
CisgICAgICAgIHJldHVybiBVSU5UMzJfTUFYOworICAgIGNhc2UgVFNGX1RLX0lOVEVHRVI6Cisg
ICAgY2FzZSBUU0ZfVEtfTE9ORzoKKyAgICAgICAgcmV0dXJuIFVJTlQzMl9NQVg7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIHRzZl9wcmltaXRpdmVfdHlwZV9raW5kX3NpemVfb2YodHlw
ZS0+a2luZF9jb2RlKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKnRzZl90eXBlX2dldF9jb21t
ZW50KHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+Y29tbWVudDsKK30KKwor
dHNmX2Jvb2xfdCB0c2ZfdHlwZV9oYXNfY29tbWVudCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAg
cmV0dXJuIHR5cGUtPmNvbW1lbnQgIT0gTlVMTDsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9z
ZXRfY29tbWVudCh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqY29tbWVudCkgeworICAgIGNoYXIgKmNvbW1lbnRfY29weTsKKyAg
ICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKCF0c2ZfdHlwZV9raW5kX2lzX2NvbW1l
bnRhYmxlKCgqdHlwZSktPmtpbmRfY29kZSkpIHsKKyAgICAgICAgdHNmX3NldF9lcnJvcihUU0Zf
RV9CQURfVFlQRV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gdHlwZSBp
cyBub3QgY29tbWVudGFibGUiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKHN0cmxlbihjb21tZW50KSArIDEgPiBUU0ZfTUFYX0NPTU1FTlRfU0laRSkg
eworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1NUUl9PVkVSRkxPVywKKyAgICAgICAgICAg
ICAgICAgICAgICAiU3RyaW5nICclcycgaXMgdG9vIGxvbmcgdG8gYmUgdXNlZCBhcyBhIHR5cGUg
Y29tbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCk7CisgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGNvbW1lbnRfY29weSA9IHN0cmR1cChjb21t
ZW50KTsKKyAgICBpZiAoY29tbWVudF9jb3B5ID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9l
cnJubygiQ291bGQgbm90IHN0ZHVwIGNvbW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgcmV0ID0gdHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAg
ICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShjb21tZW50X2NvcHkpOworICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAocmV0LT5jb21tZW50ICE9
IE5VTEwpIHsKKyAgICAgICAgZnJlZShyZXQtPmNvbW1lbnQpOworICAgIH0KKyAgICByZXQtPmNv
bW1lbnQgPSBjb21tZW50X2NvcHk7CisgICAgcmV0LT5ieXRlX3NpemUgPSAwOworICAgIAorICAg
IHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9
CisKK2NvbnN0IGNoYXIgKnRzZl90eXBlX2dldF9uYW1lKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAg
ICByZXR1cm4gdHlwZS0+bmFtZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9oYXNfbmFtZSh0
c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuIHR5cGUtPm5hbWUgIT0gTlVMTDsKK30KKwor
dHNmX2Jvb2xfdCB0c2ZfdHlwZV9zZXRfbmFtZSh0c2ZfdHlwZV90ICoqdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgeworICAgIGNoYXIgKm5hbWVf
Y29weTsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKCF0c2ZfdHlwZV9raW5k
X2lzX2NvbW1lbnRhYmxlKCgqdHlwZSktPmtpbmRfY29kZSkpIHsKKyAgICAgICAgdHNmX3NldF9l
cnJvcihUU0ZfRV9CQURfVFlQRV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2
ZW4gdHlwZSBpcyBub3QgY29tbWVudGFibGUiKTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICB9CisgICAgCisgICAgaWYgKHN0cmxlbihuYW1lKSArIDEgPiBUU0ZfTUFYX05BTUVfU0la
RSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1NUUl9PVkVSRkxPVywKKyAgICAgICAg
ICAgICAgICAgICAgICAiU3RyaW5nICclcycgaXMgdG9vIGxvbmcgdG8gYmUgdXNlZCBhcyBhIHR5
cGUgbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIHJldHVybiB0
c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIG5hbWVfY29weSA9IHN0cmR1cChuYW1lKTsKKyAg
ICBpZiAobmFtZV9jb3B5ID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQg
bm90IHN0cmR1cCBuYW1lIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIHJldCA9IHRzZl90eXBlX293bl9iZWdpbigqdHlwZSk7CisgICAgaWYgKHJldCA9PSBO
VUxMKSB7CisgICAgICAgIGZyZWUobmFtZV9jb3B5KTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHJldC0+bmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGZy
ZWUocmV0LT5uYW1lKTsKKyAgICB9CisgICAgcmV0LT5uYW1lID0gbmFtZV9jb3B5OworICAgIHJl
dC0+Ynl0ZV9zaXplID0gMDsKKyAgICAKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJl
dCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX2hhc192
ZXJzaW9uKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+dmVyc2lvbiAhPSAw
OworfQorCit1aW50MzJfdCB0c2ZfdHlwZV9nZXRfcmF3X3ZlcnNpb24odHNmX3R5cGVfdCAqdHlw
ZSkgeworICAgIHJldHVybiB0eXBlLT52ZXJzaW9uOworfQorCit1aW50MTZfdCB0c2ZfdHlwZV9n
ZXRfbWFqb3JfdmVyc2lvbih0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlLT52
ZXJzaW9uID4+IDE2KSAmIDB4ZmZmZjsKK30KKwordWludDhfdCB0c2ZfdHlwZV9nZXRfbWlub3Jf
dmVyc2lvbih0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlLT52ZXJzaW9uID4+
IDgpICYgMHhmZjsKK30KKwordWludDhfdCB0c2ZfdHlwZV9nZXRfcGF0Y2hfdmVyc2lvbih0c2Zf
dHlwZV90ICp0eXBlKSB7CisgICAgcmV0dXJuICh0eXBlLT52ZXJzaW9uID4+IDApICYgMHhmZjsK
K30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9zZXRfcmF3X3ZlcnNpb24odHNmX3R5cGVfdCAqKnR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2ZXJzaW9u
KSB7CisgICAgdHNmX3R5cGVfdCAqcmV0OworICAgIAorICAgIGlmICghdHNmX3R5cGVfa2luZF9p
c19jb21tZW50YWJsZSgoKnR5cGUpLT5raW5kX2NvZGUpKSB7CisgICAgICAgIHRzZl9zZXRfZXJy
b3IoVFNGX0VfQkFEX1RZUEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVu
IHR5cGUgaXMgbm90IGNvbW1lbnRhYmxlIik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIHJldCA9IHRzZl90eXBlX293bl9iZWdpbigqdHlwZSk7CisgICAgaWYg
KHJldCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIHJldC0+dmVyc2lvbiA9IHZlcnNpb247CisgICAgcmV0LT5ieXRlX3NpemUgPSAwOworICAg
IAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3Ry
dWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfc2V0X3ZlcnNpb24odHNmX3R5cGVfdCAqKnR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1ham9yLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IG1pbm9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBhdGNoKSB7CisgICAgcmV0dXJuIHRzZl90eXBl
X3NldF9yYXdfdmVyc2lvbih0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCgoKHVpbnQzMl90KW1ham9yKSAmIDB4ZmZmZikgPDwgMTYpIHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgoKCh1aW50MzJfdCltaW5vcikgJiAweGZmKSA8PCA4KSB8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgodWludDMyX3QpcGF0Y2gp
ICYgMHhmZikgPDwgMCkpOworfQorCit0c2ZfdHlwZV90ICp0c2ZfYXJyYXlfdHlwZV9nZXRfZWxl
bWVudF90eXBlKHRzZl90eXBlX3QgKnR5cGUpIHsKKyAgICByZXR1cm4gdHlwZS0+dS5hLmVsZW1l
bnRfdHlwZTsKK30KKwordHNmX2Jvb2xfdCB0c2Zfc3RydWN0X3R5cGVfYXBwZW5kKHRzZl90eXBl
X3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
Km5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqZWxl
X3R5cGUpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQgPSB0c2ZfdHlwZV9vd25fYmVnaW4oKnR5cGUp
OworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICBpZiAoZWxlX3R5cGUhPU5VTEwpIHsK
KyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3koZWxlX3R5cGUpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX3R5cGVfdGFi
bGVfYXBwZW5kKHJldC0+dS5zLnR0LG5hbWUsZWxlX3R5cGUpKSB7CisgICAgICAgIHRzZl90eXBl
X293bl9hYm9ydCgqdHlwZSwgcmV0KTsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9
CisgICAgCisgICAgaWYgKGVsZV90eXBlLT5pc19keW5hbWljKSB7CisgICAgICAgIHJldC0+aXNf
ZHluYW1pYz10c2ZfdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLyogZGVwZW5kaW5nIG9uIHRoZSBp
bnZhcmlhbnQgdGhhdCB0aGUgaGFzaCBjb2RlIG9mIHRoZSB0eXBlIHRhYmxlIGlzCisgICAgICog
anVzdCB0aGUgc3VtIG9mIHRoZSBoYXNoIGNvZGVzIG9mIHRoZSBuYW1lZCB0eXBlcy4gKi8KKyAg
ICByZXQtPmhhc2hfY29kZSArPQorICAgICAgICB0c2ZfbmFtZWRfdHlwZV9nZXRfaGFzaCgKKyAg
ICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfaW5kZXgocmV0LT51LnMudHQsCisgICAg
ICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfZ2V0X251bV9lbGVtZW50cyhyZXQtPnUucy50dCkt
MSkpOworCisgICAgcmV0LT5ieXRlX3NpemU9MDsKKyAgICAKKyAgICB0c2ZfdHlwZV9vd25fY29t
bWl0KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRz
Zl9zdHJ1Y3RfdHlwZV9yZW1vdmUodHNmX3R5cGVfdCAqKnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgeworICAgIHRzZl90eXBlX3QgKnJl
dDsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuYW1lZF90eXBlOworICAgIGludCBoYXNoX2NvZGU7
CisgICAgCisgICAgcmV0ID0gdHNmX3R5cGVfb3duX2JlZ2luKCp0eXBlKTsKKyAgICBpZiAocmV0
ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
bmFtZWRfdHlwZSA9IHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfbmFtZShyZXQtPnUucy50dCwgbmFt
ZSk7CisgICAgaWYgKG5hbWVkX3R5cGUgPT0gTlVMTCkgeworICAgICAgICB0c2ZfdHlwZV9vd25f
YWJvcnQoKnR5cGUsIHJldCk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAg
IAorICAgIC8qIGRlcGVuZGluZyBvbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGhhc2ggY29kZSBv
ZiB0aGUgdHlwZSB0YWJsZQorICAgICAqIGlzIGp1c3QgdGhlIHN1bSBvZiB0aGUgaGFzaCBjb2Rl
cyBvZiB0aGUgbmFtZWQgdHlwZXMuICovCisgICAgaGFzaF9jb2RlID0gdHNmX25hbWVkX3R5cGVf
Z2V0X2hhc2gobmFtZWRfdHlwZSk7CisKKyAgICBpZiAoIXRzZl90eXBlX3RhYmxlX3JlbW92ZShy
ZXQtPnUucy50dCwgbmFtZSkpIHsKKyAgICAgICAgdHNmX3R5cGVfb3duX2Fib3J0KCp0eXBlLCBy
ZXQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXQtPmhh
c2hfY29kZSAtPSBoYXNoX2NvZGU7CisgICAgcmV0LT5ieXRlX3NpemUgPSAwOworICAgIAorICAg
IHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9
CisKK3RzZl9ib29sX3QgdHNmX3N0cnVjdF90eXBlX3NldF9jb21tZW50KHRzZl90eXBlX3QgKip0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmNvbW1lbnQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgdHNmX25hbWVkX3R5cGVfdCAq
bjsKKyAgICAKKyAgICByZXQgPSB0c2ZfdHlwZV9vd25fYmVnaW4oKnR5cGUpOworICAgIGlmIChy
ZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBuID0gdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShyZXQsbmFtZSk7CisgICAgCisgICAgaWYg
KG4gPT0gTlVMTCkgeworICAgICAgICB0c2ZfdHlwZV9vd25fYWJvcnQoKnR5cGUsIHJldCk7Cisg
ICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICghdHNmX25hbWVk
X3R5cGVfc2V0X2NvbW1lbnQobiwgY29tbWVudCkpIHsKKyAgICAgICAgdHNmX3R5cGVfb3duX2Fi
b3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAK
KyAgICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUs
IHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9zdHJ1Y3Rf
dHlwZV9zZXRfb3B0aW9uYWwodHNmX3R5cGVfdCAqKnR5cGUsCisJCQkJCWNvbnN0IGNoYXIgKm5h
bWUsCisJCQkJCXRzZl9ib29sX3Qgb3B0aW9uYWwpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7Cisg
ICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICByZXQgPSB0c2ZfdHlwZV9vd25fYmVn
aW4oKnR5cGUpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgIH0KKyAgICAKKyAgICBuID0gdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZShyZXQs
IG5hbWUpOworICAgIAorICAgIGlmIChuID09IE5VTEwpIHsKKyAgICAgICAgdHNmX3R5cGVfb3du
X2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB0c2ZfbmFtZWRfdHlwZV9zZXRfb3B0aW9uYWwobiwgb3B0aW9uYWwpOworICAgIAor
ICAgIHJldC0+Ynl0ZV9zaXplID0gMDsKKworICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwg
cmV0KTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl90eXBlX3QgKnRzZl9zdHJ1Y3Rf
dHlwZV9maW5kKHRzZl90eXBlX3QgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgICB0c2Zf
bmFtZWRfdHlwZV90ICpuID0gdHNmX3N0cnVjdF90eXBlX2ZpbmRfbm9kZSh0eXBlLCBuYW1lKTsK
KyAgICBpZiAobiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gbi0+dHlwZTsKK30KKwordHNmX25hbWVkX3R5cGVfdCAqdHNmX3N0cnVjdF90
eXBlX2ZpbmRfbm9kZSh0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7CisgICAgcmV0dXJuIHRzZl90
eXBlX3RhYmxlX2ZpbmRfYnlfbmFtZSh0eXBlLT51LnMudHQsIG5hbWUpOworfQorCit1aW50MzJf
dCB0c2Zfc3RydWN0X3R5cGVfZ2V0X251bV9lbGVtZW50cyh0c2ZfdHlwZV90ICp0eXBlKSB7Cisg
ICAgcmV0dXJuIHRzZl90eXBlX3RhYmxlX2dldF9udW1fZWxlbWVudHModHlwZS0+dS5zLnR0KTsK
K30KKwordHNmX25hbWVkX3R5cGVfdCAqdHNmX3N0cnVjdF90eXBlX2dldF9lbGVtZW50KHRzZl90
eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgaW5kZXgpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfdGFibGVfZmluZF9ieV9p
bmRleCh0eXBlLT51LnMudHQsIGluZGV4KTsKK30KKworY29uc3QgY2hhciAqdHNmX3N0cnVjdF90
eXBlX2dldF9lbGVtZW50X25hbWUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJu
IHRzZl9uYW1lZF90eXBlX2dldF9uYW1lKAorICAgICAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2Vs
ZW1lbnQodHlwZSwgaW5kZXgpKTsKK30KKwordHNmX3R5cGVfdCAqdHNmX3N0cnVjdF90eXBlX2dl
dF9lbGVtZW50X3R5cGUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJuIHRzZl9u
YW1lZF90eXBlX2dldF90eXBlKAorICAgICAgICB0c2Zfc3RydWN0X3R5cGVfZ2V0X2VsZW1lbnQo
dHlwZSwgaW5kZXgpKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfY2hvaWNlX3R5cGVfYXBwZW5kKHRz
Zl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVf
dCAqZWxlX3R5cGUpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7CisgICAgCisgICAgaWYgKCFzdHJj
bXAobmFtZSwgInVua25vd24iKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05BTUVf
Q09MTElTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICJUaGUgbmFtZSAndW5rbm93bicgaXMg
cmVzZXJ2ZWQgaW4gY2hvaWNlIHR5cGVzIik7CisgICAgICAgIGlmIChlbGVfdHlwZSAhPSBOVUxM
KSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9kZXN0cm95KGVsZV90eXBlKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXQgPSB0c2ZfdHlw
ZV9vd25fYmVnaW4oKnR5cGUpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICBpZiAo
ZWxlX3R5cGUgIT0gTlVMTCkgeworICAgICAgICAgICAgdHNmX3R5cGVfZGVzdHJveShlbGVfdHlw
ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoIXRzZl90eXBlX3RhYmxlX2FwcGVuZChyZXQtPnUuaC50dCwgbmFtZSwgZWxlX3R5cGUpKSB7
CisgICAgICAgIHRzZl90eXBlX293bl9hYm9ydCgqdHlwZSwgcmV0KTsKKyAgICAgICAgcmV0dXJu
IHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKGVsZV90eXBlLT5pc19keW5hbWljKSB7
CisgICAgICAgIHJldC0+aXNfZHluYW1pYyA9IHRzZl90cnVlOworICAgIH0KKyAgICAKKyAgICAv
KiBkZXBlbmRpbmcgb24gdGhlIGludmFyaWFudCB0aGF0IHRoZSBoYXNoIGNvZGUgb2YgdGhlIHR5
cGUgdGFibGUgaXMKKyAgICAgKiBqdXN0IHRoZSBzdW0gb2YgdGhlIGhhc2ggY29kZXMgb2YgdGhl
IG5hbWVkIHR5cGVzLiAqLworICAgIHJldC0+aGFzaF9jb2RlICs9CisgICAgICAgIHRzZl9uYW1l
ZF90eXBlX2dldF9oYXNoKAorICAgICAgICAgICAgdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRl
eChyZXQtPnUuaC50dCwKKyAgICAgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV9nZXRfbnVtX2Vs
ZW1lbnRzKHJldC0+dS5oLnR0KSAtIDEpKTsKKworICAgIHJldC0+Ynl0ZV9zaXplID0gMDsKKyAg
ICAKKyAgICB0c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90
cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl9jaG9pY2VfdHlwZV9yZW1vdmUodHNmX3R5cGVfdCAq
KnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt
ZSkgeworICAgIHRzZl90eXBlX3QgKnJldDsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuYW1lZF90
eXBlOworICAgIGludCBoYXNoX2NvZGU7CisgICAgCisgICAgcmV0ID0gdHNmX3R5cGVfb3duX2Jl
Z2luKCp0eXBlKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgCisgICAgbmFtZWRfdHlwZSA9IHRzZl90eXBlX3RhYmxlX2ZpbmRf
YnlfbmFtZShyZXQtPnUuaC50dCwgbmFtZSk7CisgICAgaWYgKG5hbWVkX3R5cGUgPT0gTlVMTCkg
eworICAgICAgICB0c2ZfdHlwZV9vd25fYWJvcnQoKnR5cGUsIHJldCk7CisgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIC8qIGRlcGVuZGluZyBvbiB0aGUgaW52YXJp
YW50IHRoYXQgdGhlIGhhc2ggY29kZSBvZiB0aGUgdHlwZSB0YWJsZQorICAgICAqIGlzIGp1c3Qg
dGhlIHN1bSBvZiB0aGUgaGFzaCBjb2RlcyBvZiB0aGUgbmFtZWQgdHlwZXMuICovCisgICAgaGFz
aF9jb2RlID0gdHNmX25hbWVkX3R5cGVfZ2V0X2hhc2gobmFtZWRfdHlwZSk7CisKKyAgICBpZiAo
IXRzZl90eXBlX3RhYmxlX3JlbW92ZShyZXQtPnUuaC50dCwgbmFtZSkpIHsKKyAgICAgICAgdHNm
X3R5cGVfb3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICByZXQtPmhhc2hfY29kZSAtPSBoYXNoX2NvZGU7CisgICAgcmV0LT5i
eXRlX3NpemUgPSAwOworICAgIAorICAgIHRzZl90eXBlX293bl9jb21taXQodHlwZSwgcmV0KTsK
KyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX2Nob2ljZV90eXBlX3Nl
dF9jb21tZW50KHRzZl90eXBlX3QgKip0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW1lbnQpIHsKKyAgICB0c2ZfdHlwZV90ICpyZXQ7
CisgICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICByZXQgPSB0c2ZfdHlwZV9vd25f
YmVnaW4oKnR5cGUpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBuID0gdHNmX2Nob2ljZV90eXBlX2ZpbmRfbm9kZShy
ZXQsbmFtZSk7CisgICAgCisgICAgaWYgKG4gPT0gTlVMTCkgeworICAgICAgICB0c2ZfdHlwZV9v
d25fYWJvcnQoKnR5cGUsIHJldCk7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGlmICghdHNmX25hbWVkX3R5cGVfc2V0X2NvbW1lbnQobiwgY29tbWVudCkpIHsK
KyAgICAgICAgdHNmX3R5cGVfb3duX2Fib3J0KCp0eXBlLCByZXQpOworICAgICAgICByZXR1cm4g
dHNmX2ZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXQtPmJ5dGVfc2l6ZSA9IDA7CisKKyAgICB0
c2ZfdHlwZV9vd25fY29tbWl0KHR5cGUsIHJldCk7CisgICAgcmV0dXJuIHRzZl90cnVlOworfQor
Cit0c2ZfdHlwZV90ICp0c2ZfY2hvaWNlX3R5cGVfZmluZCh0c2ZfdHlwZV90ICp0eXBlLGNvbnN0
IGNoYXIgKm5hbWUpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuPXRzZl9jaG9pY2VfdHlwZV9m
aW5kX25vZGUodHlwZSxuYW1lKTsKKyAgICBpZiAobj09TlVMTCkgeworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG4tPnR5cGU7Cit9CisKK3RzZl9uYW1lZF90
eXBlX3QgKnRzZl9jaG9pY2VfdHlwZV9maW5kX25vZGUodHNmX3R5cGVfdCAqdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkg
eworICAgIHJldHVybiB0c2ZfdHlwZV90YWJsZV9maW5kX2J5X25hbWUodHlwZS0+dS5oLnR0LCBu
YW1lKTsKK30KKwordWludDMyX3QgdHNmX2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHModHNm
X3R5cGVfdCAqdHlwZSkgeworICAgIHJldHVybiB0c2ZfdHlwZV90YWJsZV9nZXRfbnVtX2VsZW1l
bnRzKHR5cGUtPnUuaC50dCk7Cit9CisKK3RzZl9uYW1lZF90eXBlX3QgKnRzZl9jaG9pY2VfdHlw
ZV9nZXRfZWxlbWVudCh0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJuIHRzZl90
eXBlX3RhYmxlX2ZpbmRfYnlfaW5kZXgodHlwZS0+dS5oLnR0LCBpbmRleCk7Cit9CisKK2NvbnN0
IGNoYXIgKnRzZl9jaG9pY2VfdHlwZV9nZXRfZWxlbWVudF9uYW1lKHRzZl90eXBlX3QgKnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBp
bmRleCkgeworICAgIHJldHVybiB0c2ZfbmFtZWRfdHlwZV9nZXRfbmFtZSgKKyAgICAgICAgdHNm
X2Nob2ljZV90eXBlX2dldF9lbGVtZW50KHR5cGUsIGluZGV4KSk7Cit9CisKK3RzZl90eXBlX3Qg
KnRzZl9jaG9pY2VfdHlwZV9nZXRfZWxlbWVudF90eXBlKHRzZl90eXBlX3QgKnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCkg
eworICAgIHJldHVybiB0c2ZfbmFtZWRfdHlwZV9nZXRfdHlwZSgKKyAgICAgICAgdHNmX2Nob2lj
ZV90eXBlX2dldF9lbGVtZW50KHR5cGUsIGluZGV4KSk7Cit9CisKK3RzZl9ib29sX3QgdHNmX2No
b2ljZV90eXBlX2hhc19ub25fdm9pZCh0c2ZfdHlwZV90ICp0eXBlKSB7CisgICAgdWludDMyX3Qg
aTsKKyAgICBmb3IgKGk9MDtpPHRzZl90eXBlX3RhYmxlX2dldF9udW1fZWxlbWVudHModHlwZS0+
dS5oLnR0KTsrK2kpIHsKKyAgICAgICAgaWYgKHRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfaW5kZXgo
dHlwZS0+dS5oLnR0LGkpLT4KKyAgICAgICAgICAgICAgICB0eXBlLT5raW5kX2NvZGUhPVRTRl9U
S19WT0lEKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX3RydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHRzZl9mYWxzZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfY2hvaWNlX3R5cGVf
dXNlc19zYW1lX2luZGljZXModHNmX3R5cGVfdCAqYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKmIpIHsKKyAgICB1aW50MzJfdCBpOwor
ICAgIGlmICh0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVtZW50cyhhKT4KKyAgICAgICAgdHNm
X2Nob2ljZV90eXBlX2dldF9udW1fZWxlbWVudHMoYikpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9m
YWxzZTsKKyAgICB9CisgICAgZm9yIChpPTA7aTx0c2ZfY2hvaWNlX3R5cGVfZ2V0X251bV9lbGVt
ZW50cyhhKTsrK2kpIHsKKyAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbj10c2ZfY2hvaWNlX3R5
cGVfZ2V0X2VsZW1lbnQoYSxpKTsKKyAgICAgICAgdHNmX25hbWVkX3R5cGVfdCAqbjI9dHNmX2No
b2ljZV90eXBlX2dldF9lbGVtZW50KGIsaSk7CisgICAgICAgIGlmIChzdHJjbXAodHNmX25hbWVk
X3R5cGVfZ2V0X25hbWUobiksCisgICAgICAgICAgICAgICAgICAgdHNmX25hbWVkX3R5cGVfZ2V0
X25hbWUobjIpKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKKworCisKSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfdHlwZV9pbl9tYXAuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGVfaW5fbWFwLmMJ
KG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl90eXBlX2luX21hcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzE1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAg
UElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAidHNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAidHNmX2Zvcm1hdC5oIgorCisjaWZkZWYg
SEFWRV9QVEhSRUFECisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKK3N0YXRpYyB0c2Zf
dHlwZV9pbl9tYXBfdCBlbXB0eV9zaW5nbGV0b247CitzdGF0aWMgdHNmX29uY2VfdCBlbXB0eV9z
aW5nbGV0b25fb25jZV9jb250cm9sID0gVFNGX09OQ0VfSU5JVDsKKwordHNmX3R5cGVfaW5fbWFw
X3QgKnRzZl90eXBlX2luX21hcF9jcmVhdGUoKSB7CisgICAgcmV0dXJuIHRzZl90eXBlX2luX21h
cF9jcmVhdGVfaW4oTlVMTCk7Cit9CisKK3RzZl90eXBlX2luX21hcF90ICp0c2ZfdHlwZV9pbl9t
YXBfY3JlYXRlX2luKHZvaWQgKnJlZ2lvbikgeworICAgIHRzZl90eXBlX2luX21hcF90ICpyZXQ9
dHNmX2NvbmRfYWxsb2MocmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKHRzZl90eXBlX2luX21hcF90KSk7CisgICAgaWYgKHJldD09TlVMTCkg
eworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX2NvbmRfYWxsb2MgdHNmX3R5
cGVfaW5fbWFwX3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHJl
dC0+cmVnaW9uPXJlZ2lvbjsKKyAgICByZXQtPmVsZW1lbnRzPU5VTEw7CisgICAgcmV0LT5udW1f
ZWxlbWVudHM9MDsKKyAgICByZXQtPmNhcGFjaXR5PTA7CisgICAgCisgICAgcmV0dXJuIHJldDsK
K30KKwordHNmX3R5cGVfaW5fbWFwX3QgKnRzZl90eXBlX2luX21hcF9mcm9tX3R5cGVfb3V0X21h
cCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90
eXBlX291dF9tYXBfdCAqdHlwZV9tYXApIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfaW5fbWFwX2Zy
b21fdHlwZV9vdXRfbWFwX2luKHR5cGVfbWFwLE5VTEwpOworfQorCitzdGF0aWMgaW50IHRhYmxl
X3NuYXRjaF9wYWlyKHRzZl90eXBlX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
YXJnKSB7CisgICAgdHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzPWFyZzsKKyAgICBpZiAodHlwZXMt
PnJlZ2lvbiE9TlVMTCkgeworICAgICAgICBpZiAodHlwZXMtPmVsZW1lbnRzPT1OVUxMKSB7Cisg
ICAgICAgICAgICBmcmVlKHZhbHVlKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3kodHlw
ZSk7CisgICAgICAgICAgICByZXR1cm4gVFNGX1NUX0NPTlRJTlVFOworICAgICAgICB9CisgICAg
ICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2sodHlwZXMtPnJlZ2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodHNmX3JlZ2lvbl9jYmFja190KXRzZl90eXBlX2Rlc3Ry
b3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpIHsKKyAgICAgICAg
ICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FkZF9jYmFjayBmb3IgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfZGVzdHJveSIpOworICAgICAgICAg
ICAgdHNmX3R5cGVfZGVzdHJveSh0eXBlKTsKKyAgICAgICAgICAgIHR5cGVzLT5lbGVtZW50cz1O
VUxMOyAgIC8qIGhhY2tpc2ggc2lnbmFsIHRoYXQgc29tZXRoaW5nIGlzIHdyb25nLiAqLworICAg
ICAgICAgICAgcmV0dXJuIFRTRl9TVF9DT05USU5VRTsKKyAgICAgICAgfQorICAgIH0KKyAgICB0
eXBlcy0+ZWxlbWVudHNbKnZhbHVlXT10eXBlOworICAgIGZyZWUodmFsdWUpOworICAgIHJldHVy
biBUU0ZfU1RfQ09OVElOVUU7Cit9CisKK3RzZl90eXBlX2luX21hcF90ICp0c2ZfdHlwZV9pbl9t
YXBfZnJvbV90eXBlX291dF9tYXBfaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7Cisg
ICAgdHNmX3R5cGVfaW5fbWFwX3QgKnJldD10c2ZfY29uZF9hbGxvYyhyZWdpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHNmX3R5cGVfaW5fbWFw
X3QpKTsKKyAgICBpZiAocmV0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxk
IG5vdCB0c2ZfY29uZF9hbGxvYyB0c2ZfdHlwZV9pbl9tYXBfdCIpOworICAgICAgICBpZiAocmVn
aW9uPT1OVUxMKSB7CisgICAgICAgICAgICB0c2ZfdHlwZV9vdXRfbWFwX2Rlc3Ryb3kodHlwZV9t
YXApOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBy
ZXQtPnJlZ2lvbj1yZWdpb247CisgICAgCisgICAgcmV0LT5udW1fZWxlbWVudHM9dHlwZV9tYXAt
Pm51bV9lbnRyaWVzOworICAgIAorICAgIHJldC0+ZWxlbWVudHM9dHNmX2NvbmRfYWxsb2MocmVn
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRzZl90eXBlX3Qq
KSpyZXQtPm51bV9lbGVtZW50cyk7CisgICAgaWYgKHJldC0+ZWxlbWVudHM9PU5VTEwpIHsKKyAg
ICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IHRzZl9jb25kX2FsbG9jIGFycmF5IG9mIHRz
Zl90eXBlX3QqIik7CisgICAgICAgIGlmIChyZWdpb249PU5VTEwpIHsKKyAgICAgICAgICAgIHRz
Zl90eXBlX291dF9tYXBfZGVzdHJveSh0eXBlX21hcCk7CisgICAgICAgICAgICBmcmVlKHJldCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIAorICAgIHRzZl9z
dF9mb3JlYWNoKHR5cGVfbWFwLCh0c2Zfc3RfZnVuY190KXRhYmxlX3NuYXRjaF9wYWlyLHJldCk7
CisgICAgdHNmX3N0X2ZyZWVfdGFibGUodHlwZV9tYXApOworICAgIAorICAgIGlmIChyZXQtPmVs
ZW1lbnRzPT1OVUxMKSB7CisgICAgICAgIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nOyB0aGlzIG9u
bHkgaGFwcGVucyBpbiByZWdpb24gYWxsb2NhdGlvbgorICAgICAgICAgKiBjYXNlLiAqLworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgICAgIAorICAgIHJldHVybiByZXQ7Cit9CisK
K3N0YXRpYyB2b2lkIGluaXRfZW1wdHlfc2luZ2xldG9uKCkgeworICAgIGVtcHR5X3NpbmdsZXRv
bi5yZWdpb249TlVMTDsKKyAgICBlbXB0eV9zaW5nbGV0b24uZWxlbWVudHM9TlVMTDsKKyAgICBl
bXB0eV9zaW5nbGV0b24ubnVtX2VsZW1lbnRzPTA7CisgICAgZW1wdHlfc2luZ2xldG9uLmNhcGFj
aXR5PTA7Cit9CisKK3RzZl90eXBlX2luX21hcF90ICp0c2ZfdHlwZV9pbl9tYXBfZ2V0X2VtcHR5
X3NpbmdsZXRvbigpIHsKKyAgICB0c2Zfb25jZSgmZW1wdHlfc2luZ2xldG9uX29uY2VfY29udHJv
bCwKKyAgICAgICAgICAgICBpbml0X2VtcHR5X3NpbmdsZXRvbik7CisKKyAgICByZXR1cm4gJmVt
cHR5X3NpbmdsZXRvbjsKK30KKwordHNmX3R5cGVfaW5fbWFwX3QgKnRzZl90eXBlX2luX21hcF9j
bG9uZSh0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMpIHsKKyAgICByZXR1cm4gdHNmX3R5cGVfaW5f
bWFwX2Nsb25lX2luKHR5cGVzLE5VTEwpOworfQorCit0c2ZfdHlwZV9pbl9tYXBfdCAqdHNmX3R5
cGVfaW5fbWFwX2Nsb25lX2luKHRzZl90eXBlX2luX21hcF90ICp0eXBlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmVnaW9uKSB7CisgICAgdHNm
X3R5cGVfaW5fbWFwX3QgKnJldDsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGlmICh0eXBl
cz09JmVtcHR5X3NpbmdsZXRvbikgeworICAgICAgICByZXR1cm4gdHlwZXM7CisgICAgfQorICAg
IAorICAgIHJldD10c2ZfY29uZF9hbGxvYyhyZWdpb24sc2l6ZW9mKHRzZl90eXBlX2luX21hcF90
KSk7CisgICAgaWYgKHJldD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgdHNmX2NvbmRfYWxsb2MgdHNmX3R5cGVfaW5fbWFwX3QiKTsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorICAgIAorICAgIHJldC0+cmVnaW9uPXJlZ2lvbjsKKyAgICAKKyAgICByZXQt
Pm51bV9lbGVtZW50cz10eXBlcy0+bnVtX2VsZW1lbnRzOworICAgIHJldC0+ZWxlbWVudHM9dHNm
X2NvbmRfYWxsb2MocmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKHRzZl90eXBlX3QqKSpyZXQtPm51bV9lbGVtZW50cyk7CisgICAgaWYgKHJldC0+ZWxlbWVu
dHM9PU5VTEwpIHsKKyAgICAgICAgaWYgKHJlZ2lvbiE9TlVMTCkgeworICAgICAgICAgICAgZnJl
ZShyZXQpOworICAgICAgICB9CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2Zf
Y29uZF9hbGxvYyBhcnJheSBvZiB0c2ZfdHlwZV90KiIpOworICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICB9CisgICAgCisgICAgZm9yIChpPTA7aTxyZXQtPm51bV9lbGVtZW50czsrK2kpIHsKKyAg
ICAgICAgaWYgKHJlZ2lvbiE9TlVMTCkgeworICAgICAgICAgICAgaWYgKCF0c2ZfcmVnaW9uX2Fk
ZF9jYmFjayhyZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
c2ZfcmVnaW9uX2NiYWNrX3QpdHNmX3R5cGVfZGVzdHJveSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZXMtPmVsZW1lbnRzW2ldKSkgeworICAgICAgICAgICAgICAg
IHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FkZF9jYmFjayBmb3IgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInRzZl90eXBlX2Rlc3Ryb3kiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldC0+ZWxlbWVudHNbaV09dHNmX3R5cGVfZHVwKHR5cGVzLT5lbGVtZW50c1tpXSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCB0c2ZfdHlwZV9pbl9tYXBfZGVzdHJv
eSh0c2ZfdHlwZV9pbl9tYXBfdCAqdHlwZXMpIHsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAg
IHRzZl9hc3NlcnQodHlwZXMtPnJlZ2lvbj09TlVMTCk7CisgICAgCisgICAgaWYgKHR5cGVzPT0m
ZW1wdHlfc2luZ2xldG9uKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgZm9y
IChpPTA7aTx0eXBlcy0+bnVtX2VsZW1lbnRzOysraSkgeworICAgICAgICB0c2ZfdHlwZV9kZXN0
cm95KHR5cGVzLT5lbGVtZW50c1tpXSk7CisgICAgfQorICAgIGlmICh0eXBlcy0+ZWxlbWVudHMh
PU5VTEwpIHsKKyAgICAgICAgZnJlZSh0eXBlcy0+ZWxlbWVudHMpOworICAgIH0KKyAgICBmcmVl
KHR5cGVzKTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV9pbl9tYXBfcHJlcGFyZSh0c2ZfdHlw
ZV9pbl9tYXBfdCAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IG51bSkgeworICAgIGlmICh0eXBlcy0+bnVtX2VsZW1lbnRzK251bSA8PSB0eXBlcy0+
Y2FwYWNpdHkpIHsKKyAgICAgICAgcmV0dXJuIHRzZl90cnVlOworICAgIH0KKworICAgIG51bSA9
IHR5cGVzLT5udW1fZWxlbWVudHMrbnVtIC0gdHlwZXMtPmNhcGFjaXR5OworCisgICAgaWYgKHR5
cGVzLT5yZWdpb249PU5VTEwpIHsKKyAgICAgICAgaWYgKHR5cGVzLT5lbGVtZW50cz09TlVMTCkg
eworICAgICAgICAgICAgdHlwZXMtPmVsZW1lbnRzPW1hbGxvYyhzaXplb2YodHNmX3R5cGVfdCop
Km51bSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0eXBlcy0+ZWxlbWVudHM9PU5V
TEwpIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHRz
Zl90eXBlX3QqIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRzZl90eXBlX3QgKipuZXdfYXJy
YXk9CisgICAgICAgICAgICAgICAgcmVhbGxvYyh0eXBlcy0+ZWxlbWVudHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplb2YodHNmX3R5cGVfdCopKih0eXBlcy0+Y2FwYWNpdHkrbnVtKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChuZXdfYXJyYXk9PU5VTEwpIHsKKyAgICAg
ICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgcmVhbGxvYyBhcnJheSBvZiB0c2Zf
dHlwZV90KiIpOworICAgICAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHR5cGVzLT5lbGVtZW50cz1uZXdfYXJyYXk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0c2ZfdHlwZV90ICoqbmV3X2FycmF5
PQorICAgICAgICAgICAgdHNmX3JlZ2lvbl9hbGxvYyh0eXBlcy0+cmVnaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplb2YodHNmX3R5cGVfdCopKih0eXBlcy0+Y2FwYWNpdHkr
bnVtKSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3X2FycmF5PT1OVUxMKSB7CisgICAgICAg
ICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3JlZ2lvbl9hbGxvYygpIGFycmF5IG9m
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInRzZl90eXBlX3QqIik7CisgICAgICAgICAg
ICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtZW1jcHko
bmV3X2FycmF5LAorICAgICAgICAgICAgICAgdHlwZXMtPmVsZW1lbnRzLAorICAgICAgICAgICAg
ICAgc2l6ZW9mKHRzZl90eXBlX3QqKSoodHlwZXMtPm51bV9lbGVtZW50cykpOworICAgICAgICAK
KyAgICAgICAgdHlwZXMtPmVsZW1lbnRzPW5ld19hcnJheTsKKyAgICB9CisgICAgCisgICAgdHlw
ZXMtPmNhcGFjaXR5Kz1udW07CisgICAgCisgICAgcmV0dXJuIHRzZl90cnVlOworfQorCit0c2Zf
Ym9vbF90IHRzZl90eXBlX2luX21hcF9hcHBlbmQodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3QgKnR5cGUpIHsKKyAg
ICBpZiAodHlwZT09TlVMTCkgeworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIXRzZl90eXBlX2luX21hcF9wcmVwYXJlKHR5cGVzLDEpKSB7CisgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICh0eXBlcy0+cmVnaW9uIT1O
VUxMKSB7CisgICAgICAgIGlmICghdHNmX3JlZ2lvbl9hZGRfY2JhY2sodHlwZXMtPnJlZ2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHNmX3JlZ2lvbl9jYmFja190KXRz
Zl90eXBlX2Rlc3Ryb3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkp
IHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2ZfcmVnaW9uX2FkZF9j
YmFjayBmb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAidHNmX3R5cGVfZGVzdHJveSIp
OworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICB0eXBlcy0+ZWxlbWVudHNbdHlwZXMtPm51bV9lbGVtZW50cysrXT10c2ZfdHlwZV9kdXAo
dHlwZSk7CisKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3VpbnQzMl90IHRzZl90eXBlX2lu
X21hcF9nZXRfbnVtX3R5cGVzKHRzZl90eXBlX2luX21hcF90ICp0eXBlcykgeworICAgIHJldHVy
biB0eXBlcy0+bnVtX2VsZW1lbnRzOworfQorCit0c2ZfdHlwZV90ICp0c2ZfdHlwZV9pbl9tYXBf
Z2V0X3R5cGUodHNmX3R5cGVfaW5fbWFwX3QgKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4KSB7CisgICAgcmV0dXJuIHR5cGVzLT5lbGVt
ZW50c1tpbmRleF07Cit9CisKK3ZvaWQgdHNmX3R5cGVfaW5fbWFwX3RydW5jYXRlKHRzZl90eXBl
X2luX21hcF90ICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IG5ld19zaXplKSB7CisgICAgdHlwZXMtPm51bV9lbGVtZW50cyA9IG5ld19zaXplOworfQorCit0
c2ZfYm9vbF90IHRzZl90eXBlX2luX21hcF9jb21wYXJlKHRzZl90eXBlX2luX21hcF90ICphLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV9pbl9tYXBfdCAqYikg
eworICAgIHVpbnQzMl90IGk7CisgICAgCisgICAgaWYgKGE9PWIpIHsKKyAgICAgICAgcmV0dXJu
IHRzZl90cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoYS0+bnVtX2VsZW1lbnRzIT1iLT5udW1f
ZWxlbWVudHMpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgCisgICAg
Zm9yIChpPTA7aTxhLT5udW1fZWxlbWVudHM7KytpKSB7CisgICAgICAgIGlmICghdHNmX3R5cGVf
Y29tcGFyZShhLT5lbGVtZW50c1tpXSxiLT5lbGVtZW50c1tpXSkpIHsKKyAgICAgICAgICAgIHJl
dHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzZl90
cnVlOworfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNm
X3R5cGVfb3V0X21hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfdHlwZV9vdXRfbWFwLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl90eXBlX291dF9tYXAuYwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg
MjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5o
IgorCit0c2ZfdHlwZV9vdXRfbWFwX3QgKnRzZl90eXBlX291dF9tYXBfY3JlYXRlKCkgeworICAg
IHRzZl90eXBlX291dF9tYXBfdCAqcmV0ID0gdHNmX3N0X2luaXRfcHRydGFibGUoKTsKKyAgICBp
ZiAocmV0PT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCB0c2Zfc3Rf
aW5pdF9wdHJ0YWJsZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHRhYmxlX2Rlc3Ryb3lfcGFpcih0c2ZfdHlw
ZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSB7CisgICAgLyogcHJp
bnRmKCJEZXN0cm95aW5nIHR5cGUgPSAlcFxuIiwgdHlwZSk7ICovCisgICAgdHNmX3R5cGVfZGVz
dHJveSh0eXBlKTsKKyAgICBmcmVlKHZhbHVlKTsKKyAgICByZXR1cm4gVFNGX1NUX0NPTlRJTlVF
OworfQorCit2b2lkIHRzZl90eXBlX291dF9tYXBfZGVzdHJveSh0c2ZfdHlwZV9vdXRfbWFwX3Qg
KnR5cGVfbWFwKSB7CisgICAgdHNmX3N0X2ZvcmVhY2godHlwZV9tYXAsICh0c2Zfc3RfZnVuY190
KXRhYmxlX2Rlc3Ryb3lfcGFpciwgTlVMTCk7CisgICAgdHNmX3N0X2ZyZWVfdGFibGUodHlwZV9t
YXApOworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX291dF9tYXBfZmluZF90eXBlX2NvZGUodHNm
X3R5cGVfb3V0X21hcF90ICp0eXBlX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV90ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICp0eXBlX2NvZGUpIHsKKyAgICB1aW50MzJfdCAq
dGNfcHRyOworICAgIHR5cGUgPSB0c2ZfdHlwZV9tZW1vKHR5cGUpOworICAgIGlmICh0eXBlID09
IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICB9CisgICAgaWYgKCF0c2Zf
c3RfbG9va3VwKHR5cGVfbWFwLCAoY2hhciopdHlwZSwgKHZvaWQqKikmdGNfcHRyKSkgeworICAg
ICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVEVSTkFMLAorICAgICAgICAgICAgICAgICAgICAg
ICJHaXZlbiB0eXBlIHdhcyBub3QgZm91bmQgaW4gdHlwZSBtYXAgZXZlbiB0aG91Z2ggIgorICAg
ICAgICAgICAgICAgICAgICAgICJpdCB3YXMgYXNzZXJ0ZWQgdGhhdCB0aGUgdHlwZSB3b3VsZCBi
ZSBmb3VuZCIpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICBpZiAodHlw
ZV9jb2RlIT1OVUxMKSB7CisgICAgICAgICp0eXBlX2NvZGU9KnRjX3B0cjsKKyAgICB9CisgICAg
cmV0dXJuIHRzZl90cnVlOworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX291dF9tYXBfZ2V0X3R5
cGVfY29kZSh0c2ZfdHlwZV9vdXRfbWFwX3QgKnR5cGVfbWFwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5cGVfdCAqdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICp0eXBlX2NvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfYm9vbF90ICpjcmVhdGVkKSB7
CisgICAgdWludDMyX3QgKnRjX3B0cjsKKyAgICAKKyAgICB0eXBlID0gdHNmX3R5cGVfbWVtbyh0
eXBlKTsKKyAgICBpZiAodHlwZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgfQorICAgIAorICAgIGlmICh0c2Zfc3RfbG9va3VwX3B0cnRhYmxlKHR5cGVfbWFwLCB0
eXBlLCAodm9pZCoqKSZ0Y19wdHIpKSB7CisgICAgICAgIGlmICh0eXBlX2NvZGUgIT0gTlVMTCkg
eworICAgICAgICAgICAgKnR5cGVfY29kZSA9ICp0Y19wdHI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGNyZWF0ZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgKmNyZWF0ZWQgPSB0c2ZfZmFsc2U7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0Y19wdHIgPSBtYWxsb2Moc2l6ZW9m
KHVpbnQzMl90KSk7CisgICAgICAgIGlmICh0Y19wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAg
dHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyB0eXBlIGNvZGUiKTsKKyAgICAgICAgICAg
IHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgKnRjX3B0ciA9IHR5cGVfbWFw
LT5udW1fZW50cmllczsKKyAgICAgICAgLyogcHJpbnRmKCJBZGRpbmcgdHlwZSA9ICVwXG4iLCB0
eXBlKTsgKi8KKyAgICAgICAgaWYgKHRzZl9zdF9hZGRfZGlyZWN0KHR5cGVfbWFwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXRzZl90eXBlX2R1cCh0eXBlKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRjX3B0cikgPCAwKSB7CisgICAgICAgICAgICB0c2Zf
c2V0X2Vycm5vKCJDb3VsZCBub3QgdHNmX3N0X2FkZF9kaXJlY3QoKSIpOworICAgICAgICAgICAg
ZnJlZSh0Y19wdHIpOworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodHlwZV9jb2RlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICp0eXBlX2NvZGUg
PSAqdGNfcHRyOworICAgICAgICB9CisgICAgICAgIGlmIChjcmVhdGVkICE9IE5VTEwpIHsKKyAg
ICAgICAgICAgICpjcmVhdGVkID0gdHNmX3RydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIHRzZl90cnVlOworfQorCisKKworCisKKworCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGVfdGFibGUuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5cGVfdGFibGUuYwkobm9u
ZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3R5
cGVfdGFibGUuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAxNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQ
IFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInRzZl9mb3JtYXQuaCIKKworI2luY2x1
ZGUgPHN0cmluZy5oPgorCit0c2ZfdHlwZV90YWJsZV90ICp0c2ZfdHlwZV90YWJsZV9jcmVhdGUo
KSB7CisgICAgdHNmX3R5cGVfdGFibGVfdCAqcmV0ID0gbWFsbG9jKHNpemVvZih0c2ZfdHlwZV90
YWJsZV90KSk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8o
IkNvdWxkIG5vdCBtYWxsb2MgdHNmX3R5cGVfdGFibGVfdCIpOworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgCisgICAgcmV0LT5lbGVtZW50cyA9IE5VTEw7CisgICAgcmV0LT5udW1f
ZWxlbWVudHMgPSAwOworICAgIHJldC0+ZWxlX3RhYmxlID0gdHNmX3N0X2luaXRfc3RydGFibGUo
KTsKKyAgICBpZiAocmV0LT5lbGVfdGFibGUgPT0gTlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vy
cm5vKCJDb3VsZCBub3QgdHNmX3N0X2luaXRfc3RydGFibGUoKSIpOworICAgICAgICBmcmVlKHJl
dCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmV0Owor
fQorCit0c2ZfYm9vbF90IHRzZl90eXBlX3RhYmxlX2NvcHkodHNmX3R5cGVfdGFibGVfdCAqZGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV90ICpzcmMp
IHsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCB0c2ZfdHlwZV90
YWJsZV9nZXRfbnVtX2VsZW1lbnRzKHNyYyk7ICsraSkgeworICAgICAgICB0c2ZfbmFtZWRfdHlw
ZV90ICpuID0gdHNmX3R5cGVfdGFibGVfZmluZF9ieV9pbmRleChzcmMsIGkpLCAqbjI7CisgICAg
ICAgIHRzZl90eXBlX3QgKm5ld190eXBlID0gdHNmX3R5cGVfZHVwKG4tPnR5cGUpOworICAgICAg
ICBpZiAobmV3X3R5cGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIXRzZl90eXBlX3RhYmxlX2FwcGVuZChkZXN0LCBuLT5u
YW1lLCBuZXdfdHlwZSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIC8qIGNvcHkgdGhlIG9wdGlvbmFsIGF0dHJpYnV0ZSwgb2Zm
c2V0IGluZm8gbWFudWFsbHkgKi8KKyAgICAgICAgbjIgPSB0c2ZfdHlwZV90YWJsZV9maW5kX2J5
X2luZGV4KGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2ZfdHlwZV90YWJsZV9nZXRfbnVtX2VsZW1lbnRzKGRlc3QpIC0gMSk7CisJbjItPm9wdGlvbmFs
ID0gbi0+b3B0aW9uYWw7CisgICAgICAgIGlmIChuLT5oYXNfb2Zmc2V0KSB7CisgICAgICAgICAg
ICBuMi0+aGFzX29mZnNldCA9IHRzZl90cnVlOworICAgICAgICAgICAgbjItPm9mZnNldCA9IG4t
Pm9mZnNldDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogY29weSB0aGUgY29tbWVu
dCBtYW51YWxseSAqLworICAgICAgICBpZiAobi0+Y29tbWVudCAhPSBOVUxMKSB7CisgICAgICAg
ICAgICBuMi0+Y29tbWVudCA9IHN0cmR1cChuLT5jb21tZW50KTsKKyAgICAgICAgICAgIGlmIChu
Mi0+Y29tbWVudCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291
bGQgbm90IGFsbG9jYXRlIGNvbW1lbnQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2Zh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0
c2ZfdHJ1ZTsKK30KKwordm9pZCB0c2ZfdHlwZV90YWJsZV9kZXN0cm95KHRzZl90eXBlX3RhYmxl
X3QgKnR0KSB7CisgICAgdWludDMyX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHQtPm51bV9l
bGVtZW50czsgKytpKSB7CisgICAgICAgIHRzZl9uYW1lZF90eXBlX2Rlc3Ryb3kodHQtPmVsZW1l
bnRzW2ldKTsKKyAgICB9CisgICAgaWYgKHR0LT5lbGVtZW50cyAhPSBOVUxMKSB7CisgICAgICAg
IGZyZWUodHQtPmVsZW1lbnRzKTsKKyAgICB9CisgICAgdHNmX3N0X2ZyZWVfdGFibGUodHQtPmVs
ZV90YWJsZSk7CisgICAgZnJlZSh0dCk7Cit9CisKK3RzZl90eXBlX3RhYmxlX3QgKnRzZl90eXBl
X3RhYmxlX3JlYWQoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHNmX3JlYWRlcl90IHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0c2ZfbGltaXRzX3QgKmxpbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3Qgc2l6ZV9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgZGVwdGgpIHsKKyAgICB0c2ZfdHlwZV90YWJsZV90ICpy
ZXQgPSB0c2ZfdHlwZV90YWJsZV9jcmVhdGUoKTsKKyAgICB1aW50MzJfdCBpLCBudW07CisgICAg
CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIXJlYWRlcihhcmcsICZudW0sIHNpemVvZihudW0pKSkgeworICAgICAgICB0
c2ZfdHlwZV90YWJsZV9kZXN0cm95KHJldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KyAgICAKKyAgICBudW0gPSBudG9obChudW0pOworICAgIAorICAgIGlmIChudW0gPiBzaXplX2xp
bWl0KSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAg
ICAgICAgICAgICAgICAgIiVzIHNpemUgZXhjZWVkcyBsaW1pdCB3aGlsZSBwYXJzaW5nIiwgbmFt
ZSk7CisgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgeworICAg
ICAgICB1aW50OF90IHVpOF90bXA7CisgICAgICAgIGNoYXIgKnN0cjsKKyAgICAgICAgCisgICAg
ICAgIC8qIHBhcnNlIHRoZSBzdHJpbmcgKi8KKyAgICAgICAgc3RyID0gdHNmX3JlYWRfc3RyaW5n
KHJlYWRlciwgYXJnLCBUU0ZfU1RSX1NJWkUpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsK
KyAgICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAgIHJl
dHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiBub3cgZG8gb3RoZXIg
dGhpbmdzICovCisgICAgICAgIGlmICghdHNmX3R5cGVfdGFibGVfYXBwZW5kKHJldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfdHlwZV9yZWFkX3JlYyhyZWFkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCkpKSB7Cisg
ICAgICAgICAgICB0c2ZfdHlwZV90YWJsZV9kZXN0cm95KHJldCk7CisgICAgICAgICAgICBmcmVl
KHN0cik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgZnJlZShzdHIpOworICAgICAgICAKKyAgICAgICAgaWYgKCFyZWFkZXIoYXJnLCAmdWk4
X3RtcCwgMSkpIHsKKyAgICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisJCisJaWYgKHVpOF90bXAgJiB+Mykg
eworCSAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX1BBUlNFX0VSUk9SLAorCQkJICAiRmxhZ3MgZmll
bGQgY29udGFpbnMgYml0cyBJIGRvbid0IHJlY29nbml6ZTogIiBmdWk4LAorCQkJICB1aThfdG1w
KTsKKwkgICAgdHNmX3R5cGVfdGFibGVfZGVzdHJveShyZXQpOworCSAgICByZXR1cm4gTlVMTDsK
Kwl9CisJCisJcmV0LT5lbGVtZW50c1tyZXQtPm51bV9lbGVtZW50cyAtIDFdLT5vcHRpb25hbCA9
CisJICAgICh1aThfdG1wICYgMiA/IHRzZl90cnVlIDogdHNmX2ZhbHNlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICh1aThfdG1wICYgMSkgeworICAgICAgICAgICAgLyogcGFyc2UgYSBjb21tZW50
IHN0cmluZy4gIGl0IGNhbiBiZSBhcmJpdHJhcmlseSBsb25nLCBzbworICAgICAgICAgICAgICAg
dGhpcyBwYXJzaW5nIGNvZGUgaXMgc29tZXdoYXQgb2YgYSBwYWluIGluIHRoZSBhc3MgdG8KKyAg
ICAgICAgICAgICAgIHdyaXRlLiAqLworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRz
Zl9saW1pdHNfYWxsb3dfY29tbWVudHMobGltaXRzKSkgeworICAgICAgICAgICAgICAgIHRzZl9z
ZXRfZXJyb3IoVFNGX0VfUEFSU0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRW5jb3VudGVyZWQgYSBjb21tZW50ZWQgdHlwZSB3aGlsZSBwYXJzaW5nLCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYnV0IGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCIpOwor
ICAgICAgICAgICAgICAgIHRzZl90eXBlX3RhYmxlX2Rlc3Ryb3kocmV0KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgc3RyID0gdHNmX3JlYWRfc3RyaW5nKHJlYWRlciwgYXJnLCBUU0ZfTUFYX0NPTU1FTlRfU0la
RSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB0c2Zf
dHlwZV90YWJsZV9kZXN0cm95KHJldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldC0+ZWxlbWVudHNbcmV0
LT5udW1fZWxlbWVudHMgLSAxXS0+Y29tbWVudCA9IHN0cjsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gcmV0OworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX3RhYmxlX3dyaXRl
KHRzZl90eXBlX3RhYmxlX3QgKnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICphcmcpIHsKKyAgICB1aW50MzJfdCB1aTMyX3RtcCA9IGh0b25sKHR0LT5udW1fZWxlbWVudHMp
OworICAgIHVpbnQ4X3QgdWk4X3RtcDsKKyAgICB1aW50MzJfdCBpOworICAgIGlmICghd3JpdGVy
KGFyZywgJnVpMzJfdG1wLCBzaXplb2YodWkzMl90bXApKSkgeworICAgICAgICByZXR1cm4gdHNm
X2ZhbHNlOworICAgIH0KKyAgICAKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHQtPm51bV9lbGVtZW50
czsgKytpKSB7CisgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKm4gPSB0dC0+ZWxlbWVudHNbaV07
CisgICAgICAgIAorICAgICAgICBpZiAoIXRzZl93cml0ZV9zdHJpbmcod3JpdGVyLCBhcmcsIHRz
Zl9uYW1lZF90eXBlX2dldF9uYW1lKG4pKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCF0c2ZfdHlwZV93cml0ZSh0c2Zf
bmFtZWRfdHlwZV9nZXRfdHlwZShuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZXIsIGFyZykpIHsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgICAgIH0KKwkK
Kwl1aThfdG1wID0gMDsKKwlpZiAobi0+Y29tbWVudCAhPSBOVUxMKSB7CisJICAgIHVpOF90bXAg
fD0gMTsKKwl9CisJaWYgKG4tPm9wdGlvbmFsKSB7CisJICAgIHVpOF90bXAgfD0gMjsKKwl9CisJ
aWYgKCF3cml0ZXIoYXJnLCAmdWk4X3RtcCwgMSkpIHsKKwkgICAgcmV0dXJuIHRzZl9mYWxzZTsK
Kwl9CisJCisgICAgICAgIGlmIChuLT5jb21tZW50ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlm
ICghdHNmX3dyaXRlX3N0cmluZyh3cml0ZXIsIGFyZywgbi0+Y29tbWVudCkpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKworaW50IHRzZl90eXBlX3RhYmxlX2dl
dF9oYXNoKHRzZl90eXBlX3RhYmxlX3QgKnR0KSB7CisgICAgaW50IHJldCA9IDA7CisgICAgdWlu
dDMyX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdHQtPm51bV9lbGVtZW50czsgKytpKSB7Cisg
ICAgICAgIHJldCArPSB0c2ZfbmFtZWRfdHlwZV9nZXRfaGFzaCh0dC0+ZWxlbWVudHNbaV0pOwor
ICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCit0c2ZfYm9vbF90IHRzZl90eXBlX3RhYmxlX2Nv
bnRhaW5zX2R5bmFtaWModHNmX3R5cGVfdGFibGVfdCAqdHQpIHsKKyAgICB1aW50MzJfdCBpOwor
ICAgIGZvciAoaSA9IDA7IGkgPCB0dC0+bnVtX2VsZW1lbnRzOyArK2kpIHsKKyAgICAgICAgaWYg
KHRzZl90eXBlX2lzX2R5bmFtaWModHQtPmVsZW1lbnRzW2ldLT50eXBlKSkgeworICAgICAgICAg
ICAgcmV0dXJuIHRzZl90cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0c2ZfZmFs
c2U7Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfdGFibGVfY29tcGFyZSh0c2ZfdHlwZV90YWJs
ZV90ICphLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzZl90eXBlX3RhYmxl
X3QgKmIpIHsKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIGlmIChhLT5udW1fZWxlbWVudHMg
IT0gYi0+bnVtX2VsZW1lbnRzKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCBhLT5udW1fZWxlbWVudHM7ICsraSkgeworICAgICAg
ICBpZiAoc3RyY21wKGEtPmVsZW1lbnRzW2ldLT5uYW1lLAorICAgICAgICAgICAgICAgICAgIGIt
PmVsZW1lbnRzW2ldLT5uYW1lKSkgeworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAg
ICAgICAgfQorCQorCWlmIChhLT5lbGVtZW50c1tpXS0+b3B0aW9uYWwKKwkgICAgIT0gYi0+ZWxl
bWVudHNbaV0tPm9wdGlvbmFsKSB7CisJICAgIHJldHVybiB0c2ZfZmFsc2U7CisJfQorICAgICAg
ICAKKyAgICAgICAgaWYgKCF0c2ZfdHlwZV9jb21wYXJlKGEtPmVsZW1lbnRzW2ldLT50eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi0+ZWxlbWVudHNbaV0tPnR5cGUpKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfdHlwZV90YWJsZV9hcHBlbmQo
dHNmX3R5cGVfdGFibGVfdCAqdHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3R5
cGVfdCAqZWxlX3R5cGUpIHsKKyAgICB0c2ZfbmFtZWRfdHlwZV90ICpuOworICAgIAorICAgIGlm
IChlbGVfdHlwZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGlmICh0c2Zfc3RfbG9va3VwKHR0LT5lbGVfdGFibGUsIChjaGFyKiluYW1lLCBO
VUxMKSkgeworICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05BTUVfQ09MTElTSU9OLAorICAg
ICAgICAgICAgICAgICAgICAgICJOYW1lICclcycgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIg
ZWxlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIHRzZl90eXBl
X2Rlc3Ryb3koZWxlX3R5cGUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAg
ICAKKyAgICBpZiAodHQtPmVsZW1lbnRzID09IE5VTEwpIHsKKyAgICAgICAgdHQtPmVsZW1lbnRz
ID0gbWFsbG9jKHNpemVvZih0c2ZfbmFtZWRfdHlwZV90KikpOworICAgICAgICBpZiAodHQtPmVs
ZW1lbnRzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHRzZl9zZXRfZXJybm8oIkNvdWxkIG5vdCBt
YWxsb2MgdHNmX25hbWVkX3R5cGVfdCoiKTsKKyAgICAgICAgICAgIHRzZl90eXBlX2Rlc3Ryb3ko
ZWxlX3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIHRzZl9uYW1lZF90eXBlX3QgKipuZXdfYXJyYXkgPSByZWFsbG9j
KHR0LT5lbGVtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKHRzZl9uYW1lZF90eXBlX3QqKSAqCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh0dC0+bnVtX2VsZW1lbnRzICsgMSkpOworICAgICAg
ICBpZiAobmV3X2FycmF5PT1OVUxMKSB7CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3Vs
ZCBub3QgcmVhbGx5IGFycmF5IG9mIHRzZl9uYW1lZF90eXBlX3QqIik7CisgICAgICAgICAgICB0
c2ZfdHlwZV9kZXN0cm95KGVsZV90eXBlKTsKKyAgICAgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgdHQtPmVsZW1lbnRzID0gbmV3X2FycmF5OworICAgIH0KKyAg
ICAKKyAgICBuID0gdHNmX25hbWVkX3R5cGVfY3JlYXRlKG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0
LT5udW1fZWxlbWVudHMpOworICAgIGlmIChuID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHRz
Zl9mYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHRzZl9zdF9pbnNlcnQodHQtPmVsZV90YWJs
ZSwgbi0+bmFtZSwgbikgPCAwKSB7CisgICAgICAgIHRzZl9zZXRfZXJybm8oIkZhaWxlZCB0byB0
c2Zfc3RfaW5zZXJ0KCkiKTsKKyAgICAgICAgdHNmX3R5cGVfZGVzdHJveShlbGVfdHlwZSk7Cisg
ICAgICAgIGZyZWUobik7CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAor
ICAgIHR0LT5lbGVtZW50c1t0dC0+bnVtX2VsZW1lbnRzKytdID0gbjsKKyAgICAKKyAgICByZXR1
cm4gdHNmX3RydWU7Cit9CisKK3RzZl9ib29sX3QgdHNmX3R5cGVfdGFibGVfcmVtb3ZlKHRzZl90
eXBlX3RhYmxlX3QgKnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZSkgeworICAgIGNoYXIgKnRvX2RlbGV0ZTsKKyAgICB2b2lkICpvbGRfdmFsdWU7
CisgICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICAKKyAgICB0b19kZWxldGUgPSAoY2hhciop
bmFtZTsKKyAgICBvbGRfdmFsdWUgPSBOVUxMOworICAgIHRzZl9zdF9kZWxldGUodHQtPmVsZV90
YWJsZSwgJnRvX2RlbGV0ZSwgJm9sZF92YWx1ZSk7CisgICAgaWYgKG9sZF92YWx1ZSA9PSBOVUxM
KSB7CisgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfRUxFX05PVF9GT1VORCwgIkNvdWxkIG5v
dCBmaW5kIFwnJXNcJyIsIG5hbWUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0K
KyAgICAKKyAgICBuID0gKHRzZl9uYW1lZF90eXBlX3QqKW9sZF92YWx1ZTsKKyAgICB0dC0+ZWxl
bWVudHNbbi0+aW5kZXhdID0gdHQtPmVsZW1lbnRzWy0tdHQtPm51bV9lbGVtZW50c107CisgICAg
dHNmX25hbWVkX3R5cGVfZGVzdHJveShuKTsKKyAgICByZXR1cm4gdHNmX3RydWU7Cit9CisKK3Rz
Zl9uYW1lZF90eXBlX3QgKnRzZl90eXBlX3RhYmxlX2ZpbmRfYnlfbmFtZSh0c2ZfdHlwZV90YWJs
ZV90ICp0dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpuYW1lKSB7CisgICAgdHNmX25hbWVkX3R5cGVfdCAqbjsKKyAgICBpZiAoIXRz
Zl9zdF9sb29rdXAodHQtPmVsZV90YWJsZSwgKGNoYXIqKW5hbWUsICh2b2lkKiopJm4pKSB7Cisg
ICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfRUxFX05PVF9GT1VORCwgIkNvdWxkIG5vdCBmaW5k
IFwnJXNcJyIsIG5hbWUpOworICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gbjsKK30KKwordHNmX25hbWVkX3R5cGVfdCAqdHNmX3R5cGVfdGFibGVfZmlu
ZF9ieV9pbmRleCh0c2ZfdHlwZV90YWJsZV90ICp0dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgpIHsKKyAgICByZXR1cm4gdHQt
PmVsZW1lbnRzW2luZGV4XTsKK30KKwordWludDMyX3QgdHNmX3R5cGVfdGFibGVfZ2V0X251bV9l
bGVtZW50cyh0c2ZfdHlwZV90YWJsZV90ICp0dCkgeworICAgIHJldHVybiB0dC0+bnVtX2VsZW1l
bnRzOworfQorCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2ZfdHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2Fz
bS90c2YvdHNmX3R5cGVzLmgJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3dhc20vdHNmL3RzZl90eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1IEZpbGlwIFBpemxvLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBGSUxJ
UCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEZQX1RTRl9UWVBFU19ICisjZGVmaW5lIEZQX1RTRl9UWVBFU19ICisK
KyNpbmNsdWRlICJ0c2ZfY29uZmlnLmgiCisKKy8qIG5lZWQgdG8gdXNlIHRoaXMgaGFjayBiZWNh
dXNlIE5ldEJTRCBzdWNrcy4gKi8KKyNpbmNsdWRlICJ0c2ZfaW50dHlwZXMuaCIKKworLyogb3Vy
IG93biBkZWZpbml0aW9uIG9mIFVJTlQzMl9NQVgsIHdoaWNoIHdlIG5lZWQgdG8gdXNlIGluIGFs
bCBleHRlcm5hbAorICogaGVhZGVyIGZpbGVzIGJlY2F1c2UgQysrIGlzIGR1bWIuICovCisjZGVm
aW5lIFRTRl9VSU5UMzJfTUFYICgoKCh1aW50MzJfdCkxKTw8MzEpK1wKKyAgICAgICAgICAgICAg
ICAgICAgICAgICgoKCh1aW50MzJfdCkxKTw8MzEpLTEpKQorCisvKiBzb21ldGhpbmcgdGhhdCBp
bnR0eXBlcyBkb2Vzbid0IHNlZW0gdG8gZGVmaW5lICovCisjaWYgVFNGX1NJWkVPRl9WT0lEX1Ag
PT0gMgorI2RlZmluZSBUU0ZfVUlOVFBUUl9DKGFyZykgVUlOVDE2X0MoYXJnKQorI2Vsc2UKKyNp
ZiBUU0ZfU0laRU9GX1ZPSURfUCA9PSA0CisjZGVmaW5lIFRTRl9VSU5UUFRSX0MoYXJnKSBVSU5U
MzJfQyhhcmcpCisjZWxzZQorI2lmIFRTRl9TSVpFT0ZfVk9JRF9QID09IDgKKyNkZWZpbmUgVFNG
X1VJTlRQVFJfQyhhcmcpIFVJTlQ2NF9DKGFyZykKKyNlbHNlCisjZXJyb3IgIkRvbid0IGtub3cg
aG93IHRvIGV4cHJlc3Mgdm9pZCAqIGxpdGVyYWxzIgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgor
CisvKiBldmVyeSBzeXN0ZW0gaGFja2VyIG5lZWRzIHN5cy90eXBlcyEgKi8KKyNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKworLyogb3VyIG93biBvZmZzZXQgdHlwZS4gIG1lYW50IHRvIGJlIGVudGly
ZWx5IGNvbXBhdGlibGUgd2l0aCB0aGUKKyAqIHN5c3RlbSdzIG9mZnNldCB0eXBlLiAqLworI2lm
IFRTRl9TSVpFT0ZfT0ZGX1QgPT0gMiAgIC8qIHdobyBrbm93cz8gKi8KK3R5cGVkZWYgaW50MTZf
dCB0c2Zfb2ZmX3Q7CisjZWxzZQorI2lmIFRTRl9TSVpFT0ZfT0ZGX1QgPT0gNAordHlwZWRlZiBp
bnQzMl90IHRzZl9vZmZfdDsKKyNlbHNlCisjaWYgVFNGX1NJWkVPRl9PRkZfVCA9PSA4Cit0eXBl
ZGVmIGludDY0X3QgdHNmX29mZl90OworI2Vsc2UKKyNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8g
cmVwcmVzZW50IGZpbGUgb2Zmc2V0cyIKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworLyogd2h5
IG5vdCB1c2Ugc3RkX2Jvb2wuaD8gIGJlY3Vhc2UgaXQgd2lsbCBmdWNrIHVzIGlmIHRoaXMgaGVh
ZGVyIGlzCisgKiB1c2VkIGZyb20gQysrISAgdGhlcmUgc2VlbXMgdG8gYmUgbm8gZ29vZCB3YXkg
b2YgbWFraW5nIHN1cmUgdGhhdAorICogdGhlIEM5OSBfQm9vbCB0eXBlIGFuZCB0aGUgQysrIGJv
b2wgdHlwZSBhcmUgdGhlIHNhbWUgc2l6ZSwgYW5kLAorICogd2hhdCBpcyBtb3JlIHVubmVydmlu
ZyBpcyB0aGF0IHRoZXJlIGlzIG5vIGdvb2Qgd2F5LCBpZiBvbmUgaXMKKyAqIHdyaXRpbmcgQU5T
SSBDIHRvIGNvbmp1cmUgdXAgYSB0eXBlIHRoYXQgaXMgbWFnaWNhbGx5IHRoZSBzYW1lIHNpemUK
KyAqIGFzIHRoZSBDKysgYm9vbCB0eXBlLiAgU28sIHRoZSBvbmx5IHNvbHV0aW9uIGlzIHRvIG5v
dCB1c2UgX0Jvb2wKKyAqIG9yIGJvb2wsIGFuZCBqdXN0IHJvbGwgb3VyIG93biB0aGluZy4gIHRo
YXQgd2F5LCB5b3Uga25vdyB3aGF0IHNpemUKKyAqIGl0IGlzIGZyb20gZWl0aGVyIEMgb3IgQysr
LiAqLwordHlwZWRlZiB1aW50OF90IHRzZl9ib29sX3Q7CisKKy8qIHVzZSB0aGlzIGZvciB2YV9h
cmcgKi8KK3R5cGVkZWYgdW5zaWduZWQgdHNmX2FyZ19ib29sX3Q7CisKKy8qIHlvdSBkb24ndCBh
Y3R1YWxseSBoYXZlIHRvIHVzZSB0aGVzZSBtYWNyb3MuICB5b3UgY2FuIHVzZSAxCisgKiBhbmQg
MCBkaXJlY3RseS4gIG9yIGlmIHlvdSdyZSBpbiBDKyssIHlvdSBzaG91bGQganVzdCBiZSBhYmxl
CisgKiB0byB1c2UgQysrJ3MgdHJ1ZSBhbmQgZmFsc2Uga2V5d29yZHMuICovCisjZGVmaW5lIHRz
Zl90cnVlIDEKKyNkZWZpbmUgdHNmX2ZhbHNlIDAKKworLyogYSB0cmlzdGF0ZSB0eXBlLCB3aGlj
aCBtaWdodCBjb21lIGluIGhhbmR5ICovCit0eXBlZGVmIGVudW0geworICAgIHRzZl9ubywKKyAg
ICB0c2ZfbWF5YmUsCisgICAgdHNmX3llcworfSB0c2ZfdHJpc3RhdGVfdDsKKworLyogVFNGIGhh
cyBhIG5vdGlvbiBvZiBpbnRlZ2VycyB0aGF0IHdvcmsganVzdCBsaWtlIDMyLWJpdCBvciA2NC1i
aXQKKyAqIGludGVnZXJzLCBidXQgYXJlIGVuY29kZWQgd2l0aCBzb21lIHZlcnkgYmFzaWMgY29t
cGFjdGlvbi4gSXQncworICogYWNjZXB0YWJsZSB0byB1c2UgaW50MzJfdCBvciBpbnQ2NF90IGRp
cmVjdGx5IGZvciB0aGVzZSwgdGhvdWdoCisgKiBpdCdzIHNsaWdodGx5IGJldHRlciB0byB1c2Ug
dGhlIHR5cGVkZWZzLiAqLwordHlwZWRlZiBpbnQzMl90IHRzZl9pbnRlZ2VyX3Q7Cit0eXBlZGVm
IHVpbnQzMl90IHRzZl91bnNpZ25lZF90OyAvKiBUaGlzIHR5cGUgaXMgbm90IGV4cG9zZWQgdG8g
dGhlIHVzZXIgYnV0IGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VkIGludGVybmFsbHkgZm9yIHZhcmlvdXMgdGhpbmdzLCBsaWtlIGNob2ljZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBmb3JtYXR0aW5nLiAqLwordHlwZWRlZiBp
bnQ2NF90IHRzZl9sb25nX3Q7CisKKy8qIENvbnN0YW50cyBmb3IgdGhlIFRTRl9US19JTlRFR0VS
IGFuZCBUU0ZfVEtfTE9ORyBjb21wYWN0aW9uIHByb3RvY29scy4gKi8KKyNkZWZpbmUgVFNGX0lO
VEVHRVJfU01BTExfTElNICAgNjQKKyNkZWZpbmUgVFNGX0lOVEVHRVJfTUVESVVNX0xJTSAgMTYx
OTIKKyNkZWZpbmUgVFNGX0lOVEVHRVJfTEFSR0VfTElNICAgODQwNDgwMAorI2RlZmluZSBUU0Zf
SU5URUdFUl9NRURJVU1fQklUICAxMjgKKyNkZWZpbmUgVFNGX0lOVEVHRVJfTUVESVVNX0RJRkYg
MQorI2RlZmluZSBUU0ZfSU5URUdFUl9MQVJHRV9UQUcgICAoKGludDhfdCkoNjIgfCBUU0ZfSU5U
RUdFUl9NRURJVU1fQklUKSkKKyNkZWZpbmUgVFNGX0lOVEVHRVJfSFVHRV9UQUcgICAgKChpbnQ4
X3QpKDYzIHwgVFNGX0lOVEVHRVJfTUVESVVNX0JJVCkpCisjZGVmaW5lIFRTRl9JTlRFR0VSX01B
WF9TSVpFICAgIDUKKyNkZWZpbmUgVFNGX0tPTkdfTUFYX1NJWkUgICAgICAgOQorCisvKiBzb21l
IGNvbnN0YW50cyBmb3IgVFNGIHVuc2lnbmVkIGludGVnZXJzLiAqLworI2RlZmluZSBUU0ZfVU5T
SUdORURfU01BTExfTElNICAgMTI4CisjZGVmaW5lIFRTRl9VTlNJR05FRF9NRURJVU1fTElNICAz
MjM4NAorI2RlZmluZSBUU0ZfVU5TSUdORURfTEFSR0VfTElNICAgMTY4MDk2MDAKKyNkZWZpbmUg
VFNGX1VOU0lHTkVEX01FRElVTV9CSVQgIDEyOAorI2RlZmluZSBUU0ZfVU5TSUdORURfTEFSR0Vf
VEFHICAgMjU0CisjZGVmaW5lIFRTRl9VTlNJR05FRF9IVUdFX1RBRyAgICAyNTUKKyNkZWZpbmUg
VFNGX1VOU0lHTkVEX01BWF9TSVpFICAgIDUKKworLyogd2hhdCBmb2xsb3dzIGFyZSBzb21lIHR5
cGVzIHRoYXQgbXVzdCBiZSBwcmUtZGVjbGFyZWQuICovCisKK3N0cnVjdCBncGNfcHJvdG87Cit0
eXBlZGVmIHN0cnVjdCBncGNfcHJvdG8gZ3BjX3Byb3RvX3Q7CisKK3N0cnVjdCBncGNfcHJvZ3Jh
bTsKK3R5cGVkZWYgc3RydWN0IGdwY19wcm9ncmFtIGdwY19wcm9ncmFtX3Q7CisKK2VudW0gdHNm
X3ppcF9tb2RlIHsKKyAgICBUU0ZfWklQX05PTkUsCisgICAgVFNGX1pJUF9aTElCLAorICAgIFRT
Rl9aSVBfQlpJUDIsCisgICAgVFNGX1pJUF9VTktOT1dOCit9OworCit0eXBlZGVmIGVudW0gdHNm
X3ppcF9tb2RlIHRzZl96aXBfbW9kZV90OworCisjZW5kaWYKKwpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl91dGlsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl91dGlsLmgJKG5vbmV4aXN0ZW50KQor
KysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl91dGlsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGUF9UU0ZfVVRJTF9ICisjZGVm
aW5lIEZQX1RTRl9VVElMX0gKKworI2luY2x1ZGUgInRzZi5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJy
bm8uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2RlZmluZSBDSEVDS1RTRihleHApIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCEo
ZXhwKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwiVFNGIEVycm9yIGF0ICVzOiVkOiAlc1xuIiwgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXyxfX0xJTkVfXyx0c2ZfZ2V0X2Vycm9y
KCkpOyAgICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNk
ZWZpbmUgQ0hFQ0tTWVMoZXhwKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKChleHApPDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJTeXN0ZW0gRXJyb3IgYXQgJXM6
JWQ6ICVzXG4iLCAgIFwKKyAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sX19MSU5FX18sc3Ry
ZXJyb3IoZXJybm8pKTsgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVm
aW5lIENIRUNLU1lTWihleHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIGlmICghKGV4cCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiU3lzdGVtIEVycm9yIGF0ICVzOiVk
OiAlc1xuIiwgICBcCisgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLF9fTElORV9fLHN0cmVy
cm9yKGVycm5vKSk7ICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZW5kaWYK
KwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl92ZXJzaW9u
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl92ZXJzaW9uLmMJKG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0y
L3dhc20vdHNmL3RzZl92ZXJzaW9uLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQ
IFBJWkxPIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgInRzZl9pbnRlcm5hbC5oIgorCitjb25zdCBjaGFyICp0c2ZfdmVyc2lvbigpIHsKKyAg
ICByZXR1cm4gVkVSU0lPTjsKK30KKworaW50IHRzZl92ZXJzaW9uX21ham9yKCkgeworICAgIHJl
dHVybiBWRVJTSU9OX01BSk9SOworfQorCitpbnQgdHNmX3ZlcnNpb25fbWlub3IoKSB7CisgICAg
cmV0dXJuIFZFUlNJT05fTUlOT1I7Cit9CisKK2ludCB0c2ZfdmVyc2lvbl9wYXRjaCgpIHsKKyAg
ICByZXR1cm4gVkVSU0lPTl9QQVRDSDsKK30KKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9hYnN0cmFjdC5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2Fic3RyYWN0LmMJKG5vbmV4
aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBf
YWJzdHJhY3QuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9p
bnRlcm5hbC5oIgorI2luY2x1ZGUgInRzZl96aXBfYWJzdHJhY3QuaCIKKyNpbmNsdWRlICJ0c2Zf
Zm9ybWF0LmgiCisKKyNpZmRlZiBIQVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYK
KworI2lmZGVmIEhBVkVfQlpJUDIKKyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKK3RzZl96
aXBfcmVzdWx0X3QgdHNmX3ppcF9hYnN0cmFjdF9kZWZsYXRlKHRzZl96aXBfbW9kZV90IG1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX2Fic3Ry
YWN0X3QgKmFic3RyYWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHNmX3ppcF9hY3Rpb25fdCBhY3Rpb24pIHsKKyAgICBpbnQgcmVzLHphY3Q7CisjaWZkZWYg
SEFWRV9aTElCCisgICAgel9zdHJlYW0gKnpzdHJlYW07CisjZW5kaWYKKyNpZmRlZiBIQVZFX0Ja
SVAyCisgICAgYnpfc3RyZWFtICpienN0cmVhbTsKKyNlbmRpZgorCisgICAgc3dpdGNoIChtb2Rl
KSB7CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAgIGNhc2UgVFNGX1pJUF9aTElCOgorICAgICAg
ICAgICAgenN0cmVhbT1zdHJlYW07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHpzdHJlYW0t
Pm5leHRfaW49KEJ5dGVmKilhYnN0cmFjdC0+bmV4dF9pbjsKKyAgICAgICAgICAgIHpzdHJlYW0t
PmF2YWlsX2luPSh1SW50KWFic3RyYWN0LT5hdmFpbF9pbjsKKyAgICAgICAgICAgIHpzdHJlYW0t
Pm5leHRfb3V0PShCeXRlZiopYWJzdHJhY3QtPm5leHRfb3V0OworICAgICAgICAgICAgenN0cmVh
bS0+YXZhaWxfb3V0PSh1SW50KWFic3RyYWN0LT5hdmFpbF9vdXQ7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY2FzZSBUU0ZfWklQ
X0FDVF9SVU46ICAgICAgICB6YWN0PVpfTk9fRkxVU0g7IGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgVFNGX1pJUF9BQ1RfU1lOQ19GTFVTSDogemFjdD1aX1NZTkNfRkxVU0g7IGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgVFNGX1pJUF9BQ1RfRlVMTF9GTFVTSDogemFjdD1aX0ZVTExf
RkxVU0g7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFNGX1pJUF9BQ1RfRklOSVNIOiAg
ICAgemFjdD1aX0ZJTklTSDsgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDogdHNmX2Fi
b3J0KCJiYWQgYWN0aW9uIHZhbHVlIik7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICByZXM9ZGVmbGF0ZSh6c3RyZWFtLHphY3QpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9pbj0odWludDhfdCopenN0cmVhbS0+bmV4dF9p
bjsKKyAgICAgICAgICAgIGFic3RyYWN0LT5hdmFpbF9pbj0odWludDMyX3QpenN0cmVhbS0+YXZh
aWxfaW47CisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9vdXQ9KHVpbnQ4X3QqKXpzdHJlYW0t
Pm5leHRfb3V0OworICAgICAgICAgICAgYWJzdHJhY3QtPmF2YWlsX291dD0odWludDMyX3QpenN0
cmVhbS0+YXZhaWxfb3V0OworICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHJlcykg
eworICAgICAgICAgICAgICAgIGNhc2UgWl9PSzogcmV0dXJuIFRTRl9aSVBfUkVTX09LOworICAg
ICAgICAgICAgICAgIGNhc2UgWl9TVFJFQU1fRU5EOiByZXR1cm4gVFNGX1pJUF9SRVNfRU5EOwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHRzZl9zZXRfemxp
Yl9lcnJvcihyZXMsenN0cmVhbS0+bXNnLE5VTEwpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVFNGX1pJUF9SRVNfRVJST1I7CisgICAgICAgICAgICB9CisjZW5kaWYKKyNpZmRlZiBIQVZF
X0JaSVAyCisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAgICAgICAgICAgIGJ6c3RyZWFt
PXN0cmVhbTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnpzdHJlYW0tPm5leHRfaW49KGNo
YXIqKWFic3RyYWN0LT5uZXh0X2luOworICAgICAgICAgICAgYnpzdHJlYW0tPmF2YWlsX2luPSh1
bnNpZ25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX2luOworICAgICAgICAgICAgYnpzdHJlYW0tPm5l
eHRfb3V0PShjaGFyKilhYnN0cmFjdC0+bmV4dF9vdXQ7CisgICAgICAgICAgICBienN0cmVhbS0+
YXZhaWxfb3V0PSh1bnNpZ25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX291dDsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFRT
Rl9aSVBfQUNUX1JVTjogICAgICAgIHphY3Q9QlpfUlVOOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFRTRl9aSVBfQUNUX1NZTkNfRkxVU0g6CisgICAgICAgICAgICAgICAgY2FzZSBUU0Zf
WklQX0FDVF9GVUxMX0ZMVVNIOiB6YWN0PUJaX0ZMVVNIOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFRTRl9aSVBfQUNUX0ZJTklTSDogICAgIHphY3Q9QlpfRklOSVNIOyBicmVhazsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OiB0c2ZfYWJvcnQoImJhZCBhY3Rpb24gdmFsdWUiKTsgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlcz1CWjJfYnpD
b21wcmVzcyhienN0cmVhbSx6YWN0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWJzdHJh
Y3QtPm5leHRfaW49KHVpbnQ4X3QqKWJ6c3RyZWFtLT5uZXh0X2luOworICAgICAgICAgICAgYWJz
dHJhY3QtPmF2YWlsX2luPSh1aW50MzJfdClienN0cmVhbS0+YXZhaWxfaW47CisgICAgICAgICAg
ICBhYnN0cmFjdC0+bmV4dF9vdXQ9KHVpbnQ4X3QqKWJ6c3RyZWFtLT5uZXh0X291dDsKKyAgICAg
ICAgICAgIGFic3RyYWN0LT5hdmFpbF9vdXQ9KHVpbnQzMl90KWJ6c3RyZWFtLT5hdmFpbF9vdXQ7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAocmVzKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBCWl9PSzoKKyAgICAgICAgICAgICAgICBjYXNlIEJaX1JVTl9PSzoKKyAgICAgICAg
ICAgICAgICBjYXNlIEJaX0ZMVVNIX09LOgorICAgICAgICAgICAgICAgIGNhc2UgQlpfRklOSVNI
X09LOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFNGX1pJUF9SRVNfT0s7CisgICAgICAg
ICAgICAgICAgY2FzZSBCWl9TVFJFQU1fRU5EOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VFNGX1pJUF9SRVNfRU5EOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIHRzZl9zZXRfbGliYnppcDJfZXJyb3IocmVzLE5VTEwpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gVFNGX1pJUF9SRVNfRVJST1I7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAg
ICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgfQorICAgIAorICAgIHRzZl9zZXRfZXJyb3IoVFNG
X0VfSU5URVJOQUwsCisgICAgICAgICAgICAgICAgICAiQmFkIG1vZGUgdmFsdWUgaW4gdHNmX3pp
cF9hYnN0cmFjdF9kZWZsYXRlKCkiKTsKKyAgICAKKyAgICByZXR1cm4gVFNGX1pJUF9SRVNfRVJS
T1I7Cit9CisKK3RzZl96aXBfcmVzdWx0X3QgdHNmX3ppcF9hYnN0cmFjdF9pbmZsYXRlKHRzZl96
aXBfbW9kZV90IG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0c2ZfemlwX2Fic3RyYWN0X3QgKmFic3RyYWN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHNmX3ppcF9hY3Rpb25fdCBhY3Rpb24pIHsKKyAgICBpbnQgcmVz
LHphY3Q7CisjaWZkZWYgSEFWRV9aTElCCisgICAgel9zdHJlYW0gKnpzdHJlYW07CisjZW5kaWYK
KyNpZmRlZiBIQVZFX0JaSVAyCisgICAgYnpfc3RyZWFtICpienN0cmVhbTsKKyNlbmRpZgorCisg
ICAgc3dpdGNoIChtb2RlKSB7CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAgIGNhc2UgVFNGX1pJ
UF9aTElCOgorICAgICAgICAgICAgenN0cmVhbT1zdHJlYW07CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHpzdHJlYW0tPm5leHRfaW49KEJ5dGVmKilhYnN0cmFjdC0+bmV4dF9pbjsKKyAgICAg
ICAgICAgIHpzdHJlYW0tPmF2YWlsX2luPSh1SW50KWFic3RyYWN0LT5hdmFpbF9pbjsKKyAgICAg
ICAgICAgIHpzdHJlYW0tPm5leHRfb3V0PShCeXRlZiopYWJzdHJhY3QtPm5leHRfb3V0OworICAg
ICAgICAgICAgenN0cmVhbS0+YXZhaWxfb3V0PSh1SW50KWFic3RyYWN0LT5hdmFpbF9vdXQ7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBUU0ZfWklQX0FDVF9SVU46CisgICAgICAgICAgICAgICAgY2FzZSBUU0ZfWklQX0FD
VF9TWU5DX0ZMVVNIOgorICAgICAgICAgICAgICAgIGNhc2UgVFNGX1pJUF9BQ1RfRlVMTF9GTFVT
SDogemFjdD1aX1NZTkNfRkxVU0g7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFNGX1pJ
UF9BQ1RfRklOSVNIOiAgICAgemFjdD1aX0ZJTklTSDsgYnJlYWs7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDogdHNmX2Fib3J0KCJiYWQgYWN0aW9uIHZhbHVlIik7IGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXM9aW5mbGF0ZSh6c3RyZWFtLHphY3Qp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9pbj0odWludDhfdCop
enN0cmVhbS0+bmV4dF9pbjsKKyAgICAgICAgICAgIGFic3RyYWN0LT5hdmFpbF9pbj0odWludDMy
X3QpenN0cmVhbS0+YXZhaWxfaW47CisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9vdXQ9KHVp
bnQ4X3QqKXpzdHJlYW0tPm5leHRfb3V0OworICAgICAgICAgICAgYWJzdHJhY3QtPmF2YWlsX291
dD0odWludDMyX3QpenN0cmVhbS0+YXZhaWxfb3V0OworICAgICAgICAgICAgCisgICAgICAgICAg
ICBzd2l0Y2ggKHJlcykgeworICAgICAgICAgICAgICAgIGNhc2UgWl9PSzogcmV0dXJuIFRTRl9a
SVBfUkVTX09LOworICAgICAgICAgICAgICAgIGNhc2UgWl9TVFJFQU1fRU5EOiByZXR1cm4gVFNG
X1pJUF9SRVNfRU5EOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIHRzZl9zZXRfemxpYl9lcnJvcihyZXMsenN0cmVhbS0+bXNnLE5VTEwpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gVFNGX1pJUF9SRVNfRVJST1I7CisgICAgICAgICAgICB9CisjZW5k
aWYKKyNpZmRlZiBIQVZFX0JaSVAyCisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAgICAg
ICAgICAgIGJ6c3RyZWFtPXN0cmVhbTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnpzdHJl
YW0tPm5leHRfaW49KGNoYXIqKWFic3RyYWN0LT5uZXh0X2luOworICAgICAgICAgICAgYnpzdHJl
YW0tPmF2YWlsX2luPSh1bnNpZ25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX2luOworICAgICAgICAg
ICAgYnpzdHJlYW0tPm5leHRfb3V0PShjaGFyKilhYnN0cmFjdC0+bmV4dF9vdXQ7CisgICAgICAg
ICAgICBienN0cmVhbS0+YXZhaWxfb3V0PSh1bnNpZ25lZCBpbnQpYWJzdHJhY3QtPmF2YWlsX291
dDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzPUJaMl9iekRlY29tcHJlc3MoYnpzdHJl
YW0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBhYnN0cmFjdC0+bmV4dF9pbj0odWludDhf
dCopYnpzdHJlYW0tPm5leHRfaW47CisgICAgICAgICAgICBhYnN0cmFjdC0+YXZhaWxfaW49KHVp
bnQzMl90KWJ6c3RyZWFtLT5hdmFpbF9pbjsKKyAgICAgICAgICAgIGFic3RyYWN0LT5uZXh0X291
dD0odWludDhfdCopYnpzdHJlYW0tPm5leHRfb3V0OworICAgICAgICAgICAgYWJzdHJhY3QtPmF2
YWlsX291dD0odWludDMyX3QpYnpzdHJlYW0tPmF2YWlsX291dDsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgc3dpdGNoIChyZXMpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEJaX09LOgorICAg
ICAgICAgICAgICAgIGNhc2UgQlpfUlVOX09LOgorICAgICAgICAgICAgICAgIGNhc2UgQlpfRkxV
U0hfT0s6CisgICAgICAgICAgICAgICAgY2FzZSBCWl9GSU5JU0hfT0s6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBUU0ZfWklQX1JFU19PSzsKKyAgICAgICAgICAgICAgICBjYXNlIEJaX1NU
UkVBTV9FTkQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUU0ZfWklQX1JFU19FTkQ7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdHNmX3NldF9saWJi
emlwMl9lcnJvcihyZXMsTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUU0ZfWklQ
X1JFU19FUlJPUjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OiBicmVh
azsKKyAgICB9CisgICAgCisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9JTlRFUk5BTCwKKyAgICAg
ICAgICAgICAgICAgICJCYWQgbW9kZSB2YWx1ZSBpbiB0c2ZfemlwX2Fic3RyYWN0X2luZmxhdGUo
KSIpOworICAgIAorICAgIHJldHVybiBUU0ZfWklQX1JFU19FUlJPUjsKK30KKworCisKSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2Fic3RyYWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96
aXBfYWJzdHJhY3QuaAkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvd2FzbS90c2YvdHNmX3ppcF9hYnN0cmFjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgRmlsaXAgUGl6bG8uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBGSUxJUCBQSVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJ
WkxPIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgRlBfVFNGX1pJUF9BQlNUUkFDVF9ICisjZGVmaW5lIEZQX1RTRl9aSVBfQUJT
VFJBQ1RfSAorCisjaW5jbHVkZSAidHNmX3R5cGVzLmgiCisKK3N0cnVjdCB0c2ZfemlwX2Fic3Ry
YWN0IHsKKyAgICB1aW50OF90ICpuZXh0X2luOworICAgIHVpbnQzMl90IGF2YWlsX2luOworICAg
IAorICAgIHVpbnQ4X3QgKm5leHRfb3V0OworICAgIHVpbnQzMl90IGF2YWlsX291dDsKK307CisK
K3R5cGVkZWYgc3RydWN0IHRzZl96aXBfYWJzdHJhY3QgdHNmX3ppcF9hYnN0cmFjdF90OworCitl
bnVtIHRzZl96aXBfYWN0aW9uIHsKKyAgICBUU0ZfWklQX0FDVF9SVU4sCisgICAgVFNGX1pJUF9B
Q1RfU1lOQ19GTFVTSCwKKyAgICBUU0ZfWklQX0FDVF9GVUxMX0ZMVVNILAorICAgIFRTRl9aSVBf
QUNUX0ZJTklTSAorfTsKKwordHlwZWRlZiBlbnVtIHRzZl96aXBfYWN0aW9uIHRzZl96aXBfYWN0
aW9uX3Q7CisKK2VudW0gdHNmX3ppcF9yZXN1bHQgeworICAgIFRTRl9aSVBfUkVTX09LLAorICAg
IFRTRl9aSVBfUkVTX0VORCwKKyAgICBUU0ZfWklQX1JFU19FUlJPUiAgIC8qIGlmIHRoaXMgaXMg
cmV0dXJuZWQsIHRoZSBlcnJvciB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBz
ZXQuICovCit9OworCit0eXBlZGVmIGVudW0gdHNmX3ppcF9yZXN1bHQgdHNmX3ppcF9yZXN1bHRf
dDsKKwordHNmX3ppcF9yZXN1bHRfdCB0c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUodHNmX3ppcF9t
b2RlX3QgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRz
Zl96aXBfYWJzdHJhY3RfdCAqYWJzdHJhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfemlwX2FjdGlvbl90IGFjdGlvbik7CisKK3RzZl96aXBfcmVzdWx0
X3QgdHNmX3ppcF9hYnN0cmFjdF9pbmZsYXRlKHRzZl96aXBfbW9kZV90IG1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c2ZfemlwX2Fic3RyYWN0X3QgKmFi
c3RyYWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNmX3pp
cF9hY3Rpb25fdCBhY3Rpb24pOworCisjZW5kaWYKKworCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvd2FzbS90c2YvdHNmX3ppcF9hdHRyLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfYXR0ci5jCShub25leGlzdGVu
dCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX2F0dHIu
Ywkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBGaWxpcCBQaXpsby4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZJTElQIFBJWkxPIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgRklMSVAgUElaTE8gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInRzZl9pbnRlcm5hbC5o
IgorCisjaWZkZWYgSEFWRV9aTElCCisjaW5jbHVkZSA8emxpYi5oPgorI2VuZGlmCisKKyNpZmRl
ZiBIQVZFX0JaSVAyCisjaW5jbHVkZSA8YnpsaWIuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3Ry
aW5nLmg+CisKKyNpZmRlZiBIQVZFX1NUUklOR1NfSAorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNl
bmRpZgorCit2b2lkIHRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQodHNmX3ppcF93dHJfYXR0
cl90ICphdHRyKSB7CisgICAgbWVtc2V0KGF0dHIsMCxzaXplb2YodHNmX3ppcF93dHJfYXR0cl90
KSk7CisgICAgYXR0ci0+bW9kZT1UU0ZfWklQX05PTkU7Cit9CisKK3RzZl9ib29sX3QgdHNmX3pp
cF93dHJfYXR0cl9nZXRfemxpYl9kZWZhdWx0KHRzZl96aXBfd3RyX2F0dHJfdCAqYXR0cikgewor
ICAgIGlmIChhdHRyIT1OVUxMKSB7CisgICAgICAgIG1lbXNldChhdHRyLDAsc2l6ZW9mKHRzZl96
aXBfd3RyX2F0dHJfdCkpOworICAgIH0KKyNpZmRlZiBIQVZFX1pMSUIKKyAgICBpZiAoYXR0ciE9
TlVMTCkgeworICAgICAgICBhdHRyLT5tb2RlPVRTRl9aSVBfWkxJQjsKKyAgICAgICAgYXR0ci0+
YnVmX3NpemU9NjU1MzY7CisgICAgICAgIGF0dHItPnUuei5hZHZhbmNlZF9pbml0PXRzZl9mYWxz
ZTsKKyAgICAgICAgYXR0ci0+dS56LmxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTjsKKyAgICAg
ICAgYXR0ci0+dS56Lm1ldGhvZD1aX0RFRkxBVEVEOworICAgICAgICBhdHRyLT51Lnoud2luZG93
Qml0cz0xNTsKKyAgICAgICAgYXR0ci0+dS56Lm1lbUxldmVsPTg7CisgICAgICAgIGF0dHItPnUu
ei5zdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1k7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1
ZTsKKyNlbHNlCisgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfU1VQUE9SVEVELAorICAgICAg
ICAgICAgICAgICAgInpsaWIgc3VwcG9ydCBpcyBub3QgY29uZmlndXJlZC4iKTsKKyAgICByZXR1
cm4gdHNmX2ZhbHNlOworI2VuZGlmCit9CisKK3RzZl9ib29sX3QgdHNmX3ppcF93dHJfYXR0cl9n
ZXRfYnppcDJfZGVmYXVsdCh0c2ZfemlwX3d0cl9hdHRyX3QgKmF0dHIpIHsKKyAgICBpZiAoYXR0
ciE9TlVMTCkgeworICAgICAgICBtZW1zZXQoYXR0ciwwLHNpemVvZih0c2ZfemlwX3d0cl9hdHRy
X3QpKTsKKyAgICB9CisjaWZkZWYgSEFWRV9CWklQMgorICAgIGlmIChhdHRyIT1OVUxMKSB7Cisg
ICAgICAgIGF0dHItPm1vZGU9VFNGX1pJUF9CWklQMjsKKyAgICAgICAgYXR0ci0+YnVmX3NpemU9
NjU1MzY7CisgICAgICAgIGF0dHItPnUuYi5ibG9ja1NpemUxMDBrPTk7CisgICAgICAgIGF0dHIt
PnUuYi52ZXJib3NpdHk9MDsKKyAgICAgICAgYXR0ci0+dS5iLndvcmtGYWN0b3I9MDsKKyAgICB9
CisgICAgcmV0dXJuIHRzZl90cnVlOworI2Vsc2UKKyAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05P
VF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAibGliYnppcDIgc3VwcG9ydCBpcyBub3Qg
Y29uZmlndXJlZC4iKTsKKyAgICByZXR1cm4gdHNmX2ZhbHNlOworI2VuZGlmCit9CisKK3RzZl9i
b29sX3QgdHNmX3ppcF93dHJfYXR0cl9nZXRfZm9yX21vZGUodHNmX3ppcF93dHJfYXR0cl90ICph
dHRyLAorCQkJCQkgdHNmX3ppcF9tb2RlX3QgbW9kZSkgeworICAgIHN3aXRjaCAobW9kZSkgewor
ICAgIGNhc2UgVFNGX1pJUF9OT05FOgorCXRzZl96aXBfd3RyX2F0dHJfZ2V0X2RlZmF1bHQoYXR0
cik7CisJYnJlYWs7CisgICAgY2FzZSBUU0ZfWklQX1pMSUI6CisJdHNmX3ppcF93dHJfYXR0cl9n
ZXRfemxpYl9kZWZhdWx0KGF0dHIpOworCWJyZWFrOworICAgIGNhc2UgVFNGX1pJUF9CWklQMjoK
Kwl0c2ZfemlwX3d0cl9hdHRyX2dldF9iemlwMl9kZWZhdWx0KGF0dHIpOworCWJyZWFrOworICAg
IGRlZmF1bHQ6CisJdHNmX3NldF9lcnJvcihUU0ZfRV9JTlZBTElEX0FSRywKKwkJICAgICAgIklu
dmFsaWQgbW9kZSBpbiB0c2ZfenBpX3d0cl9hdHRyX2dldF9mb3JfbW9kZSgpOiAlZCIsCisJCSAg
ICAgIG1vZGUpOworCXJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0c2ZfdHJ1
ZTsKK30KKwordm9pZCB0c2ZfemlwX3Jkcl9hdHRyX2dldF9kZWZhdWx0KHRzZl96aXBfcmRyX2F0
dHJfdCAqYXR0cikgeworI2lmZGVmIEhBVkVfWkxJQgorICAgIGF0dHItPnouYWxsb3c9dHNmX3Ry
dWU7CisjZWxzZQorICAgIGF0dHItPnouYWxsb3c9dHNmX2ZhbHNlOworI2VuZGlmCisgICAgYXR0
ci0+ei5idWZfc2l6ZT02NTUzNjsKKyAgICBhdHRyLT56LmFkdmFuY2VkX2luaXQ9dHNmX2ZhbHNl
OworICAgIGF0dHItPnoud2luZG93Qml0cz0xNTsKKworI2lmZGVmIEhBVkVfQlpJUDIKKyAgICBh
dHRyLT5iLmFsbG93PXRzZl90cnVlOworI2Vsc2UKKyAgICBhdHRyLT5iLmFsbG93PXRzZl9mYWxz
ZTsKKyNlbmRpZgorICAgIGF0dHItPmIuYnVmX3NpemU9NjU1MzY7CisgICAgYXR0ci0+Yi52ZXJi
b3NpdHk9MDsKKyAgICBhdHRyLT5iLnNtYWxsPTA7Cit9CisKK3ZvaWQgdHNmX3ppcF9yZHJfYXR0
cl9nZXRfbm96aXAodHNmX3ppcF9yZHJfYXR0cl90ICphdHRyKSB7CisgICAgdHNmX3ppcF9yZHJf
YXR0cl9nZXRfZGVmYXVsdChhdHRyKTsKKyAgICBhdHRyLT56LmFsbG93PXRzZl9mYWxzZTsKKyAg
ICBhdHRyLT5iLmFsbG93PXRzZl9mYWxzZTsKK30KKwordHNmX2Jvb2xfdCB0c2ZfemlwX3Jkcl9h
dHRyX2lzX25vemlwKHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0cikgeworICAgIHJldHVybiAhYXR0
ci0+ei5hbGxvdyAmJiAhYXR0ci0+Yi5hbGxvdzsKK30KKworCisKKwpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfcmVhZGVyLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3RzZl96aXBfcmVhZGVyLmMJ
KG5vbmV4aXN0ZW50KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vdHNmL3Rz
Zl96aXBfcmVhZGVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTUgRmlsaXAgUGl6bG8uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGSUxJUCBQ
SVpMTyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEZJTElQIFBJWkxPIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJ0c2ZfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0c2ZfZm9ybWF0LmgiCisKKyNpZmRlZiBI
QVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfQlpJUDIK
KyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKKyNkZWZpbmUgQ3oocmVhZGVyKSAoKHpfc3Ry
ZWFtKikoKHJlYWRlciktPnN0cmVhbSkpCisjZGVmaW5lIENieihyZWFkZXIpICgoYnpfc3RyZWFt
KikoKHJlYWRlciktPnN0cmVhbSkpCisKK3RzZl96aXBfcmRyX3QgKnRzZl96aXBfcmVhZGVyX2Ny
ZWF0ZSh0c2ZfcGFydGlhbF9yZWFkZXJfdCByZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqcmVhZGVyX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0c2ZfemlwX21vZGVfdCBtb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHRzZl96aXBfcmRyX2F0dHJfdCAqYXR0cikgeworICAgIGlu
dCByZXM7CisgICAgdHNmX3ppcF9yZHJfdCAqcmVzdWx0PW1hbGxvYyhzaXplb2YodHNmX3ppcF9y
ZHJfdCkpOworICAgIGlmIChyZXN1bHQ9PU5VTEwpIHsKKyAgICAgICAgdHNmX3NldF9lcnJubygi
Q291bGQgbm90IG1hbGxvYyB0c2ZfemlwX3Jkcl90Iik7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICAKKyAgICByZXN1bHQtPmRlY29tcF9lb2Y9dHNmX2ZhbHNlOworICAgIAorICAg
IHJlc3VsdC0+cmVhZGVyPXJlYWRlcjsKKyAgICByZXN1bHQtPnJlYWRlcl9hcmc9cmVhZGVyX2Fy
ZzsKKyAgICAKKyAgICByZXN1bHQtPm1vZGU9bW9kZTsKKyAgICAKKyAgICBzd2l0Y2ggKG1vZGUp
IHsKKyAgICAgICAgY2FzZSBUU0ZfWklQX1pMSUI6CisgICAgICAgICAgICByZXN1bHQtPmJ1Zl9z
aXplPWF0dHItPnouYnVmX3NpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
U0ZfWklQX0JaSVAyOgorICAgICAgICAgICAgcmVzdWx0LT5idWZfc2l6ZT1hdHRyLT5iLmJ1Zl9z
aXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFNGX1pJUF9OT05FOgorICAg
ICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9JTlZBTElEX0FSRywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlRTRl9aSVBfTk9ORSBpcyBub3QgYSB2YWxpZCBtb2RlIGZvciAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0c2ZfemlwX3JlYWRlcl9jcmVhdGUoKSIpOworICAgICAg
ICAgICAgZ290byBmYWlsdXJlXzE7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2Zf
c2V0X2Vycm9yKFRTRl9FX0lOVkFMSURfQVJHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
JWQgaXMgbm90IGEgdmFsaWQgbW9kZSBudW1iZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRzZl96aXBfcmVhZGVyX2NyZWF0ZSgpIixtb2RlKTsKKyAgICAgICAgICAgIGdvdG8g
ZmFpbHVyZV8xOworICAgIH0KKyAgICAKKyAgICByZXN1bHQtPmJ1Zj1tYWxsb2MocmVzdWx0LT5i
dWZfc2l6ZSk7CisgICAgaWYgKHJlc3VsdC0+YnVmPT1OVUxMKSB7CisgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCBtYWxsb2MgYnVmZmVyIik7CisgICAgICAgIGdvdG8gZmFpbHVyZV8x
OworICAgIH0KKyAgICAKKyAgICByZXN1bHQtPmFic3RyYWN0Lm5leHRfaW49cmVzdWx0LT5idWY7
CisgICAgcmVzdWx0LT5hYnN0cmFjdC5hdmFpbF9pbj0wOworICAgIAorICAgIHN3aXRjaCAobW9k
ZSkgeworICAgICAgICBjYXNlIFRTRl9aSVBfWkxJQjoKKyNpZmRlZiBIQVZFX1pMSUIKKyAgICAg
ICAgICAgIHJlc3VsdC0+c3RyZWFtPW1hbGxvYyhzaXplb2Yoel9zdHJlYW0pKTsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQtPnN0cmVhbT09TlVMTCkgeworICAgICAgICAgICAgICAgIHRzZl9zZXRf
ZXJybm8oIkNvdWxkIG5vdCBtYWxsb2Mgel9zdHJlYW0iKTsKKyAgICAgICAgICAgICAgICBnb3Rv
IGZhaWx1cmVfMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ3oo
cmVzdWx0KS0+emFsbG9jPU5VTEw7CisgICAgICAgICAgICBDeihyZXN1bHQpLT56ZnJlZT1OVUxM
OworICAgICAgICAgICAgQ3oocmVzdWx0KS0+b3BhcXVlPU5VTEw7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChhdHRyLT56LmFkdmFuY2VkX2luaXQpIHsKKyAgICAgICAgICAgICAgICBy
ZXM9aW5mbGF0ZUluaXQyKEN6KHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdHRyLT56LndpbmRvd0JpdHMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICByZXM9aW5mbGF0ZUluaXQoQ3oocmVzdWx0KSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAocmVzIT1aX09LKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF96bGliX2Vy
cm9yKHJlcyxDeihyZXN1bHQpLT5tc2csCisgICAgICAgICAgICAgICAgICAgICJUcnlpbmcgdG8g
aW5pdGlhbGl6ZSBpbmZsYXRpb24gaW4gWkxpYiIpOworICAgICAgICAgICAgICAgIGZyZWUoQ3oo
cmVzdWx0KSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlXzI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRT
Rl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJUU0ZfWklQX1pM
SUIgaXMgbm90IHN1cHBvcnRlZCBieSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0c2Zf
emlwX3JlYWRlcl9jcmVhdGUoKSBiZWNhdXNlIFpMaWIgc3VwcG9ydCAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3YXMgbm90IGNvbmZpZ3VyZWQgaW50byB0aGUgVFNGIGxpYnJhcnkiKTsK
KyAgICAgICAgICAgIGdvdG8gZmFpbHVyZV8yOworI2VuZGlmCisgICAgICAgIGNhc2UgVFNGX1pJ
UF9CWklQMjoKKyNpZmRlZiBIQVZFX0JaSVAyCisgICAgICAgICAgICByZXN1bHQtPnN0cmVhbT1t
YWxsb2Moc2l6ZW9mKGJ6X3N0cmVhbSkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC0+c3RyZWFt
PT1OVUxMKSB7CisgICAgICAgICAgICAgICAgdHNmX3NldF9lcnJubygiQ291bGQgbm90IG1hbGxv
YyBiel9zdHJlYW0iKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ2J6KHJlc3VsdCktPmJ6YWxsb2M9TlVM
TDsKKyAgICAgICAgICAgIENieihyZXN1bHQpLT5iemZyZWU9TlVMTDsKKyAgICAgICAgICAgIENi
eihyZXN1bHQpLT5vcGFxdWU9TlVMTDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzPUJa
Ml9iekRlY29tcHJlc3NJbml0KENieihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0dHItPmIudmVyYm9zaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0dHItPmIuc21hbGwpOworICAgICAgICAgICAgaWYgKHJlcyE9QlpfT0sp
IHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKHJlcywKKyAgICAgICAg
ICAgICAgICAgICAgIlRyeWluZyB0byBpbml0aWFsaXplIGRlY29tcHJlc3Npb24gaW4gbGliYnpp
cDIiKTsKKyAgICAgICAgICAgICAgICBmcmVlKENieihyZXN1bHQpKTsKKyAgICAgICAgICAgICAg
ICBnb3RvIGZhaWx1cmVfMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgYnJlYWs7CisjZWxzZQorICAgICAgICAgICAgdHNmX3NldF9lcnJvcihUU0ZfRV9OT1RfU1VQ
UE9SVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVFNGX1pJUF9CWklQMiBpcyBub3Qg
c3VwcG9ydGVkIGJ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInRzZl96aXBfcmVhZGVy
X2NyZWF0ZSgpIGJlY2F1c2UgbGliYnppcDIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
c3VwcG9ydCB3YXMgbm90IGNvbmZpZ3VyZWQgaW50byB0aGUgVFNGICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgImxpYnJhcnkiKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbHVyZV8yOworI2Vu
ZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2ZfYWJvcnQoInNob3VsZCd2ZSBh
bHJlYWR5IGNhdWdodCB0aGlzIGNhc2UiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworICAgIAorZmFpbHVyZV8yOgorICAgIGZyZWUocmVzdWx0
LT5idWYpOworZmFpbHVyZV8xOgorICAgIGZyZWUocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsK
K30KKwordm9pZCB0c2ZfemlwX3JlYWRlcl9kZXN0cm95KHRzZl96aXBfcmRyX3QgKnJlYWRlcikg
eworICAgIHN3aXRjaCAocmVhZGVyLT5tb2RlKSB7CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAg
IGNhc2UgVFNGX1pJUF9aTElCOgorICAgICAgICAgICAgaW5mbGF0ZUVuZChDeihyZWFkZXIpKTsK
KyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisjaWZkZWYgSEFWRV9CWklQMgorICAgICAgICBj
YXNlIFRTRl9aSVBfQlpJUDI6CisgICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKENieihy
ZWFkZXIpKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICB0c2ZfYWJvcnQoInVua25vd24gemlwIHJlYWRlciBtb2RlIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZnJlZShyZWFkZXItPnN0cmVhbSk7CisgICAgZnJlZShy
ZWFkZXItPmJ1Zik7CisgICAgZnJlZShyZWFkZXIpOworfQorCit0c2ZfYm9vbF90IHRzZl96aXBf
cmVhZGVyX3JlYWQodm9pZCAqX3JlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxl
bikgeworICAgIHRzZl96aXBfcmRyX3QgKnJlYWRlciA9IF9yZWFkZXI7CisgICAgaW50MzJfdCBy
ZWFkZXJfcmVzOworICAgIHRzZl96aXBfcmVzdWx0X3QgemlwX3JlczsKKyAgICAKKyAgICBpZiAo
bGVuID09IDApIHsKKyAgICAgICAgcmV0dXJuIHRzZl90cnVlOworICAgIH0KKyAgICAKKyAgICBp
ZiAocmVhZGVyLT5kZWNvbXBfZW9mKSB7CisgICAgICAgIHJlYWRlcl9yZXMgPSByZWFkZXItPnJl
YWRlcihyZWFkZXItPnJlYWRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFkZXItPmJ1ZiwgMSk7CisgICAgICAgIHRzZl9hc3NlcnQocmVhZGVyX3JlcyA9PSAt
MSB8fCByZWFkZXJfcmVzID09IDEpOworICAgICAgICBpZiAocmVhZGVyX3JlcyA9PSAxKSB7Cisg
ICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PX0VPRiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkIEVPRiAoYmVjYXVzZSB0aGUgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVjb21wcmVzc29yIHJlYWNoZWQgaXRzIGVuZCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJvZiBzdHJlYW0pLCBidXQgZGlkIG5vdCBnZXQgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAib25lIChJIHdhcyBzdGlsbCBhYmxlIHRvIHJlYWQgYSBieXRlKSIpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0c2ZfZmFsc2U7CisgICAgfQorICAgIAorICAgIHJlYWRl
ci0+YWJzdHJhY3QubmV4dF9vdXQgPSBkYXRhOworICAgIHJlYWRlci0+YWJzdHJhY3QuYXZhaWxf
b3V0ID0gbGVuOworICAgIAorICAgIGZvciAoOzspIHsKKwkvKiBpcyB0aGVyZSBldmVyIGEgY2Fz
ZSB3aGVyZSB3ZSB3b3VsZCB3YW50IHRvIGNhbGwgaW5mbGF0ZSBldmVuIHRob3VnaAorCSAgIHRo
ZSBpbnB1dCBidWZmZXIgaXMgZW1wdHk/ICovCisgICAgICAgIGlmIChyZWFkZXItPmFic3RyYWN0
LmF2YWlsX2luICE9IDApIHsKKyAgICAgICAgICAgIHppcF9yZXMgPSB0c2ZfemlwX2Fic3RyYWN0
X2luZmxhdGUocmVhZGVyLT5tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkZXItPnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJihyZWFkZXItPmFic3RyYWN0KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNGX1pJUF9BQ1RfUlVOKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKHppcF9yZXMgPT0gVFNGX1pJUF9SRVNfRVJST1IpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlm
ICh6aXBfcmVzID09IFRTRl9aSVBfUkVTX0VORCkgeworICAgICAgICAgICAgICAgIGlmIChyZWFk
ZXItPmFic3RyYWN0LmF2YWlsX2luICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdHNmX3Nl
dF9lcnJvcihUU0ZfRV9OT19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkIEVPRiAoYmVjYXVzZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJkZWNvbXByZXNzb3IgcmVhY2hlZCBpdHMgZW5kICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAib2Ygc3RyZWFtKSwgYnV0IGRpZCBub3QgZ2V0ICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAib25lICh0aGVyZSB3YXMgc3RpbGwgZGF0YSBsZWZ0
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIGJ1ZmZlcikiKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmVhZGVyLT5kZWNvbXBfZW9mID0gdHNmX3RydWU7CisgICAgICAg
ICAgICAgICAgaWYgKHJlYWRlci0+YWJzdHJhY3QuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRz
Zl9zZXRfZXJyb3IoKHZvaWQqKXJlYWRlci0+YWJzdHJhY3QubmV4dF9vdXQgPT0gZGF0YSA/Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU0ZfRV9VTkVYUEVDVEVEX0VPRiA6IFRTRl9F
X0VSUk9ORU9VU19FT0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAocmVhZGVyLT5hYnN0cmFjdC5hdmFpbF9vdXQgPT0gMCkgewor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICB0c2ZfYXNzZXJ0KHJlYWRlci0+YWJzdHJhY3QuYXZhaWxfaW4gPT0gMCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlYWRlcl9yZXMgPSByZWFkZXItPnJlYWRlcihyZWFk
ZXItPnJlYWRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFk
ZXItPmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci0+YnVm
X3NpemUpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlYWRlcl9yZXMgPT0gLTEpIHsKKyAgICAg
ICAgICAgIGlmICh0c2ZfZ2V0X2Vycm9yX2NvZGUoKSA9PSBUU0ZfRV9VTkVYUEVDVEVEX0VPRikg
eworICAgICAgICAgICAgICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfRVJST05FT1VTX0VPRiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHb3QgYW4gRU9GIGZyb20gdGhlIHJlYWRlciBi
ZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzb3Ig
aGFkIHJlYWNoZWQgZW5kIG9mIHN0cmVhbSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVhZGVyLT5h
YnN0cmFjdC5uZXh0X2luID0gcmVhZGVyLT5idWY7CisgICAgICAgIHJlYWRlci0+YWJzdHJhY3Qu
YXZhaWxfaW4gPSByZWFkZXJfcmVzOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHNmX3RydWU7
Cit9CisKKworCisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90
c2ZfemlwX3dyaXRlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFt
Mi93YXNtL3RzZi90c2ZfemlwX3dyaXRlci5jCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvSmV0U3RyZWFtMi93YXNtL3RzZi90c2ZfemlwX3dyaXRlci5jCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDE1
IEZpbGlwIFBpemxvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgRklMSVAgUElaTE8gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBGSUxJUCBQSVpMTyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAidHNmX2ludGVybmFsLmgiCisKKyNpZmRl
ZiBIQVZFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfQlpJ
UDIKKyNpbmNsdWRlIDxiemxpYi5oPgorI2VuZGlmCisKKyNkZWZpbmUgQ3ood3JpdGVyKSAoKHpf
c3RyZWFtKikoKHdyaXRlciktPnN0cmVhbSkpCisjZGVmaW5lIENieih3cml0ZXIpICgoYnpfc3Ry
ZWFtKikoKHdyaXRlciktPnN0cmVhbSkpCisKK3RzZl96aXBfd3RyX3QgKnRzZl96aXBfd3JpdGVy
X2NyZWF0ZSh0c2Zfd3JpdGVyX3Qgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKndyaXRlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdHNmX3ppcF93dHJfYXR0cl90ICphdHRyKSB7CisgICAgaW50IHJlczsK
KyAgICB0c2ZfemlwX3d0cl90ICpyZXN1bHQ9bWFsbG9jKHNpemVvZih0c2ZfemlwX3d0cl90KSk7
CisgICAgaWYgKHJlc3VsdD09TlVMTCkgeworICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBu
b3QgbWFsbG9jIHRzZl96aXBfd3RyX3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIAorICAgIHJlc3VsdC0+d3JpdGVyPXdyaXRlcjsKKyAgICByZXN1bHQtPndyaXRlcl9hcmc9
d3JpdGVyX2FyZzsKKyAgICByZXN1bHQtPm1vZGU9YXR0ci0+bW9kZTsKKyAgICAKKyAgICByZXN1
bHQtPmJ1Zl9zaXplPWF0dHItPmJ1Zl9zaXplOworICAgIHJlc3VsdC0+YnVmPW1hbGxvYyhyZXN1
bHQtPmJ1Zl9zaXplKTsKKyAgICBpZiAocmVzdWx0LT5idWY9PU5VTEwpIHsKKyAgICAgICAgdHNm
X3NldF9lcnJubygiQ291bGQgbm90IG1hbGxvYyBidWZmZXIiKTsKKyAgICAgICAgZ290byBmYWls
dXJlXzE7CisgICAgfQorICAgIAorICAgIHJlc3VsdC0+YWJzdHJhY3QubmV4dF9vdXQ9cmVzdWx0
LT5idWY7CisgICAgcmVzdWx0LT5hYnN0cmFjdC5hdmFpbF9vdXQ9cmVzdWx0LT5idWZfc2l6ZTsK
KyAgICAKKyAgICBzd2l0Y2ggKGF0dHItPm1vZGUpIHsKKyAgICAgICAgY2FzZSBUU0ZfWklQX1pM
SUI6CisjaWZkZWYgSEFWRV9aTElCCisgICAgICAgICAgICByZXN1bHQtPnN0cmVhbT1tYWxsb2Mo
c2l6ZW9mKHpfc3RyZWFtKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LT5zdHJlYW09PU5VTEwp
IHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIHpfc3Ry
ZWFtIik7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlXzI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIEN6KHJlc3VsdCktPnphbGxvYz1OVUxMOworICAgICAg
ICAgICAgQ3oocmVzdWx0KS0+emZyZWU9TlVMTDsKKyAgICAgICAgICAgIEN6KHJlc3VsdCktPm9w
YXF1ZT1OVUxMOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYXR0ci0+dS56LmFkdmFu
Y2VkX2luaXQpIHsKKyAgICAgICAgICAgICAgICByZXM9ZGVmbGF0ZUluaXQyKEN6KHJlc3VsdCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT51LnoubGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT51LnoubWV0aG9kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dS56LndpbmRvd0JpdHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT51LnoubWVtTGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdHRyLT51Lnouc3RyYXRlZ3kpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICByZXM9ZGVmbGF0ZUluaXQoQ3oocmVzdWx0KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dS56LmxldmVsKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChyZXMhPVpfT0spIHsKKyAgICAgICAgICAgICAgICB0c2Zfc2V0
X3psaWJfZXJyb3IocmVzLEN6KHJlc3VsdCktPm1zZywKKyAgICAgICAgICAgICAgICAgICAgIlRy
eWluZyB0byBpbml0aWFsaXplIGRlZmxhdGlvbiBpbiBaTGliIik7CisgICAgICAgICAgICAgICAg
ZnJlZShDeihyZXN1bHQpKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworI2Vsc2UKKyAgICAgICAgICAgIHRzZl9zZXRf
ZXJyb3IoVFNGX0VfTk9UX1NVUFBPUlRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRT
Rl9aSVBfWkxJQiBpcyBub3Qgc3VwcG9ydGVkIGJ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRzZl96aXBfd3JpdGVyX2NyZWF0ZSgpIGJlY2F1c2UgWkxpYiAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzdXBwb3J0IHdhcyBub3QgY29uZmlndXJlZCBpbnRvIHRoZSAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJUU0YgbGlicmFyeSIpOworICAgICAgICAgICAgZ290byBm
YWlsdXJlXzI7CisjZW5kaWYKKyAgICAgICAgY2FzZSBUU0ZfWklQX0JaSVAyOgorI2lmZGVmIEhB
VkVfQlpJUDIKKyAgICAgICAgICAgIHJlc3VsdC0+c3RyZWFtPW1hbGxvYyhzaXplb2YoYnpfc3Ry
ZWFtKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LT5zdHJlYW09PU5VTEwpIHsKKyAgICAgICAg
ICAgICAgICB0c2Zfc2V0X2Vycm5vKCJDb3VsZCBub3QgbWFsbG9jIGJ6X3N0cmVhbSIpOworICAg
ICAgICAgICAgICAgIGdvdG8gZmFpbHVyZV8yOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBDYnoocmVzdWx0KS0+YnphbGxvYz1OVUxMOworICAgICAgICAgICAgQ2J6
KHJlc3VsdCktPmJ6ZnJlZT1OVUxMOworICAgICAgICAgICAgQ2J6KHJlc3VsdCktPm9wYXF1ZT1O
VUxMOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXM9QloyX2J6Q29tcHJlc3NJbml0KENi
eihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT51LmIu
YmxvY2tTaXplMTAwaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+
dS5iLnZlcmJvc2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+
dS5iLndvcmtGYWN0b3IpOworICAgICAgICAgICAgaWYgKHJlcyE9QlpfT0spIHsKKyAgICAgICAg
ICAgICAgICB0c2Zfc2V0X2xpYmJ6aXAyX2Vycm9yKHJlcywKKyAgICAgICAgICAgICAgICAgICAg
IlRyeWluZyB0byBpbml0aWFsaXplIGNvbXByZXNzaW9uIGluIGxpYmJ6aXAyIik7CisgICAgICAg
ICAgICAgICAgZnJlZShDYnoocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJl
XzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAg
ICB0c2Zfc2V0X2Vycm9yKFRTRl9FX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJUU0ZfWklQX0JaSVAyIGlzIG5vdCBzdXBwb3J0ZWQgYnkgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAidHNmX3ppcF93cml0ZXJfY3JlYXRlKCkgYmVjYXVzZSBsaWJiemlwMiAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHdhcyBub3QgY29uZmlndXJlZCBp
bnRvIHRoZSBUU0YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIpOworICAg
ICAgICAgICAgZ290byBmYWlsdXJlXzI7CisjZW5kaWYKKyAgICAgICAgY2FzZSBUU0ZfWklQX05P
TkU6CisgICAgICAgICAgICB0c2Zfc2V0X2Vycm9yKFRTRl9FX0lOVkFMSURfQVJHLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiVFNGX1pJUF9OT05FIGlzIG5vdCBhIHZhbGlkIG1vZGUgZm9y
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInRzZl96aXBfd3JpdGVyX2NyZWF0ZSgpIik7
CisgICAgICAgICAgICBnb3RvIGZhaWx1cmVfMjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHRzZl9zZXRfZXJyb3IoVFNGX0VfSU5WQUxJRF9BUkcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICIlZCBpcyBub3QgYSB2YWxpZCBtb2RlIG51bWJlciBmb3IgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAidHNmX3ppcF93cml0ZXJfY3JlYXRlKCkiLGF0dHItPm1vZGUpOworICAg
ICAgICAgICAgZ290byBmYWlsdXJlXzI7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7
CisgICAgCitmYWlsdXJlXzI6CisgICAgZnJlZShyZXN1bHQtPmJ1Zik7CitmYWlsdXJlXzE6Cisg
ICAgZnJlZShyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCit2b2lkIHRzZl96aXBfd3Jp
dGVyX2Rlc3Ryb3kodHNmX3ppcF93dHJfdCAqd3JpdGVyKSB7CisgICAgc3dpdGNoICh3cml0ZXIt
Pm1vZGUpIHsKKyNpZmRlZiBIQVZFX1pMSUIKKyAgICAgICAgY2FzZSBUU0ZfWklQX1pMSUI6Cisg
ICAgICAgICAgICBkZWZsYXRlRW5kKEN6KHdyaXRlcikpOworICAgICAgICAgICAgYnJlYWs7Cisj
ZW5kaWYKKyNpZmRlZiBIQVZFX0JaSVAyCisgICAgICAgIGNhc2UgVFNGX1pJUF9CWklQMjoKKyAg
ICAgICAgICAgIEJaMl9iekNvbXByZXNzRW5kKENieih3cml0ZXIpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0c2ZfYWJvcnQoInVu
a25vd24gemlwIHdyaXRlciBtb2RlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ZnJlZSh3cml0ZXItPnN0cmVhbSk7CisgICAgZnJlZSh3cml0ZXItPmJ1Zik7CisgICAgZnJlZSh3
cml0ZXIpOworfQorCit0c2ZfYm9vbF90IHRzZl96aXBfd3JpdGVyX3dyaXRlKHZvaWQgKl93cml0
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbikgeworICAgIHRzZl96
aXBfd3RyX3QgKndyaXRlciA9IF93cml0ZXI7CisgICAgdHNmX3ppcF9yZXN1bHRfdCByZXM7Cisg
ICAgCisgICAgd3JpdGVyLT5hYnN0cmFjdC5uZXh0X2luID0gKHZvaWQqKWRhdGE7CisgICAgd3Jp
dGVyLT5hYnN0cmFjdC5hdmFpbF9pbiA9IGxlbjsKKyAgICAKKyAgICB3aGlsZSAod3JpdGVyLT5h
YnN0cmFjdC5hdmFpbF9pbiA+IDApIHsKKyAgICAgICAgcmVzPXRzZl96aXBfYWJzdHJhY3RfZGVm
bGF0ZSh3cml0ZXItPm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JpdGVyLT5zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih3
cml0ZXItPmFic3RyYWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
U0ZfWklQX0FDVF9SVU4pOworICAgICAgICBpZiAocmVzID09IFRTRl9aSVBfUkVTX0VSUk9SKSB7
CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKHJlcyA9
PSBUU0ZfWklQX1JFU19PSykgeworICAgICAgICAgICAgLyogcGFycnJ0YXkhISAqLworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdHNmX2Fib3J0KCJnb3Qgc29tZSB3ZWlyZCByZXR1cm4g
Y29kZSBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgICAidHNmX3ppcF9hYnN0cmFjdF9kZWZs
YXRlKCkiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHdyaXRlci0+YWJzdHJh
Y3QuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmICghd3JpdGVyLT53cml0ZXIod3Jp
dGVyLT53cml0ZXJfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIt
PmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5idWZfc2l6ZSkp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgd3JpdGVyLT5hYnN0cmFjdC5uZXh0X291dCA9IHdyaXRlci0+YnVmOworICAgICAg
ICAgICAgd3JpdGVyLT5hYnN0cmFjdC5hdmFpbF9vdXQgPSB3cml0ZXItPmJ1Zl9zaXplOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xf
dCB0c2ZfemlwX3dyaXRlcl9mbHVzaCh0c2ZfemlwX3d0cl90ICp3cml0ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRzZl9ib29sX3QgZnVsbF9mbHVzaCkgeworICAgIHRzZl96
aXBfcmVzdWx0X3QgcmVzOworICAgIAorICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9pbj1OVUxM
OworICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfaW49MDsKKyAgICAKKyAgICBmb3IgKDs7KSB7
CisgICAgICAgIHJlcz10c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUod3JpdGVyLT5tb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c3RyZWFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYod3JpdGVyLT5hYnN0cmFjdCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9mbHVzaD8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUU0ZfWklQX0FDVF9GVUxMX0ZMVVNIOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTRl9aSVBfQUNUX1NZTkNfRkxVU0gpOwor
ICAgICAgICBpZiAocmVzPT1UU0ZfWklQX1JFU19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJu
IHRzZl9mYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXM9PVRTRl9aSVBfUkVTX09LKSB7Cisg
ICAgICAgICAgICAvKiBwYXJycnRheSEhICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB0c2ZfYWJvcnQoImdvdCBzb21lIHdlaXJkIHJldHVybiBjb2RlIGZyb20gIgorICAgICAgICAg
ICAgICAgICAgICAgICJ0c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUoKSIpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiAoIXdyaXRlci0+d3JpdGVyKHdyaXRlci0+d3JpdGVyX2FyZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXItPmFic3RyYWN0Lm5leHRfb3V0LXdyaXRlci0+YnVmKSkgewor
ICAgICAgICAgICAgcmV0dXJuIHRzZl9mYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfb3V0IT0wKSB7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9vdXQ9d3JpdGVy
LT5idWY7CisgICAgICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfb3V0PXdyaXRlci0+YnVmX3Np
emU7CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30KKwordHNmX2Jvb2xfdCB0
c2ZfemlwX3dyaXRlcl9maW5pc2godHNmX3ppcF93dHJfdCAqd3JpdGVyKSB7CisgICAgdHNmX3pp
cF9yZXN1bHRfdCByZXM7CisgICAgICAgIAorICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9pbj1O
VUxMOworICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfaW49MDsKKyAgICAKKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIHJlcz10c2ZfemlwX2Fic3RyYWN0X2RlZmxhdGUod3JpdGVyLT5tb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYod3JpdGVyLT5hYnN0cmFjdCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNGX1pJUF9BQ1RfRklOSVNIKTsK
KyAgICAgICAgaWYgKHJlcz09VFNGX1pJUF9SRVNfRVJST1IpIHsKKyAgICAgICAgICAgIHJldHVy
biB0c2ZfZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghd3JpdGVyLT53
cml0ZXIod3JpdGVyLT53cml0ZXJfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
aXRlci0+YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+YWJzdHJhY3Qu
bmV4dF9vdXQtd3JpdGVyLT5idWYpKSB7CisgICAgICAgICAgICByZXR1cm4gdHNmX2ZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YWJzdHJhY3QubmV4dF9vdXQ9d3JpdGVyLT5idWY7
CisgICAgICAgIHdyaXRlci0+YWJzdHJhY3QuYXZhaWxfb3V0PXdyaXRlci0+YnVmX3NpemU7Cisg
ICAgICAgIAorICAgICAgICBpZiAocmVzPT1UU0ZfWklQX1JFU19FTkQpIHsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0c2ZfdHJ1ZTsKK30K
KworCisKKworCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>