<?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>147738</bug_id>
          
          <creation_ts>2015-08-06 12:07:11 -0700</creation_ts>
          <short_desc>Implement WebAssembly function parser</short_desc>
          <delta_ts>2015-08-21 14:46:37 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147393</dependson>
          <blocked>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1115406</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-08-06 12:07:11 -0700</bug_when>
    <thetext>Implement WebAssembly function parser for WebAssembly files produced by pack-asmjs &lt;https://github.com/WebAssembly/polyfill-prototype-1&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119568</commentid>
    <comment_count>1</comment_count>
      <attachid>259558</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-08-20 18:54:27 -0700</bug_when>
    <thetext>Created attachment 259558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119572</commentid>
    <comment_count>2</comment_count>
      <attachid>259561</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-08-20 19:09:43 -0700</bug_when>
    <thetext>Created attachment 259561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119580</commentid>
    <comment_count>3</comment_count>
      <attachid>259562</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-08-20 19:19:13 -0700</bug_when>
    <thetext>Created attachment 259562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119740</commentid>
    <comment_count>4</comment_count>
      <attachid>259612</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-08-21 08:07:57 -0700</bug_when>
    <thetext>Created attachment 259612
Make the patch even smaller</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119744</commentid>
    <comment_count>5</comment_count>
      <attachid>259614</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-08-21 08:25:11 -0700</bug_when>
    <thetext>Created attachment 259614
Fix CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119934</commentid>
    <comment_count>6</comment_count>
      <attachid>259614</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-21 14:46:33 -0700</bug_when>
    <thetext>Comment on attachment 259614
Fix CMakeLists.txt

Clearing flags on attachment: 259614

Committed r188778: &lt;http://trac.webkit.org/changeset/188778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119935</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-21 14:46:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259558</attachid>
            <date>2015-08-20 18:54:27 -0700</date>
            <delta_ts>2015-08-20 19:09:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147738-20150820185422.patch</filename>
            <type>text/plain</type>
            <size>64971</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4Njk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTgwNTRiMmUyYjVjMmVlYzg5ZTNiM2JmNmQzZjQ0ZjljZDBhNDcxLi44NThmNTU1ODU0MGU5Nzdk
MGU2ZGZhMTU0Y2JkOWYzYjlhODhlMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxNS0wOC0yMCAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2VyIGZvciBXZWJBc3NlbWJseSBmaWxlcyBwcm9k
dWNlZCBieSBwYWNrLWFzbWpzCisgICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1i
bHkvcG9seWZpbGwtcHJvdG90eXBlLTE+LiBUaGlzIHBhdGNoIHBhcnNlcyBvbmx5CisgICAgICAg
IHNvbWUgaW5zdHJ1Y3Rpb25zIG9uIHN0YXRlbWVudHMgYW5kIGludDMyIGV4cHJlc3Npb25zLiBQ
YXJzaW5nIG9mIHRoZSByZXN0CisgICAgICAgIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gc3Vic2Vx
dWVudCBwYXRjaGVzLiBUaGUgaW5zdHJ1Y3Rpb24gbGlzdHMgaW4gV0FTTUNvbnN0YW50cy5oCisg
ICAgICAgIGFyZSBzbGlnaHRseSBtb2RpZmllZCBmcm9tCisgICAgICAgIDxodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvcG9seWZpbGwtcHJvdG90eXBlLTEvYmxvYi9tYXN0ZXIvc3JjL3No
YXJlZC5oPi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdh
c20vV0FTTUNvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUxvY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVu
Y3Rpb25QYXJzZXI6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUlmU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUlmRWxzZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5j
dGlvblBhcnNlcjo6cGFyc2VXaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5j
dGlvblBhcnNlcjo6cGFyc2VEb1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VCcmVha0xhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUNvbnRpbnVlTGFiZWxTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
OldBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSTMyKToKKyAgICAgICAgKEpTQzo6
V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUNvbnN0YW50UG9vbEluZGV4RXhwcmVzc2lvbkkzMik6
CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VJbW1lZGlhdGVFeHByZXNz
aW9uSTMyKToKKyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpXQVNNRnVuY3Rpb25QYXJzZXIpOgorICAg
ICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oOiBSZW5hbWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1hZ2ljTnVtYmVyLmguCisgICAgICAgICogd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTU1vZHVsZVBhcnNlcjo6
V0FTTU1vZHVsZVBhcnNlcik6CisgICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJzZXI6OnBhcnNl
RnVuY3Rpb25EZWZpbml0aW9uU2VjdGlvbik6CisgICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJz
ZXI6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKToKKyAgICAgICAgKEpTQzo6cGFyc2VXZWJBc3Nl
bWJseSk6CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6CisgICAgICAgICogd2Fz
bS9XQVNNUmVhZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTVJlYWRlcjo6cmVhZENvbXBhY3RJ
bnQzMik6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRUeXBlKToKKyAgICAgICAgKEpT
Qzo6V0FTTVJlYWRlcjo6cmVhZEV4cHJlc3Npb25UeXBlKToKKyAgICAgICAgKEpTQzo6V0FTTVJl
YWRlcjo6cmVhZEV4cG9ydEZvcm1hdCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRP
cFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcEV4cHJlc3Npb25J
MzIpOgorICAgICAgICAoSlNDOjpXQVNNUmVhZGVyOjpyZWFkVmFyaWFibGVUeXBlcyk6CisgICAg
ICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcCk6CisgICAgICAgICogd2FzbS9XQVNNUmVhZGVy
Lmg6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6Om9mZnNldCk6CisgICAgICAgIChKU0M6OldB
U01SZWFkZXI6OnNldE9mZnNldCk6CisKIDIwMTUtMDgtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIHB1dF9ieV9pZCBsaWtlIElD
IGludG8gcHV0X2J5X3ZhbCB3aGVuIHRoZSBnaXZlbiBuYW1lIGlzIFN0cmluZyBvciBTeW1ib2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwOWQyNGJhYmIwYTQxMTI0NTc2
YWVhNDFhODVkMmUyODk3NjYzOWI3Li5iNDkwMGU4MTBjNjgzZDE5NWRmYjUzOTBhOTMwZDgwYmNm
NDQ3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MjQsNiArNDI0
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB0b29scy9KU0RvbGxhclZNUHJv
dG90eXBlLmNwcAogCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUuY3BwCisgICAgd2FzbS9XQVNNRnVu
Y3Rpb25QYXJzZXIuY3BwCisgICAgd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmNwcAog
ICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKICAgICB3YXNtL1dBU01SZWFkZXIuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDZmZGJiMWYwOWI4Nzhh
NDRkNDg2Y2IyMmM3NzQyOWQ1NjRkM2NhZjIuLjJkMzhjMTc0ZTJiM2I5NmYyMTI2Y2IzY2NlNmUw
OTliMTZiZDFjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
ODkxLDYgKzg5MSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xKU0RvbGxh
clZNLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xzXEpTRG9sbGFyVk1Q
cm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxKU1dBU01N
b2R1bGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRnVuY3Rp
b25QYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNTW9k
dWxlUGFyc2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTVJl
YWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx5YXJyXFJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcCIgLz4KQEAgLTE3ODMsOCArMTc4NCwxMCBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cdG9vbHNcUHJvZmlsZVRyZWVOb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx0b29sc1xUaWVyZWRNTWFwQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHdhc21cSlNXQVNNTW9kdWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3YXNtXFdBU01Db25zdGFudHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdh
c21cV0FTTUZvcm1hdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNN
TWFnaWNOdW1iZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1
bmN0aW9uUGFyc2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01G
dW5jdGlvblN5bnRheENoZWNrZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdh
c21cV0FTTU1vZHVsZVBhcnNlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2Fz
bVxXQVNNUmVhZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx5YXJyXFJlZ3Vs
YXJFeHByZXNzaW9uLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggNjJhMTM3YTJjYjZjYjJhOTFkMzVmMGQ1NTI1NDk3YjU0ODk2
ZTdlOS4uOGI0OWE0YTE3OGIzNjk0MTcyYWQ4OWZjZTdjZmZiMjcyYzc0ODZjNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTgzOCw2
ICsxODM4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cSlNXQVNNTW9kdWxl
LmNwcCI+CiAgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCI+Cisg
ICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1vZHVsZVBhcnNlci5jcHAiPgogICAgICAgPEZpbHRl
cj53YXNtPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00NDExLDEwICs0NDE0LDE2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXEpTV0FTTU1vZHVsZS5oIj4KICAgICAg
IDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd2FzbVxXQVNNQ29uc3RhbnRzLmgiPgorICAgICAgPEZpbHRlcj53YXNtPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNt
XFdBU01Gb3JtYXQuaCI+CiAgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1hZ2ljTnVtYmVyLmgi
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRnVuY3Rpb25QYXJzZXIuaCI+
CisgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oIj4KICAg
ICAgIDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNTW9kdWxlUGFyc2VyLmgiPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhMzQwMTcyMzgzZDQyZTYxODUyNDllZWY4NDQxMjQ1MjM2ZWE2OGI4
Li4yYWNjZWI1ODhjYTgxOWEyODJhOWQwZjM5ZGUyYmEzZjU3YTFiMmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTAzMiwxMSArMTAzMiwxNCBAQAogCQk3MEVDQTYwOTFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlUmVnaXN0cnlLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9u
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUVFMEJGRDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgKi87IH07
CiAJCTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUVFMEJGRTFCNEFG
Qjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCMDI0NzU1MUI4NjgyREQwMDU0MjQ0MCAv
KiBXQVNNQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjAyNDc1MjFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUNvbnN0YW50cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCMDI0NzU2MUI4
NjgyRTEwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IwMjQ3NTMxQjg2ODJENTAwNTQyNDQwIC8q
IFdBU01GdW5jdGlvblBhcnNlci5jcHAgKi87IH07CisJCTdCMDI0NzU3MUI4NjgyRTQwMDU0MjQ0
MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCMDI0NzU0MUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25Q
YXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjAyNDc1OTFCODY4RUI3MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IwMjQ3NTgx
Qjg2OEVBRTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjM5Rjc2RDFCNjJERTJF
MDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc2OTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1v
ZHVsZVBhcnNlci5jcHAgKi87IH07CiAJCTdCMzlGNzZFMUI2MkRFMzIwMDM2MEZCNCAvKiBXQVNN
TW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjM5Rjc2QTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMzlGNzcwMUI2
MkRFMzIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc2QzFCNjJERTIyMDAzNjBGQjQgLyogV0FTTVJlYWRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
MzlGNzcyMUI2MzU3NEQwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzlGNzcxMUI2MzU3NEIwMDM2MEZCNCAv
KiBXQVNNUmVhZGVyLmNwcCAqLzsgfTsKLQkJN0I3QTVFMjcxQjY4Mjg4QzAwMjdDQUQwIC8qIFdB
U01NYWdpY051bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3QTVFMjYxQjY4Mjg4NDAwMjdDQUQwIC8qIFdBU01NYWdpY051bWJlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOThEMTM2MUI2
MENENUYwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5OEQxMzQxQjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FT
TU1vZHVsZS5jcHAgKi87IH07CiAJCTdCOThEMTM3MUI2MENENjIwMDIzQjFBNCAvKiBKU1dBU01N
b2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OThEMTM1MUI2MENENUEwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkM1NDdEMzFCNjk1OUExMDA5NTlC
NTggLyogV0FTTUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjg0MCwxMSArMjg0
MywxNCBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtl
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RUUwQkZEMUI0QUZCODUwMDAzODVD
OSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMDI0NzUyMUI4NjgyRDUwMDU0MjQ0MCAv
KiBXQVNNQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01D
b25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IwMjQ3NTMxQjg2ODJE
NTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXQVNNRnVuY3Rpb25QYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjAyNDc1NDFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01GdW5jdGlvblBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjAyNDc1ODFCODY4RUFFMDA1NDI0
NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCMzlGNzY5MUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01Nb2R1bGVQYXJz
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjM5Rjc2QTFCNjJERTIyMDAz
NjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXQVNNTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
MzlGNzZDMUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdBU01SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0IzOUY3NzExQjYzNTc0QjAwMzYwRkI0IC8qIFdBU01SZWFkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdCN0E1RTI2MUI2ODI4ODQwMDI3Q0FEMCAvKiBXQVNNTWFnaWNOdW1i
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1hZ2ljTnVtYmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOThEMTM0MUI2MENENUEwMDIzQjFBNCAv
KiBKU1dBU01Nb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXQVNNTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5OEQxMzUx
QjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1dBU01Nb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0FTTUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzU1MCw3ICszNTU2LDcgQEAKIAkJRTMzRjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50
ZXJuYWxQcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0Y1MDgyMUI4
NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNGNTA4MzFCODQzN0EwMDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRjUwODYxQjg0
NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0Y1MDg4MUI4NDRBMUEwMDQx
Mzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9IEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdHJ1
Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0
M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NDAsOCArNDQ0NiwxMSBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0I5OEQxMzQxQjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FT
TU1vZHVsZS5jcHAgKi8sCiAJCQkJN0I5OEQxMzUxQjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FTTU1v
ZHVsZS5oICovLAorCQkJCTdCMDI0NzUyMUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNQ29uc3RhbnRz
LmggKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLywK
LQkJCQk3QjdBNUUyNjFCNjgyODg0MDAyN0NBRDAgLyogV0FTTU1hZ2ljTnVtYmVyLmggKi8sCisJ
CQkJN0IwMjQ3NTMxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5jcHAgKi8s
CisJCQkJN0IwMjQ3NTQxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oICov
LAorCQkJCTdCMDI0NzU4MUI4NjhFQUUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25TeW50YXhDaGVj
a2VyLmggKi8sCiAJCQkJN0IzOUY3NjkxQjYyREUyMjAwMzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJz
ZXIuY3BwICovLAogCQkJCTdCMzlGNzZBMUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFy
c2VyLmggKi8sCiAJCQkJN0IzOUY3NzExQjYzNTc0QjAwMzYwRkI0IC8qIFdBU01SZWFkZXIuY3Bw
ICovLApAQCAtNTk2NCw2ICs1OTczLDcgQEAKIAkJCQlBNzdGMTgyMjE2NDA4OEIyMDA2NDBBNDcg
LyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUxMTZCMTBGRTc1QUM4MDBCNTEy
QkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJEN0U2OTE0NDc5OTk2
MDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IwMjQ3NTkxQjg2
OEVCNzAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21t
b25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjIzLDYgKzYyMzMsNyBAQAogCQkJ
CTBGOEYyQjk2MTcyRTA0QTMwMDdEQkRBNSAvKiBGVExMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkNFRkFFMDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IwMjQ3NTcxQjg2ODJFNDAwNTQyNDQwIC8q
IFdBU01GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNE
QjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4
OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKQEAgLTY2MTEsNiArNjYyMiw3IEBACiAJCQkJOTVDRDQ1NzcwRTFDNEZERDAwODUz
NThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDUxMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5
QTUxNjZBRDM1MTAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCMDI0NzU1MUI4NjgyREQwMDU0MjQ0MCAvKiBXQVNNQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkY3MjlCOTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0IwNyAvKiBQcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJBMTY2QUQzNjAw
MDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTY2MzQs
NyArNjY0Niw2IEBACiAJCQkJQkMxOEM0NTQwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5TmFt
ZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MTY4QzE1QTNCMjM1MDA4RjVEQUEgLyog
UHJvcGVydHlPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODVGNkJDMThDNTUzRkUwMEYx
MDYyNiAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTdCN0E1RTI3
MUI2ODI4OEMwMDI3Q0FEMCAvKiBXQVNNTWFnaWNOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDU1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjdGMzlDMTVFRDhFNDYwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3Rh
dHVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc1NjcsNiArNzU3OCw3IEBACiAJCQkJMEY1QTYyODMx
ODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ3RjM5Q0IxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0IwMjQ3NTYxQjg2ODJFMTAwNTQyNDQwIC8qIFdBU01G
dW5jdGlvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RjE2QjcyQTE3MDA1
REY5NUIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MkIzMTBGRDE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNDMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvblBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01Db25zdGFudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01Db25zdGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZThiNmQyMjU2MzZhNjk4MjI4NDMzN2EzYmNmYTRl
ZmY4NDE2YzAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUNvbnN0YW50cy5oCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoKKyAqIENvcHlyaWdo
dCAoYykgMjAxNSBieSB0aGUgcmVwb3NpdG9yeSBhdXRob3JzIG9mCisgKiBXZWJBc3NlbWJseS9w
b2x5ZmlsbC1wcm90b3R5cGUtMS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIFdBU01Db25zdGFudHNfaAorI2Rl
ZmluZSBXQVNNQ29uc3RhbnRzX2gKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCB3YXNtTWFnaWNOdW1iZXIgPSAweDZk
NzM2MTc3OworCitlbnVtIGNsYXNzIFdBU01PcFN0YXRlbWVudCA6IHVpbnQ4X3QgeworICAgIFNl
dExvY2FsLAorICAgIFNldEdsb2JhbCwKKyAgICBJMzJTdG9yZTgsCisgICAgSTMyU3RvcmVXaXRo
T2Zmc2V0OCwKKyAgICBJMzJTdG9yZTE2LAorICAgIEkzMlN0b3JlV2l0aE9mZnNldDE2LAorICAg
IEkzMlN0b3JlMzIsCisgICAgSTMyU3RvcmVXaXRoT2Zmc2V0MzIsCisgICAgRjMyU3RvcmUsCisg
ICAgRjMyU3RvcmVXaXRoT2Zmc2V0LAorICAgIEY2NFN0b3JlLAorICAgIEY2NFN0b3JlV2l0aE9m
ZnNldCwKKyAgICBDYWxsSW50ZXJuYWwsCisgICAgQ2FsbEluZGlyZWN0LAorICAgIENhbGxJbXBv
cnQsCisgICAgUmV0dXJuLAorICAgIEJsb2NrLAorICAgIElmLAorICAgIElmRWxzZSwKKyAgICBX
aGlsZSwKKyAgICBEbywKKyAgICBMYWJlbCwKKyAgICBCcmVhaywKKyAgICBCcmVha0xhYmVsLAor
ICAgIENvbnRpbnVlLAorICAgIENvbnRpbnVlTGFiZWwsCisgICAgU3dpdGNoLAorICAgIE51bWJl
ck9mV0FTTU9wU3RhdGVtZW50cworfTsKKworZW51bSBjbGFzcyBXQVNNT3BTdGF0ZW1lbnRXaXRo
SW1tZWRpYXRlIDogdWludDhfdCB7CisgICAgU2V0TG9jYWwsCisgICAgU2V0R2xvYmFsLAorICAg
IE51bWJlck9mV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZXMKK307CisKK2VudW0gY2xhc3Mg
V0FTTU9wRXhwcmVzc2lvbkkzMiA6IHVpbnQ4X3QgeworICAgIENvbnN0YW50UG9vbEluZGV4LAor
ICAgIEltbWVkaWF0ZSwKKyAgICBHZXRMb2NhbCwKKyAgICBHZXRHbG9iYWwsCisgICAgU2V0TG9j
YWwsCisgICAgU2V0R2xvYmFsLAorICAgIFNMb2FkOCwKKyAgICBTTG9hZFdpdGhPZmZzZXQ4LAor
ICAgIFVMb2FkOCwKKyAgICBVTG9hZFdpdGhPZmZzZXQ4LAorICAgIFNMb2FkMTYsCisgICAgU0xv
YWRXaXRoT2Zmc2V0MTYsCisgICAgVUxvYWQxNiwKKyAgICBVTG9hZFdpdGhPZmZzZXQxNiwKKyAg
ICBMb2FkMzIsCisgICAgTG9hZFdpdGhPZmZzZXQzMiwKKyAgICBTdG9yZTgsCisgICAgU3RvcmVX
aXRoT2Zmc2V0OCwKKyAgICBTdG9yZTE2LAorICAgIFN0b3JlV2l0aE9mZnNldDE2LAorICAgIFN0
b3JlMzIsCisgICAgU3RvcmVXaXRoT2Zmc2V0MzIsCisgICAgQ2FsbEludGVybmFsLAorICAgIENh
bGxJbmRpcmVjdCwKKyAgICBDYWxsSW1wb3J0LAorICAgIENvbmRpdGlvbmFsLAorICAgIENvbW1h
LAorICAgIEZyb21GMzIsCisgICAgRnJvbUY2NCwKKyAgICBOZWdhdGUsCisgICAgQWRkLAorICAg
IFN1YiwKKyAgICBNdWwsCisgICAgU0RpdiwKKyAgICBVRGl2LAorICAgIFNNb2QsCisgICAgVU1v
ZCwKKyAgICBCaXROb3QsCisgICAgQml0T3IsCisgICAgQml0QW5kLAorICAgIEJpdFhvciwKKyAg
ICBMZWZ0U2hpZnQsCisgICAgQXJpdGhtZXRpY1JpZ2h0U2hpZnQsCisgICAgTG9naWNhbFJpZ2h0
U2hpZnQsCisgICAgQ291bnRMZWFkaW5nWmVyb3MsCisgICAgTG9naWNhbE5vdCwKKyAgICBFcXVh
bEkzMiwKKyAgICBFcXVhbEYzMiwKKyAgICBFcXVhbEY2NCwKKyAgICBOb3RFcXVhbEkzMiwKKyAg
ICBOb3RFcXVhbEYzMiwKKyAgICBOb3RFcXVhbEY2NCwKKyAgICBTTGVzc1RoYW5JMzIsCisgICAg
VUxlc3NUaGFuSTMyLAorICAgIExlc3NUaGFuRjMyLAorICAgIExlc3NUaGFuRjY0LAorICAgIFNM
ZXNzVGhhbk9yRXF1YWxJMzIsCisgICAgVUxlc3NUaGFuT3JFcXVhbEkzMiwKKyAgICBMZXNzVGhh
bk9yRXF1YWxGMzIsCisgICAgTGVzc1RoYW5PckVxdWFsRjY0LAorICAgIFNHcmVhdGVyVGhhbkkz
MiwKKyAgICBVR3JlYXRlclRoYW5JMzIsCisgICAgR3JlYXRlclRoYW5GMzIsCisgICAgR3JlYXRl
clRoYW5GNjQsCisgICAgU0dyZWF0ZXJUaGFuT3JFcXVhbEkzMiwKKyAgICBVR3JlYXRlclRoYW5P
ckVxdWFsSTMyLAorICAgIEdyZWF0ZXJUaGFuT3JFcXVhbEYzMiwKKyAgICBHcmVhdGVyVGhhbk9y
RXF1YWxGNjQsCisgICAgU01pbiwKKyAgICBVTWluLAorICAgIFNNYXgsCisgICAgVU1heCwKKyAg
ICBBYnMsCisgICAgTnVtYmVyT2ZXQVNNT3BFeHByZXNzaW9uSTMycworfTsKKworZW51bSBjbGFz
cyBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZSA6IHVpbnQ4X3QgeworICAgIENvbnN0
YW50UG9vbEluZGV4LAorICAgIEltbWVkaWF0ZSwKKyAgICBHZXRMb2NhbCwKKyAgICBOdW1iZXJP
ZldBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlcworfTsKKworZW51bSBjbGFzcyBXQVNN
VmFyaWFibGVUeXBlcyA6IHVpbnQ4X3QgeworICAgIEkzMiA9IDEgPDwgMCwKKyAgICBGMzIgPSAx
IDw8IDEsCisgICAgRjY0ID0gMSA8PCAyLAorICAgIE51bWJlck9mVmFyaWFibGVUeXBlcyA9IDgK
K307CisKK2VudW0gY2xhc3MgV0FTTVZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlIDogdWludDhf
dCB7CisgICAgSTMyLAorICAgIE51bWJlck9mVmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGVzCit9
OworCitlbnVtIGNsYXNzIFdBU01FeHBvcnRGb3JtYXQgOiB1aW50OF90IHsKKyAgICBEZWZhdWx0
LAorICAgIFJlY29yZCwKKyAgICBOdW1iZXJPZkV4cG9ydEZvcm1hdHMKK307CisKK3N0YXRpYyBj
b25zdCB1aW50OF90IGhhc0ltbWVkaWF0ZUluT3BGbGFnID0gMHg4MDsKKworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG9wV2l0aEltbWVkaWF0ZUJpdHMgPSAyOworc3RhdGljIGNvbnN0IHVpbnQzMl90
IG9wV2l0aEltbWVkaWF0ZUxpbWl0ID0gMSA8PCBvcFdpdGhJbW1lZGlhdGVCaXRzOworCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW1tZWRpYXRlQml0cyA9IDU7CitzdGF0aWMgY29uc3QgdWludDMy
X3QgaW1tZWRpYXRlTGltaXQgPSAxIDw8IGltbWVkaWF0ZUJpdHM7CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZW5kaWYgLy8gV0FTTUNv
bnN0YW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9y
bWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKaW5kZXggYWJh
OWY5OGEwZTY2OTZkYmNjY2UxOTIyODkyMGMzMzhmMzI3NzFlZS4uMDc3YmYzYTI5OGQwYzFjYTc2
ODZmMzE3NTE4YzFhOWIzZjk2M2M3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01G
b3JtYXQuaApAQCAtNjUsMTIgKzY1LDYgQEAgZW51bSBjbGFzcyBXQVNNRXhwcmVzc2lvblR5cGUg
OiB1aW50OF90IHsKICAgICBOdW1iZXJPZkV4cHJlc3Npb25UeXBlcwogfTsKIAotZW51bSBjbGFz
cyBXQVNNRXhwb3J0Rm9ybWF0IDogdWludDhfdCB7Ci0gICAgRGVmYXVsdCwKLSAgICBSZWNvcmQs
Ci0gICAgTnVtYmVyT2ZFeHBvcnRGb3JtYXRzCi19OwotCiBzdHJ1Y3QgV0FTTVNpZ25hdHVyZSB7
CiAgICAgV0FTTUV4cHJlc3Npb25UeXBlIHJldHVyblR5cGU7CiAgICAgVmVjdG9yPFdBU01UeXBl
PiBhcmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0
aW9uUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTAzZWJjMDFmNGY2ZDg5ZDYzNzgwODI1NWI1NzAz
ZjVkMTA3YTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUZ1bmN0aW9uUGFyc2VyLmNwcApAQCAtMCwwICsxLDUxNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKwor
I2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgorI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKKyNpbmNs
dWRlICJXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgiCisKKyNkZWZpbmUgUFJPUEFHQVRFX0VS
Uk9SKCkgZG8geyBpZiAoIW1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSByZXR1cm4gMDsgfSB3aGls
ZSAoMCkKKyNkZWZpbmUgRkFJTF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKSBkbyB7ICBtX2Vy
cm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsgcmV0dXJuIDA7IH0gd2hpbGUgKDApCisjZGVmaW5l
IFJFQURfVUlOVDMyX09SX0ZBSUwocmVzdWx0LCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3Jl
YWRlci5yZWFkVUludDMyKHJlc3VsdCkpIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVzc2FnZSk7
IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFQURfRkxPQVRfT1JfRkFJTChyZXN1bHQsIGVycm9yTWVz
c2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRGbG9hdChyZXN1bHQpKSBGQUlMX1dJVEhfTUVT
U0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX0RPVUJMRV9PUl9G
QUlMKHJlc3VsdCwgZXJyb3JNZXNzYWdlKSBkbyB7IGlmICghbV9yZWFkZXIucmVhZERvdWJsZShy
ZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2Rl
ZmluZSBSRUFEX1NUUklOR19PUl9GQUlMKHJlc3VsdCwgZXJyb3JNZXNzYWdlKSBkbyB7IGlmICgh
bV9yZWFkZXIucmVhZFN0cmluZyhyZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3Nh
Z2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwocmVz
dWx0LCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkQ29tcGFjdFVJbnQzMihy
ZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2Rl
ZmluZSBSRUFEX0NPTVBBQ1RfSU5UMzJfT1JfRkFJTChyZXN1bHQsIGVycm9yTWVzc2FnZSkgZG8g
eyBpZiAoIW1fcmVhZGVyLnJlYWRDb21wYWN0SW50MzIocmVzdWx0KSkgRkFJTF9XSVRIX01FU1NB
R0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVBRF9FWFBSRVNTSU9OX1RZ
UEVfT1JfRkFJTChyZXN1bHQsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRF
eHByZXNzaW9uVHlwZShyZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9
IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX09QX1NUQVRFTUVOVF9PUl9GQUlMKGhhc0ltbWVkaWF0
ZSwgb3AsIG9wV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYg
KCFtX3JlYWRlci5yZWFkT3BTdGF0ZW1lbnQoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRp
YXRlLCBpbW1lZGlhdGUpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxl
ICgwKQorI2RlZmluZSBSRUFEX09QX0VYUFJFU1NJT05fSTMyX09SX0ZBSUwoaGFzSW1tZWRpYXRl
LCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAo
IW1fcmVhZGVyLnJlYWRPcEV4cHJlc3Npb25JMzIoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1t
ZWRpYXRlLCBpbW1lZGlhdGUpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdo
aWxlICgwKQorI2RlZmluZSBSRUFEX1ZBUklBQkxFX1RZUEVTX09SX0ZBSUwoaGFzSW1tZWRpYXRl
LCB2YXJpYWJsZVR5cGVzLCB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCBl
cnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkVmFyaWFibGVUeXBlcyhoYXNJbW1l
ZGlhdGUsIHZhcmlhYmxlVHlwZXMsIHZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlLCBpbW1lZGlh
dGUpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmlu
ZSBGQUlMX0lGX0ZBTFNFKGNvbmRpdGlvbiwgZXJyb3JNZXNzYWdlKSBkbyB7XAorICAgIGlmICgh
KGNvbmRpdGlvbikpXAorICAgICAgICBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpO1wK
K30gd2hpbGUgKDApCisKKyNkZWZpbmUgVU5VU0VEIDAKKworbmFtZXNwYWNlIEpTQyB7CisKK2Jv
b2wgV0FTTUZ1bmN0aW9uUGFyc2VyOjpjaGVja1N5bnRheChKU1dBU01Nb2R1bGUqIG1vZHVsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBzaXplX3QgZnVuY3Rpb25JbmRleCwgdW5zaWduZWQg
c3RhcnRPZmZzZXRJblNvdXJjZSwgdW5zaWduZWQmIGVuZE9mZnNldEluU291cmNlLCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKK3sKKyAgICBXQVNNRnVuY3Rpb25QYXJzZXIgcGFyc2VyKG1vZHVsZSwg
c291cmNlLCBmdW5jdGlvbkluZGV4KTsKKyAgICBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyIHN5
bnRheENoZWNrZXI7CisgICAgcGFyc2VyLm1fcmVhZGVyLnNldE9mZnNldChzdGFydE9mZnNldElu
U291cmNlKTsKKyAgICBwYXJzZXIucGFyc2VGdW5jdGlvbihzeW50YXhDaGVja2VyKTsKKyAgICBp
ZiAoIXBhcnNlci5tX2Vycm9yTWVzc2FnZS5pc051bGwoKSkgeworICAgICAgICBlcnJvck1lc3Nh
Z2UgPSBwYXJzZXIubV9lcnJvck1lc3NhZ2U7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgZW5kT2Zmc2V0SW5Tb3VyY2UgPSBwYXJzZXIubV9yZWFkZXIub2Zmc2V0KCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorYm9vbCBXQVNNRnVu
Y3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb24oQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBjb25z
dCBXQVNNU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBtX21vZHVsZS0+c2lnbmF0dXJlcygpW21fbW9k
dWxlLT5mdW5jdGlvbkRlY2xhcmF0aW9ucygpW21fZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5k
ZXhdOworCisgICAgbV9yZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGU7CisKKyAgICBw
YXJzZUxvY2FsVmFyaWFibGVzKCk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICBjb25z
dCBWZWN0b3I8V0FTTVR5cGU+JiBhcmd1bWVudHMgPSBzaWduYXR1cmUuYXJndW1lbnRzOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQorICAgICAgICBt
X2xvY2FsVHlwZXMuYXBwZW5kKGFyZ3VtZW50c1tpXSk7CisgICAgZm9yICh1aW50MzJfdCBpID0g
MDsgaSA8IG1fbnVtYmVyT2ZJMzJMb2NhbFZhcmlhYmxlczsgKytpKQorICAgICAgICBtX2xvY2Fs
VHlwZXMuYXBwZW5kKFdBU01UeXBlOjpJMzIpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBtX251bWJlck9mRjMyTG9jYWxWYXJpYWJsZXM7ICsraSkKKyAgICAgICAgbV9sb2NhbFR5cGVz
LmFwcGVuZChXQVNNVHlwZTo6RjMyKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9u
dW1iZXJPZkY2NExvY2FsVmFyaWFibGVzOyArK2kpCisgICAgICAgIG1fbG9jYWxUeXBlcy5hcHBl
bmQoV0FTTVR5cGU6OkY2NCk7CisKKyAgICBwYXJzZUJsb2NrU3RhdGVtZW50KGNvbnRleHQpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VMb2Nh
bFZhcmlhYmxlcygpCit7CisgICAgbV9udW1iZXJPZkkzMkxvY2FsVmFyaWFibGVzID0gMDsKKyAg
ICBtX251bWJlck9mRjMyTG9jYWxWYXJpYWJsZXMgPSAwOworICAgIG1fbnVtYmVyT2ZGNjRMb2Nh
bFZhcmlhYmxlcyA9IDA7CisKKyAgICBib29sIGhhc0ltbWVkaWF0ZTsKKyAgICBXQVNNVmFyaWFi
bGVUeXBlcyB2YXJpYWJsZVR5cGVzOworICAgIFdBU01WYXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0
ZSB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZTsKKyAgICB1aW50OF90IGltbWVkaWF0ZTsKKyAg
ICBSRUFEX1ZBUklBQkxFX1RZUEVTX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCB2YXJpYWJsZVR5cGVz
LCB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCAiQ2Fubm90IHJlYWQgdGhl
IHR5cGVzIG9mIGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAgICBpZiAoIWhhc0ltbWVkaWF0ZSkgewor
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDhfdD4odmFyaWFibGVUeXBlcykgJiBzdGF0aWNf
Y2FzdDx1aW50OF90PihXQVNNVmFyaWFibGVUeXBlczo6STMyKSkKKyAgICAgICAgICAgIFJFQURf
Q09NUEFDVF9VSU5UMzJfT1JfRkFJTChtX251bWJlck9mSTMyTG9jYWxWYXJpYWJsZXMsICJDYW5u
b3QgcmVhZCB0aGUgbnVtYmVyIG9mIGludDMyIGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhcmlhYmxlVHlwZXMpICYgc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6OkYzMikpCisgICAgICAgICAgICBSRUFEX0NPTVBBQ1Rf
VUlOVDMyX09SX0ZBSUwobV9udW1iZXJPZkYzMkxvY2FsVmFyaWFibGVzLCAiQ2Fubm90IHJlYWQg
dGhlIG51bWJlciBvZiBmbG9hdDMyIGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHZhcmlhYmxlVHlwZXMpICYgc3RhdGljX2Nhc3Q8dWludDhfdD4o
V0FTTVZhcmlhYmxlVHlwZXM6OkY2NCkpCisgICAgICAgICAgICBSRUFEX0NPTVBBQ1RfVUlOVDMy
X09SX0ZBSUwobV9udW1iZXJPZkY2NExvY2FsVmFyaWFibGVzLCAiQ2Fubm90IHJlYWQgdGhlIG51
bWJlciBvZiBmbG9hdDY0IGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
bV9udW1iZXJPZkkzMkxvY2FsVmFyaWFibGVzID0gaW1tZWRpYXRlOworICAgIHJldHVybiB0cnVl
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQoreworICAgIGJv
b2wgaGFzSW1tZWRpYXRlOworICAgIFdBU01PcFN0YXRlbWVudCBvcDsKKyAgICBXQVNNT3BTdGF0
ZW1lbnRXaXRoSW1tZWRpYXRlIG9wV2l0aEltbWVkaWF0ZTsKKyAgICB1aW50OF90IGltbWVkaWF0
ZTsKKyAgICBSRUFEX09QX1NUQVRFTUVOVF9PUl9GQUlMKGhhc0ltbWVkaWF0ZSwgb3AsIG9wV2l0
aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCAiQ2Fubm90IHJlYWQgdGhlIHN0YXRlbWVudCBvcGNvZGUu
Iik7CisgICAgaWYgKCFoYXNJbW1lZGlhdGUpIHsKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAg
ICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6U2V0TG9jYWw6CisgICAgICAgICAgICBwYXJzZVNl
dExvY2FsU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV0FTTU9wU3RhdGVtZW50OjpTZXRHbG9iYWw6CisgICAgICAgICAgICBwYXJzZVNldEdsb2Jh
bFN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOyAgICAKKyAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OlJldHVybjoKKyAgICAgICAgICAgIHBhcnNlUmV0dXJuU3RhdGVt
ZW50KGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3Rh
dGVtZW50OjpCbG9jazoKKyAgICAgICAgICAgIHBhcnNlQmxvY2tTdGF0ZW1lbnQoY29udGV4dCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OklmOgor
ICAgICAgICAgICAgcGFyc2VJZlN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6SWZFbHNlOgorICAgICAgICAgICAgcGFy
c2VJZkVsc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OldoaWxlOgorICAgICAgICAgICAgcGFyc2VXaGlsZVN0YXRl
bWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcFN0
YXRlbWVudDo6RG86CisgICAgICAgICAgICBwYXJzZURvU3RhdGVtZW50KGNvbnRleHQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpMYWJlbDoKKyAg
ICAgICAgICAgIHBhcnNlTGFiZWxTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkJyZWFrOgorICAgICAgICAgICAgcGFy
c2VCcmVha1N0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFdBU01PcFN0YXRlbWVudDo6QnJlYWtMYWJlbDoKKyAgICAgICAgICAgIHBhcnNlQnJlYWtM
YWJlbFN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdBU01PcFN0YXRlbWVudDo6Q29udGludWU6CisgICAgICAgICAgICBwYXJzZUNvbnRpbnVlU3Rh
dGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9w
U3RhdGVtZW50OjpDb250aW51ZUxhYmVsOgorICAgICAgICAgICAgcGFyc2VDb250aW51ZUxhYmVs
U3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FT
TU9wU3RhdGVtZW50OjpTd2l0Y2g6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJT
dG9yZTg6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQ4
OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmUxNjoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlV2l0aE9mZnNldDE2OgorICAgICAgICBjYXNlIFdB
U01PcFN0YXRlbWVudDo6STMyU3RvcmUzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6
OkkzMlN0b3JlV2l0aE9mZnNldDMyOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjMy
U3RvcmU6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGMzJTdG9yZVdpdGhPZmZzZXQ6
CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGNjRTdG9yZToKKyAgICAgICAgY2FzZSBX
QVNNT3BTdGF0ZW1lbnQ6OkY2NFN0b3JlV2l0aE9mZnNldDoKKyAgICAgICAgY2FzZSBXQVNNT3BT
dGF0ZW1lbnQ6OkNhbGxJbnRlcm5hbDoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkNh
bGxJbmRpcmVjdDoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkNhbGxJbXBvcnQ6Cisg
ICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZXNlIGluc3RydWN0aW9ucy4KKyAgICAg
ICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBpbnN0cnVjdGlvbi4iKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChvcFdpdGhJbW1lZGlhdGUpIHsKKyAg
ICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRpYXRlOjpTZXRMb2NhbDoKKyAgICAg
ICAgICAgIHBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoY29udGV4dCwgaW1tZWRpYXRlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGU6
OlNldEdsb2JhbDoKKyAgICAgICAgICAgIHBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KGNvbnRleHQs
IGltbWVkaWF0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBVTlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVu
dCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoQ29udGV4dCYgY29u
dGV4dCwgdWludDMyX3QgbG9jYWxJbmRleCkKK3sKKyAgICBGQUlMX0lGX0ZBTFNFKGxvY2FsSW5k
ZXggPCBtX2xvY2FsVHlwZXMuc2l6ZSgpLCAiVGhlIGxvY2FsIHZhcmlhYmxlIGluZGV4IGlzIGlu
Y29ycmVjdC4iKTsKKyAgICBXQVNNVHlwZSB0eXBlID0gbV9sb2NhbFR5cGVzW2xvY2FsSW5kZXhd
OworICAgIHBhcnNlRXhwcmVzc2lvbihjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGUodHlwZSkp
OworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICByZXR1cm4g
VU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQg
V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgdWludDMyX3QgbG9jYWxJbmRleDsKKyAgICBSRUFEX0NPTVBBQ1RfVUlOVDMy
X09SX0ZBSUwobG9jYWxJbmRleCwgIkNhbm5vdCByZWFkIHRoZSBsb2NhbCBpbmRleC4iKTsKKyAg
ICByZXR1cm4gcGFyc2VTZXRMb2NhbFN0YXRlbWVudChjb250ZXh0LCBsb2NhbEluZGV4KTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCwgdWludDMy
X3QgZ2xvYmFsSW5kZXgpCit7CisgICAgRkFJTF9JRl9GQUxTRShnbG9iYWxJbmRleCA8IG1fbW9k
dWxlLT5nbG9iYWxWYXJpYWJsZVR5cGVzKCkuc2l6ZSgpLCAiVGhlIGdsb2JhbCBpbmRleCBpcyBp
bmNvcnJlY3QuIik7CisgICAgV0FTTVR5cGUgdHlwZSA9IG1fbW9kdWxlLT5nbG9iYWxWYXJpYWJs
ZVR5cGVzKClbZ2xvYmFsSW5kZXhdOworICAgIHBhcnNlRXhwcmVzc2lvbihjb250ZXh0LCBXQVNN
RXhwcmVzc2lvblR5cGUodHlwZSkpOworICAgIFBST1BBR0FURV9FUlJPUigpOworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICByZXR1cm4gVU5VU0VEOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9u
UGFyc2VyOjpwYXJzZVNldEdsb2JhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQoreworICAg
IHVpbnQzMl90IGdsb2JhbEluZGV4OworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChn
bG9iYWxJbmRleCwgIkNhbm5vdCByZWFkIHRoZSBnbG9iYWwgaW5kZXguIik7CisgICAgcmV0dXJu
IHBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KGNvbnRleHQsIGdsb2JhbEluZGV4KTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAobV9y
ZXR1cm5UeXBlICE9IFdBU01FeHByZXNzaW9uVHlwZTo6Vm9pZCkKKyAgICAgICAgcGFyc2VFeHBy
ZXNzaW9uKGNvbnRleHQsIG1fcmV0dXJuVHlwZSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQmxv
Y2tTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1aW50MzJfdCBudW1iZXJPZlN0
YXRlbWVudHM7CisgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKG51bWJlck9mU3RhdGVt
ZW50cywgIkNhbm5vdCByZWFkIHRoZSBudW1iZXIgb2Ygc3RhdGVtZW50cy4iKTsKKyAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgbnVtYmVyT2ZTdGF0ZW1lbnRzOyArK2kpIHsKKyAgICAgICAg
cGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIFBST1BBR0FURV9FUlJPUigpOworICAg
IH0KKyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0Nv
bnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUlmU3RhdGVtZW50KENvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgcGFyc2VFeHByZXNzaW9uSTMyKGNvbnRleHQpOworICAgIFBS
T1BBR0FURV9FUlJPUigpOworICAgIHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOworICAgIFBST1BB
R0FURV9FUlJPUigpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4K
KyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRl
eHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUlmRWxzZVN0YXRlbWVudChDb250
ZXh0JiBjb250ZXh0KQoreworICAgIHBhcnNlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICBQ
Uk9QQUdBVEVfRVJST1IoKTsKKyAgICBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICBQUk9Q
QUdBVEVfRVJST1IoKTsKKyAgICBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgcmV0dXJuIFVOVVNFRDsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VXaGlsZVN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQoreworICAgIHBhcnNl
RXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICBQUk9QQUdBVEVfRVJST1IoKTsKKworICAgIG1f
YnJlYWtTY29wZURlcHRoKys7CisgICAgbV9jb250aW51ZVNjb3BlRGVwdGgrKzsKKyAgICBwYXJz
ZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICBQUk9QQUdBVEVfRVJST1IoKTsKKyAgICBtX2NvbnRp
bnVlU2NvcGVEZXB0aC0tOworICAgIG1fYnJlYWtTY29wZURlcHRoLS07CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJz
ZXI6OnBhcnNlRG9TdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBtX2JyZWFrU2Nv
cGVEZXB0aCsrOworICAgIG1fY29udGludWVTY29wZURlcHRoKys7CisgICAgcGFyc2VTdGF0ZW1l
bnQoY29udGV4dCk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAgbV9jb250aW51ZVNjb3Bl
RGVwdGgtLTsKKyAgICBtX2JyZWFrU2NvcGVEZXB0aC0tOworCisgICAgcGFyc2VFeHByZXNzaW9u
STMyKGNvbnRleHQpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4K
KyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRl
eHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUxhYmVsU3RhdGVtZW50KENvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgbV9sYWJlbERlcHRoKys7CisgICAgcGFyc2VTdGF0ZW1lbnQo
Y29udGV4dCk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAgbV9sYWJlbERlcHRoLS07Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVT
RUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNN
RnVuY3Rpb25QYXJzZXI6OnBhcnNlQnJlYWtTdGF0ZW1lbnQoQ29udGV4dCYpCit7CisgICAgRkFJ
TF9JRl9GQUxTRShtX2JyZWFrU2NvcGVEZXB0aCwgIidicmVhaycgaXMgb25seSB2YWxpZCBpbnNp
ZGUgYSBzd2l0Y2ggb3IgbG9vcCBzdGF0ZW1lbnQuIik7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNl
QnJlYWtMYWJlbFN0YXRlbWVudChDb250ZXh0JikKK3sKKyAgICB1aW50MzJfdCBsYWJlbEluZGV4
OworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChsYWJlbEluZGV4LCAiQ2Fubm90IHJl
YWQgdGhlIGxhYmVsIGluZGV4LiIpOworICAgIEZBSUxfSUZfRkFMU0UobGFiZWxJbmRleCA8IG1f
bGFiZWxEZXB0aCwgIlRoZSBsYWJlbCBpbmRleCBpcyBpbmNvcnJlY3QuIik7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQoQ29udGV4dCYpCit7CisgICAgRkFJTF9JRl9G
QUxTRShtX2NvbnRpbnVlU2NvcGVEZXB0aCwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBpbnNp
ZGUgYSBsb29wIHN0YXRlbWVudC4iKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5z
dHJ1Y3Rpb24uCisgICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRl
eHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VDb250aW51ZUxh
YmVsU3RhdGVtZW50KENvbnRleHQmKQoreworICAgIHVpbnQzMl90IGxhYmVsSW5kZXg7CisgICAg
UkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGxhYmVsSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUg
bGFiZWwgaW5kZXguIik7CisgICAgRkFJTF9JRl9GQUxTRShsYWJlbEluZGV4IDwgbV9sYWJlbERl
cHRoLCAiVGhlIGxhYmVsIGluZGV4IGlzIGluY29ycmVjdC4iKTsKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxh
dGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlRXhwcmVzc2lvbihDb250ZXh0JiBjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGUgZXhw
cmVzc2lvblR5cGUpCit7CisgICAgc3dpdGNoIChleHByZXNzaW9uVHlwZSkgeworICAgIGNhc2Ug
V0FTTUV4cHJlc3Npb25UeXBlOjpJMzI6CisgICAgICAgIHJldHVybiBwYXJzZUV4cHJlc3Npb25J
MzIoY29udGV4dCk7CisgICAgY2FzZSBXQVNNRXhwcmVzc2lvblR5cGU6OkYzMjoKKyAgICBjYXNl
IFdBU01FeHByZXNzaW9uVHlwZTo6RjY0OgorICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBlOjpW
b2lkOgorICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZXNlIGluc3RydWN0aW9ucy4KKyAg
ICAgICAgRkFJTF9XSVRIX01FU1NBR0UoIlVuc3VwcG9ydGVkIGluc3RydWN0aW9uLiIpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBX
QVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQor
eworICAgIGJvb2wgaGFzSW1tZWRpYXRlOworICAgIFdBU01PcEV4cHJlc3Npb25JMzIgb3A7Cisg
ICAgV0FTTU9wRXhwcmVzc2lvbkkzMldpdGhJbW1lZGlhdGUgb3BXaXRoSW1tZWRpYXRlOworICAg
IHVpbnQ4X3QgaW1tZWRpYXRlOworICAgIFJFQURfT1BfRVhQUkVTU0lPTl9JMzJfT1JfRkFJTCho
YXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwgIkNhbm5vdCByZWFk
IHRoZSBpbnQzMiBleHByZXNzaW9uIG9wY29kZS4iKTsKKyAgICBpZiAoIWhhc0ltbWVkaWF0ZSkg
eworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6Q29uc3RhbnRQb29sSW5kZXg6CisgICAgICAgICAgICByZXR1cm4gcGFyc2VDb25zdGFudFBv
b2xJbmRleEV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6SW1tZWRpYXRlOgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhw
cmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpH
ZXRMb2NhbDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHZXRHbG9iYWw6Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U2V0TG9jYWw6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6U2V0R2xvYmFsOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJl
c3Npb25JMzI6OlNMb2FkODoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9h
ZFdpdGhPZmZzZXQ4OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVMb2FkODoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTG9hZFdpdGhPZmZzZXQ4OgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2FkMTY6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6U0xvYWRXaXRoT2Zmc2V0MTY6CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6VUxvYWQxNjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpVTG9hZFdpdGhPZmZzZXQxNjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpM
b2FkMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9hZFdpdGhPZmZzZXQz
MjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTg6CisgICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmVXaXRoT2Zmc2V0ODoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTE2OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Np
b25JMzI6OlN0b3JlV2l0aE9mZnNldDE2OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OlN0b3JlMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmVXaXRo
T2Zmc2V0MzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q2FsbEludGVybmFs
OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNhbGxJbmRpcmVjdDoKKyAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDYWxsSW1wb3J0OgorICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6OkNvbmRpdGlvbmFsOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJl
c3Npb25JMzI6OkNvbW1hOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkZyb21G
MzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RnJvbUY2NDoKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOZWdhdGU6CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6QWRkOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN1YjoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpNdWw6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6U0RpdjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpVRGl2OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNNb2Q6CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VU1vZDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpCaXROb3Q6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0
T3I6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0QW5kOgorICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdFhvcjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpMZWZ0U2hpZnQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
QXJpdGhtZXRpY1JpZ2h0U2hpZnQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
TG9naWNhbFJpZ2h0U2hpZnQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q291
bnRMZWFkaW5nWmVyb3M6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9naWNh
bE5vdDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpFcXVhbEkzMjoKKyAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpFcXVhbEYzMjoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpFcXVhbEY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9u
STMyOjpOb3RFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOb3RF
cXVhbEYzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOb3RFcXVhbEY2NDoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTGVzc1RoYW5JMzI6CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxlc3NUaGFuSTMyOgorICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6Okxlc3NUaGFuRjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJl
c3Npb25JMzI6Okxlc3NUaGFuRjY0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OlNMZXNzVGhhbk9yRXF1YWxJMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
VUxlc3NUaGFuT3JFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpM
ZXNzVGhhbk9yRXF1YWxGMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TGVz
c1RoYW5PckVxdWFsRjY0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNHcmVh
dGVyVGhhbkkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVR3JlYXRlclRo
YW5JMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRlclRoYW5GMzI6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRlclRoYW5GNjQ6CisgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0dyZWF0ZXJUaGFuT3JFcXVhbEkzMjoKKyAg
ICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVR3JlYXRlclRoYW5PckVxdWFsSTMyOgor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkdyZWF0ZXJUaGFuT3JFcXVhbEYzMjoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHcmVhdGVyVGhhbk9yRXF1YWxGNjQ6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U01pbjoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpVTWluOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OlNNYXg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VU1heDoKKyAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpBYnM6CisgICAgICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoZXNlIGluc3RydWN0aW9ucy4KKyAgICAgICAgICAgIEZBSUxfV0lUSF9NRVNT
QUdFKCJVbnN1cHBvcnRlZCBpbnN0cnVjdGlvbi4iKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgc3dpdGNoIChvcFdpdGhJbW1lZGlhdGUpIHsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyV2l0aEltbWVkaWF0ZTo6Q29uc3RhbnRQb29sSW5kZXg6CisgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VDb25zdGFudFBvb2xJbmRleEV4cHJlc3Npb25JMzIoY29udGV4dCwgaW1tZWRp
YXRlKTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZTo6SW1t
ZWRpYXRlOgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihj
b250ZXh0LCBpbW1lZGlhdGUpOworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzJXaXRo
SW1tZWRpYXRlOjpHZXRMb2NhbDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cyBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRl
ZCBpbnN0cnVjdGlvbi4iKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VDb25zdGFudFBvb2xJbmRleEV4cHJlc3Npb25JMzIoQ29udGV4dCYsIHVpbnQzMl90
IGNvbnN0YW50UG9vbEluZGV4KQoreworICAgIEZBSUxfSUZfRkFMU0UoY29uc3RhbnRQb29sSW5k
ZXggPCBtX21vZHVsZS0+aTMyQ29uc3RhbnRzKCkuc2l6ZSgpLCAiVGhlIGNvbnN0YW50IHBvb2wg
aW5kZXggaXMgaW5jb3JyZWN0LiIpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0
cnVjdGlvbi4KKyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4KK0NvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VDb25zdGFudFBv
b2xJbmRleEV4cHJlc3Npb25JMzIoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1aW50MzJfdCBj
b25zdGFudFBvb2xJbmRleDsKKyAgICBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwoY29uc3Rh
bnRQb29sSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgY29uc3RhbnQgaW5kZXguIik7CisgICAgcmV0
dXJuIHBhcnNlQ29uc3RhbnRQb29sSW5kZXhFeHByZXNzaW9uSTMyKGNvbnRleHQsIGNvbnN0YW50
UG9vbEluZGV4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVz
c2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250
ZXh0JiwgdWludDMyX3QpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGluc3RydWN0
aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0Pgor
Q29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUltbWVkaWF0ZUV4cHJl
c3Npb25JMzIoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1aW50MzJfdCBpbW1lZGlhdGU7Cisg
ICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGltbWVkaWF0ZSwgIkNhbm5vdCByZWFkIHRo
ZSBpbW1lZGlhdGUuIik7CisgICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihj
b250ZXh0LCBpbW1lZGlhdGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRjNTM0YzJkNWQwMDllMmE0NjBkODI3MmI5
OWRmMTZjMmQ0ZGQ3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXQVNNRnVuY3Rpb25QYXJz
ZXJfaAorI2RlZmluZSBXQVNNRnVuY3Rpb25QYXJzZXJfaAorCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldBU01Db25zdGFudHMu
aCIKKyNpbmNsdWRlICJXQVNNUmVhZGVyLmgiCisKKyNkZWZpbmUgQ29udGV4dEV4cHJlc3Npb24g
dHlwZW5hbWUgQ29udGV4dDo6RXhwcmVzc2lvbgorI2RlZmluZSBDb250ZXh0U3RhdGVtZW50IHR5
cGVuYW1lIENvbnRleHQ6OlN0YXRlbWVudAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29k
ZUJsb2NrOworY2xhc3MgSlNXQVNNTW9kdWxlOworY2xhc3MgVk07CisKK2NsYXNzIFdBU01GdW5j
dGlvblBhcnNlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgY2hlY2tTeW50YXgoSlNXQVNN
TW9kdWxlKiwgY29uc3QgU291cmNlQ29kZSYsIHNpemVfdCBmdW5jdGlvbkluZGV4LCB1bnNpZ25l
ZCBzdGFydE9mZnNldEluU291cmNlLCB1bnNpZ25lZCYgZW5kT2Zmc2V0SW5Tb3VyY2UsIFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKK3ByaXZhdGU6CisgICAgV0FTTUZ1bmN0aW9uUGFyc2VyKEpTV0FT
TU1vZHVsZSogbW9kdWxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIHNpemVfdCBmdW5jdGlv
bkluZGV4KQorICAgICAgICA6IG1fbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgLCBtX3JlYWRlcihz
dGF0aWNfY2FzdDxXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyKj4oc291cmNlLnByb3ZpZGVyKCkp
LT5kYXRhKCkpCisgICAgICAgICwgbV9mdW5jdGlvbkluZGV4KGZ1bmN0aW9uSW5kZXgpCisgICAg
ICAgICwgbV9icmVha1Njb3BlRGVwdGgoMCkKKyAgICAgICAgLCBtX2NvbnRpbnVlU2NvcGVEZXB0
aCgwKQorICAgICAgICAsIG1fbGFiZWxEZXB0aCgwKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGV4dD4gYm9vbCBwYXJzZUZ1bmN0aW9uKENvbnRleHQmKTsKKyAgICBi
b29sIHBhcnNlTG9jYWxWYXJpYWJsZXMoKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0
PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldExvY2FsU3RhdGVtZW50
KENvbnRleHQmLCB1aW50MzJfdCBsb2NhbEluZGV4KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29u
dGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQmKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldEds
b2JhbFN0YXRlbWVudChDb250ZXh0JiwgdWludDMyX3QgZ2xvYmFsSW5kZXgpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlU2V0R2xvYmFsU3RhdGVt
ZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRl
bWVudCBwYXJzZVN0b3JlU3RhdGVtZW50KENvbnRleHQmLCBXQVNNT3BTdGF0ZW1lbnQpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlQ2FsbEludGVy
bmFsU3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29u
dGV4dFN0YXRlbWVudCBwYXJzZUNhbGxJbmRpcmVjdFN0YXRlbWVudChDb250ZXh0Jik7CisgICAg
dGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VDYWxsSW1wb3J0
U3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4
dFN0YXRlbWVudCBwYXJzZVJldHVyblN0YXRlbWVudChDb250ZXh0Jik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VCbG9ja1N0YXRlbWVudChDb250
ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFy
c2VJZlN0YXRlbWVudChDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENv
bnRleHRTdGF0ZW1lbnQgcGFyc2VJZkVsc2VTdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlV2hpbGVTdGF0ZW1lbnQo
Q29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50
IHBhcnNlRG9TdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0
PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlTGFiZWxTdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlQnJlYWtTdGF0ZW1l
bnQoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVt
ZW50IHBhcnNlQnJlYWtMYWJlbFN0YXRlbWVudChDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNs
YXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VDb250aW51ZVN0YXRlbWVudChDb250
ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFy
c2VDb250aW51ZUxhYmVsU3RhdGVtZW50KENvbnRleHQmKTsKKworICAgIHRlbXBsYXRlIDxjbGFz
cyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUV4cHJlc3Npb24oQ29udGV4dCYsIFdB
U01FeHByZXNzaW9uVHlwZSk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4
dEV4cHJlc3Npb24gcGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VDb25zdGFudFBvb2xJbmRleEV4
cHJlc3Npb25JMzIoQ29udGV4dCYsIHVpbnQzMl90IGNvbnN0YW50SW5kZXgpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUNvbnN0YW50UG9vbElu
ZGV4RXhwcmVzc2lvbkkzMihDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+
IENvbnRleHRFeHByZXNzaW9uIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250ZXh0Jiwg
dWludDMyX3QgaW1tZWRpYXRlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4
dEV4cHJlc3Npb24gcGFyc2VJbW1lZGlhdGVFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKKworICAg
IEpTV0FTTU1vZHVsZSogbV9tb2R1bGU7CisgICAgV0FTTVJlYWRlciBtX3JlYWRlcjsKKyAgICBz
aXplX3QgbV9mdW5jdGlvbkluZGV4OworICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKKworICAg
IFdBU01FeHByZXNzaW9uVHlwZSBtX3JldHVyblR5cGU7CisgICAgVmVjdG9yPFdBU01UeXBlPiBt
X2xvY2FsVHlwZXM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkkzMkxvY2FsVmFyaWFibGVzOwor
ICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZGMzJMb2NhbFZhcmlhYmxlczsKKyAgICB1aW50MzJfdCBt
X251bWJlck9mRjY0TG9jYWxWYXJpYWJsZXM7CisKKyAgICB1bnNpZ25lZCBtX2JyZWFrU2NvcGVE
ZXB0aDsKKyAgICB1bnNpZ25lZCBtX2NvbnRpbnVlU2NvcGVEZXB0aDsKKyAgICB1bnNpZ25lZCBt
X2xhYmVsRGVwdGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJBU1NFTUJMWSkKKworI2VuZGlmIC8vIFdBU01GdW5jdGlvblBhcnNlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDRhYTRkZTdkYTNlYjg3MjI3YjY2NGEzMmVjYTEyNDYzYjBhYTQyZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlv
blN5bnRheENoZWNrZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2Vy
X2gKKyNkZWZpbmUgV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcl9oCisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXQVNNRnVuY3Rpb25TeW50YXhD
aGVja2VyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uOworICAgIHR5cGVk
ZWYgaW50IFN0YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZW5kaWYgLy8gV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWFnaWNOdW1i
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NYWdpY051bWJlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWRkMmZhMjdmMjhiM2ZhMGIzYmNiOTI3NmRkOTc1
MDljNmEwNjQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NYWdpY051bWJlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV0FTTU1hZ2ljTnVtYmVyX2gKLSNkZWZpbmUgV0FTTU1hZ2ljTnVt
YmVyX2gKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0
YXRpYyBjb25zdCB1aW50MzJfdCB3YXNtTWFnaWNOdW1iZXIgPSAweDZkNzM2MTc3OwotCi19IC8v
IG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotI2VuZGlm
IC8vIFdBU01NYWdpY051bWJlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDIzMTQ4ZTI2NDEyNTQ1MTlmYmZjMTc3ODdhZWMxMjVm
ZjM4MDI4ZTIuLjhmMzBhOWY5MWZjYzdkMGQ0NGU2NmE5NjkxNmQwNzdiZTJiNDJjMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCkBAIC0z
MSw3ICszMSw4IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV0FTTU1v
ZHVsZS5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJXQVNNTWFnaWNO
dW1iZXIuaCIKKyNpbmNsdWRlICJXQVNNQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiV0FTTUZ1bmN0
aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2RlZmluZSBGQUlM
X1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpIGRvIHsgbV9lcnJvck1lc3NhZ2UgPSBlcnJvck1l
c3NhZ2U7IHJldHVybjsgfSB3aGlsZSAoMCkKQEAgLTQ5LDcgKzUwLDggQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBXQVNNTW9kdWxlUGFyc2VyOjpXQVNNTW9kdWxlUGFyc2VyKGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSkKLSAgICA6IG1fcmVhZGVyKHN0YXRpY19jYXN0PFdlYkFzc2VtYmx5U291cmNl
UHJvdmlkZXIqPihzb3VyY2UucHJvdmlkZXIoKSktPmRhdGEoKSkKKyAgICA6IG1fc291cmNlKHNv
dXJjZSkKKyAgICAsIG1fcmVhZGVyKHN0YXRpY19jYXN0PFdlYkFzc2VtYmx5U291cmNlUHJvdmlk
ZXIqPihzb3VyY2UucHJvdmlkZXIoKSktPmRhdGEoKSkKIHsKIH0KIApAQCAtMjQ3LDI1ICsyNDks
MjIgQEAgdm9pZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uUG9pbnRlclRhYmxlU2Vj
dGlvbigpCiAKIHZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25T
ZWN0aW9uKCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbW9kdWxlLT5mdW5jdGlv
bkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25EZWZp
bml0aW9uKCk7CisgICAgZm9yIChzaXplX3QgZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5k
ZXggPCBtX21vZHVsZS0+ZnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsrZnVuY3Rpb25J
bmRleCkgeworICAgICAgICBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbihmdW5jdGlvbkluZGV4KTsK
ICAgICAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CiAgICAgfQogfQogCi12b2lkIFdBU01Nb2R1bGVQ
YXJzZXI6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCkKK3ZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6
cGFyc2VGdW5jdGlvbkRlZmluaXRpb24oc2l6ZV90IGZ1bmN0aW9uSW5kZXgpCiB7Ci0gICAgLy8g
RklYTUU6IFN1cHBvcnQgYW55IGZ1bmN0aW9ucy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NzczOAotICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IGZ1
bmN0aW9ucyB0aGF0IGhhdmUgInJldHVybiAwOyIgYXMgdGhlaXIgb25seSBzdGF0ZW1lbnQuCi0g
ICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNvbnNpc3Qgb2YgZXhhY3RseSA0IGJ5dGVzLCBpLmUuCi0g
ICAgLy8gMS4gVGhlIG51bWJlciBvZiBsb2NhbCB2YXJpYWJsZXMgKDApIFsweDgwXQotICAgIC8v
IDIuIFRoZSBudW1iZXIgb2Ygc3RhdGVtZW50cyAoMSkgWzB4MDFdCi0gICAgLy8gMy4gVGhlIHJl
dHVybiBzdGF0ZW1lbnQgWzB4MGZdCi0gICAgLy8gNC4gVGhlIGltbWVkaWF0ZSBleHByZXNzaW9u
ICgwKSBbMHhhMF0KLSAgICB1aW50MzJfdCBmdW5jdGlvbkRlZmluaXRpb25CeXRlczsKLSAgICBS
RUFEX1VJTlQzMl9PUl9GQUlMKGZ1bmN0aW9uRGVmaW5pdGlvbkJ5dGVzLCAiQ2Fubm90IHJlYWQg
dGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uIik7Ci0gICAgRkFJTF9JRl9GQUxTRShmdW5jdGlvbkRl
ZmluaXRpb25CeXRlcyA9PSAweGEwMGYwMTgwLCAiT25seSBmdW5jdGlvbnMgdGhhdCBoYXZlIFwi
cmV0dXJuIDA7XCIgIgotICAgICAgICAiYXMgdGhlaXIgb25seSBzdGF0ZW1lbnQgYXJlIHN1cHBv
cnRlZCBhdCB0aGUgbW9tZW50LiIpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0SW5Tb3VyY2Ug
PSBtX3JlYWRlci5vZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXRJblNvdXJjZTsKKyAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIGlmICghV0FTTUZ1bmN0aW9uUGFyc2VyOjpjaGVj
a1N5bnRheChtX21vZHVsZS5nZXQoKSwgbV9zb3VyY2UsIGZ1bmN0aW9uSW5kZXgsIHN0YXJ0T2Zm
c2V0SW5Tb3VyY2UsIGVuZE9mZnNldEluU291cmNlLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAg
IG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fcmVhZGVyLnNldE9mZnNldChlbmRPZmZzZXRJblNvdXJjZSk7CiB9CiAKIHZvaWQgV0FT
TU1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnRTZWN0aW9uKCkKQEAgLTMwMSw4ICszMDAsOCBAQCB2
b2lkIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRXhwb3J0U2VjdGlvbigpCiAKIEpTV0FTTU1vZHVs
ZSogcGFyc2VXZWJBc3NlbWJseShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgV0FTTU1vZHVsZVBhcnNlciBXQVNN
TW9kdWxlUGFyc2VyKHNvdXJjZSk7Ci0gICAgcmV0dXJuIFdBU01Nb2R1bGVQYXJzZXIucGFyc2Uo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBlcnJvck1lc3NhZ2UpOwor
ICAgIFdBU01Nb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJjZSk7CisgICAgcmV0dXJuIG1v
ZHVsZVBhcnNlci5wYXJzZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGVycm9yTWVzc2FnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCmluZGV4IDVlYzVmZDM4ODVkMmUwMjBj
YjlmNWJkNGRmYTJiNjU2ZDM3OTA5ZDcuLjMwZjFhNTY1OTg4YzYwMTRiNTQ1ZmMxYzZjMjZjMDkz
ZDhmYjU0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1
bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFy
c2VyLmgKQEAgLTU0LDkgKzU0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUZ1bmN0aW9u
RGVjbGFyYXRpb25TZWN0aW9uKCk7CiAgICAgdm9pZCBwYXJzZUZ1bmN0aW9uUG9pbnRlclRhYmxl
U2VjdGlvbigpOwogICAgIHZvaWQgcGFyc2VGdW5jdGlvbkRlZmluaXRpb25TZWN0aW9uKCk7Ci0g
ICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbigpOworICAgIHZvaWQgcGFyc2VGdW5jdGlv
bkRlZmluaXRpb24oc2l6ZV90IGZ1bmN0aW9uSW5kZXgpOwogICAgIHZvaWQgcGFyc2VFeHBvcnRT
ZWN0aW9uKCk7CiAKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBtX3NvdXJjZTsKICAgICBXQVNNUmVh
ZGVyIG1fcmVhZGVyOwogICAgIFN0cm9uZzxKU1dBU01Nb2R1bGU+IG1fbW9kdWxlOwogICAgIFN0
cmluZyBtX2Vycm9yTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01SZWFkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRl
ci5jcHAKaW5kZXggMjhlMTM1N2ExMzVmNDI3MjUzZDQzYjk1OTNmNDIyODdkY2RlMWI5Ni4uNDg1
NzZiYjQ3MzZiMTNkOTYxYzNmZTRlZmM1ZWY0NmEwZjNkM2I4MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTVJlYWRlci5jcHAKQEAgLTIxLDYgKzIxLDIzIEBACiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisg
KgorICogQ29weXJpZ2h0IChjKSAyMDE1IGJ5IHRoZSByZXBvc2l0b3J5IGF1dGhvcnMgb2YKKyAq
IFdlYkFzc2VtYmx5L3BvbHlmaWxsLXByb3RvdHlwZS0xLgorICoKKyAqIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICog
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKQEAgLTk3LDYgKzExNCwyOCBAQCBib29sIFdBU01SZWFkZXI6OnJlYWRDb21wYWN0VUlu
dDMyKHVpbnQzMl90JiByZXN1bHQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFdBU01S
ZWFkZXI6OnJlYWRDb21wYWN0SW50MzIodWludDMyX3QmIHJlc3VsdCkKK3sKKyAgICB1aW50MzJf
dCBzdW0gPSAwOworICAgIHVuc2lnbmVkIHNoaWZ0ID0gMDsKKyAgICBkbyB7CisgICAgICAgIENI
RUNLX1JFQUQoMSk7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9ICptX2N1cnNvcisrOworICAgICAg
ICBpZiAoYnl0ZSA8IDB4ODApIHsKKyAgICAgICAgICAgIHN1bSB8PSBieXRlIDw8IHNoaWZ0Owor
ICAgICAgICAgICAgaW50IHNpZ25FeHRlbmQgPSAoMzIgLSA3KSAtIHNoaWZ0OworICAgICAgICAg
ICAgaWYgKHNpZ25FeHRlbmQgPiAwKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGludDMyX3Qo
c3VtKSA8PCBzaWduRXh0ZW5kID4+IHNpZ25FeHRlbmQ7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gaW50MzJfdChzdW0pOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgc3VtIHw9IChieXRlICYgZmlyc3RTZXZlbkJpdHNNYXNr
KSA8PCBzaGlmdDsKKyAgICAgICAgc2hpZnQgKz0gNzsKKyAgICB9IHdoaWxlIChzaGlmdCA8IDM1
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgV0FTTVJlYWRlcjo6cmVhZFN0cmluZyhT
dHJpbmcmIHJlc3VsdCkKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0xMTMsMTcg
KzE1MiwxNyBAQCBib29sIFdBU01SZWFkZXI6OnJlYWRTdHJpbmcoU3RyaW5nJiByZXN1bHQpCiAK
IGJvb2wgV0FTTVJlYWRlcjo6cmVhZFR5cGUoV0FTTVR5cGUmIHJlc3VsdCkKIHsKLSAgICByZXR1
cm4gcmVhZEJ5dGU8V0FTTVR5cGU+KHJlc3VsdCwgKHVpbnQ4X3QpV0FTTVR5cGU6Ok51bWJlck9m
VHlwZXMpOworICAgIHJldHVybiByZWFkQnl0ZTxXQVNNVHlwZT4ocmVzdWx0LCBzdGF0aWNfY2Fz
dDx1aW50OF90PihXQVNNVHlwZTo6TnVtYmVyT2ZUeXBlcykpOwogfQogCiBib29sIFdBU01SZWFk
ZXI6OnJlYWRFeHByZXNzaW9uVHlwZShXQVNNRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKLSAg
ICByZXR1cm4gcmVhZEJ5dGU8V0FTTUV4cHJlc3Npb25UeXBlPihyZXN1bHQsICh1aW50OF90KVdB
U01FeHByZXNzaW9uVHlwZTo6TnVtYmVyT2ZFeHByZXNzaW9uVHlwZXMpOworICAgIHJldHVybiBy
ZWFkQnl0ZTxXQVNNRXhwcmVzc2lvblR5cGU+KHJlc3VsdCwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
V0FTTUV4cHJlc3Npb25UeXBlOjpOdW1iZXJPZkV4cHJlc3Npb25UeXBlcykpOwogfQogCiBib29s
IFdBU01SZWFkZXI6OnJlYWRFeHBvcnRGb3JtYXQoV0FTTUV4cG9ydEZvcm1hdCYgcmVzdWx0KQog
ewotICAgIHJldHVybiByZWFkQnl0ZTxXQVNNRXhwb3J0Rm9ybWF0PihyZXN1bHQsICh1aW50OF90
KVdBU01FeHBvcnRGb3JtYXQ6Ok51bWJlck9mRXhwb3J0Rm9ybWF0cyk7CisgICAgcmV0dXJuIHJl
YWRCeXRlPFdBU01FeHBvcnRGb3JtYXQ+KHJlc3VsdCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FT
TUV4cG9ydEZvcm1hdDo6TnVtYmVyT2ZFeHBvcnRGb3JtYXRzKSk7CiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBUPiBib29sIFdBU01SZWFkZXI6OnJlYWRCeXRlKFQmIHJlc3VsdCwgdWludDhfdCBudW1i
ZXJPZlZhbHVlcykKQEAgLTEzNiw2ICsxNzUsNTAgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wg
V0FTTVJlYWRlcjo6cmVhZEJ5dGUoVCYgcmVzdWx0LCB1aW50OF90IG51bWJlck9mVmFsdWVzKQog
ICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdBU01SZWFkZXI6OnJlYWRPcFN0YXRlbWVudChi
b29sJiBoYXNJbW1lZGlhdGUsIFdBU01PcFN0YXRlbWVudCYgb3AsIFdBU01PcFN0YXRlbWVudFdp
dGhJbW1lZGlhdGUmIG9wV2l0aEltbWVkaWF0ZSwgdWludDhfdCYgaW1tZWRpYXRlKQoreworICAg
IHJldHVybiByZWFkT3AoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlh
dGUsCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01PcFN0YXRlbWVudDo6TnVtYmVy
T2ZXQVNNT3BTdGF0ZW1lbnRzKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTU9w
U3RhdGVtZW50V2l0aEltbWVkaWF0ZTo6TnVtYmVyT2ZXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRp
YXRlcykpOworfQorCitib29sIFdBU01SZWFkZXI6OnJlYWRPcEV4cHJlc3Npb25JMzIoYm9vbCYg
aGFzSW1tZWRpYXRlLCBXQVNNT3BFeHByZXNzaW9uSTMyJiBvcCwgV0FTTU9wRXhwcmVzc2lvbkkz
MldpdGhJbW1lZGlhdGUmIG9wV2l0aEltbWVkaWF0ZSwgdWludDhfdCYgaW1tZWRpYXRlKQorewor
ICAgIHJldHVybiByZWFkT3AoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1l
ZGlhdGUsCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01PcEV4cHJlc3Npb25JMzI6
Ok51bWJlck9mV0FTTU9wRXhwcmVzc2lvbkkzMnMpLAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50
OF90PihXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZTo6TnVtYmVyT2ZXQVNNT3BFeHBy
ZXNzaW9uSTMyV2l0aEltbWVkaWF0ZXMpKTsKK30KKworYm9vbCBXQVNNUmVhZGVyOjpyZWFkVmFy
aWFibGVUeXBlcyhib29sJiBoYXNJbW1lZGlhdGUsIFdBU01WYXJpYWJsZVR5cGVzJiB2YXJpYWJs
ZVR5cGVzLCBXQVNNVmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUmIHZhcmlhYmxlVHlwZXNXaXRo
SW1tZWRpYXRlLCB1aW50OF90JiBpbW1lZGlhdGUpCit7CisgICAgcmV0dXJuIHJlYWRPcChoYXNJ
bW1lZGlhdGUsIHZhcmlhYmxlVHlwZXMsIHZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlLCBpbW1l
ZGlhdGUsCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYXJpYWJsZVR5cGVzOjpO
dW1iZXJPZlZhcmlhYmxlVHlwZXMpLAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNN
VmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGU6Ok51bWJlck9mVmFyaWFibGVUeXBlc1dpdGhJbW1l
ZGlhdGVzKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBUV2l0aEltbWVkaWF0ZT4K
K2Jvb2wgV0FTTVJlYWRlcjo6cmVhZE9wKGJvb2wmIGhhc0ltbWVkaWF0ZSwgVCYgb3AsIFRXaXRo
SW1tZWRpYXRlJiBvcFdpdGhJbW1lZGlhdGUsIHVpbnQ4X3QmIGltbWVkaWF0ZSwgdWludDhfdCBu
dW1iZXJPZlZhbHVlcywgdWludDhfdCBudW1iZXJPZlZhbHVlc1dpdGhJbW1lZGlhdGUpCit7Cisg
ICAgQ0hFQ0tfUkVBRCgxKTsKKyAgICB1aW50OF90IGJ5dGUgPSAqbV9jdXJzb3IrKzsKKworICAg
IGlmICghKGJ5dGUgJiBoYXNJbW1lZGlhdGVJbk9wRmxhZykpIHsKKyAgICAgICAgaWYgKGJ5dGUg
Pj0gbnVtYmVyT2ZWYWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGhh
c0ltbWVkaWF0ZSA9IGZhbHNlOworICAgICAgICBvcCA9IFQoYnl0ZSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHVpbnQ4X3QgYnl0ZVdpdGhvdXRJbW1lZGlhdGUgPSAoYnl0
ZSA+PiBpbW1lZGlhdGVCaXRzKSAmIChvcFdpdGhJbW1lZGlhdGVMaW1pdCAtIDEpOworICAgIGlm
IChieXRlV2l0aG91dEltbWVkaWF0ZSA+PSBudW1iZXJPZlZhbHVlc1dpdGhJbW1lZGlhdGUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBoYXNJbW1lZGlhdGUgPSB0cnVlOworICAgIG9wV2l0
aEltbWVkaWF0ZSA9IFRXaXRoSW1tZWRpYXRlKGJ5dGVXaXRob3V0SW1tZWRpYXRlKTsKKyAgICBp
bW1lZGlhdGUgPSBieXRlICYgKGltbWVkaWF0ZUxpbWl0IC0gMSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5oCmluZGV4IDc2ZWEyNmI2ZGY3
YmY4NTA4NWExNmVhMTMzODgzMGE5M2YzNDJjMjEuLmE2YWRkY2I3MzY1NGFmN2I0Nzc4N2RjOWRl
YTUyN2IyMTRiYTRmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01SZWFkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUg
IldBU01Db25zdGFudHMuaCIKICNpbmNsdWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC00MSwxOSArNDIsMjcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
KyAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvciAtIG1fYnVmZmVy
LmRhdGEoKTsgfQorICAgIHZvaWQgc2V0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgeyBtX2N1cnNv
ciA9IG1fYnVmZmVyLmRhdGEoKSArIG9mZnNldDsgfQorCiAgICAgYm9vbCByZWFkVUludDMyKHVp
bnQzMl90JiByZXN1bHQpOwogICAgIGJvb2wgcmVhZEZsb2F0KGZsb2F0JiByZXN1bHQpOwogICAg
IGJvb2wgcmVhZERvdWJsZShkb3VibGUmIHJlc3VsdCk7CiAgICAgYm9vbCByZWFkQ29tcGFjdFVJ
bnQzMih1aW50MzJfdCYgcmVzdWx0KTsKKyAgICBib29sIHJlYWRDb21wYWN0SW50MzIodWludDMy
X3QmIHJlc3VsdCk7CiAgICAgYm9vbCByZWFkU3RyaW5nKFN0cmluZyYgcmVzdWx0KTsKICAgICBi
b29sIHJlYWRUeXBlKFdBU01UeXBlJiByZXN1bHQpOwogICAgIGJvb2wgcmVhZEV4cHJlc3Npb25U
eXBlKFdBU01FeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBib29sIHJlYWRFeHBvcnRGb3Jt
YXQoV0FTTUV4cG9ydEZvcm1hdCYgcmVzdWx0KTsKKyAgICBib29sIHJlYWRPcFN0YXRlbWVudChi
b29sJiBoYXNJbW1lZGlhdGUsIFdBU01PcFN0YXRlbWVudCYsIFdBU01PcFN0YXRlbWVudFdpdGhJ
bW1lZGlhdGUmLCB1aW50OF90JiBpbW1lZGlhdGUpOworICAgIGJvb2wgcmVhZE9wRXhwcmVzc2lv
bkkzMihib29sJiBoYXNJbW1lZGlhdGUsIFdBU01PcEV4cHJlc3Npb25JMzImLCBXQVNNT3BFeHBy
ZXNzaW9uSTMyV2l0aEltbWVkaWF0ZSYsIHVpbnQ4X3QmIGltbWVkaWF0ZSk7CisgICAgYm9vbCBy
ZWFkVmFyaWFibGVUeXBlcyhib29sJiBoYXNJbW1lZGlhdGUsIFdBU01WYXJpYWJsZVR5cGVzJiwg
V0FTTVZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlJiwgdWludDhfdCYgaW1tZWRpYXRlKTsKIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgZmlyc3RTZXZlbkJpdHNNYXNrID0g
MHg3ZjsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIHJlYWRCeXRlKFQmIHJlc3VsdCwg
dWludDhfdCBudW1iZXJPZlZhbHVlcyk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFRX
aXRoSW1tZWRpYXRlPiBib29sIHJlYWRPcChib29sJiBoYXNJbW1lZGlhdGUsIFQmLCBUV2l0aElt
bWVkaWF0ZSYsIHVpbnQ4X3QmIGltbWVkaWF0ZSwgdWludDhfdCBudW1iZXJPZlZhbHVlcywgdWlu
dDhfdCBudW1iZXJPZlZhbHVlc1dpdGhJbW1lZGlhdGUpOwogCiAgICAgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBtX2J1ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBtX2N1cnNvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259561</attachid>
            <date>2015-08-20 19:09:43 -0700</date>
            <delta_ts>2015-08-20 19:19:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147738-20150820190938.patch</filename>
            <type>text/plain</type>
            <size>58346</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4Njk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTgwNTRiMmUyYjVjMmVlYzg5ZTNiM2JmNmQzZjQ0ZjljZDBhNDcxLi43YmJlZWMwY2M2ODljYWEx
NDA4ZmI5YjBkMzM3NDY4NTk5YWU0NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxNS0wOC0yMCAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2VyIGZvciBXZWJBc3NlbWJseSBmaWxlcyBwcm9k
dWNlZCBieSBwYWNrLWFzbWpzCisgICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1i
bHkvcG9seWZpbGwtcHJvdG90eXBlLTE+LiBUaGlzIHBhdGNoIHBhcnNlcyBvbmx5CisgICAgICAg
IHNvbWUgaW5zdHJ1Y3Rpb25zIG9uIHN0YXRlbWVudHMgYW5kIGludDMyIGV4cHJlc3Npb25zLiBQ
YXJzaW5nIG9mIHRoZSByZXN0CisgICAgICAgIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gc3Vic2Vx
dWVudCBwYXRjaGVzLiBUaGUgaW5zdHJ1Y3Rpb24gbGlzdHMgaW4gV0FTTUNvbnN0YW50cy5oCisg
ICAgICAgIGFyZSBzbGlnaHRseSBtb2RpZmllZCBmcm9tCisgICAgICAgIDxodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvcG9seWZpbGwtcHJvdG90eXBlLTEvYmxvYi9tYXN0ZXIvc3JjL3No
YXJlZC5oPi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdh
c20vV0FTTUNvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUxvY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVu
Y3Rpb25QYXJzZXI6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VDb25zdGFudFBvb2xJbmRleEV4cHJlc3Npb25JMzIpOgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMik6Cisg
ICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OldBU01GdW5jdGlvblBhcnNlcjo6V0FTTUZ1bmN0aW9uUGFyc2VyKToKKyAgICAgICAgKiB3YXNt
L1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01NYWdpY051bWJlci5oLgorICAgICAgICAqIHdhc20vV0FTTU1vZHVs
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJzZXI6OldBU01Nb2R1bGVQ
YXJzZXIpOgorICAgICAgICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVm
aW5pdGlvblNlY3Rpb24pOgorICAgICAgICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChKU0M6OnBhcnNlV2ViQXNzZW1ibHkpOgorICAg
ICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5oOgorICAgICAgICAqIHdhc20vV0FTTVJlYWRl
ci5jcHA6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRDb21wYWN0SW50MzIpOgorICAg
ICAgICAoSlNDOjpXQVNNUmVhZGVyOjpyZWFkVHlwZSk6CisgICAgICAgIChKU0M6OldBU01SZWFk
ZXI6OnJlYWRFeHByZXNzaW9uVHlwZSk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRF
eHBvcnRGb3JtYXQpOgorICAgICAgICAoSlNDOjpXQVNNUmVhZGVyOjpyZWFkT3BTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpXQVNNUmVhZGVyOjpyZWFkT3BFeHByZXNzaW9uSTMyKToKKyAgICAg
ICAgKEpTQzo6V0FTTVJlYWRlcjo6cmVhZFZhcmlhYmxlVHlwZXMpOgorICAgICAgICAoSlNDOjpX
QVNNUmVhZGVyOjpyZWFkT3ApOgorICAgICAgICAqIHdhc20vV0FTTVJlYWRlci5oOgorICAgICAg
ICAoSlNDOjpXQVNNUmVhZGVyOjpvZmZzZXQpOgorICAgICAgICAoSlNDOjpXQVNNUmVhZGVyOjpz
ZXRPZmZzZXQpOgorCiAyMDE1LTA4LTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBwdXRfYnlfaWQgbGlrZSBJQyBpbnRvIHB1dF9i
eV92YWwgd2hlbiB0aGUgZ2l2ZW4gbmFtZSBpcyBTdHJpbmcgb3IgU3ltYm9sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDlkMjRiYWJiMGE0MTEyNDU3NmFlYTQxYTg1ZDJl
Mjg5NzY2MzliNy4uYjQ5MDBlODEwYzY4M2QxOTVkZmI1MzkwYTkzMGQ4MGJjZjQ0NzcyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDI0LDYgKzQyNCw4IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAK
IAogICAgIHdhc20vSlNXQVNNTW9kdWxlLmNwcAorICAgIHdhc20vV0FTTUZ1bmN0aW9uUGFyc2Vy
LmNwcAorICAgIHdhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5jcHAKICAgICB3YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwCiAgICAgd2FzbS9XQVNNUmVhZGVyLmNwcAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA2ZmRiYjFmMDliODc4YTQ0ZDQ4NmNiMjJj
Nzc0MjlkNTY0ZDNjYWYyLi4yZDM4YzE3NGUyYjNiOTZmMjEyNmNiM2NjZTZlMDk5YjE2YmQxYzMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTg5MSw2ICs4OTEs
NyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cdG9vbHNcSlNEb2xsYXJWTS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xKU0RvbGxhclZNUHJvdG90eXBlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cSlNXQVNNTW9kdWxlLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uUGFyc2VyLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1vZHVsZVBhcnNlci5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01SZWFkZXIuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceWFyclxSZWd1bGFyRXhwcmVzc2lvbi5jcHAi
IC8+CkBAIC0xNzgzLDggKzE3ODQsMTAgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHRv
b2xzXFByb2ZpbGVUcmVlTm9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdG9v
bHNcVGllcmVkTU1hcEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNt
XEpTV0FTTU1vZHVsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNN
Q29uc3RhbnRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01Gb3Jt
YXQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1hZ2ljTnVtYmVy
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01GdW5jdGlvblBhcnNl
ci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRnVuY3Rpb25TeW50
YXhDaGVja2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01Nb2R1
bGVQYXJzZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTVJlYWRl
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceWFyclxSZWd1bGFyRXhwcmVzc2lv
bi5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDYyYTEzN2EyY2I2Y2IyYTkxZDM1ZjBkNTUyNTQ5N2I1NDg5NmU3ZTkuLjhiNDlh
NGExNzhiMzY5NDE3MmFkODlmY2U3Y2ZmYjI3MmM3NDg2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE4MzgsNiArMTgzOCw5IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3YXNtXEpTV0FTTU1vZHVsZS5jcHAiPgogICAg
ICAgPEZpbHRlcj53YXNtPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01GdW5jdGlvblBhcnNlci5jcHAiPgorICAgICAgPEZpbHRl
cj53YXNtPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlx3YXNtXFdBU01Nb2R1bGVQYXJzZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+d2FzbTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDQxMSwxMCArNDQxNCwxNiBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxKU1dBU01Nb2R1bGUuaCI+CiAgICAgICA8RmlsdGVyPndh
c208L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHdhc21cV0FTTUNvbnN0YW50cy5oIj4KKyAgICAgIDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRm9ybWF0
LmgiPgogICAgICAgPEZpbHRlcj53YXNtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01NYWdpY051bWJlci5oIj4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uUGFyc2VyLmgiPgorICAgICAgPEZp
bHRlcj53YXNtPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx3YXNtXFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCI+CiAgICAgICA8RmlsdGVy
Pndhc208L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHdhc21cV0FTTU1vZHVsZVBhcnNlci5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYTM0MDE3MjM4M2Q0MmU2MTg1MjQ5ZWVmODQ0MTI0NTIzNmVhNjhiOC4uODIyNjE5MjI0
MzA0YzQzOGQ3MTk3NWMzMDQxMDU1MGRmOGFjMzNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEwMzIsMTEgKzEwMzIsMTQgQEAKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlFRTBCRkQxQjRB
RkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQk3OUVFMEMw
MDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5
IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3QjAyNDc1NTFCODY4MkREMDA1NDI0NDAgLyogV0FTTUNvbnN0
YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Iw
MjQ3NTIxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjAyNDc1NjFCODY4MkUxMDA1NDI0
NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCMDI0NzUzMUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rp
b25QYXJzZXIuY3BwICovOyB9OworCQk3QjAyNDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1
bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjAyNDc1NDFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0IwMjQ3NTkx
Qjg2OEVCNzAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMDI0NzU4MUI4NjhFQUUwMDU0
MjQ0MCAvKiBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IzOUY3NkQxQjYyREUyRTAwMzYwRkI0IC8q
IFdBU01Nb2R1bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IzOUY3NjkxQjYyREUyMjAwMzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJzZXIu
Y3BwICovOyB9OwogCQk3QjM5Rjc2RTFCNjJERTMyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IzOUY3
NkExQjYyREUyMjAwMzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjM5Rjc3MDFCNjJERTMyMDAzNjBG
QjQgLyogV0FTTVJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IzOUY3NkMxQjYyREUyMjAwMzYwRkI0IC8qIFdBU01SZWFkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjM5Rjc3MjFCNjM1
NzREMDAzNjBGQjQgLyogV0FTTVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc3MTFCNjM1NzRCMDAzNjBGQjQgLyogV0FTTVJlYWRl
ci5jcHAgKi87IH07Ci0JCTdCN0E1RTI3MUI2ODI4OEMwMDI3Q0FEMCAvKiBXQVNNTWFnaWNOdW1i
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCN0E1
RTI2MUI2ODI4ODQwMDI3Q0FEMCAvKiBXQVNNTWFnaWNOdW1iZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Qjk4RDEzNjFCNjBDRDVGMDAyM0Ix
QTQgLyogSlNXQVNNTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCOThEMTM0MUI2MENENUEwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuY3Bw
ICovOyB9OwogCQk3Qjk4RDEzNzFCNjBDRDYyMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjk4RDEzNTFCNjBD
RDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5QjU4IC8qIFdBU01G
b3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
QzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4NDAsMTEgKzI4NDMsMTQgQEAKIAkJ
NzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeUtleS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3OUVFMEJGRDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
YXJpYWJsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlF
RTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFyaWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjAyNDc1MjFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUNvbnN0
YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNQ29uc3RhbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMDI0NzUzMUI4NjgyRDUwMDU0MjQ0MCAv
KiBXQVNNRnVuY3Rpb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0IwMjQ3NTQxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNRnVuY3Rpb25QYXJzZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IwMjQ3NTgxQjg2OEVBRTAwNTQyNDQwIC8qIFdBU01G
dW5jdGlvblN5bnRheENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjM5Rjc2OTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNTW9kdWxlUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IzOUY3NkExQjYyREUyMjAwMzYwRkI0IC8qIFdB
U01Nb2R1bGVQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1v
ZHVsZVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjM5Rjc2QzFCNjJE
RTIyMDAzNjBGQjQgLyogV0FTTVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXQVNNUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMzlGNzcx
MUI2MzU3NEIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdBU01SZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3QjdBNUUyNjFCNjgyODg0MDAyN0NBRDAgLyogV0FTTU1hZ2ljTnVtYmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01NYWdpY051bWJlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Qjk4RDEzNDFCNjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9k
dWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV0FTTU1vZHVs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOThEMTM1MUI2MENENUEwMDIz
QjFBNCAvKiBKU1dBU01Nb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXQVNNTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQzU0N0QyMUI2
OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdBU01Gb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NDAs
OCArNDQ0NiwxMSBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0I5OEQxMzQxQjYwQ0Q1QTAwMjNC
MUE0IC8qIEpTV0FTTU1vZHVsZS5jcHAgKi8sCiAJCQkJN0I5OEQxMzUxQjYwQ0Q1QTAwMjNCMUE0
IC8qIEpTV0FTTU1vZHVsZS5oICovLAorCQkJCTdCMDI0NzUyMUI4NjgyRDUwMDU0MjQ0MCAvKiBX
QVNNQ29uc3RhbnRzLmggKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01G
b3JtYXQuaCAqLywKLQkJCQk3QjdBNUUyNjFCNjgyODg0MDAyN0NBRDAgLyogV0FTTU1hZ2ljTnVt
YmVyLmggKi8sCisJCQkJN0IwMjQ3NTMxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBh
cnNlci5jcHAgKi8sCisJCQkJN0IwMjQ3NTQxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlv
blBhcnNlci5oICovLAorCQkJCTdCMDI0NzU4MUI4NjhFQUUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rp
b25TeW50YXhDaGVja2VyLmggKi8sCiAJCQkJN0IzOUY3NjkxQjYyREUyMjAwMzYwRkI0IC8qIFdB
U01Nb2R1bGVQYXJzZXIuY3BwICovLAogCQkJCTdCMzlGNzZBMUI2MkRFMjIwMDM2MEZCNCAvKiBX
QVNNTW9kdWxlUGFyc2VyLmggKi8sCiAJCQkJN0IzOUY3NzExQjYzNTc0QjAwMzYwRkI0IC8qIFdB
U01SZWFkZXIuY3BwICovLApAQCAtNTk2NCw2ICs1OTczLDcgQEAKIAkJCQlBNzdGMTgyMjE2NDA4
OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUxMTZCMTBG
RTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJE
N0U2OTE0NDc5OTk2MDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0IwMjQ3NTkxQjg2OEVCNzAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVC
NEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjIzLDYgKzYy
MzMsNyBAQAogCQkJCTBGOEYyQjk2MTcyRTA0QTMwMDdEQkRBNSAvKiBGVExMaW5rLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkNFRkFFMDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IwMjQ3NTcxQjg2ODJF
NDAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVu
dHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTY2MTEsNiArNjYyMiw3IEBACiAJCQkJOTVDRDQ1Nzcw
RTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDUxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNzI5QTUxNjZBRDM1MTAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdCMDI0NzU1MUI4NjgyREQwMDU0MjQ0MCAvKiBXQVNNQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCOTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmls
ZXJCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0Iw
NyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcy
OUJBMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTY2MzQsNyArNjY0Niw2IEBACiAJCQkJQkMxOEM0NTQwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3BlcnR5TmFtZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MTY4QzE1QTNCMjM1
MDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODVGNkJD
MThDNTUzRkUwMEYxMDYyNiAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTdCN0E1RTI3MUI2ODI4OEMwMDI3Q0FEMCAvKiBXQVNNTWFnaWNOdW1iZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDU1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9wZXJ0eVNsb3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlDMTVFRDhFNDYwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0
b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUxRDAyRCAvKiBD
b21wbGV4R2V0U3RhdHVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc1NjcsNiArNzU3OCw3IEBACiAJ
CQkJMEY1QTYyODMxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0IxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0IwMjQ3NTYxQjg2ODJFMTAwNTQy
NDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5
RjE2QjcyQTE3MDA1REY5NUIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MkIzMTBGRDE5NzRBRTg3MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNDMTA3RUMzNzYwMDQyN0E0OCAv
KiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Db25zdGFudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01Db25zdGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZThiNmQyMjU2MzZhNjk4MjI4
NDMzN2EzYmNmYTRlZmY4NDE2YzAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUNvbnN0YW50cy5oCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoK
KyAqIENvcHlyaWdodCAoYykgMjAxNSBieSB0aGUgcmVwb3NpdG9yeSBhdXRob3JzIG9mCisgKiBX
ZWJBc3NlbWJseS9wb2x5ZmlsbC1wcm90b3R5cGUtMS4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisg
KiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIFdBU01Db25z
dGFudHNfaAorI2RlZmluZSBXQVNNQ29uc3RhbnRzX2gKKworI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCB3YXNtTWFnaWNO
dW1iZXIgPSAweDZkNzM2MTc3OworCitlbnVtIGNsYXNzIFdBU01PcFN0YXRlbWVudCA6IHVpbnQ4
X3QgeworICAgIFNldExvY2FsLAorICAgIFNldEdsb2JhbCwKKyAgICBJMzJTdG9yZTgsCisgICAg
STMyU3RvcmVXaXRoT2Zmc2V0OCwKKyAgICBJMzJTdG9yZTE2LAorICAgIEkzMlN0b3JlV2l0aE9m
ZnNldDE2LAorICAgIEkzMlN0b3JlMzIsCisgICAgSTMyU3RvcmVXaXRoT2Zmc2V0MzIsCisgICAg
RjMyU3RvcmUsCisgICAgRjMyU3RvcmVXaXRoT2Zmc2V0LAorICAgIEY2NFN0b3JlLAorICAgIEY2
NFN0b3JlV2l0aE9mZnNldCwKKyAgICBDYWxsSW50ZXJuYWwsCisgICAgQ2FsbEluZGlyZWN0LAor
ICAgIENhbGxJbXBvcnQsCisgICAgUmV0dXJuLAorICAgIEJsb2NrLAorICAgIElmLAorICAgIElm
RWxzZSwKKyAgICBXaGlsZSwKKyAgICBEbywKKyAgICBMYWJlbCwKKyAgICBCcmVhaywKKyAgICBC
cmVha0xhYmVsLAorICAgIENvbnRpbnVlLAorICAgIENvbnRpbnVlTGFiZWwsCisgICAgU3dpdGNo
LAorICAgIE51bWJlck9mV0FTTU9wU3RhdGVtZW50cworfTsKKworZW51bSBjbGFzcyBXQVNNT3BT
dGF0ZW1lbnRXaXRoSW1tZWRpYXRlIDogdWludDhfdCB7CisgICAgU2V0TG9jYWwsCisgICAgU2V0
R2xvYmFsLAorICAgIE51bWJlck9mV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZXMKK307CisK
K2VudW0gY2xhc3MgV0FTTU9wRXhwcmVzc2lvbkkzMiA6IHVpbnQ4X3QgeworICAgIENvbnN0YW50
UG9vbEluZGV4LAorICAgIEltbWVkaWF0ZSwKKyAgICBHZXRMb2NhbCwKKyAgICBHZXRHbG9iYWws
CisgICAgU2V0TG9jYWwsCisgICAgU2V0R2xvYmFsLAorICAgIFNMb2FkOCwKKyAgICBTTG9hZFdp
dGhPZmZzZXQ4LAorICAgIFVMb2FkOCwKKyAgICBVTG9hZFdpdGhPZmZzZXQ4LAorICAgIFNMb2Fk
MTYsCisgICAgU0xvYWRXaXRoT2Zmc2V0MTYsCisgICAgVUxvYWQxNiwKKyAgICBVTG9hZFdpdGhP
ZmZzZXQxNiwKKyAgICBMb2FkMzIsCisgICAgTG9hZFdpdGhPZmZzZXQzMiwKKyAgICBTdG9yZTgs
CisgICAgU3RvcmVXaXRoT2Zmc2V0OCwKKyAgICBTdG9yZTE2LAorICAgIFN0b3JlV2l0aE9mZnNl
dDE2LAorICAgIFN0b3JlMzIsCisgICAgU3RvcmVXaXRoT2Zmc2V0MzIsCisgICAgQ2FsbEludGVy
bmFsLAorICAgIENhbGxJbmRpcmVjdCwKKyAgICBDYWxsSW1wb3J0LAorICAgIENvbmRpdGlvbmFs
LAorICAgIENvbW1hLAorICAgIEZyb21GMzIsCisgICAgRnJvbUY2NCwKKyAgICBOZWdhdGUsCisg
ICAgQWRkLAorICAgIFN1YiwKKyAgICBNdWwsCisgICAgU0RpdiwKKyAgICBVRGl2LAorICAgIFNN
b2QsCisgICAgVU1vZCwKKyAgICBCaXROb3QsCisgICAgQml0T3IsCisgICAgQml0QW5kLAorICAg
IEJpdFhvciwKKyAgICBMZWZ0U2hpZnQsCisgICAgQXJpdGhtZXRpY1JpZ2h0U2hpZnQsCisgICAg
TG9naWNhbFJpZ2h0U2hpZnQsCisgICAgQ291bnRMZWFkaW5nWmVyb3MsCisgICAgTG9naWNhbE5v
dCwKKyAgICBFcXVhbEkzMiwKKyAgICBFcXVhbEYzMiwKKyAgICBFcXVhbEY2NCwKKyAgICBOb3RF
cXVhbEkzMiwKKyAgICBOb3RFcXVhbEYzMiwKKyAgICBOb3RFcXVhbEY2NCwKKyAgICBTTGVzc1Ro
YW5JMzIsCisgICAgVUxlc3NUaGFuSTMyLAorICAgIExlc3NUaGFuRjMyLAorICAgIExlc3NUaGFu
RjY0LAorICAgIFNMZXNzVGhhbk9yRXF1YWxJMzIsCisgICAgVUxlc3NUaGFuT3JFcXVhbEkzMiwK
KyAgICBMZXNzVGhhbk9yRXF1YWxGMzIsCisgICAgTGVzc1RoYW5PckVxdWFsRjY0LAorICAgIFNH
cmVhdGVyVGhhbkkzMiwKKyAgICBVR3JlYXRlclRoYW5JMzIsCisgICAgR3JlYXRlclRoYW5GMzIs
CisgICAgR3JlYXRlclRoYW5GNjQsCisgICAgU0dyZWF0ZXJUaGFuT3JFcXVhbEkzMiwKKyAgICBV
R3JlYXRlclRoYW5PckVxdWFsSTMyLAorICAgIEdyZWF0ZXJUaGFuT3JFcXVhbEYzMiwKKyAgICBH
cmVhdGVyVGhhbk9yRXF1YWxGNjQsCisgICAgU01pbiwKKyAgICBVTWluLAorICAgIFNNYXgsCisg
ICAgVU1heCwKKyAgICBBYnMsCisgICAgTnVtYmVyT2ZXQVNNT3BFeHByZXNzaW9uSTMycworfTsK
KworZW51bSBjbGFzcyBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZSA6IHVpbnQ4X3Qg
eworICAgIENvbnN0YW50UG9vbEluZGV4LAorICAgIEltbWVkaWF0ZSwKKyAgICBHZXRMb2NhbCwK
KyAgICBOdW1iZXJPZldBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlcworfTsKKworZW51
bSBjbGFzcyBXQVNNVmFyaWFibGVUeXBlcyA6IHVpbnQ4X3QgeworICAgIEkzMiA9IDEgPDwgMCwK
KyAgICBGMzIgPSAxIDw8IDEsCisgICAgRjY0ID0gMSA8PCAyLAorICAgIE51bWJlck9mVmFyaWFi
bGVUeXBlcyA9IDgKK307CisKK2VudW0gY2xhc3MgV0FTTVZhcmlhYmxlVHlwZXNXaXRoSW1tZWRp
YXRlIDogdWludDhfdCB7CisgICAgSTMyLAorICAgIE51bWJlck9mVmFyaWFibGVUeXBlc1dpdGhJ
bW1lZGlhdGVzCit9OworCitlbnVtIGNsYXNzIFdBU01FeHBvcnRGb3JtYXQgOiB1aW50OF90IHsK
KyAgICBEZWZhdWx0LAorICAgIFJlY29yZCwKKyAgICBOdW1iZXJPZkV4cG9ydEZvcm1hdHMKK307
CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGhhc0ltbWVkaWF0ZUluT3BGbGFnID0gMHg4MDsKKwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG9wV2l0aEltbWVkaWF0ZUJpdHMgPSAyOworc3RhdGljIGNv
bnN0IHVpbnQzMl90IG9wV2l0aEltbWVkaWF0ZUxpbWl0ID0gMSA8PCBvcFdpdGhJbW1lZGlhdGVC
aXRzOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW1tZWRpYXRlQml0cyA9IDU7CitzdGF0aWMg
Y29uc3QgdWludDMyX3QgaW1tZWRpYXRlTGltaXQgPSAxIDw8IGltbWVkaWF0ZUJpdHM7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZW5k
aWYgLy8gV0FTTUNvbnN0YW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0
LmgKaW5kZXggYWJhOWY5OGEwZTY2OTZkYmNjY2UxOTIyODkyMGMzMzhmMzI3NzFlZS4uMDc3YmYz
YTI5OGQwYzFjYTc2ODZmMzE3NTE4YzFhOWIzZjk2M2M3NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Gb3JtYXQuaApAQCAtNjUsMTIgKzY1LDYgQEAgZW51bSBjbGFzcyBXQVNNRXhw
cmVzc2lvblR5cGUgOiB1aW50OF90IHsKICAgICBOdW1iZXJPZkV4cHJlc3Npb25UeXBlcwogfTsK
IAotZW51bSBjbGFzcyBXQVNNRXhwb3J0Rm9ybWF0IDogdWludDhfdCB7Ci0gICAgRGVmYXVsdCwK
LSAgICBSZWNvcmQsCi0gICAgTnVtYmVyT2ZFeHBvcnRGb3JtYXRzCi19OwotCiBzdHJ1Y3QgV0FT
TVNpZ25hdHVyZSB7CiAgICAgV0FTTUV4cHJlc3Npb25UeXBlIHJldHVyblR5cGU7CiAgICAgVmVj
dG9yPFdBU01UeXBlPiBhcmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTliMmE2ODNiZDBiMTg1ZmEw
NjQ4N2FjOWVkZWJmYWJiMjZhY2ZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcApAQCAtMCwwICsxLDM5NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKKworI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKworI2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgorI2luY2x1ZGUgIldBU01Gb3Jt
YXQuaCIKKyNpbmNsdWRlICJXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgiCisKKyNkZWZpbmUg
UFJPUEFHQVRFX0VSUk9SKCkgZG8geyBpZiAoIW1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSByZXR1
cm4gMDsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgRkFJTF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdl
KSBkbyB7ICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsgcmV0dXJuIDA7IH0gd2hpbGUg
KDApCisjZGVmaW5lIFJFQURfVUlOVDMyX09SX0ZBSUwocmVzdWx0LCBlcnJvck1lc3NhZ2UpIGRv
IHsgaWYgKCFtX3JlYWRlci5yZWFkVUludDMyKHJlc3VsdCkpIEZBSUxfV0lUSF9NRVNTQUdFKGVy
cm9yTWVzc2FnZSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFQURfRkxPQVRfT1JfRkFJTChyZXN1
bHQsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRGbG9hdChyZXN1bHQpKSBG
QUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFE
X0RPVUJMRV9PUl9GQUlMKHJlc3VsdCwgZXJyb3JNZXNzYWdlKSBkbyB7IGlmICghbV9yZWFkZXIu
cmVhZERvdWJsZShyZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdo
aWxlICgwKQorI2RlZmluZSBSRUFEX1NUUklOR19PUl9GQUlMKHJlc3VsdCwgZXJyb3JNZXNzYWdl
KSBkbyB7IGlmICghbV9yZWFkZXIucmVhZFN0cmluZyhyZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FH
RShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX0NPTVBBQ1RfVUlOVDMy
X09SX0ZBSUwocmVzdWx0LCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkQ29t
cGFjdFVJbnQzMihyZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdo
aWxlICgwKQorI2RlZmluZSBSRUFEX0NPTVBBQ1RfSU5UMzJfT1JfRkFJTChyZXN1bHQsIGVycm9y
TWVzc2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRDb21wYWN0SW50MzIocmVzdWx0KSkgRkFJ
TF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVBRF9F
WFBSRVNTSU9OX1RZUEVfT1JfRkFJTChyZXN1bHQsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAoIW1f
cmVhZGVyLnJlYWRFeHByZXNzaW9uVHlwZShyZXN1bHQpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJv
ck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX09QX1NUQVRFTUVOVF9PUl9GQUlM
KGhhc0ltbWVkaWF0ZSwgb3AsIG9wV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCBlcnJvck1lc3Nh
Z2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkT3BTdGF0ZW1lbnQoaGFzSW1tZWRpYXRlLCBvcCwg
b3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3Nh
Z2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX09QX0VYUFJFU1NJT05fSTMyX09SX0ZBSUwo
aGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUsIGVycm9yTWVzc2Fn
ZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRPcEV4cHJlc3Npb25JMzIoaGFzSW1tZWRpYXRlLCBv
cCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1l
c3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX1ZBUklBQkxFX1RZUEVTX09SX0ZBSUwo
aGFzSW1tZWRpYXRlLCB2YXJpYWJsZVR5cGVzLCB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSwg
aW1tZWRpYXRlLCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkVmFyaWFibGVU
eXBlcyhoYXNJbW1lZGlhdGUsIHZhcmlhYmxlVHlwZXMsIHZhcmlhYmxlVHlwZXNXaXRoSW1tZWRp
YXRlLCBpbW1lZGlhdGUpKSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxl
ICgwKQorI2RlZmluZSBGQUlMX0lGX0ZBTFNFKGNvbmRpdGlvbiwgZXJyb3JNZXNzYWdlKSBkbyB7
XAorICAgIGlmICghKGNvbmRpdGlvbikpXAorICAgICAgICBGQUlMX1dJVEhfTUVTU0FHRShlcnJv
ck1lc3NhZ2UpO1wKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgVU5VU0VEIDAKKworbmFtZXNwYWNl
IEpTQyB7CisKK2Jvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyOjpjaGVja1N5bnRheChKU1dBU01Nb2R1
bGUqIG1vZHVsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBzaXplX3QgZnVuY3Rpb25JbmRl
eCwgdW5zaWduZWQgc3RhcnRPZmZzZXRJblNvdXJjZSwgdW5zaWduZWQmIGVuZE9mZnNldEluU291
cmNlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBXQVNNRnVuY3Rpb25QYXJzZXIgcGFy
c2VyKG1vZHVsZSwgc291cmNlLCBmdW5jdGlvbkluZGV4KTsKKyAgICBXQVNNRnVuY3Rpb25TeW50
YXhDaGVja2VyIHN5bnRheENoZWNrZXI7CisgICAgcGFyc2VyLm1fcmVhZGVyLnNldE9mZnNldChz
dGFydE9mZnNldEluU291cmNlKTsKKyAgICBwYXJzZXIucGFyc2VGdW5jdGlvbihzeW50YXhDaGVj
a2VyKTsKKyAgICBpZiAoIXBhcnNlci5tX2Vycm9yTWVzc2FnZS5pc051bGwoKSkgeworICAgICAg
ICBlcnJvck1lc3NhZ2UgPSBwYXJzZXIubV9lcnJvck1lc3NhZ2U7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgZW5kT2Zmc2V0SW5Tb3VyY2UgPSBwYXJzZXIubV9yZWFkZXIub2Zm
c2V0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0Pgor
Ym9vbCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb24oQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBjb25zdCBXQVNNU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBtX21vZHVsZS0+c2lnbmF0
dXJlcygpW21fbW9kdWxlLT5mdW5jdGlvbkRlY2xhcmF0aW9ucygpW21fZnVuY3Rpb25JbmRleF0u
c2lnbmF0dXJlSW5kZXhdOworCisgICAgbV9yZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5
cGU7CisKKyAgICBwYXJzZUxvY2FsVmFyaWFibGVzKCk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7
CisKKyAgICBjb25zdCBWZWN0b3I8V0FTTVR5cGU+JiBhcmd1bWVudHMgPSBzaWduYXR1cmUuYXJn
dW1lbnRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytp
KQorICAgICAgICBtX2xvY2FsVHlwZXMuYXBwZW5kKGFyZ3VtZW50c1tpXSk7CisgICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZJMzJMb2NhbFZhcmlhYmxlczsgKytpKQorICAg
ICAgICBtX2xvY2FsVHlwZXMuYXBwZW5kKFdBU01UeXBlOjpJMzIpOworICAgIGZvciAodWludDMy
X3QgaSA9IDA7IGkgPCBtX251bWJlck9mRjMyTG9jYWxWYXJpYWJsZXM7ICsraSkKKyAgICAgICAg
bV9sb2NhbFR5cGVzLmFwcGVuZChXQVNNVHlwZTo6RjMyKTsKKyAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgbV9udW1iZXJPZkY2NExvY2FsVmFyaWFibGVzOyArK2kpCisgICAgICAgIG1fbG9j
YWxUeXBlcy5hcHBlbmQoV0FTTVR5cGU6OkY2NCk7CisKKyAgICBwYXJzZUJsb2NrU3RhdGVtZW50
KGNvbnRleHQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VMb2NhbFZhcmlhYmxlcygpCit7CisgICAgbV9udW1iZXJPZkkzMkxvY2FsVmFyaWFi
bGVzID0gMDsKKyAgICBtX251bWJlck9mRjMyTG9jYWxWYXJpYWJsZXMgPSAwOworICAgIG1fbnVt
YmVyT2ZGNjRMb2NhbFZhcmlhYmxlcyA9IDA7CisKKyAgICBib29sIGhhc0ltbWVkaWF0ZTsKKyAg
ICBXQVNNVmFyaWFibGVUeXBlcyB2YXJpYWJsZVR5cGVzOworICAgIFdBU01WYXJpYWJsZVR5cGVz
V2l0aEltbWVkaWF0ZSB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZTsKKyAgICB1aW50OF90IGlt
bWVkaWF0ZTsKKyAgICBSRUFEX1ZBUklBQkxFX1RZUEVTX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCB2
YXJpYWJsZVR5cGVzLCB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCAiQ2Fu
bm90IHJlYWQgdGhlIHR5cGVzIG9mIGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAgICBpZiAoIWhhc0lt
bWVkaWF0ZSkgeworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDhfdD4odmFyaWFibGVUeXBl
cykgJiBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNVmFyaWFibGVUeXBlczo6STMyKSkKKyAgICAg
ICAgICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChtX251bWJlck9mSTMyTG9jYWxWYXJp
YWJsZXMsICJDYW5ub3QgcmVhZCB0aGUgbnVtYmVyIG9mIGludDMyIGxvY2FsIHZhcmlhYmxlcy4i
KTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhcmlhYmxlVHlwZXMpICYgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6OkYzMikpCisgICAgICAgICAgICBS
RUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwobV9udW1iZXJPZkYzMkxvY2FsVmFyaWFibGVzLCAi
Q2Fubm90IHJlYWQgdGhlIG51bWJlciBvZiBmbG9hdDMyIGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhcmlhYmxlVHlwZXMpICYgc3RhdGljX2Nh
c3Q8dWludDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6OkY2NCkpCisgICAgICAgICAgICBSRUFEX0NP
TVBBQ1RfVUlOVDMyX09SX0ZBSUwobV9udW1iZXJPZkY2NExvY2FsVmFyaWFibGVzLCAiQ2Fubm90
IHJlYWQgdGhlIG51bWJlciBvZiBmbG9hdDY0IGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9udW1iZXJPZkkzMkxvY2FsVmFyaWFibGVzID0gaW1tZWRpYXRlOworICAg
IHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0
ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0
KQoreworICAgIGJvb2wgaGFzSW1tZWRpYXRlOworICAgIFdBU01PcFN0YXRlbWVudCBvcDsKKyAg
ICBXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRpYXRlIG9wV2l0aEltbWVkaWF0ZTsKKyAgICB1aW50
OF90IGltbWVkaWF0ZTsKKyAgICBSRUFEX09QX1NUQVRFTUVOVF9PUl9GQUlMKGhhc0ltbWVkaWF0
ZSwgb3AsIG9wV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCAiQ2Fubm90IHJlYWQgdGhlIHN0YXRl
bWVudCBvcGNvZGUuIik7CisgICAgaWYgKCFoYXNJbW1lZGlhdGUpIHsKKyAgICAgICAgc3dpdGNo
IChvcCkgeworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6U2V0TG9jYWw6CisgICAgICAg
ICAgICBwYXJzZVNldExvY2FsU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpTZXRHbG9iYWw6CisgICAgICAgICAgICBw
YXJzZVNldEdsb2JhbFN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOyAgICAK
KyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OlJldHVybjoKKyAgICAgICAgICAgIHBhcnNl
UmV0dXJuU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV0FTTU9wU3RhdGVtZW50OjpCbG9jazoKKyAgICAgICAgICAgIHBhcnNlQmxvY2tTdGF0ZW1l
bnQoY29udGV4dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0
ZW1lbnQ6OklmOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6SWZFbHNlOgorICAgICAg
ICBjYXNlIFdBU01PcFN0YXRlbWVudDo6V2hpbGU6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVt
ZW50OjpEbzoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkxhYmVsOgorICAgICAgICBj
YXNlIFdBU01PcFN0YXRlbWVudDo6QnJlYWs6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50
OjpCcmVha0xhYmVsOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Q29udGludWU6Cisg
ICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpDb250aW51ZUxhYmVsOgorICAgICAgICBjYXNl
IFdBU01PcFN0YXRlbWVudDo6U3dpdGNoOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6
STMyU3RvcmU4OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmVXaXRoT2Zm
c2V0ODoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMTY6CisgICAgICAg
IGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQxNjoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMzI6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVt
ZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6
OkYzMlN0b3JlOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjMyU3RvcmVXaXRoT2Zm
c2V0OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjY0U3RvcmU6CisgICAgICAgIGNh
c2UgV0FTTU9wU3RhdGVtZW50OjpGNjRTdG9yZVdpdGhPZmZzZXQ6CisgICAgICAgIGNhc2UgV0FT
TU9wU3RhdGVtZW50OjpDYWxsSW50ZXJuYWw6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50
OjpDYWxsSW5kaXJlY3Q6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpDYWxsSW1wb3J0
OgorICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGVzZSBpbnN0cnVjdGlvbnMuCisg
ICAgICAgICAgICBGQUlMX1dJVEhfTUVTU0FHRSgiVW5zdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24uIik7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAob3BXaXRoSW1tZWRpYXRlKSB7
CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZTo6U2V0TG9jYWw6Cisg
ICAgICAgICAgICBwYXJzZVNldExvY2FsU3RhdGVtZW50KGNvbnRleHQsIGltbWVkaWF0ZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRp
YXRlOjpTZXRHbG9iYWw6CisgICAgICAgICAgICBwYXJzZVNldEdsb2JhbFN0YXRlbWVudChjb250
ZXh0LCBpbW1lZGlhdGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0
ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQm
IGNvbnRleHQsIHVpbnQzMl90IGxvY2FsSW5kZXgpCit7CisgICAgRkFJTF9JRl9GQUxTRShsb2Nh
bEluZGV4IDwgbV9sb2NhbFR5cGVzLnNpemUoKSwgIlRoZSBsb2NhbCB2YXJpYWJsZSBpbmRleCBp
cyBpbmNvcnJlY3QuIik7CisgICAgV0FTTVR5cGUgdHlwZSA9IG1fbG9jYWxUeXBlc1tsb2NhbElu
ZGV4XTsKKyAgICBwYXJzZUV4cHJlc3Npb24oY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlKHR5
cGUpKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgcmV0
dXJuIFVOVVNFRDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVt
ZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudChDb250ZXh0JiBj
b250ZXh0KQoreworICAgIHVpbnQzMl90IGxvY2FsSW5kZXg7CisgICAgUkVBRF9DT01QQUNUX1VJ
TlQzMl9PUl9GQUlMKGxvY2FsSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgbG9jYWwgaW5kZXguIik7
CisgICAgcmV0dXJuIHBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoY29udGV4dCwgbG9jYWxJbmRleCk7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVu
Y3Rpb25QYXJzZXI6OnBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQsIHVp
bnQzMl90IGdsb2JhbEluZGV4KQoreworICAgIEZBSUxfSUZfRkFMU0UoZ2xvYmFsSW5kZXggPCBt
X21vZHVsZS0+Z2xvYmFsVmFyaWFibGVUeXBlcygpLnNpemUoKSwgIlRoZSBnbG9iYWwgaW5kZXgg
aXMgaW5jb3JyZWN0LiIpOworICAgIFdBU01UeXBlIHR5cGUgPSBtX21vZHVsZS0+Z2xvYmFsVmFy
aWFibGVUeXBlcygpW2dsb2JhbEluZGV4XTsKKyAgICBwYXJzZUV4cHJlc3Npb24oY29udGV4dCwg
V0FTTUV4cHJlc3Npb25UeXBlKHR5cGUpKTsKKyAgICBQUk9QQUdBVEVfRVJST1IoKTsKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgcmV0dXJuIFVOVVNFRDsK
K30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5j
dGlvblBhcnNlcjo6cGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICB1aW50MzJfdCBnbG9iYWxJbmRleDsKKyAgICBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZB
SUwoZ2xvYmFsSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgZ2xvYmFsIGluZGV4LiIpOworICAgIHJl
dHVybiBwYXJzZVNldEdsb2JhbFN0YXRlbWVudChjb250ZXh0LCBnbG9iYWxJbmRleCk7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlUmV0dXJuU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYg
KG1fcmV0dXJuVHlwZSAhPSBXQVNNRXhwcmVzc2lvblR5cGU6OlZvaWQpCisgICAgICAgIHBhcnNl
RXhwcmVzc2lvbihjb250ZXh0LCBtX3JldHVyblR5cGUpOworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJz
ZUJsb2NrU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgdWludDMyX3QgbnVtYmVy
T2ZTdGF0ZW1lbnRzOworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChudW1iZXJPZlN0
YXRlbWVudHMsICJDYW5ub3QgcmVhZCB0aGUgbnVtYmVyIG9mIHN0YXRlbWVudHMuIik7CisgICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG51bWJlck9mU3RhdGVtZW50czsgKytpKSB7CisgICAg
ICAgIHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICBQUk9QQUdBVEVfRVJST1IoKTsK
KyAgICB9CisgICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+
CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbihD
b250ZXh0JiBjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGUgZXhwcmVzc2lvblR5cGUpCit7Cisg
ICAgc3dpdGNoIChleHByZXNzaW9uVHlwZSkgeworICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBl
OjpJMzI6CisgICAgICAgIHJldHVybiBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAg
Y2FzZSBXQVNNRXhwcmVzc2lvblR5cGU6OkYzMjoKKyAgICBjYXNlIFdBU01FeHByZXNzaW9uVHlw
ZTo6RjY0OgorICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBlOjpWb2lkOgorICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoZXNlIGluc3RydWN0aW9ucy4KKyAgICAgICAgRkFJTF9XSVRIX01F
U1NBR0UoIlVuc3VwcG9ydGVkIGluc3RydWN0aW9uLiIpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordGVtcGxh
dGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQoreworICAgIGJvb2wgaGFzSW1t
ZWRpYXRlOworICAgIFdBU01PcEV4cHJlc3Npb25JMzIgb3A7CisgICAgV0FTTU9wRXhwcmVzc2lv
bkkzMldpdGhJbW1lZGlhdGUgb3BXaXRoSW1tZWRpYXRlOworICAgIHVpbnQ4X3QgaW1tZWRpYXRl
OworICAgIFJFQURfT1BfRVhQUkVTU0lPTl9JMzJfT1JfRkFJTChoYXNJbW1lZGlhdGUsIG9wLCBv
cFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwgIkNhbm5vdCByZWFkIHRoZSBpbnQzMiBleHByZXNz
aW9uIG9wY29kZS4iKTsKKyAgICBpZiAoIWhhc0ltbWVkaWF0ZSkgeworICAgICAgICBzd2l0Y2gg
KG9wKSB7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q29uc3RhbnRQb29sSW5k
ZXg6CisgICAgICAgICAgICByZXR1cm4gcGFyc2VDb25zdGFudFBvb2xJbmRleEV4cHJlc3Npb25J
MzIoY29udGV4dCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6SW1tZWRpYXRl
OgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0
KTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHZXRMb2NhbDoKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHZXRHbG9iYWw6CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6U2V0TG9jYWw6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6U2V0R2xvYmFsOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2FkODoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZFdpdGhPZmZzZXQ4OgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVMb2FkODoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpVTG9hZFdpdGhPZmZzZXQ4OgorICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6OlNMb2FkMTY6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
U0xvYWRXaXRoT2Zmc2V0MTY6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxv
YWQxNjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTG9hZFdpdGhPZmZzZXQx
NjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMb2FkMzI6CisgICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9hZFdpdGhPZmZzZXQzMjoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6U3RvcmVXaXRoT2Zmc2V0ODoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpTdG9yZTE2OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3JlV2l0aE9m
ZnNldDE2OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3JlMzI6CisgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmVXaXRoT2Zmc2V0MzI6CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q2FsbEludGVybmFsOgorICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6OkNhbGxJbmRpcmVjdDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpDYWxsSW1wb3J0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkNvbmRpdGlvbmFsOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNvbW1hOgor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkZyb21GMzI6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6RnJvbUY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpOZWdhdGU6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6QWRkOgor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN1YjoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpNdWw6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
U0RpdjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVRGl2OgorICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNNb2Q6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6VU1vZDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXROb3Q6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0T3I6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0QW5kOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Np
b25JMzI6OkJpdFhvcjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMZWZ0U2hp
ZnQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6QXJpdGhtZXRpY1JpZ2h0U2hp
ZnQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9naWNhbFJpZ2h0U2hpZnQ6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q291bnRMZWFkaW5nWmVyb3M6Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9naWNhbE5vdDoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpFcXVhbEYzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpF
cXVhbEY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOb3RFcXVhbEkzMjoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOb3RFcXVhbEYzMjoKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOb3RFcXVhbEY2NDoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpTTGVzc1RoYW5JMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6VUxlc3NUaGFuSTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
Okxlc3NUaGFuRjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Okxlc3NUaGFu
RjY0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMZXNzVGhhbk9yRXF1YWxJ
MzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxlc3NUaGFuT3JFcXVhbEkz
MjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMZXNzVGhhbk9yRXF1YWxGMzI6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TGVzc1RoYW5PckVxdWFsRjY0Ogor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNHcmVhdGVyVGhhbkkzMjoKKyAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVR3JlYXRlclRoYW5JMzI6CisgICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRlclRoYW5GMzI6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRlclRoYW5GNjQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6U0dyZWF0ZXJUaGFuT3JFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyOjpVR3JlYXRlclRoYW5PckVxdWFsSTMyOgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OkdyZWF0ZXJUaGFuT3JFcXVhbEYzMjoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpHcmVhdGVyVGhhbk9yRXF1YWxGNjQ6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6U01pbjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpVTWluOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNNYXg6CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VU1heDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpBYnM6CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZXNlIGlu
c3RydWN0aW9ucy4KKyAgICAgICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBp
bnN0cnVjdGlvbi4iKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChvcFdp
dGhJbW1lZGlhdGUpIHsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVk
aWF0ZTo6Q29uc3RhbnRQb29sSW5kZXg6CisgICAgICAgICAgICByZXR1cm4gcGFyc2VDb25zdGFu
dFBvb2xJbmRleEV4cHJlc3Npb25JMzIoY29udGV4dCwgaW1tZWRpYXRlKTsKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZTo6SW1tZWRpYXRlOgorICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0LCBpbW1lZGlhdGUp
OworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlOjpHZXRMb2Nh
bDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAg
ICAgICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBpbnN0cnVjdGlvbi4iKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4KK0NvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VDb25zdGFudFBv
b2xJbmRleEV4cHJlc3Npb25JMzIoQ29udGV4dCYsIHVpbnQzMl90IGNvbnN0YW50UG9vbEluZGV4
KQoreworICAgIEZBSUxfSUZfRkFMU0UoY29uc3RhbnRQb29sSW5kZXggPCBtX21vZHVsZS0+aTMy
Q29uc3RhbnRzKCkuc2l6ZSgpLCAiVGhlIGNvbnN0YW50IHBvb2wgaW5kZXggaXMgaW5jb3JyZWN0
LiIpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICByZXR1
cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNz
aW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VDb25zdGFudFBvb2xJbmRleEV4cHJlc3Npb25J
MzIoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1aW50MzJfdCBjb25zdGFudFBvb2xJbmRleDsK
KyAgICBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwoY29uc3RhbnRQb29sSW5kZXgsICJDYW5u
b3QgcmVhZCB0aGUgY29uc3RhbnQgaW5kZXguIik7CisgICAgcmV0dXJuIHBhcnNlQ29uc3RhbnRQ
b29sSW5kZXhFeHByZXNzaW9uSTMyKGNvbnRleHQsIGNvbnN0YW50UG9vbEluZGV4KTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250ZXh0JiwgdWludDMyX3QpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBV
TlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24g
V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUltbWVkaWF0ZUV4cHJlc3Npb25JMzIoQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICB1aW50MzJfdCBpbW1lZGlhdGU7CisgICAgUkVBRF9DT01QQUNUX1VJ
TlQzMl9PUl9GQUlMKGltbWVkaWF0ZSwgIkNhbm5vdCByZWFkIHRoZSBpbW1lZGlhdGUuIik7Cisg
ICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0LCBpbW1lZGlhdGUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWQ1MWRlOTM4ZTZmNWVjZDhjOWIxZTEwZjE3MGM5YTE2ZDFhZDMzYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBh
cnNlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdBU01GdW5jdGlvblBhcnNlcl9oCisjZGVmaW5lIFdBU01G
dW5jdGlvblBhcnNlcl9oCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJT
b3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiV0FTTUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIldBU01S
ZWFkZXIuaCIKKworI2RlZmluZSBDb250ZXh0RXhwcmVzc2lvbiB0eXBlbmFtZSBDb250ZXh0OjpF
eHByZXNzaW9uCisjZGVmaW5lIENvbnRleHRTdGF0ZW1lbnQgdHlwZW5hbWUgQ29udGV4dDo6U3Rh
dGVtZW50CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBKU1dB
U01Nb2R1bGU7CitjbGFzcyBWTTsKKworY2xhc3MgV0FTTUZ1bmN0aW9uUGFyc2VyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgYm9vbCBjaGVja1N5bnRheChKU1dBU01Nb2R1bGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgc2l6ZV90IGZ1bmN0aW9uSW5kZXgsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0SW5Tb3Vy
Y2UsIHVuc2lnbmVkJiBlbmRPZmZzZXRJblNvdXJjZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwor
cHJpdmF0ZToKKyAgICBXQVNNRnVuY3Rpb25QYXJzZXIoSlNXQVNNTW9kdWxlKiBtb2R1bGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgc2l6ZV90IGZ1bmN0aW9uSW5kZXgpCisgICAgICAgIDog
bV9tb2R1bGUobW9kdWxlKQorICAgICAgICAsIG1fcmVhZGVyKHN0YXRpY19jYXN0PFdlYkFzc2Vt
Ymx5U291cmNlUHJvdmlkZXIqPihzb3VyY2UucHJvdmlkZXIoKSktPmRhdGEoKSkKKyAgICAgICAg
LCBtX2Z1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRleCkKKyAgICB7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+IGJvb2wgcGFyc2VGdW5jdGlvbihDb250ZXh0Jik7CisgICAg
Ym9vbCBwYXJzZUxvY2FsVmFyaWFibGVzKCk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChDb250ZXh0Jik7CisgICAgdGVtcGxh
dGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VTZXRMb2NhbFN0YXRlbWVu
dChDb250ZXh0JiwgdWludDMyX3QgbG9jYWxJbmRleCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VTZXRMb2NhbFN0YXRlbWVudChDb250ZXh0Jik7
CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VTZXRH
bG9iYWxTdGF0ZW1lbnQoQ29udGV4dCYsIHVpbnQzMl90IGdsb2JhbEluZGV4KTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldEdsb2JhbFN0YXRl
bWVudChDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0
ZW1lbnQgcGFyc2VTdG9yZVN0YXRlbWVudChDb250ZXh0JiwgV0FTTU9wU3RhdGVtZW50KTsKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZUNhbGxJbnRl
cm5hbFN0YXRlbWVudChDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENv
bnRleHRTdGF0ZW1lbnQgcGFyc2VDYWxsSW5kaXJlY3RTdGF0ZW1lbnQoQ29udGV4dCYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlQ2FsbEltcG9y
dFN0YXRlbWVudChDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRl
eHRTdGF0ZW1lbnQgcGFyc2VSZXR1cm5TdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlQmxvY2tTdGF0ZW1lbnQoQ29u
dGV4dCYpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9u
IHBhcnNlRXhwcmVzc2lvbihDb250ZXh0JiwgV0FTTUV4cHJlc3Npb25UeXBlKTsKKworICAgIHRl
bXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUV4cHJlc3Npb25J
MzIoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVz
c2lvbiBwYXJzZUNvbnN0YW50UG9vbEluZGV4RXhwcmVzc2lvbkkzMihDb250ZXh0JiwgdWludDMy
X3QgY29uc3RhbnRJbmRleCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRF
eHByZXNzaW9uIHBhcnNlQ29uc3RhbnRQb29sSW5kZXhFeHByZXNzaW9uSTMyKENvbnRleHQmKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VJbW1l
ZGlhdGVFeHByZXNzaW9uSTMyKENvbnRleHQmLCB1aW50MzJfdCBpbW1lZGlhdGUpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUltbWVkaWF0ZUV4
cHJlc3Npb25JMzIoQ29udGV4dCYpOworCisgICAgSlNXQVNNTW9kdWxlKiBtX21vZHVsZTsKKyAg
ICBXQVNNUmVhZGVyIG1fcmVhZGVyOworICAgIHNpemVfdCBtX2Z1bmN0aW9uSW5kZXg7CisgICAg
U3RyaW5nIG1fZXJyb3JNZXNzYWdlOworCisgICAgV0FTTUV4cHJlc3Npb25UeXBlIG1fcmV0dXJu
VHlwZTsKKyAgICBWZWN0b3I8V0FTTVR5cGU+IG1fbG9jYWxUeXBlczsKKyAgICB1aW50MzJfdCBt
X251bWJlck9mSTMyTG9jYWxWYXJpYWJsZXM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkYzMkxv
Y2FsVmFyaWFibGVzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZGNjRMb2NhbFZhcmlhYmxlczsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
KQorCisjZW5kaWYgLy8gV0FTTUZ1bmN0aW9uUGFyc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNGFhNGRlN2RhM2ViODcyMjdiNjY0YTMyZWNhMTI0NjNiMGFhNDJlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tl
ci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXJfaAorI2RlZmluZSBX
QVNNRnVuY3Rpb25TeW50YXhDaGVja2VyX2gKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIgeworcHVi
bGljOgorICAgIHR5cGVkZWYgaW50IEV4cHJlc3Npb247CisgICAgdHlwZWRlZiBpbnQgU3RhdGVt
ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNT
RU1CTFkpCisKKyNlbmRpZiAvLyBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NYWdpY051bWJlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1hZ2ljTnVtYmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRhZGQyZmEyN2YyOGIzZmEwYjNiY2I5Mjc2ZGQ5NzUwOWM2YTA2NDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTU1hZ2ljTnVtYmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXQVNNTWFnaWNOdW1iZXJfaAotI2RlZmluZSBXQVNNTWFnaWNOdW1iZXJfaAotCi0jaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3RhdGljIGNvbnN0IHVp
bnQzMl90IHdhc21NYWdpY051bWJlciA9IDB4NmQ3MzYxNzc7Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQotCi0jZW5kaWYgLy8gV0FTTU1hZ2lj
TnVtYmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1
bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNl
ci5jcHAKaW5kZXggMjMxNDhlMjY0MTI1NDUxOWZiZmMxNzc4N2FlYzEyNWZmMzgwMjhlMi4uOGYz
MGE5ZjkxZmNjN2QwZDQ0ZTY2YTk2OTE2ZDA3N2JlMmI0MmMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTMxLDcgKzMxLDggQEAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5j
bHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIldBU01NYWdpY051bWJlci5oIgorI2lu
Y2x1ZGUgIldBU01Db25zdGFudHMuaCIKKyNpbmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjZGVmaW5lIEZBSUxfV0lUSF9NRVNTQUdF
KGVycm9yTWVzc2FnZSkgZG8geyBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsgcmV0dXJu
OyB9IHdoaWxlICgwKQpAQCAtNDksNyArNTAsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdBU01N
b2R1bGVQYXJzZXI6OldBU01Nb2R1bGVQYXJzZXIoY29uc3QgU291cmNlQ29kZSYgc291cmNlKQot
ICAgIDogbV9yZWFkZXIoc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcio+KHNv
dXJjZS5wcm92aWRlcigpKS0+ZGF0YSgpKQorICAgIDogbV9zb3VyY2Uoc291cmNlKQorICAgICwg
bV9yZWFkZXIoc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcio+KHNvdXJjZS5w
cm92aWRlcigpKS0+ZGF0YSgpKQogewogfQogCkBAIC0yNDcsMjUgKzI0OSwyMiBAQCB2b2lkIFdB
U01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25Qb2ludGVyVGFibGVTZWN0aW9uKCkKIAogdm9p
ZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvblNlY3Rpb24oKQogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9tb2R1bGUtPmZ1bmN0aW9uRGVjbGFyYXRpb25z
KCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKTsKKyAg
ICBmb3IgKHNpemVfdCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxl
LT5mdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytmdW5jdGlvbkluZGV4KSB7CisgICAg
ICAgIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBQUk9Q
QUdBVEVfRVJST1IoKTsKICAgICB9CiB9CiAKLXZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VG
dW5jdGlvbkRlZmluaXRpb24oKQordm9pZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9u
RGVmaW5pdGlvbihzaXplX3QgZnVuY3Rpb25JbmRleCkKIHsKLSAgICAvLyBGSVhNRTogU3VwcG9y
dCBhbnkgZnVuY3Rpb25zLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3NzM4Ci0gICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rpb25zIHRoYXQg
aGF2ZSAicmV0dXJuIDA7IiBhcyB0aGVpciBvbmx5IHN0YXRlbWVudC4KLSAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgY29uc2lzdCBvZiBleGFjdGx5IDQgYnl0ZXMsIGkuZS4KLSAgICAvLyAxLiBUaGUg
bnVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlcyAoMCkgWzB4ODBdCi0gICAgLy8gMi4gVGhlIG51bWJl
ciBvZiBzdGF0ZW1lbnRzICgxKSBbMHgwMV0KLSAgICAvLyAzLiBUaGUgcmV0dXJuIHN0YXRlbWVu
dCBbMHgwZl0KLSAgICAvLyA0LiBUaGUgaW1tZWRpYXRlIGV4cHJlc3Npb24gKDApIFsweGEwXQot
ICAgIHVpbnQzMl90IGZ1bmN0aW9uRGVmaW5pdGlvbkJ5dGVzOwotICAgIFJFQURfVUlOVDMyX09S
X0ZBSUwoZnVuY3Rpb25EZWZpbml0aW9uQnl0ZXMsICJDYW5ub3QgcmVhZCB0aGUgZnVuY3Rpb24g
ZGVmaW5pdGlvbi4iKTsKLSAgICBGQUlMX0lGX0ZBTFNFKGZ1bmN0aW9uRGVmaW5pdGlvbkJ5dGVz
ID09IDB4YTAwZjAxODAsICJPbmx5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgXCJyZXR1cm4gMDtcIiAi
Ci0gICAgICAgICJhcyB0aGVpciBvbmx5IHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkIGF0IHRoZSBt
b21lbnQuIik7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRJblNvdXJjZSA9IG1fcmVhZGVyLm9m
ZnNldCgpOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEluU291cmNlOworICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2U7CisgICAgaWYgKCFXQVNNRnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KG1fbW9k
dWxlLmdldCgpLCBtX3NvdXJjZSwgZnVuY3Rpb25JbmRleCwgc3RhcnRPZmZzZXRJblNvdXJjZSwg
ZW5kT2Zmc2V0SW5Tb3VyY2UsIGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgbV9lcnJvck1lc3Nh
Z2UgPSBlcnJvck1lc3NhZ2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9yZWFkZXIu
c2V0T2Zmc2V0KGVuZE9mZnNldEluU291cmNlKTsKIH0KIAogdm9pZCBXQVNNTW9kdWxlUGFyc2Vy
OjpwYXJzZUV4cG9ydFNlY3Rpb24oKQpAQCAtMzAxLDggKzMwMCw4IEBAIHZvaWQgV0FTTU1vZHVs
ZVBhcnNlcjo6cGFyc2VFeHBvcnRTZWN0aW9uKCkKIAogSlNXQVNNTW9kdWxlKiBwYXJzZVdlYkFz
c2VtYmx5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKIHsKLSAgICBXQVNNTW9kdWxlUGFyc2VyIFdBU01Nb2R1bGVQYXJzZXIo
c291cmNlKTsKLSAgICByZXR1cm4gV0FTTU1vZHVsZVBhcnNlci5wYXJzZShleGVjLT52bSgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGVycm9yTWVzc2FnZSk7CisgICAgV0FTTU1vZHVs
ZVBhcnNlciBtb2R1bGVQYXJzZXIoc291cmNlKTsKKyAgICByZXR1cm4gbW9kdWxlUGFyc2VyLnBh
cnNlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXJyb3JNZXNzYWdl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmgKaW5kZXggNWVjNWZkMzg4NWQyZTAyMGNiOWY1YmQ0ZGZhMmI2
NTZkMzc5MDlkNy4uMzBmMWE1NjU5ODhjNjAxNGI1NDVmYzFjNmMyNmMwOTNkOGZiNTQwZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApAQCAtNTQs
OSArNTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvblNl
Y3Rpb24oKTsKICAgICB2b2lkIHBhcnNlRnVuY3Rpb25Qb2ludGVyVGFibGVTZWN0aW9uKCk7CiAg
ICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvblNlY3Rpb24oKTsKLSAgICB2b2lkIHBhcnNl
RnVuY3Rpb25EZWZpbml0aW9uKCk7CisgICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbihz
aXplX3QgZnVuY3Rpb25JbmRleCk7CiAgICAgdm9pZCBwYXJzZUV4cG9ydFNlY3Rpb24oKTsKIAor
ICAgIGNvbnN0IFNvdXJjZUNvZGUmIG1fc291cmNlOwogICAgIFdBU01SZWFkZXIgbV9yZWFkZXI7
CiAgICAgU3Ryb25nPEpTV0FTTU1vZHVsZT4gbV9tb2R1bGU7CiAgICAgU3RyaW5nIG1fZXJyb3JN
ZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmNwcAppbmRleCAy
OGUxMzU3YTEzNWY0MjcyNTNkNDNiOTU5M2Y0MjI4N2RjZGUxYjk2Li40ODU3NmJiNDczNmIxM2Q5
NjFjM2ZlNGVmYzVlZjQ2YTBmM2QzYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNUmVhZGVyLmNwcApAQCAtMjEsNiArMjEsMjMgQEAKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgYnkgdGhlIHJlcG9zaXRvcnkgYXV0aG9ycyBvZgorICogV2ViQXNzZW1ibHkv
cG9seWZpbGwtcHJvdG90eXBlLTEuCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICog
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtOTcs
NiArMTE0LDI4IEBAIGJvb2wgV0FTTVJlYWRlcjo6cmVhZENvbXBhY3RVSW50MzIodWludDMyX3Qm
IHJlc3VsdCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgV0FTTVJlYWRlcjo6cmVhZENv
bXBhY3RJbnQzMih1aW50MzJfdCYgcmVzdWx0KQoreworICAgIHVpbnQzMl90IHN1bSA9IDA7Cisg
ICAgdW5zaWduZWQgc2hpZnQgPSAwOworICAgIGRvIHsKKyAgICAgICAgQ0hFQ0tfUkVBRCgxKTsK
KyAgICAgICAgdWludDhfdCBieXRlID0gKm1fY3Vyc29yKys7CisgICAgICAgIGlmIChieXRlIDwg
MHg4MCkgeworICAgICAgICAgICAgc3VtIHw9IGJ5dGUgPDwgc2hpZnQ7CisgICAgICAgICAgICBp
bnQgc2lnbkV4dGVuZCA9ICgzMiAtIDcpIC0gc2hpZnQ7CisgICAgICAgICAgICBpZiAoc2lnbkV4
dGVuZCA+IDApCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaW50MzJfdChzdW0pIDw8IHNpZ25F
eHRlbmQgPj4gc2lnbkV4dGVuZDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBpbnQzMl90KHN1bSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICBzdW0gfD0gKGJ5dGUgJiBmaXJzdFNldmVuQml0c01hc2spIDw8IHNoaWZ0Owor
ICAgICAgICBzaGlmdCArPSA3OworICAgIH0gd2hpbGUgKHNoaWZ0IDwgMzUpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwogYm9vbCBXQVNNUmVhZGVyOjpyZWFkU3RyaW5nKFN0cmluZyYgcmVzdWx0
KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKQEAgLTExMywxNyArMTUyLDE3IEBAIGJv
b2wgV0FTTVJlYWRlcjo6cmVhZFN0cmluZyhTdHJpbmcmIHJlc3VsdCkKIAogYm9vbCBXQVNNUmVh
ZGVyOjpyZWFkVHlwZShXQVNNVHlwZSYgcmVzdWx0KQogewotICAgIHJldHVybiByZWFkQnl0ZTxX
QVNNVHlwZT4ocmVzdWx0LCAodWludDhfdClXQVNNVHlwZTo6TnVtYmVyT2ZUeXBlcyk7CisgICAg
cmV0dXJuIHJlYWRCeXRlPFdBU01UeXBlPihyZXN1bHQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdB
U01UeXBlOjpOdW1iZXJPZlR5cGVzKSk7CiB9CiAKIGJvb2wgV0FTTVJlYWRlcjo6cmVhZEV4cHJl
c3Npb25UeXBlKFdBU01FeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewotICAgIHJldHVybiByZWFk
Qnl0ZTxXQVNNRXhwcmVzc2lvblR5cGU+KHJlc3VsdCwgKHVpbnQ4X3QpV0FTTUV4cHJlc3Npb25U
eXBlOjpOdW1iZXJPZkV4cHJlc3Npb25UeXBlcyk7CisgICAgcmV0dXJuIHJlYWRCeXRlPFdBU01F
eHByZXNzaW9uVHlwZT4ocmVzdWx0LCBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNRXhwcmVzc2lv
blR5cGU6Ok51bWJlck9mRXhwcmVzc2lvblR5cGVzKSk7CiB9CiAKIGJvb2wgV0FTTVJlYWRlcjo6
cmVhZEV4cG9ydEZvcm1hdChXQVNNRXhwb3J0Rm9ybWF0JiByZXN1bHQpCiB7Ci0gICAgcmV0dXJu
IHJlYWRCeXRlPFdBU01FeHBvcnRGb3JtYXQ+KHJlc3VsdCwgKHVpbnQ4X3QpV0FTTUV4cG9ydEZv
cm1hdDo6TnVtYmVyT2ZFeHBvcnRGb3JtYXRzKTsKKyAgICByZXR1cm4gcmVhZEJ5dGU8V0FTTUV4
cG9ydEZvcm1hdD4ocmVzdWx0LCBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNRXhwb3J0Rm9ybWF0
OjpOdW1iZXJPZkV4cG9ydEZvcm1hdHMpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wg
V0FTTVJlYWRlcjo6cmVhZEJ5dGUoVCYgcmVzdWx0LCB1aW50OF90IG51bWJlck9mVmFsdWVzKQpA
QCAtMTM2LDYgKzE3NSw1MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBXQVNNUmVhZGVyOjpy
ZWFkQnl0ZShUJiByZXN1bHQsIHVpbnQ4X3QgbnVtYmVyT2ZWYWx1ZXMpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgV0FTTVJlYWRlcjo6cmVhZE9wU3RhdGVtZW50KGJvb2wmIGhhc0ltbWVk
aWF0ZSwgV0FTTU9wU3RhdGVtZW50JiBvcCwgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZSYg
b3BXaXRoSW1tZWRpYXRlLCB1aW50OF90JiBpbW1lZGlhdGUpCit7CisgICAgcmV0dXJuIHJlYWRP
cChoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTU9wU3RhdGVtZW50OjpOdW1iZXJPZldBU01PcFN0YXRl
bWVudHMpLAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNT3BTdGF0ZW1lbnRXaXRo
SW1tZWRpYXRlOjpOdW1iZXJPZldBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGVzKSk7Cit9CisK
K2Jvb2wgV0FTTVJlYWRlcjo6cmVhZE9wRXhwcmVzc2lvbkkzMihib29sJiBoYXNJbW1lZGlhdGUs
IFdBU01PcEV4cHJlc3Npb25JMzImIG9wLCBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0
ZSYgb3BXaXRoSW1tZWRpYXRlLCB1aW50OF90JiBpbW1lZGlhdGUpCit7CisgICAgcmV0dXJuIHJl
YWRPcChoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTU9wRXhwcmVzc2lvbkkzMjo6TnVtYmVyT2ZXQVNN
T3BFeHByZXNzaW9uSTMycyksCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01PcEV4
cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlOjpOdW1iZXJPZldBU01PcEV4cHJlc3Npb25JMzJXaXRo
SW1tZWRpYXRlcykpOworfQorCitib29sIFdBU01SZWFkZXI6OnJlYWRWYXJpYWJsZVR5cGVzKGJv
b2wmIGhhc0ltbWVkaWF0ZSwgV0FTTVZhcmlhYmxlVHlwZXMmIHZhcmlhYmxlVHlwZXMsIFdBU01W
YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSYgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUsIHVp
bnQ4X3QmIGltbWVkaWF0ZSkKK3sKKyAgICByZXR1cm4gcmVhZE9wKGhhc0ltbWVkaWF0ZSwgdmFy
aWFibGVUeXBlcywgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6Ok51bWJlck9mVmFyaWFi
bGVUeXBlcyksCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYXJpYWJsZVR5cGVz
V2l0aEltbWVkaWF0ZTo6TnVtYmVyT2ZWYXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZXMpKTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFRXaXRoSW1tZWRpYXRlPgorYm9vbCBXQVNNUmVh
ZGVyOjpyZWFkT3AoYm9vbCYgaGFzSW1tZWRpYXRlLCBUJiBvcCwgVFdpdGhJbW1lZGlhdGUmIG9w
V2l0aEltbWVkaWF0ZSwgdWludDhfdCYgaW1tZWRpYXRlLCB1aW50OF90IG51bWJlck9mVmFsdWVz
LCB1aW50OF90IG51bWJlck9mVmFsdWVzV2l0aEltbWVkaWF0ZSkKK3sKKyAgICBDSEVDS19SRUFE
KDEpOworICAgIHVpbnQ4X3QgYnl0ZSA9ICptX2N1cnNvcisrOworCisgICAgaWYgKCEoYnl0ZSAm
IGhhc0ltbWVkaWF0ZUluT3BGbGFnKSkgeworICAgICAgICBpZiAoYnl0ZSA+PSBudW1iZXJPZlZh
bHVlcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaGFzSW1tZWRpYXRlID0g
ZmFsc2U7CisgICAgICAgIG9wID0gVChieXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgdWludDhfdCBieXRlV2l0aG91dEltbWVkaWF0ZSA9IChieXRlID4+IGltbWVkaWF0
ZUJpdHMpICYgKG9wV2l0aEltbWVkaWF0ZUxpbWl0IC0gMSk7CisgICAgaWYgKGJ5dGVXaXRob3V0
SW1tZWRpYXRlID49IG51bWJlck9mVmFsdWVzV2l0aEltbWVkaWF0ZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGhhc0ltbWVkaWF0ZSA9IHRydWU7CisgICAgb3BXaXRoSW1tZWRpYXRlID0g
VFdpdGhJbW1lZGlhdGUoYnl0ZVdpdGhvdXRJbW1lZGlhdGUpOworICAgIGltbWVkaWF0ZSA9IGJ5
dGUgJiAoaW1tZWRpYXRlTGltaXQgLSAxKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmgKaW5kZXggNzZlYTI2YjZkZjdiZjg1MDg1YTE2ZWEx
MzM4ODMwYTkzZjM0MmMyMS4uYTZhZGRjYjczNjU0YWY3YjQ3Nzg3ZGM5ZGVhNTI3YjIxNGJhNGY3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuaApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiV0FTTUNvbnN0YW50
cy5oIgogI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTQxLDE5ICs0MiwyNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIHVuc2lnbmVk
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vyc29yIC0gbV9idWZmZXIuZGF0YSgpOyB9Cisg
ICAgdm9pZCBzZXRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSB7IG1fY3Vyc29yID0gbV9idWZmZXIu
ZGF0YSgpICsgb2Zmc2V0OyB9CisKICAgICBib29sIHJlYWRVSW50MzIodWludDMyX3QmIHJlc3Vs
dCk7CiAgICAgYm9vbCByZWFkRmxvYXQoZmxvYXQmIHJlc3VsdCk7CiAgICAgYm9vbCByZWFkRG91
YmxlKGRvdWJsZSYgcmVzdWx0KTsKICAgICBib29sIHJlYWRDb21wYWN0VUludDMyKHVpbnQzMl90
JiByZXN1bHQpOworICAgIGJvb2wgcmVhZENvbXBhY3RJbnQzMih1aW50MzJfdCYgcmVzdWx0KTsK
ICAgICBib29sIHJlYWRTdHJpbmcoU3RyaW5nJiByZXN1bHQpOwogICAgIGJvb2wgcmVhZFR5cGUo
V0FTTVR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCByZWFkRXhwcmVzc2lvblR5cGUoV0FTTUV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwogICAgIGJvb2wgcmVhZEV4cG9ydEZvcm1hdChXQVNNRXhwb3J0
Rm9ybWF0JiByZXN1bHQpOworICAgIGJvb2wgcmVhZE9wU3RhdGVtZW50KGJvb2wmIGhhc0ltbWVk
aWF0ZSwgV0FTTU9wU3RhdGVtZW50JiwgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZSYsIHVp
bnQ4X3QmIGltbWVkaWF0ZSk7CisgICAgYm9vbCByZWFkT3BFeHByZXNzaW9uSTMyKGJvb2wmIGhh
c0ltbWVkaWF0ZSwgV0FTTU9wRXhwcmVzc2lvbkkzMiYsIFdBU01PcEV4cHJlc3Npb25JMzJXaXRo
SW1tZWRpYXRlJiwgdWludDhfdCYgaW1tZWRpYXRlKTsKKyAgICBib29sIHJlYWRWYXJpYWJsZVR5
cGVzKGJvb2wmIGhhc0ltbWVkaWF0ZSwgV0FTTVZhcmlhYmxlVHlwZXMmLCBXQVNNVmFyaWFibGVU
eXBlc1dpdGhJbW1lZGlhdGUmLCB1aW50OF90JiBpbW1lZGlhdGUpOwogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCB1aW50MzJfdCBmaXJzdFNldmVuQml0c01hc2sgPSAweDdmOwogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmVhZEJ5dGUoVCYgcmVzdWx0LCB1aW50OF90IG51bWJl
ck9mVmFsdWVzKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVFdpdGhJbW1lZGlhdGU+
IGJvb2wgcmVhZE9wKGJvb2wmIGhhc0ltbWVkaWF0ZSwgVCYsIFRXaXRoSW1tZWRpYXRlJiwgdWlu
dDhfdCYgaW1tZWRpYXRlLCB1aW50OF90IG51bWJlck9mVmFsdWVzLCB1aW50OF90IG51bWJlck9m
VmFsdWVzV2l0aEltbWVkaWF0ZSk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1fYnVm
ZmVyOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fY3Vyc29yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259562</attachid>
            <date>2015-08-20 19:19:13 -0700</date>
            <delta_ts>2015-08-21 08:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147738-20150820191907.patch</filename>
            <type>text/plain</type>
            <size>57266</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4Njk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTgwNTRiMmUyYjVjMmVlYzg5ZTNiM2JmNmQzZjQ0ZjljZDBhNDcxLi40YWYwOTNmZDRlMThlNmI0
M2Q4ZDQ1ZTAxYmQyNDA5NDQ3MTU1ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNS0wOC0yMCAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2VyIGZvciBXZWJBc3NlbWJseSBmaWxlcyBwcm9k
dWNlZCBieSBwYWNrLWFzbWpzCisgICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1i
bHkvcG9seWZpbGwtcHJvdG90eXBlLTE+LiBUaGlzIHBhdGNoIHBhcnNlcyBvbmx5CisgICAgICAg
IHNvbWUgaW5zdHJ1Y3Rpb25zIG9uIHN0YXRlbWVudHMgYW5kIGludDMyIGV4cHJlc3Npb25zLiBQ
YXJzaW5nIG9mIHRoZSByZXN0CisgICAgICAgIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gc3Vic2Vx
dWVudCBwYXRjaGVzLiBUaGUgaW5zdHJ1Y3Rpb24gbGlzdHMgaW4gV0FTTUNvbnN0YW50cy5oCisg
ICAgICAgIGFyZSBzbGlnaHRseSBtb2RpZmllZCBmcm9tCisgICAgICAgIDxodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvcG9seWZpbGwtcHJvdG90eXBlLTEvYmxvYi9tYXN0ZXIvc3JjL3No
YXJlZC5oPi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdh
c20vV0FTTUNvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUxvY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVu
Y3Rpb25QYXJzZXI6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VDb25zdGFudFBvb2xJbmRleEV4cHJlc3Npb25JMzIpOgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMik6Cisg
ICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OldBU01GdW5jdGlvblBhcnNlcjo6V0FTTUZ1bmN0aW9uUGFyc2VyKToKKyAgICAgICAgKiB3YXNt
L1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01NYWdpY051bWJlci5oLgorICAgICAgICAqIHdhc20vV0FTTU1vZHVs
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJzZXI6OldBU01Nb2R1bGVQ
YXJzZXIpOgorICAgICAgICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVm
aW5pdGlvblNlY3Rpb24pOgorICAgICAgICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChKU0M6OnBhcnNlV2ViQXNzZW1ibHkpOgorICAg
ICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5oOgorICAgICAgICAqIHdhc20vV0FTTVJlYWRl
ci5jcHA6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRUeXBlKToKKyAgICAgICAgKEpT
Qzo6V0FTTVJlYWRlcjo6cmVhZEV4cHJlc3Npb25UeXBlKToKKyAgICAgICAgKEpTQzo6V0FTTVJl
YWRlcjo6cmVhZEV4cG9ydEZvcm1hdCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRP
cFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcEV4cHJlc3Npb25J
MzIpOgorICAgICAgICAoSlNDOjpXQVNNUmVhZGVyOjpyZWFkVmFyaWFibGVUeXBlcyk6CisgICAg
ICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcCk6CisgICAgICAgICogd2FzbS9XQVNNUmVhZGVy
Lmg6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6Om9mZnNldCk6CisgICAgICAgIChKU0M6OldB
U01SZWFkZXI6OnNldE9mZnNldCk6CisKIDIwMTUtMDgtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIHB1dF9ieV9pZCBsaWtlIElD
IGludG8gcHV0X2J5X3ZhbCB3aGVuIHRoZSBnaXZlbiBuYW1lIGlzIFN0cmluZyBvciBTeW1ib2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwOWQyNGJhYmIwYTQxMTI0NTc2
YWVhNDFhODVkMmUyODk3NjYzOWI3Li5iNDkwMGU4MTBjNjgzZDE5NWRmYjUzOTBhOTMwZDgwYmNm
NDQ3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MjQsNiArNDI0
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB0b29scy9KU0RvbGxhclZNUHJv
dG90eXBlLmNwcAogCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUuY3BwCisgICAgd2FzbS9XQVNNRnVu
Y3Rpb25QYXJzZXIuY3BwCisgICAgd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmNwcAog
ICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKICAgICB3YXNtL1dBU01SZWFkZXIuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDZmZGJiMWYwOWI4Nzhh
NDRkNDg2Y2IyMmM3NzQyOWQ1NjRkM2NhZjIuLjJkMzhjMTc0ZTJiM2I5NmYyMTI2Y2IzY2NlNmUw
OTliMTZiZDFjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
ODkxLDYgKzg5MSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xKU0RvbGxh
clZNLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xzXEpTRG9sbGFyVk1Q
cm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxKU1dBU01N
b2R1bGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRnVuY3Rp
b25QYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNTW9k
dWxlUGFyc2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTVJl
YWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx5YXJyXFJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcCIgLz4KQEAgLTE3ODMsOCArMTc4NCwxMCBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cdG9vbHNcUHJvZmlsZVRyZWVOb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx0b29sc1xUaWVyZWRNTWFwQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHdhc21cSlNXQVNNTW9kdWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3YXNtXFdBU01Db25zdGFudHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdh
c21cV0FTTUZvcm1hdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNN
TWFnaWNOdW1iZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1
bmN0aW9uUGFyc2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01G
dW5jdGlvblN5bnRheENoZWNrZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdh
c21cV0FTTU1vZHVsZVBhcnNlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2Fz
bVxXQVNNUmVhZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx5YXJyXFJlZ3Vs
YXJFeHByZXNzaW9uLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggNjJhMTM3YTJjYjZjYjJhOTFkMzVmMGQ1NTI1NDk3YjU0ODk2
ZTdlOS4uOGI0OWE0YTE3OGIzNjk0MTcyYWQ4OWZjZTdjZmZiMjcyYzc0ODZjNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTgzOCw2
ICsxODM4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cSlNXQVNNTW9kdWxl
LmNwcCI+CiAgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCI+Cisg
ICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1vZHVsZVBhcnNlci5jcHAiPgogICAgICAgPEZpbHRl
cj53YXNtPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00NDExLDEwICs0NDE0LDE2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXEpTV0FTTU1vZHVsZS5oIj4KICAgICAg
IDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd2FzbVxXQVNNQ29uc3RhbnRzLmgiPgorICAgICAgPEZpbHRlcj53YXNtPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNt
XFdBU01Gb3JtYXQuaCI+CiAgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1hZ2ljTnVtYmVyLmgi
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRnVuY3Rpb25QYXJzZXIuaCI+
CisgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oIj4KICAg
ICAgIDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNTW9kdWxlUGFyc2VyLmgiPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhMzQwMTcyMzgzZDQyZTYxODUyNDllZWY4NDQxMjQ1MjM2ZWE2OGI4
Li44MjI2MTkyMjQzMDRjNDM4ZDcxOTc1YzMwNDEwNTUwZGY4YWMzM2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTAzMiwxMSArMTAzMiwxNCBAQAogCQk3MEVDQTYwOTFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlUmVnaXN0cnlLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9u
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUVFMEJGRDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgKi87IH07
CiAJCTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUVFMEJGRTFCNEFG
Qjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCMDI0NzU1MUI4NjgyREQwMDU0MjQ0MCAv
KiBXQVNNQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjAyNDc1MjFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUNvbnN0YW50cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCMDI0NzU2MUI4
NjgyRTEwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IwMjQ3NTMxQjg2ODJENTAwNTQyNDQwIC8q
IFdBU01GdW5jdGlvblBhcnNlci5jcHAgKi87IH07CisJCTdCMDI0NzU3MUI4NjgyRTQwMDU0MjQ0
MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCMDI0NzU0MUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25Q
YXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3QjAyNDc1OTFCODY4RUI3MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IwMjQ3NTgx
Qjg2OEVBRTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjM5Rjc2RDFCNjJERTJF
MDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc2OTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1v
ZHVsZVBhcnNlci5jcHAgKi87IH07CiAJCTdCMzlGNzZFMUI2MkRFMzIwMDM2MEZCNCAvKiBXQVNN
TW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjM5Rjc2QTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMzlGNzcwMUI2
MkRFMzIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc2QzFCNjJERTIyMDAzNjBGQjQgLyogV0FTTVJlYWRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
MzlGNzcyMUI2MzU3NEQwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzlGNzcxMUI2MzU3NEIwMDM2MEZCNCAv
KiBXQVNNUmVhZGVyLmNwcCAqLzsgfTsKLQkJN0I3QTVFMjcxQjY4Mjg4QzAwMjdDQUQwIC8qIFdB
U01NYWdpY051bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3QTVFMjYxQjY4Mjg4NDAwMjdDQUQwIC8qIFdBU01NYWdpY051bWJlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOThEMTM2MUI2
MENENUYwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5OEQxMzQxQjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FT
TU1vZHVsZS5jcHAgKi87IH07CiAJCTdCOThEMTM3MUI2MENENjIwMDIzQjFBNCAvKiBKU1dBU01N
b2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OThEMTM1MUI2MENENUEwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkM1NDdEMzFCNjk1OUExMDA5NTlC
NTggLyogV0FTTUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjg0MCwxMSArMjg0
MywxNCBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtl
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RUUwQkZEMUI0QUZCODUwMDAzODVD
OSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMDI0NzUyMUI4NjgyRDUwMDU0MjQ0MCAv
KiBXQVNNQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01D
b25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IwMjQ3NTMxQjg2ODJE
NTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXQVNNRnVuY3Rpb25QYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjAyNDc1NDFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01GdW5jdGlvblBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjAyNDc1ODFCODY4RUFFMDA1NDI0
NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCMzlGNzY5MUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01Nb2R1bGVQYXJz
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjM5Rjc2QTFCNjJERTIyMDAz
NjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXQVNNTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
MzlGNzZDMUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdBU01SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0IzOUY3NzExQjYzNTc0QjAwMzYwRkI0IC8qIFdBU01SZWFkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdCN0E1RTI2MUI2ODI4ODQwMDI3Q0FEMCAvKiBXQVNNTWFnaWNOdW1i
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1hZ2ljTnVtYmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOThEMTM0MUI2MENENUEwMDIzQjFBNCAv
KiBKU1dBU01Nb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXQVNNTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5OEQxMzUx
QjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1dBU01Nb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0FTTUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDQ0MCw4ICs0NDQ2LDExIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3Qjk4RDEzNDFC
NjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmNwcCAqLywKIAkJCQk3Qjk4RDEzNTFCNjBD
RDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmggKi8sCisJCQkJN0IwMjQ3NTIxQjg2ODJENTAw
NTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlC
NTggLyogV0FTTUZvcm1hdC5oICovLAotCQkJCTdCN0E1RTI2MUI2ODI4ODQwMDI3Q0FEMCAvKiBX
QVNNTWFnaWNOdW1iZXIuaCAqLywKKwkJCQk3QjAyNDc1MzFCODY4MkQ1MDA1NDI0NDAgLyogV0FT
TUZ1bmN0aW9uUGFyc2VyLmNwcCAqLywKKwkJCQk3QjAyNDc1NDFCODY4MkQ1MDA1NDI0NDAgLyog
V0FTTUZ1bmN0aW9uUGFyc2VyLmggKi8sCisJCQkJN0IwMjQ3NTgxQjg2OEVBRTAwNTQyNDQwIC8q
IFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCAqLywKIAkJCQk3QjM5Rjc2OTFCNjJERTIyMDAz
NjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8sCiAJCQkJN0IzOUY3NkExQjYyREUyMjAw
MzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLywKIAkJCQk3QjM5Rjc3MTFCNjM1NzRCMDAz
NjBGQjQgLyogV0FTTVJlYWRlci5jcHAgKi8sCkBAIC01OTY0LDYgKzU5NzMsNyBAQAogCQkJCUE3
N0YxODIyMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3QjAyNDc1OTFCODY4RUI3MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRC
Q0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRjMw
RTE2RjVDRDAwQjM0NDYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKQEAg
LTYyMjMsNiArNjIzMyw3IEBACiAJCQkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExp
bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExM
b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjAy
NDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0uaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVk
Tm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAg
LyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLApAQCAtNjYxMSw2ICs2NjIyLDcgQEAKIAkJ
CQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0NTEwRTE2RjVDRDAwQjM0NDYwIC8qIFByb2ZpbGVOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRl
Y29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IwMjQ3NTUxQjg2ODJERDAwNTQyNDQwIC8qIFdB
U01Db25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUI5MTY2QUQzNjAwMDBGNUJB
MyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMzkxMkExNjc3
MUMzNjAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtNjYzNCw3ICs2NjQ2LDYgQEAKIAkJCQlCQzE4QzQ1NDBFMTZGNUNE
MDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcx
NjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc4NUY2QkMxOEM1NTNGRTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJN0I3QTVFMjcxQjY4Mjg4QzAwMjdDQUQwIC8qIFdBU01NYWdpY051bWJl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUMxNUVEOEU0NjAwRjE2N0IyIC8q
IFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2RkM3NTExOTYxMTBBODAw
RTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzU2Nyw2ICs3
NTc4LDcgQEAKIAkJCQkwRjVBNjI4MzE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDQjEwN0VDMzc2MDA0MjdBNDgg
LyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjAyNDc1NjFC
ODY4MkUxMDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRjBGMTlGMTZCNzJBMTcwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUyQjMxMEZEMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0MxMDdFQzM3
NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNvbnN0YW50cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNvbnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlOGI2ZDIy
NTYzNmE2OTgyMjg0MzM3YTNiY2ZhNGVmZjg0MTZjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ29uc3RhbnRzLmgKQEAgLTAsMCArMSwyMDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1IGJ5IHRoZSByZXBvc2l0b3J5IGF1dGhv
cnMgb2YKKyAqIFdlYkFzc2VtYmx5L3BvbHlmaWxsLXByb3RvdHlwZS0xLgorICoKKyAqIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
ICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5k
ZWYgV0FTTUNvbnN0YW50c19oCisjZGVmaW5lIFdBU01Db25zdGFudHNfaAorCisjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90
IHdhc21NYWdpY051bWJlciA9IDB4NmQ3MzYxNzc7CisKK2VudW0gY2xhc3MgV0FTTU9wU3RhdGVt
ZW50IDogdWludDhfdCB7CisgICAgU2V0TG9jYWwsCisgICAgU2V0R2xvYmFsLAorICAgIEkzMlN0
b3JlOCwKKyAgICBJMzJTdG9yZVdpdGhPZmZzZXQ4LAorICAgIEkzMlN0b3JlMTYsCisgICAgSTMy
U3RvcmVXaXRoT2Zmc2V0MTYsCisgICAgSTMyU3RvcmUzMiwKKyAgICBJMzJTdG9yZVdpdGhPZmZz
ZXQzMiwKKyAgICBGMzJTdG9yZSwKKyAgICBGMzJTdG9yZVdpdGhPZmZzZXQsCisgICAgRjY0U3Rv
cmUsCisgICAgRjY0U3RvcmVXaXRoT2Zmc2V0LAorICAgIENhbGxJbnRlcm5hbCwKKyAgICBDYWxs
SW5kaXJlY3QsCisgICAgQ2FsbEltcG9ydCwKKyAgICBSZXR1cm4sCisgICAgQmxvY2ssCisgICAg
SWYsCisgICAgSWZFbHNlLAorICAgIFdoaWxlLAorICAgIERvLAorICAgIExhYmVsLAorICAgIEJy
ZWFrLAorICAgIEJyZWFrTGFiZWwsCisgICAgQ29udGludWUsCisgICAgQ29udGludWVMYWJlbCwK
KyAgICBTd2l0Y2gsCisgICAgTnVtYmVyT2ZXQVNNT3BTdGF0ZW1lbnRzCit9OworCitlbnVtIGNs
YXNzIFdBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGUgOiB1aW50OF90IHsKKyAgICBTZXRMb2Nh
bCwKKyAgICBTZXRHbG9iYWwsCisgICAgTnVtYmVyT2ZXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRp
YXRlcworfTsKKworZW51bSBjbGFzcyBXQVNNT3BFeHByZXNzaW9uSTMyIDogdWludDhfdCB7Cisg
ICAgQ29uc3RhbnRQb29sSW5kZXgsCisgICAgSW1tZWRpYXRlLAorICAgIEdldExvY2FsLAorICAg
IEdldEdsb2JhbCwKKyAgICBTZXRMb2NhbCwKKyAgICBTZXRHbG9iYWwsCisgICAgU0xvYWQ4LAor
ICAgIFNMb2FkV2l0aE9mZnNldDgsCisgICAgVUxvYWQ4LAorICAgIFVMb2FkV2l0aE9mZnNldDgs
CisgICAgU0xvYWQxNiwKKyAgICBTTG9hZFdpdGhPZmZzZXQxNiwKKyAgICBVTG9hZDE2LAorICAg
IFVMb2FkV2l0aE9mZnNldDE2LAorICAgIExvYWQzMiwKKyAgICBMb2FkV2l0aE9mZnNldDMyLAor
ICAgIFN0b3JlOCwKKyAgICBTdG9yZVdpdGhPZmZzZXQ4LAorICAgIFN0b3JlMTYsCisgICAgU3Rv
cmVXaXRoT2Zmc2V0MTYsCisgICAgU3RvcmUzMiwKKyAgICBTdG9yZVdpdGhPZmZzZXQzMiwKKyAg
ICBDYWxsSW50ZXJuYWwsCisgICAgQ2FsbEluZGlyZWN0LAorICAgIENhbGxJbXBvcnQsCisgICAg
Q29uZGl0aW9uYWwsCisgICAgQ29tbWEsCisgICAgRnJvbUYzMiwKKyAgICBGcm9tRjY0LAorICAg
IE5lZ2F0ZSwKKyAgICBBZGQsCisgICAgU3ViLAorICAgIE11bCwKKyAgICBTRGl2LAorICAgIFVE
aXYsCisgICAgU01vZCwKKyAgICBVTW9kLAorICAgIEJpdE5vdCwKKyAgICBCaXRPciwKKyAgICBC
aXRBbmQsCisgICAgQml0WG9yLAorICAgIExlZnRTaGlmdCwKKyAgICBBcml0aG1ldGljUmlnaHRT
aGlmdCwKKyAgICBMb2dpY2FsUmlnaHRTaGlmdCwKKyAgICBDb3VudExlYWRpbmdaZXJvcywKKyAg
ICBMb2dpY2FsTm90LAorICAgIEVxdWFsSTMyLAorICAgIEVxdWFsRjMyLAorICAgIEVxdWFsRjY0
LAorICAgIE5vdEVxdWFsSTMyLAorICAgIE5vdEVxdWFsRjMyLAorICAgIE5vdEVxdWFsRjY0LAor
ICAgIFNMZXNzVGhhbkkzMiwKKyAgICBVTGVzc1RoYW5JMzIsCisgICAgTGVzc1RoYW5GMzIsCisg
ICAgTGVzc1RoYW5GNjQsCisgICAgU0xlc3NUaGFuT3JFcXVhbEkzMiwKKyAgICBVTGVzc1RoYW5P
ckVxdWFsSTMyLAorICAgIExlc3NUaGFuT3JFcXVhbEYzMiwKKyAgICBMZXNzVGhhbk9yRXF1YWxG
NjQsCisgICAgU0dyZWF0ZXJUaGFuSTMyLAorICAgIFVHcmVhdGVyVGhhbkkzMiwKKyAgICBHcmVh
dGVyVGhhbkYzMiwKKyAgICBHcmVhdGVyVGhhbkY2NCwKKyAgICBTR3JlYXRlclRoYW5PckVxdWFs
STMyLAorICAgIFVHcmVhdGVyVGhhbk9yRXF1YWxJMzIsCisgICAgR3JlYXRlclRoYW5PckVxdWFs
RjMyLAorICAgIEdyZWF0ZXJUaGFuT3JFcXVhbEY2NCwKKyAgICBTTWluLAorICAgIFVNaW4sCisg
ICAgU01heCwKKyAgICBVTWF4LAorICAgIEFicywKKyAgICBOdW1iZXJPZldBU01PcEV4cHJlc3Np
b25JMzJzCit9OworCitlbnVtIGNsYXNzIFdBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRl
IDogdWludDhfdCB7CisgICAgQ29uc3RhbnRQb29sSW5kZXgsCisgICAgSW1tZWRpYXRlLAorICAg
IEdldExvY2FsLAorICAgIE51bWJlck9mV0FTTU9wRXhwcmVzc2lvbkkzMldpdGhJbW1lZGlhdGVz
Cit9OworCitlbnVtIGNsYXNzIFdBU01WYXJpYWJsZVR5cGVzIDogdWludDhfdCB7CisgICAgSTMy
ID0gMSA8PCAwLAorICAgIEYzMiA9IDEgPDwgMSwKKyAgICBGNjQgPSAxIDw8IDIsCisgICAgTnVt
YmVyT2ZWYXJpYWJsZVR5cGVzID0gOAorfTsKKworZW51bSBjbGFzcyBXQVNNVmFyaWFibGVUeXBl
c1dpdGhJbW1lZGlhdGUgOiB1aW50OF90IHsKKyAgICBJMzIsCisgICAgTnVtYmVyT2ZWYXJpYWJs
ZVR5cGVzV2l0aEltbWVkaWF0ZXMKK307CisKK2VudW0gY2xhc3MgV0FTTUV4cG9ydEZvcm1hdCA6
IHVpbnQ4X3QgeworICAgIERlZmF1bHQsCisgICAgUmVjb3JkLAorICAgIE51bWJlck9mRXhwb3J0
Rm9ybWF0cworfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgaGFzSW1tZWRpYXRlSW5PcEZsYWcg
PSAweDgwOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgb3BXaXRoSW1tZWRpYXRlQml0cyA9IDI7
CitzdGF0aWMgY29uc3QgdWludDMyX3Qgb3BXaXRoSW1tZWRpYXRlTGltaXQgPSAxIDw8IG9wV2l0
aEltbWVkaWF0ZUJpdHM7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbW1lZGlhdGVCaXRzID0g
NTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBpbW1lZGlhdGVMaW1pdCA9IDEgPDwgaW1tZWRpYXRl
Qml0czsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1C
TFkpCisKKyNlbmRpZiAvLyBXQVNNQ29uc3RhbnRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01Gb3JtYXQuaAppbmRleCBhYmE5Zjk4YTBlNjY5NmRiY2NjZTE5MjI4OTIwYzMzOGYzMjc3
MWVlLi4wNzdiZjNhMjk4ZDBjMWNhNzY4NmYzMTc1MThjMWE5YjNmOTYzYzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCkBAIC02NSwxMiArNjUsNiBAQCBlbnVtIGNs
YXNzIFdBU01FeHByZXNzaW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIE51bWJlck9mRXhwcmVzc2lv
blR5cGVzCiB9OwogCi1lbnVtIGNsYXNzIFdBU01FeHBvcnRGb3JtYXQgOiB1aW50OF90IHsKLSAg
ICBEZWZhdWx0LAotICAgIFJlY29yZCwKLSAgICBOdW1iZXJPZkV4cG9ydEZvcm1hdHMKLX07Ci0K
IHN0cnVjdCBXQVNNU2lnbmF0dXJlIHsKICAgICBXQVNNRXhwcmVzc2lvblR5cGUgcmV0dXJuVHlw
ZTsKICAgICBWZWN0b3I8V0FTTVR5cGU+IGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZTM2ODI5
MzRiYzhiMmE0NDEwZWMxNTk3YmNlYTE2NjdhY2NjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCkBAIC0wLDAgKzEs
Mzk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldBU01GdW5jdGlvblBhcnNlci5oIgorCisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCisjaW5jbHVk
ZSAiV0FTTUZvcm1hdC5oIgorI2luY2x1ZGUgIldBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCIK
KworI2RlZmluZSBQUk9QQUdBVEVfRVJST1IoKSBkbyB7IGlmICghbV9lcnJvck1lc3NhZ2UuaXNO
dWxsKCkpIHJldHVybiAwOyB9IHdoaWxlICgwKQorI2RlZmluZSBGQUlMX1dJVEhfTUVTU0FHRShl
cnJvck1lc3NhZ2UpIGRvIHsgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOyByZXR1cm4g
MDsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVBRF9VSU5UMzJfT1JfRkFJTChyZXN1bHQsIGVycm9y
TWVzc2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRVSW50MzIocmVzdWx0KSkgRkFJTF9XSVRI
X01FU1NBR0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVBRF9GTE9BVF9P
Ul9GQUlMKHJlc3VsdCwgZXJyb3JNZXNzYWdlKSBkbyB7IGlmICghbV9yZWFkZXIucmVhZEZsb2F0
KHJlc3VsdCkpIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVzc2FnZSk7IH0gd2hpbGUgKDApCisj
ZGVmaW5lIFJFQURfRE9VQkxFX09SX0ZBSUwocmVzdWx0LCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYg
KCFtX3JlYWRlci5yZWFkRG91YmxlKHJlc3VsdCkpIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVz
c2FnZSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFQURfU1RSSU5HX09SX0ZBSUwocmVzdWx0LCBl
cnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkU3RyaW5nKHJlc3VsdCkpIEZBSUxf
V0lUSF9NRVNTQUdFKGVycm9yTWVzc2FnZSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFQURfQ09N
UEFDVF9VSU5UMzJfT1JfRkFJTChyZXN1bHQsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAoIW1fcmVh
ZGVyLnJlYWRDb21wYWN0VUludDMyKHJlc3VsdCkpIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVz
c2FnZSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFQURfRVhQUkVTU0lPTl9UWVBFX09SX0ZBSUwo
cmVzdWx0LCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkRXhwcmVzc2lvblR5
cGUocmVzdWx0KSkgRkFJTF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkK
KyNkZWZpbmUgUkVBRF9PUF9TVEFURU1FTlRfT1JfRkFJTChoYXNJbW1lZGlhdGUsIG9wLCBvcFdp
dGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwgZXJyb3JNZXNzYWdlKSBkbyB7IGlmICghbV9yZWFkZXIu
cmVhZE9wU3RhdGVtZW50KGhhc0ltbWVkaWF0ZSwgb3AsIG9wV2l0aEltbWVkaWF0ZSwgaW1tZWRp
YXRlKSkgRkFJTF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkKKyNkZWZp
bmUgUkVBRF9PUF9FWFBSRVNTSU9OX0kzMl9PUl9GQUlMKGhhc0ltbWVkaWF0ZSwgb3AsIG9wV2l0
aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5y
ZWFkT3BFeHByZXNzaW9uSTMyKGhhc0ltbWVkaWF0ZSwgb3AsIG9wV2l0aEltbWVkaWF0ZSwgaW1t
ZWRpYXRlKSkgRkFJTF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkKKyNk
ZWZpbmUgUkVBRF9WQVJJQUJMRV9UWVBFU19PUl9GQUlMKGhhc0ltbWVkaWF0ZSwgdmFyaWFibGVU
eXBlcywgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwgZXJyb3JNZXNzYWdl
KSBkbyB7IGlmICghbV9yZWFkZXIucmVhZFZhcmlhYmxlVHlwZXMoaGFzSW1tZWRpYXRlLCB2YXJp
YWJsZVR5cGVzLCB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlKSkgRkFJTF9X
SVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgRkFJTF9JRl9G
QUxTRShjb25kaXRpb24sIGVycm9yTWVzc2FnZSkgZG8ge1wKKyAgICBpZiAoIShjb25kaXRpb24p
KVwKKyAgICAgICAgRkFJTF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKTtcCit9IHdoaWxlICgw
KQorCisjZGVmaW5lIFVOVVNFRCAwCisKK25hbWVzcGFjZSBKU0MgeworCitib29sIFdBU01GdW5j
dGlvblBhcnNlcjo6Y2hlY2tTeW50YXgoSlNXQVNNTW9kdWxlKiBtb2R1bGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgc2l6ZV90IGZ1bmN0aW9uSW5kZXgsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
SW5Tb3VyY2UsIHVuc2lnbmVkJiBlbmRPZmZzZXRJblNvdXJjZSwgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit7CisgICAgV0FTTUZ1bmN0aW9uUGFyc2VyIHBhcnNlcihtb2R1bGUsIHNvdXJjZSwgZnVu
Y3Rpb25JbmRleCk7CisgICAgV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2Vy
OworICAgIHBhcnNlci5tX3JlYWRlci5zZXRPZmZzZXQoc3RhcnRPZmZzZXRJblNvdXJjZSk7Cisg
ICAgcGFyc2VyLnBhcnNlRnVuY3Rpb24oc3ludGF4Q2hlY2tlcik7CisgICAgaWYgKCFwYXJzZXIu
bV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAgICAgZXJyb3JNZXNzYWdlID0gcGFyc2Vy
Lm1fZXJyb3JNZXNzYWdlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVuZE9m
ZnNldEluU291cmNlID0gcGFyc2VyLm1fcmVhZGVyLm9mZnNldCgpOworICAgIHJldHVybiB0cnVl
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK2Jvb2wgV0FTTUZ1bmN0aW9uUGFyc2Vy
OjpwYXJzZUZ1bmN0aW9uKENvbnRleHQmIGNvbnRleHQpCit7CisgICAgY29uc3QgV0FTTVNpZ25h
dHVyZSYgc2lnbmF0dXJlID0gbV9tb2R1bGUtPnNpZ25hdHVyZXMoKVttX21vZHVsZS0+ZnVuY3Rp
b25EZWNsYXJhdGlvbnMoKVttX2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4XTsKKworICAg
IG1fcmV0dXJuVHlwZSA9IHNpZ25hdHVyZS5yZXR1cm5UeXBlOworCisgICAgcGFyc2VMb2NhbFZh
cmlhYmxlcygpOworICAgIFBST1BBR0FURV9FUlJPUigpOworCisgICAgY29uc3QgVmVjdG9yPFdB
U01UeXBlPiYgYXJndW1lbnRzID0gc2lnbmF0dXJlLmFyZ3VtZW50czsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9sb2NhbFR5cGVz
LmFwcGVuZChhcmd1bWVudHNbaV0pOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX251
bWJlck9mSTMyTG9jYWxWYXJpYWJsZXM7ICsraSkKKyAgICAgICAgbV9sb2NhbFR5cGVzLmFwcGVu
ZChXQVNNVHlwZTo6STMyKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9udW1iZXJP
ZkYzMkxvY2FsVmFyaWFibGVzOyArK2kpCisgICAgICAgIG1fbG9jYWxUeXBlcy5hcHBlbmQoV0FT
TVR5cGU6OkYzMik7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZGNjRM
b2NhbFZhcmlhYmxlczsgKytpKQorICAgICAgICBtX2xvY2FsVHlwZXMuYXBwZW5kKFdBU01UeXBl
OjpGNjQpOworCisgICAgcGFyc2VCbG9ja1N0YXRlbWVudChjb250ZXh0KTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlTG9jYWxWYXJpYWJsZXMo
KQoreworICAgIG1fbnVtYmVyT2ZJMzJMb2NhbFZhcmlhYmxlcyA9IDA7CisgICAgbV9udW1iZXJP
ZkYzMkxvY2FsVmFyaWFibGVzID0gMDsKKyAgICBtX251bWJlck9mRjY0TG9jYWxWYXJpYWJsZXMg
PSAwOworCisgICAgYm9vbCBoYXNJbW1lZGlhdGU7CisgICAgV0FTTVZhcmlhYmxlVHlwZXMgdmFy
aWFibGVUeXBlczsKKyAgICBXQVNNVmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUgdmFyaWFibGVU
eXBlc1dpdGhJbW1lZGlhdGU7CisgICAgdWludDhfdCBpbW1lZGlhdGU7CisgICAgUkVBRF9WQVJJ
QUJMRV9UWVBFU19PUl9GQUlMKGhhc0ltbWVkaWF0ZSwgdmFyaWFibGVUeXBlcywgdmFyaWFibGVU
eXBlc1dpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwgIkNhbm5vdCByZWFkIHRoZSB0eXBlcyBvZiBs
b2NhbCB2YXJpYWJsZXMuIik7CisgICAgaWYgKCFoYXNJbW1lZGlhdGUpIHsKKyAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhcmlhYmxlVHlwZXMpICYgc3RhdGljX2Nhc3Q8dWludDhf
dD4oV0FTTVZhcmlhYmxlVHlwZXM6OkkzMikpCisgICAgICAgICAgICBSRUFEX0NPTVBBQ1RfVUlO
VDMyX09SX0ZBSUwobV9udW1iZXJPZkkzMkxvY2FsVmFyaWFibGVzLCAiQ2Fubm90IHJlYWQgdGhl
IG51bWJlciBvZiBpbnQzMiBsb2NhbCB2YXJpYWJsZXMuIik7CisgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDx1aW50OF90Pih2YXJpYWJsZVR5cGVzKSAmIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01W
YXJpYWJsZVR5cGVzOjpGMzIpKQorICAgICAgICAgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9G
QUlMKG1fbnVtYmVyT2ZGMzJMb2NhbFZhcmlhYmxlcywgIkNhbm5vdCByZWFkIHRoZSBudW1iZXIg
b2YgZmxvYXQzMiBsb2NhbCB2YXJpYWJsZXMuIik7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1
aW50OF90Pih2YXJpYWJsZVR5cGVzKSAmIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYXJpYWJs
ZVR5cGVzOjpGNjQpKQorICAgICAgICAgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKG1f
bnVtYmVyT2ZGNjRMb2NhbFZhcmlhYmxlcywgIkNhbm5vdCByZWFkIHRoZSBudW1iZXIgb2YgZmxv
YXQ2NCBsb2NhbCB2YXJpYWJsZXMuIik7CisgICAgfSBlbHNlCisgICAgICAgIG1fbnVtYmVyT2ZJ
MzJMb2NhbFZhcmlhYmxlcyA9IGltbWVkaWF0ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBib29sIGhhc0ltbWVk
aWF0ZTsKKyAgICBXQVNNT3BTdGF0ZW1lbnQgb3A7CisgICAgV0FTTU9wU3RhdGVtZW50V2l0aElt
bWVkaWF0ZSBvcFdpdGhJbW1lZGlhdGU7CisgICAgdWludDhfdCBpbW1lZGlhdGU7CisgICAgUkVB
RF9PUF9TVEFURU1FTlRfT1JfRkFJTChoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUs
IGltbWVkaWF0ZSwgIkNhbm5vdCByZWFkIHRoZSBzdGF0ZW1lbnQgb3Bjb2RlLiIpOworICAgIGlm
ICghaGFzSW1tZWRpYXRlKSB7CisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBX
QVNNT3BTdGF0ZW1lbnQ6OlNldExvY2FsOgorICAgICAgICAgICAgcGFyc2VTZXRMb2NhbFN0YXRl
bWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcFN0
YXRlbWVudDo6U2V0R2xvYmFsOgorICAgICAgICAgICAgcGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQo
Y29udGV4dCk7CisgICAgICAgICAgICBicmVhazsgICAgCisgICAgICAgIGNhc2UgV0FTTU9wU3Rh
dGVtZW50OjpSZXR1cm46CisgICAgICAgICAgICBwYXJzZVJldHVyblN0YXRlbWVudChjb250ZXh0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Qmxv
Y2s6CisgICAgICAgICAgICBwYXJzZUJsb2NrU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJZjoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OklmRWxzZToKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6
OldoaWxlOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RG86CisgICAgICAgIGNhc2Ug
V0FTTU9wU3RhdGVtZW50OjpMYWJlbDoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkJy
ZWFrOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6QnJlYWtMYWJlbDoKKyAgICAgICAg
Y2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkNvbnRpbnVlOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRl
bWVudDo6Q29udGludWVMYWJlbDoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OlN3aXRj
aDoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlODoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlV2l0aE9mZnNldDg6CisgICAgICAgIGNhc2UgV0FT
TU9wU3RhdGVtZW50OjpJMzJTdG9yZTE2OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6
STMyU3RvcmVXaXRoT2Zmc2V0MTY6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJT
dG9yZTMyOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmVXaXRoT2Zmc2V0
MzI6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGMzJTdG9yZToKKyAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OkYzMlN0b3JlV2l0aE9mZnNldDoKKyAgICAgICAgY2FzZSBXQVNN
T3BTdGF0ZW1lbnQ6OkY2NFN0b3JlOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjY0
U3RvcmVXaXRoT2Zmc2V0OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Q2FsbEludGVy
bmFsOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Q2FsbEluZGlyZWN0OgorICAgICAg
ICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Q2FsbEltcG9ydDoKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhlc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAgICAgRkFJTF9XSVRIX01F
U1NBR0UoIlVuc3VwcG9ydGVkIGluc3RydWN0aW9uLiIpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBzd2l0Y2ggKG9wV2l0aEltbWVkaWF0ZSkgeworICAgICAgICBjYXNlIFdBU01PcFN0
YXRlbWVudFdpdGhJbW1lZGlhdGU6OlNldExvY2FsOgorICAgICAgICAgICAgcGFyc2VTZXRMb2Nh
bFN0YXRlbWVudChjb250ZXh0LCBpbW1lZGlhdGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZTo6U2V0R2xvYmFsOgorICAgICAg
ICAgICAgcGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQoY29udGV4dCwgaW1tZWRpYXRlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0LCB1aW50MzJfdCBsb2Nh
bEluZGV4KQoreworICAgIEZBSUxfSUZfRkFMU0UobG9jYWxJbmRleCA8IG1fbG9jYWxUeXBlcy5z
aXplKCksICJUaGUgbG9jYWwgdmFyaWFibGUgaW5kZXggaXMgaW5jb3JyZWN0LiIpOworICAgIFdB
U01UeXBlIHR5cGUgPSBtX2xvY2FsVHlwZXNbbG9jYWxJbmRleF07CisgICAgcGFyc2VFeHByZXNz
aW9uKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZSh0eXBlKSk7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1aW50MzJf
dCBsb2NhbEluZGV4OworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChsb2NhbEluZGV4
LCAiQ2Fubm90IHJlYWQgdGhlIGxvY2FsIGluZGV4LiIpOworICAgIHJldHVybiBwYXJzZVNldExv
Y2FsU3RhdGVtZW50KGNvbnRleHQsIGxvY2FsSW5kZXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
Q29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVNldEds
b2JhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0LCB1aW50MzJfdCBnbG9iYWxJbmRleCkKK3sK
KyAgICBGQUlMX0lGX0ZBTFNFKGdsb2JhbEluZGV4IDwgbV9tb2R1bGUtPmdsb2JhbFZhcmlhYmxl
VHlwZXMoKS5zaXplKCksICJUaGUgZ2xvYmFsIGluZGV4IGlzIGluY29ycmVjdC4iKTsKKyAgICBX
QVNNVHlwZSB0eXBlID0gbV9tb2R1bGUtPmdsb2JhbFZhcmlhYmxlVHlwZXMoKVtnbG9iYWxJbmRl
eF07CisgICAgcGFyc2VFeHByZXNzaW9uKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZSh0eXBl
KSk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBD
b250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlU2V0R2xv
YmFsU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgdWludDMyX3QgZ2xvYmFsSW5k
ZXg7CisgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGdsb2JhbEluZGV4LCAiQ2Fubm90
IHJlYWQgdGhlIGdsb2JhbCBpbmRleC4iKTsKKyAgICByZXR1cm4gcGFyc2VTZXRHbG9iYWxTdGF0
ZW1lbnQoY29udGV4dCwgZ2xvYmFsSW5kZXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVJldHVyblN0YXRl
bWVudChDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChtX3JldHVyblR5cGUgIT0gV0FTTUV4
cHJlc3Npb25UeXBlOjpWb2lkKQorICAgICAgICBwYXJzZUV4cHJlc3Npb24oY29udGV4dCwgbV9y
ZXR1cm5UeXBlKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisg
ICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0
U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VCbG9ja1N0YXRlbWVudChDb250ZXh0
JiBjb250ZXh0KQoreworICAgIHVpbnQzMl90IG51bWJlck9mU3RhdGVtZW50czsKKyAgICBSRUFE
X0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwobnVtYmVyT2ZTdGF0ZW1lbnRzLCAiQ2Fubm90IHJlYWQg
dGhlIG51bWJlciBvZiBzdGF0ZW1lbnRzLiIpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBudW1iZXJPZlN0YXRlbWVudHM7ICsraSkgeworICAgICAgICBwYXJzZVN0YXRlbWVudChjb250
ZXh0KTsKKyAgICAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAgfQorICAgIHJldHVybiBVTlVT
RUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24gV0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb24oQ29udGV4dCYgY29udGV4dCwgV0FTTUV4
cHJlc3Npb25UeXBlIGV4cHJlc3Npb25UeXBlKQoreworICAgIHN3aXRjaCAoZXhwcmVzc2lvblR5
cGUpIHsKKyAgICBjYXNlIFdBU01FeHByZXNzaW9uVHlwZTo6STMyOgorICAgICAgICByZXR1cm4g
cGFyc2VFeHByZXNzaW9uSTMyKGNvbnRleHQpOworICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBl
OjpGMzI6CisgICAgY2FzZSBXQVNNRXhwcmVzc2lvblR5cGU6OkY2NDoKKyAgICBjYXNlIFdBU01F
eHByZXNzaW9uVHlwZTo6Vm9pZDoKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGVzZSBp
bnN0cnVjdGlvbnMuCisgICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBpbnN0
cnVjdGlvbi4iKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29u
dGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIoQ29u
dGV4dCYgY29udGV4dCkKK3sKKyAgICBib29sIGhhc0ltbWVkaWF0ZTsKKyAgICBXQVNNT3BFeHBy
ZXNzaW9uSTMyIG9wOworICAgIFdBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlIG9wV2l0
aEltbWVkaWF0ZTsKKyAgICB1aW50OF90IGltbWVkaWF0ZTsKKyAgICBSRUFEX09QX0VYUFJFU1NJ
T05fSTMyX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlh
dGUsICJDYW5ub3QgcmVhZCB0aGUgaW50MzIgZXhwcmVzc2lvbiBvcGNvZGUuIik7CisgICAgaWYg
KCFoYXNJbW1lZGlhdGUpIHsKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6OkNvbnN0YW50UG9vbEluZGV4OgorICAgICAgICAgICAgcmV0dXJu
IHBhcnNlQ29uc3RhbnRQb29sSW5kZXhFeHByZXNzaW9uSTMyKGNvbnRleHQpOworICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkltbWVkaWF0ZToKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZUltbWVkaWF0ZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6R2V0TG9jYWw6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6R2V0R2xvYmFsOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNldExvY2Fs
OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNldEdsb2JhbDoKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZDg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6U0xvYWRXaXRoT2Zmc2V0ODoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpVTG9hZDg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWRX
aXRoT2Zmc2V0ODoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZDE2Ogor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2FkV2l0aE9mZnNldDE2OgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVMb2FkMTY6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6VUxvYWRXaXRoT2Zmc2V0MTY6CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6TG9hZDMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkxvYWRXaXRoT2Zmc2V0MzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3Rv
cmU4OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3JlV2l0aE9mZnNldDg6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmUxNjoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZVdpdGhPZmZzZXQxNjoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Np
b25JMzI6OlN0b3JlV2l0aE9mZnNldDMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OkNhbGxJbnRlcm5hbDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDYWxs
SW5kaXJlY3Q6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q2FsbEltcG9ydDoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDb25kaXRpb25hbDoKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDb21tYToKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpGcm9tRjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkZy
b21GNjQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TmVnYXRlOgorICAgICAg
ICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkFkZDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpTdWI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TXVsOgor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNEaXY6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6VURpdjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpTTW9kOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVNb2Q6CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0Tm90OgorICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6OkJpdE9yOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJp
dEFuZDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXRYb3I6CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TGVmdFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OkFyaXRobWV0aWNSaWdodFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OkxvZ2ljYWxSaWdodFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6OkNvdW50TGVhZGluZ1plcm9zOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJl
c3Npb25JMzI6OkxvZ2ljYWxOb3Q6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
RXF1YWxJMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGMzI6Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGNjQ6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6Tm90RXF1YWxJMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6Tm90RXF1YWxGMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6Tm90RXF1YWxGNjQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0xlc3NU
aGFuSTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVMZXNzVGhhbkkzMjoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMZXNzVGhhbkYzMjoKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMZXNzVGhhbkY2NDoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpTTGVzc1RoYW5PckVxdWFsSTMyOgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OlVMZXNzVGhhbk9yRXF1YWxJMzI6CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6TGVzc1RoYW5PckVxdWFsRjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6Okxlc3NUaGFuT3JFcXVhbEY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpTR3JlYXRlclRoYW5JMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6VUdyZWF0ZXJUaGFuSTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkdyZWF0ZXJUaGFuRjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkdyZWF0
ZXJUaGFuRjY0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNHcmVhdGVyVGhh
bk9yRXF1YWxJMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUdyZWF0ZXJU
aGFuT3JFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHcmVhdGVy
VGhhbk9yRXF1YWxGMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRl
clRoYW5PckVxdWFsRjY0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNNaW46
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VU1pbjoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpTTWF4OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OlVNYXg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6QWJzOgorICAgICAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGVzZSBpbnN0cnVjdGlvbnMuCisgICAgICAgICAg
ICBGQUlMX1dJVEhfTUVTU0FHRSgiVW5zdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24uIik7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAob3BXaXRoSW1tZWRpYXRlKSB7CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMldpdGhJbW1lZGlhdGU6OkNvbnN0YW50UG9vbEluZGV4
OgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ29uc3RhbnRQb29sSW5kZXhFeHByZXNzaW9uSTMy
KGNvbnRleHQsIGltbWVkaWF0ZSk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMldp
dGhJbW1lZGlhdGU6OkltbWVkaWF0ZToKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUltbWVkaWF0
ZUV4cHJlc3Npb25JMzIoY29udGV4dCwgaW1tZWRpYXRlKTsKKyAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZTo6R2V0TG9jYWw6CisgICAgICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICBGQUlMX1dJVEhfTUVT
U0FHRSgiVW5zdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24uIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBX
QVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQ29uc3RhbnRQb29sSW5kZXhFeHByZXNzaW9uSTMyKENv
bnRleHQmLCB1aW50MzJfdCBjb25zdGFudFBvb2xJbmRleCkKK3sKKyAgICBGQUlMX0lGX0ZBTFNF
KGNvbnN0YW50UG9vbEluZGV4IDwgbV9tb2R1bGUtPmkzMkNvbnN0YW50cygpLnNpemUoKSwgIlRo
ZSBjb25zdGFudCBwb29sIGluZGV4IGlzIGluY29ycmVjdC4iKTsKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxh
dGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlQ29uc3RhbnRQb29sSW5kZXhFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCit7
CisgICAgdWludDMyX3QgY29uc3RhbnRQb29sSW5kZXg7CisgICAgUkVBRF9DT01QQUNUX1VJTlQz
Ml9PUl9GQUlMKGNvbnN0YW50UG9vbEluZGV4LCAiQ2Fubm90IHJlYWQgdGhlIGNvbnN0YW50IGlu
ZGV4LiIpOworICAgIHJldHVybiBwYXJzZUNvbnN0YW50UG9vbEluZGV4RXhwcmVzc2lvbkkzMihj
b250ZXh0LCBjb25zdGFudFBvb2xJbmRleCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0
PgorQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUltbWVkaWF0ZUV4
cHJlc3Npb25JMzIoQ29udGV4dCYsIHVpbnQzMl90KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFy
c2VJbW1lZGlhdGVFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCit7CisgICAgdWludDMy
X3QgaW1tZWRpYXRlOworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChpbW1lZGlhdGUs
ICJDYW5ub3QgcmVhZCB0aGUgaW1tZWRpYXRlLiIpOworICAgIHJldHVybiBwYXJzZUltbWVkaWF0
ZUV4cHJlc3Npb25JMzIoY29udGV4dCwgaW1tZWRpYXRlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkNTFkZTkzOGU2
ZjVlY2Q4YzliMWUxMGYxNzBjOWExNmQxYWQzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaApAQCAtMCwwICsxLDk0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
QVNNRnVuY3Rpb25QYXJzZXJfaAorI2RlZmluZSBXQVNNRnVuY3Rpb25QYXJzZXJfaAorCisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUg
IldBU01Db25zdGFudHMuaCIKKyNpbmNsdWRlICJXQVNNUmVhZGVyLmgiCisKKyNkZWZpbmUgQ29u
dGV4dEV4cHJlc3Npb24gdHlwZW5hbWUgQ29udGV4dDo6RXhwcmVzc2lvbgorI2RlZmluZSBDb250
ZXh0U3RhdGVtZW50IHR5cGVuYW1lIENvbnRleHQ6OlN0YXRlbWVudAorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgSlNXQVNNTW9kdWxlOworY2xhc3MgVk07CisK
K2NsYXNzIFdBU01GdW5jdGlvblBhcnNlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgY2hl
Y2tTeW50YXgoSlNXQVNNTW9kdWxlKiwgY29uc3QgU291cmNlQ29kZSYsIHNpemVfdCBmdW5jdGlv
bkluZGV4LCB1bnNpZ25lZCBzdGFydE9mZnNldEluU291cmNlLCB1bnNpZ25lZCYgZW5kT2Zmc2V0
SW5Tb3VyY2UsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKK3ByaXZhdGU6CisgICAgV0FTTUZ1bmN0
aW9uUGFyc2VyKEpTV0FTTU1vZHVsZSogbW9kdWxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IHNpemVfdCBmdW5jdGlvbkluZGV4KQorICAgICAgICA6IG1fbW9kdWxlKG1vZHVsZSkKKyAgICAg
ICAgLCBtX3JlYWRlcihzdGF0aWNfY2FzdDxXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyKj4oc291
cmNlLnByb3ZpZGVyKCkpLT5kYXRhKCkpCisgICAgICAgICwgbV9mdW5jdGlvbkluZGV4KGZ1bmN0
aW9uSW5kZXgpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBi
b29sIHBhcnNlRnVuY3Rpb24oQ29udGV4dCYpOworICAgIGJvb2wgcGFyc2VMb2NhbFZhcmlhYmxl
cygpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFy
c2VTdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250
ZXh0U3RhdGVtZW50IHBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoQ29udGV4dCYsIHVpbnQzMl90IGxv
Y2FsSW5kZXgpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50
IHBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBD
b250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KENvbnRleHQm
LCB1aW50MzJfdCBnbG9iYWxJbmRleCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENv
bnRleHRTdGF0ZW1lbnQgcGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlU3RvcmVTdGF0ZW1l
bnQoQ29udGV4dCYsIFdBU01PcFN0YXRlbWVudCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRl
eHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VDYWxsSW50ZXJuYWxTdGF0ZW1lbnQoQ29udGV4dCYp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlQ2Fs
bEluZGlyZWN0U3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZUNhbGxJbXBvcnRTdGF0ZW1lbnQoQ29udGV4dCYpOwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlUmV0dXJu
U3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4
dFN0YXRlbWVudCBwYXJzZUJsb2NrU3RhdGVtZW50KENvbnRleHQmKTsKKworICAgIHRlbXBsYXRl
IDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUV4cHJlc3Npb24oQ29udGV4
dCYsIFdBU01FeHByZXNzaW9uVHlwZSk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4g
Q29udGV4dEV4cHJlc3Npb24gcGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VDb25zdGFudFBvb2xJ
bmRleEV4cHJlc3Npb25JMzIoQ29udGV4dCYsIHVpbnQzMl90IGNvbnN0YW50SW5kZXgpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUNvbnN0YW50
UG9vbEluZGV4RXhwcmVzc2lvbkkzMihDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250
ZXh0JiwgdWludDMyX3QgaW1tZWRpYXRlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4g
Q29udGV4dEV4cHJlc3Npb24gcGFyc2VJbW1lZGlhdGVFeHByZXNzaW9uSTMyKENvbnRleHQmKTsK
KworICAgIEpTV0FTTU1vZHVsZSogbV9tb2R1bGU7CisgICAgV0FTTVJlYWRlciBtX3JlYWRlcjsK
KyAgICBzaXplX3QgbV9mdW5jdGlvbkluZGV4OworICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsK
KworICAgIFdBU01FeHByZXNzaW9uVHlwZSBtX3JldHVyblR5cGU7CisgICAgVmVjdG9yPFdBU01U
eXBlPiBtX2xvY2FsVHlwZXM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkkzMkxvY2FsVmFyaWFi
bGVzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZGMzJMb2NhbFZhcmlhYmxlczsKKyAgICB1aW50
MzJfdCBtX251bWJlck9mRjY0TG9jYWxWYXJpYWJsZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2VuZGlmIC8vIFdBU01GdW5j
dGlvblBhcnNlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRhYTRkZTdkYTNlYjg3MjI3YjY2
NGEzMmVjYTEyNDYzYjBhYTQyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaApAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyX2gKKyNkZWZpbmUgV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tl
cl9oCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIGludCBF
eHByZXNzaW9uOworICAgIHR5cGVkZWYgaW50IFN0YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZW5kaWYgLy8gV0FT
TUZ1bmN0aW9uU3ludGF4Q2hlY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTWFnaWNOdW1iZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01NYWdpY051bWJlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWRkMmZhMjdm
MjhiM2ZhMGIzYmNiOTI3NmRkOTc1MDljNmEwNjQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NYWdp
Y051bWJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0FTTU1hZ2ljTnVtYmVyX2gK
LSNkZWZpbmUgV0FTTU1hZ2ljTnVtYmVyX2gKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBjb25zdCB1aW50MzJfdCB3YXNtTWFnaWNOdW1iZXIg
PSAweDZkNzM2MTc3OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKLQotI2VuZGlmIC8vIFdBU01NYWdpY051bWJlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDIzMTQ4ZTI2NDEy
NTQ1MTlmYmZjMTc3ODdhZWMxMjVmZjM4MDI4ZTIuLjhmMzBhOWY5MWZjYzdkMGQ0NGU2NmE5Njkx
NmQwNzdiZTJiNDJjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01N
b2R1bGVQYXJzZXIuY3BwCkBAIC0zMSw3ICszMSw4IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIK
LSNpbmNsdWRlICJXQVNNTWFnaWNOdW1iZXIuaCIKKyNpbmNsdWRlICJXQVNNQ29uc3RhbnRzLmgi
CisjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KIAogI2RlZmluZSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpIGRvIHsgbV9l
cnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IHJldHVybjsgfSB3aGlsZSAoMCkKQEAgLTQ5LDcg
KzUwLDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiBXQVNNTW9kdWxlUGFyc2VyOjpXQVNNTW9kdWxl
UGFyc2VyKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IG1fcmVhZGVyKHN0YXRpY19j
YXN0PFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIqPihzb3VyY2UucHJvdmlkZXIoKSktPmRhdGEo
KSkKKyAgICA6IG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fcmVhZGVyKHN0YXRpY19jYXN0PFdl
YkFzc2VtYmx5U291cmNlUHJvdmlkZXIqPihzb3VyY2UucHJvdmlkZXIoKSktPmRhdGEoKSkKIHsK
IH0KIApAQCAtMjQ3LDI1ICsyNDksMjIgQEAgdm9pZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uUG9pbnRlclRhYmxlU2VjdGlvbigpCiAKIHZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFy
c2VGdW5jdGlvbkRlZmluaXRpb25TZWN0aW9uKCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbW9kdWxlLT5mdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCk7CisgICAgZm9yIChzaXplX3QgZnVuY3Rpb25J
bmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZS0+ZnVuY3Rpb25EZWNsYXJhdGlvbnMo
KS5zaXplKCk7ICsrZnVuY3Rpb25JbmRleCkgeworICAgICAgICBwYXJzZUZ1bmN0aW9uRGVmaW5p
dGlvbihmdW5jdGlvbkluZGV4KTsKICAgICAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CiAgICAgfQog
fQogCi12b2lkIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCkKK3Zv
aWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb24oc2l6ZV90IGZ1bmN0
aW9uSW5kZXgpCiB7Ci0gICAgLy8gRklYTUU6IFN1cHBvcnQgYW55IGZ1bmN0aW9ucy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzczOAotICAgIC8vIEN1cnJlbnRs
eSwgd2Ugb25seSBzdXBwb3J0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgInJldHVybiAwOyIgYXMgdGhl
aXIgb25seSBzdGF0ZW1lbnQuCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNvbnNpc3Qgb2YgZXhh
Y3RseSA0IGJ5dGVzLCBpLmUuCi0gICAgLy8gMS4gVGhlIG51bWJlciBvZiBsb2NhbCB2YXJpYWJs
ZXMgKDApIFsweDgwXQotICAgIC8vIDIuIFRoZSBudW1iZXIgb2Ygc3RhdGVtZW50cyAoMSkgWzB4
MDFdCi0gICAgLy8gMy4gVGhlIHJldHVybiBzdGF0ZW1lbnQgWzB4MGZdCi0gICAgLy8gNC4gVGhl
IGltbWVkaWF0ZSBleHByZXNzaW9uICgwKSBbMHhhMF0KLSAgICB1aW50MzJfdCBmdW5jdGlvbkRl
ZmluaXRpb25CeXRlczsKLSAgICBSRUFEX1VJTlQzMl9PUl9GQUlMKGZ1bmN0aW9uRGVmaW5pdGlv
bkJ5dGVzLCAiQ2Fubm90IHJlYWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uIik7Ci0gICAgRkFJ
TF9JRl9GQUxTRShmdW5jdGlvbkRlZmluaXRpb25CeXRlcyA9PSAweGEwMGYwMTgwLCAiT25seSBm
dW5jdGlvbnMgdGhhdCBoYXZlIFwicmV0dXJuIDA7XCIgIgotICAgICAgICAiYXMgdGhlaXIgb25s
eSBzdGF0ZW1lbnQgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50LiIpOworICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0SW5Tb3VyY2UgPSBtX3JlYWRlci5vZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBl
bmRPZmZzZXRJblNvdXJjZTsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIGlmICghV0FT
TUZ1bmN0aW9uUGFyc2VyOjpjaGVja1N5bnRheChtX21vZHVsZS5nZXQoKSwgbV9zb3VyY2UsIGZ1
bmN0aW9uSW5kZXgsIHN0YXJ0T2Zmc2V0SW5Tb3VyY2UsIGVuZE9mZnNldEluU291cmNlLCBlcnJv
ck1lc3NhZ2UpKSB7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVhZGVyLnNldE9mZnNldChlbmRPZmZzZXRJblNv
dXJjZSk7CiB9CiAKIHZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnRTZWN0aW9uKCkK
QEAgLTMwMSw4ICszMDAsOCBAQCB2b2lkIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRXhwb3J0U2Vj
dGlvbigpCiAKIEpTV0FTTU1vZHVsZSogcGFyc2VXZWJBc3NlbWJseShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAg
V0FTTU1vZHVsZVBhcnNlciBXQVNNTW9kdWxlUGFyc2VyKHNvdXJjZSk7Ci0gICAgcmV0dXJuIFdB
U01Nb2R1bGVQYXJzZXIucGFyc2UoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBlcnJvck1lc3NhZ2UpOworICAgIFdBU01Nb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNv
dXJjZSk7CisgICAgcmV0dXJuIG1vZHVsZVBhcnNlci5wYXJzZShleGVjLT52bSgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCmlu
ZGV4IDVlYzVmZDM4ODVkMmUwMjBjYjlmNWJkNGRmYTJiNjU2ZDM3OTA5ZDcuLjMwZjFhNTY1OTg4
YzYwMTRiNTQ1ZmMxYzZjMjZjMDkzZDhmYjU0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKQEAgLTU0LDkgKzU0LDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb25TZWN0aW9uKCk7CiAgICAgdm9pZCBwYXJz
ZUZ1bmN0aW9uUG9pbnRlclRhYmxlU2VjdGlvbigpOwogICAgIHZvaWQgcGFyc2VGdW5jdGlvbkRl
ZmluaXRpb25TZWN0aW9uKCk7Ci0gICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbigpOwor
ICAgIHZvaWQgcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oc2l6ZV90IGZ1bmN0aW9uSW5kZXgpOwog
ICAgIHZvaWQgcGFyc2VFeHBvcnRTZWN0aW9uKCk7CiAKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBt
X3NvdXJjZTsKICAgICBXQVNNUmVhZGVyIG1fcmVhZGVyOwogICAgIFN0cm9uZzxKU1dBU01Nb2R1
bGU+IG1fbW9kdWxlOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTVJlYWRlci5jcHAKaW5kZXggMjhlMTM1N2ExMzVmNDI3MjUzZDQzYjk1
OTNmNDIyODdkY2RlMWI5Ni4uZjQ0NzIxMTM3OTA5YjkzNTAyZjZiZWZiYjFiZjA4NzQ4ODg3NWMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5jcHAKQEAgLTIxLDYg
KzIxLDIzIEBACiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1IGJ5IHRoZSByZXBv
c2l0b3J5IGF1dGhvcnMgb2YKKyAqIFdlYkFzc2VtYmx5L3BvbHlmaWxsLXByb3RvdHlwZS0xLgor
ICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTExMywxNyArMTMwLDE3IEBAIGJvb2wgV0FT
TVJlYWRlcjo6cmVhZFN0cmluZyhTdHJpbmcmIHJlc3VsdCkKIAogYm9vbCBXQVNNUmVhZGVyOjpy
ZWFkVHlwZShXQVNNVHlwZSYgcmVzdWx0KQogewotICAgIHJldHVybiByZWFkQnl0ZTxXQVNNVHlw
ZT4ocmVzdWx0LCAodWludDhfdClXQVNNVHlwZTo6TnVtYmVyT2ZUeXBlcyk7CisgICAgcmV0dXJu
IHJlYWRCeXRlPFdBU01UeXBlPihyZXN1bHQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01UeXBl
OjpOdW1iZXJPZlR5cGVzKSk7CiB9CiAKIGJvb2wgV0FTTVJlYWRlcjo6cmVhZEV4cHJlc3Npb25U
eXBlKFdBU01FeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewotICAgIHJldHVybiByZWFkQnl0ZTxX
QVNNRXhwcmVzc2lvblR5cGU+KHJlc3VsdCwgKHVpbnQ4X3QpV0FTTUV4cHJlc3Npb25UeXBlOjpO
dW1iZXJPZkV4cHJlc3Npb25UeXBlcyk7CisgICAgcmV0dXJuIHJlYWRCeXRlPFdBU01FeHByZXNz
aW9uVHlwZT4ocmVzdWx0LCBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNRXhwcmVzc2lvblR5cGU6
Ok51bWJlck9mRXhwcmVzc2lvblR5cGVzKSk7CiB9CiAKIGJvb2wgV0FTTVJlYWRlcjo6cmVhZEV4
cG9ydEZvcm1hdChXQVNNRXhwb3J0Rm9ybWF0JiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHJlYWRC
eXRlPFdBU01FeHBvcnRGb3JtYXQ+KHJlc3VsdCwgKHVpbnQ4X3QpV0FTTUV4cG9ydEZvcm1hdDo6
TnVtYmVyT2ZFeHBvcnRGb3JtYXRzKTsKKyAgICByZXR1cm4gcmVhZEJ5dGU8V0FTTUV4cG9ydEZv
cm1hdD4ocmVzdWx0LCBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNRXhwb3J0Rm9ybWF0OjpOdW1i
ZXJPZkV4cG9ydEZvcm1hdHMpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgV0FTTVJl
YWRlcjo6cmVhZEJ5dGUoVCYgcmVzdWx0LCB1aW50OF90IG51bWJlck9mVmFsdWVzKQpAQCAtMTM2
LDYgKzE1Myw1MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBXQVNNUmVhZGVyOjpyZWFkQnl0
ZShUJiByZXN1bHQsIHVpbnQ4X3QgbnVtYmVyT2ZWYWx1ZXMpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgV0FTTVJlYWRlcjo6cmVhZE9wU3RhdGVtZW50KGJvb2wmIGhhc0ltbWVkaWF0ZSwg
V0FTTU9wU3RhdGVtZW50JiBvcCwgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZSYgb3BXaXRo
SW1tZWRpYXRlLCB1aW50OF90JiBpbW1lZGlhdGUpCit7CisgICAgcmV0dXJuIHJlYWRPcChoYXNJ
bW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8dWludDhfdD4oV0FTTU9wU3RhdGVtZW50OjpOdW1iZXJPZldBU01PcFN0YXRlbWVudHMp
LAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRp
YXRlOjpOdW1iZXJPZldBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGVzKSk7Cit9CisKK2Jvb2wg
V0FTTVJlYWRlcjo6cmVhZE9wRXhwcmVzc2lvbkkzMihib29sJiBoYXNJbW1lZGlhdGUsIFdBU01P
cEV4cHJlc3Npb25JMzImIG9wLCBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZSYgb3BX
aXRoSW1tZWRpYXRlLCB1aW50OF90JiBpbW1lZGlhdGUpCit7CisgICAgcmV0dXJuIHJlYWRPcCho
YXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oV0FTTU9wRXhwcmVzc2lvbkkzMjo6TnVtYmVyT2ZXQVNNT3BFeHBy
ZXNzaW9uSTMycyksCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01PcEV4cHJlc3Np
b25JMzJXaXRoSW1tZWRpYXRlOjpOdW1iZXJPZldBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRp
YXRlcykpOworfQorCitib29sIFdBU01SZWFkZXI6OnJlYWRWYXJpYWJsZVR5cGVzKGJvb2wmIGhh
c0ltbWVkaWF0ZSwgV0FTTVZhcmlhYmxlVHlwZXMmIHZhcmlhYmxlVHlwZXMsIFdBU01WYXJpYWJs
ZVR5cGVzV2l0aEltbWVkaWF0ZSYgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUsIHVpbnQ4X3Qm
IGltbWVkaWF0ZSkKK3sKKyAgICByZXR1cm4gcmVhZE9wKGhhc0ltbWVkaWF0ZSwgdmFyaWFibGVU
eXBlcywgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6Ok51bWJlck9mVmFyaWFibGVUeXBl
cyksCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYXJpYWJsZVR5cGVzV2l0aElt
bWVkaWF0ZTo6TnVtYmVyT2ZWYXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZXMpKTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIFRXaXRoSW1tZWRpYXRlPgorYm9vbCBXQVNNUmVhZGVyOjpy
ZWFkT3AoYm9vbCYgaGFzSW1tZWRpYXRlLCBUJiBvcCwgVFdpdGhJbW1lZGlhdGUmIG9wV2l0aElt
bWVkaWF0ZSwgdWludDhfdCYgaW1tZWRpYXRlLCB1aW50OF90IG51bWJlck9mVmFsdWVzLCB1aW50
OF90IG51bWJlck9mVmFsdWVzV2l0aEltbWVkaWF0ZSkKK3sKKyAgICBDSEVDS19SRUFEKDEpOwor
ICAgIHVpbnQ4X3QgYnl0ZSA9ICptX2N1cnNvcisrOworCisgICAgaWYgKCEoYnl0ZSAmIGhhc0lt
bWVkaWF0ZUluT3BGbGFnKSkgeworICAgICAgICBpZiAoYnl0ZSA+PSBudW1iZXJPZlZhbHVlcykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaGFzSW1tZWRpYXRlID0gZmFsc2U7
CisgICAgICAgIG9wID0gVChieXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgdWludDhfdCBieXRlV2l0aG91dEltbWVkaWF0ZSA9IChieXRlID4+IGltbWVkaWF0ZUJpdHMp
ICYgKG9wV2l0aEltbWVkaWF0ZUxpbWl0IC0gMSk7CisgICAgaWYgKGJ5dGVXaXRob3V0SW1tZWRp
YXRlID49IG51bWJlck9mVmFsdWVzV2l0aEltbWVkaWF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGhhc0ltbWVkaWF0ZSA9IHRydWU7CisgICAgb3BXaXRoSW1tZWRpYXRlID0gVFdpdGhJ
bW1lZGlhdGUoYnl0ZVdpdGhvdXRJbW1lZGlhdGUpOworICAgIGltbWVkaWF0ZSA9IGJ5dGUgJiAo
aW1tZWRpYXRlTGltaXQgLSAxKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNUmVhZGVyLmgKaW5kZXggNzZlYTI2YjZkZjdiZjg1MDg1YTE2ZWExMzM4ODMw
YTkzZjM0MmMyMS4uOTk1YWRjZDQ3ZDJjNzZlNTE4YTNiMjk5MWE4NmUxOTk4NmRlNjFhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuaApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiV0FTTUNvbnN0YW50cy5oIgog
I2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQx
LDYgKzQyLDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICB1bnNpZ25lZCBvZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2N1cnNvciAtIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHZvaWQg
c2V0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgeyBtX2N1cnNvciA9IG1fYnVmZmVyLmRhdGEoKSAr
IG9mZnNldDsgfQorCiAgICAgYm9vbCByZWFkVUludDMyKHVpbnQzMl90JiByZXN1bHQpOwogICAg
IGJvb2wgcmVhZEZsb2F0KGZsb2F0JiByZXN1bHQpOwogICAgIGJvb2wgcmVhZERvdWJsZShkb3Vi
bGUmIHJlc3VsdCk7CkBAIC00OSwxMSArNTMsMTUgQEAgcHVibGljOgogICAgIGJvb2wgcmVhZFR5
cGUoV0FTTVR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCByZWFkRXhwcmVzc2lvblR5cGUoV0FTTUV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIGJvb2wgcmVhZEV4cG9ydEZvcm1hdChXQVNNRXhw
b3J0Rm9ybWF0JiByZXN1bHQpOworICAgIGJvb2wgcmVhZE9wU3RhdGVtZW50KGJvb2wmIGhhc0lt
bWVkaWF0ZSwgV0FTTU9wU3RhdGVtZW50JiwgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZSYs
IHVpbnQ4X3QmIGltbWVkaWF0ZSk7CisgICAgYm9vbCByZWFkT3BFeHByZXNzaW9uSTMyKGJvb2wm
IGhhc0ltbWVkaWF0ZSwgV0FTTU9wRXhwcmVzc2lvbkkzMiYsIFdBU01PcEV4cHJlc3Npb25JMzJX
aXRoSW1tZWRpYXRlJiwgdWludDhfdCYgaW1tZWRpYXRlKTsKKyAgICBib29sIHJlYWRWYXJpYWJs
ZVR5cGVzKGJvb2wmIGhhc0ltbWVkaWF0ZSwgV0FTTVZhcmlhYmxlVHlwZXMmLCBXQVNNVmFyaWFi
bGVUeXBlc1dpdGhJbW1lZGlhdGUmLCB1aW50OF90JiBpbW1lZGlhdGUpOwogCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmaXJzdFNldmVuQml0c01hc2sgPSAweDdmOwogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmVhZEJ5dGUoVCYgcmVzdWx0LCB1aW50OF90IG51
bWJlck9mVmFsdWVzKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVFdpdGhJbW1lZGlh
dGU+IGJvb2wgcmVhZE9wKGJvb2wmIGhhc0ltbWVkaWF0ZSwgVCYsIFRXaXRoSW1tZWRpYXRlJiwg
dWludDhfdCYgaW1tZWRpYXRlLCB1aW50OF90IG51bWJlck9mVmFsdWVzLCB1aW50OF90IG51bWJl
ck9mVmFsdWVzV2l0aEltbWVkaWF0ZSk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1f
YnVmZmVyOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fY3Vyc29yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259612</attachid>
            <date>2015-08-21 08:07:57 -0700</date>
            <delta_ts>2015-08-21 08:25:06 -0700</delta_ts>
            <desc>Make the patch even smaller</desc>
            <filename>bug-147738-20150821080751.patch</filename>
            <type>text/plain</type>
            <size>53499</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Mzk4MTA2MmFjNDZhY2JlZGZmNTExNWY2MDM0YWE4OWM1MTA0N2YxLi42MDAwOWY2OTc4OWM5MTgw
MjM0ZjAwM2JmN2E0ODhhYmU3OTUwODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxNS0wOC0yMSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2VyIGZvciBXZWJBc3NlbWJseSBmaWxlcyBwcm9k
dWNlZCBieSBwYWNrLWFzbWpzCisgICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1i
bHkvcG9seWZpbGwtcHJvdG90eXBlLTE+LiBUaGlzIHBhdGNoIHBhcnNlcyBvbmx5CisgICAgICAg
IHNvbWUgaW5zdHJ1Y3Rpb25zIG9uIHN0YXRlbWVudHMgYW5kIGludDMyIGV4cHJlc3Npb25zLiBQ
YXJzaW5nIG9mIHRoZSByZXN0CisgICAgICAgIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gc3Vic2Vx
dWVudCBwYXRjaGVzLiBUaGUgaW5zdHJ1Y3Rpb24gbGlzdHMgaW4gV0FTTUNvbnN0YW50cy5oCisg
ICAgICAgIGFyZSBzbGlnaHRseSBtb2RpZmllZCBmcm9tCisgICAgICAgIDxodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvcG9seWZpbGwtcHJvdG90eXBlLTEvYmxvYi9tYXN0ZXIvc3JjL3No
YXJlZC5oPi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdh
c20vV0FTTUNvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUxvY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VFeHByZXNzaW9uSTMyKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFy
c2VyOjpwYXJzZUltbWVkaWF0ZUV4cHJlc3Npb25JMzIpOgorICAgICAgICAqIHdhc20vV0FTTUZ1
bmN0aW9uUGFyc2VyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6
OldBU01GdW5jdGlvblBhcnNlcik6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhD
aGVja2VyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWFn
aWNOdW1iZXIuaC4KKyAgICAgICAgKiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpXQVNNTW9kdWxlUGFyc2VyKToKKyAgICAgICAgKEpT
Qzo6V0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25TZWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6V0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb24pOgor
ICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5oOgorICAgICAgICAqIHdhc20vV0FTTVJl
YWRlci5jcHA6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRUeXBlKToKKyAgICAgICAg
KEpTQzo6V0FTTVJlYWRlcjo6cmVhZEV4cHJlc3Npb25UeXBlKToKKyAgICAgICAgKEpTQzo6V0FT
TVJlYWRlcjo6cmVhZEV4cG9ydEZvcm1hdCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJl
YWRPcFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcEV4cHJlc3Np
b25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNUmVhZGVyOjpyZWFkVmFyaWFibGVUeXBlcyk6Cisg
ICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcCk6CisgICAgICAgICogd2FzbS9XQVNNUmVh
ZGVyLmg6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6Om9mZnNldCk6CisgICAgICAgIChKU0M6
OldBU01SZWFkZXI6OnNldE9mZnNldCk6CisKIDIwMTUtMDgtMjAgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxl
IGxvYWRlciBpbiBKU0Mgc2hlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA0OGM3MjE2ZmI5Njc0ZTRmZThjZGVmNjkxYzYwZTM1ZWE0YTkyNjhmLi5jOGM1NWE2ZDdmYTUw
NTg2ZmE1NGJmNmQ5NzBiYTRlMGFiNWMyZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC00MjMsNiArNDIzLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICB0b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAogCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUu
Y3BwCisgICAgd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCisgICAgd2FzbS9XQVNNRnVuY3Rp
b25TeW50YXhDaGVja2VyLmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKICAgICB3
YXNtL1dBU01SZWFkZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CmluZGV4IDcyOTVmZDAxZWZkODIwMDRmMjI1MmI3ZWI2NTAyMTIwNjhlNjc4OWEuLmNhNTJkYjUw
MGViNjE2YjU0MzllZDVmYjJjYjFhNjY0ZjNkNWNjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagpAQCAtODkyLDYgKzg5Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlx0b29sc1xKU0RvbGxhclZNLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHRvb2xzXEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cd2FzbVxKU1dBU01Nb2R1bGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cd2FzbVxXQVNNRnVuY3Rpb25QYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cd2FzbVxXQVNNTW9kdWxlUGFyc2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHdhc21cV0FTTVJlYWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlx5YXJyXFJlZ3VsYXJFeHByZXNzaW9uLmNwcCIgLz4KQEAgLTE3ODYsOCArMTc4NywxMCBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdG9vbHNcUHJvZmlsZVRyZWVOb2RlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xUaWVyZWRNTWFwQXJyYXkuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cSlNXQVNNTW9kdWxlLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01Db25zdGFudHMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZvcm1hdC5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd2FzbVxXQVNNTWFnaWNOdW1iZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uUGFyc2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3YXNtXFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1vZHVsZVBhcnNlci5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNUmVhZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx5YXJyXFJlZ3VsYXJFeHByZXNzaW9uLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggOWJkZjU0OTRjZjIwNWQ5
YTJkMjI3NWYzNzFhY2QxY2E2ZGUwZTYxMC4uOWU2MzQ0NjM3OWRjYmVjNzVjYWQ4N2NkMDkyY2U1
NGM2MDNmMGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwpAQCAtMTg0MSw2ICsxODQxLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHdhc21cSlNXQVNNTW9kdWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1
bmN0aW9uUGFyc2VyLmNwcCI+CisgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTU1vZHVsZVBhcnNl
ci5jcHAiPgogICAgICAgPEZpbHRlcj53YXNtPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBA
IC00NDIwLDEwICs0NDIzLDE2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXEpT
V0FTTU1vZHVsZS5oIj4KICAgICAgIDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNQ29uc3RhbnRzLmgiPgor
ICAgICAgPEZpbHRlcj53YXNtPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01Gb3JtYXQuaCI+CiAgICAgICA8RmlsdGVyPndhc208
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdh
c21cV0FTTU1hZ2ljTnVtYmVyLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxX
QVNNRnVuY3Rpb25QYXJzZXIuaCI+CisgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9u
U3ludGF4Q2hlY2tlci5oIj4KICAgICAgIDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNTW9kdWxlUGFyc2Vy
LmgiPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMDUzMWZkNmE1NzQ3ZGY3YTlm
MTRkNjIzZTZlNGQ4MDRiOTdiNmNmLi41MTQyYjI4NGYzMThiODY3MzM3MmMzNDVjM2U1YzliZmRi
NDU1MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzMiwxMSArMTAzMiwx
NCBAQAogCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQx
QUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1
QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3OUVFMEJGRDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAgKi87IH07CiAJCTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJp
YWJsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCMDI0
NzU1MUI4NjgyREQwMDU0MjQ0MCAvKiBXQVNNQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjAyNDc1MjFCODY4MkQ1MDA1NDI0NDAgLyog
V0FTTUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdCMDI0NzU2MUI4NjgyRTEwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IwMjQ3
NTMxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5jcHAgKi87IH07CisJCTdC
MDI0NzU3MUI4NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMDI0NzU0MUI4NjgyRDUwMDU0
MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3QjAyNDc1OTFCODY4RUI3MDA1NDI0NDAgLyogV0FTTUZ1
bmN0aW9uU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IwMjQ3NTgxQjg2OEVBRTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRh
eENoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjM5Rjc2RDFCNjJERTJFMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc2OTFCNjJE
RTIyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi87IH07CiAJCTdCMzlGNzZFMUI2
MkRFMzIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc2QTFCNjJERTIyMDAzNjBGQjQgLyogV0FT
TU1vZHVsZVBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCMzlGNzcwMUI2MkRFMzIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM5Rjc2QzFCNjJERTIy
MDAzNjBGQjQgLyogV0FTTVJlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdCMzlGNzcyMUI2MzU3NEQwMDM2MEZCNCAvKiBXQVNNUmVhZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzlG
NzcxMUI2MzU3NEIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmNwcCAqLzsgfTsKLQkJN0I3QTVFMjcx
QjY4Mjg4QzAwMjdDQUQwIC8qIFdBU01NYWdpY051bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3QTVFMjYxQjY4Mjg4NDAwMjdDQUQwIC8qIFdB
U01NYWdpY051bWJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCOThEMTM2MUI2MENENUYwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5OEQxMzQxQjYw
Q0Q1QTAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5jcHAgKi87IH07CiAJCTdCOThEMTM3MUI2MENE
NjIwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCOThEMTM1MUI2MENENUEwMDIzQjFBNCAvKiBKU1dBU01Nb2R1
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QkM1NDdEMzFCNjk1OUExMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8q
IFdBU01Gb3JtYXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjg0MiwxMSArMjg0NSwxNCBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5
RUUwQkZEMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyog
VmFyaWFibGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
YXJpYWJsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMDI0
NzUyMUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdBU01Db25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0IwMjQ3NTMxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNRnVuY3Rpb25QYXJzZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjAyNDc1NDFCODY4MkQ1MDA1NDI0
NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdBU01GdW5jdGlvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjAyNDc1ODFCODY4RUFFMDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMzlGNzY5MUI2MkRFMjIwMDM2MEZC
NCAvKiBXQVNNTW9kdWxlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdBU01Nb2R1bGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjM5Rjc2QTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMzlGNzZDMUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNUmVhZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01SZWFkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IzOUY3NzExQjYzNTc0QjAwMzYwRkI0IC8qIFdBU01S
ZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTVJlYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCN0E1RTI2MUI2ODI4ODQwMDI3
Q0FEMCAvKiBXQVNNTWFnaWNOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0FTTU1hZ2ljTnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOThE
MTM0MUI2MENENUEwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNXQVNNTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I5OEQxMzUxQjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dBU01Nb2R1bGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTUZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ0NCw4ICs0NDUwLDExIEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQk3Qjk4RDEzNDFCNjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmNwcCAq
LywKIAkJCQk3Qjk4RDEzNTFCNjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmggKi8sCisJ
CQkJN0IwMjQ3NTIxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCAqLywKIAkJCQk3
QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oICovLAotCQkJCTdCN0E1RTI2
MUI2ODI4ODQwMDI3Q0FEMCAvKiBXQVNNTWFnaWNOdW1iZXIuaCAqLywKKwkJCQk3QjAyNDc1MzFC
ODY4MkQ1MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCAqLywKKwkJCQk3QjAyNDc1
NDFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggKi8sCisJCQkJN0IwMjQ3
NTgxQjg2OEVBRTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCAqLywKIAkJ
CQk3QjM5Rjc2OTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8sCiAJ
CQkJN0IzOUY3NkExQjYyREUyMjAwMzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLywKIAkJ
CQk3QjM5Rjc3MTFCNjM1NzRCMDAzNjBGQjQgLyogV0FTTVJlYWRlci5jcHAgKi8sCkBAIC01OTcx
LDYgKzU5ODAsNyBAQAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9j
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBD
b2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjAyNDc1OTFCODY4RUI3MDA1NDI0NDAg
LyogV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMy
N0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEMzRjMwRTE2RjVDRDAwQjM0NDYwIC8qIENvbW1vbklkZW50aWZpZXJz
LmggaW4gSGVhZGVycyAqLywKQEAgLTYyMzAsNiArNjI0MCw3IEBACiAJCQkJMEY4RjJCOTYxNzJF
MDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUUwMTgw
NzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdE
NzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QjAyNDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9u
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQw
MDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4
QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLApAQCAt
NjYxOCw2ICs2NjI5LDcgQEAKIAkJCQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmls
ZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTEwRTE2RjVDRDAwQjM0NDYw
IC8qIFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlBNTE2NkFEMzUxMDAw
RjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IwMjQ3NTUx
Qjg2ODJERDAwNTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjcyOUI5MTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYxMzkxMkExNjc3MUMzNjAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVTZXF1
ZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFBy
b2ZpbGVyQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNjY0MSw3ICs2NjUzLDYgQEAK
IAkJCQlCQzE4QzQ1NDBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NUY2QkMxOEM1NTNGRTAwRjEwNjI2IC8qIFNwaWxs
UmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0I3QTVFMjcxQjY4Mjg4QzAwMjdD
QUQwIC8qIFdBU01NYWdpY051bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2
RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2RkM3NTExOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzU3NSw2ICs3NTg2LDcgQEAKIAkJCQkwRjVBNjI4MzE4OEM5OEQ0MDA3MkM5
REYgLyogRlRMVmFsdWVSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzM2MzdBNTFCNjMy
MjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdG
MzlDQjEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QjAyNDc1NjFCODY4MkUxMDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlGMTZCNzJBMTcwMDVERjk1QiAvKiBGdW5j
dGlvbkV4ZWN1dGFibGVEdW1wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyQjMxMEZEMTk3NEFF
ODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5Q0MxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUNvbnN0YW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNvbnN0YW50cy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlOGI2ZDIyNTYzNmE2OTgyMjg0MzM3YTNiY2ZhNGVmZjg0MTZjMDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ29uc3RhbnRz
LmgKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1IGJ5
IHRoZSByZXBvc2l0b3J5IGF1dGhvcnMgb2YKKyAqIFdlYkFzc2VtYmx5L3BvbHlmaWxsLXByb3Rv
dHlwZS0xLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorICovCisKKyNpZm5kZWYgV0FTTUNvbnN0YW50c19oCisjZGVmaW5lIFdBU01Db25z
dGFudHNfaAorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RhdGljIGNvbnN0IHVpbnQzMl90IHdhc21NYWdpY051bWJlciA9IDB4NmQ3MzYxNzc7CisKK2Vu
dW0gY2xhc3MgV0FTTU9wU3RhdGVtZW50IDogdWludDhfdCB7CisgICAgU2V0TG9jYWwsCisgICAg
U2V0R2xvYmFsLAorICAgIEkzMlN0b3JlOCwKKyAgICBJMzJTdG9yZVdpdGhPZmZzZXQ4LAorICAg
IEkzMlN0b3JlMTYsCisgICAgSTMyU3RvcmVXaXRoT2Zmc2V0MTYsCisgICAgSTMyU3RvcmUzMiwK
KyAgICBJMzJTdG9yZVdpdGhPZmZzZXQzMiwKKyAgICBGMzJTdG9yZSwKKyAgICBGMzJTdG9yZVdp
dGhPZmZzZXQsCisgICAgRjY0U3RvcmUsCisgICAgRjY0U3RvcmVXaXRoT2Zmc2V0LAorICAgIENh
bGxJbnRlcm5hbCwKKyAgICBDYWxsSW5kaXJlY3QsCisgICAgQ2FsbEltcG9ydCwKKyAgICBSZXR1
cm4sCisgICAgQmxvY2ssCisgICAgSWYsCisgICAgSWZFbHNlLAorICAgIFdoaWxlLAorICAgIERv
LAorICAgIExhYmVsLAorICAgIEJyZWFrLAorICAgIEJyZWFrTGFiZWwsCisgICAgQ29udGludWUs
CisgICAgQ29udGludWVMYWJlbCwKKyAgICBTd2l0Y2gsCisgICAgTnVtYmVyT2ZXQVNNT3BTdGF0
ZW1lbnRzCit9OworCitlbnVtIGNsYXNzIFdBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGUgOiB1
aW50OF90IHsKKyAgICBTZXRMb2NhbCwKKyAgICBTZXRHbG9iYWwsCisgICAgTnVtYmVyT2ZXQVNN
T3BTdGF0ZW1lbnRXaXRoSW1tZWRpYXRlcworfTsKKworZW51bSBjbGFzcyBXQVNNT3BFeHByZXNz
aW9uSTMyIDogdWludDhfdCB7CisgICAgQ29uc3RhbnRQb29sSW5kZXgsCisgICAgSW1tZWRpYXRl
LAorICAgIEdldExvY2FsLAorICAgIEdldEdsb2JhbCwKKyAgICBTZXRMb2NhbCwKKyAgICBTZXRH
bG9iYWwsCisgICAgU0xvYWQ4LAorICAgIFNMb2FkV2l0aE9mZnNldDgsCisgICAgVUxvYWQ4LAor
ICAgIFVMb2FkV2l0aE9mZnNldDgsCisgICAgU0xvYWQxNiwKKyAgICBTTG9hZFdpdGhPZmZzZXQx
NiwKKyAgICBVTG9hZDE2LAorICAgIFVMb2FkV2l0aE9mZnNldDE2LAorICAgIExvYWQzMiwKKyAg
ICBMb2FkV2l0aE9mZnNldDMyLAorICAgIFN0b3JlOCwKKyAgICBTdG9yZVdpdGhPZmZzZXQ4LAor
ICAgIFN0b3JlMTYsCisgICAgU3RvcmVXaXRoT2Zmc2V0MTYsCisgICAgU3RvcmUzMiwKKyAgICBT
dG9yZVdpdGhPZmZzZXQzMiwKKyAgICBDYWxsSW50ZXJuYWwsCisgICAgQ2FsbEluZGlyZWN0LAor
ICAgIENhbGxJbXBvcnQsCisgICAgQ29uZGl0aW9uYWwsCisgICAgQ29tbWEsCisgICAgRnJvbUYz
MiwKKyAgICBGcm9tRjY0LAorICAgIE5lZ2F0ZSwKKyAgICBBZGQsCisgICAgU3ViLAorICAgIE11
bCwKKyAgICBTRGl2LAorICAgIFVEaXYsCisgICAgU01vZCwKKyAgICBVTW9kLAorICAgIEJpdE5v
dCwKKyAgICBCaXRPciwKKyAgICBCaXRBbmQsCisgICAgQml0WG9yLAorICAgIExlZnRTaGlmdCwK
KyAgICBBcml0aG1ldGljUmlnaHRTaGlmdCwKKyAgICBMb2dpY2FsUmlnaHRTaGlmdCwKKyAgICBD
b3VudExlYWRpbmdaZXJvcywKKyAgICBMb2dpY2FsTm90LAorICAgIEVxdWFsSTMyLAorICAgIEVx
dWFsRjMyLAorICAgIEVxdWFsRjY0LAorICAgIE5vdEVxdWFsSTMyLAorICAgIE5vdEVxdWFsRjMy
LAorICAgIE5vdEVxdWFsRjY0LAorICAgIFNMZXNzVGhhbkkzMiwKKyAgICBVTGVzc1RoYW5JMzIs
CisgICAgTGVzc1RoYW5GMzIsCisgICAgTGVzc1RoYW5GNjQsCisgICAgU0xlc3NUaGFuT3JFcXVh
bEkzMiwKKyAgICBVTGVzc1RoYW5PckVxdWFsSTMyLAorICAgIExlc3NUaGFuT3JFcXVhbEYzMiwK
KyAgICBMZXNzVGhhbk9yRXF1YWxGNjQsCisgICAgU0dyZWF0ZXJUaGFuSTMyLAorICAgIFVHcmVh
dGVyVGhhbkkzMiwKKyAgICBHcmVhdGVyVGhhbkYzMiwKKyAgICBHcmVhdGVyVGhhbkY2NCwKKyAg
ICBTR3JlYXRlclRoYW5PckVxdWFsSTMyLAorICAgIFVHcmVhdGVyVGhhbk9yRXF1YWxJMzIsCisg
ICAgR3JlYXRlclRoYW5PckVxdWFsRjMyLAorICAgIEdyZWF0ZXJUaGFuT3JFcXVhbEY2NCwKKyAg
ICBTTWluLAorICAgIFVNaW4sCisgICAgU01heCwKKyAgICBVTWF4LAorICAgIEFicywKKyAgICBO
dW1iZXJPZldBU01PcEV4cHJlc3Npb25JMzJzCit9OworCitlbnVtIGNsYXNzIFdBU01PcEV4cHJl
c3Npb25JMzJXaXRoSW1tZWRpYXRlIDogdWludDhfdCB7CisgICAgQ29uc3RhbnRQb29sSW5kZXgs
CisgICAgSW1tZWRpYXRlLAorICAgIEdldExvY2FsLAorICAgIE51bWJlck9mV0FTTU9wRXhwcmVz
c2lvbkkzMldpdGhJbW1lZGlhdGVzCit9OworCitlbnVtIGNsYXNzIFdBU01WYXJpYWJsZVR5cGVz
IDogdWludDhfdCB7CisgICAgSTMyID0gMSA8PCAwLAorICAgIEYzMiA9IDEgPDwgMSwKKyAgICBG
NjQgPSAxIDw8IDIsCisgICAgTnVtYmVyT2ZWYXJpYWJsZVR5cGVzID0gOAorfTsKKworZW51bSBj
bGFzcyBXQVNNVmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUgOiB1aW50OF90IHsKKyAgICBJMzIs
CisgICAgTnVtYmVyT2ZWYXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZXMKK307CisKK2VudW0gY2xh
c3MgV0FTTUV4cG9ydEZvcm1hdCA6IHVpbnQ4X3QgeworICAgIERlZmF1bHQsCisgICAgUmVjb3Jk
LAorICAgIE51bWJlck9mRXhwb3J0Rm9ybWF0cworfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3Qg
aGFzSW1tZWRpYXRlSW5PcEZsYWcgPSAweDgwOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgb3BX
aXRoSW1tZWRpYXRlQml0cyA9IDI7CitzdGF0aWMgY29uc3QgdWludDMyX3Qgb3BXaXRoSW1tZWRp
YXRlTGltaXQgPSAxIDw8IG9wV2l0aEltbWVkaWF0ZUJpdHM7CisKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbW1lZGlhdGVCaXRzID0gNTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBpbW1lZGlhdGVM
aW1pdCA9IDEgPDwgaW1tZWRpYXRlQml0czsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNlbmRpZiAvLyBXQVNNQ29uc3RhbnRzX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAppbmRleCBhYmE5Zjk4YTBlNjY5NmRi
Y2NjZTE5MjI4OTIwYzMzOGYzMjc3MWVlLi4wNzdiZjNhMjk4ZDBjMWNhNzY4NmYzMTc1MThjMWE5
YjNmOTYzYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9y
bWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCkBAIC02
NSwxMiArNjUsNiBAQCBlbnVtIGNsYXNzIFdBU01FeHByZXNzaW9uVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIE51bWJlck9mRXhwcmVzc2lvblR5cGVzCiB9OwogCi1lbnVtIGNsYXNzIFdBU01FeHBvcnRG
b3JtYXQgOiB1aW50OF90IHsKLSAgICBEZWZhdWx0LAotICAgIFJlY29yZCwKLSAgICBOdW1iZXJP
ZkV4cG9ydEZvcm1hdHMKLX07Ci0KIHN0cnVjdCBXQVNNU2lnbmF0dXJlIHsKICAgICBXQVNNRXhw
cmVzc2lvblR5cGUgcmV0dXJuVHlwZTsKICAgICBWZWN0b3I8V0FTTVR5cGU+IGFyZ3VtZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZjYzA5ZjI3YmNmMzlkZmE1MWI0YTIxNmQ0YmZkNTc3ZmRkMWM1ZmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Q
YXJzZXIuY3BwCkBAIC0wLDAgKzEsMzQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldBU01GdW5j
dGlvblBhcnNlci5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSlNX
QVNNTW9kdWxlLmgiCisjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oIgorCisj
ZGVmaW5lIFBST1BBR0FURV9FUlJPUigpIGRvIHsgaWYgKCFtX2Vycm9yTWVzc2FnZS5pc051bGwo
KSkgcmV0dXJuIDA7IH0gd2hpbGUgKDApCisjZGVmaW5lIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9y
TWVzc2FnZSkgZG8geyAgbV9lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IHJldHVybiAwOyB9
IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwocmVzdWx0LCBl
cnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkQ29tcGFjdFVJbnQzMihyZXN1bHQp
KSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBS
RUFEX09QX1NUQVRFTUVOVF9PUl9GQUlMKGhhc0ltbWVkaWF0ZSwgb3AsIG9wV2l0aEltbWVkaWF0
ZSwgaW1tZWRpYXRlLCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCFtX3JlYWRlci5yZWFkT3BTdGF0
ZW1lbnQoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUpKSBGQUlM
X1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFEX09Q
X0VYUFJFU1NJT05fSTMyX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRl
LCBpbW1lZGlhdGUsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRPcEV4cHJl
c3Npb25JMzIoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUpKSBG
QUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBSRUFE
X1ZBUklBQkxFX1RZUEVTX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCB2YXJpYWJsZVR5cGVzLCB2YXJp
YWJsZVR5cGVzV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYg
KCFtX3JlYWRlci5yZWFkVmFyaWFibGVUeXBlcyhoYXNJbW1lZGlhdGUsIHZhcmlhYmxlVHlwZXMs
IHZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUpKSBGQUlMX1dJVEhfTUVTU0FH
RShlcnJvck1lc3NhZ2UpOyB9IHdoaWxlICgwKQorI2RlZmluZSBGQUlMX0lGX0ZBTFNFKGNvbmRp
dGlvbiwgZXJyb3JNZXNzYWdlKSBkbyB7IGlmICghKGNvbmRpdGlvbikpIEZBSUxfV0lUSF9NRVNT
QUdFKGVycm9yTWVzc2FnZSk7IH0gd2hpbGUgKDApCisKKyNkZWZpbmUgVU5VU0VEIDAKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2Jvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyOjpjaGVja1N5bnRheChKU1dB
U01Nb2R1bGUqIG1vZHVsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBzaXplX3QgZnVuY3Rp
b25JbmRleCwgdW5zaWduZWQgc3RhcnRPZmZzZXRJblNvdXJjZSwgdW5zaWduZWQmIGVuZE9mZnNl
dEluU291cmNlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBXQVNNRnVuY3Rpb25QYXJz
ZXIgcGFyc2VyKG1vZHVsZSwgc291cmNlLCBmdW5jdGlvbkluZGV4KTsKKyAgICBXQVNNRnVuY3Rp
b25TeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXI7CisgICAgcGFyc2VyLm1fcmVhZGVyLnNldE9m
ZnNldChzdGFydE9mZnNldEluU291cmNlKTsKKyAgICBwYXJzZXIucGFyc2VGdW5jdGlvbihzeW50
YXhDaGVja2VyKTsKKyAgICBpZiAoIXBhcnNlci5tX2Vycm9yTWVzc2FnZS5pc051bGwoKSkgewor
ICAgICAgICBlcnJvck1lc3NhZ2UgPSBwYXJzZXIubV9lcnJvck1lc3NhZ2U7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgZW5kT2Zmc2V0SW5Tb3VyY2UgPSBwYXJzZXIubV9yZWFk
ZXIub2Zmc2V0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250
ZXh0PgorYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb24oQ29udGV4dCYgY29u
dGV4dCkKK3sKKyAgICBjb25zdCBXQVNNU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBtX21vZHVsZS0+
c2lnbmF0dXJlcygpW21fbW9kdWxlLT5mdW5jdGlvbkRlY2xhcmF0aW9ucygpW21fZnVuY3Rpb25J
bmRleF0uc2lnbmF0dXJlSW5kZXhdOworCisgICAgbV9yZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJl
dHVyblR5cGU7CisKKyAgICBwYXJzZUxvY2FsVmFyaWFibGVzKCk7CisgICAgUFJPUEFHQVRFX0VS
Uk9SKCk7CisKKyAgICBjb25zdCBWZWN0b3I8V0FTTVR5cGU+JiBhcmd1bWVudHMgPSBzaWduYXR1
cmUuYXJndW1lbnRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUo
KTsgKytpKQorICAgICAgICBtX2xvY2FsVHlwZXMuYXBwZW5kKGFyZ3VtZW50c1tpXSk7CisgICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZJMzJMb2NhbFZhcmlhYmxlczsgKytp
KQorICAgICAgICBtX2xvY2FsVHlwZXMuYXBwZW5kKFdBU01UeXBlOjpJMzIpOworICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBtX251bWJlck9mRjMyTG9jYWxWYXJpYWJsZXM7ICsraSkKKyAg
ICAgICAgbV9sb2NhbFR5cGVzLmFwcGVuZChXQVNNVHlwZTo6RjMyKTsKKyAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkY2NExvY2FsVmFyaWFibGVzOyArK2kpCisgICAgICAg
IG1fbG9jYWxUeXBlcy5hcHBlbmQoV0FTTVR5cGU6OkY2NCk7CisKKyAgICBwYXJzZUJsb2NrU3Rh
dGVtZW50KGNvbnRleHQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VMb2NhbFZhcmlhYmxlcygpCit7CisgICAgbV9udW1iZXJPZkkzMkxvY2Fs
VmFyaWFibGVzID0gMDsKKyAgICBtX251bWJlck9mRjMyTG9jYWxWYXJpYWJsZXMgPSAwOworICAg
IG1fbnVtYmVyT2ZGNjRMb2NhbFZhcmlhYmxlcyA9IDA7CisKKyAgICBib29sIGhhc0ltbWVkaWF0
ZTsKKyAgICBXQVNNVmFyaWFibGVUeXBlcyB2YXJpYWJsZVR5cGVzOworICAgIFdBU01WYXJpYWJs
ZVR5cGVzV2l0aEltbWVkaWF0ZSB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZTsKKyAgICB1aW50
OF90IGltbWVkaWF0ZTsKKyAgICBSRUFEX1ZBUklBQkxFX1RZUEVTX09SX0ZBSUwoaGFzSW1tZWRp
YXRlLCB2YXJpYWJsZVR5cGVzLCB2YXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRl
LCAiQ2Fubm90IHJlYWQgdGhlIHR5cGVzIG9mIGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAgICBpZiAo
IWhhc0ltbWVkaWF0ZSkgeworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDhfdD4odmFyaWFi
bGVUeXBlcykgJiBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNVmFyaWFibGVUeXBlczo6STMyKSkK
KyAgICAgICAgICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChtX251bWJlck9mSTMyTG9j
YWxWYXJpYWJsZXMsICJDYW5ub3QgcmVhZCB0aGUgbnVtYmVyIG9mIGludDMyIGxvY2FsIHZhcmlh
Ymxlcy4iKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhcmlhYmxlVHlwZXMp
ICYgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6OkYzMikpCisgICAgICAg
ICAgICBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwobV9udW1iZXJPZkYzMkxvY2FsVmFyaWFi
bGVzLCAiQ2Fubm90IHJlYWQgdGhlIG51bWJlciBvZiBmbG9hdDMyIGxvY2FsIHZhcmlhYmxlcy4i
KTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhcmlhYmxlVHlwZXMpICYgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6OkY2NCkpCisgICAgICAgICAgICBS
RUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwobV9udW1iZXJPZkY2NExvY2FsVmFyaWFibGVzLCAi
Q2Fubm90IHJlYWQgdGhlIG51bWJlciBvZiBmbG9hdDY0IGxvY2FsIHZhcmlhYmxlcy4iKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9udW1iZXJPZkkzMkxvY2FsVmFyaWFibGVzID0gaW1tZWRpYXRl
OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRl
eHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudChDb250ZXh0JiBj
b250ZXh0KQoreworICAgIGJvb2wgaGFzSW1tZWRpYXRlOworICAgIFdBU01PcFN0YXRlbWVudCBv
cDsKKyAgICBXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRpYXRlIG9wV2l0aEltbWVkaWF0ZTsKKyAg
ICB1aW50OF90IGltbWVkaWF0ZTsKKyAgICBSRUFEX09QX1NUQVRFTUVOVF9PUl9GQUlMKGhhc0lt
bWVkaWF0ZSwgb3AsIG9wV2l0aEltbWVkaWF0ZSwgaW1tZWRpYXRlLCAiQ2Fubm90IHJlYWQgdGhl
IHN0YXRlbWVudCBvcGNvZGUuIik7CisgICAgaWYgKCFoYXNJbW1lZGlhdGUpIHsKKyAgICAgICAg
c3dpdGNoIChvcCkgeworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6U2V0TG9jYWw6Cisg
ICAgICAgICAgICBwYXJzZVNldExvY2FsU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpSZXR1cm46CisgICAgICAgICAg
ICBwYXJzZVJldHVyblN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6QmxvY2s6CisgICAgICAgICAgICBwYXJzZUJsb2Nr
U3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FT
TU9wU3RhdGVtZW50OjpTZXRHbG9iYWw6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJ
ZjoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OklmRWxzZToKKyAgICAgICAgY2FzZSBX
QVNNT3BTdGF0ZW1lbnQ6OldoaWxlOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RG86
CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpMYWJlbDoKKyAgICAgICAgY2FzZSBXQVNN
T3BTdGF0ZW1lbnQ6OkJyZWFrOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6QnJlYWtM
YWJlbDoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkNvbnRpbnVlOgorICAgICAgICBj
YXNlIFdBU01PcFN0YXRlbWVudDo6Q29udGludWVMYWJlbDoKKyAgICAgICAgY2FzZSBXQVNNT3BT
dGF0ZW1lbnQ6OlN3aXRjaDoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3Jl
ODoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlV2l0aE9mZnNldDg6Cisg
ICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZTE2OgorICAgICAgICBjYXNlIFdB
U01PcFN0YXRlbWVudDo6STMyU3RvcmVXaXRoT2Zmc2V0MTY6CisgICAgICAgIGNhc2UgV0FTTU9w
U3RhdGVtZW50OjpJMzJTdG9yZTMyOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMy
U3RvcmVXaXRoT2Zmc2V0MzI6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGMzJTdG9y
ZToKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkYzMlN0b3JlV2l0aE9mZnNldDoKKyAg
ICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkY2NFN0b3JlOgorICAgICAgICBjYXNlIFdBU01P
cFN0YXRlbWVudDo6RjY0U3RvcmVXaXRoT2Zmc2V0OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRl
bWVudDo6Q2FsbEludGVybmFsOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Q2FsbElu
ZGlyZWN0OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Q2FsbEltcG9ydDoKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAg
ICAgRkFJTF9XSVRIX01FU1NBR0UoIlVuc3VwcG9ydGVkIGluc3RydWN0aW9uLiIpOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKG9wV2l0aEltbWVkaWF0ZSkgeworICAgICAg
ICBjYXNlIFdBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGU6OlNldExvY2FsOgorICAgICAgICAg
ICAgcGFyc2VTZXRMb2NhbFN0YXRlbWVudChjb250ZXh0LCBpbW1lZGlhdGUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZTo6U2V0
R2xvYmFsOgorICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9u
LgorICAgICAgICAgICAgRkFJTF9XSVRIX01FU1NBR0UoIlVuc3VwcG9ydGVkIGluc3RydWN0aW9u
LiIpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxhdGUgPGNs
YXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VT
ZXRMb2NhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0LCB1aW50MzJfdCBsb2NhbEluZGV4KQor
eworICAgIEZBSUxfSUZfRkFMU0UobG9jYWxJbmRleCA8IG1fbG9jYWxUeXBlcy5zaXplKCksICJU
aGUgbG9jYWwgdmFyaWFibGUgaW5kZXggaXMgaW5jb3JyZWN0LiIpOworICAgIFdBU01UeXBlIHR5
cGUgPSBtX2xvY2FsVHlwZXNbbG9jYWxJbmRleF07CisgICAgcGFyc2VFeHByZXNzaW9uKGNvbnRl
eHQsIFdBU01FeHByZXNzaW9uVHlwZSh0eXBlKSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlU2V0
TG9jYWxTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1aW50MzJfdCBsb2NhbElu
ZGV4OworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChsb2NhbEluZGV4LCAiQ2Fubm90
IHJlYWQgdGhlIGxvY2FsIGluZGV4LiIpOworICAgIHJldHVybiBwYXJzZVNldExvY2FsU3RhdGVt
ZW50KGNvbnRleHQsIGxvY2FsSW5kZXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4K
K0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVJldHVyblN0YXRlbWVu
dChDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChtX3JldHVyblR5cGUgIT0gV0FTTUV4cHJl
c3Npb25UeXBlOjpWb2lkKQorICAgICAgICBwYXJzZUV4cHJlc3Npb24oY29udGV4dCwgbV9yZXR1
cm5UeXBlKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAg
cmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3Rh
dGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VCbG9ja1N0YXRlbWVudChDb250ZXh0JiBj
b250ZXh0KQoreworICAgIHVpbnQzMl90IG51bWJlck9mU3RhdGVtZW50czsKKyAgICBSRUFEX0NP
TVBBQ1RfVUlOVDMyX09SX0ZBSUwobnVtYmVyT2ZTdGF0ZW1lbnRzLCAiQ2Fubm90IHJlYWQgdGhl
IG51bWJlciBvZiBzdGF0ZW1lbnRzLiIpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBu
dW1iZXJPZlN0YXRlbWVudHM7ICsraSkgeworICAgICAgICBwYXJzZVN0YXRlbWVudChjb250ZXh0
KTsKKyAgICAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAgfQorICAgIHJldHVybiBVTlVTRUQ7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb24oQ29udGV4dCYgY29udGV4dCwgV0FTTUV4cHJl
c3Npb25UeXBlIGV4cHJlc3Npb25UeXBlKQoreworICAgIHN3aXRjaCAoZXhwcmVzc2lvblR5cGUp
IHsKKyAgICBjYXNlIFdBU01FeHByZXNzaW9uVHlwZTo6STMyOgorICAgICAgICByZXR1cm4gcGFy
c2VFeHByZXNzaW9uSTMyKGNvbnRleHQpOworICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBlOjpG
MzI6CisgICAgY2FzZSBXQVNNRXhwcmVzc2lvblR5cGU6OkY2NDoKKyAgICBjYXNlIFdBU01FeHBy
ZXNzaW9uVHlwZTo6Vm9pZDoKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGVzZSBpbnN0
cnVjdGlvbnMuCisgICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBpbnN0cnVj
dGlvbi4iKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4
dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIoQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBib29sIGhhc0ltbWVkaWF0ZTsKKyAgICBXQVNNT3BFeHByZXNz
aW9uSTMyIG9wOworICAgIFdBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlIG9wV2l0aElt
bWVkaWF0ZTsKKyAgICB1aW50OF90IGltbWVkaWF0ZTsKKyAgICBSRUFEX09QX0VYUFJFU1NJT05f
STMyX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUs
ICJDYW5ub3QgcmVhZCB0aGUgaW50MzIgZXhwcmVzc2lvbiBvcGNvZGUuIik7CisgICAgaWYgKCFo
YXNJbW1lZGlhdGUpIHsKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OkltbWVkaWF0ZToKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUltbWVk
aWF0ZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6Q29uc3RhbnRQb29sSW5kZXg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6R2V0TG9jYWw6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R2V0R2xvYmFs
OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNldExvY2FsOgorICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNldEdsb2JhbDoKKyAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyOjpTTG9hZDg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
U0xvYWRXaXRoT2Zmc2V0ODoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTG9h
ZDg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWRXaXRoT2Zmc2V0ODoK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZDE2OgorICAgICAgICBjYXNl
IFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2FkV2l0aE9mZnNldDE2OgorICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6OlVMb2FkMTY6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6VUxvYWRXaXRoT2Zmc2V0MTY6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6TG9hZDMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkxvYWRXaXRoT2Zm
c2V0MzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmU4OgorICAgICAg
ICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3JlV2l0aE9mZnNldDg6CisgICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmUxNjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpTdG9yZVdpdGhPZmZzZXQxNjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpTdG9yZTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3Jl
V2l0aE9mZnNldDMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNhbGxJbnRl
cm5hbDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDYWxsSW5kaXJlY3Q6Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q2FsbEltcG9ydDoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDb25kaXRpb25hbDoKKyAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyOjpDb21tYToKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpG
cm9tRjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkZyb21GNjQ6CisgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TmVnYXRlOgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OkFkZDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpT
dWI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TXVsOgorICAgICAgICBjYXNl
IFdBU01PcEV4cHJlc3Npb25JMzI6OlNEaXY6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6VURpdjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTW9kOgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVNb2Q6CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6Qml0Tm90OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkJpdE9yOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdEFuZDoKKyAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXRYb3I6CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6TGVmdFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OkFyaXRobWV0aWNSaWdodFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OkxvZ2ljYWxSaWdodFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkNvdW50TGVhZGluZ1plcm9zOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Okxv
Z2ljYWxOb3Q6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxJMzI6Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGMzI6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGNjQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6Tm90RXF1YWxJMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
Tm90RXF1YWxGMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Tm90RXF1YWxG
NjQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0xlc3NUaGFuSTMyOgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVMZXNzVGhhbkkzMjoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMZXNzVGhhbkYzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyOjpMZXNzVGhhbkY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9u
STMyOjpTTGVzc1RoYW5PckVxdWFsSTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OlVMZXNzVGhhbk9yRXF1YWxJMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6TGVzc1RoYW5PckVxdWFsRjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
Okxlc3NUaGFuT3JFcXVhbEY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpT
R3JlYXRlclRoYW5JMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUdyZWF0
ZXJUaGFuSTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkdyZWF0ZXJUaGFu
RjMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkdyZWF0ZXJUaGFuRjY0Ogor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNHcmVhdGVyVGhhbk9yRXF1YWxJMzI6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUdyZWF0ZXJUaGFuT3JFcXVhbEkz
MjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHcmVhdGVyVGhhbk9yRXF1YWxG
MzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRlclRoYW5PckVxdWFs
RjY0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNNaW46CisgICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VU1pbjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpTTWF4OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVNYXg6Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6QWJzOgorICAgICAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGVzZSBpbnN0cnVjdGlvbnMuCisgICAgICAgICAgICBGQUlMX1dJVEhf
TUVTU0FHRSgiVW5zdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24uIik7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIHN3aXRjaCAob3BXaXRoSW1tZWRpYXRlKSB7CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMldpdGhJbW1lZGlhdGU6OkltbWVkaWF0ZToKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUltbWVkaWF0ZUV4cHJlc3Npb25JMzIoY29udGV4dCwgaW1tZWRpYXRlKTsKKyAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZTo6Q29uc3RhbnRQb29sSW5k
ZXg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMldpdGhJbW1lZGlhdGU6OkdldExv
Y2FsOgorICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGVzZSBpbnN0cnVjdGlvbnMu
CisgICAgICAgICAgICBGQUlMX1dJVEhfTUVTU0FHRSgiVW5zdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24u
Iik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlSW1tZWRp
YXRlRXhwcmVzc2lvbkkzMihDb250ZXh0JiwgdWludDMyX3QpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2Vy
OjpwYXJzZUltbWVkaWF0ZUV4cHJlc3Npb25JMzIoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1
aW50MzJfdCBpbW1lZGlhdGU7CisgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGltbWVk
aWF0ZSwgIkNhbm5vdCByZWFkIHRoZSBpbW1lZGlhdGUuIik7CisgICAgcmV0dXJuIHBhcnNlSW1t
ZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0LCBpbW1lZGlhdGUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0OTUy
MDBiZTI0MDkwYzk4OTkyMjE4OGU0YjhlYjg1N2YxYWQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBAIC0wLDAgKzEs
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdBU01GdW5jdGlvblBhcnNlcl9oCisjZGVmaW5lIFdBU01GdW5jdGlvblBhcnNlcl9oCisK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5j
bHVkZSAiV0FTTVJlYWRlci5oIgorCisjZGVmaW5lIENvbnRleHRFeHByZXNzaW9uIHR5cGVuYW1l
IENvbnRleHQ6OkV4cHJlc3Npb24KKyNkZWZpbmUgQ29udGV4dFN0YXRlbWVudCB0eXBlbmFtZSBD
b250ZXh0OjpTdGF0ZW1lbnQKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTV0FTTU1vZHVs
ZTsKKworY2xhc3MgV0FTTUZ1bmN0aW9uUGFyc2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBjaGVja1N5bnRheChKU1dBU01Nb2R1bGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgc2l6ZV90IGZ1
bmN0aW9uSW5kZXgsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0SW5Tb3VyY2UsIHVuc2lnbmVkJiBlbmRP
ZmZzZXRJblNvdXJjZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworCitwcml2YXRlOgorICAgIFdB
U01GdW5jdGlvblBhcnNlcihKU1dBU01Nb2R1bGUqIG1vZHVsZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBzaXplX3QgZnVuY3Rpb25JbmRleCkKKyAgICAgICAgOiBtX21vZHVsZShtb2R1bGUp
CisgICAgICAgICwgbV9yZWFkZXIoc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRl
cio+KHNvdXJjZS5wcm92aWRlcigpKS0+ZGF0YSgpKQorICAgICAgICAsIG1fZnVuY3Rpb25JbmRl
eChmdW5jdGlvbkluZGV4KQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29u
dGV4dD4gYm9vbCBwYXJzZUZ1bmN0aW9uKENvbnRleHQmKTsKKyAgICBib29sIHBhcnNlTG9jYWxW
YXJpYWJsZXMoKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVt
ZW50IHBhcnNlU3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQmLCB1aW50
MzJfdCBsb2NhbEluZGV4KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0
YXRlbWVudCBwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVJldHVyblN0YXRlbWVudChDb250
ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFy
c2VCbG9ja1N0YXRlbWVudChDb250ZXh0Jik7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VFeHByZXNzaW9uKENvbnRleHQmLCBXQVNNRXhwcmVz
c2lvblR5cGUpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNz
aW9uIHBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250
ZXh0JiwgdWludDMyX3QgaW1tZWRpYXRlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4g
Q29udGV4dEV4cHJlc3Npb24gcGFyc2VJbW1lZGlhdGVFeHByZXNzaW9uSTMyKENvbnRleHQmKTsK
KworICAgIEpTV0FTTU1vZHVsZSogbV9tb2R1bGU7CisgICAgV0FTTVJlYWRlciBtX3JlYWRlcjsK
KyAgICBzaXplX3QgbV9mdW5jdGlvbkluZGV4OworICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsK
KworICAgIFdBU01FeHByZXNzaW9uVHlwZSBtX3JldHVyblR5cGU7CisgICAgVmVjdG9yPFdBU01U
eXBlPiBtX2xvY2FsVHlwZXM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkkzMkxvY2FsVmFyaWFi
bGVzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZGMzJMb2NhbFZhcmlhYmxlczsKKyAgICB1aW50
MzJfdCBtX251bWJlck9mRjY0TG9jYWxWYXJpYWJsZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2VuZGlmIC8vIFdBU01GdW5j
dGlvblBhcnNlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRhYTRkZTdkYTNlYjg3MjI3YjY2
NGEzMmVjYTEyNDYzYjBhYTQyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaApAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyX2gKKyNkZWZpbmUgV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tl
cl9oCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIGludCBF
eHByZXNzaW9uOworICAgIHR5cGVkZWYgaW50IFN0YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZW5kaWYgLy8gV0FT
TUZ1bmN0aW9uU3ludGF4Q2hlY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTWFnaWNOdW1iZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01NYWdpY051bWJlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWRkMmZhMjdm
MjhiM2ZhMGIzYmNiOTI3NmRkOTc1MDljNmEwNjQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NYWdp
Y051bWJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0FTTU1hZ2ljTnVtYmVyX2gK
LSNkZWZpbmUgV0FTTU1hZ2ljTnVtYmVyX2gKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBjb25zdCB1aW50MzJfdCB3YXNtTWFnaWNOdW1iZXIg
PSAweDZkNzM2MTc3OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKLQotI2VuZGlmIC8vIFdBU01NYWdpY051bWJlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDIzMTQ4ZTI2NDEy
NTQ1MTlmYmZjMTc3ODdhZWMxMjVmZjM4MDI4ZTIuLjUwZGJiOGU1MDliNmM3ZjQ1N2QxZDc2ZDYx
NmNhODA0NTc1Y2E4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01N
b2R1bGVQYXJzZXIuY3BwCkBAIC0zMSw3ICszMSw4IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIK
LSNpbmNsdWRlICJXQVNNTWFnaWNOdW1iZXIuaCIKKyNpbmNsdWRlICJXQVNNQ29uc3RhbnRzLmgi
CisjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KIAogI2RlZmluZSBGQUlMX1dJVEhfTUVTU0FHRShlcnJvck1lc3NhZ2UpIGRvIHsgbV9l
cnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IHJldHVybjsgfSB3aGlsZSAoMCkKQEAgLTQ5LDcg
KzUwLDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiBXQVNNTW9kdWxlUGFyc2VyOjpXQVNNTW9kdWxl
UGFyc2VyKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IG1fcmVhZGVyKHN0YXRpY19j
YXN0PFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIqPihzb3VyY2UucHJvdmlkZXIoKSktPmRhdGEo
KSkKKyAgICA6IG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fcmVhZGVyKHN0YXRpY19jYXN0PFdl
YkFzc2VtYmx5U291cmNlUHJvdmlkZXIqPihzb3VyY2UucHJvdmlkZXIoKSktPmRhdGEoKSkKIHsK
IH0KIApAQCAtMjQ3LDI1ICsyNDksMjIgQEAgdm9pZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uUG9pbnRlclRhYmxlU2VjdGlvbigpCiAKIHZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFy
c2VGdW5jdGlvbkRlZmluaXRpb25TZWN0aW9uKCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbW9kdWxlLT5mdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCk7CisgICAgZm9yIChzaXplX3QgZnVuY3Rpb25J
bmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZS0+ZnVuY3Rpb25EZWNsYXJhdGlvbnMo
KS5zaXplKCk7ICsrZnVuY3Rpb25JbmRleCkgeworICAgICAgICBwYXJzZUZ1bmN0aW9uRGVmaW5p
dGlvbihmdW5jdGlvbkluZGV4KTsKICAgICAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CiAgICAgfQog
fQogCi12b2lkIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKCkKK3Zv
aWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb24oc2l6ZV90IGZ1bmN0
aW9uSW5kZXgpCiB7Ci0gICAgLy8gRklYTUU6IFN1cHBvcnQgYW55IGZ1bmN0aW9ucy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzczOAotICAgIC8vIEN1cnJlbnRs
eSwgd2Ugb25seSBzdXBwb3J0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgInJldHVybiAwOyIgYXMgdGhl
aXIgb25seSBzdGF0ZW1lbnQuCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNvbnNpc3Qgb2YgZXhh
Y3RseSA0IGJ5dGVzLCBpLmUuCi0gICAgLy8gMS4gVGhlIG51bWJlciBvZiBsb2NhbCB2YXJpYWJs
ZXMgKDApIFsweDgwXQotICAgIC8vIDIuIFRoZSBudW1iZXIgb2Ygc3RhdGVtZW50cyAoMSkgWzB4
MDFdCi0gICAgLy8gMy4gVGhlIHJldHVybiBzdGF0ZW1lbnQgWzB4MGZdCi0gICAgLy8gNC4gVGhl
IGltbWVkaWF0ZSBleHByZXNzaW9uICgwKSBbMHhhMF0KLSAgICB1aW50MzJfdCBmdW5jdGlvbkRl
ZmluaXRpb25CeXRlczsKLSAgICBSRUFEX1VJTlQzMl9PUl9GQUlMKGZ1bmN0aW9uRGVmaW5pdGlv
bkJ5dGVzLCAiQ2Fubm90IHJlYWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uIik7Ci0gICAgRkFJ
TF9JRl9GQUxTRShmdW5jdGlvbkRlZmluaXRpb25CeXRlcyA9PSAweGEwMGYwMTgwLCAiT25seSBm
dW5jdGlvbnMgdGhhdCBoYXZlIFwicmV0dXJuIDA7XCIgIgotICAgICAgICAiYXMgdGhlaXIgb25s
eSBzdGF0ZW1lbnQgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50LiIpOworICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0SW5Tb3VyY2UgPSBtX3JlYWRlci5vZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBl
bmRPZmZzZXRJblNvdXJjZTsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIGlmICghV0FT
TUZ1bmN0aW9uUGFyc2VyOjpjaGVja1N5bnRheChtX21vZHVsZS5nZXQoKSwgbV9zb3VyY2UsIGZ1
bmN0aW9uSW5kZXgsIHN0YXJ0T2Zmc2V0SW5Tb3VyY2UsIGVuZE9mZnNldEluU291cmNlLCBlcnJv
ck1lc3NhZ2UpKSB7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVhZGVyLnNldE9mZnNldChlbmRPZmZzZXRJblNv
dXJjZSk7CiB9CiAKIHZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnRTZWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAppbmRleCA1
ZWM1ZmQzODg1ZDJlMDIwY2I5ZjViZDRkZmEyYjY1NmQzNzkwOWQ3Li4zMGYxYTU2NTk4OGM2MDE0
YjU0NWZjMWM2YzI2YzA5M2Q4ZmI1NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU1vZHVsZVBhcnNlci5oCkBAIC01NCw5ICs1NCwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uU2VjdGlvbigpOwogICAgIHZvaWQgcGFyc2VGdW5j
dGlvblBvaW50ZXJUYWJsZVNlY3Rpb24oKTsKICAgICB2b2lkIHBhcnNlRnVuY3Rpb25EZWZpbml0
aW9uU2VjdGlvbigpOwotICAgIHZvaWQgcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKTsKKyAgICB2
b2lkIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uKHNpemVfdCBmdW5jdGlvbkluZGV4KTsKICAgICB2
b2lkIHBhcnNlRXhwb3J0U2VjdGlvbigpOwogCisgICAgY29uc3QgU291cmNlQ29kZSYgbV9zb3Vy
Y2U7CiAgICAgV0FTTVJlYWRlciBtX3JlYWRlcjsKICAgICBTdHJvbmc8SlNXQVNNTW9kdWxlPiBt
X21vZHVsZTsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01SZWFkZXIuY3BwCmluZGV4IDI4ZTEzNTdhMTM1ZjQyNzI1M2Q0M2I5NTkzZjQy
Mjg3ZGNkZTFiOTYuLmY0NDcyMTEzNzkwOWI5MzUwMmY2YmVmYmIxYmYwODc0ODg4NzVjMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuY3BwCkBAIC0yMSw2ICsyMSwy
MyBAQAogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBieSB0aGUgcmVwb3NpdG9y
eSBhdXRob3JzIG9mCisgKiBXZWJBc3NlbWJseS9wb2x5ZmlsbC1wcm90b3R5cGUtMS4KKyAqCisg
KiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0xMTMsMTcgKzEzMCwxNyBAQCBib29sIFdBU01SZWFk
ZXI6OnJlYWRTdHJpbmcoU3RyaW5nJiByZXN1bHQpCiAKIGJvb2wgV0FTTVJlYWRlcjo6cmVhZFR5
cGUoV0FTTVR5cGUmIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gcmVhZEJ5dGU8V0FTTVR5cGU+KHJl
c3VsdCwgKHVpbnQ4X3QpV0FTTVR5cGU6Ok51bWJlck9mVHlwZXMpOworICAgIHJldHVybiByZWFk
Qnl0ZTxXQVNNVHlwZT4ocmVzdWx0LCBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNVHlwZTo6TnVt
YmVyT2ZUeXBlcykpOwogfQogCiBib29sIFdBU01SZWFkZXI6OnJlYWRFeHByZXNzaW9uVHlwZShX
QVNNRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gcmVhZEJ5dGU8V0FTTUV4
cHJlc3Npb25UeXBlPihyZXN1bHQsICh1aW50OF90KVdBU01FeHByZXNzaW9uVHlwZTo6TnVtYmVy
T2ZFeHByZXNzaW9uVHlwZXMpOworICAgIHJldHVybiByZWFkQnl0ZTxXQVNNRXhwcmVzc2lvblR5
cGU+KHJlc3VsdCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTUV4cHJlc3Npb25UeXBlOjpOdW1i
ZXJPZkV4cHJlc3Npb25UeXBlcykpOwogfQogCiBib29sIFdBU01SZWFkZXI6OnJlYWRFeHBvcnRG
b3JtYXQoV0FTTUV4cG9ydEZvcm1hdCYgcmVzdWx0KQogewotICAgIHJldHVybiByZWFkQnl0ZTxX
QVNNRXhwb3J0Rm9ybWF0PihyZXN1bHQsICh1aW50OF90KVdBU01FeHBvcnRGb3JtYXQ6Ok51bWJl
ck9mRXhwb3J0Rm9ybWF0cyk7CisgICAgcmV0dXJuIHJlYWRCeXRlPFdBU01FeHBvcnRGb3JtYXQ+
KHJlc3VsdCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTUV4cG9ydEZvcm1hdDo6TnVtYmVyT2ZF
eHBvcnRGb3JtYXRzKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIFdBU01SZWFkZXI6
OnJlYWRCeXRlKFQmIHJlc3VsdCwgdWludDhfdCBudW1iZXJPZlZhbHVlcykKQEAgLTEzNiw2ICsx
NTMsNTAgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgV0FTTVJlYWRlcjo6cmVhZEJ5dGUoVCYg
cmVzdWx0LCB1aW50OF90IG51bWJlck9mVmFsdWVzKQogICAgIHJldHVybiB0cnVlOwogfQogCiti
b29sIFdBU01SZWFkZXI6OnJlYWRPcFN0YXRlbWVudChib29sJiBoYXNJbW1lZGlhdGUsIFdBU01P
cFN0YXRlbWVudCYgb3AsIFdBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGUmIG9wV2l0aEltbWVk
aWF0ZSwgdWludDhfdCYgaW1tZWRpYXRlKQoreworICAgIHJldHVybiByZWFkT3AoaGFzSW1tZWRp
YXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUsCisgICAgICAgIHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KFdBU01PcFN0YXRlbWVudDo6TnVtYmVyT2ZXQVNNT3BTdGF0ZW1lbnRzKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZTo6
TnVtYmVyT2ZXQVNNT3BTdGF0ZW1lbnRXaXRoSW1tZWRpYXRlcykpOworfQorCitib29sIFdBU01S
ZWFkZXI6OnJlYWRPcEV4cHJlc3Npb25JMzIoYm9vbCYgaGFzSW1tZWRpYXRlLCBXQVNNT3BFeHBy
ZXNzaW9uSTMyJiBvcCwgV0FTTU9wRXhwcmVzc2lvbkkzMldpdGhJbW1lZGlhdGUmIG9wV2l0aElt
bWVkaWF0ZSwgdWludDhfdCYgaW1tZWRpYXRlKQoreworICAgIHJldHVybiByZWFkT3AoaGFzSW1t
ZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUsCisgICAgICAgIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KFdBU01PcEV4cHJlc3Npb25JMzI6Ok51bWJlck9mV0FTTU9wRXhwcmVzc2lv
bkkzMnMpLAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNT3BFeHByZXNzaW9uSTMy
V2l0aEltbWVkaWF0ZTo6TnVtYmVyT2ZXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZXMp
KTsKK30KKworYm9vbCBXQVNNUmVhZGVyOjpyZWFkVmFyaWFibGVUeXBlcyhib29sJiBoYXNJbW1l
ZGlhdGUsIFdBU01WYXJpYWJsZVR5cGVzJiB2YXJpYWJsZVR5cGVzLCBXQVNNVmFyaWFibGVUeXBl
c1dpdGhJbW1lZGlhdGUmIHZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlLCB1aW50OF90JiBpbW1l
ZGlhdGUpCit7CisgICAgcmV0dXJuIHJlYWRPcChoYXNJbW1lZGlhdGUsIHZhcmlhYmxlVHlwZXMs
IHZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUsCisgICAgICAgIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KFdBU01WYXJpYWJsZVR5cGVzOjpOdW1iZXJPZlZhcmlhYmxlVHlwZXMpLAor
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNVmFyaWFibGVUeXBlc1dpdGhJbW1lZGlh
dGU6Ok51bWJlck9mVmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGVzKSk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBULCBjbGFzcyBUV2l0aEltbWVkaWF0ZT4KK2Jvb2wgV0FTTVJlYWRlcjo6cmVhZE9w
KGJvb2wmIGhhc0ltbWVkaWF0ZSwgVCYgb3AsIFRXaXRoSW1tZWRpYXRlJiBvcFdpdGhJbW1lZGlh
dGUsIHVpbnQ4X3QmIGltbWVkaWF0ZSwgdWludDhfdCBudW1iZXJPZlZhbHVlcywgdWludDhfdCBu
dW1iZXJPZlZhbHVlc1dpdGhJbW1lZGlhdGUpCit7CisgICAgQ0hFQ0tfUkVBRCgxKTsKKyAgICB1
aW50OF90IGJ5dGUgPSAqbV9jdXJzb3IrKzsKKworICAgIGlmICghKGJ5dGUgJiBoYXNJbW1lZGlh
dGVJbk9wRmxhZykpIHsKKyAgICAgICAgaWYgKGJ5dGUgPj0gbnVtYmVyT2ZWYWx1ZXMpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGhhc0ltbWVkaWF0ZSA9IGZhbHNlOworICAg
ICAgICBvcCA9IFQoYnl0ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHVp
bnQ4X3QgYnl0ZVdpdGhvdXRJbW1lZGlhdGUgPSAoYnl0ZSA+PiBpbW1lZGlhdGVCaXRzKSAmIChv
cFdpdGhJbW1lZGlhdGVMaW1pdCAtIDEpOworICAgIGlmIChieXRlV2l0aG91dEltbWVkaWF0ZSA+
PSBudW1iZXJPZlZhbHVlc1dpdGhJbW1lZGlhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBoYXNJbW1lZGlhdGUgPSB0cnVlOworICAgIG9wV2l0aEltbWVkaWF0ZSA9IFRXaXRoSW1tZWRp
YXRlKGJ5dGVXaXRob3V0SW1tZWRpYXRlKTsKKyAgICBpbW1lZGlhdGUgPSBieXRlICYgKGltbWVk
aWF0ZUxpbWl0IC0gMSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTVJlYWRlci5oCmluZGV4IDc2ZWEyNmI2ZGY3YmY4NTA4NWExNmVhMTMzODgzMGE5M2Yz
NDJjMjEuLjk5NWFkY2Q0N2QyYzc2ZTUxOGEzYjI5OTFhODZlMTk5ODZkZTYxYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIldBU01Db25zdGFudHMuaCIKICNpbmNs
dWRlICJXQVNNRm9ybWF0LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00MSw2ICs0
Miw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9jdXJzb3IgLSBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICB2b2lkIHNldE9m
ZnNldCh1bnNpZ25lZCBvZmZzZXQpIHsgbV9jdXJzb3IgPSBtX2J1ZmZlci5kYXRhKCkgKyBvZmZz
ZXQ7IH0KKwogICAgIGJvb2wgcmVhZFVJbnQzMih1aW50MzJfdCYgcmVzdWx0KTsKICAgICBib29s
IHJlYWRGbG9hdChmbG9hdCYgcmVzdWx0KTsKICAgICBib29sIHJlYWREb3VibGUoZG91YmxlJiBy
ZXN1bHQpOwpAQCAtNDksMTEgKzUzLDE1IEBAIHB1YmxpYzoKICAgICBib29sIHJlYWRUeXBlKFdB
U01UeXBlJiByZXN1bHQpOwogICAgIGJvb2wgcmVhZEV4cHJlc3Npb25UeXBlKFdBU01FeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKICAgICBib29sIHJlYWRFeHBvcnRGb3JtYXQoV0FTTUV4cG9ydEZv
cm1hdCYgcmVzdWx0KTsKKyAgICBib29sIHJlYWRPcFN0YXRlbWVudChib29sJiBoYXNJbW1lZGlh
dGUsIFdBU01PcFN0YXRlbWVudCYsIFdBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGUmLCB1aW50
OF90JiBpbW1lZGlhdGUpOworICAgIGJvb2wgcmVhZE9wRXhwcmVzc2lvbkkzMihib29sJiBoYXNJ
bW1lZGlhdGUsIFdBU01PcEV4cHJlc3Npb25JMzImLCBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aElt
bWVkaWF0ZSYsIHVpbnQ4X3QmIGltbWVkaWF0ZSk7CisgICAgYm9vbCByZWFkVmFyaWFibGVUeXBl
cyhib29sJiBoYXNJbW1lZGlhdGUsIFdBU01WYXJpYWJsZVR5cGVzJiwgV0FTTVZhcmlhYmxlVHlw
ZXNXaXRoSW1tZWRpYXRlJiwgdWludDhfdCYgaW1tZWRpYXRlKTsKIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3QgdWludDMyX3QgZmlyc3RTZXZlbkJpdHNNYXNrID0gMHg3ZjsKIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBUPiBib29sIHJlYWRCeXRlKFQmIHJlc3VsdCwgdWludDhfdCBudW1iZXJP
ZlZhbHVlcyk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFRXaXRoSW1tZWRpYXRlPiBi
b29sIHJlYWRPcChib29sJiBoYXNJbW1lZGlhdGUsIFQmLCBUV2l0aEltbWVkaWF0ZSYsIHVpbnQ4
X3QmIGltbWVkaWF0ZSwgdWludDhfdCBudW1iZXJPZlZhbHVlcywgdWludDhfdCBudW1iZXJPZlZh
bHVlc1dpdGhJbW1lZGlhdGUpOwogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtX2J1ZmZl
cjsKICAgICBjb25zdCB1aW50OF90KiBtX2N1cnNvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259614</attachid>
            <date>2015-08-21 08:25:11 -0700</date>
            <delta_ts>2015-08-21 14:46:33 -0700</delta_ts>
            <desc>Fix CMakeLists.txt</desc>
            <filename>bug-147738-20150821082505.patch</filename>
            <type>text/plain</type>
            <size>53459</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Mzk4MTA2MmFjNDZhY2JlZGZmNTExNWY2MDM0YWE4OWM1MTA0N2YxLi42MDAwOWY2OTc4OWM5MTgw
MjM0ZjAwM2JmN2E0ODhhYmU3OTUwODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxNS0wOC0yMSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gcGFyc2VyIGZvciBXZWJBc3NlbWJseSBmaWxlcyBwcm9k
dWNlZCBieSBwYWNrLWFzbWpzCisgICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1i
bHkvcG9seWZpbGwtcHJvdG90eXBlLTE+LiBUaGlzIHBhdGNoIHBhcnNlcyBvbmx5CisgICAgICAg
IHNvbWUgaW5zdHJ1Y3Rpb25zIG9uIHN0YXRlbWVudHMgYW5kIGludDMyIGV4cHJlc3Npb25zLiBQ
YXJzaW5nIG9mIHRoZSByZXN0CisgICAgICAgIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gc3Vic2Vx
dWVudCBwYXRjaGVzLiBUaGUgaW5zdHJ1Y3Rpb24gbGlzdHMgaW4gV0FTTUNvbnN0YW50cy5oCisg
ICAgICAgIGFyZSBzbGlnaHRseSBtb2RpZmllZCBmcm9tCisgICAgICAgIDxodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvcG9seWZpbGwtcHJvdG90eXBlLTEvYmxvYi9tYXN0ZXIvc3JjL3No
YXJlZC5oPi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdh
c20vV0FTTUNvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUxvY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VFeHByZXNzaW9uSTMyKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFy
c2VyOjpwYXJzZUltbWVkaWF0ZUV4cHJlc3Npb25JMzIpOgorICAgICAgICAqIHdhc20vV0FTTUZ1
bmN0aW9uUGFyc2VyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6
OldBU01GdW5jdGlvblBhcnNlcik6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhD
aGVja2VyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTWFn
aWNOdW1iZXIuaC4KKyAgICAgICAgKiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpXQVNNTW9kdWxlUGFyc2VyKToKKyAgICAgICAgKEpT
Qzo6V0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25TZWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6V0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb24pOgor
ICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5oOgorICAgICAgICAqIHdhc20vV0FTTVJl
YWRlci5jcHA6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRUeXBlKToKKyAgICAgICAg
KEpTQzo6V0FTTVJlYWRlcjo6cmVhZEV4cHJlc3Npb25UeXBlKToKKyAgICAgICAgKEpTQzo6V0FT
TVJlYWRlcjo6cmVhZEV4cG9ydEZvcm1hdCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJl
YWRPcFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcEV4cHJlc3Np
b25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNUmVhZGVyOjpyZWFkVmFyaWFibGVUeXBlcyk6Cisg
ICAgICAgIChKU0M6OldBU01SZWFkZXI6OnJlYWRPcCk6CisgICAgICAgICogd2FzbS9XQVNNUmVh
ZGVyLmg6CisgICAgICAgIChKU0M6OldBU01SZWFkZXI6Om9mZnNldCk6CisgICAgICAgIChKU0M6
OldBU01SZWFkZXI6OnNldE9mZnNldCk6CisKIDIwMTUtMDgtMjAgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxl
IGxvYWRlciBpbiBKU0Mgc2hlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA0OGM3MjE2ZmI5Njc0ZTRmZThjZGVmNjkxYzYwZTM1ZWE0YTkyNjhmLi5iZmVhNmRiZGFlNjkw
NmEzMDIyNTUzYzRjYTdjYmU4YmUxMzhlOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC00MjMsNiArNDIzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICB0b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAogCiAgICAgd2FzbS9KU1dBU01Nb2R1bGUu
Y3BwCisgICAgd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCiAgICAgd2FzbS9XQVNNTW9kdWxl
UGFyc2VyLmNwcAogICAgIHdhc20vV0FTTVJlYWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNzI5NWZkMDFlZmQ4MjAwNGYyMjUyYjdlYjY1MDIxMjA2
OGU2Nzg5YS4uY2E1MmRiNTAwZWI2MTZiNTQzOWVkNWZiMmNiMWE2NjRmM2Q1Y2M2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC04OTIsNiArODkyLDcgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xzXEpTRG9sbGFyVk0uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cdG9vbHNcSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3YXNtXEpTV0FTTU1vZHVsZS5jcHAiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01GdW5jdGlvblBhcnNlci5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01Nb2R1bGVQYXJzZXIuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNUmVhZGVyLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHlhcnJcUmVndWxhckV4cHJlc3Npb24uY3BwIiAvPgpAQCAt
MTc4Niw4ICsxNzg3LDEwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xQcm9m
aWxlVHJlZU5vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHRvb2xzXFRpZXJl
ZE1NYXBBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxKU1dBU01N
b2R1bGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUNvbnN0YW50
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRm9ybWF0LmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01NYWdpY051bWJlci5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNRnVuY3Rpb25QYXJzZXIuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tl
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNTW9kdWxlUGFyc2Vy
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdBU01SZWFkZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHlhcnJcUmVndWxhckV4cHJlc3Npb24uaCIgLz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRl
eCA5YmRmNTQ5NGNmMjA1ZDlhMmQyMjc1ZjM3MWFjZDFjYTZkZTBlNjEwLi45ZTYzNDQ2Mzc5ZGNi
ZWM3NWNhZDg3Y2QwOTJjZTU0YzYwM2YwZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xODQxLDYgKzE4NDEsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd2FzbVxKU1dBU01Nb2R1bGUuY3BwIj4KICAgICAgIDxGaWx0
ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cd2FzbVxXQVNNRnVuY3Rpb25QYXJzZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+d2FzbTwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2Fz
bVxXQVNNTW9kdWxlUGFyc2VyLmNwcCI+CiAgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTQ0MjAsMTAgKzQ0MjMsMTYgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHdhc21cSlNXQVNNTW9kdWxlLmgiPgogICAgICAgPEZpbHRlcj53YXNtPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNtXFdB
U01Db25zdGFudHMuaCI+CisgICAgICA8RmlsdGVyPndhc208L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHdhc21cV0FTTUZvcm1hdC5oIj4KICAg
ICAgIDxGaWx0ZXI+d2FzbTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd2FzbVxXQVNNTWFnaWNOdW1iZXIuaCI+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3YXNtXFdBU01GdW5jdGlvblBhcnNlci5oIj4KKyAgICAgIDxGaWx0ZXI+d2Fz
bTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d2FzbVxXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgiPgogICAgICAgPEZpbHRlcj53YXNtPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3YXNt
XFdBU01Nb2R1bGVQYXJzZXIuaCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQw
NTMxZmQ2YTU3NDdkZjdhOWYxNGQ2MjNlNmU0ZDgwNGI5N2I2Y2YuLjUxNDJiMjg0ZjMxOGI4Njcz
MzcyYzM0NWMzZTVjOWJmZGI0NTUwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMDMyLDExICsxMDMyLDE0IEBACiAJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RUUw
QkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZEMUI0QUZCODUwMDAz
ODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJNzlFRTBDMDAxQjRBRkI4
NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJp
YWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0IwMjQ3NTUxQjg2ODJERDAwNTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMDI0NzUyMUI4
NjgyRDUwMDU0MjQ0MCAvKiBXQVNNQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0IwMjQ3NTYxQjg2ODJFMTAwNTQyNDQwIC8qIFdB
U01GdW5jdGlvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjAyNDc1MzFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2Vy
LmNwcCAqLzsgfTsKKwkJN0IwMjQ3NTcxQjg2ODJFNDAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBh
cnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Iw
MjQ3NTQxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCMDI0NzU5MUI4NjhFQjcw
MDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjAyNDc1ODFCODY4RUFFMDA1NDI0NDAgLyog
V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTdCMzlGNzZEMUI2MkRFMkUwMDM2MEZCNCAvKiBXQVNNTW9k
dWxlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCMzlGNzY5MUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFyc2VyLmNwcCAqLzsg
fTsKIAkJN0IzOUY3NkUxQjYyREUzMjAwMzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzlGNzZBMUI2MkRF
MjIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IzOUY3NzAxQjYyREUzMjAwMzYwRkI0IC8qIFdB
U01SZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCMzlGNzZDMUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IzOUY3NzIxQjYzNTc0RDAwMzYw
RkI0IC8qIFdBU01SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IzOUY3NzExQjYzNTc0QjAwMzYwRkI0IC8qIFdBU01SZWFkZXIuY3BwICov
OyB9OwotCQk3QjdBNUUyNzFCNjgyODhDMDAyN0NBRDAgLyogV0FTTU1hZ2ljTnVtYmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjdBNUUyNjFCNjgy
ODg0MDAyN0NBRDAgLyogV0FTTU1hZ2ljTnVtYmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5OEQxMzYxQjYwQ0Q1RjAwMjNCMUE0IC8qIEpT
V0FTTU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Qjk4RDEzNDFCNjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmNwcCAqLzsgfTsK
IAkJN0I5OEQxMzcxQjYwQ0Q2MjAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5OEQxMzUxQjYwQ0Q1QTAwMjNC
MUE0IC8qIEpTV0FTTU1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdCQzU0N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXQVNNRm9ybWF0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFC
Njk1OTlCMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODQyLDExICsyODQ1LDE0IEBACiAJCTcwRUNBNjA0
MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlUmVnaXN0cnlLZXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzlFRTBCRkQxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFyaWFibGVF
bnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RUUwQkZFMUI0
QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0IwMjQ3NTIxQjg2ODJENTAwNTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTUNvbnN0YW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjAyNDc1MzFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUZ1
bmN0aW9uUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdB
U01GdW5jdGlvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMDI0
NzU0MUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTUZ1bmN0aW9uUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCMDI0NzU4MUI4NjhFQUUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25T
eW50YXhDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01GdW5j
dGlvblN5bnRheENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IzOUY3
NjkxQjYyREUyMjAwMzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTU1vZHVsZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMzlGNzZBMUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNTW9kdWxl
UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01Nb2R1bGVQYXJz
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IzOUY3NkMxQjYyREUyMjAwMzYw
RkI0IC8qIFdBU01SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FT
TVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjM5Rjc3MTFCNjM1NzRC
MDAzNjBGQjQgLyogV0FTTVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXQVNNUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I3
QTVFMjYxQjY4Mjg4NDAwMjdDQUQwIC8qIFdBU01NYWdpY051bWJlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTWFnaWNOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I5OEQxMzQxQjYwQ0Q1QTAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dBU01Nb2R1bGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qjk4RDEzNTFCNjBDRDVBMDAyM0IxQTQgLyog
SlNXQVNNTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV0FTTU1v
ZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1OTlCMDA5
NTlCNTggLyogV0FTTUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
QVNNRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDQ0LDggKzQ0NTAs
MTEgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdCOThEMTM0MUI2MENENUEwMDIzQjFBNCAvKiBK
U1dBU01Nb2R1bGUuY3BwICovLAogCQkJCTdCOThEMTM1MUI2MENENUEwMDIzQjFBNCAvKiBKU1dB
U01Nb2R1bGUuaCAqLywKKwkJCQk3QjAyNDc1MjFCODY4MkQ1MDA1NDI0NDAgLyogV0FTTUNvbnN0
YW50cy5oICovLAogCQkJCTdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0Lmgg
Ki8sCi0JCQkJN0I3QTVFMjYxQjY4Mjg4NDAwMjdDQUQwIC8qIFdBU01NYWdpY051bWJlci5oICov
LAorCQkJCTdCMDI0NzUzMUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuY3Bw
ICovLAorCQkJCTdCMDI0NzU0MUI4NjgyRDUwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIu
aCAqLywKKwkJCQk3QjAyNDc1ODFCODY4RUFFMDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4
Q2hlY2tlci5oICovLAogCQkJCTdCMzlGNzY5MUI2MkRFMjIwMDM2MEZCNCAvKiBXQVNNTW9kdWxl
UGFyc2VyLmNwcCAqLywKIAkJCQk3QjM5Rjc2QTFCNjJERTIyMDAzNjBGQjQgLyogV0FTTU1vZHVs
ZVBhcnNlci5oICovLAogCQkJCTdCMzlGNzcxMUI2MzU3NEIwMDM2MEZCNCAvKiBXQVNNUmVhZGVy
LmNwcCAqLywKQEAgLTU5NzEsNiArNTk4MCw3IEBACiAJCQkJQTc3RjE4MjIxNjQwODhCMjAwNjQw
QTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFMTE2QjEwRkU3NUFDODAw
QjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRDdFNjkxNDQ3
OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMDI0NzU5
MUI4NjhFQjcwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENv
ZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyog
Q29tbW9uSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICovLApAQCAtNjIzMCw2ICs2MjQwLDcgQEAK
IAkJCQkwRjhGMkI5NjE3MkUwNEEzMDA3REJEQTUgLyogRlRMTGluay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTU4N0Q3MDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMDI0NzU3MUI4NjgyRTQwMDU0MjQ0
MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTEwMTcw
NTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC02NjE4LDYgKzY2MjksNyBAQAogCQkJCTk1Q0Q0NTc3MEUxQzRGREQw
MDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1
MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjcyOUE1MTY2QUQzNTEwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QjAyNDc1NTFCODY4MkREMDA1NDI0NDAgLyogV0FTTUNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNzI5QjkxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNv
ZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEzOTEyQTE2NzcxQzM2MDA5Q0NCMDcgLyogUHJv
ZmlsZXJCeXRlY29kZVNlcXVlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCQTE2NkFE
MzYwMDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC02
NjQxLDcgKzY2NTMsNiBAQAogCQkJCUJDMThDNDU0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9wZXJ0
eU5hbWVBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFB
IC8qIFByb3BlcnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg1RjZCQzE4QzU1M0ZF
MDBGMTA2MjYgLyogU3BpbGxSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjdB
NUUyNzFCNjgyODhDMDAyN0NBRDAgLyogV0FTTU1hZ2ljTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ1NTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlTbG90LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5QzE1RUQ4RTQ2MDBGMTY3QjIgLyogUHJvcGVydHlTdG9yYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjZGQzc1MTE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdl
dFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTc1LDYgKzc1ODYsNyBAQAogCQkJCTBGNUE2
MjgzMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0N0YzOUNCMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCMDI0NzU2MUI4NjgyRTEwMDU0MjQ0MCAvKiBX
QVNNRnVuY3Rpb25QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUYxNkI3MkEx
NzAwNURGOTVCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTJCMzEwRkQxOTc0QUU4NzAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDQzEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rp
b25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNQ29uc3RhbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNQ29uc3RhbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU4YjZkMjI1NjM2YTY5ODIyODQzMzdhM2Jj
ZmE0ZWZmODQxNmMwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01Db25zdGFudHMuaApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgYnkgdGhlIHJlcG9zaXRvcnkgYXV0aG9ycyBvZgorICogV2ViQXNzZW1i
bHkvcG9seWZpbGwtcHJvdG90eXBlLTEuCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBXQVNNQ29uc3RhbnRzX2gK
KyNkZWZpbmUgV0FTTUNvbnN0YW50c19oCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25h
bWVzcGFjZSBKU0MgeworCitzdGF0aWMgY29uc3QgdWludDMyX3Qgd2FzbU1hZ2ljTnVtYmVyID0g
MHg2ZDczNjE3NzsKKworZW51bSBjbGFzcyBXQVNNT3BTdGF0ZW1lbnQgOiB1aW50OF90IHsKKyAg
ICBTZXRMb2NhbCwKKyAgICBTZXRHbG9iYWwsCisgICAgSTMyU3RvcmU4LAorICAgIEkzMlN0b3Jl
V2l0aE9mZnNldDgsCisgICAgSTMyU3RvcmUxNiwKKyAgICBJMzJTdG9yZVdpdGhPZmZzZXQxNiwK
KyAgICBJMzJTdG9yZTMyLAorICAgIEkzMlN0b3JlV2l0aE9mZnNldDMyLAorICAgIEYzMlN0b3Jl
LAorICAgIEYzMlN0b3JlV2l0aE9mZnNldCwKKyAgICBGNjRTdG9yZSwKKyAgICBGNjRTdG9yZVdp
dGhPZmZzZXQsCisgICAgQ2FsbEludGVybmFsLAorICAgIENhbGxJbmRpcmVjdCwKKyAgICBDYWxs
SW1wb3J0LAorICAgIFJldHVybiwKKyAgICBCbG9jaywKKyAgICBJZiwKKyAgICBJZkVsc2UsCisg
ICAgV2hpbGUsCisgICAgRG8sCisgICAgTGFiZWwsCisgICAgQnJlYWssCisgICAgQnJlYWtMYWJl
bCwKKyAgICBDb250aW51ZSwKKyAgICBDb250aW51ZUxhYmVsLAorICAgIFN3aXRjaCwKKyAgICBO
dW1iZXJPZldBU01PcFN0YXRlbWVudHMKK307CisKK2VudW0gY2xhc3MgV0FTTU9wU3RhdGVtZW50
V2l0aEltbWVkaWF0ZSA6IHVpbnQ4X3QgeworICAgIFNldExvY2FsLAorICAgIFNldEdsb2JhbCwK
KyAgICBOdW1iZXJPZldBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGVzCit9OworCitlbnVtIGNs
YXNzIFdBU01PcEV4cHJlc3Npb25JMzIgOiB1aW50OF90IHsKKyAgICBDb25zdGFudFBvb2xJbmRl
eCwKKyAgICBJbW1lZGlhdGUsCisgICAgR2V0TG9jYWwsCisgICAgR2V0R2xvYmFsLAorICAgIFNl
dExvY2FsLAorICAgIFNldEdsb2JhbCwKKyAgICBTTG9hZDgsCisgICAgU0xvYWRXaXRoT2Zmc2V0
OCwKKyAgICBVTG9hZDgsCisgICAgVUxvYWRXaXRoT2Zmc2V0OCwKKyAgICBTTG9hZDE2LAorICAg
IFNMb2FkV2l0aE9mZnNldDE2LAorICAgIFVMb2FkMTYsCisgICAgVUxvYWRXaXRoT2Zmc2V0MTYs
CisgICAgTG9hZDMyLAorICAgIExvYWRXaXRoT2Zmc2V0MzIsCisgICAgU3RvcmU4LAorICAgIFN0
b3JlV2l0aE9mZnNldDgsCisgICAgU3RvcmUxNiwKKyAgICBTdG9yZVdpdGhPZmZzZXQxNiwKKyAg
ICBTdG9yZTMyLAorICAgIFN0b3JlV2l0aE9mZnNldDMyLAorICAgIENhbGxJbnRlcm5hbCwKKyAg
ICBDYWxsSW5kaXJlY3QsCisgICAgQ2FsbEltcG9ydCwKKyAgICBDb25kaXRpb25hbCwKKyAgICBD
b21tYSwKKyAgICBGcm9tRjMyLAorICAgIEZyb21GNjQsCisgICAgTmVnYXRlLAorICAgIEFkZCwK
KyAgICBTdWIsCisgICAgTXVsLAorICAgIFNEaXYsCisgICAgVURpdiwKKyAgICBTTW9kLAorICAg
IFVNb2QsCisgICAgQml0Tm90LAorICAgIEJpdE9yLAorICAgIEJpdEFuZCwKKyAgICBCaXRYb3Is
CisgICAgTGVmdFNoaWZ0LAorICAgIEFyaXRobWV0aWNSaWdodFNoaWZ0LAorICAgIExvZ2ljYWxS
aWdodFNoaWZ0LAorICAgIENvdW50TGVhZGluZ1plcm9zLAorICAgIExvZ2ljYWxOb3QsCisgICAg
RXF1YWxJMzIsCisgICAgRXF1YWxGMzIsCisgICAgRXF1YWxGNjQsCisgICAgTm90RXF1YWxJMzIs
CisgICAgTm90RXF1YWxGMzIsCisgICAgTm90RXF1YWxGNjQsCisgICAgU0xlc3NUaGFuSTMyLAor
ICAgIFVMZXNzVGhhbkkzMiwKKyAgICBMZXNzVGhhbkYzMiwKKyAgICBMZXNzVGhhbkY2NCwKKyAg
ICBTTGVzc1RoYW5PckVxdWFsSTMyLAorICAgIFVMZXNzVGhhbk9yRXF1YWxJMzIsCisgICAgTGVz
c1RoYW5PckVxdWFsRjMyLAorICAgIExlc3NUaGFuT3JFcXVhbEY2NCwKKyAgICBTR3JlYXRlclRo
YW5JMzIsCisgICAgVUdyZWF0ZXJUaGFuSTMyLAorICAgIEdyZWF0ZXJUaGFuRjMyLAorICAgIEdy
ZWF0ZXJUaGFuRjY0LAorICAgIFNHcmVhdGVyVGhhbk9yRXF1YWxJMzIsCisgICAgVUdyZWF0ZXJU
aGFuT3JFcXVhbEkzMiwKKyAgICBHcmVhdGVyVGhhbk9yRXF1YWxGMzIsCisgICAgR3JlYXRlclRo
YW5PckVxdWFsRjY0LAorICAgIFNNaW4sCisgICAgVU1pbiwKKyAgICBTTWF4LAorICAgIFVNYXgs
CisgICAgQWJzLAorICAgIE51bWJlck9mV0FTTU9wRXhwcmVzc2lvbkkzMnMKK307CisKK2VudW0g
Y2xhc3MgV0FTTU9wRXhwcmVzc2lvbkkzMldpdGhJbW1lZGlhdGUgOiB1aW50OF90IHsKKyAgICBD
b25zdGFudFBvb2xJbmRleCwKKyAgICBJbW1lZGlhdGUsCisgICAgR2V0TG9jYWwsCisgICAgTnVt
YmVyT2ZXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZXMKK307CisKK2VudW0gY2xhc3Mg
V0FTTVZhcmlhYmxlVHlwZXMgOiB1aW50OF90IHsKKyAgICBJMzIgPSAxIDw8IDAsCisgICAgRjMy
ID0gMSA8PCAxLAorICAgIEY2NCA9IDEgPDwgMiwKKyAgICBOdW1iZXJPZlZhcmlhYmxlVHlwZXMg
PSA4Cit9OworCitlbnVtIGNsYXNzIFdBU01WYXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSA6IHVp
bnQ4X3QgeworICAgIEkzMiwKKyAgICBOdW1iZXJPZlZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRl
cworfTsKKworZW51bSBjbGFzcyBXQVNNRXhwb3J0Rm9ybWF0IDogdWludDhfdCB7CisgICAgRGVm
YXVsdCwKKyAgICBSZWNvcmQsCisgICAgTnVtYmVyT2ZFeHBvcnRGb3JtYXRzCit9OworCitzdGF0
aWMgY29uc3QgdWludDhfdCBoYXNJbW1lZGlhdGVJbk9wRmxhZyA9IDB4ODA7CisKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBvcFdpdGhJbW1lZGlhdGVCaXRzID0gMjsKK3N0YXRpYyBjb25zdCB1aW50
MzJfdCBvcFdpdGhJbW1lZGlhdGVMaW1pdCA9IDEgPDwgb3BXaXRoSW1tZWRpYXRlQml0czsKKwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGltbWVkaWF0ZUJpdHMgPSA1Oworc3RhdGljIGNvbnN0IHVp
bnQzMl90IGltbWVkaWF0ZUxpbWl0ID0gMSA8PCBpbW1lZGlhdGVCaXRzOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2VuZGlmIC8vIFdB
U01Db25zdGFudHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCmluZGV4
IGFiYTlmOThhMGU2Njk2ZGJjY2NlMTkyMjg5MjBjMzM4ZjMyNzcxZWUuLjA3N2JmM2EyOThkMGMx
Y2E3Njg2ZjMxNzUxOGMxYTliM2Y5NjNjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNRm9ybWF0LmgKQEAgLTY1LDEyICs2NSw2IEBAIGVudW0gY2xhc3MgV0FTTUV4cHJlc3Npb25U
eXBlIDogdWludDhfdCB7CiAgICAgTnVtYmVyT2ZFeHByZXNzaW9uVHlwZXMKIH07CiAKLWVudW0g
Y2xhc3MgV0FTTUV4cG9ydEZvcm1hdCA6IHVpbnQ4X3QgewotICAgIERlZmF1bHQsCi0gICAgUmVj
b3JkLAotICAgIE51bWJlck9mRXhwb3J0Rm9ybWF0cwotfTsKLQogc3RydWN0IFdBU01TaWduYXR1
cmUgewogICAgIFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlOwogICAgIFZlY3RvcjxXQVNN
VHlwZT4gYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01G
dW5jdGlvblBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNjMDlmMjdiY2YzOWRmYTUxYjRhMjE2ZDRi
ZmQ1NzdmZGQxYzVmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CisKKyNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKKyNpbmNsdWRlICJXQVNNRnVuY3Rpb25TeW50
YXhDaGVja2VyLmgiCisKKyNkZWZpbmUgUFJPUEFHQVRFX0VSUk9SKCkgZG8geyBpZiAoIW1fZXJy
b3JNZXNzYWdlLmlzTnVsbCgpKSByZXR1cm4gMDsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgRkFJTF9X
SVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKSBkbyB7ICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVz
c2FnZTsgcmV0dXJuIDA7IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFQURfQ09NUEFDVF9VSU5UMzJf
T1JfRkFJTChyZXN1bHQsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRDb21w
YWN0VUludDMyKHJlc3VsdCkpIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVzc2FnZSk7IH0gd2hp
bGUgKDApCisjZGVmaW5lIFJFQURfT1BfU1RBVEVNRU5UX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCBv
cCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUsIGVycm9yTWVzc2FnZSkgZG8geyBpZiAoIW1f
cmVhZGVyLnJlYWRPcFN0YXRlbWVudChoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUs
IGltbWVkaWF0ZSkpIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVzc2FnZSk7IH0gd2hpbGUgKDAp
CisjZGVmaW5lIFJFQURfT1BfRVhQUkVTU0lPTl9JMzJfT1JfRkFJTChoYXNJbW1lZGlhdGUsIG9w
LCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwgZXJyb3JNZXNzYWdlKSBkbyB7IGlmICghbV9y
ZWFkZXIucmVhZE9wRXhwcmVzc2lvbkkzMihoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlh
dGUsIGltbWVkaWF0ZSkpIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVzc2FnZSk7IH0gd2hpbGUg
KDApCisjZGVmaW5lIFJFQURfVkFSSUFCTEVfVFlQRVNfT1JfRkFJTChoYXNJbW1lZGlhdGUsIHZh
cmlhYmxlVHlwZXMsIHZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUsIGVycm9y
TWVzc2FnZSkgZG8geyBpZiAoIW1fcmVhZGVyLnJlYWRWYXJpYWJsZVR5cGVzKGhhc0ltbWVkaWF0
ZSwgdmFyaWFibGVUeXBlcywgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSkp
IEZBSUxfV0lUSF9NRVNTQUdFKGVycm9yTWVzc2FnZSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIEZB
SUxfSUZfRkFMU0UoY29uZGl0aW9uLCBlcnJvck1lc3NhZ2UpIGRvIHsgaWYgKCEoY29uZGl0aW9u
KSkgRkFJTF9XSVRIX01FU1NBR0UoZXJyb3JNZXNzYWdlKTsgfSB3aGlsZSAoMCkKKworI2RlZmlu
ZSBVTlVTRUQgMAorCituYW1lc3BhY2UgSlNDIHsKKworYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI6
OmNoZWNrU3ludGF4KEpTV0FTTU1vZHVsZSogbW9kdWxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIHNpemVfdCBmdW5jdGlvbkluZGV4LCB1bnNpZ25lZCBzdGFydE9mZnNldEluU291cmNlLCB1
bnNpZ25lZCYgZW5kT2Zmc2V0SW5Tb3VyY2UsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAg
IFdBU01GdW5jdGlvblBhcnNlciBwYXJzZXIobW9kdWxlLCBzb3VyY2UsIGZ1bmN0aW9uSW5kZXgp
OworICAgIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcjsKKyAgICBwYXJz
ZXIubV9yZWFkZXIuc2V0T2Zmc2V0KHN0YXJ0T2Zmc2V0SW5Tb3VyY2UpOworICAgIHBhcnNlci5w
YXJzZUZ1bmN0aW9uKHN5bnRheENoZWNrZXIpOworICAgIGlmICghcGFyc2VyLm1fZXJyb3JNZXNz
YWdlLmlzTnVsbCgpKSB7CisgICAgICAgIGVycm9yTWVzc2FnZSA9IHBhcnNlci5tX2Vycm9yTWVz
c2FnZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBlbmRPZmZzZXRJblNvdXJj
ZSA9IHBhcnNlci5tX3JlYWRlci5vZmZzZXQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+Citib29sIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VGdW5j
dGlvbihDb250ZXh0JiBjb250ZXh0KQoreworICAgIGNvbnN0IFdBU01TaWduYXR1cmUmIHNpZ25h
dHVyZSA9IG1fbW9kdWxlLT5zaWduYXR1cmVzKClbbV9tb2R1bGUtPmZ1bmN0aW9uRGVjbGFyYXRp
b25zKClbbV9mdW5jdGlvbkluZGV4XS5zaWduYXR1cmVJbmRleF07CisKKyAgICBtX3JldHVyblR5
cGUgPSBzaWduYXR1cmUucmV0dXJuVHlwZTsKKworICAgIHBhcnNlTG9jYWxWYXJpYWJsZXMoKTsK
KyAgICBQUk9QQUdBVEVfRVJST1IoKTsKKworICAgIGNvbnN0IFZlY3RvcjxXQVNNVHlwZT4mIGFy
Z3VtZW50cyA9IHNpZ25hdHVyZS5hcmd1bWVudHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fbG9jYWxUeXBlcy5hcHBlbmQoYXJn
dW1lbnRzW2ldKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkkzMkxv
Y2FsVmFyaWFibGVzOyArK2kpCisgICAgICAgIG1fbG9jYWxUeXBlcy5hcHBlbmQoV0FTTVR5cGU6
OkkzMik7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZGMzJMb2NhbFZh
cmlhYmxlczsgKytpKQorICAgICAgICBtX2xvY2FsVHlwZXMuYXBwZW5kKFdBU01UeXBlOjpGMzIp
OworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX251bWJlck9mRjY0TG9jYWxWYXJpYWJs
ZXM7ICsraSkKKyAgICAgICAgbV9sb2NhbFR5cGVzLmFwcGVuZChXQVNNVHlwZTo6RjY0KTsKKwor
ICAgIHBhcnNlQmxvY2tTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUxvY2FsVmFyaWFibGVzKCkKK3sKKyAgICBt
X251bWJlck9mSTMyTG9jYWxWYXJpYWJsZXMgPSAwOworICAgIG1fbnVtYmVyT2ZGMzJMb2NhbFZh
cmlhYmxlcyA9IDA7CisgICAgbV9udW1iZXJPZkY2NExvY2FsVmFyaWFibGVzID0gMDsKKworICAg
IGJvb2wgaGFzSW1tZWRpYXRlOworICAgIFdBU01WYXJpYWJsZVR5cGVzIHZhcmlhYmxlVHlwZXM7
CisgICAgV0FTTVZhcmlhYmxlVHlwZXNXaXRoSW1tZWRpYXRlIHZhcmlhYmxlVHlwZXNXaXRoSW1t
ZWRpYXRlOworICAgIHVpbnQ4X3QgaW1tZWRpYXRlOworICAgIFJFQURfVkFSSUFCTEVfVFlQRVNf
T1JfRkFJTChoYXNJbW1lZGlhdGUsIHZhcmlhYmxlVHlwZXMsIHZhcmlhYmxlVHlwZXNXaXRoSW1t
ZWRpYXRlLCBpbW1lZGlhdGUsICJDYW5ub3QgcmVhZCB0aGUgdHlwZXMgb2YgbG9jYWwgdmFyaWFi
bGVzLiIpOworICAgIGlmICghaGFzSW1tZWRpYXRlKSB7CisgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDx1aW50OF90Pih2YXJpYWJsZVR5cGVzKSAmIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYXJp
YWJsZVR5cGVzOjpJMzIpKQorICAgICAgICAgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlM
KG1fbnVtYmVyT2ZJMzJMb2NhbFZhcmlhYmxlcywgIkNhbm5vdCByZWFkIHRoZSBudW1iZXIgb2Yg
aW50MzIgbG9jYWwgdmFyaWFibGVzLiIpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDhf
dD4odmFyaWFibGVUeXBlcykgJiBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNVmFyaWFibGVUeXBl
czo6RjMyKSkKKyAgICAgICAgICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChtX251bWJl
ck9mRjMyTG9jYWxWYXJpYWJsZXMsICJDYW5ub3QgcmVhZCB0aGUgbnVtYmVyIG9mIGZsb2F0MzIg
bG9jYWwgdmFyaWFibGVzLiIpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDhfdD4odmFy
aWFibGVUeXBlcykgJiBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNVmFyaWFibGVUeXBlczo6RjY0
KSkKKyAgICAgICAgICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChtX251bWJlck9mRjY0
TG9jYWxWYXJpYWJsZXMsICJDYW5ub3QgcmVhZCB0aGUgbnVtYmVyIG9mIGZsb2F0NjQgbG9jYWwg
dmFyaWFibGVzLiIpOworICAgIH0gZWxzZQorICAgICAgICBtX251bWJlck9mSTMyTG9jYWxWYXJp
YWJsZXMgPSBpbW1lZGlhdGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlU3Rh
dGVtZW50KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgYm9vbCBoYXNJbW1lZGlhdGU7CisgICAg
V0FTTU9wU3RhdGVtZW50IG9wOworICAgIFdBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGUgb3BX
aXRoSW1tZWRpYXRlOworICAgIHVpbnQ4X3QgaW1tZWRpYXRlOworICAgIFJFQURfT1BfU1RBVEVN
RU5UX09SX0ZBSUwoaGFzSW1tZWRpYXRlLCBvcCwgb3BXaXRoSW1tZWRpYXRlLCBpbW1lZGlhdGUs
ICJDYW5ub3QgcmVhZCB0aGUgc3RhdGVtZW50IG9wY29kZS4iKTsKKyAgICBpZiAoIWhhc0ltbWVk
aWF0ZSkgeworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVt
ZW50OjpTZXRMb2NhbDoKKyAgICAgICAgICAgIHBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoY29udGV4
dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OlJl
dHVybjoKKyAgICAgICAgICAgIHBhcnNlUmV0dXJuU3RhdGVtZW50KGNvbnRleHQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpCbG9jazoKKyAgICAg
ICAgICAgIHBhcnNlQmxvY2tTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OlNldEdsb2JhbDoKKyAgICAgICAgY2FzZSBX
QVNNT3BTdGF0ZW1lbnQ6OklmOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6SWZFbHNl
OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6V2hpbGU6CisgICAgICAgIGNhc2UgV0FT
TU9wU3RhdGVtZW50OjpEbzoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkxhYmVsOgor
ICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6QnJlYWs6CisgICAgICAgIGNhc2UgV0FTTU9w
U3RhdGVtZW50OjpCcmVha0xhYmVsOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6Q29u
dGludWU6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpDb250aW51ZUxhYmVsOgorICAg
ICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6U3dpdGNoOgorICAgICAgICBjYXNlIFdBU01PcFN0
YXRlbWVudDo6STMyU3RvcmU4OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3Rv
cmVXaXRoT2Zmc2V0ODoKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMTY6
CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQxNjoKKyAg
ICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMzI6CisgICAgICAgIGNhc2UgV0FT
TU9wU3RhdGVtZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BT
dGF0ZW1lbnQ6OkYzMlN0b3JlOgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjMyU3Rv
cmVXaXRoT2Zmc2V0OgorICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjY0U3RvcmU6Cisg
ICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGNjRTdG9yZVdpdGhPZmZzZXQ6CisgICAgICAg
IGNhc2UgV0FTTU9wU3RhdGVtZW50OjpDYWxsSW50ZXJuYWw6CisgICAgICAgIGNhc2UgV0FTTU9w
U3RhdGVtZW50OjpDYWxsSW5kaXJlY3Q6CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpD
YWxsSW1wb3J0OgorICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGVzZSBpbnN0cnVj
dGlvbnMuCisgICAgICAgICAgICBGQUlMX1dJVEhfTUVTU0FHRSgiVW5zdXBwb3J0ZWQgaW5zdHJ1
Y3Rpb24uIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAob3BXaXRoSW1t
ZWRpYXRlKSB7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVkaWF0ZTo6U2V0
TG9jYWw6CisgICAgICAgICAgICBwYXJzZVNldExvY2FsU3RhdGVtZW50KGNvbnRleHQsIGltbWVk
aWF0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnRX
aXRoSW1tZWRpYXRlOjpTZXRHbG9iYWw6CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICBGQUlMX1dJVEhfTUVTU0FHRSgiVW5zdXBw
b3J0ZWQgaW5zdHJ1Y3Rpb24uIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gVU5VU0VEOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQsIHVpbnQz
Ml90IGxvY2FsSW5kZXgpCit7CisgICAgRkFJTF9JRl9GQUxTRShsb2NhbEluZGV4IDwgbV9sb2Nh
bFR5cGVzLnNpemUoKSwgIlRoZSBsb2NhbCB2YXJpYWJsZSBpbmRleCBpcyBpbmNvcnJlY3QuIik7
CisgICAgV0FTTVR5cGUgdHlwZSA9IG1fbG9jYWxUeXBlc1tsb2NhbEluZGV4XTsKKyAgICBwYXJz
ZUV4cHJlc3Npb24oY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlKHR5cGUpKTsKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgcmV0dXJuIFVOVVNFRDsKK30K
KwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQoreworICAg
IHVpbnQzMl90IGxvY2FsSW5kZXg7CisgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGxv
Y2FsSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgbG9jYWwgaW5kZXguIik7CisgICAgcmV0dXJuIHBh
cnNlU2V0TG9jYWxTdGF0ZW1lbnQoY29udGV4dCwgbG9jYWxJbmRleCk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBDb250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlUmV0dXJuU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKG1fcmV0dXJu
VHlwZSAhPSBXQVNNRXhwcmVzc2lvblR5cGU6OlZvaWQpCisgICAgICAgIHBhcnNlRXhwcmVzc2lv
bihjb250ZXh0LCBtX3JldHVyblR5cGUpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBp
bnN0cnVjdGlvbi4KKyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29u
dGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJsb2NrU3Rh
dGVtZW50KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgdWludDMyX3QgbnVtYmVyT2ZTdGF0ZW1l
bnRzOworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChudW1iZXJPZlN0YXRlbWVudHMs
ICJDYW5ub3QgcmVhZCB0aGUgbnVtYmVyIG9mIHN0YXRlbWVudHMuIik7CisgICAgZm9yICh1aW50
MzJfdCBpID0gMDsgaSA8IG51bWJlck9mU3RhdGVtZW50czsgKytpKSB7CisgICAgICAgIHBhcnNl
U3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICBQUk9QQUdBVEVfRVJST1IoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIFVOVVNFRDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0
RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbihDb250ZXh0JiBj
b250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGUgZXhwcmVzc2lvblR5cGUpCit7CisgICAgc3dpdGNo
IChleHByZXNzaW9uVHlwZSkgeworICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBlOjpJMzI6Cisg
ICAgICAgIHJldHVybiBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgY2FzZSBXQVNN
RXhwcmVzc2lvblR5cGU6OkYzMjoKKyAgICBjYXNlIFdBU01FeHByZXNzaW9uVHlwZTo6RjY0Ogor
ICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBlOjpWb2lkOgorICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoZXNlIGluc3RydWN0aW9ucy4KKyAgICAgICAgRkFJTF9XSVRIX01FU1NBR0UoIlVu
c3VwcG9ydGVkIGluc3RydWN0aW9uLiIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordGVtcGxhdGUgPGNsYXNz
IENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhw
cmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQoreworICAgIGJvb2wgaGFzSW1tZWRpYXRlOwor
ICAgIFdBU01PcEV4cHJlc3Npb25JMzIgb3A7CisgICAgV0FTTU9wRXhwcmVzc2lvbkkzMldpdGhJ
bW1lZGlhdGUgb3BXaXRoSW1tZWRpYXRlOworICAgIHVpbnQ4X3QgaW1tZWRpYXRlOworICAgIFJF
QURfT1BfRVhQUkVTU0lPTl9JMzJfT1JfRkFJTChoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1l
ZGlhdGUsIGltbWVkaWF0ZSwgIkNhbm5vdCByZWFkIHRoZSBpbnQzMiBleHByZXNzaW9uIG9wY29k
ZS4iKTsKKyAgICBpZiAoIWhhc0ltbWVkaWF0ZSkgeworICAgICAgICBzd2l0Y2ggKG9wKSB7Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6SW1tZWRpYXRlOgorICAgICAgICAgICAg
cmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDb25zdGFudFBvb2xJbmRleDoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpHZXRMb2NhbDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpHZXRHbG9iYWw6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U2V0
TG9jYWw6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U2V0R2xvYmFsOgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2FkODoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpTTG9hZFdpdGhPZmZzZXQ4OgorICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6OlVMb2FkODoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpV
TG9hZFdpdGhPZmZzZXQ4OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2Fk
MTY6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0xvYWRXaXRoT2Zmc2V0MTY6
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWQxNjoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTG9hZFdpdGhPZmZzZXQxNjoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpMb2FkMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6TG9hZFdpdGhPZmZzZXQzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpTdG9yZTg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmVXaXRoT2Zm
c2V0ODoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTE2OgorICAgICAg
ICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3JlV2l0aE9mZnNldDE2OgorICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3JlMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6U3RvcmVXaXRoT2Zmc2V0MzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6Q2FsbEludGVybmFsOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkNhbGxJbmRpcmVjdDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDYWxsSW1w
b3J0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNvbmRpdGlvbmFsOgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNvbW1hOgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OkZyb21GMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6RnJvbUY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOZWdhdGU6Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6QWRkOgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OlN1YjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpN
dWw6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0RpdjoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVRGl2OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Np
b25JMzI6OlNNb2Q6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VU1vZDoKKyAg
ICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXROb3Q6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6Qml0T3I6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6Qml0QW5kOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdFhvcjoKKyAg
ICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMZWZ0U2hpZnQ6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6QXJpdGhtZXRpY1JpZ2h0U2hpZnQ6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9naWNhbFJpZ2h0U2hpZnQ6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6Q291bnRMZWFkaW5nWmVyb3M6CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6TG9naWNhbE5vdDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9u
STMyOjpFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpFcXVhbEYz
MjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpFcXVhbEY2NDoKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOb3RFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpOb3RFcXVhbEYzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpOb3RFcXVhbEY2NDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpT
TGVzc1RoYW5JMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxlc3NUaGFu
STMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Okxlc3NUaGFuRjMyOgorICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Okxlc3NUaGFuRjY0OgorICAgICAgICBjYXNl
IFdBU01PcEV4cHJlc3Npb25JMzI6OlNMZXNzVGhhbk9yRXF1YWxJMzI6CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxlc3NUaGFuT3JFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpMZXNzVGhhbk9yRXF1YWxGMzI6CisgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6TGVzc1RoYW5PckVxdWFsRjY0OgorICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OlNHcmVhdGVyVGhhbkkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpVR3JlYXRlclRoYW5JMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6R3JlYXRlclRoYW5GMzI6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
R3JlYXRlclRoYW5GNjQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0dyZWF0
ZXJUaGFuT3JFcXVhbEkzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVR3Jl
YXRlclRoYW5PckVxdWFsSTMyOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Okdy
ZWF0ZXJUaGFuT3JFcXVhbEYzMjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpH
cmVhdGVyVGhhbk9yRXF1YWxGNjQ6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
U01pbjoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTWluOgorICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNNYXg6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6VU1heDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpBYnM6Cisg
ICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZXNlIGluc3RydWN0aW9ucy4KKyAgICAg
ICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBpbnN0cnVjdGlvbi4iKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChvcFdpdGhJbW1lZGlhdGUpIHsKKyAg
ICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aEltbWVkaWF0ZTo6SW1tZWRpYXRlOgor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0LCBp
bW1lZGlhdGUpOworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRl
OjpDb25zdGFudFBvb2xJbmRleDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyV2l0
aEltbWVkaWF0ZTo6R2V0TG9jYWw6CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
ZXNlIGluc3RydWN0aW9ucy4KKyAgICAgICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBv
cnRlZCBpbnN0cnVjdGlvbi4iKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBh
cnNlcjo6cGFyc2VJbW1lZGlhdGVFeHByZXNzaW9uSTMyKENvbnRleHQmLCB1aW50MzJfdCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgcmV0dXJuIFVO
VVNFRDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBX
QVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBj
b250ZXh0KQoreworICAgIHVpbnQzMl90IGltbWVkaWF0ZTsKKyAgICBSRUFEX0NPTVBBQ1RfVUlO
VDMyX09SX0ZBSUwoaW1tZWRpYXRlLCAiQ2Fubm90IHJlYWQgdGhlIGltbWVkaWF0ZS4iKTsKKyAg
ICByZXR1cm4gcGFyc2VJbW1lZGlhdGVFeHByZXNzaW9uSTMyKGNvbnRleHQsIGltbWVkaWF0ZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNjQ5NTIwMGJlMjQwOTBjOTg5OTIyMTg4ZTRiOGViODU3ZjFhZDllCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFy
c2VyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV0FTTUZ1bmN0aW9uUGFyc2VyX2gKKyNkZWZpbmUgV0FTTUZ1
bmN0aW9uUGFyc2VyX2gKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIlNv
dXJjZUNvZGUuaCIKKyNpbmNsdWRlICJXQVNNUmVhZGVyLmgiCisKKyNkZWZpbmUgQ29udGV4dEV4
cHJlc3Npb24gdHlwZW5hbWUgQ29udGV4dDo6RXhwcmVzc2lvbgorI2RlZmluZSBDb250ZXh0U3Rh
dGVtZW50IHR5cGVuYW1lIENvbnRleHQ6OlN0YXRlbWVudAorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSlNXQVNNTW9kdWxlOworCitjbGFzcyBXQVNNRnVuY3Rpb25QYXJzZXIgeworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIGNoZWNrU3ludGF4KEpTV0FTTU1vZHVsZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBzaXplX3QgZnVuY3Rpb25JbmRleCwgdW5zaWduZWQgc3RhcnRPZmZzZXRJblNvdXJj
ZSwgdW5zaWduZWQmIGVuZE9mZnNldEluU291cmNlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisK
K3ByaXZhdGU6CisgICAgV0FTTUZ1bmN0aW9uUGFyc2VyKEpTV0FTTU1vZHVsZSogbW9kdWxlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIHNpemVfdCBmdW5jdGlvbkluZGV4KQorICAgICAgICA6
IG1fbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgLCBtX3JlYWRlcihzdGF0aWNfY2FzdDxXZWJBc3Nl
bWJseVNvdXJjZVByb3ZpZGVyKj4oc291cmNlLnByb3ZpZGVyKCkpLT5kYXRhKCkpCisgICAgICAg
ICwgbV9mdW5jdGlvbkluZGV4KGZ1bmN0aW9uSW5kZXgpCisgICAgeworICAgIH0KKworICAgIHRl
bXBsYXRlIDxjbGFzcyBDb250ZXh0PiBib29sIHBhcnNlRnVuY3Rpb24oQ29udGV4dCYpOworICAg
IGJvb2wgcGFyc2VMb2NhbFZhcmlhYmxlcygpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRl
eHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoQ29udGV4dCYpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlU2V0TG9jYWxTdGF0ZW1l
bnQoQ29udGV4dCYsIHVpbnQzMl90IGxvY2FsSW5kZXgpOworICAgIHRlbXBsYXRlIDxjbGFzcyBD
b250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoQ29udGV4dCYp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlUmV0
dXJuU3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29u
dGV4dFN0YXRlbWVudCBwYXJzZUJsb2NrU3RhdGVtZW50KENvbnRleHQmKTsKKworICAgIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUV4cHJlc3Npb24oQ29u
dGV4dCYsIFdBU01FeHByZXNzaW9uVHlwZSk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VJbW1lZGlhdGVF
eHByZXNzaW9uSTMyKENvbnRleHQmLCB1aW50MzJfdCBpbW1lZGlhdGUpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUltbWVkaWF0ZUV4cHJlc3Np
b25JMzIoQ29udGV4dCYpOworCisgICAgSlNXQVNNTW9kdWxlKiBtX21vZHVsZTsKKyAgICBXQVNN
UmVhZGVyIG1fcmVhZGVyOworICAgIHNpemVfdCBtX2Z1bmN0aW9uSW5kZXg7CisgICAgU3RyaW5n
IG1fZXJyb3JNZXNzYWdlOworCisgICAgV0FTTUV4cHJlc3Npb25UeXBlIG1fcmV0dXJuVHlwZTsK
KyAgICBWZWN0b3I8V0FTTVR5cGU+IG1fbG9jYWxUeXBlczsKKyAgICB1aW50MzJfdCBtX251bWJl
ck9mSTMyTG9jYWxWYXJpYWJsZXM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkYzMkxvY2FsVmFy
aWFibGVzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZGNjRMb2NhbFZhcmlhYmxlczsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQorCisj
ZW5kaWYgLy8gV0FTTUZ1bmN0aW9uUGFyc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGFh
NGRlN2RhM2ViODcyMjdiNjY0YTMyZWNhMTI0NjNiMGFhNDJlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXJfaAorI2RlZmluZSBXQVNNRnVu
Y3Rpb25TeW50YXhDaGVja2VyX2gKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIgeworcHVibGljOgor
ICAgIHR5cGVkZWYgaW50IEV4cHJlc3Npb247CisgICAgdHlwZWRlZiBpbnQgU3RhdGVtZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkp
CisKKyNlbmRpZiAvLyBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01NYWdpY051bWJlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTU1hZ2ljTnVtYmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRhZGQyZmEyN2YyOGIzZmEwYjNiY2I5Mjc2ZGQ5NzUwOWM2YTA2NDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTU1hZ2ljTnVtYmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
QVNNTWFnaWNOdW1iZXJfaAotI2RlZmluZSBXQVNNTWFnaWNOdW1iZXJfaAotCi0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3RhdGljIGNvbnN0IHVpbnQzMl90
IHdhc21NYWdpY051bWJlciA9IDB4NmQ3MzYxNzc7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQotCi0jZW5kaWYgLy8gV0FTTU1hZ2ljTnVtYmVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAK
aW5kZXggMjMxNDhlMjY0MTI1NDUxOWZiZmMxNzc4N2FlYzEyNWZmMzgwMjhlMi4uNTBkYmI4ZTUw
OWI2YzdmNDU3ZDFkNzZkNjE2Y2E4MDQ1NzVjYThhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTMxLDcgKzMxLDggQEAKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIldBU01NYWdpY051bWJlci5oIgorI2luY2x1ZGUg
IldBU01Db25zdGFudHMuaCIKKyNpbmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjZGVmaW5lIEZBSUxfV0lUSF9NRVNTQUdFKGVycm9y
TWVzc2FnZSkgZG8geyBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsgcmV0dXJuOyB9IHdo
aWxlICgwKQpAQCAtNDksNyArNTAsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdBU01Nb2R1bGVQ
YXJzZXI6OldBU01Nb2R1bGVQYXJzZXIoY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDog
bV9yZWFkZXIoc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcio+KHNvdXJjZS5w
cm92aWRlcigpKS0+ZGF0YSgpKQorICAgIDogbV9zb3VyY2Uoc291cmNlKQorICAgICwgbV9yZWFk
ZXIoc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcio+KHNvdXJjZS5wcm92aWRl
cigpKS0+ZGF0YSgpKQogewogfQogCkBAIC0yNDcsMjUgKzI0OSwyMiBAQCB2b2lkIFdBU01Nb2R1
bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25Qb2ludGVyVGFibGVTZWN0aW9uKCkKIAogdm9pZCBXQVNN
TW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvblNlY3Rpb24oKQogewotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9tb2R1bGUtPmZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKTsKKyAgICBmb3Ig
KHNpemVfdCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlLT5mdW5j
dGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytmdW5jdGlvbkluZGV4KSB7CisgICAgICAgIHBh
cnNlRnVuY3Rpb25EZWZpbml0aW9uKGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBQUk9QQUdBVEVf
RVJST1IoKTsKICAgICB9CiB9CiAKLXZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlv
bkRlZmluaXRpb24oKQordm9pZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5p
dGlvbihzaXplX3QgZnVuY3Rpb25JbmRleCkKIHsKLSAgICAvLyBGSVhNRTogU3VwcG9ydCBhbnkg
ZnVuY3Rpb25zLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzM4
Ci0gICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rpb25zIHRoYXQgaGF2ZSAi
cmV0dXJuIDA7IiBhcyB0aGVpciBvbmx5IHN0YXRlbWVudC4KLSAgICAvLyBUaGVzZSBmdW5jdGlv
bnMgY29uc2lzdCBvZiBleGFjdGx5IDQgYnl0ZXMsIGkuZS4KLSAgICAvLyAxLiBUaGUgbnVtYmVy
IG9mIGxvY2FsIHZhcmlhYmxlcyAoMCkgWzB4ODBdCi0gICAgLy8gMi4gVGhlIG51bWJlciBvZiBz
dGF0ZW1lbnRzICgxKSBbMHgwMV0KLSAgICAvLyAzLiBUaGUgcmV0dXJuIHN0YXRlbWVudCBbMHgw
Zl0KLSAgICAvLyA0LiBUaGUgaW1tZWRpYXRlIGV4cHJlc3Npb24gKDApIFsweGEwXQotICAgIHVp
bnQzMl90IGZ1bmN0aW9uRGVmaW5pdGlvbkJ5dGVzOwotICAgIFJFQURfVUlOVDMyX09SX0ZBSUwo
ZnVuY3Rpb25EZWZpbml0aW9uQnl0ZXMsICJDYW5ub3QgcmVhZCB0aGUgZnVuY3Rpb24gZGVmaW5p
dGlvbi4iKTsKLSAgICBGQUlMX0lGX0ZBTFNFKGZ1bmN0aW9uRGVmaW5pdGlvbkJ5dGVzID09IDB4
YTAwZjAxODAsICJPbmx5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgXCJyZXR1cm4gMDtcIiAiCi0gICAg
ICAgICJhcyB0aGVpciBvbmx5IHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQu
Iik7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRJblNvdXJjZSA9IG1fcmVhZGVyLm9mZnNldCgp
OworICAgIHVuc2lnbmVkIGVuZE9mZnNldEluU291cmNlOworICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2U7CisgICAgaWYgKCFXQVNNRnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KG1fbW9kdWxlLmdl
dCgpLCBtX3NvdXJjZSwgZnVuY3Rpb25JbmRleCwgc3RhcnRPZmZzZXRJblNvdXJjZSwgZW5kT2Zm
c2V0SW5Tb3VyY2UsIGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBl
cnJvck1lc3NhZ2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9yZWFkZXIuc2V0T2Zm
c2V0KGVuZE9mZnNldEluU291cmNlKTsKIH0KIAogdm9pZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJz
ZUV4cG9ydFNlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1vZHVsZVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVs
ZVBhcnNlci5oCmluZGV4IDVlYzVmZDM4ODVkMmUwMjBjYjlmNWJkNGRmYTJiNjU2ZDM3OTA5ZDcu
LjMwZjFhNTY1OTg4YzYwMTRiNTQ1ZmMxYzZjMjZjMDkzZDhmYjU0MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKQEAgLTU0LDkgKzU0LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb25TZWN0aW9uKCk7CiAg
ICAgdm9pZCBwYXJzZUZ1bmN0aW9uUG9pbnRlclRhYmxlU2VjdGlvbigpOwogICAgIHZvaWQgcGFy
c2VGdW5jdGlvbkRlZmluaXRpb25TZWN0aW9uKCk7Ci0gICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVm
aW5pdGlvbigpOworICAgIHZvaWQgcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oc2l6ZV90IGZ1bmN0
aW9uSW5kZXgpOwogICAgIHZvaWQgcGFyc2VFeHBvcnRTZWN0aW9uKCk7CiAKKyAgICBjb25zdCBT
b3VyY2VDb2RlJiBtX3NvdXJjZTsKICAgICBXQVNNUmVhZGVyIG1fcmVhZGVyOwogICAgIFN0cm9u
ZzxKU1dBU01Nb2R1bGU+IG1fbW9kdWxlOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5jcHAKaW5kZXggMjhlMTM1N2ExMzVm
NDI3MjUzZDQzYjk1OTNmNDIyODdkY2RlMWI5Ni4uZjQ0NzIxMTM3OTA5YjkzNTAyZjZiZWZiYjFi
ZjA4NzQ4ODg3NWMzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TVJlYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRlci5j
cHAKQEAgLTIxLDYgKzIxLDIzIEBACiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1
IGJ5IHRoZSByZXBvc2l0b3J5IGF1dGhvcnMgb2YKKyAqIFdlYkFzc2VtYmx5L3BvbHlmaWxsLXBy
b3RvdHlwZS0xLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisg
KiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTExMywxNyArMTMwLDE3
IEBAIGJvb2wgV0FTTVJlYWRlcjo6cmVhZFN0cmluZyhTdHJpbmcmIHJlc3VsdCkKIAogYm9vbCBX
QVNNUmVhZGVyOjpyZWFkVHlwZShXQVNNVHlwZSYgcmVzdWx0KQogewotICAgIHJldHVybiByZWFk
Qnl0ZTxXQVNNVHlwZT4ocmVzdWx0LCAodWludDhfdClXQVNNVHlwZTo6TnVtYmVyT2ZUeXBlcyk7
CisgICAgcmV0dXJuIHJlYWRCeXRlPFdBU01UeXBlPihyZXN1bHQsIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KFdBU01UeXBlOjpOdW1iZXJPZlR5cGVzKSk7CiB9CiAKIGJvb2wgV0FTTVJlYWRlcjo6cmVh
ZEV4cHJlc3Npb25UeXBlKFdBU01FeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewotICAgIHJldHVy
biByZWFkQnl0ZTxXQVNNRXhwcmVzc2lvblR5cGU+KHJlc3VsdCwgKHVpbnQ4X3QpV0FTTUV4cHJl
c3Npb25UeXBlOjpOdW1iZXJPZkV4cHJlc3Npb25UeXBlcyk7CisgICAgcmV0dXJuIHJlYWRCeXRl
PFdBU01FeHByZXNzaW9uVHlwZT4ocmVzdWx0LCBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNRXhw
cmVzc2lvblR5cGU6Ok51bWJlck9mRXhwcmVzc2lvblR5cGVzKSk7CiB9CiAKIGJvb2wgV0FTTVJl
YWRlcjo6cmVhZEV4cG9ydEZvcm1hdChXQVNNRXhwb3J0Rm9ybWF0JiByZXN1bHQpCiB7Ci0gICAg
cmV0dXJuIHJlYWRCeXRlPFdBU01FeHBvcnRGb3JtYXQ+KHJlc3VsdCwgKHVpbnQ4X3QpV0FTTUV4
cG9ydEZvcm1hdDo6TnVtYmVyT2ZFeHBvcnRGb3JtYXRzKTsKKyAgICByZXR1cm4gcmVhZEJ5dGU8
V0FTTUV4cG9ydEZvcm1hdD4ocmVzdWx0LCBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNRXhwb3J0
Rm9ybWF0OjpOdW1iZXJPZkV4cG9ydEZvcm1hdHMpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFQ+
IGJvb2wgV0FTTVJlYWRlcjo6cmVhZEJ5dGUoVCYgcmVzdWx0LCB1aW50OF90IG51bWJlck9mVmFs
dWVzKQpAQCAtMTM2LDYgKzE1Myw1MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBXQVNNUmVh
ZGVyOjpyZWFkQnl0ZShUJiByZXN1bHQsIHVpbnQ4X3QgbnVtYmVyT2ZWYWx1ZXMpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2Jvb2wgV0FTTVJlYWRlcjo6cmVhZE9wU3RhdGVtZW50KGJvb2wmIGhh
c0ltbWVkaWF0ZSwgV0FTTU9wU3RhdGVtZW50JiBvcCwgV0FTTU9wU3RhdGVtZW50V2l0aEltbWVk
aWF0ZSYgb3BXaXRoSW1tZWRpYXRlLCB1aW50OF90JiBpbW1lZGlhdGUpCit7CisgICAgcmV0dXJu
IHJlYWRPcChoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTU9wU3RhdGVtZW50OjpOdW1iZXJPZldBU01P
cFN0YXRlbWVudHMpLAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNT3BTdGF0ZW1l
bnRXaXRoSW1tZWRpYXRlOjpOdW1iZXJPZldBU01PcFN0YXRlbWVudFdpdGhJbW1lZGlhdGVzKSk7
Cit9CisKK2Jvb2wgV0FTTVJlYWRlcjo6cmVhZE9wRXhwcmVzc2lvbkkzMihib29sJiBoYXNJbW1l
ZGlhdGUsIFdBU01PcEV4cHJlc3Npb25JMzImIG9wLCBXQVNNT3BFeHByZXNzaW9uSTMyV2l0aElt
bWVkaWF0ZSYgb3BXaXRoSW1tZWRpYXRlLCB1aW50OF90JiBpbW1lZGlhdGUpCit7CisgICAgcmV0
dXJuIHJlYWRPcChoYXNJbW1lZGlhdGUsIG9wLCBvcFdpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTU9wRXhwcmVzc2lvbkkzMjo6TnVtYmVy
T2ZXQVNNT3BFeHByZXNzaW9uSTMycyksCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdB
U01PcEV4cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlOjpOdW1iZXJPZldBU01PcEV4cHJlc3Npb25J
MzJXaXRoSW1tZWRpYXRlcykpOworfQorCitib29sIFdBU01SZWFkZXI6OnJlYWRWYXJpYWJsZVR5
cGVzKGJvb2wmIGhhc0ltbWVkaWF0ZSwgV0FTTVZhcmlhYmxlVHlwZXMmIHZhcmlhYmxlVHlwZXMs
IFdBU01WYXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZSYgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlh
dGUsIHVpbnQ4X3QmIGltbWVkaWF0ZSkKK3sKKyAgICByZXR1cm4gcmVhZE9wKGhhc0ltbWVkaWF0
ZSwgdmFyaWFibGVUeXBlcywgdmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUsIGltbWVkaWF0ZSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTVZhcmlhYmxlVHlwZXM6Ok51bWJlck9m
VmFyaWFibGVUeXBlcyksCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYXJpYWJs
ZVR5cGVzV2l0aEltbWVkaWF0ZTo6TnVtYmVyT2ZWYXJpYWJsZVR5cGVzV2l0aEltbWVkaWF0ZXMp
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFRXaXRoSW1tZWRpYXRlPgorYm9vbCBX
QVNNUmVhZGVyOjpyZWFkT3AoYm9vbCYgaGFzSW1tZWRpYXRlLCBUJiBvcCwgVFdpdGhJbW1lZGlh
dGUmIG9wV2l0aEltbWVkaWF0ZSwgdWludDhfdCYgaW1tZWRpYXRlLCB1aW50OF90IG51bWJlck9m
VmFsdWVzLCB1aW50OF90IG51bWJlck9mVmFsdWVzV2l0aEltbWVkaWF0ZSkKK3sKKyAgICBDSEVD
S19SRUFEKDEpOworICAgIHVpbnQ4X3QgYnl0ZSA9ICptX2N1cnNvcisrOworCisgICAgaWYgKCEo
Ynl0ZSAmIGhhc0ltbWVkaWF0ZUluT3BGbGFnKSkgeworICAgICAgICBpZiAoYnl0ZSA+PSBudW1i
ZXJPZlZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaGFzSW1tZWRp
YXRlID0gZmFsc2U7CisgICAgICAgIG9wID0gVChieXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgdWludDhfdCBieXRlV2l0aG91dEltbWVkaWF0ZSA9IChieXRlID4+IGlt
bWVkaWF0ZUJpdHMpICYgKG9wV2l0aEltbWVkaWF0ZUxpbWl0IC0gMSk7CisgICAgaWYgKGJ5dGVX
aXRob3V0SW1tZWRpYXRlID49IG51bWJlck9mVmFsdWVzV2l0aEltbWVkaWF0ZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGhhc0ltbWVkaWF0ZSA9IHRydWU7CisgICAgb3BXaXRoSW1tZWRp
YXRlID0gVFdpdGhJbW1lZGlhdGUoYnl0ZVdpdGhvdXRJbW1lZGlhdGUpOworICAgIGltbWVkaWF0
ZSA9IGJ5dGUgJiAoaW1tZWRpYXRlTGltaXQgLSAxKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUmVhZGVyLmgKaW5kZXggNzZlYTI2YjZkZjdiZjg1MDg1
YTE2ZWExMzM4ODMwYTkzZjM0MmMyMS4uOTk1YWRjZDQ3ZDJjNzZlNTE4YTNiMjk5MWE4NmUxOTk4
NmRlNjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVJlYWRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01SZWFkZXIuaApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiV0FTTUNv
bnN0YW50cy5oIgogI2luY2x1ZGUgIldBU01Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTQxLDYgKzQyLDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICB1bnNp
Z25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvciAtIG1fYnVmZmVyLmRhdGEoKTsg
fQorICAgIHZvaWQgc2V0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgeyBtX2N1cnNvciA9IG1fYnVm
ZmVyLmRhdGEoKSArIG9mZnNldDsgfQorCiAgICAgYm9vbCByZWFkVUludDMyKHVpbnQzMl90JiBy
ZXN1bHQpOwogICAgIGJvb2wgcmVhZEZsb2F0KGZsb2F0JiByZXN1bHQpOwogICAgIGJvb2wgcmVh
ZERvdWJsZShkb3VibGUmIHJlc3VsdCk7CkBAIC00OSwxMSArNTMsMTUgQEAgcHVibGljOgogICAg
IGJvb2wgcmVhZFR5cGUoV0FTTVR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCByZWFkRXhwcmVzc2lv
blR5cGUoV0FTTUV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIGJvb2wgcmVhZEV4cG9ydEZv
cm1hdChXQVNNRXhwb3J0Rm9ybWF0JiByZXN1bHQpOworICAgIGJvb2wgcmVhZE9wU3RhdGVtZW50
KGJvb2wmIGhhc0ltbWVkaWF0ZSwgV0FTTU9wU3RhdGVtZW50JiwgV0FTTU9wU3RhdGVtZW50V2l0
aEltbWVkaWF0ZSYsIHVpbnQ4X3QmIGltbWVkaWF0ZSk7CisgICAgYm9vbCByZWFkT3BFeHByZXNz
aW9uSTMyKGJvb2wmIGhhc0ltbWVkaWF0ZSwgV0FTTU9wRXhwcmVzc2lvbkkzMiYsIFdBU01PcEV4
cHJlc3Npb25JMzJXaXRoSW1tZWRpYXRlJiwgdWludDhfdCYgaW1tZWRpYXRlKTsKKyAgICBib29s
IHJlYWRWYXJpYWJsZVR5cGVzKGJvb2wmIGhhc0ltbWVkaWF0ZSwgV0FTTVZhcmlhYmxlVHlwZXMm
LCBXQVNNVmFyaWFibGVUeXBlc1dpdGhJbW1lZGlhdGUmLCB1aW50OF90JiBpbW1lZGlhdGUpOwog
CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmaXJzdFNldmVuQml0c01hc2sg
PSAweDdmOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmVhZEJ5dGUoVCYgcmVzdWx0
LCB1aW50OF90IG51bWJlck9mVmFsdWVzKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg
VFdpdGhJbW1lZGlhdGU+IGJvb2wgcmVhZE9wKGJvb2wmIGhhc0ltbWVkaWF0ZSwgVCYsIFRXaXRo
SW1tZWRpYXRlJiwgdWludDhfdCYgaW1tZWRpYXRlLCB1aW50OF90IG51bWJlck9mVmFsdWVzLCB1
aW50OF90IG51bWJlck9mVmFsdWVzV2l0aEltbWVkaWF0ZSk7CiAKICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIG1fYnVmZmVyOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fY3Vyc29yOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>