<?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>121981</bug_id>
          
          <creation_ts>2013-09-26 14:22:22 -0700</creation_ts>
          <short_desc>REGRESSION(r156464): Leaking too much and killi ng buildbot. (Requested by xenon on #webkit).</short_desc>
          <delta_ts>2013-09-26 14:25:47 -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>New Bugs</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>
          
          <blocked>121930</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933699</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 14:22:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/156464 broke the build:
Leaking too much and killing buildbot. (Requested by xenon 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>933701</commentid>
    <comment_count>1</comment_count>
      <attachid>212747</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 14:22:47 -0700</bug_when>
    <thetext>Created attachment 212747
ROLLOUT of r156464

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>933703</commentid>
    <comment_count>2</comment_count>
      <attachid>212747</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 14:25:45 -0700</bug_when>
    <thetext>Comment on attachment 212747
ROLLOUT of r156464

Clearing flags on attachment: 212747

Committed r156497: &lt;http://trac.webkit.org/changeset/156497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933704</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 14:25:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212747</attachid>
            <date>2013-09-26 14:22:47 -0700</date>
            <delta_ts>2013-09-26 14:25:45 -0700</delta_ts>
            <desc>ROLLOUT of r156464</desc>
            <filename>bug-121981-20130926142246.patch</filename>
            <type>text/plain</type>
            <size>88643</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NjM0YjlmZWQ4NDdmMzEzN2Q5ZDUxNGQwNDY1NzA1ZmJmYmY5ZjUwLi5kNzI2ZjI3NDAzNDAxZjMw
N2I4NTkzMzYyMzUzMDVkYThjNjIxMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxMy0wOS0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1NjQ2NCBhbmQgcjE1
NjQ4MC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTU2NDY0Cisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NjQ4MAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTgxCisKKyAgICAgICAg
TGVha2luZyB0b28gbXVjaCBhbmQga2lsbGkcbmcgYnVpbGRib3QuIChSZXF1ZXN0ZWQgYnkgeGVu
b24gb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpw
YXJhbVN0cmluZyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphZGRWYXIpOgorICAg
ICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkNvbW1hTm9k
ZTo6Q29tbWFOb2RlKToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9k
ZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6Rm9ySW5Ob2RlKToKKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjphcHBl
bmQpOgorICAgICAgICAoSlNDOjpQYXJhbWV0ZXJOb2RlOjppZGVudCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUGFyYW1ldGVyczo6YXQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRl
cnM6OmlkZW50aWZpZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb24pOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZUZvclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGb3JtYWxQYXJhbWV0
ZXJzKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1l
dGVyKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKKwogMjAxMy0wOS0yNiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggdGhl
IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAwNDYwNTcyZWVlZDIwMWVkZjU4MTgxYTEwMzQy
YjQ0ZWZhOTQxOTYwLi5mNGU2M2Q2YmZhMmI3ZWY2YmY2MjA1NzJkZWJiMTNjOTIzOWYzZDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBTdHJpbmcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKICAgICBmb3IgKHNpemVfdCBwb3MgPSAwOyBwb3Mg
PCBwYXJhbWV0ZXJzLnNpemUoKTsgKytwb3MpIHsKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAg
cGFyYW1ldGVycy5hdChwb3MpLT50b1N0cmluZyhidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQocGFyYW1ldGVycy5hdChwb3MpLnN0cmluZygpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZGI5NmE2YzU0ZTJlNDc0
ZmQ2MDc3NWNkMWYxMWMyZTFmYzlmN2JhNS4uZWU1ZmU1MjVjMTNiMDA1NTBlZWQyMTNiODYxYjMx
YjFjNzM0ZjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3Jh
bU5vZGUsIFVubGlua2VkUAogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFy
U3RhY2suc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvZGVCbG9jay0+YWRkVmFyaWFibGVEZWNsYXJh
dGlvbih2YXJTdGFja1tpXS5maXJzdCwgISEodmFyU3RhY2tbaV0uc2Vjb25kICYgRGVjbGFyYXRp
b25TdGFja3M6OklzQ29uc3RhbnQpKTsKKyAgICAgICAgY29kZUJsb2NrLT5hZGRWYXJpYWJsZURl
Y2xhcmF0aW9uKCp2YXJTdGFja1tpXS5maXJzdCwgISEodmFyU3RhY2tbaV0uc2Vjb25kICYgRGVj
bGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpKTsKIAogfQogCkBAIC0yMTUsMTUgKzIxNSw2IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9k
eU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1
bGxTY29wZUNoYWluKHRydWUpOwogCiAgICAgbV9zeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmlj
dEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KTsKLSAgICBWZWN0b3I8SWRlbnRpZmllcj4gYm91bmRQYXJhbWV0ZXJQcm9wZXJ0aWVzOwotICAg
IEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycyA9ICpmdW5jdGlvbkJvZHktPnBhcmFtZXRl
cnMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKTsKLSAgICAgICAgaWYg
KHBhdHRlcm4tPmlzQmluZGluZ05vZGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBwYXR0ZXJuLT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlclByb3BlcnRp
ZXMpOwotICAgICAgICBjb250aW51ZTsKLSAgICB9CiAgICAgbV9zeW1ib2xUYWJsZS0+c2V0UGFy
YW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzKGZ1bmN0aW9uQm9keS0+cGFyYW1ldGVycygpLT5zaXpl
KCkgKyAxKTsKIAogICAgIGVtaXRPcGNvZGUob3BfZW50ZXIpOwpAQCAtMjYzLDExICsyNTQsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJv
ZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAgICBjYXB0dXJlZEFyZ3VtZW50cy5yZXNp
emUocGFyYW1ldGVycy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzW2ld
ID0gMDsKLSAgICAgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSk7Ci0gICAg
ICAgICAgICBpZiAoIXBhdHRlcm4tPmlzQmluZGluZ05vZGUoKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQmluZGluZ05vZGUqPihwYXR0ZXJuKS0+Ym91bmRQcm9wZXJ0eSgpOwotICAgICAg
ICAgICAgaWYgKCFmdW5jdGlvbkJvZHktPmNhcHR1cmVzKGlkZW50KSAmJiAhc2hvdWxkQ2FwdHVy
ZUFsbFRoZVRoaW5ncykKKyAgICAgICAgICAgIGlmICghZnVuY3Rpb25Cb2R5LT5jYXB0dXJlcyhw
YXJhbWV0ZXJzLmF0KGkpKSAmJiAhc2hvdWxkQ2FwdHVyZUFsbFRoZVRoaW5ncykKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGNhcHR1cmVzQW55QXJndW1lbnRCeU5hbWUg
PSB0cnVlOwogICAgICAgICAgICAgY2FwdHVyZWRBcmd1bWVudHNbaV0gPSBhZGRWYXIoKTsKQEAg
LTMxMiw3ICsyOTksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFyU3RhY2suc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdmFyU3RhY2tb
aV0uZmlyc3Q7CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9ICp2YXJTdGFj
a1tpXS5maXJzdDsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbkJvZHktPmNhcHR1cmVzKGlkZW50
KSkKICAgICAgICAgICAgICAgICBhZGRWYXIoaWRlbnQsIHZhclN0YWNrW2ldLnNlY29uZCAmIERl
Y2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KTsKICAgICAgICAgfQpAQCAtMzQ1LDcgKzMzMiw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Qm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAgICAgfQogICAgIG1fbGFzdExhenlGdW5jdGlv
biA9IGNhbkxhemlseUNyZWF0ZUZ1bmN0aW9ucyA/IGNvZGVCbG9jay0+bV9udW1WYXJzIDogbV9m
aXJzdExhenlGdW5jdGlvbjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhclN0YWNrLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdmFyU3RhY2tb
aV0uZmlyc3Q7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gKnZhclN0YWNrW2ld
LmZpcnN0OwogICAgICAgICBpZiAoIWZ1bmN0aW9uQm9keS0+Y2FwdHVyZXMoaWRlbnQpKQogICAg
ICAgICAgICAgYWRkVmFyKGlkZW50LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0
YWNrczo6SXNDb25zdGFudCk7CiAgICAgfQpAQCAtMzUzLDMxICszNDAsMjMgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y3Rpb25Cb2R5LCBVbmwKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUFsbFRoZVRoaW5ncykKICAgICAg
ICAgbV9zeW1ib2xUYWJsZS0+c2V0Q2FwdHVyZUVuZChsb2NhbFRvT3BlcmFuZChjb2RlQmxvY2st
Pm1fbnVtVmFycykpOwogCisgICAgRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzID0gKmZ1
bmN0aW9uQm9keS0+cGFyYW1ldGVycygpOwogICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRl
cnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgogCiAgICAgLy8gQWRk
ICJ0aGlzIiBhcyBhIHBhcmFtZXRlcgogICAgIGludCBuZXh0UGFyYW1ldGVySW5kZXggPSBDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpOwogICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4
KG5leHRQYXJhbWV0ZXJJbmRleCsrKTsKICAgICBtX2NvZGVCbG9jay0+YWRkUGFyYW1ldGVyKCk7
Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RlcklEKiwgY29uc3QgRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuTm9kZSo+PiBkZWNvbnN0cnVjdGVkUGFyYW1ldGVyczsKKyAgICAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2ksICsrbmV4dFBhcmFtZXRlcklu
ZGV4KSB7CiAgICAgICAgIGludCBpbmRleCA9IG5leHRQYXJhbWV0ZXJJbmRleDsKLSAgICAgICAg
YXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKTsKLSAgICAgICAgaWYgKCFwYXR0ZXJuLT5p
c0JpbmRpbmdOb2RlKCkpIHsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRQYXJhbWV0ZXIo
KTsKLSAgICAgICAgICAgIFJlZ2lzdGVySUQmIHBhcmFtZXRlciA9IHJlZ2lzdGVyRm9yKGluZGV4
KTsKLSAgICAgICAgICAgIHBhcmFtZXRlci5zZXRJbmRleChpbmRleCk7Ci0gICAgICAgICAgICBk
ZWNvbnN0cnVjdGVkUGFyYW1ldGVycy5hcHBlbmQobWFrZV9wYWlyKCZwYXJhbWV0ZXIsIHBhdHRl
cm4pKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gc2lt
cGxlUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmluZGluZ05vZGUqPihwYXR0ZXJuKTsK
ICAgICAgICAgaWYgKGNhcHR1cmVkQXJndW1lbnRzLnNpemUoKSAmJiBjYXB0dXJlZEFyZ3VtZW50
c1tpXSkgewotICAgICAgICAgICAgQVNTRVJUKChmdW5jdGlvbkJvZHktPmhhc0NhcHR1cmVkVmFy
aWFibGVzKCkgJiYgZnVuY3Rpb25Cb2R5LT5jYXB0dXJlcyhzaW1wbGVQYXJhbWV0ZXItPmJvdW5k
UHJvcGVydHkoKSkpIHx8IHNob3VsZENhcHR1cmVBbGxUaGVUaGluZ3MpOworICAgICAgICAgICAg
QVNTRVJUKChmdW5jdGlvbkJvZHktPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkgJiYgZnVuY3Rpb25C
b2R5LT5jYXB0dXJlcyhwYXJhbWV0ZXJzLmF0KGkpKSkgfHwgc2hvdWxkQ2FwdHVyZUFsbFRoZVRo
aW5ncyk7CiAgICAgICAgICAgICBpbmRleCA9IGNhcHR1cmVkQXJndW1lbnRzW2ldLT5pbmRleCgp
OwogICAgICAgICAgICAgUmVnaXN0ZXJJRCBvcmlnaW5hbChuZXh0UGFyYW1ldGVySW5kZXgpOwog
ICAgICAgICAgICAgZW1pdE1vdmUoY2FwdHVyZWRBcmd1bWVudHNbaV0sICZvcmlnaW5hbCk7CiAg
ICAgICAgIH0KLSAgICAgICAgYWRkUGFyYW1ldGVyKHNpbXBsZVBhcmFtZXRlci0+Ym91bmRQcm9w
ZXJ0eSgpLCBpbmRleCk7CisgICAgICAgIGFkZFBhcmFtZXRlcihwYXJhbWV0ZXJzLmF0KGkpLCBp
bmRleCk7CiAgICAgfQogICAgIHByZXNlcnZlTGFzdFZhcigpOwogCkBAIC0zOTEsMTAgKzM3MCw2
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Qm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CiAgICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVjb25zdHJ1Y3RlZFBhcmFt
ZXRlcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgYXV0byYgZW50cnkgPSBkZWNvbnN0cnVjdGVk
UGFyYW1ldGVyc1tpXTsKLSAgICAgICAgZW50cnkuc2Vjb25kLT5lbWl0Qnl0ZWNvZGUoKnRoaXMs
IGVudHJ5LmZpcnN0KTsKLSAgICB9CiB9CiAKIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUpCkBAIC00MzksMTAgKzQxNCw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzID0gdmFyU3RhY2suc2l6ZSgpOwogICAgIFZlY3RvcjxJ
ZGVudGlmaWVyLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gdmFyaWFibGVzOwogICAgIHZhcmlh
Ymxlcy5yZXNlcnZlQ2FwYWNpdHkobnVtVmFyaWFibGVzKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCh2YXJTdGFja1tpXS5m
aXJzdC5pbXBsKCktPmlzSWRlbnRpZmllcigpKTsKLSAgICAgICAgdmFyaWFibGVzLmFwcGVuZCh2
YXJTdGFja1tpXS5maXJzdCk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
VmFyaWFibGVzOyArK2kpCisgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQoKnZhclN0YWNrW2ldLmZp
cnN0KTsKICAgICBjb2RlQmxvY2stPmFkb3B0VmFyaWFibGVzKHZhcmlhYmxlcyk7CiAgICAgcHJl
c2VydmVMYXN0VmFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMWQxMzhjMGI0NGMwOTVlYjY0MGUw
NmZlNzc2YmViODBmYTA2NmJmOC4uZTVjMTQ3MTE0OWU4ODdmMGUyNWRiMTliNTFiZDUzNjNhYzk4
NzliOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjg2LDEwICsyODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBsaW5lU3RhcnQgLT0gc291cmNlT2Zmc2V0OwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGxpbmVTdGFydCA9IDA7Ci0KLSAgICAgICAgICAgIGlmIChk
aXZvdE9mZnNldCA8IGxpbmVTdGFydCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KKyAgICAg
ICAgICAgIEFTU0VSVChkaXZvdE9mZnNldCA+PSBsaW5lU3RhcnQpOwogICAgICAgICAgICAgdW5z
aWduZWQgY29sdW1uID0gZGl2b3RPZmZzZXQgLSBsaW5lU3RhcnQ7CiAKICAgICAgICAgICAgIHVu
c2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IGU4NWZlYzVmMGE0NzU0MzY3OWRlZTNmY2EyMDcxYWY1MjQ4ZjY0YzQuLjYzM2IyOTZjYmI2
MTMxNTA2NGFhOWQyMjk4MTliYmE3NTFjMDI1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM1LDcgKzM1LDYgQEAK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU05hbWVTY29wZS5oIgotI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRl
ICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCkBAIC0xNzE0LDcgKzE3MTMsOCBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5v
ZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLCBpZGVudCwgcHJvcGVydHlOYW1lKTsKLSAgICB9IGVsc2Ug
aWYgKG1fbGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKG1fbGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKTsKICAgICAgICAg
QnJhY2tldEFjY2Vzc29yTm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nl
c3Nvck5vZGUqPihtX2xleHByKTsKICAgICAgICAgcHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdGVjdCA9IHByb3Bl
cnR5TmFtZTsKQEAgLTE3MjMsMTMgKzE3MjMsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAg
ICAgCiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2
b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBzdWJzY3JpcHQsIHBy
b3BlcnR5TmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fbGV4cHItPmlzRGVj
b25zdHJ1Y3Rpb25Ob2RlKCkpOwotICAgICAgICBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2Rl
KiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8RGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZSo+
KG1fbGV4cHIpOwotICAgICAgICBwcm9wZXJ0eU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90ZWN0KHByb3BlcnR5TmFtZSk7Ci0g
ICAgICAgIGFzc2lnbk5vZGUtPmJpbmRpbmdzKCktPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIHBy
b3BlcnR5TmFtZSk7Ci0gICAgfQorICAgIH0gICAKIAogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShk
c3QsIG1fc3RhdGVtZW50KTsKIApAQCAtMjE4NSwxNTcgKzIxNzksNSBAQCBSZWdpc3RlcklEKiBG
dW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKgogewogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB0aGlzKTsKIH0KLSAgICAKLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnRO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tCi1SZWdpc3RlcklEKiBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQotewotICAgIGlmIChSZWdpc3RlcklEKiByZXN1bHQgPSBtX2JpbmRpbmdzLT5l
bWl0RGlyZWN0QmluZGluZyhnZW5lcmF0b3IsIGRzdCwgbV9pbml0aWFsaXplcikpCi0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluaXRpYWxpemVyID0gZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShpbml0
aWFsaXplci5nZXQoKSwgbV9pbml0aWFsaXplcik7Ci0gICAgbV9iaW5kaW5ncy0+ZW1pdEJ5dGVj
b2RlKGdlbmVyYXRvciwgaW5pdGlhbGl6ZXIuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
bW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGluaXRpYWxpemVyLmdldCgpKTsKLX0KLQot
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6fkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGUoKQot
ewotfQotICAgIAotdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKSBjb25zdAotewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewotICAgICAg
ICBhdXRvIHRhcmdldCA9IG1fdGFyZ2V0UGF0dGVybnNbaV07Ci0gICAgICAgIGlmICghdGFyZ2V0
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1w
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQo
dGVtcC5nZXQoKSwganNOdW1iZXIoaSkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFs
KHRlbXAuZ2V0KCksIHJocywgdGVtcC5nZXQoKSk7Ci0gICAgICAgIHRhcmdldC0+ZW1pdEJ5dGVj
b2RlKGdlbmVyYXRvciwgdGVtcC5nZXQoKSk7Ci0gICAgfQotfQotCi1SZWdpc3RlcklEKiBBcnJh
eVBhdHRlcm5Ob2RlOjplbWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKiByaHMpCi17Ci0gICAgaWYgKHJo
cy0+aXNSZXNvbHZlTm9kZSgpCi0gICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJn
dW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4ocmhzKS0+aWRlbnRpZmllcigpKQotICAg
ICAgICAmJiAhZ2VuZXJhdG9yLnN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykg
ewotICAgICAgICAgICAgYXV0byB0YXJnZXQgPSBtX3RhcmdldFBhdHRlcm5zW2ldOwotICAgICAg
ICAgICAgaWYgKCF0YXJnZXQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKHRlbXAuZ2V0KCksIGpz
TnVtYmVyKGkpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QXJndW1lbnRCeVZhbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0
ZXJGb3JBcmd1bWVudHMoKSwgdGVtcC5nZXQoKSk7Ci0gICAgICAgICAgICB0YXJnZXQtPmVtaXRC
eXRlY29kZShnZW5lcmF0b3IsIHRlbXAuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlm
ICghcmhzLT5pc1NpbXBsZUFycmF5KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEVsZW1lbnRO
b2RlKiBlbGVtZW50Tm9kZXMgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihyaHMpLT5lbGVtZW50
cygpOwotICAgIFZlY3RvcjxFeHByZXNzaW9uTm9kZSo+IGVsZW1lbnRzOwotICAgIGZvciAoOyBl
bGVtZW50Tm9kZXM7IGVsZW1lbnROb2RlcyA9IGVsZW1lbnROb2Rlcy0+bmV4dCgpKQotICAgICAg
ICBlbGVtZW50cy5hcHBlbmQoZWxlbWVudE5vZGVzLT52YWx1ZSgpKTsKLSAgICBpZiAobV90YXJn
ZXRQYXR0ZXJucy5zaXplKCkgIT0gZWxlbWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsK
LSAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+PiByZWdpc3RlcnM7Ci0gICAgcmVnaXN0ZXJz
LnJlc2VydmVDYXBhY2l0eShtX3RhcmdldFBhdHRlcm5zLnNpemUoKSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHJl
Z2lzdGVycy51bmNoZWNrZWRBcHBlbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKHJlZ2lzdGVycy5sYXN0KCkuZ2V0KCksIGVsZW1lbnRzW2ld
KTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRl
cm5zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChtX3RhcmdldFBhdHRlcm5zW2ldKQotICAg
ICAgICAgICAgbV90YXJnZXRQYXR0ZXJuc1tpXS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgcmVn
aXN0ZXJzW2ldLmdldCgpKTsKLSAgICB9Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0TG9hZChyZXN1bHQuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwotfQotCi12b2lkIEFycmF5UGF0
dGVybk5vZGU6OnRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0Ci17Ci0gICAg
YnVpbGRlci5hcHBlbmQoJ1snKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0
UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKCFtX3RhcmdldFBhdHRlcm5zW2ld
KSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV90YXJnZXRQYXR0ZXJuc1tpXS0+dG9TdHJpbmcoYnVp
bGRlcik7Ci0gICAgICAgIGlmIChpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCkgLSAxKQotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmQo
J10nKTsKLX0KLQotdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpjb2xsZWN0Qm91bmRJZGVudGlmaWVy
cyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBjb25zdAotewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewotICAgICAgICBp
ZiAoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogbm9kZSA9IG1fdGFyZ2V0UGF0dGVybnNbaV0u
Z2V0KCkpCi0gICAgICAgICAgICBub2RlLT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhpZGVudGlm
aWVycyk7Ci0gICAgfQotfQotCi12b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJp
bmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAotewotICAgIGJ1aWxkZXIuYXBwZW5kKCd7Jyk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIGlmIChtX3RhcmdldFBhdHRlcm5zW2ldLndhc1N0cmluZykgewotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgICAgIGVzY2FwZVN0cmluZ1RvQnVpbGRl
cihidWlsZGVyLCBtX3RhcmdldFBhdHRlcm5zW2ldLnByb3BlcnR5TmFtZS5zdHJpbmcoKSk7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fdGFyZ2V0UGF0dGVybnNbaV0ucHJvcGVydHlOYW1lLnN0cmlu
ZygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKLSAgICAgICAgbV90YXJnZXRQYXR0
ZXJuc1tpXS5wYXR0ZXJuLT50b1N0cmluZyhidWlsZGVyKTsKLSAgICAgICAgaWYgKGkgPCBtX3Rh
cmdldFBhdHRlcm5zLnNpemUoKSAtIDEpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcp
OwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZCgnfScpOwotfQotICAgIAotdm9pZCBPYmplY3RQ
YXR0ZXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIHJocykgY29uc3QKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFy
Z2V0UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgYXV0byYgdGFyZ2V0ID0gbV90YXJn
ZXRQYXR0ZXJuc1tpXTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh0ZW1wLmdl
dCgpLCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOwotICAgICAgICB0YXJnZXQucGF0dGVybi0+
ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgdGVtcC5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIE9i
amVjdFBhdHRlcm5Ob2RlOjpjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmll
cj4mIGlkZW50aWZpZXJzKSBjb25zdAotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykKLSAgICAgICAgbV90YXJnZXRQYXR0ZXJuc1tpXS5w
YXR0ZXJuLT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhpZGVudGlmaWVycyk7Ci19Ci0KLXZvaWQg
QmluZGluZ05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiB2YWx1ZSkgY29uc3QKLXsKLSAgICBpZiAoTG9jYWwgbG9jYWwgPSBnZW5lcmF0
b3IubG9jYWwobV9ib3VuZFByb3BlcnR5KSkgewotICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25s
eSgpKSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVk
ZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE1vdmUobG9jYWwuZ2V0KCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVn
aXN0ZXJJRCogc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIG1fYm91bmRQcm9wZXJ0eSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRv
ci5lbWl0UHV0VG9TY29wZShzY29wZSwgbV9ib3VuZFByb3BlcnR5LCB2YWx1ZSwgZ2VuZXJhdG9y
LmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQp
OwotICAgIHJldHVybjsKLX0KLQotdm9pZCBCaW5kaW5nTm9kZTo6dG9TdHJpbmcoU3RyaW5nQnVp
bGRlciYgYnVpbGRlcikgY29uc3QKLXsKLSAgICBidWlsZGVyLmFwcGVuZChtX2JvdW5kUHJvcGVy
dHkuc3RyaW5nKCkpOwotfQotCi12b2lkIEJpbmRpbmdOb2RlOjpjb2xsZWN0Qm91bmRJZGVudGlm
aWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBjb25zdAotewotICAgIGlkZW50
aWZpZXJzLmFwcGVuZChtX2JvdW5kUHJvcGVydHkpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYTM3Y2RjNzZh
OTlkNDgxMGYzZjFlNDQ5NmRmNzljNTdjOGM5OTBkNC4uOTVjOThkMGEzOWNmZDg1ZmZjMzI5ZmVk
M2ZiZTZlMTlhMjQ4Y2Y3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTkwLDcgKzkwLDYgQEAgcHVibGljOgogICAgICAgICBVbmFyeUV4cHJDb250ZXh0
KEFTVEJ1aWxkZXImKSB7fQogICAgIH07CiAKLQogICAgIHR5cGVkZWYgU3ludGF4Q2hlY2tlciBG
dW5jdGlvbkJvZHlCdWlsZGVyOwogCiAgICAgdHlwZWRlZiBFeHByZXNzaW9uTm9kZSogRXhwcmVz
c2lvbjsKQEAgLTEwOCwxMCArMTA3LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgQ2FzZUNsYXVz
ZU5vZGUqIENsYXVzZTsKICAgICB0eXBlZGVmIENvbnN0RGVjbE5vZGUqIENvbnN0RGVjbExpc3Q7
CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IEJp
bmFyeU9wZXJhbmQ7Ci0gICAgdHlwZWRlZiBSZWZQdHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9k
ZT4gRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuOwotICAgIHR5cGVkZWYgUmVmUHRyPEFycmF5UGF0dGVy
bk5vZGU+IEFycmF5UGF0dGVybjsKLSAgICB0eXBlZGVmIFJlZlB0cjxPYmplY3RQYXR0ZXJuTm9k
ZT4gT2JqZWN0UGF0dGVybjsKLSAgICB0eXBlZGVmIFJlZlB0cjxCaW5kaW5nTm9kZT4gQmluZGlu
Z1BhdHRlcm47CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgQ3JlYXRlc0FTVCA9IHRydWU7
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgTmVlZHNGcmVlVmFyaWFibGVJbmZvID0gdHJ1ZTsKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBDYW5Vc2VGdW5jdGlvbkNhY2hlID0gdHJ1ZTsKQEAgLTMxOCw4
ICszMTQsOCBAQCBwdWJsaWM6CiAgICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KGlu
dCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV92bSkgRWxl
bWVudE5vZGUoZWxpc2lvbnMsIGV4cHIpOyB9CiAgICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1l
bnRMaXN0KEVsZW1lbnROb2RlKiBlbGVtcywgaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyByZXR1cm4gbmV3IChtX3ZtKSBFbGVtZW50Tm9kZShlbGVtcywgZWxpc2lvbnMsIGV4
cHIpOyB9CiAKLSAgICBQYXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KERl
Y29uc3RydWN0aW9uUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fdm0pIFBhcmFtZXRl
ck5vZGUocGF0dGVybik7IH0KLSAgICBQYXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0
ZXJMaXN0KFBhcmFtZXRlck5vZGUqIGxpc3QsIERlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0ZXJu
KSB7IHJldHVybiBuZXcgKG1fdm0pIFBhcmFtZXRlck5vZGUobGlzdCwgcGF0dGVybik7IH0KKyAg
ICBQYXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSB7IHJldHVybiBuZXcgKG1fdm0pIFBhcmFtZXRlck5vZGUoaWRlbnQpOyB9Cisg
ICAgUGFyYW1ldGVyTm9kZSogY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2Rl
KiBsaXN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbmV3IChtX3ZtKSBQYXJh
bWV0ZXJOb2RlKGxpc3QsIGlkZW50KTsgfQogCiAgICAgQ2FzZUNsYXVzZU5vZGUqIGNyZWF0ZUNs
YXVzZShFeHByZXNzaW9uTm9kZSogZXhwciwgSlNDOjpTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50
cykgeyByZXR1cm4gbmV3IChtX3ZtKSBDYXNlQ2xhdXNlTm9kZShleHByLCBzdGF0ZW1lbnRzKTsg
fQogICAgIENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENhc2VDbGF1c2VOb2RlKiBj
bGF1c2UpIHsgcmV0dXJuIG5ldyAobV92bSkgQ2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsgfQpAQCAt
MzY1LDE3ICszNjEsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRlciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQs
IGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3Ao
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewot
ICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgRm9ySW5Ob2RlKGxvY2F0aW9u
LCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwg
ZW5kLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKLSAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZvdCwgZUVuZCk7
CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JJbk5vZGUobV92bSwg
bG9jYXRpb24sICppZGVudCwgaXRlciwgc3RhdGVtZW50cywgc3RhcnQpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1
bHQsIHN0YXJ0LCBkaXZvdCArIDEsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQotICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+
IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRz
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorCisg
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50
IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcg
KG1fdm0pIEZvckluTm9kZShtX3ZtLCBsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgaXRlciwgc3Rh
dGVtZW50cyk7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JJbk5v
ZGUobG9jYXRpb24sIGxocywgaXRlciwgc3RhdGVtZW50cyk7CiAgICAgICAgIHJlc3VsdC0+c2V0
TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURp
dm90LCBlRW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUxOSw4ICs1MTUsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRz
ID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAgICAgICAgQVNTRVJU
KGlkZW50LT5pbXBsKCktPmlzSWRlbnRpZmllcigpKTsKLSAgICAgICAgbV9zY29wZS5tX3ZhckRl
Y2xhcmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKmlkZW50LCBhdHRycykpOwor
ICAgICAgICBtX3Njb3BlLm1fdmFyRGVjbGFyYXRpb25zLT5kYXRhLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihpZGVudCwgYXR0cnMpKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY29tYmlu
ZUNvbW1hTm9kZXMoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGxpc3QsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQpAQCAtNjIwLDQxICs2MTUsNiBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNzaW9uTm9kZSogZXhwcikgY29uc3QgeyBy
ZXR1cm4gZXhwci0+aXNSZXNvbHZlTm9kZSgpOyB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIFBhc3NSZWZQdHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVz
c2lvbk5vZGUqIGluaXRpYWxpemVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkg
RGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgaW5p
dGlhbGl6ZXIpOwotICAgIH0KLSAgICAKLSAgICBBcnJheVBhdHRlcm4gY3JlYXRlQXJyYXlQYXR0
ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCi0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlQ
YXR0ZXJuTm9kZTo6Y3JlYXRlKG1fdm0pOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFwcGVuZEFy
cmF5UGF0dGVyblNraXBFbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KGxvY2F0aW9u
LCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVybkVudHJ5KEFycmF5UGF0
dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZWNvbnN0cnVjdGlv
blBhdHRlcm4gcGF0dGVybikKLSAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KGxvY2F0
aW9uLCBwYXR0ZXJuLmdldCgpKTsKLSAgICB9Ci0gICAgCi0gICAgT2JqZWN0UGF0dGVybiBjcmVh
dGVPYmplY3RQYXR0ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCi0gICAgewotICAgICAgICBy
ZXR1cm4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZShtX3ZtKTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJuRW50cnkoT2JqZWN0UGF0dGVybiBub2RlLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBib29sIHdhc1N0cmluZywgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRlcm4pCi0gICAgewotICAg
ICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBw
YXR0ZXJuLmdldCgpKTsKLSAgICB9Ci0gICAgCi0gICAgQmluZGluZ1BhdHRlcm4gY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGJv
dW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEJpbmRpbmdOb2RlOjpjcmVhdGUobV92bSwgYm91bmRQcm9wZXJ0eSwgZGl2b3QsIHN0
YXJ0LCBlbmQpOwotICAgIH0KLSAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNjb3BlIHsKICAg
ICAgICAgU2NvcGUoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAppbmRleCAwY2UyMGViMzVjNWZkMzQ3YWYzN2YwMzExYmY2MjJkZjU4
NmI1M2UzLi41Y2NjNzc5ODRjOWEyNjRhYjdiOTFmZTMyYzZmZWQyZjVkMmMzYTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtNjAz
LDggKzYwMyw2IEBAIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllCiAgICAgaW5saW5lIENvbW1hTm9k
ZTo6Q29tbWFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQogICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGV4cHIxKTsKLSAgICAgICAgQVNT
RVJUKGV4cHIyKTsKICAgICAgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoZXhwcjEpOwogICAgICAg
ICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7CiAgICAgfQpAQCAtNzM0LDIwICs3MzIsMTcg
QEAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWUKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBh
cmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRl
cm5Ob2RlPiBwYXR0ZXJuKQotICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQorICAgIGlubGlu
ZSBQYXJhbWV0ZXJOb2RlOjpQYXJhbWV0ZXJOb2RlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQor
ICAgICAgICA6IG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFyYW1ldGVyTm9k
ZTo6UGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiBsLCBQYXNzUmVmUHRyPERlY29uc3RydWN0
aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4pCi0gICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCisg
ICAgaW5saW5lIFBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSogbCwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDogbV9pZGVudChpZGVudCkKICAgICAg
ICAgLCBtX25leHQoMCkKICAgICB7CiAgICAgICAgIGwtPm1fbmV4dCA9IHRoaXM7Ci0gICAgICAg
IEFTU0VSVChtX3BhdHRlcm4pOwotICAgICAgICBBU1NFUlQobC0+bV9wYXR0ZXJuKTsKICAgICB9
CiAKICAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5v
ZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1l
dGVyKQpAQCAtODE3LDYxICs4MTIsMTYgQEAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWUKICAgICAg
ICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAg
ewotICAgICAgICBBU1NFUlQobCk7CiAgICAgfQotICAgIAotICAgIGlubGluZSBGb3JJbk5vZGU6
OkZvckluTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlY29u
c3RydWN0aW9uUGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisKKyAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUo
Vk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsb2NhdGlvbikKLSAgICAgICAgLCBtX2xleHByKG5ldyAodm0pIERlY29uc3RydWN0aW5nQXNz
aWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIDApKQorICAgICAgICAsIG1fbGV4cHIobmV3
ICh2bSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBkaXZvdFN0YXJ0KSkKICAgICAgICAg
LCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgewot
ICAgICAgICBBU1NFUlQocGF0dGVybik7Ci0gICAgfQotICAgIAotICAgIGlubGluZSBEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlOjpEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKFZNKikKLSAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5UGF0dGVybk5vZGU6OkFycmF5UGF0dGVybk5vZGUo
Vk0qIHZtKQotICAgICAgICA6IERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUodm0pCi0gICAgewot
ICAgIH0KLSAgICAKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJh
eVBhdHRlcm5Ob2RlOjpjcmVhdGUoVk0qIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBcnJheVBhdHRlcm5Ob2RlKHZtKSk7Ci0gICAgfQotICAgIAotICAgIGlubGluZSBP
YmplY3RQYXR0ZXJuTm9kZTo6T2JqZWN0UGF0dGVybk5vZGUoVk0qIHZtKQotICAgICAgICA6IERl
Y29uc3RydWN0aW9uUGF0dGVybk5vZGUodm0pCi0gICAgewotICAgIH0KLSAgICAKLSAgICBpbmxp
bmUgUGFzc1JlZlB0cjxPYmplY3RQYXR0ZXJuTm9kZT4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0
ZShWTSogdm0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9iamVjdFBhdHRl
cm5Ob2RlKHZtKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8QmluZGluZ05vZGU+
IEJpbmRpbmdOb2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQmluZGluZ05vZGUodm0sIGJvdW5kUHJvcGVydHksIGRpdm90LCBzdGFydCwg
ZW5kKSk7Ci0gICAgfQotICAgIAotICAgIGlubGluZSBCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUo
Vk0qIHZtLCBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVuZCkKLSAgICAgICAgOiBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKHZtKQotICAg
ICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydCwgZW5kKQotICAgICAg
ICAsIG1fYm91bmRQcm9wZXJ0eShib3VuZFByb3BlcnR5KQotICAgIHsKLSAgICB9Ci0gICAgCi0g
ICAgaW5saW5lIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGU6OkRlY29uc3RydWN0aW5nQXNz
aWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxE
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUqIGluaXRp
YWxpemVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIG1f
YmluZGluZ3MoYmluZGluZ3MpCi0gICAgICAgICwgbV9pbml0aWFsaXplcihpbml0aWFsaXplcikK
LSAgICB7Ci0gICAgfQotICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBOb2Rl
Q29uc3RydWN0b3JzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXgg
ZDhkZGVhZmFlZWIwMWFhYzhjMmZkODEwNWYxNWU5MjcxNWMwYjliZi4uMzZkZWQzODYzYTM1MmQ5
MWNkMGUzODhlYzY1NjFlYjVhZDk5ZGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBQYXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVy
cz4gRnVuY3Rpb25QYXJhbWV0ZXJzOjpjcmVhdGUoUGFyYW1ldGVyTm9kZSogZmlyc3RQYQogICAg
IGZvciAoUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRl
cjsgcGFyYW1ldGVyID0gcGFyYW1ldGVyLT5uZXh0UGFyYW0oKSkKICAgICAgICAgKytwYXJhbWV0
ZXJDb3VudDsKIAotICAgIHNpemVfdCBvYmplY3RTaXplID0gc2l6ZW9mKEZ1bmN0aW9uUGFyYW1l
dGVycykgLSBzaXplb2Yodm9pZCopICsgc2l6ZW9mKERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUq
KSAqIHBhcmFtZXRlckNvdW50OworICAgIHNpemVfdCBvYmplY3RTaXplID0gc2l6ZW9mKEZ1bmN0
aW9uUGFyYW1ldGVycykgLSBzaXplb2Yodm9pZCopICsgc2l6ZW9mKFN0cmluZ0ltcGwqKSAqIHBh
cmFtZXRlckNvdW50OwogICAgIHZvaWQqIHNsb3QgPSBmYXN0TWFsbG9jKG9iamVjdFNpemUpOwog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgKHNsb3QpIEZ1bmN0aW9uUGFyYW1ldGVycyhmaXJzdFBh
cmFtZXRlciwgcGFyYW1ldGVyQ291bnQpKTsKIH0KQEAgLTE2NiwxNyArMTY2LDE0IEBAIEZ1bmN0
aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKFBhcmFtZXRlck5vZGUqIGZpcnN0UGFy
YW1ldGVyLCB1bnNpZ25lZCBzCiAgICAgOiBtX3NpemUoc2l6ZSkKIHsKICAgICB1bnNpZ25lZCBp
ID0gMDsKLSAgICBmb3IgKFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlciA9IGZpcnN0UGFyYW1ldGVy
OyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+bmV4dFBhcmFtKCkpIHsKLSAgICAg
ICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVyLT5wYXR0ZXJuKCk7Ci0gICAgICAgIHBhdHRlcm4t
PnJlZigpOwotICAgICAgICBwYXR0ZXJucygpW2krK10gPSBwYXR0ZXJuOwotICAgIH0KKyAgICBm
b3IgKFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7
IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+bmV4dFBhcmFtKCkpCisgICAgICAgIG5ldyAoJmlkZW50
aWZpZXJzKClbaSsrXSkgSWRlbnRpZmllcihwYXJhbWV0ZXItPmlkZW50KCkpOwogfQogCiBGdW5j
dGlvblBhcmFtZXRlcnM6On5GdW5jdGlvblBhcmFtZXRlcnMoKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgcGF0dGVybnMoKVtpXS0+ZGVyZWYo
KTsKKyAgICAgICAgaWRlbnRpZmllcnMoKVtpXS5+SWRlbnRpZmllcigpOwogfQogCiBpbmxpbmUg
RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlv
biwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDk5MDVlODBjZmNjZTViZjA2N2U3ZTEzZWQ5NzU2
YmYzYjBiYmQyNjUuLjViY2FjYWIzZjBkMTI3MTM5MWM3MDMyNWVhOWMyMGIxMzQxNmQ3ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTgwLDcgKzgwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBuYW1lc3BhY2UgRGVjbGFyYXRpb25TdGFja3MgewogICAgICAgICBl
bnVtIFZhckF0dHJzIHsgSXNDb25zdGFudCA9IDEsIEhhc0luaXRpYWxpemVyID0gMiB9OwotICAg
ICAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8SWRlbnRpZmllciwgdW5zaWduZWQ+ID4gVmFy
U3RhY2s7CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJZGVudGlmaWVy
KiwgdW5zaWduZWQ+ID4gVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPEZ1bmN0aW9u
Qm9keU5vZGUqPiBGdW5jdGlvblN0YWNrOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nv
ck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNE
b3RBY2Nlc3Nvck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNEZWNvbnN0cnVjdGlvbk5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC00NjIsNyArNDYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
QXJndW1lbnRMaXN0Tm9kZSogdG9Bcmd1bWVudExpc3QoVk0qLCBpbnQsIGludCkgY29uc3Q7CiAK
LSAgICAgICAgRWxlbWVudE5vZGUqIGVsZW1lbnRzKCkgY29uc3QgeyBBU1NFUlQoaXNTaW1wbGVB
cnJheSgpKTsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKIApAQCAtMTA4Miw3ICsxMDgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9wZXJhdG9yIG5ldzsKIAotICAgICAgICB2
b2lkIGFwcGVuZChFeHByZXNzaW9uTm9kZSogZXhwcikgeyBBU1NFUlQoZXhwcik7IG1fZXhwcmVz
c2lvbnMuYXBwZW5kKGV4cHIpOyB9CisgICAgICAgIHZvaWQgYXBwZW5kKEV4cHJlc3Npb25Ob2Rl
KiBleHByKSB7IG1fZXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIpOyB9CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CkBAIC0xMjQwLDEzICsxMjM4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9leHByMzsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CiAg
ICAgfTsKLSAgICAKLSAgICBjbGFzcyBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlOwogCiAgICAg
Y2xhc3MgRm9ySW5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBGb3JJbk5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVu
dE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9k
ZSopOworICAgICAgICBGb3JJbk5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMzQ1LDE0ICsxMzQxLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUGFy
YW1ldGVyTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2Rl
Pik7Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSosIFBhc3NSZWZQdHI8RGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZT4pOworICAgICAgICBQYXJhbWV0ZXJOb2RlKGNvbnN0IElk
ZW50aWZpZXImKTsKKyAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgY29uc3Qg
SWRlbnRpZmllciYpOwogCi0gICAgICAgIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIHBhdHRl
cm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAgICAgICAgIFBhcmFt
ZXRlck5vZGUqIG5leHRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IG1fcGF0dGVy
bjsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgUGFyYW1ldGVy
Tm9kZSogbV9uZXh0OwogICAgIH07CiAKQEAgLTE0NjQsMjEgKzE0NjAsMjEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bmN0aW9uUGFyYW1ldGVycyk7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IGNy
ZWF0ZShQYXJhbWV0ZXJOb2RlKik7CiAgICAgICAgIH5GdW5jdGlvblBhcmFtZXRlcnMoKTsKIAog
ICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgICAg
IERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIGF0KHVuc2lnbmVkIGluZGV4KSB7IEFTU0VSVChp
bmRleCA8IG1fc2l6ZSk7IHJldHVybiBwYXR0ZXJucygpW2luZGV4XTsgfQorICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBBU1NFUlQoaW5kZXggPCBt
X3NpemUpOyByZXR1cm4gaWRlbnRpZmllcnMoKVtpbmRleF07IH0KIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiwgdW5zaWduZWQgc2l6ZSk7
CiAKLSAgICAgICAgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSoqIHBhdHRlcm5zKCkgeyByZXR1
cm4gJm1fc3RvcmFnZTsgfQorICAgICAgICBJZGVudGlmaWVyKiBpZGVudGlmaWVycygpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SWRlbnRpZmllcio+KCZtX3N0b3JhZ2UpOyB9CisgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50aWZpZXJzKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBJZGVudGlmaWVyKj4oJm1fc3RvcmFnZSk7IH0KIAogICAgICAgICB1bnNp
Z25lZCBtX3NpemU7Ci0gICAgICAgIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIG1fc3RvcmFn
ZTsKKyAgICAgICAgdm9pZCogbV9zdG9yYWdlOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlv
bkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CkBAIC0xNTM0LDEwMCArMTUzMCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBtX2JvZHk7CiAgICAgfTsK
IAotICAgIGNsYXNzIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUpOwotICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLQotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RCb3Vu
ZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0ID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIHNv
dXJjZSkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3RyaW5nQnVp
bGRlciYpIGNvbnN0ID0gMDsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCaW5kaW5nTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhwcmVzc2lv
bk5vZGUqKSB7IHJldHVybiAwOyB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5EZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlKCkgPSAwOwotICAgICAgICAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUoVk0qKTsKLSAgICB9OwotCi0gICAgY2xhc3Mg
QXJyYXlQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5UGF0dGVybk5vZGU+IGNy
ZWF0ZShWTSopOwotICAgICAgICB2b2lkIGFwcGVuZEluZGV4KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKG5vZGUpOwotICAgICAgICB9Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICBBcnJheVBhdHRlcm5Ob2RlKFZNKik7Ci0gICAgICAgIHZvaWQgY29sbGVj
dEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Q7Ci0gICAgICAgIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0Owot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAgICAgdm9pZCB0b1N0cmlu
ZyhTdHJpbmdCdWlsZGVyJikgY29uc3Q7Ci0KLSAgICAgICAgVmVjdG9yPFJlZlB0cjxEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlPj4gbV90YXJnZXRQYXR0ZXJuczsKLSAgICB9OwotICAgIAotICAg
IGNsYXNzIE9iamVjdFBhdHRlcm5Ob2RlIDogcHVibGljIERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8T2JqZWN0UGF0dGVy
bk5vZGU+IGNyZWF0ZShWTSopOwotICAgICAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIGJvb2wgd2FzU3RyaW5n
LCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBwYXR0ZXJuKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeShpZGVudGlmaWVyLCB3YXNTdHJpbmcs
IHBhdHRlcm4pKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBP
YmplY3RQYXR0ZXJuTm9kZShWTSopOwotICAgICAgICB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZp
ZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0OwotICAgICAgICB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdDsKLSAgICAgICAgdm9pZCB0
b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0cnVjdCBFbnRyeSB7Ci0g
ICAgICAgICAgICBFbnRyeShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvb2wgd2Fz
U3RyaW5nLCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBwYXR0ZXJuKQotICAgICAgICAgICAg
ICAgIDogcHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgICAgICAsIHdhc1N0
cmluZyh3YXNTdHJpbmcpCi0gICAgICAgICAgICAgICAgLCBwYXR0ZXJuKHBhdHRlcm4pCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZTsKLSAgICAgICAgICAgIGJvb2wgd2FzU3RyaW5nOwotICAgICAgICAgICAgUmVmUHRyPERl
Y29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0gICAgICAgIFZl
Y3RvcjxFbnRyeT4gbV90YXJnZXRQYXR0ZXJuczsKLSAgICB9OwotCi0gICAgY2xhc3MgQmluZGlu
Z05vZGUgOiBwdWJsaWMgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmluZGlu
Z05vZGU+IGNyZWF0ZShWTSosIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZW5kKTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgYm91bmRQ
cm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRQcm9wZXJ0eTsgfQotICAgICAgICAKLSAg
ICBwcml2YXRlOgotICAgICAgICBCaW5kaW5nTm9kZShWTSosIGNvbnN0IElkZW50aWZpZXImIGJv
dW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKTsKLQotICAgICAgICB2b2lk
IGNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0OwotICAg
ICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBj
b25zdDsKLSAgICAgICAgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3Q7Ci0gICAg
ICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCaW5kaW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICAgICAgCi0gICAgICAgIElkZW50aWZpZXIgbV9ib3VuZFByb3BlcnR5Owot
ICAgIH07Ci0KLSAgICBjbGFzcyBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERlY29uc3RydWN0aW5nQXNz
aWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVj
dGlvblBhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAgICAgRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBtX2JpbmRpbmdzLmdldCgpOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzRGVjb25zdHJ1Y3Rpb25Ob2Rl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7Ci0KLSAgICAg
ICAgUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IG1fYmluZGluZ3M7Ci0gICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2luaXRpYWxpemVyOwotICAgIH07Ci0KICAgICBjbGFzcyBGdW5j
RGVjbE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBG
dW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyNjE5ODM0NTdhYTUw
MzBlYzZjMzRhNTRlMGI1NjkxNDkxM2IxNmYxLi42YjkwNTM5YTkxOTc2NGYzOTQ1OTUzZWVkZWQx
ODM5MzJiNjE0OTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC04NCw2ICs4NCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICBtX3Rva2VuLm1fbG9j
YXRpb24uc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKICAgICBtX3Rva2VuLm1f
bG9jYXRpb24uZW5kT2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CiAgICAgbV90b2tlbi5t
X2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOworCiAgICAg
bV9mdW5jdGlvbkNhY2hlID0gdm0tPmFkZFNvdXJjZVByb3ZpZGVyQ2FjaGUoc291cmNlLnByb3Zp
ZGVyKCkpOwogICAgIFNjb3BlUmVmIHNjb3BlID0gcHVzaFNjb3BlKCk7CiAgICAgaWYgKHBhcnNl
ck1vZGUgPT0gSlNQYXJzZUZ1bmN0aW9uQ29kZSkKQEAgLTkxLDEyICs5Miw4IEBAIFBhcnNlcjxM
ZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0
aW9uUGFyYW1ldGVycyoKICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlU3RyaWN0KQogICAg
ICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogICAgIGlmIChwYXJhbWV0ZXJzKSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykgewot
ICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzLT5hdChpKTsKLSAgICAgICAg
ICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVBhcmFtZXRlcigmc3RhdGljX2Nhc3Q8
QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5ib3VuZFByb3BlcnR5KCkpOwotICAgICAgICB9Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykK
KyAgICAgICAgICAgIHNjb3BlLT5kZWNsYXJlUGFyYW1ldGVyKCZwYXJhbWV0ZXJzLT5hdChpKSk7
CiAgICAgfQogICAgIGlmICghbmFtZS5pc051bGwoKSkKICAgICAgICAgc2NvcGUtPmRlY2xhcmVD
YWxsZWUoJm5hbWUpOwpAQCAtMjA2LDcgKzIwMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlv
CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAgaW50
IHNjcmF0Y2g7Ci0gICAgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBzY3JhdGNoMSA9IDA7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogc2NyYXRjaDEgPSAwOwogICAgIFRyZWVFeHByZXNzaW9uIHNj
cmF0Y2gyID0gMDsKICAgICBKU1RleHRQb3NpdGlvbiBzY3JhdGNoMzsKICAgICBUcmVlRXhwcmVz
c2lvbiB2YXJEZWNscyA9IHBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KGNvbnRleHQsIHNjcmF0Y2gs
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2NyYXRjaDMsIHNjcmF0Y2gzLCBzY3JhdGNoMyk7CkBAIC0y
NzQsMTcwICsyNzEsNDMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdoaWxlU3RhdGVtZW4KIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlY29uc3RydWN0aW9uUGF0
dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4
dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQ
b3NpdGlvbiYgaW5pdEVuZCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBpbnQmIGRlY2xhcmF0aW9ucywgY29uc3QgSWRlbnRpZmllciomIGxhc3RJ
ZGVudCwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlk
ZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0
RW5kKQogewogICAgIFRyZWVFeHByZXNzaW9uIHZhckRlY2xzID0gMDsKLSAgICBjb25zdCBJZGVu
dGlmaWVyKiBsYXN0SWRlbnQ7CiAgICAgZG8gewotICAgICAgICBsYXN0SWRlbnQgPSAwOwotICAg
ICAgICBsYXN0UGF0dGVybiA9IDA7CisgICAgICAgIGRlY2xhcmF0aW9ucysrOwogICAgICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgp
OwotICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKLSAgICAgICAgZGVjbGFyYXRpb25z
Kys7Ci0gICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1h
dGNoKElERU5UKSkgewotICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gdmFyU3RhcnQgPSB0b2tl
blN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgIGlkZW50U3RhcnQgPSB2YXJTdGFydDsKLSAg
ICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsK
LSAgICAgICAgICAgIGxhc3RJZGVudCA9IG5hbWU7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAg
ICAgICAgICBoYXNJbml0aWFsaXplciA9IG1hdGNoKEVRVUFMKTsKLSAgICAgICAgICAgIGZhaWxJ
ZkZhbHNlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoZGVjbGFyZVZhcmlhYmxlKG5hbWUpLCAi
Q2Fubm90IGRlY2xhcmUgYSB2YXJpYWJsZSBuYW1lZCIsIG5hbWUtPmltcGwoKSwgImluIHN0cmlj
dCBtb2RlLiIpOwotICAgICAgICAgICAgY29udGV4dC5hZGRWYXIobmFtZSwgKGhhc0luaXRpYWxp
emVyIHx8ICghbV9hbGxvd3NJbiAmJiBtYXRjaChJTlRPS0VOKSkpID8gRGVjbGFyYXRpb25TdGFj
a3M6Okhhc0luaXRpYWxpemVyIDogMCk7Ci0gICAgICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIp
IHsKLSAgICAgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiB2YXJEaXZvdCA9IHRva2VuU3RhcnRQ
b3NpdGlvbigpICsgMTsKLSAgICAgICAgICAgICAgICBpbml0U3RhcnQgPSB0b2tlblN0YXJ0UG9z
aXRpb24oKTsKLSAgICAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJp
bmdzKTsgLy8gY29uc3VtZSAnPScKLSAgICAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbml0
aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7Ci0gICAgICAgICAg
ICAgICAgaW5pdEVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAg
bGFzdEluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7Ci0gICAgICAgICAgICAgICAgZmFpbElmRmFs
c2UoaW5pdGlhbGl6ZXIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5vZGUg
PSBjb250ZXh0LmNyZWF0ZUFzc2lnblJlc29sdmUobG9jYXRpb24sICpuYW1lLCBpbml0aWFsaXpl
ciwgdmFyU3RhcnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxhc3RJZGVudCA9IDA7Ci0gICAg
ICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybjxEZWNvbnN0
cnVjdFRvVmFyaWFibGVzPihjb250ZXh0KTsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhdHRl
cm4pOwotICAgICAgICAgICAgaGFzSW5pdGlhbGl6ZXIgPSBtYXRjaChFUVVBTCk7Ci0gICAgICAg
ICAgICBsYXN0UGF0dGVybiA9IHBhdHRlcm47Ci0gICAgICAgICAgICBpZiAoaGFzSW5pdGlhbGl6
ZXIpIHsKLSAgICAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdz
KTsgLy8gY29uc3VtZSAnPScKLSAgICAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiByaHMgPSBw
YXJzZUV4cHJlc3Npb24oY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IGNvbnRleHQu
Y3JlYXRlRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCByaHMpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKG5vZGUpOwotICAgICAgICB9CisgICAg
ICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgCisgICAgICAgIEpTVGV4dFBvc2l0aW9u
IHZhclN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgICAgIGlkZW50U3RhcnQgPSB2
YXJTdGFydDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OworICAgICAgICBsYXN0SWRlbnQgPSBuYW1lOworICAgICAgICBuZXh0KCk7CisgICAg
ICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBtYXRjaChFUVVBTCk7CisgICAgICAgIGZhaWxJZkZh
bHNlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoZGVjbGFyZVZhcmlhYmxlKG5hbWUpLCAiQ2Fu
bm90IGRlY2xhcmUgYSB2YXJpYWJsZSBuYW1lZCIsIG5hbWUtPmltcGwoKSwgImluIHN0cmljdCBt
b2RlLiIpOworICAgICAgICBjb250ZXh0LmFkZFZhcihuYW1lLCAoaGFzSW5pdGlhbGl6ZXIgfHwg
KCFtX2FsbG93c0luICYmIG1hdGNoKElOVE9LRU4pKSkgPyBEZWNsYXJhdGlvblN0YWNrczo6SGFz
SW5pdGlhbGl6ZXIgOiAwKTsKICAgICAgICAgaWYgKGhhc0luaXRpYWxpemVyKSB7CisgICAgICAg
ICAgICBKU1RleHRQb3NpdGlvbiB2YXJEaXZvdCA9IHRva2VuU3RhcnRQb3NpdGlvbigpICsgMTsK
KyAgICAgICAgICAgIGluaXRTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworICAgICAgICAg
ICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7IC8vIGNvbnN1bWUgJz0nCisg
ICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBpbml0RW5kID0gbGFzdFRva2VuRW5kUG9z
aXRpb24oKTsKKyAgICAgICAgICAgIGxhc3RJbml0aWFsaXplciA9IGluaXRpYWxpemVyOworICAg
ICAgICAgICAgZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKGxv
Y2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2Vu
RW5kUG9zaXRpb24oKSk7CiAgICAgICAgICAgICBpZiAoIXZhckRlY2xzKQogICAgICAgICAgICAg
ICAgIHZhckRlY2xzID0gbm9kZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2
YXJEZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobG9jYXRpb24sIHZhckRlY2xzLCBu
b2RlKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7Ci0gICAgaWYgKGxh
c3RJZGVudCkKLSAgICAgICAgbGFzdFBhdHRlcm4gPSBjcmVhdGVCaW5kaW5nUGF0dGVybjxEZWNv
bnN0cnVjdFRvVmFyaWFibGVzPihjb250ZXh0LCAqbGFzdElkZW50LCAwKTsKICAgICByZXR1cm4g
dmFyRGVjbHM7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8
RGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVCaW5kaW5nUGF0dGVybihUcmVl
QnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgaW50IGRlcHRoKQotewot
ICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVCghbmFtZS5pc051bGwoKSk7
Ci0gICAgCi0gICAgQVNTRVJUKG5hbWUuaW1wbCgpLT5pc0lkZW50aWZpZXIoKSk7Ci0gICAgaWYg
KGRlcHRoKSB7Ci0gICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9WYXJpYWJsZXMpCi0g
ICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGRlY2xhcmVW
YXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8gYSB2YXJpYWJsZSBuYW1lZCIs
IG5hbWUuaW1wbCgpLCAiLiIpOwotICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvUGFy
YW1ldGVycykgewotICAgICAgICAgICAgYXV0byBiaW5kaW5nUmVzdWx0ID0gZGVjbGFyZUJvdW5k
UGFyYW1ldGVyKCZuYW1lKTsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3RXaXRoTmFt
ZUFuZE1lc3NhZ2UoYmluZGluZ1Jlc3VsdCAhPSBTY29wZTo6U3RyaWN0QmluZGluZ0ZhaWxlZCwg
IkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHBhcmFtZXRlciBuYW1lZCIsIG5hbWUuaW1wbCgpLCAi
aW4gc3RyaWN0IG1vZGUuIik7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZVdpdGhOYW1lQW5kTWVz
c2FnZShiaW5kaW5nUmVzdWx0ICE9IFNjb3BlOjpCaW5kaW5nRmFpbGVkLCAiQ2Fubm90IGRlY29u
c3RydWN0IHRvIGEgcGFyYW1ldGVyIG5hbWVkIiwgbmFtZS5pbXBsKCksICIuIik7Ci0gICAgICAg
IH0KLSAgICAgICAgY29udGV4dC5hZGRWYXIoJm5hbWUsIGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1Bh
cmFtZXRlcnMgPyAwIDogRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvVmFyaWFibGVzKSB7Ci0g
ICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGRlY2xhcmVW
YXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjbGFyZSBhIHZhcmlhYmxlIG5hbWVkIiwgbmFtZS5p
bXBsKCksICJpbiBzdHJpY3QgbW9kZS4iKTsKLSAgICAgICAgICAgIGNvbnRleHQuYWRkVmFyKCZu
YW1lLCBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvUGFyYW1ldGVycykKLSAgICAg
ICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoZGVjbGFyZVBhcmFt
ZXRlcigmbmFtZSksICJDYW5ub3QgZGVjbGFyZSBhIHBhcmFtZXRlciBuYW1lZCIsIG5hbWUuaW1w
bCgpLCAiaW4gc3RyaWN0IG1vZGUuIik7Ci0gICAgfQotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihtX3Rva2VuLm1fbG9jYXRpb24sIG5hbWUsIG1fdG9rZW4ubV9lbmRQ
b3NpdGlvbiwgbV90b2tlbi5tX3N0YXJ0UG9zaXRpb24sIG1fdG9rZW4ubV9lbmRQb3NpdGlvbik7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8RGVjb25zdHJ1
Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihUcmVlQnVp
bGRlciYgY29udGV4dCwgaW50IGRlcHRoKQotewotICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsK
LSAgICBpbnQgbm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwotICAgIFRyZWVEZWNvbnN0cnVj
dGlvblBhdHRlcm4gcGF0dGVybjsKLSAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7Ci0gICAg
Y2FzZSBPUEVOQlJBQ0tFVDogewotICAgICAgICBhdXRvIGFycmF5UGF0dGVybiA9IGNvbnRleHQu
Y3JlYXRlQXJyYXlQYXR0ZXJuKG1fdG9rZW4ubV9sb2NhdGlvbik7Ci0gICAgICAgIG5leHQoKTsK
LSAgICAgICAgZG8gewotICAgICAgICAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQuYXBwZW5kQXJyYXlQYXR0ZXJuU2tpcEVudHJ5KGFycmF5UGF0dGVy
biwgbV90b2tlbi5tX2xvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBmYWlsSWZUcnVlKGhhc0Vycm9yKCkpOwotICAgICAgICAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gbV90b2tlbi5tX2xvY2F0aW9uOwotICAgICAgICAg
ICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybjxraW5kPihj
b250ZXh0LCBkZXB0aCArIDEpOwotICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJu
KTsKLSAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoYXJyYXlQYXR0
ZXJuLCBsb2NhdGlvbiwgaW5uZXJQYXR0ZXJuKTsKLSAgICAgICAgfSB3aGlsZSAoY29uc3VtZShD
T01NQSkpOwotICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCk7Ci0gICAgICAgIHBh
dHRlcm4gPSBhcnJheVBhdHRlcm47Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIE9Q
RU5CUkFDRTogewotICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGF1dG8gb2JqZWN0UGF0dGVybiA9
IGNvbnRleHQuY3JlYXRlT2JqZWN0UGF0dGVybihtX3Rva2VuLm1fbG9jYXRpb24pOwotICAgICAg
ICBib29sIHdhc1N0cmluZyA9IGZhbHNlOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZTsKLSAgICAgICAgICAgIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRl
cm4gaW5uZXJQYXR0ZXJuID0gMDsKLSAgICAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
biA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKLSAgICAgICAgICAgIGlmIChtYXRjaChJREVOVCkpIHsK
LSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSAqbV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0g
ICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKENPTE9O
KSkKLSAgICAgICAgICAgICAgICAgICAgaW5uZXJQYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVjdGlv
blBhdHRlcm48a2luZD4oY29udGV4dCwgZGVwdGggKyAxKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGlubmVyUGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJu
PGtpbmQ+KGNvbnRleHQsIHByb3BlcnR5TmFtZSwgZGVwdGgpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBOVU1CRVI6Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb20obV92bSwgbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWUpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFNUUklORzoKLSAgICAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gKm1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAg
ICAgICAgICAgICAgICAgICB3YXNTdHJpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBmYWls
SWZUcnVlKCEobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZSA9ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5l
eHQoKTsKLSAgICAgICAgICAgICAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsKLSAgICAgICAgICAg
ICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybjxraW5kPihjb250
ZXh0LCBkZXB0aCArIDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZmFpbElmRmFsc2Uo
aW5uZXJQYXR0ZXJuKTsKLSAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kT2JqZWN0UGF0dGVybkVu
dHJ5KG9iamVjdFBhdHRlcm4sIGxvY2F0aW9uLCB3YXNTdHJpbmcsIHByb3BlcnR5TmFtZSwgaW5u
ZXJQYXR0ZXJuKTsKLSAgICAgICAgfSB3aGlsZSAoY29uc3VtZShDT01NQSkpOwotICAgICAgICBj
b25zdW1lT3JGYWlsKENMT1NFQlJBQ0UpOwotICAgICAgICBwYXR0ZXJuID0gb2JqZWN0UGF0dGVy
bjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZGVmYXVsdDogewotICAgICAgICBtYXRj
aE9yRmFpbChJREVOVCk7Ci0gICAgICAgIHBhdHRlcm4gPSBjcmVhdGVCaW5kaW5nUGF0dGVybjxr
aW5kPihjb250ZXh0LCAqbV90b2tlbi5tX2RhdGEuaWRlbnQsIGRlcHRoKTsKLSAgICAgICAgbmV4
dCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAgIG1fbm9uTEhTQ291bnQgPSBu
b25MSFNDb3VudDsKLSAgICByZXR1cm4gcGF0dGVybjsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVjbExp
c3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgZmFpbElmVHJ1ZShzdHJpY3RNb2RlKCkpOwpAQCAtNDgxLDkg
KzM1MSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgIGlmIChtYXRjaChWQVIpKSB7
CiAgICAgICAgIC8qCiAgICAgICAgICBmb3IgKHZhciBJREVOVCBpbiBleHByZXNzaW9uKSBzdGF0
ZW1lbnQKKyAgICAgICAgIGZvciAodmFyIElERU5UID0gZXhwcmVzc2lvbiBpbiBleHByZXNzaW9u
KSBzdGF0ZW1lbnQKICAgICAgICAgIGZvciAodmFyIHZhckRlY2xhcmF0aW9uTGlzdDsgZXhwcmVz
c2lvbk9wdDsgZXhwcmVzc2lvbk9wdCkKICAgICAgICAgICovCi0gICAgICAgIFRyZWVEZWNvbnN0
cnVjdGlvblBhdHRlcm4gZm9ySW5UYXJnZXQgPSAwOworICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBmb3JJblRhcmdldCA9IDA7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGZvckluSW5pdGlhbGl6
ZXIgPSAwOwogICAgICAgICBtX2FsbG93c0luID0gZmFsc2U7CiAgICAgICAgIEpTVGV4dFBvc2l0
aW9uIGluaXRTdGFydDsKQEAgLTQ5OCw3ICszNjksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50
KAogICAgICAgICAKICAgICAgICAgZmFpbElmRmFsc2UoZGVjbGFyYXRpb25zID09IDEpOwogICAg
ICAgICBmYWlsSWZUcnVlV2l0aE1lc3NhZ2UoZm9ySW5Jbml0aWFsaXplciwgIkNhbm5vdCB1c2Ug
aW5pdGlhbGlzZXIgc3ludGF4IGluIGEgZm9yLWluIGxvb3AiKTsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gSGFuZGxlIGZvci1pbiB3aXRoIHZhciBkZWNsYXJhdGlvbgogICAgICAgICBKU1RleHRQ
b3NpdGlvbiBpbkxvY2F0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGNvbnN1
bWVPckZhaWwoSU5UT0tFTik7CkBAIC01MTUsNiArMzg2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRl
bWVudCgKICAgICAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChj
b250ZXh0LCB1bnVzZWQpOwogICAgICAgICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZhbHNl
KHN0YXRlbWVudCk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJ
bkxvb3AobG9jYXRpb24sIGZvckluVGFyZ2V0LCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQs
IGluTG9jYXRpb24sIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQogICAgIApA
QCAtOTAwLDE0ICs3NzIsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChUcmUKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGb3Jt
YWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvcm1hbFBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlY29u
c3RydWN0aW9uUGF0dGVybjxEZWNvbnN0cnVjdFRvUGFyYW1ldGVycz4oY29udGV4dCk7Ci0gICAg
ZmFpbElmRmFsc2UocGFyYW1ldGVyKTsKLSAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0
ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7CisgICAgbWF0
Y2hPckZhaWwoSURFTlQpOworICAgIGZhaWxJZkZhbHNlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3Nh
Z2UoZGVjbGFyZVBhcmFtZXRlcihtX3Rva2VuLm1fZGF0YS5pZGVudCksICJDYW5ub3QgZGVjbGFy
ZSBhIHBhcmFtZXRlciBuYW1lZCIsIG1fdG9rZW4ubV9kYXRhLmlkZW50LT5pbXBsKCksICIgaW4g
c3RyaWN0IG1vZGUiKTsKKyAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0ID0gY29udGV4
dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCptX3Rva2VuLm1fZGF0YS5pZGVudCk7CiAgICAg
VHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgdGFpbCA9IGxpc3Q7Ci0gICAgd2hpbGUgKGNvbnN1bWUo
Q09NTUEpKSB7Ci0gICAgICAgIHBhcmFtZXRlciA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
PERlY29uc3RydWN0VG9QYXJhbWV0ZXJzPihjb250ZXh0KTsKLSAgICAgICAgZmFpbElmRmFsc2Uo
cGFyYW1ldGVyKTsKLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVy
TGlzdCh0YWlsLCBwYXJhbWV0ZXIpOworICAgIG5leHQoKTsKKyAgICB3aGlsZSAobWF0Y2goQ09N
TUEpKSB7CisgICAgICAgIG5leHQoKTsKKyAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOworICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAg
ICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGRlY2xhcmVQYXJhbWV0
ZXIoaWRlbnQpLCAiQ2Fubm90IGRlY2xhcmUgYSBwYXJhbWV0ZXIgbmFtZWQiLCBpZGVudC0+aW1w
bCgpLCAiaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgbmV4dCgpOworICAgICAgICB0YWlsID0g
Y29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHRhaWwsICppZGVudCk7CiAgICAgfQog
ICAgIHJldHVybiBsaXN0OwogfQpAQCAtMTI3OSw3ICsxMTU1LDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VB
c3NpZ25tZW4KICAgICAgICAgICAgIGRlY2xhcmVXcml0ZShtX2xhc3RJZGVudGlmaWVyKTsKICAg
ICAgICAgICAgIG1fbGFzdElkZW50aWZpZXIgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGxocyA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgIGxocyA9IHBhcnNl
Q29uZGl0aW9uYWxFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShsaHMp
OwogICAgICAgICBpZiAoaW5pdGlhbE5vbkxIU0NvdW50ICE9IG1fbm9uTEhTQ291bnQpCiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGYy
MDUzMWZmZDMxMTM1Njg3YzBlYTFhOTAzMjJmMjI2NjMzY2FlY2MuLmY3NGNlMWIzZjkwN2NlZjk2
YWJmN2FkMDAzM2YzMDFlZTQ0NjZiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtNzMsMTcgKzczLDExIEBAIGNsYXNzIFNvdXJjZUNvZGU7CiAjZGVmaW5lIFRyZWVG
dW5jdGlvbkJvZHkgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keQogI2RlZmluZSBU
cmVlUHJvcGVydHkgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlByb3BlcnR5CiAjZGVmaW5lIFRyZWVQ
cm9wZXJ0eUxpc3QgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlByb3BlcnR5TGlzdAotI2RlZmluZSBU
cmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpEZWNvbnN0cnVj
dGlvblBhdHRlcm4KIAogQ09NUElMRV9BU1NFUlQoTGFzdFVudGFnZ2VkVG9rZW4gPCA2NCwgTGVz
c1RoYW42NFVudGFnZ2VkVG9rZW5zKTsKIAogZW51bSBTb3VyY2VFbGVtZW50c01vZGUgeyBDaGVj
a0ZvclN0cmljdE1vZGUsIERvbnRDaGVja0ZvclN0cmljdE1vZGUgfTsKIGVudW0gRnVuY3Rpb25S
ZXF1aXJlbWVudHMgeyBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5jdGlvbk5lZWRzTmFtZSB9
OwotZW51bSBEZWNvbnN0cnVjdGlvbktpbmQgewotICAgIERlY29uc3RydWN0VG9WYXJpYWJsZXMs
Ci0gICAgRGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnMsCi0gICAgRGVjb25zdHJ1Y3RUb0V4cHJlc3Np
b25zCi19OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgaXNFdmFsTm9kZSgp
IHsgcmV0dXJuIGZhbHNlOyB9CiB0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0V2YWxOb2RlPEV2
YWxOb2RlPigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTIyOSwyNiArMjIzLDYgQEAgc3RydWN0IFNj
b3BlIHsKICAgICAgICAgICAgIG1fc2hhZG93c0FyZ3VtZW50cyA9IHRydWU7CiAgICAgICAgIHJl
dHVybiBpc1ZhbGlkU3RyaWN0TW9kZTsKICAgICB9Ci0gICAgCi0gICAgZW51bSBCaW5kaW5nUmVz
dWx0IHsKLSAgICAgICAgQmluZGluZ0ZhaWxlZCwKLSAgICAgICAgU3RyaWN0QmluZGluZ0ZhaWxl
ZCwKLSAgICAgICAgQmluZGluZ1N1Y2NlZWRlZAotICAgIH07Ci0gICAgQmluZGluZ1Jlc3VsdCBk
ZWNsYXJlQm91bmRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCi0gICAgewotICAg
ICAgICBib29sIGlzQXJndW1lbnRzID0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09
ICppZGVudDsKLSAgICAgICAgYm9vbCBuZXdFbnRyeSA9IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRk
KGlkZW50LT5zdHJpbmcoKS5pbXBsKCkpLmlzTmV3RW50cnk7Ci0gICAgICAgIGJvb2wgaXNWYWxp
ZFN0cmljdE1vZGUgPSBuZXdFbnRyeSAmJiBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICpp
ZGVudCAmJiAhaXNBcmd1bWVudHM7Ci0gICAgICAgIG1faXNWYWxpZFN0cmljdE1vZGUgPSBtX2lz
VmFsaWRTdHJpY3RNb2RlICYmIGlzVmFsaWRTdHJpY3RNb2RlOwotICAgIAotICAgICAgICBpZiAo
aXNBcmd1bWVudHMpCi0gICAgICAgICAgICBtX3NoYWRvd3NBcmd1bWVudHMgPSB0cnVlOwotICAg
ICAgICBpZiAoIW5ld0VudHJ5KQotICAgICAgICAgICAgcmV0dXJuIEJpbmRpbmdGYWlsZWQ7Ci0g
ICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNjZWVkZWQgOiBTdHJp
Y3RCaW5kaW5nRmFpbGVkOwotICAgIH0KLQogCiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAtODgyLDcgKzg1Niw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzdHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCkt
PnN0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUoKSB7IHJldHVybiBj
dXJyZW50U2NvcGUoKS0+aXNWYWxpZFN0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgZGVjbGFyZVBh
cmFtZXRlcihjb25zdCBJZGVudGlmaWVyKiBpZGVudCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCkt
PmRlY2xhcmVQYXJhbWV0ZXIoaWRlbnQpOyB9Ci0gICAgU2NvcGU6OkJpbmRpbmdSZXN1bHQgZGVj
bGFyZUJvdW5kUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KSB7IHJldHVybiBjdXJy
ZW50U2NvcGUoKS0+ZGVjbGFyZUJvdW5kUGFyYW1ldGVyKGlkZW50KTsgfQogICAgIGJvb2wgYnJl
YWtJc1ZhbGlkKCkKICAgICB7CiAgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBjdXJyZW50U2Nv
cGUoKTsKQEAgLTk1MywxMSArOTI2LDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Ym9vbCBz
dHJpY3QsIGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVQcm9wZXJ0eSBwYXJz
ZVByb3BlcnR5KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1
aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUg
VHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVF
eHByZXNzaW9uIHBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNs
YXJhdGlvbnMsIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhw
cmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNU
ZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQpOwotICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlQ29uc3REZWNsTGlz
dCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJik7Ci0KLSAgICB0ZW1wbGF0
ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBU
cmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWlsZGVy
JiwgY29uc3QgSWRlbnRpZmllciYsIGludCBkZXB0aCk7Ci0gICAgdGVtcGxhdGUgPERlY29uc3Ry
dWN0aW9uS2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZURlY29uc3Ry
dWN0aW9uUGF0dGVybiBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihUcmVlQnVpbGRlciYsIGlu
dCBkZXB0aCA9IDApOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lO
TElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYs
IGludCYgZGVjbGFyYXRpb25zLCBjb25zdCBJZGVudGlmaWVyKiYgbGFzdElkZW50LCBUcmVlRXhw
cmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNU
ZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlQ29uc3REZWNsTGlz
dCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiBjb250ZXh0KTsKICAgICB0
ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2Nv
cGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVy
JiwgY29uc3QgSWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYsIFRyZWVGdW5j
dGlvbkJvZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFj
ZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKTsK
ICAgICBBTFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAg
ICBib29sIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDk2NWZmMGRiZTlmZmZhYzQxMDBmZGYyODJi
MGUyZmU3N2U4MGM4YjQuLjk5MjljYWZlYzE0YTliYzQwMGMyOGJjYjAzOGQ4NWZhZGE5ZWQ3NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0x
MTEsMTAgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBDbGF1c2U7CiAgICAgdHlw
ZWRlZiBpbnQgQ29uc3REZWNsTGlzdDsKICAgICB0eXBlZGVmIGludCBCaW5hcnlPcGVyYW5kOwot
ICAgIHR5cGVkZWYgaW50IERlY29uc3RydWN0aW9uUGF0dGVybjsKLSAgICB0eXBlZGVmIGludCBB
cnJheVBhdHRlcm47Ci0gICAgdHlwZWRlZiBpbnQgT2JqZWN0UGF0dGVybjsKLQorICAgIAogICAg
IHN0YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1QgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBOZWVkc0ZyZWVWYXJpYWJsZUluZm8gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBDYW5Vc2VGdW5jdGlvbkNhY2hlID0gdHJ1ZTsKQEAgLTE3Niw4ICsxNzMsOCBAQCBwdWJsaWM6
CiAgICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9w
ZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwg
aW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZWNv
bnN0cnVjdGlvblBhdHRlcm4pIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdChpbnQsIERlY29uc3RydWN0aW9uUGF0dGVybikgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoaW50LCBjb25zdCBJZGVu
dGlmaWVyJikgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVDbGF1c2UoaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIDE7IH0K
ICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQpAQCAtMTg4
LDYgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50
IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUZvckxvb3AoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQogICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4g
MTsgfQogICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQpAQCAtMjUyLDMyICsyNTAsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgSWRlbnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkp
IGNvbnN0IHsgQVNTRVJUKHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnByb3BlcnR5Lm5hbWU7IH0K
ICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkp
IGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVzb2x2ZShFeHBy
ZXNzaW9uVHlwZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVFeHByIHx8IGV4
cHIgPT0gUmVzb2x2ZUV2YWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRGVjb25z
dHJ1Y3RpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgRXhwcmVzc2lv
blR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9CiAgICAgCi0gICAgQXJyYXlQ
YXR0ZXJuIGNyZWF0ZUFycmF5UGF0dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuU2tp
cEVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKLSAgICB7Ci0gICAg
fQotICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJuLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4pCi0gICAgewotICAgIH0KLSAg
ICBPYmplY3RQYXR0ZXJuIGNyZWF0ZU9iamVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JikKLSAgICB7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICB2b2lkIGFwcGVuZE9iamVj
dFBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2ws
IGNvbnN0IElkZW50aWZpZXImLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4pCi0gICAgewotICAgIH0K
LSAgICBEZWNvbnN0cnVjdGlvblBhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgfQogcHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHBy
OwogICAgIGludCBtX3RvcFVuYXJ5VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDRmMDBkMWY5MzNkMGVmODJlNTc1YTg1OThjMTExNGZk
MjlmNjM2ZTIuLjFlMTRmM2EzN2I3NWVhY2QwNDRkNDJkYTk2NzIzMTIxM2M4ZTAyNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMDIsMTUg
KzMwMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvU3RyaW5nQnVpbGRlcihTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBjb25zdCBDaGFyVHlwZSoKICAgICAgICAgfQogICAgIH0KIH0KLQot
dm9pZCBlc2NhcGVTdHJpbmdUb0J1aWxkZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQotewotICAgIGlmIChtZXNzYWdlLmlzOEJpdCgpKQotICAgICAgICBh
cHBlbmRTdHJpbmdUb1N0cmluZ0J1aWxkZXIoYnVpbGRlciwgbWVzc2FnZS5jaGFyYWN0ZXJzOCgp
LCBtZXNzYWdlLmxlbmd0aCgpKTsKLSAgICBlbHNlCi0gICAgICAgIGFwcGVuZFN0cmluZ1RvU3Ry
aW5nQnVpbGRlcihidWlsZGVyLCBtZXNzYWdlLmNoYXJhY3RlcnMxNigpLCBtZXNzYWdlLmxlbmd0
aCgpKTsKLX0KLQorICAgIAogdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaW50IGxl
bmd0aCA9IHZhbHVlLmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5oCmluZGV4IDczMmZlNGQxZTY3YTliNTU0MjFmZWU3ZmU4YjRjZGIwYWFiMGQwZTAu
LjU5ZjE5YzE1Njg2YmFjNWQ1MGNkZGYwZTk1YWFiNzhlOWY3YTAyZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKQEAgLTYzLDggKzYzLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBKU09OUGFyc2UoRXhlY1N0
YXRlKiwgY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIEpTT05TdHJpbmdpZnkoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgdW5zaWduZWQgaW5kZW50KTsKIAotICAgIHZvaWQgZXNjYXBlU3RyaW5nVG9C
dWlsZGVyKFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmKTsKLSAgICAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPTk9iamVjdF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmUzNTg2MTc1NmU0NjFj
NzhjMzQ5ODcwOGEzZWIxNmU3ODc0MDA1OC4uMDhhMTIwNWVjY2FiNDUyNDBlNTI1YTQzNGZlOTA5
OTAwNzg4MWRhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA5LTI2ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTU2NDY0IGFuZCByMTU2NDgwLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8xNTY0NjQKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTU2NDgwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE5ODEKKworICAgICAgICBMZWFraW5nIHRvbyBtdWNoIGFuZCBraWxsaRxuZyBidWls
ZGJvdC4gKFJlcXVlc3RlZCBieSB4ZW5vbiBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAg
ICAqIGpzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICoganMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICoganMvbW96aWxsYS9zdHJpY3QvMTMuMS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMv
bW96aWxsYS9zdHJpY3QvcmVncmVzcy01MzIyNTQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpz
L21vemlsbGEvc3RyaWN0L3NjcmlwdC10ZXN0cy8xMy4xLmpzOgorICAgICAgICAqIGpzL3JlZ3Jl
c3MvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMtbGVuZ3RoLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctYXJndW1lbnRz
LWxlbmd0aC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmlu
Zy1hcmd1bWVudHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2Rlc3RydWN0
dXJpbmctc3dhcC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICoganMvcmVncmVzcy9k
ZXN0cnVjdHVyaW5nLXN3YXAuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFyZ3VtZW50cy1sZW5ndGguanM6IFJlbW92ZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMu
anM6IFJlbW92ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1
cmluZy1zd2FwLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9kZXN0cnVj
dHVyaW5nLWFzc2lnbm1lbnQuanM6IFJlbW92ZWQuCisgICAgICAgICogc3B1dG5pay9Db25mb3Jt
YW5jZS8xM19GdW5jdGlvbl9EZWZpbml0aW9uL1MxM19BNS5odG1sOgorCiAyMDEzLTA5LTI2ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0
IHBsdWdpbnMvYWNjZXNzLWFmdGVyLXBhZ2UtZGVzdHJveWVkLmh0bWwgaXMgZmxha3kKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzNhZDYzODgwMGE1MmZiYTgxNGExOTY3
NGUzNzVkZDdhOTE2YmIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1iYXNpYyB0ZXN0cyBmb3IgZGVzdHJ1
Y3R1cmluZyBhc3NpZ25tZW50Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNT
IHZhciBbYSxiXT1bJzEnLCcyJ107IHZhciByPWErYjsgciBpcyAnMTInCi1GdW5jdGlvbiBhcyBT
dHJpbmc6IChmdW5jdGlvbihbYSxiXSkgeyByZXR1cm4gYStiO30pCi1QQVNTIChmdW5jdGlvbihb
YSxiXSkgeyByZXR1cm4gYStiO30pKFsnMScsJzInXSkgaXMgJzEyJwotUEFTUyAoZnVuY3Rpb24g
KFthLGJdKSB7IHJldHVybiBhK2I7fSkoWycxJywnMiddKSBpcyAnMTInCi1QQVNTIHZhciB7YSxi
fT17YTonMScsYjonMid9OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwotRnVuY3Rpb24gYXMgU3RyaW5n
OiAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9KQotUEFTUyAoZnVuY3Rpb24oe2EsYn0p
IHsgcmV0dXJuIGErYjt9KSh7YTonMScsYjonMid9KSBpcyAnMTInCi1QQVNTIChmdW5jdGlvbiAo
e2E6YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkoe2E6JzEnLGI6JzInfSkgaXMgJzEyJwotUEFTUyB2
YXIge2M6YSxkOmJ9PXtjOicxJyxkOicyJ307IHZhciByPWErYjsgciBpcyAnMTInCi1GdW5jdGlv
biBhcyBTdHJpbmc6IChmdW5jdGlvbih7YzphLGQ6Yn0pIHsgcmV0dXJuIGErYjt9KQotUEFTUyAo
ZnVuY3Rpb24oe2M6YSxkOmJ9KSB7IHJldHVybiBhK2I7fSkoe2M6JzEnLGQ6JzInfSkgaXMgJzEy
JwotUEFTUyAoZnVuY3Rpb24gKHtjOmEsZDpifSkgeyByZXR1cm4gYStiO30pKHtjOicxJyxkOicy
J30pIGlzICcxMicKLVBBU1MgdmFyIHtjOmIsZDphfT17YzonMScsZDonMid9OyB2YXIgcj1hK2I7
IHIgaXMgJzIxJwotRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2M6YixkOmF9KSB7IHJl
dHVybiBhK2I7fSkKLVBBU1MgKGZ1bmN0aW9uKHtjOmIsZDphfSkgeyByZXR1cm4gYStiO30pKHtj
OicxJyxkOicyJ30pIGlzICcyMScKLVBBU1MgKGZ1bmN0aW9uICh7YzpiLGQ6YX0pIHsgcmV0dXJu
IGErYjt9KSh7YzonMScsZDonMid9KSBpcyAnMjEnCi1QQVNTIHZhciB7dHJ1ZTphLGZhbHNlOmIs
dW5kZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41OmcsJ2ZvbyBiYXInOmh9PXt0cnVlOidh
JyxmYWxzZTonYicsdW5kZWZpbmVkOidjJyxudWxsOidkJyxpbjonZScsZm9yOidmJywxLjU6J2cn
LCdmb28gYmFyJzonaCd9OyB2YXIgcj1hK2IrYytkK2UrZitnK2g7IHIgaXMgJ2FiY2RlZmdoJwot
RnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe3RydWU6YSxmYWxzZTpiLHVuZGVmaW5lZDpj
LG51bGw6ZCxpbjplLGZvcjpmLDEuNTpnLCdmb28gYmFyJzpofSkgeyByZXR1cm4gYStiK2MrZCtl
K2YrZytoO30pCi1QQVNTIChmdW5jdGlvbih7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVs
bDpkLGluOmUsZm9yOmYsMS41OmcsJ2ZvbyBiYXInOmh9KSB7IHJldHVybiBhK2IrYytkK2UrZitn
K2g7fSkoe3RydWU6J2EnLGZhbHNlOidiJyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidlJyxm
b3I6J2YnLDEuNTonZycsJ2ZvbyBiYXInOidoJ30pIGlzICdhYmNkZWZnaCcKLVBBU1MgKGZ1bmN0
aW9uICh7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41Omcs
ImZvbyBiYXIiOmh9KSB7IHJldHVybiBhK2IrYytkK2UrZitnK2g7fSkoe3RydWU6J2EnLGZhbHNl
OidiJyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidlJyxmb3I6J2YnLDEuNTonZycsJ2ZvbyBi
YXInOidoJ30pIGlzICdhYmNkZWZnaCcKLVBBU1MgdmFyIFt7YzphLGQ6Yn1dPVt7YzonMScsZDon
Mid9XTsgdmFyIHI9YStiOyByIGlzICcxMicKLUZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9u
KFt7YzphLGQ6Yn1dKSB7IHJldHVybiBhK2I7fSkKLVBBU1MgKGZ1bmN0aW9uKFt7YzphLGQ6Yn1d
KSB7IHJldHVybiBhK2I7fSkoW3tjOicxJyxkOicyJ31dKSBpcyAnMTInCi1QQVNTIChmdW5jdGlv
biAoW3tjOmEsZDpifV0pIHsgcmV0dXJuIGErYjt9KShbe2M6JzEnLGQ6JzInfV0pIGlzICcxMicK
LVBBU1MgdmFyIHt4Olt7YzphLGQ6Yn1dfT17eDpbe2M6JzEnLGQ6JzInfV19OyB2YXIgcj1hK2I7
IHIgaXMgJzEyJwotRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe3g6W3tjOmEsZDpifV19
KSB7IHJldHVybiBhK2I7fSkKLVBBU1MgKGZ1bmN0aW9uKHt4Olt7YzphLGQ6Yn1dfSkgeyByZXR1
cm4gYStiO30pKHt4Olt7YzonMScsZDonMid9XX0pIGlzICcxMicKLVBBU1MgKGZ1bmN0aW9uICh7
eDpbe2M6YSxkOmJ9XX0pIHsgcmV0dXJuIGErYjt9KSh7eDpbe2M6JzEnLGQ6JzInfV19KSBpcyAn
MTInCi1QQVNTIHZhciBbYSxiXT1hbkFycmF5OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwotRnVuY3Rp
b24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oW2EsYl0pIHsgcmV0dXJuIGErYjt9KQotUEFTUyAoZnVu
Y3Rpb24oW2EsYl0pIHsgcmV0dXJuIGErYjt9KShhbkFycmF5KSBpcyAnMTInCi1QQVNTIChmdW5j
dGlvbiAoW2EsYl0pIHsgcmV0dXJuIGErYjt9KShhbkFycmF5KSBpcyAnMTInCi1QQVNTIHZhciB7
YSxifT1hbkFycmF5OyB2YXIgcj1hK2I7IHIgaXMgJzM0JwotRnVuY3Rpb24gYXMgU3RyaW5nOiAo
ZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9KQotUEFTUyAoZnVuY3Rpb24oe2EsYn0pIHsg
cmV0dXJuIGErYjt9KShhbkFycmF5KSBpcyAnMzQnCi1QQVNTIChmdW5jdGlvbiAoe2E6YSxiOmJ9
KSB7IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzM0JwotUEFTUyB2YXIge2E6YSxiOmJ9PWFu
QXJyYXk7IHZhciByPWErYjsgciBpcyAnMzQnCi1GdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlv
bih7YTphLGI6Yn0pIHsgcmV0dXJuIGErYjt9KQotUEFTUyAoZnVuY3Rpb24oe2E6YSxiOmJ9KSB7
IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzM0JwotUEFTUyAoZnVuY3Rpb24gKHthOmEsYjpi
fSkgeyByZXR1cm4gYStiO30pKGFuQXJyYXkpIGlzICczNCcKLVBBU1MgdmFyIHthLGJ9PWFuT2Jq
ZWN0OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwotRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24o
e2EsYn0pIHsgcmV0dXJuIGErYjt9KQotUEFTUyAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGEr
Yjt9KShhbk9iamVjdCkgaXMgJzEyJwotUEFTUyAoZnVuY3Rpb24gKHthOmEsYjpifSkgeyByZXR1
cm4gYStiO30pKGFuT2JqZWN0KSBpcyAnMTInCi1QQVNTIHZhciB7YTphLGI6Yn09YW5PYmplY3Q7
IHZhciByPWErYjsgciBpcyAnMTInCi1GdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlvbih7YTph
LGI6Yn0pIHsgcmV0dXJuIGErYjt9KQotUEFTUyAoZnVuY3Rpb24oe2E6YSxiOmJ9KSB7IHJldHVy
biBhK2I7fSkoYW5PYmplY3QpIGlzICcxMicKLVBBU1MgKGZ1bmN0aW9uICh7YTphLGI6Yn0pIHsg
cmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEyJwotUEFTUyB2YXIgezA6YSwxOmJ9PWFuT2Jq
ZWN0OyB2YXIgcj1hK2I7IHIgaXMgJzM0JwotRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24o
ezA6YSwxOmJ9KSB7IHJldHVybiBhK2I7fSkKLVBBU1MgKGZ1bmN0aW9uKHswOmEsMTpifSkgeyBy
ZXR1cm4gYStiO30pKGFuT2JqZWN0KSBpcyAnMzQnCi1QQVNTIChmdW5jdGlvbiAoezA6YSwxOmJ9
KSB7IHJldHVybiBhK2I7fSkoYW5PYmplY3QpIGlzICczNCcKLVBBU1MgdmFyIHsnYSc6YSwnYic6
Yn09YW5PYmplY3Q7IHZhciByPWErYjsgciBpcyAnMTInCi1GdW5jdGlvbiBhcyBTdHJpbmc6IChm
dW5jdGlvbih7J2EnOmEsJ2InOmJ9KSB7IHJldHVybiBhK2I7fSkKLVBBU1MgKGZ1bmN0aW9uKHsn
YSc6YSwnYic6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEyJwotUEFTUyAoZnVu
Y3Rpb24gKHsiYSI6YSwiYiI6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzEyJwot
UEFTUyBhK2IgaXMgJzExMjInCi1QQVNTIGErYiBpcyAnMjIxMScKLVBBU1MgdGVzdERlY29uc3Ry
dWN0QXJncygnMScsICcyJykgaXMgJzEyJwotUEFTUyB0ZXN0RGVjb25zdHJ1Y3RBcmdMZW5ndGgo
JzEnLCAnMicpIGlzIDIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2ln
bm1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWZmZTViZjE3Y2ZlOTE1OGQ0ZDEyYWU0
MGUwMmNiNzc2YTk2ODU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9tb3ppbGxhL3N0cmljdC8x
My4xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL21vemlsbGEvc3RyaWN0LzEzLjEtZXhw
ZWN0ZWQudHh0CmluZGV4IDgxNzc3NTEzNjQyMTc2YjhhNGEyMzY3NTM4NzMzOWU5OWQ4MzRkNjEu
LmMyMzY1MjQxYmM5MWQ5NWEzYjk0ZjA4YmM2YmM5ODkwOWRjYjJmOGEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2pzL21vemlsbGEvc3RyaWN0LzEzLjEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL21vemlsbGEvc3RyaWN0LzEzLjEtZXhwZWN0ZWQudHh0CkBAIC0xMCw4ICsxMCw4
IEBAIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogUEFTUyBGdW5jdGlvbigiJ3VzZSBzdHJpY3QnOyBmdW5j
dGlvbiBmKGEsYixjLGQsZSxmLGcsaCxkKSB7fSIpIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFN5
bnRheEVycm9yLgogUEFTUyAhIUZ1bmN0aW9uKCJmdW5jdGlvbiBmKGEsYixjLGQsZSxmLGcsaCxk
KSB7fSIpIGlzIHRydWUKIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQotUEFTUyAhIUZ1bmN0aW9uKCIndXNl
IHN0cmljdCc7IGZ1bmN0aW9uIGYoW3gseV0pIHt9IikgaXMgdHJ1ZQotUEFTUyAhIUZ1bmN0aW9u
KCJmdW5jdGlvbiBmKFt4LHldKSB7fSIpIGlzIHRydWUKK1BBU1MgRnVuY3Rpb24oIid1c2Ugc3Ry
aWN0JzsgZnVuY3Rpb24gZihbeCx5XSkge30iKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50
YXhFcnJvci4KK1BBU1MgRnVuY3Rpb24oImZ1bmN0aW9uIGYoW3gseV0pIHt9IikgdGhyZXcgZXhj
ZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1MgRnVu
Y3Rpb24oIid1c2Ugc3RyaWN0JzsgZnVuY3Rpb24gZihbeCx4XSl7fSIpIHRocmV3IGV4Y2VwdGlv
biBvZiB0eXBlIFN5bnRheEVycm9yLgogUEFTUyBGdW5jdGlvbigiZnVuY3Rpb24gZihbeCx4XSl7
fSIpIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFN5bnRheEVycm9yLgpAQCAtMzgsMTAgKzM4LDEw
IEBAIFBBU1MgRnVuY3Rpb24oIid1c2Ugc3RyaWN0JzsgZnVuY3Rpb24gZihldmFsKXt9IikgdGhy
ZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4CiBQQVNTICEhRnVuY3Rpb24oImZ1bmN0aW9uIGYo
ZXZhbCl7fSIpIGlzIHRydWUKIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogUEFTUyBGdW5jdGlvbigiJ3Vz
ZSBzdHJpY3QnOyBmdW5jdGlvbiBmKFtldmFsXSl7fSIpIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBl
IFN5bnRheEVycm9yLgotUEFTUyAhIUZ1bmN0aW9uKCJmdW5jdGlvbiBmKFtldmFsXSl7fSIpIGlz
IHRydWUKK1BBU1MgRnVuY3Rpb24oImZ1bmN0aW9uIGYoW2V2YWxdKXt9IikgdGhyZXcgZXhjZXB0
aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1MgRnVuY3Rp
b24oIid1c2Ugc3RyaWN0JzsgZnVuY3Rpb24gZih7eDpldmFsfSl7fSIpIHRocmV3IGV4Y2VwdGlv
biBvZiB0eXBlIFN5bnRheEVycm9yLgotUEFTUyAhIUZ1bmN0aW9uKCJmdW5jdGlvbiBmKHt4OmV2
YWx9KXt9IikgaXMgdHJ1ZQorUEFTUyBGdW5jdGlvbigiZnVuY3Rpb24gZih7eDpldmFsfSl7fSIp
IHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFN5bnRheEVycm9yLgogUEFTUyB0cnVlID09PSB0cnVl
CiBQQVNTIEZ1bmN0aW9uKCIndXNlIHN0cmljdCc7IGZ1bmN0aW9uIGV2YWwoKXt9IikgdGhyZXcg
ZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCiBQQVNTICEhRnVuY3Rpb24oImZ1bmN0aW9u
IGV2YWwoKXt9IikgaXMgdHJ1ZQpAQCAtNjIsMTAgKzYyLDEwIEBAIFBBU1MgRnVuY3Rpb24oIid1
c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIGYoZXZhbCl7fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlw
ZSBTeW50CiBQQVNTICEhRnVuY3Rpb24oIihmdW5jdGlvbiBmKGV2YWwpe30pIikgaXMgdHJ1ZQog
UEFTUyB0cnVlID09PSB0cnVlCiBQQVNTIEZ1bmN0aW9uKCIndXNlIHN0cmljdCc7IChmdW5jdGlv
biBmKFtldmFsXSl7fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhFcnJvci4KLVBB
U1MgISFGdW5jdGlvbigiKGZ1bmN0aW9uIGYoW2V2YWxdKXt9KSIpIGlzIHRydWUKK1BBU1MgRnVu
Y3Rpb24oIihmdW5jdGlvbiBmKFtldmFsXSl7fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBT
eW50YXhFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogUEFTUyBGdW5jdGlvbigiJ3VzZSBzdHJp
Y3QnOyAoZnVuY3Rpb24gZih7eDpldmFsfSl7fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBT
eW50YXhFcnJvci4KLVBBU1MgISFGdW5jdGlvbigiKGZ1bmN0aW9uIGYoe3g6ZXZhbH0pe30pIikg
aXMgdHJ1ZQorUEFTUyBGdW5jdGlvbigiKGZ1bmN0aW9uIGYoe3g6ZXZhbH0pe30pIikgdGhyZXcg
ZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1Mg
RnVuY3Rpb24oIid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIGV2YWwoKXt9KSIpIHRocmV3IGV4Y2Vw
dGlvbiBvZiB0eXBlIFN5bnRheEVycm9yLgogUEFTUyAhIUZ1bmN0aW9uKCIoZnVuY3Rpb24gZXZh
bCgpe30pIikgaXMgdHJ1ZQpAQCAtOTgsMTAgKzk4LDEwIEBAIFBBU1MgRnVuY3Rpb24oIid1c2Ug
c3RyaWN0JzsgKHtzZXQgeChldmFsKXt9fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50
YXhFCiBQQVNTICEhRnVuY3Rpb24oIih7c2V0IHgoZXZhbCl7fX0pIikgaXMgdHJ1ZQogUEFTUyB0
cnVlID09PSB0cnVlCiBQQVNTIEZ1bmN0aW9uKCIndXNlIHN0cmljdCc7ICh7c2V0IHgoW2V2YWxd
KXt9fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhFcnJvci4KLVBBU1MgISFGdW5j
dGlvbigiKHtzZXQgeChbZXZhbF0pe319KSIpIGlzIHRydWUKK1BBU1MgRnVuY3Rpb24oIih7c2V0
IHgoW2V2YWxdKXt9fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhFcnJvci4KIFBB
U1MgdHJ1ZSA9PT0gdHJ1ZQogUEFTUyBGdW5jdGlvbigiJ3VzZSBzdHJpY3QnOyAoe3NldCB4KHt4
OmV2YWx9KXt9fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhFcnJvci4KLVBBU1Mg
ISFGdW5jdGlvbigiKHtzZXQgeCh7eDpldmFsfSl7fX0pIikgaXMgdHJ1ZQorUEFTUyBGdW5jdGlv
bigiKHtzZXQgeCh7eDpldmFsfSl7fX0pIikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4
RXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1MgRnVuY3Rpb24oIid1c2Ugc3RyaWN0Jzsg
KHtzZXQgeChldmFsKXtcInVzZSBzdHJpY3RcIjt9fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlw
ZSBTeW50YXhFcnJvci4KIFBBU1MgRnVuY3Rpb24oIih7c2V0IHgoZXZhbCl7XCJ1c2Ugc3RyaWN0
XCI7fX0pIikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCkBAIC0xMTYsMTAg
KzExNiwxMCBAQCBQQVNTIEZ1bmN0aW9uKCIndXNlIHN0cmljdCc7IGZ1bmN0aW9uIGYoYXJndW1l
bnRzKXt9IikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgUwogUEFTUyAhIUZ1bmN0aW9uKCJmdW5j
dGlvbiBmKGFyZ3VtZW50cyl7fSIpIGlzIHRydWUKIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogUEFTUyBG
dW5jdGlvbigiJ3VzZSBzdHJpY3QnOyBmdW5jdGlvbiBmKFthcmd1bWVudHNdKXt9IikgdGhyZXcg
ZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCi1QQVNTICEhRnVuY3Rpb24oImZ1bmN0aW9u
IGYoW2FyZ3VtZW50c10pe30iKSBpcyB0cnVlCitQQVNTIEZ1bmN0aW9uKCJmdW5jdGlvbiBmKFth
cmd1bWVudHNdKXt9IikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCiBQQVNT
IHRydWUgPT09IHRydWUKIFBBU1MgRnVuY3Rpb24oIid1c2Ugc3RyaWN0JzsgZnVuY3Rpb24gZih7
eDphcmd1bWVudHN9KXt9IikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCi1Q
QVNTICEhRnVuY3Rpb24oImZ1bmN0aW9uIGYoe3g6YXJndW1lbnRzfSl7fSIpIGlzIHRydWUKK1BB
U1MgRnVuY3Rpb24oImZ1bmN0aW9uIGYoe3g6YXJndW1lbnRzfSl7fSIpIHRocmV3IGV4Y2VwdGlv
biBvZiB0eXBlIFN5bnRheEVycm9yLgogUEFTUyB0cnVlID09PSB0cnVlCiBQQVNTIEZ1bmN0aW9u
KCIndXNlIHN0cmljdCc7IGZ1bmN0aW9uIGFyZ3VtZW50cygpe30iKSB0aHJldyBleGNlcHRpb24g
b2YgdHlwZSBTeW50YXhFcnJvci4KIFBBU1MgISFGdW5jdGlvbigiZnVuY3Rpb24gYXJndW1lbnRz
KCl7fSIpIGlzIHRydWUKQEAgLTE0MCwxMCArMTQwLDEwIEBAIFBBU1MgRnVuY3Rpb24oIid1c2Ug
c3RyaWN0JzsgKGZ1bmN0aW9uIGYoYXJndW1lbnRzKXt9KSIpIHRocmV3IGV4Y2VwdGlvbiBvZiB0
eXBlCiBQQVNTICEhRnVuY3Rpb24oIihmdW5jdGlvbiBmKGFyZ3VtZW50cyl7fSkiKSBpcyB0cnVl
CiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1MgRnVuY3Rpb24oIid1c2Ugc3RyaWN0JzsgKGZ1bmN0
aW9uIGYoW2FyZ3VtZW50c10pe30pIikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJy
b3IuCi1QQVNTICEhRnVuY3Rpb24oIihmdW5jdGlvbiBmKFthcmd1bWVudHNdKXt9KSIpIGlzIHRy
dWUKK1BBU1MgRnVuY3Rpb24oIihmdW5jdGlvbiBmKFthcmd1bWVudHNdKXt9KSIpIHRocmV3IGV4
Y2VwdGlvbiBvZiB0eXBlIFN5bnRheEVycm9yLgogUEFTUyB0cnVlID09PSB0cnVlCiBQQVNTIEZ1
bmN0aW9uKCIndXNlIHN0cmljdCc7IChmdW5jdGlvbiBmKHt4OmFyZ3VtZW50c30pe30pIikgdGhy
ZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCi1QQVNTICEhRnVuY3Rpb24oIihmdW5j
dGlvbiBmKHt4OmFyZ3VtZW50c30pe30pIikgaXMgdHJ1ZQorUEFTUyBGdW5jdGlvbigiKGZ1bmN0
aW9uIGYoe3g6YXJndW1lbnRzfSl7fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhF
cnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogUEFTUyBGdW5jdGlvbigiJ3VzZSBzdHJpY3QnOyAo
ZnVuY3Rpb24gYXJndW1lbnRzKCl7fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhF
cnJvci4KIFBBU1MgISFGdW5jdGlvbigiKGZ1bmN0aW9uIGFyZ3VtZW50cygpe30pIikgaXMgdHJ1
ZQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgUEFTUyBGdW5jdGlvbigiJ3VzZSBzdHJpY3QnOyAoe3Nl
dCB4KGFyZ3VtZW50cyl7fX0pIikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3kKIFBBU1MgISFG
dW5jdGlvbigiKHtzZXQgeChhcmd1bWVudHMpe319KSIpIGlzIHRydWUKIFBBU1MgdHJ1ZSA9PT0g
dHJ1ZQogUEFTUyBGdW5jdGlvbigiJ3VzZSBzdHJpY3QnOyAoe3NldCB4KFthcmd1bWVudHNdKXt9
fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhFcnJvci4KLVBBU1MgISFGdW5jdGlv
bigiKHtzZXQgeChbYXJndW1lbnRzXSl7fX0pIikgaXMgdHJ1ZQorUEFTUyBGdW5jdGlvbigiKHtz
ZXQgeChbYXJndW1lbnRzXSl7fX0pIikgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJy
b3IuCiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1MgRnVuY3Rpb24oIid1c2Ugc3RyaWN0JzsgKHtz
ZXQgeCh7eDphcmd1bWVudHN9KXt9fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhF
cnJvci4KLVBBU1MgISFGdW5jdGlvbigiKHtzZXQgeCh7eDphcmd1bWVudHN9KXt9fSkiKSBpcyB0
cnVlCitQQVNTIEZ1bmN0aW9uKCIoe3NldCB4KHt4OmFyZ3VtZW50c30pe319KSIpIHRocmV3IGV4
Y2VwdGlvbiBvZiB0eXBlIFN5bnRheEVycm9yLgogUEFTUyB0cnVlID09PSB0cnVlCiBQQVNTIEZ1
bmN0aW9uKCIndXNlIHN0cmljdCc7ICh7c2V0IHgoYXJndW1lbnRzKXtcInVzZSBzdHJpY3RcIjt9
fSkiKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBTeW50YXhFcnJvci4KIFBBU1MgRnVuY3Rpb24o
Iih7c2V0IHgoYXJndW1lbnRzKXtcInVzZSBzdHJpY3RcIjt9fSkiKSB0aHJldyBleGNlcHRpb24g
b2YgdHlwZSBTeW50YXhFcnJvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL21vemlsbGEv
c3RyaWN0L3JlZ3Jlc3MtNTMyMjU0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL21vemls
bGEvc3RyaWN0L3JlZ3Jlc3MtNTMyMjU0LWV4cGVjdGVkLnR4dAppbmRleCAxODRlNTg5Y2NiNTVh
MzAzYWMxYmQ1YjAyOWJiYTA3MjZlNDhmOGFmLi44ZDQwMjY4YjNkNDViZGE5ODA3NThiMzFiZjhl
YzhhNmUyYTVmMzI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9tb3ppbGxhL3N0cmljdC9y
ZWdyZXNzLTUzMjI1NC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvbW96aWxsYS9z
dHJpY3QvcmVncmVzcy01MzIyNTQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogUEFTUyBG
dW5jdGlvbigiJ3VzZSBzdHJpY3QnOyBmdW5jdGlvbiBmKGV2YWwsW3hdKXt9IikgdGhyZXcgZXhj
ZXB0aW9uIG9mIHR5cGUgU3ludGF4RXJyb3IuCi1QQVNTICEhRnVuY3Rpb24oImZ1bmN0aW9uIGYo
ZXZhbCxbeF0pe30iKSBpcyB0cnVlCitGQUlMICEhRnVuY3Rpb24oImZ1bmN0aW9uIGYoZXZhbCxb
eF0pe30iKSBzaG91bGQgYmUgdHJ1ZS4gVGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBFeHBl
Y3RlZCBhbiBpZGVudGlmaWVyIGJ1dCBmb3VuZCAnWycgaW5zdGVhZAogUEFTUyB0cnVlID09PSB0
cnVlCiAgUEFTU0VEISAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL21vemlsbGEvc3RyaWN0L3NjcmlwdC10ZXN0cy8xMy4xLmpzIGIv
TGF5b3V0VGVzdHMvanMvbW96aWxsYS9zdHJpY3Qvc2NyaXB0LXRlc3RzLzEzLjEuanMKaW5kZXgg
YzFjNWU2ZTlmMTQ0MzIxNGJkNmJjYzM0YTFmN2QzZDFkNjcyN2E2ZC4uZTdlMWIwOTI4NDI2ZDk3
YTFlN2VjNjUwZGY2ZjEzNDAzNzdkOTc3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvbW96
aWxsYS9zdHJpY3Qvc2NyaXB0LXRlc3RzLzEzLjEuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvbW96
aWxsYS9zdHJpY3Qvc2NyaXB0LXRlc3RzLzEzLjEuanMKQEAgLTM5LDggKzM5LDggQEAgYXNzZXJ0
RXEodGVzdExlbmllbnRBbmRTdHJpY3QoJ2Z1bmN0aW9uIGYoYSxiLGMsZCxlLGYsZyxoLGQpIHt9
JywKICAqLwogLy8gRGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFsaWQgRVM1IHN5bnRheC4KIGFzc2Vy
dEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCdmdW5jdGlvbiBmKFt4LHldKSB7fScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXNTdWNjZXNzZnVsbHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZXNTdWNjZXNzZnVsbHkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3IpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3IpKSwK
ICAgICAgICAgIHRydWUpOwogYXNzZXJ0RXEodGVzdExlbmllbnRBbmRTdHJpY3QoJ2Z1bmN0aW9u
IGYoW3gseF0pe30nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNF
eGNlcHRpb24oU3ludGF4RXJyb3IpLApAQCAtMTE4LDEyICsxMTgsMTIgQEAgYXNzZXJ0RXEodGVz
dExlbmllbnRBbmRTdHJpY3QoJ2Z1bmN0aW9uIGYoZXZhbCl7fScsCiAgICAgICAgICB0cnVlKTsK
IC8vIERlc3RydWN0dXJpbmcgaXMgbm90IHZhbGlkIEVTNSBzeW50YXguCiBhc3NlcnRFcSh0ZXN0
TGVuaWVudEFuZFN0cmljdCgnZnVuY3Rpb24gZihbZXZhbF0pe30nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VzU3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3IpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3IpKSwKICAg
ICAgICAgIHRydWUpOwogLy8gRGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFsaWQgRVM1IHN5bnRheC4K
IGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCdmdW5jdGlvbiBmKHt4OmV2YWx9KXt9JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlc1N1Y2Nlc3NmdWxseSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhjZXB0aW9uKFN5bnRheEVycm9y
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhjZXB0aW9uKFN5
bnRheEVycm9yKSksCiAgICAgICAgICB0cnVlKTsKIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3Ry
aWN0KCdmdW5jdGlvbiBldmFsKCl7fScsCkBAIC0xNTQsMTIgKzE1NCwxMiBAQCBhc3NlcnRFcSh0
ZXN0TGVuaWVudEFuZFN0cmljdCgnKGZ1bmN0aW9uIGYoZXZhbCl7fSknLAogICAgICAgICAgdHJ1
ZSk7CiAvLyBEZXN0cnVjdHVyaW5nIGlzIG5vdCB2YWxpZCBFUzUgc3ludGF4LgogYXNzZXJ0RXEo
dGVzdExlbmllbnRBbmRTdHJpY3QoJyhmdW5jdGlvbiBmKFtldmFsXSl7fSknLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyc2VzU3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3IpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3Ip
KSwKICAgICAgICAgIHRydWUpOwogLy8gRGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFsaWQgRVM1IHN5
bnRheC4KIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCcoZnVuY3Rpb24gZih7eDpldmFs
fSl7fSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VzU3VjY2Vzc2Z1bGx5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3lu
dGF4RXJyb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNl
cHRpb24oU3ludGF4RXJyb3IpKSwKICAgICAgICAgIHRydWUpOwogYXNzZXJ0RXEodGVzdExlbmll
bnRBbmRTdHJpY3QoJyhmdW5jdGlvbiBldmFsKCl7fSknLApAQCAtMjA4LDEyICsyMDgsMTIgQEAg
YXNzZXJ0RXEodGVzdExlbmllbnRBbmRTdHJpY3QoJyh7c2V0IHgoZXZhbCl7fX0pJywKICAgICAg
ICAgIHRydWUpOwogLy8gRGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFsaWQgRVM1IHN5bnRheC4KIGFz
c2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCcoe3NldCB4KFtldmFsXSl7fX0pJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlc1N1Y2Nlc3NmdWxseSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhjZXB0aW9uKFN5bnRheEVycm9yKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhjZXB0aW9uKFN5bnRheEVy
cm9yKSksCiAgICAgICAgICB0cnVlKTsKIC8vIERlc3RydWN0dXJpbmcgaXMgbm90IHZhbGlkIEVT
NSBzeW50YXguCiBhc3NlcnRFcSh0ZXN0TGVuaWVudEFuZFN0cmljdCgnKHtzZXQgeCh7eDpldmFs
fSl7fX0pJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlc1N1Y2Nlc3NmdWxs
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhjZXB0aW9uKFN5
bnRheEVycm9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhj
ZXB0aW9uKFN5bnRheEVycm9yKSksCiAgICAgICAgICB0cnVlKTsKIGFzc2VydEVxKHRlc3RMZW5p
ZW50QW5kU3RyaWN0KCcoe3NldCB4KGV2YWwpeyJ1c2Ugc3RyaWN0Ijt9fSknLApAQCAtMjM0LDEy
ICsyMzQsMTIgQEAgYXNzZXJ0RXEodGVzdExlbmllbnRBbmRTdHJpY3QoJ2Z1bmN0aW9uIGYoYXJn
dW1lbnRzKXt9JywKICAgICAgICAgIHRydWUpOwogLy8gRGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFs
aWQgRVM1IHN5bnRheC4KIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCdmdW5jdGlvbiBm
KFthcmd1bWVudHNdKXt9JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlc1N1
Y2Nlc3NmdWxseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhj
ZXB0aW9uKFN5bnRheEVycm9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNl
UmFpc2VzRXhjZXB0aW9uKFN5bnRheEVycm9yKSksCiAgICAgICAgICB0cnVlKTsKIC8vIERlc3Ry
dWN0dXJpbmcgaXMgbm90IHZhbGlkIEVTNSBzeW50YXguCiBhc3NlcnRFcSh0ZXN0TGVuaWVudEFu
ZFN0cmljdCgnZnVuY3Rpb24gZih7eDphcmd1bWVudHN9KXt9JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnNlc1N1Y2Nlc3NmdWxseSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcnNlUmFpc2VzRXhjZXB0aW9uKFN5bnRheEVycm9yKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcnNlUmFpc2VzRXhjZXB0aW9uKFN5bnRheEVycm9yKSksCiAgICAg
ICAgICB0cnVlKTsKIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCdmdW5jdGlvbiBhcmd1
bWVudHMoKXt9JywKQEAgLTI2OSwxMiArMjY5LDEyIEBAIGFzc2VydEVxKHRlc3RMZW5pZW50QW5k
U3RyaWN0KCcoZnVuY3Rpb24gZihhcmd1bWVudHMpe30pJywKICAgICAgICAgIHRydWUpOwogLy8g
RGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFsaWQgRVM1IHN5bnRheC4KIGFzc2VydEVxKHRlc3RMZW5p
ZW50QW5kU3RyaWN0KCcoZnVuY3Rpb24gZihbYXJndW1lbnRzXSl7fSknLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VzU3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3IpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24oU3ludGF4RXJyb3IpKSwK
ICAgICAgICAgIHRydWUpOwogLy8gRGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFsaWQgRVM1IHN5bnRh
eC4KIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCcoZnVuY3Rpb24gZih7eDphcmd1bWVu
dHN9KXt9KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXNTdWNjZXNzZnVs
bHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVJhaXNlc0V4Y2VwdGlvbihT
eW50YXhFcnJvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVJhaXNlc0V4
Y2VwdGlvbihTeW50YXhFcnJvcikpLAogICAgICAgICAgdHJ1ZSk7CiBhc3NlcnRFcSh0ZXN0TGVu
aWVudEFuZFN0cmljdCgnKGZ1bmN0aW9uIGFyZ3VtZW50cygpe30pJywKQEAgLTMyMywxMiArMzIz
LDEyIEBAIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCcoe3NldCB4KGFyZ3VtZW50cyl7
fX0pJywKICAgICAgICAgIHRydWUpOwogLy8gRGVzdHJ1Y3R1cmluZyBpcyBub3QgdmFsaWQgRVM1
IHN5bnRheC4KIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0KCcoe3NldCB4KFthcmd1bWVu
dHNdKXt9fSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VzU3VjY2Vzc2Z1
bGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNFeGNlcHRpb24o
U3ludGF4RXJyb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSYWlzZXNF
eGNlcHRpb24oU3ludGF4RXJyb3IpKSwKICAgICAgICAgIHRydWUpOwogLy8gRGVzdHJ1Y3R1cmlu
ZyBpcyBub3QgdmFsaWQgRVM1IHN5bnRheC4KIGFzc2VydEVxKHRlc3RMZW5pZW50QW5kU3RyaWN0
KCcoe3NldCB4KHt4OmFyZ3VtZW50c30pe319KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJzZXNTdWNjZXNzZnVsbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZVJhaXNlc0V4Y2VwdGlvbihTeW50YXhFcnJvciksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJzZVJhaXNlc0V4Y2VwdGlvbihTeW50YXhFcnJvcikpLAogICAgICAgICAgdHJ1
ZSk7CiBhc3NlcnRFcSh0ZXN0TGVuaWVudEFuZFN0cmljdCgnKHtzZXQgeChhcmd1bWVudHMpeyJ1
c2Ugc3RyaWN0Ijt9fSknLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0
cnVjdHVyaW5nLWFyZ3VtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2Rlc3RydWN0dXJpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzA4MjI5YmY3Y2ViZmFkYjhmNzkxMzdhZjc4NzhjNmMzYjcwYTY4Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwICswLDAgQEAKLUpTUmVncmVzcy9kZXN0cnVjdHVyaW5nLWFyZ3VtZW50cwot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBubyBleGNlcHRpb24gdGhyb3du
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLWFyZ3VtZW50cy1s
ZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5n
LWFyZ3VtZW50cy1sZW5ndGgtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0MTM4ZjgzMTMzOTgxZGU3NDczOGI2MDk1NWY4MDc0YzYyZWExYzEzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMtbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwICswLDAgQEAKLUpTUmVncmVzcy9kZXN0cnVjdHVyaW5nLWFyZ3VtZW50cy1s
ZW5ndGgKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgbm8gZXhjZXB0aW9u
IHRocm93bgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1hcmd1
bWVudHMtbGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmct
YXJndW1lbnRzLWxlbmd0aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDE5
Y2U4OGIxYjE2OGY1MTBhZmY1MjgyZWU2ODhjZDQ3MTYxNmZhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1
Y3R1cmluZy1hcmd1bWVudHMtbGVuZ3RoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCww
IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVz
cy1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZXN0cnVjdHVy
aW5nLWFyZ3VtZW50cy1sZW5ndGguanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNl
cy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLWFyZ3VtZW50cy5odG1sIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLWFyZ3VtZW50cy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmRhOGQ4ODI1ODNjZDE3NGNjMGMxY2ExMzU2ZmI3
NmU0MDNhYWEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXJndW1lbnRzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1z
d2FwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1z
d2FwLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzZjYzMDkx
YzM5YmVkNGMzNTZiOGZkYTZiN2VhM2U1MmI0MjgzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJp
bmctc3dhcC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1KU1Jl
Z3Jlc3MvZGVzdHJ1Y3R1cmluZy1zd2FwCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
Ci1QQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2Rlc3RydWN0dXJpbmctc3dhcC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVj
dHVyaW5nLXN3YXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUwNTg2MGE2
Njg2N2QzYzA5MWVjZTlhMzNmZTU1MmVmNDZiZjJjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJp
bmctc3dhcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1zd2FwLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXJndW1lbnRzLWxlbmd0aC5qcyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXJndW1lbnRzLWxlbmd0aC5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY3ZTM0MGZjOTE0NmIzZjg2NzRlOGUz
NjU4M2U4OGI3NTRjM2VlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5n
LWFyZ3VtZW50cy1sZW5ndGguanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vL0Ag
cnVuRGVmYXVsdAotCi1mdW5jdGlvbiBmb28oKSB7Ci0gICAgdmFyIHswOiBpLCAxOiBqLCBsZW5n
dGh9ID0gYXJndW1lbnRzOwotICAgIHJldHVybiBpICsgaiArIGxlbmd0aDsKLX0KLQotdmFyIHJl
c3VsdCA9IDA7Ci1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKLSAgICByZXN1bHQg
Kz0gZm9vKGksIDEpOwotCi1pZiAocmVzdWx0ICE9IDUwMDAwMjUwMDAwMCkKLSAgICB0aHJvdyAi
QmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXJndW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNmRiZWU2NmE4NzA3ZWVlZjg4ODJhYWVlYjJmMWEw
MGM2OTNhMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hcmd1bWVu
dHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vL0AgcnVuRGVmYXVsdAotCi1m
dW5jdGlvbiBmb28oKSB7Ci0gICAgdmFyIFthLCBiXSA9IGFyZ3VtZW50czsKLSAgICByZXR1cm4g
YSAtIGI7Ci19Ci0KLXZhciByZXN1bHQgPSAwOwotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAw
OyArK2kpCi0gICAgcmVzdWx0ICs9IGZvbyg0MiwgaSk7Ci0KLWlmIChyZXN1bHQgIT0gLTQ5OTk1
NzUwMDAwMCkKLSAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctc3dhcC5q
cyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctc3dh
cC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY3NjRjMWU0N2M4YjA4MTUwZmEx
ODhjYjM4MmFmN2YwY2ZmMWYwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVy
aW5nLXN3YXAuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vL0AgcnVuRGVmYXVs
dAotCi1mdW5jdGlvbiBmb28oYSwgYikgewotICAgIHZhciBbYSwgYl0gPSBbYiwgYV07Ci0gICAg
cmV0dXJuIGEgLSBiOwotfQotCi12YXIgcmVzdWx0ID0gMDsKLWZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKQotICAgIHJlc3VsdCArPSBmb28oNDIsIGkpOwotCi1pZiAocmVzdWx0ICE9
IDQ5OTk1NzUwMDAwMCkKLSAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1l
bnQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25t
ZW50LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTg2MGVmNjcwOWU5MGNkZGEw
MWQyMTgxODU1MWNjMzk1NTMzNzc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFz
c2lnbm1lbnQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1kZXNjcmlwdGlvbigi
YmFzaWMgdGVzdHMgZm9yIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudCIpOwotCi1mdW5jdGlvbiB0
ZXN0RGVzdHJ1Y3R1cmluZyhwYXR0ZXJuLCBleHByZXNzaW9uLCByZXN1bHQsIGV4cHIpIHsKLSAg
ICBpZiAoIWV4cHIpIGV4cHIgPSAiYStiIgotICAgIHNob3VsZEJlKCJ2YXIgIiArIHBhdHRlcm4g
KyAiPSIgKyBleHByZXNzaW9uICsgIjsgdmFyIHI9IitleHByKyI7IHIiLCByZXN1bHQpOwotICAg
IHZhciBmdW5jdGlvblN0cmluZyA9ICIoZnVuY3Rpb24oIiArIHBhdHRlcm4gKyAiKSB7IHJldHVy
biAiK2V4cHIrIjt9KSI7Ci0gICAgZGVidWcoIkZ1bmN0aW9uIGFzIFN0cmluZzogIiArIGZ1bmN0
aW9uU3RyaW5nKTsKLSAgICBzaG91bGRCZShmdW5jdGlvblN0cmluZyArICIoIiArIGV4cHJlc3Np
b24gKyAiKSIsIHJlc3VsdCk7Ci0gICAgc2hvdWxkQmUoIigiICsgZXZhbChmdW5jdGlvblN0cmlu
ZykgKyAiKSgiICsgZXhwcmVzc2lvbiArICIpIiwgcmVzdWx0KTsKLX0KLQotdGVzdERlc3RydWN0
dXJpbmcoIlthLGJdIiwgIlsnMScsJzInXSIsICInMTInIik7Ci10ZXN0RGVzdHJ1Y3R1cmluZygi
e2EsYn0iLCAie2E6JzEnLGI6JzInfSIsICInMTInIik7Ci10ZXN0RGVzdHJ1Y3R1cmluZygie2M6
YSxkOmJ9IiwgIntjOicxJyxkOicyJ30iLCAiJzEyJyIpOwotdGVzdERlc3RydWN0dXJpbmcoIntj
OmIsZDphfSIsICJ7YzonMScsZDonMid9IiwgIicyMSciKTsKLXRlc3REZXN0cnVjdHVyaW5nKCJ7
dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41OmcsJ2ZvbyBi
YXInOmh9IiwgInt0cnVlOidhJyxmYWxzZTonYicsdW5kZWZpbmVkOidjJyxudWxsOidkJyxpbjon
ZScsZm9yOidmJywxLjU6J2cnLCdmb28gYmFyJzonaCd9IiwgIidhYmNkZWZnaCciLCAiYStiK2Mr
ZCtlK2YrZytoIik7Ci10ZXN0RGVzdHJ1Y3R1cmluZygiW3tjOmEsZDpifV0iLCAiW3tjOicxJyxk
OicyJ31dIiwgIicxMiciKTsKLXRlc3REZXN0cnVjdHVyaW5nKCJ7eDpbe2M6YSxkOmJ9XX0iLCAi
e3g6W3tjOicxJyxkOicyJ31dfSIsICInMTInIik7Ci0KLXZhciBhbkFycmF5ID0gWycxJywgJzIn
XTsKLWFuQXJyYXkuYSA9ICczJwotYW5BcnJheS5iID0gJzQnCi12YXIgYW5PYmplY3QgPSB7YTon
MScsIGI6JzInLCAwOiczJywxOic0J30KLXRlc3REZXN0cnVjdHVyaW5nKCJbYSxiXSIsICJhbkFy
cmF5IiwgIicxMiciKTsKLXRlc3REZXN0cnVjdHVyaW5nKCJ7YSxifSIsICJhbkFycmF5IiwgIicz
NCciKTsKLXRlc3REZXN0cnVjdHVyaW5nKCJ7YTphLGI6Yn0iLCAiYW5BcnJheSIsICInMzQnIik7
Ci10ZXN0RGVzdHJ1Y3R1cmluZygie2EsYn0iLCAiYW5PYmplY3QiLCAiJzEyJyIpOwotdGVzdERl
c3RydWN0dXJpbmcoInthOmEsYjpifSIsICJhbk9iamVjdCIsICInMTInIik7Ci10ZXN0RGVzdHJ1
Y3R1cmluZygiezA6YSwxOmJ9IiwgImFuT2JqZWN0IiwgIiczNCciKTsKLXRlc3REZXN0cnVjdHVy
aW5nKCJ7J2EnOmEsJ2InOmJ9IiwgImFuT2JqZWN0IiwgIicxMiciKTsKLXZhciBbYSxiXSA9IFsn
MTEnLCcyMiddCi1zaG91bGRCZSgiYStiIiwgIicxMTIyJyIpCi12YXIgW2IsYV0gPSBbYSxiXTsK
LXNob3VsZEJlKCJhK2IiLCAiJzIyMTEnIikKLWZ1bmN0aW9uIHRlc3REZWNvbnN0cnVjdEFyZ3Mo
KSB7Ci0gICAgdmFyIFthLGJdID0gYXJndW1lbnRzOwotICAgIHJldHVybiBhK2I7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3REZWNvbnN0cnVjdEFyZ0xlbmd0aCgpIHsKLSAgICB2YXIge2xlbmd0aH0gPSBh
cmd1bWVudHM7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLXNob3VsZEJlKCJ0ZXN0RGVjb25zdHJ1
Y3RBcmdzKCcxJywgJzInKSIsICInMTInIik7Ci1zaG91bGRCZSgidGVzdERlY29uc3RydWN0QXJn
TGVuZ3RoKCcxJywgJzInKSIsICIyIik7Ci0KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
cHV0bmlrL0NvbmZvcm1hbmNlLzEzX0Z1bmN0aW9uX0RlZmluaXRpb24vUzEzX0E1Lmh0bWwgYi9M
YXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzEzX0Z1bmN0aW9uX0RlZmluaXRpb24vUzEz
X0E1Lmh0bWwKaW5kZXggMmFhMGE1ZDE0ZjQ5NDVjOWY5ZWE3MTk1YTlmN2FhMTM1NDM0YjcwNi4u
NjZjYzFlYWI2Y2I0MWQxZGE5ODhhMDg1MTViYzc3NmNmYzI1MDVkMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xM19GdW5jdGlvbl9EZWZpbml0aW9uL1MxM19B
NS5odG1sCisrKyBiL0xheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTNfRnVuY3Rpb25f
RGVmaW5pdGlvbi9TMTNfQTUuaHRtbApAQCAtNzYsNiArNzYsNyBAQCB0cnkgewogLy9DSEVDSyMx
CiB0cnl7CiAJZXZhbCgiZnVuY3Rpb24gX19mdW5jKFthcmcxLCBhcmcyLCBhcmczXSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg7fSIpOworCXRlc3RGYWlsZWQoJyMxOiBldmFsKCJmdW5jdGlvbiBf
X2Z1bmMoW2FyZzEsIGFyZzIsIGFyZzNdKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDt9IikgbGVh
ZCB0byB0aHJvd2luZyBleGNlcHRpb24nKTsKIH0gY2F0Y2goZSl7CiAJaWYoIShlIGluc3RhbmNl
b2YgU3ludGF4RXJyb3IpKXsKIAkJdGVzdEZhaWxlZCgnIzEuMTogZXZhbCgiZnVuY3Rpb24gX19m
dW5jKFthcmcxLCBhcmcyLCBhcmczXSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg7fSIpIGxlYWQg
dG8gdGhyb3dpbmcgZXhjZXB0aW9uIG9mIFN5bnRheEVycm9yLiBBY3R1YWw6IGV4Y2VwdGlvbiBp
cyAnK2UpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>