<?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>166859</bug_id>
          
          <creation_ts>2017-01-09 13:07:53 -0800</creation_ts>
          <short_desc>REGRESSION(r210476): &quot;4% JSBench regression&quot; (Requested by keith_mi_ on #webkit).</short_desc>
          <delta_ts>2017-01-09 13:10:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>166707</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1265105</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-09 13:07:53 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/210476 broke the build:
&quot;4% JSBench regression&quot; (Requested by keith_mi_ on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265107</commentid>
    <comment_count>1</comment_count>
      <attachid>298381</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-09 13:08:18 -0800</bug_when>
    <thetext>Created attachment 298381
ROLLOUT of r210476

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265108</commentid>
    <comment_count>2</comment_count>
      <attachid>298381</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-09 13:10:06 -0800</bug_when>
    <thetext>Comment on attachment 298381
ROLLOUT of r210476

Clearing flags on attachment: 298381

Committed r210518: &lt;http://trac.webkit.org/changeset/210518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265109</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-09 13:10:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298381</attachid>
            <date>2017-01-09 13:08:18 -0800</date>
            <delta_ts>2017-01-09 13:10:06 -0800</delta_ts>
            <desc>ROLLOUT of r210476</desc>
            <filename>bug-166859-20170109160643.patch</filename>
            <type>text/plain</type>
            <size>50112</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjExNDUxMzhkYTdlNWE0ZjE4ZjQxZDhmOWY3YmY1OWFjOWVhMzVjLi45ZGQ5NGJhYTdmYWU2NjNj
ZDM2NWE5YmI4ZjVjMjA4Nzk2M2VlYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxMDQ3Ni4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njg1OQorCisgICAg
ICAgICI0JSBKU0JlbmNoIHJlZ3Jlc3Npb24iIChSZXF1ZXN0ZWQgYnkga2VpdGhfbWlfIG9uICN3
ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQWRkIGEg
c2xpY2UgaW50cmluc2ljIHRvIHRoZSBERkcvRlRMIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzA3CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzIxMDQ3NgorCiAyMDE3LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWts
aW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmplY3QgTWFya2VkU3BhY2Ugc2l6ZSBjbGFzc2Vz
IGZvciBhIGZldyBtb3JlIGhpZ2gtdm9sdW1lIG9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggYTkwMjFmNWJhODk3NTBiY2ZjYjZhZWMxMzY4ZDg2MDU2NDY5YjQ2Zi4uMjc5MWFlYTgyNWM5
NjczZTc0MjEyOGNmMjE5MjJmN2NiMWNiNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY1
MCwyNSArMTY1MCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKLQot
ICAgIGNhc2UgQXJyYXlTbGljZToKLSAgICAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZTsK
LSAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKLSAgICAgICAgY2Fz
ZSBBcnJheTo6RG91YmxlOgotICAgICAgICAgICAgaW5kZXhpbmdUeXBlID0gQXJyYXlXaXRoRG91
YmxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgotICAg
ICAgICAgICAgaW5kZXhpbmdUeXBlID0gQXJyYXlXaXRoSW50MzI7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKLSAgICAgICAgICAgIGluZGV4aW5n
VHlwZSA9IEFycmF5V2l0aENvbnRpZ3VvdXM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIGFycmF5
IG1vZGUuIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSk7Ci0g
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNzg5
MzM3YzQwZTI0MTZiMGI0YjRkZDJlMDk5NGM4ODY4YjVlYTkyMi4uZDQ1MmI5MmZkYmE3YjgzZGQy
NjdiZjBkYjYwYjY3OTk3ZmY0YjgzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIyNDYsOTIgKzIyNDYsNiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9w
ZXJhbmQsIEludHJpbgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQotCi0gICAgY2FzZSBBcnJheVNsaWNlSW50cmluc2ljOiB7Ci0jaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICAgICAgaWYgKGlzWDg2KCkpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGFyZW4ndCBl
bm91Z2ggcmVnaXN0ZXJzIGZvciB0aGlzIHRvIGJlIGRvbmUgZWFzaWx5LgotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKQotICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRD
YWNoZSkKLSAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1fY3Vy
cmVudEluc3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfY2FsbCkgLSAyXS51LmFycmF5UHJvZmls
ZSk7Ci0gICAgICAgIGlmICghYXJyYXlNb2RlLmlzSlNBcnJheSgpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChhcnJheU1vZGUuYXJyYXlDbGFzcygpICE9IEFycmF5
OjpPcmlnaW5hbEFycmF5KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHN3
aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewotICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0g
ICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgotICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3Vz
OiB7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY3VycmVudE5vZGVPcmlnaW4oKS5zZW1hbnRpYyk7Ci0KLSAgICAgICAg
ICAgIElubGluZVdhdGNocG9pbnRTZXQmIG9iamVjdFByb3RvdHlwZVRyYW5zaXRpb24gPSBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNo
cG9pbnRTZXQoKTsKLSAgICAgICAgICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5UHJvdG90
eXBlVHJhbnNpdGlvbiA9IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUoKS0+c3RydWN0dXJl
KCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhlIEFycmF5L09iamVjdC5wcm90b3R5cGUgdHJhbnNpdGlv
biBhcyBsb25nIGFzIHdlIE9TUiBleGl0dGVkIGlmIHdlIHNhdyBhIGhvbGUuCi0gICAgICAgICAg
ICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuaXNTdGlsbFZhbGlk
KCkKLSAgICAgICAgICAgICAgICAmJiBnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCgpLT5pc1N0aWxsVmFsaWQoKQotICAgICAgICAgICAgICAgICYmIGFycmF5UHJvdG90eXBl
VHJhbnNpdGlvbi5pc1N0aWxsVmFsaWQoKQotICAgICAgICAgICAgICAgICYmIG9iamVjdFByb3Rv
dHlwZVRyYW5zaXRpb24uaXNTdGlsbFZhbGlkKCkKLSAgICAgICAgICAgICAgICAmJiBnbG9iYWxP
YmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkgewotCi0gICAgICAgICAgICAgICAg
bV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShnbG9iYWxPYmplY3QtPmFycmF5U3BlY2ll
c1dhdGNocG9pbnQoKSk7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFk
ZExhemlseShnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCgpKTsKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KGFycmF5UHJvdG90eXBl
VHJhbnNpdGlvbik7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExh
emlseShvYmplY3RQcm90b3R5cGVUcmFuc2l0aW9uKTsKLQotICAgICAgICAgICAgICAgIGluc2Vy
dENoZWNrcygpOwotCi0gICAgICAgICAgICAgICAgTm9kZSogYXJyYXkgPSBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAv
LyBXZSBkbyBhIGZldyB0aGluZ3MgaGVyZSB0byBwcm92ZSB0aGF0IHdlIGFyZW4ndCBza2lwcGlu
ZyBkb2luZyBzaWRlLWVmZmVjdHMgaW4gYW4gb2JzZXJ2YWJsZSB3YXk6Ci0gICAgICAgICAgICAg
ICAgLy8gMS4gV2UgZW5zdXJlIHRoYXQgdGhlICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgaGFzbid0
IGJlZW4gY2hhbmdlZCAoYmVjYXVzZSB0aGUgb2JzZXJ2YWJsZQotICAgICAgICAgICAgICAgIC8v
IGVmZmVjdHMgb2Ygc2xpY2UgcmVxdWlyZSB0aGF0IHdlIHBlcmZvcm0gYSBHZXQoYXJyYXksICJj
b25zdHJ1Y3RvciIpIGFuZCB3ZSBjYW4gc2tpcAotICAgICAgICAgICAgICAgIC8vIHRoYXQgaWYg
d2UncmUgYW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgIC8vCi0g
ICAgICAgICAgICAgICAgLy8gMi4gV2UgY2hlY2sgdGhhdCB0aGUgYXJyYXkgd2UncmUgY2FsbGlu
ZyBzbGljZSBvbiBoYXMgdGhlIHNhbWUgZ2xvYmFsIG9iamVjdCBhcyB0aGUgbGV4aWNhbAotICAg
ICAgICAgICAgICAgIC8vIGdsb2JhbCBvYmplY3QgdGhhdCB0aGlzIGNvZGUgaXMgcnVubmluZyBp
bi4gVGhpcyByZXF1aXJlbWVudCBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBzZXR1cCB0aGUKLSAg
ICAgICAgICAgICAgICAvLyB3YXRjaHBvaW50cyBhYm92ZSBvbiB0aGUgbGV4aWNhbCBnbG9iYWwg
b2JqZWN0LiBUaGlzIG1lYW5zIHRoYXQgY29kZSB0aGF0IGNhbGxzIHNsaWNlIG9uCi0gICAgICAg
ICAgICAgICAgLy8gYXJyYXlzIHByb2R1Y2VkIGJ5IG90aGVyIGdsb2JhbCBvYmplY3RzIHdvbid0
IGdldCB0aGlzIG9wdGltaXphdGlvbi4gV2UgY291bGQgcmVsYXggdGhpcwotICAgICAgICAgICAg
ICAgIC8vIHJlcXVpcmVtZW50IGluIHRoZSBmdXR1cmUgYnkgY2hlY2tpbmcgdGhhdCB0aGUgd2F0
Y2hwb2ludCBoYXNuJ3QgZmlyZWQgYXQgcnVudGltZSBpbiB0aGUgY29kZQotICAgICAgICAgICAg
ICAgIC8vIHdlIGdlbmVyYXRlIGluc3RlYWQgb2YgcmVnaXN0ZXJpbmcgaXQgYXMgYSB3YXRjaHBv
aW50IHRoYXQgd291bGQgaW52YWxpZGF0ZSB0aGUgY29tcGlsYXRpb24uCi0gICAgICAgICAgICAg
ICAgLy8KLSAgICAgICAgICAgICAgICAvLyAzLiBCeSBwcm92aW5nIHdlJ3JlIGFuIG9yaWdpbmFs
IGFycmF5IHN0cnVjdHVyZSwgd2UgZ3VhcmFudGVlIHRoYXQgdGhlIGluY29taW5nIGFycmF5Ci0g
ICAgICAgICAgICAgICAgLy8gaXNuJ3QgYSBzdWJjbGFzcyBvZiBBcnJheS4KLQotICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXlNb2RlLm9yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmUobV9ncmFwaCwgY3VycmVudE5vZGVPcmlnaW4oKS5zZW1hbnRpYyk7Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0
dXJlKSksIGFycmF5KTsKLQotICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGFycmF5KTsK
LSAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7IC8vIFN0YXJ0IGluZGV4LgotICAgICAgICAgICAg
ICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+PSAzKQotICAgICAgICAgICAgICAg
ICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwgcmVn
aXN0ZXJPZmZzZXQpKSk7IC8vIEVuZCBpbmRleC4KLSAgICAgICAgICAgICAgICBhZGRWYXJBcmdD
aGlsZChhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYXJyYXkpKTsKLQotICAgICAgICAgICAgICAg
IE5vZGUqIGFycmF5U2xpY2UgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgQXJyYXlTbGljZSwg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7Ci0gICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYXJyYXlTbGljZSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBBcnJheVBvcEludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgIT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
aW5kZXggYzA0ZTJlZTBjMjg0ZTY5MjJhOGI4MDE1OWVhMTQxNWE1YmVlN2I2MS4uMGNlZDUyMmUx
OTRhNTFhYzBkMjI2NTc5M2RmNzFlNGExZTQwNmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTUwMywyOSArNTAzLDYgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhlYXBMb2Nh
dGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2Rl
KG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBBcnJheVNsaWNlOgotICAgICAg
ICByZWFkKE1pc2NGaWVsZHMpOwotICAgICAgICByZWFkKEpTQ2VsbF9pbmRleGluZ1R5cGUpOwot
ICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7Ci0gICAgICAgIHJlYWQoSlNPYmplY3Rf
YnV0dGVyZmx5KTsKLSAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKLSAgICAg
ICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBBcnJh
eTo6RG91YmxlOgotICAgICAgICAgICAgcmVhZChJbmRleGVkRG91YmxlUHJvcGVydGllcyk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6Ci0gICAgICAgICAg
ICByZWFkKEluZGV4ZWRJbnQzMlByb3BlcnRpZXMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6Ci0gICAgICAgICAgICByZWFkKEluZGV4ZWRDb250
aWd1b3VzUHJvcGVydGllcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291
bnQpOwotICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlJZDoKICAgICBj
YXNlIEdldEJ5SWRGbHVzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCBjZGMwNDA2OTE3YWM3ZjU5NDExZDEyZTEyM2ViMjZiNzFmOTQ5YTFlLi5lNzFmMmIzZWM4
NTcyMzQwYzFlOGJhOWY0Mzk4YWI4MmYyNDNjNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCkBAIC0zMDksNyArMzA5LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2FzZSBDYWxsRE9N
R2V0dGVyOgogICAgIGNhc2UgQ2FsbERPTToKLSAgICBjYXNlIEFycmF5U2xpY2U6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAxYWQ3YmMxYWUz
ZTEwZmNhNTk2ZGNiODdjYzQzYjYwYWY5MzJiNzJmLi5jYTU2MmI0ZTk2YTE3Y2Q5ZDM1ODBlZWQ3
NjAwMGE1M2RiMWFkNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKQEAgLTkzMSwxNCArOTMxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpeEVk
Z2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotCi0gICAgICAgIGNhc2UgQXJyYXlTbGljZTogewotICAgICAgICAgICAgZml4RWRn
ZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0gICAg
ICAgICAgICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4oKSA9PSA0KQotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFJlZ0V4cEV4
ZWM6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVzdDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCBjNjM2NDM1ODZiNGQ1NzM3MTdjZDdmZjczYjcwNzgyZjc2OGE4NDEzLi5iMjgx
NTdmMjUwMTE1ZTYyODdiMjRlN2YzYTk2YjcxYzJlZmU0OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtMTQ3Miw3ICsxNDcyLDYgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEdldEFyZ3VtZW50OgogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEFycmF5
UHVzaDoKLSAgICAgICAgY2FzZSBBcnJheVNsaWNlOgogICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6
CiAgICAgICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CkBA
IC0xNzk3LDcgKzE3OTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlpZnk6CiAgICAg
ICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBBcnJheVB1c2g6Ci0g
ICAgICAgIGNhc2UgQXJyYXlTbGljZToKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAg
Y2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA2YWY0YjM1MmY5NDQ2ZTA1YTM5
YTRiYWYxOWFlNDNmNTY3NjI1ZjQ1Li5kNDVlNGRmYTAwNjFmYjQ2MmY2ZWVhYTZlMzkwNzExMjQ5
MmY3ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNDgs
NyArMjQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIE9wdGlt
aXphdGlvbnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKICAgICBtYWNybyhBcnJheVB1c2gsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBcnJheVBvcCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKEFycmF5U2xpY2UsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIFwK
ICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcuICov
XAogICAgIG1hY3JvKFJlZ0V4cEV4ZWMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggM2MwY2Q5ZWQ3MDljNDFjMTQ4ZTBhMzEyOGYx
MDhlMzZjNGM2OTMxNi4uMzU2ZWYzZTIzOWJjMGViNDMwMzZlNjBmZTU2MGQ2MzQ5NDZjMzkzOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTY3OCw3ICs2NzgsNiBAQCBwcml2YXRlOgogCiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgotICAgICAgICBj
YXNlIEFycmF5U2xpY2U6CiAgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICAgICAgY2FzZSBS
ZWdFeHBUZXN0OgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDYwMzM4ZmJjNzFjYmEwYTQxNzRk
Mjc4NGNjMTc5YTU3YTM3OWNhMmMuLmYzZjc4OTI5MjhlOTY0ZjY3ZjBjZTM3MGIxMjRmZDQ3NTk2
ZTNjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CkBAIC00MDIsNyArNDAyLDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgY2FzZSBBcnJheVBvcDoKLSAgICBjYXNlIEFy
cmF5U2xpY2U6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29k
ZUF0OgogICAgICAgICByZXR1cm4gbm9kZS0+YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNrZWQoZ3Jh
cGgsIG5vZGUsIHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjY1MzMwZWU2NzI5
MzMwNjNiMWJkOWIyNDYwOTRkNjE2MmEwYmZhNy4uODJiYmUyYjFhM2I5ZGVkZTEzYjhkY2M0YzYw
ODdiY2NiYjI0ZDdlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTcxNzEsMTI3ICs3MTcxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldFJlc3RMZW5ndGgoTm9kZSogbm9kZSkKICAgICBpbnQzMlJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGlj
ZShOb2RlKiBub2RlKQotewotICAgIEFTU0VSVChub2RlLT5vcCgpID09IEFycmF5U2xpY2UpOwot
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0KLSAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKLSAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUtPm51bUNoaWxk
cmVuKCkgPT0gMyA/IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMikgOiBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKLSAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwotICAgIAotICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKLSAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVt
cC5ncHIoKTsKLQotICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU7Ci0gICAgc3dpdGNoIChu
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKLSAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAg
ICAgaW5kZXhpbmdUeXBlID0gQXJyYXlXaXRoSW50MzI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6Ci0gICAgICAgIGluZGV4aW5nVHlwZSA9IEFycmF5V2l0aENv
bnRpZ3VvdXM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAg
ICAgaW5kZXhpbmdUeXBlID0gQXJyYXlXaXRoRG91YmxlOwotICAgICAgICBicmVhazsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQot
ICAgIGF1dG8gcG9wdWxhdGVJbmRleCA9IFsmXSAodW5zaWduZWQgY2hpbGRJbmRleCwgR1BSUmVn
IGxlbmd0aCwgR1BSUmVnIHJlc3VsdCkgewotICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
aW5kZXgodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KSk7
Ci0gICAgICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOwotICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKLSAgICAgICAgYXV0byBpc1Bvc2l0aXZlID0gbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgaW5kZXhHUFIsIFRy
dXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgIG1faml0Lm1vdmUobGVuZ3RoLCByZXN1bHQpOwotICAg
ICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6UG9zaXRp
dmVPclplcm8sIGluZGV4R1BSLCByZXN1bHQpKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tMzIoMCksIHJlc3VsdCk7Ci0gICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0K
LSAgICAgICAgaXNQb3NpdGl2ZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoaW5k
ZXhHUFIsIHJlc3VsdCk7Ci0gICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIHJlc3VsdCwgbGVuZ3RoKSk7Ci0gICAgICAgIG1faml0
Lm1vdmUobGVuZ3RoLCByZXN1bHQpOwotCi0gICAgICAgIGRvbmUubGluaygmbV9qaXQpOwotICAg
IH07Ci0KLSAgICB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wTGVuZ3RoKHRoaXMpOwotICAg
ICAgICBHUFJSZWcgbGVuZ3RoR1BSID0gdGVtcExlbmd0aC5ncHIoKTsKLSAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZQdWJsaWNMZW5ndGgoKSksIGxlbmd0aEdQUik7Ci0KLSAgICAgICAgaWYgKG5vZGUtPm51
bUNoaWxkcmVuKCkgPT0gNCkKLSAgICAgICAgICAgIHBvcHVsYXRlSW5kZXgoMiwgbGVuZ3RoR1BS
LCB0ZW1wR1BSKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9qaXQubW92ZShsZW5ndGhH
UFIsIHRlbXBHUFIpOwotCi0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wU3RhcnRJbmRleCh0aGlz
KTsKLSAgICAgICAgR1BSUmVnIHN0YXJ0R1BSID0gdGVtcFN0YXJ0SW5kZXguZ3ByKCk7Ci0gICAg
ICAgIHBvcHVsYXRlSW5kZXgoMSwgbGVuZ3RoR1BSLCBzdGFydEdQUik7Ci0KLSAgICAgICAgYXV0
byB0b29CaWcgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHN0YXJ0R1BS
LCB0ZW1wR1BSKTsKLSAgICAgICAgbV9qaXQuc3ViMzIoc3RhcnRHUFIsIHRlbXBHUFIpOyAvLyB0
aGUgc2l6ZSBvZiB0aGUgYXJyYXkgd2UnbGwgbWFrZS4KLSAgICAgICAgYXV0byBkb25lID0gbV9q
aXQuanVtcCgpOwotCi0gICAgICAgIHRvb0JpZy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCB0ZW1wR1BSKTsKLSAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7Ci0gICAgfQotCi0gICAgY29uc3QgYm9vbCBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJh
eVN0b3JhZ2UgPSBmYWxzZTsKLSAgICBjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKGds
b2JhbE9iamVjdCwgcmVzdWx0R1BSLCB0ZW1wR1BSLCBpbmRleGluZ1R5cGUsIHNob3VsZENvbnZl
cnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSk7Ci0KLSAgICBHUFJUZW1wb3JhcnkgdGVtcDModGhp
cyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHRlbXA0KHRoaXMpOwotICAgIEdQUlJlZyB0ZW1wVmFsdWUg
PSB0ZW1wMy5ncHIoKTsKLSAgICBHUFJSZWcgbG9hZEluZGV4ID0gdGVtcDQuZ3ByKCk7Ci0KLSAg
ICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgdGVtcFZhbHVlKTsKLSAgICBpZiAobm9kZS0+
bnVtQ2hpbGRyZW4oKSA9PSA0KQotICAgICAgICBwb3B1bGF0ZUluZGV4KDIsIHRlbXBWYWx1ZSwg
dGVtcEdQUik7Ci0gICAgZWxzZQotICAgICAgICBtX2ppdC5tb3ZlKHRlbXBWYWx1ZSwgdGVtcEdQ
Uik7Ci0gICAgcG9wdWxhdGVJbmRleCgxLCB0ZW1wVmFsdWUsIGxvYWRJbmRleCk7Ci0KLSAgICBH
UFJUZW1wb3JhcnkgdGVtcDUodGhpcyk7Ci0gICAgR1BSUmVnIHN0b3JlSW5kZXggPSB0ZW1wNS5n
cHIoKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCksIHN0b3JlSW5kZXgpOwotCi0g
ICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRCdXR0ZXJmbHkg
PSB0ZW1wMi5ncHIoKTsKLQotICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZXN1bHRCdXR0ZXJm
bHkpOwotICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHRlbXBHUFIsIHRlbXBHUFIpOwotICAg
IG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGxvYWRJbmRleCwgbG9hZEluZGV4KTsKLSAgICBhdXRv
IGRvbmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgbG9h
ZEluZGV4LCB0ZW1wR1BSKTsKLQotICAgIGF1dG8gbG9vcCA9IG1faml0LmxhYmVsKCk7Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICBtX2ppdC5sb2FkNjQoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgbG9hZEluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNF
aWdodCksIHRlbXBWYWx1ZSk7Ci0gICAgbV9qaXQuc3RvcmU2NCgKLSAgICAgICAgdGVtcFZhbHVl
LCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHJlc3VsdEJ1dHRlcmZseSwgc3RvcmVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpKTsKLSNlbHNlCi0gICAgbV9qaXQubG9hZDMyKAot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGxvYWRJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIFBheWxvYWRPZmZzZXQpLCB0ZW1wVmFsdWUpOwot
ICAgIG1faml0LnN0b3JlMzIoCi0gICAgICAgIHRlbXBWYWx1ZSwgTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChyZXN1bHRCdXR0ZXJmbHksIHN0b3JlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c0VpZ2h0LCBQYXlsb2FkT2Zmc2V0KSk7Ci0gICAgbV9qaXQubG9hZDMyKAotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGxvYWRJbmRleCwgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRWlnaHQsIFRhZ09mZnNldCksIHRlbXBWYWx1ZSk7Ci0gICAgbV9qaXQuc3RvcmUz
MigKLSAgICAgICAgdGVtcFZhbHVlLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHJlc3VsdEJ1
dHRlcmZseSwgc3RvcmVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIFRhZ09mZnNl
dCkpOwotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMigxKSwgbG9hZEluZGV4KTsKLSAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKDEpLCBz
dG9yZUluZGV4KTsKLSAgICBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBs
b2FkSW5kZXgsIHRlbXBHUFIpLmxpbmtUbyhsb29wLCAmbV9qaXQpOwotCi0gICAgZG9uZS5saW5r
KCZtX2ppdCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotfQotCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUoTm9kZSogbm9kZSkKIHsKICAgICBXYXRj
aHBvaW50U2V0KiBzZXQgPSBub2RlLT53YXRjaHBvaW50U2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOTIwMDg3M2Y5OGFlZjdjNDZh
YmUwNTZlNWNiMDRhOTUxYjg2MjUxYS4uYjBmMGUwODEyZWY4ZDhjZGE1OTE1OWFlNmJkOWQ5Zjk5
MDQ3OTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMjY4MCw3ICsyNjgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNwcmVh
ZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVBcnJh
eVNsaWNlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOb3RpZnlXcml0ZShOb2RlKik7CiAgICAg
Ym9vbCBjb21waWxlUmVnRXhwRXhlYyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSXNPYmplY3RP
ck51bGwoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYzk0MDAwYWExN2NhOTc3ZmIwZTM2ZTUxMGQ5MGNj
OTU4MGQ4Nzk5OS4uNGZhODQ4NGJkMGRmYjFkYjcxOTczYmZlOWMwMDlmZjJjMzJiNjNhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCkBAIC0zNTUwLDExICszNTUwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEFycmF5U2xp
Y2U6IHsKLSAgICAgICAgY29tcGlsZUFycmF5U2xpY2Uobm9kZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQogICAgIGNhc2UgREZHOjpKdW1wOiB7CiAgICAgICAgIGp1bXAobm9kZS0+dGFyZ2V0
QmxvY2soKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYTUzMjgzNmU2MzliOTY1
ZmQxMjEyMGZmNWJjZGYyYjlhMjMyZWE0NS4uZTUxNDk5ZGQxYTVhYzlkZGQ4ODAwZmE0MTNmZmEy
NTM0YjFhYmY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCkBAIC0zNDYyLDExICszNDYyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LQotICAgIGNhc2UgQXJyYXlTbGljZTogewotICAgICAgICBjb21waWxlQXJyYXlTbGljZShub2Rl
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5UG9wOiB7
CiAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNDM4M2YxMmRl
ZWM5MzhhYzEyMWM0ZmYwNTQyNzNhMzY1Mzg0NWU2NC4uZDQyZmY0YWRhZTk3YmJiYjYwNWJiYzli
OTBhMjA0NjczOTk2NDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjgyLDcgKzI4Miw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDYWxs
RE9NOgogICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKLSAgICBjYXNlIEFycmF5U2xpY2U6CiAgICAg
ICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA5OGJhODc1MTc5ODhjZjAwMzgw
MGVkMzdiNmNhMTdkMWFiMTNjOGEwLi43MGViZjg2ZGJlMDY4NTllY2FiOTdhOTQ0YjgyYmIzZmM1
ZmEyM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC03MDYsOSArNzA2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcnJheVBvcDoK
ICAgICAgICAgICAgIGNvbXBpbGVBcnJheVBvcCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQXJyYXlTbGljZToKLSAgICAgICAgICAgIGNvbXBpbGVBcnJheVNsaWNlKCk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
Mzg2Myw4MyArMzg2MCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9Ci0KLSAgICB2b2lkIGNvbXBpbGVBcnJheVNsaWNlKCkKLSAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0KLSAgICAgICAgTFZhbHVlIHNvdXJjZVN0b3JhZ2Ug
PSBsb3dTdG9yYWdlKG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSA9PSAzID8gbV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDIpIDogbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKLSAgICAg
ICAgTFZhbHVlIGlucHV0TGVuZ3RoID0gbV9vdXQubG9hZDMyKHNvdXJjZVN0b3JhZ2UsIG1faGVh
cHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7Ci0KLSAgICAgICAgTFZhbHVlIGVuZEJvdW5kYXJ5
OwotICAgICAgICBpZiAobV9ub2RlLT5udW1DaGlsZHJlbigpID09IDMpCi0gICAgICAgICAgICBl
bmRCb3VuZGFyeSA9IG1fb3V0LmxvYWQzMihzb3VyY2VTdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZs
eV9wdWJsaWNMZW5ndGgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVuZEJvdW5kYXJ5
ID0gbG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKLSAgICAgICAgICAg
IGVuZEJvdW5kYXJ5ID0gbV9vdXQuc2VsZWN0KG1fb3V0LmdyZWF0ZXJUaGFuT3JFcXVhbChlbmRC
b3VuZGFyeSwgbV9vdXQuY29uc3RJbnQzMigwKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuc2Vs
ZWN0KG1fb3V0LmFib3ZlKGVuZEJvdW5kYXJ5LCBpbnB1dExlbmd0aCksIGlucHV0TGVuZ3RoLCBl
bmRCb3VuZGFyeSksCi0gICAgICAgICAgICAgICAgbV9vdXQuc2VsZWN0KG1fb3V0Lmxlc3NUaGFu
KG1fb3V0LmFkZChpbnB1dExlbmd0aCwgZW5kQm91bmRhcnkpLCBtX291dC5jb25zdEludDMyKDAp
KSwgbV9vdXQuY29uc3RJbnQzMigwKSwgbV9vdXQuYWRkKGlucHV0TGVuZ3RoLCBlbmRCb3VuZGFy
eSkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIExWYWx1ZSBzdGFydEluZGV4ID0gbG93SW50MzIo
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKLSAgICAgICAgc3RhcnRJbmRleCA9IG1f
b3V0LnNlbGVjdChtX291dC5ncmVhdGVyVGhhbk9yRXF1YWwoc3RhcnRJbmRleCwgbV9vdXQuY29u
c3RJbnQzMigwKSksCi0gICAgICAgICAgICBtX291dC5zZWxlY3QobV9vdXQuYWJvdmUoc3RhcnRJ
bmRleCwgaW5wdXRMZW5ndGgpLCBpbnB1dExlbmd0aCwgc3RhcnRJbmRleCksCi0gICAgICAgICAg
ICBtX291dC5zZWxlY3QobV9vdXQubGVzc1RoYW4obV9vdXQuYWRkKGlucHV0TGVuZ3RoLCBzdGFy
dEluZGV4KSwgbV9vdXQuY29uc3RJbnQzMigwKSksIG1fb3V0LmNvbnN0SW50MzIoMCksIG1fb3V0
LmFkZChpbnB1dExlbmd0aCwgc3RhcnRJbmRleCkpKTsKLQotICAgICAgICBMVmFsdWUgcmVzdWx0
TGVuZ3RoID0gbV9vdXQuc2VsZWN0KG1fb3V0LmJlbG93KHN0YXJ0SW5kZXgsIGVuZEJvdW5kYXJ5
KSwKLSAgICAgICAgICAgIG1fb3V0LnN1YihlbmRCb3VuZGFyeSwgc3RhcnRJbmRleCksCi0gICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKDApKTsKLQotICAgICAgICBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdUeXBlOwotICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7
Ci0gICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgotICAgICAgICAgICAgaW5kZXhpbmdUeXBlID0g
QXJyYXlXaXRoSW50MzI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKLSAgICAgICAgICAgIGluZGV4aW5nVHlwZSA9IEFycmF5V2l0aENvbnRpZ3Vv
dXM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAg
ICAgICAgICAgaW5kZXhpbmdUeXBlID0gQXJyYXlXaXRoRG91YmxlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihp
bmRleGluZ1R5cGUpOwotICAgICAgICBhdXRvIGFycmF5UmVzdWx0ID0gYWxsb2NhdGVKU0FycmF5
KHJlc3VsdExlbmd0aCwgc3RydWN0dXJlLCBmYWxzZSwgZmFsc2UpOwotCi0gICAgICAgIExCYXNp
Y0Jsb2NrIGxvb3AgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBMQmFzaWNCbG9jayBjb250
aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotCi0gICAgICAgIHJlc3VsdExlbmd0aCA9IG1f
b3V0Lnplcm9FeHRQdHIocmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgc3Rh
cnRMb2FkSW5kZXggPSBtX291dC5hbmNob3IobV9vdXQuemVyb0V4dFB0cihzdGFydEluZGV4KSk7
Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHN0YXJ0U3RvcmVJbmRleCA9IG1fb3V0LmFuY2hvciht
X291dC5jb25zdEludFB0cigwKSk7Ci0KLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAg
ICAgbV9vdXQuYmVsb3cobV9vdXQuY29uc3RJbnRQdHIoMCksIHJlc3VsdExlbmd0aCksIHVuc3Vy
ZShsb29wKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGxh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obG9vcCwgY29udGludWF0aW9uKTsKLSAgICAgICAgTFZh
bHVlIHN0b3JlSW5kZXggPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgc3RhcnRTdG9yZUluZGV4
KTsKLSAgICAgICAgTFZhbHVlIGxvYWRJbmRleCA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBz
dGFydExvYWRJbmRleCk7Ci0gICAgICAgIEluZGV4ZWRBYnN0cmFjdEhlYXAmIGhlYXAgPSBtX2hl
YXBzLmZvckFycmF5VHlwZShtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSk7Ci0gICAgICAgIGlm
IChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7Ci0gICAgICAgICAgICBMVmFsdWUg
dmFsdWUgPSBtX291dC5sb2FkRG91YmxlKG1fb3V0LmJhc2VJbmRleChoZWFwLCBzb3VyY2VTdG9y
YWdlLCBsb2FkSW5kZXgpKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlRG91YmxlKHZhbHVlLCBt
X291dC5iYXNlSW5kZXgoaGVhcCwgYXJyYXlSZXN1bHQuYnV0dGVyZmx5LCBzdG9yZUluZGV4KSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5sb2Fk
NjQobV9vdXQuYmFzZUluZGV4KGhlYXAsIHNvdXJjZVN0b3JhZ2UsIGxvYWRJbmRleCkpOwotICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgbV9vdXQuYmFzZUluZGV4KGhlYXAsIGFycmF5
UmVzdWx0LmJ1dHRlcmZseSwgc3RvcmVJbmRleCkpOwotICAgICAgICB9Ci0gICAgICAgIExWYWx1
ZSBuZXh0U3RvcmVJbmRleCA9IG1fb3V0LmFkZChzdG9yZUluZGV4LCBtX291dC5jb25zdEludFB0
cigxKSk7Ci0gICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoc3RvcmVJbmRleCwgbV9vdXQu
YW5jaG9yKG5leHRTdG9yZUluZGV4KSk7Ci0gICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGko
bG9hZEluZGV4LCBtX291dC5hbmNob3IobV9vdXQuYWRkKGxvYWRJbmRleCwgbV9vdXQuY29uc3RJ
bnRQdHIoMSkpKSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIG1fb3V0LmJl
bG93KG5leHRTdG9yZUluZGV4LCByZXN1bHRMZW5ndGgpLCB1bnN1cmUobG9vcCksIHVuc3VyZShj
b250aW51YXRpb24pKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKLQotICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAgICAgICAgc2V0SlNWYWx1ZShh
cnJheVJlc3VsdC5hcnJheSk7Ci0gICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UG9w
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAKaW5kZXggYmEwMTdlODVlODU5ZjAzNTc4YzQ3MzVhMjdhZmU0MzEyYzUzOGJhOS4uNGI0Y2Q4
Y2NmN2I3NDUzMzdjYWMwYjg4ZDUwZDY3NTMxNTcwOTEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtNDQ3LDcgKzQ0Nyw2IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpsb2FkUHJvcGVydHkoR1BSUmVnIG9iamVjdCwgR1BSUmVnIG9mZnNl
dCwgSlNWYWx1ZVJlZ3MgcmVzCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRTdHJ1Y3R1
cmUoUmVnaXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNo
KQogewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgQVNTRVJUKGRlc3QgIT0gc2NyYXRjaCk7CiAg
ICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgZGVzdCk7CiAgICAgbG9hZFB0cih2bSgpLT5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5iYXNlKCksIHNjcmF0Y2gpOwogICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChzY3JhdGNoLCBkZXN0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CmluZGV4IGQ2MGJjZGY3YTA4YzEwNzMzMDM0MGM5MWQ0ZTgyMDkwMTQ4Mjk5Y2IuLjY4ZWRjMzhm
OGI2NWYzNzJhYjE3MGJhMjM3M2NlNWU1MTk1YWMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9p
ZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KCJyZXZlcnNlIiwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlLCBEb250RW51bSwgMCk7CiAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuc2hpZnRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG9GdW5jU2hpZnQsIERvbnRF
bnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zaGlmdFByaXZhdGVOYW1lKCksIGFycmF5UHJv
dG9GdW5jU2hpZnQsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAwKTsKLSAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+c2xpY2UsIGFycmF5UHJvdG9GdW5jU2xpY2UsIERvbnRFbnVtLCAyLCBBcnJheVNs
aWNlSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5zbGljZSwgYXJyYXlQcm90b0Z1bmNTbGljZSwgRG9udEVudW0s
IDIpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigic29ydCIs
IGFycmF5UHJvdG90eXBlU29ydENvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKICAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigic3BsaWNlIiwgYXJyYXlQcm90b0Z1bmNT
cGxpY2UsIERvbnRFbnVtLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTigidW5zaGlmdCIsIGFycmF5UHJvdG9GdW5jVW5TaGlmdCwgRG9udEVudW0sIDEpOwpA
QCAtMTkxLDEyICsxOTEsMjEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRMZW5ndGgo
RXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBvYmosIHVuc2kKICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOwogfQogCi1pbmxpbmUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoSlNP
YmplY3QqIHRoaXNPYmplY3QpCitpbmxpbmUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludHNWYWxpZChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPmFycmF5UHJvdG90eXBlKCk7CisgICAgQXJyYXlQcm90b3R5cGU6OlNwZWNpZXNXYXRj
aHBvaW50U3RhdHVzIHN0YXR1cyA9IGFycmF5UHJvdG90eXBlLT5zcGVjaWVzV2F0Y2hwb2ludFN0
YXR1cygpOworICAgIGlmIChVTkxJS0VMWShzdGF0dXMgPT0gQXJyYXlQcm90b3R5cGU6OlNwZWNp
ZXNXYXRjaHBvaW50U3RhdHVzOjpVbmluaXRpYWxpemVkKSkgeworICAgICAgICBzdGF0dXMgPSBh
cnJheVByb3RvdHlwZS0+YXR0ZW1wdFRvSW5pdGlhbGl6ZVNwZWNpZXNXYXRjaHBvaW50KGV4ZWMp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgfQorICAg
IEFTU0VSVChzdGF0dXMgIT0gQXJyYXlQcm90b3R5cGU6OlNwZWNpZXNXYXRjaHBvaW50U3RhdHVz
OjpVbmluaXRpYWxpemVkKTsKICAgICByZXR1cm4gIXRoaXNPYmplY3QtPmhhc0N1c3RvbVByb3Bl
cnRpZXMoKQogICAgICAgICAmJiBhcnJheVByb3RvdHlwZSA9PSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3QoKQotICAgICAgICAmJiBhcnJheVByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkt
PmFycmF5U3BlY2llc1dhdGNocG9pbnQoKS5pc1N0aWxsVmFsaWQoKTsKKyAgICAgICAgJiYgc3Rh
dHVzID09IEFycmF5UHJvdG90eXBlOjpTcGVjaWVzV2F0Y2hwb2ludFN0YXR1czo6SW5pdGlhbGl6
ZWQ7CiB9CiAKIGVudW0gY2xhc3MgU3BlY2llc0NvbnN0cnVjdFJlc3VsdCB7CkBAIC0yMjEsNyAr
MjMwLDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RS
ZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc0NvbnN0cnUKICAgICBpZiAoTElLRUxZKHRoaXNJc0Fy
cmF5KSkgewogICAgICAgICAvLyBGYXN0IHBhdGggaW4gdGhlIG5vcm1hbCBjYXNlIHdoZXJlIHRo
ZSB1c2VyIGhhcyBub3Qgc2V0IGFuIG93biBjb25zdHJ1Y3RvciBhbmQgdGhlIEFycmF5LnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciBpcyBub3JtYWwuCiAgICAgICAgIC8vIFdlIG5lZWQgcHJvdG90eXBl
IGNoZWNrIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5LCB3aGljaCBhcmUgQXJyYXkgb2JqZWN0cyBi
dXQgaGF2ZSBhIGRpZmZlcmVudCBwcm90b3R5cGUgYnkgZGVmYXVsdC4KLSAgICAgICAgYm9vbCBp
c1ZhbGlkID0gc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkKHRoaXNPYmplY3QpOworICAgICAgICBi
b29sIGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludHNWYWxpZChleGVjLCB0aGlzT2JqZWN0KTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZXhjZXB0aW9uUmVzdWx0KCkpOwog
ICAgICAgICBpZiAoTElLRUxZKGlzVmFsaWQpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoLCBudWxscHRyKTsKIApAQCAt
OTEwLDI5ICs5MjAsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NoaWZ0KEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xpY2UKKyAgICAv
LyBodHRwOi8vZGV2ZWxvcGVyLm5ldHNjYXBlLmNvbS9kb2NzL21hbnVhbHMvanMvY2xpZW50L2pz
cmVmL2FycmF5Lmh0bSMxMTkzNzEzIG9yIDE1LjQuNC4xMAogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUp
LnRvT2JqZWN0KGV4ZWMpOwogICAgIEFTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQotICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBn
ZXRMZW5ndGgoZXhlYywgdGhpc09iaik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVu
ZChleGVjLCAwLCBsZW5ndGgpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
dW5zaWduZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAx
LCBsZW5ndGgsIGxlbmd0aCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1
bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZXhlYywgdGhpc09iaiwgZW5kIC0gYmVnaW4pOwog
ICAgIC8vIFdlIGNhbiBvbmx5IGdldCBhbiBleGNlcHRpb24gaWYgd2UgY2FsbCBzb21lIHVzZXIg
ZnVuY3Rpb24uCiAgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1
bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSk7CiAgICAgaWYg
KFVOTElLRUxZKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6
RXhjZXB0aW9uKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CiAKICAgICBib29sIG9rVG9Eb0Zhc3RQYXRoID0gc3BlY2llc1Jlc3VsdC5maXJz
dCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCAmJiBpc0pTQXJyYXkodGhpc09i
aikgJiYgbGVuZ3RoID09IGdldExlbmd0aChleGVjLCB0aGlzT2JqKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChMSUtFTFkob2tUb0RvRmFzdFBhdGgpKSB7CiAgICAg
ICAgIGlmIChKU0FycmF5KiByZXN1bHQgPSBhc0FycmF5KHRoaXNPYmopLT5mYXN0U2xpY2UoKmV4
ZWMsIGJlZ2luLCBlbmQgLSBiZWdpbikpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC05NDMsMTYgKzk1MywxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXN1
bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29uZDsKICAgICBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBlbmQgLSBiZWdpbik7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIG4g
PSAwOwogICAgIGZvciAodW5zaWduZWQgayA9IGJlZ2luOyBrIDwgZW5kOyBrKyssIG4rKykgewog
ICAgICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBrKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICh2KSB7CiAgICAg
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIG4sIHYsIDAsIFB1dERpcmVjdElu
ZGV4U2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTEyMzks
NyArMTI0OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZh
dGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIHRoZSBzcGVj
aWVzIGNvbnN0cnVjdG9yIGhlcmUgc2luY2UgY2hlY2tpbmcgaXQgaW4gdGhlIEpTIHdyYXBwZXIg
aXMgdG9vIGV4cGVuc2l2ZSBmb3IgdGhlIG5vbi1vcHRpbWl6aW5nIHRpZXJzLgotICAgIGJvb2wg
aXNWYWxpZCA9IHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChmaXJzdEFycmF5KTsKKyAgICBib29s
IGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludHNWYWxpZChleGVjLCBmaXJzdEFycmF5KTsKKyAg
ICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFpc1ZhbGlkKTsKICAgICBpZiAoVU5MSUtF
TFkoIWlzVmFsaWQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsK
IApAQCAtMTMzMSwxOCArMTM0MiwxNSBAQCBwcml2YXRlOgogICAgIEFycmF5UHJvdG90eXBlKiBt
X2FycmF5UHJvdG90eXBlOwogfTsKIAotdm9pZCBBcnJheVByb3RvdHlwZTo6aW5pdGlhbGl6ZVNw
ZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKK0FycmF5UHJvdG90eXBlOjpTcGVjaWVz
V2F0Y2hwb2ludFN0YXR1cyBBcnJheVByb3RvdHlwZTo6YXR0ZW1wdFRvSW5pdGlhbGl6ZVNwZWNp
ZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotCi0gICAgUkVMRUFTRV9BU1NFUlQoIW1fY29uc3RydWN0b3JXYXRjaHBvaW50KTsKLSAgICBS
RUxFQVNFX0FTU0VSVCghbV9jb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBBU1NF
UlQobV9zcGVjaWVzV2F0Y2hwb2ludFN0YXR1cyA9PSBTcGVjaWVzV2F0Y2hwb2ludFN0YXR1czo6
VW5pbml0aWFsaXplZCk7CiAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0oc2NvcGUpOwog
CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkluaXRpYWxpemluZyBBcnJheSBz
cGVjaWVzIHdhdGNocG9pbnRzIGZvciBBcnJheS5wcm90b3R5cGU6ICIsIHBvaW50ZXJEdW1wKHRo
aXMpLCAiIHdpdGggc3RydWN0dXJlOiAiLCBwb2ludGVyRHVtcCh0aGlzLT5zdHJ1Y3R1cmUoKSks
ICJcbmFuZCBBcnJheTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0KCktPmFycmF5
Q29uc3RydWN0b3IoKSksICIgd2l0aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPmds
b2JhbE9iamVjdCgpLT5hcnJheUNvbnN0cnVjdG9yKCktPnN0cnVjdHVyZSgpKSwgIlxuIik7Cisg
ICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gaW5pdGlhbGl6ZSBBcnJheSBzcGVjaWVzIHdh
dGNocG9pbnRzIGZvciBBcnJheS5wcm90b3R5cGU6ICIsIHBvaW50ZXJEdW1wKHRoaXMpLCAiIHdp
dGggc3RydWN0dXJlOiAiLCBwb2ludGVyRHVtcCh0aGlzLT5zdHJ1Y3R1cmUoKSksICJcbmFuZCBB
cnJheTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0KCktPmFycmF5Q29uc3RydWN0
b3IoKSksICIgd2l0aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPmdsb2JhbE9iamVj
dCgpLT5hcnJheUNvbnN0cnVjdG9yKCktPnN0cnVjdHVyZSgpKSwgIlxuIik7CiAgICAgLy8gRmly
c3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgQXJyYXkucHJvdG90eXBlLmNvbnN0cnVj
dG9yIHByb3BlcnR5IHBvaW50cyB0byBBcnJheQogICAgIC8vIGFuZCB0aGF0IEFycmF5W1N5bWJv
bC5zcGVjaWVzXSBpcyB0aGUgcHJpbW9yZGlhbCBHZXR0ZXJTZXR0ZXIuCiAKQEAgLTEzNTYsMjIg
KzEzNjQsMjQgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6aW5pdGlhbGl6ZVNwZWNpZXNXYXRjaHBv
aW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVj
dG9yID0gZ2xvYmFsT2JqZWN0LT5hcnJheUNvbnN0cnVjdG9yKCk7CiAKICAgICBQcm9wZXJ0eVNs
b3QgY29uc3RydWN0b3JTbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOwotICAgIHRoaXMtPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3JTbG90KTsKLSAgICBBU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoY29uc3RydWN0b3JTbG90LnNsb3RC
YXNlKCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9yU2xvdC5pc0NhY2hlYWJsZVZh
bHVlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNvbnN0cnVjdG9yU2xvdC5nZXRWYWx1ZShleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvcikgPT0gYXJyYXlDb25zdHJ1Y3Rvcik7Cisg
ICAgSlNWYWx1ZSh0aGlzKS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IGNvbnN0cnVjdG9yU2xvdCk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKQor
ICAgICAgICB8fCBjb25zdHJ1Y3RvclNsb3Quc2xvdEJhc2UoKSAhPSB0aGlzCisgICAgICAgIHx8
ICFjb25zdHJ1Y3RvclNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgIHx8IGNvbnN0cnVj
dG9yU2xvdC5nZXRWYWx1ZShleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvcikgIT0g
YXJyYXlDb25zdHJ1Y3RvcikKKyAgICAgICAgcmV0dXJuIG1fc3BlY2llc1dhdGNocG9pbnRTdGF0
dXMgPSBTcGVjaWVzV2F0Y2hwb2ludFN0YXR1czo6RmlyZWQ7CiAKICAgICBTdHJ1Y3R1cmUqIGNv
bnN0cnVjdG9yU3RydWN0dXJlID0gYXJyYXlDb25zdHJ1Y3Rvci0+c3RydWN0dXJlKHZtKTsKICAg
ICBpZiAoY29uc3RydWN0b3JTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBjb25z
dHJ1Y3RvclN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFy
eVN0cnVjdHVyZSh2bSwgYXJyYXlDb25zdHJ1Y3Rvcik7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc3Bl
Y2llc1Nsb3QoYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7Ci0gICAgYXJyYXlDb25zdHJ1Y3Rvci0+Z2V0T3duUHJvcGVydHlTbG90
KGFycmF5Q29uc3RydWN0b3IsIGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2ws
IHNwZWNpZXNTbG90KTsKLSAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NF
UlQoc3BlY2llc1Nsb3Quc2xvdEJhc2UoKSA9PSBhcnJheUNvbnN0cnVjdG9yKTsKLSAgICBBU1NF
UlQoc3BlY2llc1Nsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
c3BlY2llc1Nsb3QuZ2V0dGVyU2V0dGVyKCkgPT0gZ2xvYmFsT2JqZWN0LT5zcGVjaWVzR2V0dGVy
U2V0dGVyKCkpOworICAgIEpTVmFsdWUoYXJyYXlDb25zdHJ1Y3RvcikuZ2V0KGV4ZWMsIHZtLnBy
b3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTbG90KTsKKyAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpCisgICAgICAgIHx8IHNwZWNpZXNTbG90LnNsb3RCYXNlKCkg
IT0gYXJyYXlDb25zdHJ1Y3RvcgorICAgICAgICB8fCAhc3BlY2llc1Nsb3QuaXNDYWNoZWFibGVH
ZXR0ZXIoKQorICAgICAgICB8fCBzcGVjaWVzU2xvdC5nZXR0ZXJTZXR0ZXIoKSAhPSBnbG9iYWxP
YmplY3QtPnNwZWNpZXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgcmV0dXJuIG1fc3BlY2llc1dh
dGNocG9pbnRTdGF0dXMgPSBTcGVjaWVzV2F0Y2hwb2ludFN0YXR1czo6RmlyZWQ7CiAKICAgICAv
LyBOb3cgd2UgbmVlZCB0byBzZXR1cCB0aGUgd2F0Y2hwb2ludHMgdG8gbWFrZSBzdXJlIHRoZXNl
IGNvbmRpdGlvbnMgcmVtYWluIHZhbGlkLgogICAgIHByb3RvdHlwZVN0cnVjdHVyZS0+c3RhcnRX
YXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBjb25zdHJ1Y3RvclNsb3QuY2FjaGVk
T2Zmc2V0KCkpOwpAQCAtMTM4MCwxNCArMTM5MCwxNiBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpp
bml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbnN0cnVjdG9yQ29uZGl0aW9uID0gT2JqZWN0UHJvcGVydHlDb25k
aXRpb246OmVxdWl2YWxlbmNlKHZtLCB0aGlzLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3Rvci5pbXBsKCksIGFycmF5Q29uc3RydWN0b3IpOwogICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIHNwZWNpZXNDb25kaXRpb24gPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZh
bGVuY2Uodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNp
ZXNTeW1ib2wuaW1wbCgpLCBnbG9iYWxPYmplY3QtPnNwZWNpZXNHZXR0ZXJTZXR0ZXIoKSk7CiAK
LSAgICBSRUxFQVNFX0FTU0VSVChjb25zdHJ1Y3RvckNvbmRpdGlvbi5pc1dhdGNoYWJsZSgpKTsK
LSAgICBSRUxFQVNFX0FTU0VSVChzcGVjaWVzQ29uZGl0aW9uLmlzV2F0Y2hhYmxlKCkpOworICAg
IGlmICghY29uc3RydWN0b3JDb25kaXRpb24uaXNXYXRjaGFibGUoKSB8fCAhc3BlY2llc0NvbmRp
dGlvbi5pc1dhdGNoYWJsZSgpKQorICAgICAgICByZXR1cm4gbV9zcGVjaWVzV2F0Y2hwb2ludFN0
YXR1cyA9IFNwZWNpZXNXYXRjaHBvaW50U3RhdHVzOjpGaXJlZDsKIAogICAgIG1fY29uc3RydWN0
b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+KGNvbnN0cnVjdG9yQ29uZGl0aW9uLCB0aGlzKTsKICAg
ICBtX2NvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCgpOwogCiAgICAgbV9jb25zdHJ1Y3Rv
clNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVByb3RvdHlwZUFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+KHNwZWNpZXNDb25kaXRpb24sIHRoaXMpOwog
ICAgIG1fY29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworCisgICAgcmV0
dXJuIG1fc3BlY2llc1dhdGNocG9pbnRTdGF0dXMgPSBTcGVjaWVzV2F0Y2hwb2ludFN0YXR1czo6
SW5pdGlhbGl6ZWQ7CiB9CiAKIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
V2F0Y2hwb2ludDo6QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBv
aW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXksIEFycmF5UHJvdG90eXBlKiBw
cm90b3R5cGUpCkBAIC0xNDA2LDggKzE0MTgsNyBAQCB2b2lkIEFycmF5UHJvdG90eXBlQWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6aGFuZGxlRmlyZShjb25zdCBGaXJlRGV0YQog
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICBXVEY6OmRhdGFMb2coc3RyaW5nRGV0YWlsLCAiXG4i
KTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2FycmF5UHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKTsKLSAgICBnbG9iYWxPYmplY3QtPmFycmF5U3BlY2llc1dhdGNocG9p
bnQoKS5maXJlQWxsKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RyaW5nRGV0YWlsKTsKKyAgICBtX2Fy
cmF5UHJvdG90eXBlLT5tX3NwZWNpZXNXYXRjaHBvaW50U3RhdHVzID0gQXJyYXlQcm90b3R5cGU6
OlNwZWNpZXNXYXRjaHBvaW50U3RhdHVzOjpGaXJlZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAppbmRl
eCA3ZTRkODlmNjFhMjg4MTlhN2EzN2VmZDBhNjE2MTgwNzBjMzE5OGZlLi5mN2I4NDMyY2I5ZWM4
OTg3N2NhMWNhMDAwMTkyZGFlNDQ5MDhlNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKQEAgLTQ5LDcgKzQ5LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhEZXJpdmVkQXJyYXlUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgQXJy
YXlDbGFzcyk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQo
RXhlY1N0YXRlKik7CisgICAgU3BlY2llc1dhdGNocG9pbnRTdGF0dXMgc3BlY2llc1dhdGNocG9p
bnRTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZXNXYXRjaHBvaW50U3RhdHVzOyB9Cisg
ICAgU3BlY2llc1dhdGNocG9pbnRTdGF0dXMgYXR0ZW1wdFRvSW5pdGlhbGl6ZVNwZWNpZXNXYXRj
aHBvaW50KEV4ZWNTdGF0ZSopOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IGZhbHNlOwogICAgIC8vIFdlIGRvbid0IG5lZWQgZGVzdHJ1Y3Rpb24gc2luY2Ugd2Ug
dXNlIGEgZmluYWxpemVyLgpAQCAtNjMsNiArNjQsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBB
cnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hw
b2ludD4gbV9jb25zdHJ1Y3RvcldhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5
UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludD4gbV9jb25zdHJ1Y3Rv
clNwZWNpZXNXYXRjaHBvaW50OworICAgIFNwZWNpZXNXYXRjaHBvaW50U3RhdHVzIG1fc3BlY2ll
c1dhdGNocG9pbnRTdGF0dXMgeyBTcGVjaWVzV2F0Y2hwb2ludFN0YXR1czo6VW5pbml0aWFsaXpl
ZCB9OwogfTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuaAppbmRleCBhZGFlNWVmNjg0M2NiZDliMjQ1NzdmYzE2ZTQ3YjAxM2Q2Mjc2YTExLi5lNGYy
MTZhYTBkMjhhMWMzYTU0OTI4NDRhYjZiOTllODcyY2I2Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtNDAsNyArNDAsNiBAQCBlbnVtIEpTX0VYUE9S
VF9QUklWQVRFIEludHJpbnNpYyB7CiAgICAgVGFuSW50cmluc2ljLAogICAgIEFycmF5UHVzaElu
dHJpbnNpYywKICAgICBBcnJheVBvcEludHJpbnNpYywKLSAgICBBcnJheVNsaWNlSW50cmluc2lj
LAogICAgIENoYXJDb2RlQXRJbnRyaW5zaWMsCiAgICAgQ2hhckF0SW50cmluc2ljLAogICAgIEZy
b21DaGFyQ29kZUludHJpbnNpYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjMDA1ZDgwY2U2YTFlMDg1OThmNjg2ZTEzMjEyOTk3
NGE4ZjE1MmZhLi5hNzBlY2Y0ZTUwMzA3NjAwZDRkNTBmYTRmYjliZWEzZTk4YmFiMGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0zMzIsNyArMzMyLDYgQEAgSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE0KICAgICAsIG1fdmFySW5q
ZWN0aW9uV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkK
ICAgICAsIG1fd2Vha1JhbmRvbShPcHRpb25zOjpmb3JjZVdlYWtSYW5kb21TZWVkKCkgPyBPcHRp
b25zOjpmb3JjZWRXZWFrUmFuZG9tU2VlZCgpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRv
bU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEuMCkp
KQogICAgICwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KElzV2F0Y2hlZCkKLSAg
ICAsIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludChJc1dhdGNoZWQpCiAgICAgLCBtX3RlbXBsYXRl
UmVnaXN0cnkodm0pCiAgICAgLCBtX2V2YWxFbmFibGVkKHRydWUpCiAgICAgLCBtX3J1bnRpbWVG
bGFncygpCkBAIC05NDUsOCArOTQ0LDYgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAg
ICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5SXRlcmF0b3JBZGFwdGl2ZVdhdGNocG9pbnQ+KGNvbmRpdGlvbiwgdGhp
cyk7CiAgICAgICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
LT5pbnN0YWxsKCk7CiAgICAgICAgIH0KLQotICAgICAgICB0aGlzLT5hcnJheVByb3RvdHlwZSgp
LT5pbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQoZXhlYyk7CiAgICAgfQogCiAgICAgcmVzZXRQ
cm90b3R5cGUodm0sIGdldFByb3RvdHlwZURpcmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDQyZjA0MDllOWYxMTg2Y2JkNTMx
ODYwNDNiZDhhM2FhZmQ2NTE5NTguLmI0MjNjNDliZDRmY2YxYjRjYjU4YzgzZTFiZGM2NmE4MWJl
N2UzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaApAQCAtMzk5LDExICszOTksOSBAQCBwdWJsaWM6CiAgICAgV2Vha1JhbmRvbSBtX3dlYWtS
YW5kb207CiAKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KCkgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50OyB9
Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpIHsgcmV0
dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludDsgfQogICAgIC8vIElmIHRoaXMgaGFzbid0IGJl
ZW4gaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2NvbAogICAg
IC8vIGlzIG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5lV2F0Y2hw
b2ludFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQ7Ci0gICAgSW5saW5lV2F0
Y2hwb2ludFNldCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEFycmF5SXRlcmF0b3JBZGFwdGl2ZVdhdGNocG9pbnQ+IG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5SXRlcmF0b3JBZGFw
dGl2ZVdhdGNocG9pbnQ+IG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQ7CiAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjk3ZjEzZmQy
Y2IxY2IyZGVjNTBmODEwOThmZDBmNzVjOTI5YThlNC4uNjIxODA2YzFhYmFmYTk0MmMzYTVkNTA5
MTcwMjU0ODYwZjVlOGUzMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMS0wOSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIxMDQ3Ni4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2Njg1OQorCisgICAgICAgICI0JSBKU0JlbmNoIHJlZ3Jlc3Npb24iIChSZXF1ZXN0
ZWQgYnkga2VpdGhfbWlfIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNl
dDoKKworICAgICAgICAiQWRkIGEgc2xpY2UgaW50cmluc2ljIHRvIHRoZSBERkcvRlRMIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzA3CisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxMDQ3NgorCiAyMDE3LTAxLTA2
ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHNsaWNl
IGludHJpbnNpYyB0byB0aGUgREZHL0ZUTApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJy
YXktc2xpY2UtaW50cmluc2ljLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktc2xpY2UtaW50cmlu
c2ljLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjVhNzRkOTA3MDc5OGVlNjc5
N2E3YmQ1MWMwOGZhZjI3MGY5NTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXNsaWNlLWludHJpbnNpYy5qcworKysg
L2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLWZ1bmN0aW9uIGFzc2VydChiKSB7Ci0gICAgaWYg
KCFiKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpCi19Ci1ub0lubGluZShhc3NlcnQp
OwotCi1mdW5jdGlvbiBzaGFsbG93RXEoYSwgYikgewotICAgIGFzc2VydChhLmxlbmd0aCA9PT0g
Yi5sZW5ndGgpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKLSAgICAg
ICAgYXNzZXJ0KGFbaV0gPT09IGJbaV0pOwotfQotbm9JbmxpbmUoc2hhbGxvd0VxKTsKLQotbGV0
IHRlc3RzID0gWwotICAgIFtbMSwyLDMsNCw1XSwgWzEsMiwzLDQsNV0sIDAsIDVdLAotICAgIFtb
MSwyLDMsNCw1XSwgWzEsMiwzLDQsNV0sIDBdLAotICAgIFtbMSwyLDMsNCw1XSwgWzRdLCAtMiwg
LTFdLAotICAgIFtbMSwyLDMsNCw1XSwgWzVdLCAtMV0sCi0gICAgW1sxLDIsMyw0LDVdLCBbNV0s
IC0xLCA1XSwKLSAgICBbWzEsMiwzLDQsNV0sIFtdLCAtMTAsIC0yMF0sCi0gICAgW1sxLDIsMyw0
LDVdLCBbXSwgLTIwLCAtMTBdLAotICAgIFtbMSwyLDMsNCw1XSwgW10sIDYsIDRdLAotICAgIFtb
MSwyLDMsNCw1XSwgW10sIDMsIDJdLAotICAgIFtbMSwyLDMsNCw1XSwgWzQsNV0sIDMsIDEwXSwK
LSAgICBbWzEsMiwzLDQsNV0sIFszLDQsNV0sIDIsIDEwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFsx
LDIsMyw0LDVdLCAtMTAsIDEwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFsxLDIsMyw0LDVdLCAtNSwg
MTBdLAotICAgIFtbMSwyLDMsNCw1XSwgWzIsMyw0LDVdLCAtNCwgMTBdLAotXTsKLQotZnVuY3Rp
b24gcnVuVGVzdDEoYSwgYikgewotICAgIHJldHVybiBhLnNsaWNlKGIpOwotfQotbm9JbmxpbmUo
cnVuVGVzdDEpOwotCi1mdW5jdGlvbiBydW5UZXN0MihhLCBiLCBjKSB7Ci0gICAgcmV0dXJuIGEu
c2xpY2UoYiwgYyk7Ci19Ci1ub0lubGluZShydW5UZXN0Mik7Ci0KLWZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgewotICAgIGZvciAobGV0IFtpbnB1dCwgb3V0cHV0LCAuLi5hcmdzXSBv
ZiB0ZXN0cykgewotICAgICAgICBhc3NlcnQoYXJncy5sZW5ndGggPT09IDEgfHwgYXJncy5sZW5n
dGggPT09IDIpOwotICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpCi0gICAgICAgICAgICBz
aGFsbG93RXEocnVuVGVzdDEoaW5wdXQsIGFyZ3NbMF0pLCBvdXRwdXQpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzaGFsbG93RXEocnVuVGVzdDIoaW5wdXQsIGFyZ3NbMF0sIGFyZ3NbMV0p
LCBvdXRwdXQpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXNs
aWNlLWpldHRpc29uLW9uLWNvbnN0cnVjdG9yLWNoYW5nZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Fy
cmF5LXNsaWNlLWpldHRpc29uLW9uLWNvbnN0cnVjdG9yLWNoYW5nZS5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDA0OWRhOTA4NTFlNzAyNTUxN2Q3M2M2MWViNDZlMmYwYjY3ZWE2
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3Rz
L3N0cmVzcy9hcnJheS1zbGljZS1qZXR0aXNvbi1vbi1jb25zdHJ1Y3Rvci1jaGFuZ2UuanMKKysr
IC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1mdW5jdGlvbiBhc3NlcnQoYikgewotICAgIGlm
ICghYikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKQotfQotbm9JbmxpbmUoYXNzZXJ0
KTsKLQotbGV0IHNob3VsZEJlTmV3Q29uc3RydWN0b3IgPSBmYWxzZTsKLWNvbnN0IG5ld0NvbnN0
cnVjdG9yID0ge307Ci0KLWZ1bmN0aW9uIHNoYWxsb3dFcShhLCBiKSB7Ci0gICAgYXNzZXJ0KGEu
bGVuZ3RoID09PSBiLmxlbmd0aCk7Ci0gICAgaWYgKHNob3VsZEJlTmV3Q29uc3RydWN0b3IpCi0g
ICAgICAgIGFzc2VydChiLmNvbnN0cnVjdG9yID09PSBuZXdDb25zdHJ1Y3Rvcik7Ci0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQotICAgICAgICBhc3NlcnQoYVtpXSA9PT0g
YltpXSk7Ci19Ci1ub0lubGluZShzaGFsbG93RXEpOwotCi1sZXQgdGVzdHMgPSBbCi0gICAgW1sx
LDIsMyw0LDVdLCBbMSwyLDMsNCw1XSwgMCwgNV0sCi0gICAgW1sxLDIsMyw0LDVdLCBbMSwyLDMs
NCw1XSwgMF0sCi0gICAgW1sxLDIsMyw0LDVdLCBbNF0sIC0yLCAtMV0sCi0gICAgW1sxLDIsMyw0
LDVdLCBbNV0sIC0xXSwKLSAgICBbWzEsMiwzLDQsNV0sIFs1XSwgLTEsIDVdLAotICAgIFtbMSwy
LDMsNCw1XSwgW10sIC0xMCwgLTIwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFtdLCAtMjAsIC0xMF0s
Ci0gICAgW1sxLDIsMyw0LDVdLCBbXSwgNiwgNF0sCi0gICAgW1sxLDIsMyw0LDVdLCBbXSwgMywg
Ml0sCi0gICAgW1sxLDIsMyw0LDVdLCBbNCw1XSwgMywgMTBdLAotICAgIFtbMSwyLDMsNCw1XSwg
WzMsNCw1XSwgMiwgMTBdLAotICAgIFtbMSwyLDMsNCw1XSwgWzEsMiwzLDQsNV0sIC0xMCwgMTBd
LAotICAgIFtbMSwyLDMsNCw1XSwgWzEsMiwzLDQsNV0sIC01LCAxMF0sCi0gICAgW1sxLDIsMyw0
LDVdLCBbMiwzLDQsNV0sIC00LCAxMF0sCi1dOwotCi1mdW5jdGlvbiBydW5UZXN0MShhLCBiKSB7
Ci0gICAgbGV0IHJlc3VsdCA9IGEuc2xpY2UoYik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW5v
SW5saW5lKHJ1blRlc3QxKTsKLQotZnVuY3Rpb24gcnVuVGVzdDIoYSwgYiwgYykgewotICAgIGxl
dCByZXN1bHQgPSBhLnNsaWNlKGIsIGMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1ub0lubGlu
ZShydW5UZXN0Mik7Ci0KLWZ1bmN0aW9uIGFkZFJhbmRvbVByb3BlcnRpZXMoaW5wdXQpIHsKLSAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBpbnB1dFsicHJvcCIgKyBp
ICsgKChNYXRoLnJhbmRvbSgpICogMTAwMDAwKSB8IDApXSA9IGk7Ci0gICAgfQotfQotbm9Jbmxp
bmUoYWRkUmFuZG9tUHJvcGVydGllcyk7Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewotICAgICAgICBmb3IgKGxldCBbaW5wdXQs
IG91dHB1dCwgLi4uYXJnc10gb2YgdGVzdHMpIHsKLSAgICAgICAgICAgIGFkZFJhbmRvbVByb3Bl
cnRpZXMoaW5wdXQpOwotICAgICAgICAgICAgYXNzZXJ0KGFyZ3MubGVuZ3RoID09PSAxIHx8IGFy
Z3MubGVuZ3RoID09PSAyKTsKLSAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkKLSAg
ICAgICAgICAgICAgICBzaGFsbG93RXEocnVuVGVzdDEoaW5wdXQsIGFyZ3NbMF0pLCBvdXRwdXQp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNoYWxsb3dFcShydW5UZXN0Mihp
bnB1dCwgYXJnc1swXSwgYXJnc1sxXSksIG91dHB1dCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXJ1blRlc3RzKCk7Ci0KLUFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG5ld0NvbnN0cnVj
dG9yOwotc2hvdWxkQmVOZXdDb25zdHJ1Y3RvciA9IHRydWU7Ci1ydW5UZXN0cygpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktc2xpY2Utb3NyLWV4aXQtMi5qcyBiL0pTVGVzdHMv
c3RyZXNzL2FycmF5LXNsaWNlLW9zci1leGl0LTIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJkYjA3Y2VjM2Q3NjYxMjIxNWViOTY5YmM3ZmNkOGQyMjI3NzI5MjcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYXJy
YXktc2xpY2Utb3NyLWV4aXQtMi5qcworKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLWZ1
bmN0aW9uIGFzc2VydChiKSB7Ci0gICAgaWYgKCFiKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkJhZCIpCi19Ci1ub0lubGluZShhc3NlcnQpOwotCi1jbGFzcyBGb28gZXh0ZW5kcyBBcnJheSB7
Ci0gICAgY29uc3RydWN0b3IoLi4uYXJncykgewotICAgICAgICBzdXBlciguLi5hcmdzKTsKLSAg
ICB9Ci19OwotZnVuY3Rpb24gc2hhbGxvd0VxKGEsIGIpIHsKLSAgICBhc3NlcnQoYS5sZW5ndGgg
PT09IGIubGVuZ3RoKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCi0g
ICAgICAgIGFzc2VydChhW2ldID09PSBiW2ldKTsKLX0KLW5vSW5saW5lKHNoYWxsb3dFcSk7Ci0K
LWxldCB0ZXN0cyA9IFsKLSAgICBbWzEsMiwzLDQsNV0sIFsxLDIsMyw0LDVdLCAwLCA1XSwKLSAg
ICBbWzEsMiwzLDQsNV0sIFsxLDIsMyw0LDVdLCAwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFs0XSwg
LTIsIC0xXSwKLSAgICBbWzEsMiwzLDQsNV0sIFs1XSwgLTFdLAotICAgIFtbMSwyLDMsNCw1XSwg
WzVdLCAtMSwgNV0sCi0gICAgW1sxLDIsMyw0LDVdLCBbXSwgLTEwLCAtMjBdLAotICAgIFtbMSwy
LDMsNCw1XSwgW10sIC0yMCwgLTEwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFtdLCA2LCA0XSwKLSAg
ICBbWzEsMiwzLDQsNV0sIFtdLCAzLCAyXSwKLSAgICBbWzEsMiwzLDQsNV0sIFs0LDVdLCAzLCAx
MF0sCi0gICAgW1sxLDIsMyw0LDVdLCBbMyw0LDVdLCAyLCAxMF0sCi0gICAgW1sxLDIsMyw0LDVd
LCBbMSwyLDMsNCw1XSwgLTEwLCAxMF0sCi0gICAgW1sxLDIsMyw0LDVdLCBbMSwyLDMsNCw1XSwg
LTUsIDEwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFsyLDMsNCw1XSwgLTQsIDEwXSwKLV07Ci0KLWZ1
bmN0aW9uIHJ1blRlc3QxKGEsIGIpIHsKLSAgICBsZXQgcmVzdWx0ID0gYS5zbGljZShiKTsKLSAg
ICBhc3NlcnQoYSBpbnN0YW5jZW9mIEZvbyA9PT0gcmVzdWx0IGluc3RhbmNlb2YgRm9vKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotbm9JbmxpbmUocnVuVGVzdDEpOwotCi1mdW5jdGlvbiBydW5U
ZXN0MihhLCBiLCBjKSB7Ci0gICAgbGV0IHJlc3VsdCA9IGEuc2xpY2UoYiwgYyk7Ci0gICAgYXNz
ZXJ0KGEgaW5zdGFuY2VvZiBGb28gPT09IHJlc3VsdCBpbnN0YW5jZW9mIEZvbyk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLW5vSW5saW5lKHJ1blRlc3QyKTsKLQotZnVuY3Rpb24gYWRkUmFuZG9t
UHJvcGVydGllcyhpbnB1dCkgewotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0g
ICAgICAgIGlucHV0WyJwcm9wIiArIGkgKyAoKE1hdGgucmFuZG9tKCkgKiAxMDAwMDApIHwgMCld
ID0gaTsKLSAgICB9Ci19Ci1ub0lubGluZShhZGRSYW5kb21Qcm9wZXJ0aWVzKTsKLQotZnVuY3Rp
b24gcnVuVGVzdHMoKSB7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0g
ICAgICAgIGZvciAobGV0IFtpbnB1dCwgb3V0cHV0LCAuLi5hcmdzXSBvZiB0ZXN0cykgewotICAg
ICAgICAgICAgYWRkUmFuZG9tUHJvcGVydGllcyhpbnB1dCk7Ci0gICAgICAgICAgICBhc3NlcnQo
YXJncy5sZW5ndGggPT09IDEgfHwgYXJncy5sZW5ndGggPT09IDIpOwotICAgICAgICAgICAgaWYg
KGFyZ3MubGVuZ3RoID09PSAxKQotICAgICAgICAgICAgICAgIHNoYWxsb3dFcShydW5UZXN0MShp
bnB1dCwgYXJnc1swXSksIG91dHB1dCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgc2hhbGxvd0VxKHJ1blRlc3QyKGlucHV0LCBhcmdzWzBdLCBhcmdzWzFdKSwgb3V0cHV0KTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotcnVuVGVzdHMoKTsKLQotdGVzdHMucHVzaChbbmV3IEZv
bygxLDIsMyw0LDUpLCBbMSwyLDMsNCw1XSwgLTEwLCAxMF0pOwotdGVzdHMucHVzaChbbmV3IEZv
bygxLDIsMyw0LDUpLCBbMSwyLDMsNCw1XSwgLTUsIDEwXSk7Ci10ZXN0cy5wdXNoKFtuZXcgRm9v
KDEsMiwzLDQsNSksIFsyLDMsNCw1XSwgLTQsIDEwXSk7Ci10ZXN0cy5wdXNoKFtuZXcgRm9vKDEs
MiwzLDQsNSksIFsyLDMsNCw1XSwgLTRdKTsKLXJ1blRlc3RzKCk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9hcnJheS1zbGljZS1vc3ItZXhpdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5
LXNsaWNlLW9zci1leGl0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2VkMmJi
NDlmMTcxMzIxN2NiZTBkYzhlNjhiZDhhNTBkZDk1NzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXNsaWNlLW9zci1l
eGl0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIikKLX0KLW5vSW5s
aW5lKGFzc2VydCk7Ci0KLWNsYXNzIEZvbyBleHRlbmRzIEFycmF5IHsKLSAgICBjb25zdHJ1Y3Rv
ciguLi5hcmdzKSB7Ci0gICAgICAgIHN1cGVyKC4uLmFyZ3MpOwotICAgIH0KLX07Ci1mdW5jdGlv
biBzaGFsbG93RXEoYSwgYikgewotICAgIGFzc2VydChhLmxlbmd0aCA9PT0gYi5sZW5ndGgpOwot
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKLSAgICAgICAgYXNzZXJ0KGFb
aV0gPT09IGJbaV0pOwotfQotbm9JbmxpbmUoc2hhbGxvd0VxKTsKLQotbGV0IHRlc3RzID0gWwot
ICAgIFtbMSwyLDMsNCw1XSwgWzEsMiwzLDQsNV0sIDAsIDVdLAotICAgIFtbMSwyLDMsNCw1XSwg
WzEsMiwzLDQsNV0sIDBdLAotICAgIFtbMSwyLDMsNCw1XSwgWzRdLCAtMiwgLTFdLAotICAgIFtb
MSwyLDMsNCw1XSwgWzVdLCAtMV0sCi0gICAgW1sxLDIsMyw0LDVdLCBbNV0sIC0xLCA1XSwKLSAg
ICBbWzEsMiwzLDQsNV0sIFtdLCAtMTAsIC0yMF0sCi0gICAgW1sxLDIsMyw0LDVdLCBbXSwgLTIw
LCAtMTBdLAotICAgIFtbMSwyLDMsNCw1XSwgW10sIDYsIDRdLAotICAgIFtbMSwyLDMsNCw1XSwg
W10sIDMsIDJdLAotICAgIFtbMSwyLDMsNCw1XSwgWzQsNV0sIDMsIDEwXSwKLSAgICBbWzEsMiwz
LDQsNV0sIFszLDQsNV0sIDIsIDEwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFsxLDIsMyw0LDVdLCAt
MTAsIDEwXSwKLSAgICBbWzEsMiwzLDQsNV0sIFsxLDIsMyw0LDVdLCAtNSwgMTBdLAotICAgIFtb
MSwyLDMsNCw1XSwgWzIsMyw0LDVdLCAtNCwgMTBdLAotXTsKLXRlc3RzLnB1c2goW25ldyBGb28o
MSwyLDMsNCw1KSwgWzEsMiwzLDQsNV0sIC0xMCwgMTBdKTsKLXRlc3RzLnB1c2goW25ldyBGb28o
MSwyLDMsNCw1KSwgWzEsMiwzLDQsNV0sIC01LCAxMF0pOwotdGVzdHMucHVzaChbbmV3IEZvbygx
LDIsMyw0LDUpLCBbMiwzLDQsNV0sIC00LCAxMF0pOwotdGVzdHMucHVzaChbbmV3IEZvbygxLDIs
Myw0LDUpLCBbMiwzLDQsNV0sIC00XSk7Ci0KLWZ1bmN0aW9uIHJ1blRlc3QxKGEsIGIpIHsKLSAg
ICBsZXQgcmVzdWx0ID0gYS5zbGljZShiKTsKLSAgICBhc3NlcnQoYSBpbnN0YW5jZW9mIEZvbyA9
PT0gcmVzdWx0IGluc3RhbmNlb2YgRm9vKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotbm9Jbmxp
bmUocnVuVGVzdDEpOwotCi1mdW5jdGlvbiBydW5UZXN0MihhLCBiLCBjKSB7Ci0gICAgbGV0IHJl
c3VsdCA9IGEuc2xpY2UoYiwgYyk7Ci0gICAgYXNzZXJ0KGEgaW5zdGFuY2VvZiBGb28gPT09IHJl
c3VsdCBpbnN0YW5jZW9mIEZvbyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW5vSW5saW5lKHJ1
blRlc3QyKTsKLQotZnVuY3Rpb24gYWRkUmFuZG9tUHJvcGVydGllcyhpbnB1dCkgewotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGlucHV0WyJwcm9wIiArIGkgKyAo
KE1hdGgucmFuZG9tKCkgKiAxMDAwMDApIHwgMCldID0gaTsKLSAgICB9Ci19Ci1ub0lubGluZShh
ZGRSYW5kb21Qcm9wZXJ0aWVzKTsKLQotZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgICAgIGZvciAobGV0IFtpbnB1dCwgb3V0
cHV0LCAuLi5hcmdzXSBvZiB0ZXN0cykgewotICAgICAgICAgICAgYWRkUmFuZG9tUHJvcGVydGll
cyhpbnB1dCk7Ci0gICAgICAgICAgICBhc3NlcnQoYXJncy5sZW5ndGggPT09IDEgfHwgYXJncy5s
ZW5ndGggPT09IDIpOwotICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKQotICAgICAg
ICAgICAgICAgIHNoYWxsb3dFcShydW5UZXN0MShpbnB1dCwgYXJnc1swXSksIG91dHB1dCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2hhbGxvd0VxKHJ1blRlc3QyKGlucHV0
LCBhcmdzWzBdLCBhcmdzWzFdKSwgb3V0cHV0KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotcnVu
VGVzdHMoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>